寄存器
本质上,计算机中的处理器不过是强大的计算器。 只能使用存储在称为寄存器的很小的存储器中的值来进行计算。 Raspberry Pi中的ARM处理器具有16个整数寄存器和32个浮点寄存器。 处理器使用这些寄存器分别执行整数计算和浮点计算。 我们现在暂时将浮动寄存器放在一边,最终我们将在以后的文章中再次讨论它们。 让我们关注整数寄存器。
ARM中的那16个整数寄存器的名称从r0到r15。 它们可以容纳32位。 当然,这32位可以编码您想要的任何内容。 就是说,用整数表示两个整数很方便,因为有些指令会执行假定这种编码的计算。 因此,从现在开始,除非另有说明,否则我们将假定我们的寄存器包含以二进制补码编码的整数值。
并非从r0到r15的所有寄存器都被平等地使用,但是我们暂时不会在意。 假设我们要做的就是“确定”。
基本算术
几乎每个处理器都可以使用整数寄存器执行一些基本的算术运算。 ARM处理器也是如此。 您可以添加两个寄存器。 让我们以第一章为例。
/* -- sum01.s */
.global main
main:
mov r1, #3 /* r1 ← 3 */
mov r2, #4 /* r2 ← 4 */
add r0, r1, r2 /* r0 ← r1 + r2 */
bx lr
如果我们编译并运行该程序,则错误代码为7。
$ ./sum01 ; echo $?
7
没有什么能阻止我们以更聪明的方式重用r0。
/* -- sum02.s */
.global main
main:
mov r0, #3 /* r0 ← 3 */
mov r1, #4 /* r1 ← 4 */
add r0, r0, r1 /* r0 ← r0 + r1 */
bx lr
表现符合预期。
$ ./sum02 ; echo $?
7
以上是本节内容!