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”表示向后
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”表示向后
相关文章推荐
- 请正确对比Windows和Linux的差异
- snprintf linux 与 windows下差异
- 详细解析windows usb驱动和linux usb驱动的相似和差异(六)
- windows和linux汇编语言的比较
- 详细解析windows usb驱动和linux usb驱动的相似和差异(十)
- Windows与Linux编译器的差异
- Linux和windows中的换行符差异问题 LINUX的换行符在Windows记事本打开不换行或出现黑点
- 详细解析windows usb驱动和linux usb驱动的相似和差异(四)
- 详细解析windows usb驱动和linux usb驱动的相似和差异(三)
- Linux与windows下setsockopt的一点差异
- Windows和linux换行符差异导致的问题
- Windows与Linux的异步IO在设计上的差异
- Windows与Linux的异步IO在设计上的差异
- 详细解析windows usb驱动和linux usb驱动的相似和差异(五)
- windows和linux汇编语言的比较
- 浮点数默认精度在windows/linux上的差异
- Linux与Windows系统的差异
- windows 汇编和linux汇编
- 详细解析windows usb驱动和linux usb驱动的相似和差异(八)
- C语言memset函数详解(Linux下和windows下的差异)