【发布时间】:2014-12-10 23:08:48
【问题描述】:
这是一篇关于汇编代码的作业。我不确定我是否完全掌握它。这是我必须编写等效 C 代码的 5 个 switch 语句之一。只是我不明白这里发生了什么,还是有很多不必要的代码?
参数p1存储在%ebp+8,参数p2存储在%ebp+12。结果初始化为 -1 并存储在 %edx 中。 .L19:设置返回值。
当我跟踪它时,我的理解是 p1 被放入 %eax。然后将%eax 指向的地址(p1 的值)放入%edx。然后最后 4 行是不必要的,因为返回寄存器没有触及开关的其余部分。
movl 8(%ebp), %eax
movl (%eax), %edx
movl 12(%ebp), ecx
movl (%ecx), %eax
movl 8(%ebp), %ecx
movl %eax, (%ecx)
jmp .L19
我的书只是想变得棘手还是我完全错过了这里的标记?谢谢。
【问题讨论】:
-
*p1 => %edx; *p1=(*p2) ;