相关疑难解决方法(0)

为什么这个简单的c程序与gcc(clang)内联汇编表现出不确定的行为?

我正在尝试用gcc汇编程序扩展做一个非常简单的事情:

  • 将unsigned int变量加载到寄存器中
  • 加1吧
  • 输出结果

在编译我的解决方案时:

#include <stdio.h>
#define inf_int volatile unsigned long long

int main(int argc, char *argv[]){
   inf_int zero = 0;
   inf_int one = 1;
   inf_int infinity = ~0;
   printf("value of zero, one, infinity = %llu, %llu, %llu\n", zero, one, infinity);
   __asm__ volatile (
      "addq $1, %0"
      : "=r" (infinity)
   );
   __asm__ volatile (
      "addq $1, %0"
      : "=r" (zero)
   );
   __asm__ volatile (
      "addq $1, %0"
      : "=r" (one)
   );
   printf("value of zero, one, infinity = %llu, …
Run Code Online (Sandbox Code Playgroud)

x86 gcc gnu-assembler inline-assembly

2
推荐指数
1
解决办法
3878
查看次数

标签 统计

gcc ×1

gnu-assembler ×1

inline-assembly ×1

x86 ×1