Assembly ARM instructuons SWI和SVC是否完全相同?

Assembly ARM instructuons SWI和SVC是否完全相同?,assembly,arm,embedded,instruction-set,Assembly,Arm,Embedded,Instruction Set,臂组件具有SWI和SVC指令,用于进入“监控模式” 让我困惑的是,为什么有两个呢?据说SVC以前是SWI。这是否意味着他们基本上改变了记忆法?它们是一样的吗?我可以互换使用吗?它们中的一个在体系结构之前存在,另一个在体系结构之后存在吗?是的,SWI和SVC是一样的,只是名称的改变。以前,SVC指令称为SWI,即软件中断 SVC(和SWI)的操作码部分由用户定义(位0-23由用户定义,类似于SVC处理程序的参数)。位24-27是b1111,这4位使CPU意识到操作码是SVC(或SWI)。 有关更多

臂组件具有SWI和SVC指令,用于进入“监控模式”


让我困惑的是,为什么有两个呢?据说SVC以前是SWI。这是否意味着他们基本上改变了记忆法?它们是一样的吗?我可以互换使用吗?它们中的一个在体系结构之前存在,另一个在体系结构之后存在吗?

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

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

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

该表的一个条目是:

Pre-UAL syntax    UAL equivalent
SWI               SVC
明确表示它们是等价的

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

在GCC中,您可以对内联汇编使用选项
-masm syntax unified
,尽管它在8.2.0中不起作用,因为当时已修复了一个错误:


除了某些指令的名称外,UAL与pre-UAL还具有进一步的含义,例如对
#
的要求或不在某些整数文本中的要求:

,您只需查看文档即可查看指令本身。