AT&T汇编心得之间接寻址和LEA指令
http://blog.sina.com.cn/s/blog_4d1bbec70100du0f.html
T&T汇编心得(1)
寻址方式:
0x4(%esp)的操作是把寄存器esp中的值取出,然后加上4,得到的值作为地址,间接寻址得到需要的数据
例如:
pushl -0x4(%ecx)
该指令的含义是取出寄存器ecx的值,减去4,将得到的值作为地址,在内存找到该地址对应的值,将其压入栈中。
这是执行后的结果:
ecx
阅读(488) | 评论(0) | 转发(0) |
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
T&T汇编心得(1)
寻址方式:
0x4(%esp)的操作是把寄存器esp中的值取出,然后加上4,得到的值作为地址,间接寻址得到需要的数据
例如:
pushl -0x4(%ecx)
该指令的含义是取出寄存器ecx的值,减去4,将得到的值作为地址,在内存找到该地址对应的值,将其压入栈中。
这是执行后的结果:
ecx
0xbff01450
esp 0xbff0143c 0xbff0143c
ebp 0xbff01498 0xbff01498
(gdb) x/x $esp
0xbff0143c: 0x0804840a
(gdb) x/x 0xbff0144c
0xbff0144c: 0x0804840a
其中,内存0xbff0144c即为%ecx-4后得到的值
指令LEA的作用和80x86汇编有些类似,即地址传递,下面举例说明:
LEA 0x4(%esp), %ecx
该指令的作用是,取出esp寄存器里的值,加上4,不再继续寻址,而是将得到值直接传递给ecx;如果是其他指令,则还需进行间接寻址,再传值。
esp 0xbff0143c 0xbff0143c
ebp 0xbff01498 0xbff01498
(gdb) x/x $esp
0xbff0143c: 0x0804840a
(gdb) x/x 0xbff0144c
0xbff0144c: 0x0804840a
其中,内存0xbff0144c即为%ecx-4后得到的值
指令LEA的作用和80x86汇编有些类似,即地址传递,下面举例说明:
LEA 0x4(%esp), %ecx
该指令的作用是,取出esp寄存器里的值,加上4,不再继续寻址,而是将得到值直接传递给ecx;如果是其他指令,则还需进行间接寻址,再传值。
相关热门文章
给主人留下些什么吧!~~
评论热议