X86汇编 linux汇编 win32汇编 区别

X86汇编 linux汇编 win32汇编 区别,第1张

x86汇编。。。x86架构的cpu用的汇编语言就叫x86汇编,比如你的本子,台式机

linux汇编。。写linux程序用到的汇编叫linux汇编,可能是x86架构的的,也可能是arm架构的。

通常情况下需要调用linux的系统调用

同理win32汇编就是写windows程序用的汇编,通常情况下需要调用windows API

这问题问的,啥意义没有。。。

用集合的观点来看

x86汇编和win32汇编,x86汇编和linux汇编存在交集

并不统一。Windows下的汇编语法是Intel汇编格式,Linux下的汇编语法是AT&T汇编格式。

Linux是Unix家族的一员,尽管Linux的历史不长,但与其相关的很多事情都发源于Unix。就Linux所使用的386汇编语言而言,它也是起源于Unix。Unix最初是为PDP-11开发的,曾先后被移植到VAX及68000系列的处理器上,这些处理器上的汇编语言都采用的是AT&T的指令格式。当Unix被移植到i386时,自然也就采用了AT&T的汇编语言格式,而不是Intel的格式。尽管这两种汇编语言在语法上有一定的差异,但所基于的硬件知识是相同的。

在Intel的语法中,寄存器和和立即数都没有前缀。但是在AT&T中,寄存器前冠以“%”,而立即数前冠以“$”。在Intel的语法中,十六进制和二进制立即数后缀分别冠以“h”和“b”,而在AT&T中,十六进制立即数前冠以“0x”。

Intel语法

mov eax,8

mov ebx,0ffffh

movl $8,%eax

movl $0xffff,%ebx

AT&T语法

int 80h

int $0x80

*** 作数的方向

Intel与AT&T *** 作数的方向正好相反。在Intel语法中,第一个 *** 作数是目的 *** 作数,第二个 *** 作数源 *** 作数。而在AT&T中,第一个数是源 *** 作数,第二个数是目的 *** 作数。

例如:在Intel中, moveax,[ecx]

在AT&T中,movl (%ecx),%eax


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8681373.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-19
下一篇2023-04-19

发表评论

登录后才能评论

评论列表(0条)

    保存