ARM程序集具有用于进入“管理员模式”的SWI和SVC指令。
令我困惑的是,为什么有两个? Here据说SVC以前是SWI。这是否意味着基本上他们改变了助记符?它们是一样的吗?我可以互换使用吗?其中一个存在于架构之前,还有其他之后?
答案 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?
#
的要求或某些整数文字中的要求:Is the hash required for immediate values in ARM assembly?