asm-mode下的comment符号真的是分号;吗?

asm-mode下的comment符号真的是分号;吗?

emacs在该模式用;;给我屏蔽的语句,但是我发现我屏蔽的语句在编译汇编的时候照样编译了,真正的comment好像是#

我编译采用的是如下命令:

riscv32-unknown-elf-as -o $1.o -march=rv32i $1.s 
riscv32-unknown-elf-ld $1.o -o $1.om
riscv32-unknown-elf-objcopy -O binary $1.om $1.bin

汇编是riscv32的。是不是emacs默认错了?还是说这个汇编比较特别,;;不能用于此汇编的comment。如果真的错了,如何更改emacs在asm-mode下默认的comment symbol啊?

附: 汇编代码:

# From Zhou Fan
.org 0x0
 	.global _start
_start:
	ori x1, x0, 0x210 # x1 = h210
	ori x2, x1, 0x021 # x2 = h231
	slli x3, x2, 1  # x3 = b010001100010 = h462
	andi x4, x3, 0x568 # x4 = b010001100000 = h460
	ori x5, x0, 0x68a # x5 = b011010001010 = h68a
	ori x7, x0, 22 # x7 = h16
	sll x5, x5, x7 # x5 = ha2800000
	;; ori x7, x0, 20 # x7 = o20
	;; sra x6, x5, x7 # x6 = hfffffa28
	;; ori x5, x0, 0x723 # x5 = b011100100011 = h723
	;; xor x5, x5, x4 # x5 = b001101000011 = h343

将下面comment掉后,一样进入编译。

Riscv Gnu Toolchain clone安装它的README clone后,安装如下命令make:

  sudo ./configure --prefix=/opt/riscv --with-arch=rv32gc --with-abi=ilp32d
  sudo make

是的,用 # 注释的汇编是比較奇葩。

可以改吗,最近一阵子都要和这个奇葩汇编打交道了。

comment-start 变量。

(add-hook 'asm-mode-hook (lambda () (setq commend-start "#")))

为什么我修改后在Assembler模式下comment-dwim还是用的分号;;:sob::sob::sob:

我试了一下,似乎 用 Mode hook 不太靠谱。 上面链接讲了更多的办法。

1 个赞

不会汇编,也没用过 asm-mode,但我看到 Asm mode 提供了一个选项 asm-comment-char,默认值是 ;

asm-comment-char is a variable defined in ‘asm-mode.el’.
Its value is 59

Documentation:
The comment-start character assumed by Asm mode.

You can customize this variable.

不清楚有没有帮助。

1 个赞