ARM的构造SWI和SVC是完全一样的吗?

时间:2011-12-10 19:34:14

标签: assembly arm embedded instruction-set

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

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

2 个答案:

答案 0 :(得分:21)

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

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

答案 1 :(得分:3)

ARMv8附录K6“ AArch32指令集的传统指令语法”上有一个不错的UAL与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?