本文介绍了每个指令有多少轮空编译为x86汇编?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
0x004012d0<主+ 0计算值:推%EBP
0x004012d1<主+ 1计算值:MOV%ESP,EBP%
0x004012d3<主+3 ;:子$ 0x28,ESP%
如果地址不可用,我们可以计算出它自己呢?
我的意思是,我们只有这样的:
推%EBP
MOV%ESP,EBP%
子$ 0x28,ESP%
解决方案
字节量为相邻指令之间的地址的区别:
0x004012d0<主+ 0计算值:推%EBP; 1个字节
0x004012d1<主+ 1计算值:MOV%ESP,EBP%; 2个字节
0x004012d3<主+3 ;:子$ 0x28,ESP%
如果你只有文本,然后去这里:并在这里:并计算出每条指令,preFIX和操作数
0x004012d0 <main+0>: push %ebp
0x004012d1 <main+1>: mov %esp,%ebp
0x004012d3 <main+3>: sub $0x28,%esp
If the address is not available, can we calculate it ourselves?
I mean we only have this:
push %ebp
mov %esp,%ebp
sub $0x28,%esp
解决方案
amount of bytes is difference of addresses between adjacent instructions:
0x004012d0 <main+0>: push %ebp ;1 byte
0x004012d1 <main+1>: mov %esp,%ebp ;2 bytes
0x004012d3 <main+3>: sub $0x28,%esp
if you have only text then go here: http://www.swansontec.com/sintel.html and here: http://faydoc.tripod.com/cpu/conventions.htm and calculate for each instruction, prefix and operand
这篇关于每个指令有多少轮空编译为x86汇编?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!