当前位置: 技术问答>linux和unix
AT&T 汇编一实例
来源: 互联网 发布时间:2016-09-06
本文导语: (gdb) info r edx edx 0xa4d79f4 172849652 (gdb) info r ebp ebp 0xbfe57c18 0xbfe57c18 (gdb) info r eax eax 0xa4d79f4 172849652 已经给出了实时的值,我算...
(gdb) info r edx
edx 0xa4d79f4 172849652
(gdb) info r ebp
ebp 0xbfe57c18 0xbfe57c18
(gdb) info r eax
eax 0xa4d79f4 172849652
已经给出了实时的值,我算出的和gdb下来的结果不一样,有谁帮我脑算一下;我脑算的和机算的也有区离,可能是我对AT&T的地址计算过程不是特别精通.
mov 0xfffffff4(%ebp),%edx # 0xfffffff4(%ebp) 这个是什么意思,基址编移吗,帮我计算一下,mov,的结果,是传值,还是在传址?
mov 0xfffffff0(%ebp),%eax # 同上
movzbl 0x184(%eax),%eax # 同上
edx 0xa4d79f4 172849652
(gdb) info r ebp
ebp 0xbfe57c18 0xbfe57c18
(gdb) info r eax
eax 0xa4d79f4 172849652
已经给出了实时的值,我算出的和gdb下来的结果不一样,有谁帮我脑算一下;我脑算的和机算的也有区离,可能是我对AT&T的地址计算过程不是特别精通.
mov 0xfffffff4(%ebp),%edx # 0xfffffff4(%ebp) 这个是什么意思,基址编移吗,帮我计算一下,mov,的结果,是传值,还是在传址?
mov 0xfffffff0(%ebp),%eax # 同上
movzbl 0x184(%eax),%eax # 同上
|
楼主要是有兴趣研究汇编,可以看看这个
http://blog.csdn.net/brookmill/archive/2008/12/01/3418269.aspx
http://blog.csdn.net/brookmill/archive/2008/12/01/3418269.aspx
|
mov 0xfffffff4(%ebp),%edx ; 把位于ebp-12的4个字节复制到edx
至于mov的结果,要看那个位置原来保存的是什么了,应该是一个4字节的局部变量
mov 0xfffffff0(%ebp),%eax ; 把位于ebp-16的4个字节复制到eax 另一个局部变量
至于mov的结果,要看那个位置原来保存的是什么了,应该是一个4字节的局部变量
mov 0xfffffff0(%ebp),%eax ; 把位于ebp-16的4个字节复制到eax 另一个局部变量
|
楼主既然已经看到了ebp的值,就可以看看ebp附近的栈内存
(gdb) x/12 0xbfe57c00
还可以看看局部变量的地址,是不是ebp-12
(gdb) print &i
(gdb) x/12 0xbfe57c00
还可以看看局部变量的地址,是不是ebp-12
(gdb) print &i