当前位置: 首页 > 知识库问答 >
问题:

我们如何在Apple平台的AArch64程序集中的一行上编写多个语句?

寿和通
2023-03-14

我正在将一点Arm64汇编语言移植到M1。

其中一些是由C预处理生成的,其中单个#定义宏生成多个以分号分隔的语句。

不幸的是,在M1上,汇编器将分号视为注释字符。

例如:

#define DEFUN(NAME)  \
  .globl _ ## NAME ; \
  .palign 2 ;        \
  _ ## NAME:

导致<代码>之后的所有内容。将globl指令视为注释。

MacOSas手册页没有提供任何线索;它没有语法覆盖。

是否有分隔语句的alernative字符?我试过使用<代码>@<代码>和<代码> ,但两者都被拒绝。

这个问题的答案在这里没有用。

共有1个答案

江天宇
2023-03-14

对于针对Apple平台的aarch64程序集,可以使用分隔符作为分隔符。不确定是否/在哪里记录了它,但它是在这里的LLVM源代码中设置的。而且,即使它可能没有在任何地方明确记录,它也在许多地方使用,例如在libunwind和编译器rt中,所以它可能不会一时兴起而改变。

 类似资料:
  • 我有一个C++程序,我想编译成汇编,然后汇编器会把它编译成机器代码。 现在,据我所知,为了将汇编代码转换为机器代码,汇编程序需要某种表来映射汇编指令到实际的机器指令。 汇编程序将使用哪个表?我的C++程序是否有可能不能在所有CPU上运行,因为CPU使用不同的表,这意味着相同的机器代码在不同的CPU上会做不同的事情?

  • 问题内容: 在python中,我们使用反斜杠表示当前语句继续到下一行 例如, 或者简单地说, 可以用Go语言做到这一点吗?谢谢 问题答案: 当然可以,只需将运算符放在最后,例如: 另请注意,不可能在操作员之前中断换行。以下代码 无效 : 该规则在此处和规范中进行了描述。

  • ASP 应用程序可在运行 Windows NT 4.0 或 Windows 95 及其更新版本的操作系统的计算机上运行。另外,可在 Macintosh 上运行 streamline 版本的 ASP。因为在 Windows 95 和 Macintosh 上的 Personal Web Server 是为个人发布设计的,所以在对 ASP 应用的支持方面有些不同。您可以在 Windows NT Work

  • 问题内容: 我试图在我的Java应用程序中嵌入WebKit浏览器。我坚持使用WebKit,因为我不想用例如Eclipse SWT库中的Browser小部件支持的每个浏览器测试HTML5 / CSS / Javascript。 有没有办法在Mac,Windows和Linux上执行此操作,从而确保我的网页在Java应用程序中统一呈现? 问题答案: 从SWT 3.7 M5开始,如果使用标记创建,则小部件

  • 问题内容: 在这种情况下,我需要为Linux运行.complicated NET应用程序。 我的意思很复杂- 该项目开发了3年,我不想再用Java或其他东西编写它,而以后再开发并支持.NET和Java版本。 应用程序正在生成鼠标和键盘事件(通过winapi / dll导入)并使用串行端口。我也有几个延迟计时器- 用于串行端口通信(10-20毫秒,这里我不需要很大的精度)。 剩下的只是很多简单的代码

  • 问题内容: 我在Robot Framework中编写条件时遇到麻烦。 我要执行 我可以在一个条件下使用此关键字,但是在多个条件下,出现此错误: 失败:关键字名称不能为空。 我也想使用这些关键字: 和 但是我最终会遇到错误。 问题答案: 您应该使用小写字母“ or”和“ and”,而不是OR和AND。 并且要注意关键字和参数之间的空格/制表符(您至少需要两个空格)。 这是一个代码示例,您的三个关键字