您的位置:首页 > 运维架构 > Linux

windows与linux 汇编差异

2014-08-10 14:05 148 查看
汇编语言有助记符,机器语言是纯粹二进制。

CPU与OS确定的情况下,一句汇编语言可唯一确定一句对应的机器语言。


Linux下采用的是AT&T的汇编语法格式,Windows下面采用的是Intel汇编语法格式。二者的主要区别在于:



1.指令操作数的赋值方向是不同的

Intel:第一个是目的操作数,第二个是源操作数

AT&T:第一个是源操作数,第二个是目的操作数

2.指令前缀

AT&T:寄存器前边要加上%,立即数前要加上$

Intel:没有这方面的要求

3.内存单元操作数

Intel:基地址使用[]

AT&T: 基地址使用()

比如:intel中 mov ax,[bx]

AT&T中 movl (%eax),%ebx

4.操作码的后缀

AT&T中操作码后面有一个后缀字母:“l” 32位,“w” 16位,“b” 8位

Intel却使用了在操作数前面加dword ptr, word ptr, byte ptr的格式

例如:mov al,bl (Intel)

movb %bl %al (AT&T)

5.AT&T中跳转指令标号后的后缀 表示跳转方向,“f”表示向前,“b”表示向后
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: