c - 解释汇编指令

标签 c assembly

我正在尝试翻译以下内容:

Action:
 pushl %ebp
 movl %esp, %eax
 subl $0x32, %esp
 movl $0x0, -0x8(%eax)
 movl $0x0, -0x4(%eax)
 movl -0x4(%eax), %eax
 cmpl $0x32(%eax), %ebp
 movl -0x4(%ebp), %eax
 sall $0x2, %ebp
 addl 0x8(%ebp), %ebp
 movl (%ebp), %ebp
 addl %ebp, -0x8(%eax)
 addl $0x1, -0x4(%eax)

翻译这段代码的最佳方式是什么?

最佳答案

对于原始问题:

mov     -0x4(%ebp), %eax       # eax = z;
mov     0xc(%ebp), %edx        # edx = y;
mov     (%edx, %eax, 4), %eax  # eax = *(edx + eax + 4)
add     $0x3, %eax             # eax += 3
movb    $0x41, (%eax)          # *eax = 'A'

空运行语句给出:

y[z + 4][3] = 'A';

关于c - 解释汇编指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2794477/

相关文章:

c - 头文件中需要包含哪些文件?结构? <stdbool.h>?

assembly - 我可以在哪些 Intel CPU 上使用 umonitor 和 umwait 指令?

c - 为什么编译器不在堆栈上分配和释放具有 "sub*"和 "add*"的局部变量?

c++ - 在 for 循环中向前和向后跳转

c - 关于 C 和 eclipse - scanf

c - 为什么 MATLAB 使用列优先顺序?

assembly - 软件卡在反汇编程序的 B.N 指令上——不知道是什么意思

assembly - ARM 汇编加载 ASCII 内存地址

c++ - 访问冲突调用非导出的 DLL 函数 C++

c - 在带有 MinGW 的 Windows 上使用 make 时出错