在 Apple 平台的 AArch64 汇编中,如何在一行中编写多个语句?

2024-02-21

我正在将一些 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(使用前将#替换为@)

在 Apple 平台的 AArch64 汇编中,如何在一行中编写多个语句? 的相关文章

随机推荐