【发布时间】:2020-12-25 09:11:16
【问题描述】:
我可以在 GAS 中使用分号作为注释字符吗?
我正在使用 GAS 2.30,Intel 语法如下。
.intel_syntax noprefix
.section .text
# Program entry point
.globl _start
_start:
# Put the code number for system call
mov eax, 1
# Return value
mov ebx, 0
# Kernel call
int 0x80
这很好用,只是我必须使用“#”作为注释字符而不是“;”。
重要的主要原因是我拥有的编辑器(SublimeText 3.2.2,build 3211)只有 ARM 或 NASM 汇编语法的语法高亮,它们都不理解 cmets 的“#”,正如我所关注的那样主要使用英特尔语法的材料,这是我希望与我所阅读的内容保持一致的内容。
我查看了英特尔手册、5000 多页的 PDF 文档,除非我以某种方式错过了它,否则它没有说明 cmets,尽管英特尔的 an introductory page 使用分号表示 cmets。
我的问题是,在这种情况下是否有可能让 GAS 使用分号而不是井号,或者这可能是只是习惯的小差异之一?
我知道 GAS 也会接受 /, // 和 /* */ 但 SublimeText 不理解这些。
有趣的是,告诉 SublimeText 使用 Bash 语法高亮是一个很好的解决方案,如下面的屏幕截图所示,但也许有一种方法可以配置 GAS 也使用分号?谢谢。
【问题讨论】:
-
您不能切换注释字符,但如果您真的需要,您可以对文件进行预处理。我认为编辑语法高亮配置更简单。如果有适当的突出显示,您也可以只使用
nasm。请注意,对于gas,指令也不同,并且可能会破坏突出显示。 -
@Jester - 谢谢。除了各种教程,我正在阅读的主要书籍是“现代 X86 汇编语言编程”,它使用 MASM,而我在 Linux 上。采用 Intel 语法的 GAS 似乎比 NASM 更接近 MASM,这也是我使用 GAS 的原因之一,也就是说,我希望在阅读本书时尽量减少对代码示例所做的更改。
-
您可以执行类似 ;# 或 #; 的操作。看看你的语法高亮是否更快乐。
-
英特尔文档将与他们创建或维护的任何英特尔汇编器相关,汇编语言特定于工具而不是目标,因此气体汇编不应与其他任何相同。如果它恰好是那么好,但如果不是那么那是预期的。他们喜欢使用分号来分隔指令 mov eax,1 ; mov ebx 0,可能用于预处理后输入汇编器的内联汇编。尽管历史上很多汇编语言都将它用于 cmets。
-
gas 人似乎有一种习惯,即确保 gas 汇编语言与处理器供应商的本地工具不兼容,只是生活的一部分,要么接受,要么离开。
标签: assembly gnu-assembler att intel-syntax