本文介绍了每个指令有多少轮空编译为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汇编?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-13 14:42