美文网首页
[arm汇编-译] 02 寄存器以及基本算数运算

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

作者: peterfuture | 来源:发表于2016-03-30 15:37 被阅读0次

    原文地址: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 寄存器以及基本算数运算

          本文链接:https://www.haomeiwen.com/subject/gwqtlttx.html