med*_*le1 2 assembly nasm fasm
维基百科指出:
计算中的高级汇编程序是汇编语言的汇编程序,它合并了高级编程语言中的功能。
它接着说:
高级汇编程序通常提供直接将一对一汇编成低级机器代码的指令,就像在任何汇编程序中一样,以及诸如 IF、WHILE、REPEAT...UNTIL 和 FOR、宏和其他增强功能的控制语句。
最后,它指的是一些高级汇编程序:
较新的高级汇编程序是 Borland 的 TASM、NASM、Microsoft 的 MASM、IBM 的 HLASM(用于 z/Architecture 系统)、Alessandro Ghignola 的 Linoleum 和 Ziron。
其中,我只用过 NASM,但我能理解为什么它是一个高级汇编器;它具有结构、宏和一个非常广泛的预处理器。但是,当我看到 FASM 的 Wikipedia 页面时,它将 FASM 称为低级汇编程序,我并没有真正理解。FASM 不仅支持结构体和宏(我对预处理器了解不多),还支持汇编时的 if 语句。是否有任何其他规则指定汇编程序是高级还是低级?FASM 维基百科页面说它故意不支持许多命令行选项,但仅此一项就使其成为低级汇编程序吗?
NASM 有很好的宏特性,但它没有像 MASM 那样内置的像 .IF、.WHILE、.REPEAT...UNTIL 和 .FOR 指令那样的废话。MASM 太老了,以至于有些人宁愿使用高级语言,也不得不用 asm 编写。NASM 是最近设计的,如果您需要,只需使用编译器即可进行优化,而不仅仅是天真地填充 MASM.IF
指令的模板。
我不会称 NASM 为“高级”汇编程序。
虽然这些术语没有特定的技术含义,只是一种软设计目标/自我宣传的语言。FASM 本身是用asm编写的,并且肯定会赞美它是多么精简和小巧。我认为称自己为“低级”汇编程序是为了声明“我们故意不是 MASM”;我们为您提供了对真正编写 asm 有用的工具,而不是假装是一种更高级的语言。
MASM/TASM 也有“变量”——foo dd 123
不仅定义foo
为一个符号,foo
在其他指令中使用,比如add foo, 1
暗示这些指令的操作数大小。NASM 和 FASM 没有这样的奇怪东西:您可以查看源代码行并知道它是如何组装的,而无需查看其他地方以找出它foo
是equ
常量还是符号。
IMO,NASM 是一个不错的宏汇编程序,仅此而已。它不是 FASM 的“更高级别”。NASM 在“高级”汇编程序列表中似乎很不合适。
归档时间: |
|
查看次数: |
289 次 |
最近记录: |