ARM处理器内联汇编详解-富士电机用户手册

需积分: 0 20 下载量 6 浏览量 更新于2024-08-10 收藏 4.79MB PDF 举报
"该资源为富士电机fuji alpha5 smart plus用户手册的一部分,主要讨论了在编程过程中涉及的ARM处理器内联汇编指令的参数处理,包括输入、输出参数列表以及被破坏的寄存器列表。" 在ARM处理器的编程中,内联汇编是一个重要的工具,尤其在需要高效、低级的硬件交互时。以下是关于内联汇编参数处理的详细解释: 1. **未指定参数列表**: 当在SWI(Software Interrupt)和BL(Branch and Link)指令后没有明确指定参数列表时,有默认规则。r0至r3用作输入参数,其中r0同时用于存储输出值。r12和r14这两个寄存器的值在函数调用期间会被修改。 2. **输入参数列表**: 输入参数列表用于列出传递给被调用函数或SWI的参数。这些参数可以是表达式、变量或包含表达式的物理寄存器。内联汇编编译器会自动处理参数加载,将它们放入相应的物理寄存器。为了保持与现有代码的兼容性,程序员可以指定物理寄存器名称而不赋值,使得虚拟寄存器中的值会被映射到物理寄存器。 3. **输出参数列表**: 输出参数列表定义了用于存储函数或SWI调用返回值的寄存器或表达式。这些值可以是物理寄存器、可修改的长值表达式或者单个物理寄存器名称。内联汇编会从特定物理寄存器中取出值并赋值给指定的表达式。同样,指定物理寄存器名称不赋值会导致虚拟寄存器被物理寄存器中的值更新。 4. **被破坏的寄存器列表**: 这个列表指明哪些物理寄存器在函数调用中可能会被破坏或改变。如果函数修改了条件标志,PSR(Processor Status Register)必须包含在列表中。BL和SWI指令总是会破坏lr寄存器。若没有提供此列表,r0至r3、ip、lr和PSR默认视为被破坏。 注意点: - BL指令与B指令的区别在于,B指令只能进行程序跳转,不能用于子程序调用。 - 在内联汇编中,可以定义标号作为跳转目标,也可以与C/C++的“goto”语句配合使用。 - 不同版本的ARM编译器可能对内联汇编语法有不同的要求,使用时需参考对应版本的文档。 在ARM系列处理器中,内联汇编允许程序员直接操作硬件层面,以实现高效的代码,但同时也需要对处理器的寄存器管理有深入理解。ARM处理器由于其高性能、低功耗的特点,广泛应用于嵌入式系统、消费电子和移动设备。