我正在将一些 Arm64 汇编语言移植到 M1。
其中一些是由 C 预处理生成的,其中单个#define
宏生成多个以分号分隔的语句。
不幸的是,在 M1 上,汇编器将分号视为注释字符。
例如:
#define DEFUN(NAME) \
.globl _ ## NAME ; \
.palign 2 ; \
_ ## NAME:
导致之后的一切.globl
指令被视为注释。
苹果系统as
手册页没有提供任何线索;它没有语法覆盖。
是否有替代字符来分隔语句?我尝试使用@
and !
,但均被拒绝。
答复这个问题 https://stackoverflow.com/questions/27685548/can-i-write-multiple-assembly-instructions-on-the-same-line在这里没有用。
对于针对 Apple 平台的 aarch64 程序集,您可以使用%%
作为分隔符。不确定它是否/在哪里记录,但它是在 LLVM 源代码中设置的here https://github.com/llvm/llvm-project/blob/llvmorg-12.0.0-rc3/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp#L40。即使它可能没有在任何地方明确记录,它也会在很多地方使用,例如在利本温德 https://github.com/llvm/llvm-project/blob/llvmorg-12.0.0-rc3/libunwind/src/assembly.h#L28-L30 and 编译器-rt https://github.com/llvm/llvm-project/blob/llvmorg-12.0.0-rc3/compiler-rt/lib/builtins/assembly.h#L17-L21,所以它可能不会一时兴起改变。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)