如何看懂汇编语言
前言
汇编语言,如狼似虎,底层语言,低级语言,很多人一看到汇编就头皮发麻,但是仔细推敲,另有一番风景。这里介绍一下看汇编语言的思路。
信息收集
工欲善其事必先利其器,在实际分析汇编代码的时候,要先弄清楚自己看的汇编语言是哪个种类。汇编语言有两种主要风格,不同的风格看的顺序也不同。就像都是汉语,东北话和粤语就是不同。
在格式上,汇编语言主要分为Inter格式和AT&T格式。两者的主要区别可以从寄存器的名字上看出。AT&T相较于Inter格式更加复杂,就像PHP有很多$符号一样,不能给人一种简洁的感觉。
下面是部分对比 , 详情请看这里。
Intel 格式 | AT&T 格式 |
---|---|
push 1 | pushl %eax |
add eax, 1 | addl $1, %eax |
mov eax, [ebp - 4] | movl -4(%ebp), %eax |
两者在看的时候mov的顺序不同,比如Inter格式是[eax]=[ebp - 4],返回值返回到指令mov后的第一个值,而AT&T却是返回到后面这个值,这是需要注意的。
好的指令参考
找一本好的指令参考,不需要全面,根据