gpt4 book ai didi

assembly - FASM 是低级汇编器而 NASM 是高级汇编器吗?

转载 作者:行者123 更新时间:2023-12-05 09:06:22 25 4
gpt4 key购买 nike

维基百科指出:

High-level assemblers in computing are assemblers for assembly language that incorporate features found in high-level programming languages.

接着说:

High-level assemblers typically provide instructions that directly assemble one-to-one into low-level machine code as in any assembler, plus control statements such as IF, WHILE, REPEAT...UNTIL, and FOR, macros, and other enhancements.

最后是指一些高级汇编器:

More recent high-level assemblers are Borland's TASM, NASM, Microsoft's MASM, IBM's HLASM (for z/Architecture systems), Alessandro Ghignola's Linoleum and Ziron.

其中,我只用过 NASM,但我能理解为什么它是高级汇编程序;它通常具有结构、宏和非常广泛的预处理器。但是,当我看到 FASM 的维基百科页面时,它把 FASM 称为低级汇编程序,我并没有真正理解。 FASM不仅支持结构体和宏(我对预处理器了解不多),还支持asssemble-time if语句。是否有任何其他规则指定汇编程序是高级还是低级? FASM 维基百科页面表示它有意不支持许多命令行选项,但仅凭这一点就可以使它成为低级汇编程序吗?

最佳答案

NASM 具有不错的宏功能,但它不像 MASM 那样内置了 .IF、.WHILE、.REPEAT...UNTIL 和 .FOR 指令等废话。 MASM 太老了,以至于有些人宁愿使用高级语言也不得不用 asm 编写。 NASM 是最近才设计的,如果您需要,只需使用编译器即可优化,而不是天真地为 MASM 填写模板 .IF指令。

我不会称 NASM 为“高级”汇编程序。

虽然这些术语没有具体的技术含义,只是一种软性设计目标/ self 宣传语言。 FASM 本身是用 asm 编写的,并且肯定会美化它是多么精简和小巧。我认为称自己为“低级”汇编器是为了声明“我们故意不是 MASM”;我们为您提供的工具可用于真正编写 asm,而不是假装是一种高级语言。

MASM/TASM 也有“变量” - foo dd 123 不仅将 foo 定义为一个符号,还在其他指令中使用 foo add foo, 1 表示这些指令的操作数大小。 NASM 和 FASM 没有任何像这样奇怪的东西:你可以查看源代码行并知道它是如何组装的,而无需查看其他地方来确定 foo 是否是 equ 常量或符号。

IMO,NASM 是一个不错的宏汇编程序,仅此而已。它并不比 FASM 任何“更高级别”。 NASM 在“高级”汇编程序列表中似乎非常不合适。

关于assembly - FASM 是低级汇编器而 NASM 是高级汇编器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66133054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com