Assembly ARM instructuons SWI和SVC是否完全相同?
臂组件具有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)。 有关更多
让我困惑的是,为什么有两个呢?据说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还具有进一步的含义,例如对
#
的要求或不在某些整数文本中的要求:,您只需查看文档即可查看指令本身。