汇编语言的种类(转载)
来源:互联网 发布:学画画的软件 编辑:程序博客网 时间:2024/05/08 19:11
汇编语言和CPU息息相关,但是不能把汇编语言完全等同于CPU的机器指令。不同架构的CPU指令并不相同,如x86,powerpc,arm各有各的指令系统;甚至同一种架构的CPU有几套指令集,典型的如arm除了有32位的指令集外,还有一套16位的thumb指令集。但是作为开发语言的汇编,本质上是一套语法规则和助记符的集合,它可以包容不同的指令集。如果从CPU体系来划分,常见的汇编有两种:IBM PC汇编和ARM汇编。
IBM PC汇编也就是Intel的汇编,因为IBM 最早推出PC机,后来的体系很多都要和它兼容,所以也使用了相同的汇编语言。ARM压根没考虑过兼容,它的指令集和x86完全是两个体系,所以汇编语言也独立发展出一套。
CPU只是限定了机器码,作为开发语言的汇编,其实还和编译器息息相关。汇编语言出现的早,没有像C语言一样定义出标准,所以编译器的厂商各搞一套。到现在,最有名的也是两家:MASM和GNU ASM。前者是微软的,只支持x86,用在DOS/Windows平台中;后者是开源产品,主要用在Linux中,基本上支持大部分的CPU架构。这两者的区别在于伪指令的不同,伪指令是用来告诉编译器如何工作的,和编译器相关,和CPU无关。其实汇编的编译相当简单,这两套伪指令只是符号不相同,含义是大同小异,明白了一种,看另一种就很容易了。
从汇编格式分,还有Intel格式和AT&T格式的区别,前者是Intel的,windows平台常见,后者最早由贝尔实验室推出,用于Unix中,GUN汇编器的缺省格式就是AT&T。不过GNU的汇编器和调试器gdb对这两种格式都支持,可以随便切换。MASM只支持Intel格式。Intel格式和AT&T格式的区别只是符号系统的区别,这与x86和arm的区别可不一样,后者是CPU体系的区别。
最后谈谈内嵌汇编,它是用于C语言和汇编语言混合编程的,所以和编译器也关系紧密,目前也是有两种,GNU的内嵌汇编和MASM的内嵌汇编,它们的语法和普通汇编是有区别的,特别是GNU的内嵌汇编不是很容易看懂,需要专门学习才行。MASM的内嵌汇编和普通汇编的区别则不大。
- 汇编语言的种类(转载)
- 汇编语言的种类
- 【汇编语言】CPU寄存器的种类
- 转载:印刷用纸种类
- c语言变量的存储种类和存储器类型 (转载)
- struts2视图result的种类和常量总结(转载)
- (转载)java程序的几种类型
- 转载:Casl汇编语言辅导
- 【转载】 汇编语言考前总结
- [转载]描述子距离种类
- 汇编语言超浓缩教程(转载)
- [转载]汇编语言超浓缩教程
- 【转载】ARM汇编语言伪指令
- Idea中Git的使用和两种类型的冲突解决 转载
- 汇编语言的集成编译环境RadSAM的安装及使用(转载)
- 『转载』__asm__ __volatile__ GCC的内嵌汇编语法 AT&T汇编语言语法
- 汇编语言的准备知识--给初次接触汇编者 (1-4) 转载
- 『转载』__asm__ __volatile__ GCC的内嵌汇编语法 AT&T汇编语言语法
- Ajax-XMLHttpRequest2
- Android热修复(Hot Fix)案例全剖析(一)
- dug使用方法
- 针对请求GET和POST请求,出现中文乱码
- 让SecureCRT好使起来
- 汇编语言的种类(转载)
- javaweb 自动刷新
- MyBatis SQL语句 符号不兼容 大于号 小于号 (XML转义字符)
- PS安装
- response字符编码解决中文乱码
- SerrvletContext 和 rerquest 两个域对象
- Gold Balanced Lineup ( hash )
- servlet 常用知识点
- 下载图片--解决中文乱码