【问题标题】:Are ARM instructuons SWI and SVC exactly same thing?ARM指令SWI和SVC完全一样吗?
【发布时间】:2012-01-17 13:25:31
【问题描述】:

ARM 程序集具有用于进入“主管模式”的 SWI 和 SVC 指令。

让我困惑的是,为什么会有两个? Here据说SVC以前是SWI。这是否意味着他们基本上改变了助记词?它们是一样的吗?我可以互换使用它们吗?其中一个存在于架构之前,而另一个存在于之后?

【问题讨论】:

    标签: assembly arm embedded instruction-set


    【解决方案1】:

    是的,SWI 和 SVC 是一回事,只是名称的改变。以前,SVC 指令被称为 SWI,软件中断。

    SVC(和 SWI)的操作码部分是用户定义的(位 0-23 是用户定义的,类似于 SVC 处理程序的参数)。第 24-27 位是 b1111,这 4 位使 CPU 意识到操作码是 SVC(或 SWI)。 有关详细信息,请参阅ARM Information Center

    【讨论】:

      【解决方案2】:

      ARMv8 附录 K6“AArch32 指令集的传统指令语法”上有一个很好的 UAL 与 pre-UAL 助记符表

      该表的条目之一是:

      Pre-UAL syntax    UAL equivalent
      SWI               SVC
      

      明确声明它们是等价的。

      在 GNU GAS 上,您可以使用 .syntax unified 选择 UAL 语法。

      在 GCC 中,您可以使用选项 -masm-syntax-unified 进行内联汇编,尽管由于当时修复的错误,它在 8.2.0 中无法正常工作:How to write .syntax unified UAL ARMv7 inline assembly in GCC?

      UAL 与 pre-UAL 相比,除了某些指令的名称外,还有其他含义,例如# 的要求是否在某些整数文字中:Is the hash required for immediate values in ARM assembly?

      【讨论】:

      • 您可以简单地查看文档以查看说明本身。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 2019-11-13
      • 1970-01-01
      • 1970-01-01
      • 2013-11-14
      相关资源
      最近更新 更多