[arm汇编-译] 02 寄存器以及基本算数运算

原文地址: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

你可能感兴趣的:([arm汇编-译] 02 寄存器以及基本算数运算)