原文地址:http://thinkingeek.com/arm-assembler-raspberry-pi/
阅读建议:尽量阅读原文
寄存器
作为核心,处理器可以简化为一个计算器。并且只能使用“寄存器”中的操作数。树莓派中的arm处理器包含16个整形寄存器和32和浮点数寄存器。处理器利用这些寄存器分别来执行整数和浮点数计算。暂时我们只关注整形寄存器。
16个整形寄存器命名方式如下:r0...r15。每个寄存器都是32bit。当然这32bit可以根据需要任意编码。也就是说,可以很方便的用"二进制码"来表示整数,执行整数计算的指令一般都使用这种编码。因此后面如果没有特别注明,都默认寄存器中保存的是二进制编码的整数。
r0-r15寄存器并非都是通用寄存器,但现在不做区分。
基本算数运算
基本上所有的处理器都可以利用寄存器进行算数运算。可以将两个寄存器中的值相加,再次以上一章中的代码举例:
/* -- sum01.s */
.global main
.func 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
另可以通过复用寄存器简化程序:
/* -- sum02.s */
.global main
.func main
main:
mov r0, #3 /* r0 ← 3 */
mov r1, #4 /* r1 ← 4 */
add r0, r0, r1 /* r0 ← r0 + r1 */
bx lr
执行结果与上面程序相同。
$ ./sum02 ; echo $?
7