【发布时间】:2016-09-25 23:16:47
【问题描述】:
我目前正在重构c代码,里面有汇编代码:
asm("movl $8, %esi\n\t"
movl $.LC0, %edi\n\t"
"movl $0, %eax");
每个寄存器的含义是什么?在 c 代码中,没有其他 asm 代码分配 $8 或 $.LC0,我假设 $0 只是一个零值
【问题讨论】:
-
这意味着这个 C 代码针对一个特定的 CPU,每个寄存器都意味着:那个特定的 CPU 寄存器。
-
@SamVarshavchik 无论如何都知道这些寄存器值到底是什么,不确定代码是否正在移动这些值
-
它将某些值加载到寄存器中,除此之外没有其他直接影响。这也是由不知道自己在做什么的人编写的严重损坏的代码。
-
如果你看到这个 C 代码:“esi = 8; edi = &_LC0; eax = 0;` 那么有什么方法可以知道这些变量值到底是什么?