so true

心怀未来,开创未来!
随笔 - 160, 文章 - 0, 评论 - 40, 引用 - 0
数据加载中……

看懂objdump的at&t汇编

我们通过objdump得到的汇编都是AT&T格式的汇编,所以看起来有些不习惯,
objdump -S -l -j .text -d t218
如果想看intel格式的汇编,可以使用:objdump -S -l -j .text -d -Mintel t218

objdump:http://zhwen.org/?p=articles/gnutools
标志位:http://apps.hi.baidu.com/share/detail/15615599
跳转指令:http://200830740306.javaeye.com/blog/645018
寄存器说明:http://sourceware.org/binutils/docs-2.21/as/i386_002dRegs.html#i386_002dRegs
寻址方式:http://wwwcsif.cs.ucdavis.edu/~davis/50/att-syntax.htm
at&t汇编:
《Programming Ground Up》的Appendix B (url: http://webster.cs.ucr.edu/AsmTools/Gas/ProgrammingGroundUp.pdf)
http://en.wikibooks.org/wiki/X86_Assembly/GAS_Syntax
http://www.sig9.com/articles/att-syntax
http://blog.csdn.net/chenyu424242/archive/2007/09/23/1797334.aspx
http://hi.baidu.com/yanyulou/blog/item/2698c1fd5d07dc40d6887d04.html

intel的汇编格式是从右向左,例如 mov    edx,0x80485a7
esp用于指示栈空间的栈顶,push会减少esp的值,pop会增加esp的值;
ebp通常先从esp赋值,然后用于操纵栈上的操作数。
je和jz是等同的,jne和jnz是等同的,如果检测一个数是否为0,经常会这么用:
test eax,eax
je 0x234af23
al,ah,ax,eax,rax依次为:最低位byte;次低位byte,低2位bytes,低4位bytes,8位bytes
movzx  eax,BYTE PTR [rax+0x10],movzx用于将宽度窄的数值放到宽度大的寄存器里,宽度大的寄存器中的高位会被0填充

http://blog.csdn.net/xuzhina/article/details/45178305   记录了一次完整的调试汇编过程

posted on 2011-03-22 14:54 so true 阅读(1286) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: