小编Rua*_*uan的帖子

试图翻译C程序将数字反转为x86程序集

我正在尝试将以下程序转换为x86程序集(AT&T).

#include <stdio.h>

int main()
{
   int n = 123;
   int reverse = 0;


   while (n != 0)
   {
      reverse = reverse * 10;
      reverse = reverse + n%10;
      n       = n/10;
   }

   printf("%d\n", reverse);

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

它应该打印321.

但是,使用下面的代码,我得到的是0.任何人都可以告诉我这里我做错了什么吗?(我粘贴了下面的相关部分.我确信初始化和打印工作正常.你可以在这里看到整个事情)

  movl  $123, %esi    # int n
  movl  $0, %edi    # int reverse
  movl $10, %ebx    # divisor


L1:     # while n != 0

cmpl $0, %esi
je L2

# reverse = reverse * 10
imul $10, …
Run Code Online (Sandbox Code Playgroud)

c x86 assembly att

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

标签 统计

assembly ×1

att ×1

c ×1

x86 ×1