gcc - 如何使用 Intel 语法内联汇编在 GCC 中设置变量?

标签 gcc inline-assembly intel-syntax

为什么这个代码没有设置temp到 1?我该怎么做?

int temp;
__asm__(
    ".intel_syntax;"
    "mov %0, eax;"
    "mov eax, %1;"
    ".att_syntax;"
    : : "r"(1), "r"(temp) : "eax");
printf("%d\n", temp);

最佳答案

你要temp我认为是输出,而不是输入。尝试:

  __asm__(
      ".intel_syntax;"
      "mov eax, %1;"
      "mov %0, eax;"
      ".att_syntax;"
      : "=r"(temp)
      : "r"(1) 
      : "eax");

关于gcc - 如何使用 Intel 语法内联汇编在 GCC 中设置变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5397677/

相关文章:

gcc - 内联汇编寻址方式

gcc - 为什么objdump的汇编编码不同?

assembly - 如何确定寄存器是从右向左加载还是从右向左加载

c - 返回寄存器中的结构 - GCC 中的 ARM ABI

c++ - 按引用和按值传递时的 gcc 程序集

c - gcc 内联 asm 语句得到优化 - 错误的约束?

c - 如何将头文件函数中的内联程序集转换为不支持 x64 的程序集的 c++ 函数?

c++ - GCC 没有从 .h 类自动解析 .cpp 包括

c - gcc 编译器是否始终将整数放在内存中的字符数组之前?

assembly - 使用Rust内联汇编时奇怪的机器代码字节顺序