我被要求将逆向工程汇编代码转换回C代码
jge .L4
movq $76, -16(%rbp)
movq $87, -24(%rbp)
jmp .L5
.L4:
movq -16(%rbp), %rax
imulq -24(%rbp), %rax
movq %rax, -40(%rbp)
.L5:
do more stuff
我的问题是在完成L4(使用排序操作的if语句)指令后,我是否要备份并执行代码以将76和87移至内存位置,还是移至L5?另外,将76和87移至其他位置的指令也可能在else语句中吗?
没有任何备份。 jge
不是函数调用,仅是一次跳转,不会将旧位置保存在任何地方。
因此,这基本上只是if
和else
语句。用伪代码可以写成
if (ge) {
// .L4
movq -16(%rbp), %rax
imulq -24(%rbp), %rax
movq %rax, -40(%rbp)
} else {
movq $76, -16(%rbp)
movq $87, -24(%rbp)
}
// .L5
do more stuff