【发布时间】:2015-10-21 02:49:59
【问题描述】:
所以我正在做以下问题,将汇编代码转换为 C(对于汇编代码来说仍然是一种新事物) 假设你知道当一个带有原型的函数 长解码4(长x,长y,长z) 编译成汇编代码,代码主体如下
addq %rsi, %rdi
imulq %rdx, %rdi
movq %rdi, %rax
sarq $15, %rax
salq $31, %rax
andq %rdi, %rax
ret
参数 x、y 和 z 在寄存器 %rdi、%rsi 和 %rdx 中传递。该代码将返回值存储在寄存器 %rax 中。
我是如何解释代码的:
long w =(x+y)*z;
w=(w>>15);
w=(<<31);
return x&w;
请检查我的代码,请不要客气!
【问题讨论】:
-
我生成了程序集,上面的图像出现了,我不确定它是否正确。