[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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 算术和逻辑指令ADC : 带进位的加法(Addition with Carry)ADC{条件}{S} <dest...
    luffier阅读 3,799评论 0 3
  • 前言 本文翻译自iOS Assembly Tutorial: Understanding ARM 翻译的不对的地...
    桃红宿雨阅读 18,144评论 7 198
  • 走路匆忙,吃饭匆忙,逛街都是匆匆忙忙,不知道什么时候,生活的步子好像被千万只豺狼追赶般紧张。 大学最自如的环境里,...
    九界jiujie阅读 398评论 0 1
  • 小时侯是个安静内向的孩子,父亲对我们特别严厉,但我却一直是个敏感,自尊心特强的孩子,往往压抑到无法自拔,偶尔从零零...
    阿萍28阅读 195评论 1 3
  • 今天是国庆节,我本来想去天安门的,那是我一直想去的地方。但是妈妈说今天的人会特别多,会排好长时间的队,还会堵车,所...
    张梓墨妈妈阅读 810评论 0 0