逆向装配 x86 的工程片段?

Reversing engineering snippet of assembly x86?

我正在尝试将此汇编代码转换为 C 代码段。

movl [=10=], -4(%ebp) # 4
movl -4(%ebp), %eax
sall , %eax
addl 8(%ebp), %eax
movl (%eax), %eax
cmpl 12(%ebp), %eax
jg .L6 

.L6:
nop

这是我目前的情况,但我认为有问题。 "movl (%eax), eax" 这一行让我特别困惑。

int local = 0;
if ((int*)((local << 2) + param1) > parameter2) {
   ; // do nothing
}

您对 movl %(eax), %eax 的解释是正确的,但对行 addl 8(%ebp), %eax 的解释是错误的。正确的代码应该是这样的:

// parameter1 is an int* at 8(%ebp)
// parameter2 is an int at 12(%ebp)
int local = 0; // at -4(%ebp)
if (parameter1[local] > parameter2) {
   ; // nop
} else {
   // whatever is betwween jg and .L6
}