维基百科说:
计算中的
高级汇编程序是用于汇编语言的汇编程序,它结合了高级编程语言中的特性。
它接着说:
高级汇编程序通常提供直接将一对一组装成低级机器代码的指令,就像在任何汇编程序中一样,加上控制语句,如IF、WHILE、REPEAT...UNTIL和FOR、宏和其他增强功能。
最后,它提到了一些高级汇编程序:
最近的高级汇编程序有Borland的TASM、NASM、微软的MASM、IBM的HLASM (用于z/Architecture系统)、Alessandro Ghignola的亚油酸和Ziron。
其中,我只使用了NASM,但我能理解为什么它是一个高级汇编程序;它有结构、宏和一个非常广泛的预处理器。然而,当我看到FASM的维基百科页面时,它将FASM说成是一个低级的汇编程序,而我并没有真正理解这一点。FASM不仅支持结构和宏(我对预处理器不太了解),而且还支持集合时间if语句。是否有其他规则指定汇编程序是高级的还是低级的?FASM维基百科页面表示,它有意不支持许多命令行选项,但这本身是否就使得它成为一个低级别的汇编程序?
发布于 2021-02-10 08:19:24
NASM有不错的宏特性,但它没有像.IF、.WHILE、.REPEAT...UNTIL和.FOR指令那样的无稽之谈--就像MASM那样。MASM太老了,有些人宁愿使用高级语言,也不得不用asm编写。NASM是最近设计的,如果您想要的话,只需使用编译器就可以进行优化,而不是天真地为MASM .IF指令填充模板。
我不认为NASM是一个“高级”汇编程序。
虽然这些术语没有具体的技术含义,但只是一种软设计-目标/自我推销的语言。FASM本身是用asm编写的,并且肯定地美化了它是多么的精简和小。我认为称自己为“低级”汇编程序是为了声明“我们故意不是MASM";我们为您提供了一些有用的工具来编写asm,而不是假装自己是一种更高级别的语言。
MASM/TASM也有“变量”- foo dd 123不仅将foo定义为符号,在其他指令(如add foo, 1 )中使用foo意味着这些指令的操作数大小。NASM和FASM没有像这样奇怪的东西:您可以查看源代码行,知道它是如何组装的,而无需在其他地方查找foo是equ常量还是符号。
IMO,NASM是一个不错的宏汇编器,没有比这更好的了。它没有比FASM更高的水平。NASM似乎在“高水平”汇编器列表中非常不合适。
https://stackoverflow.com/questions/66133054
复制相似问题