树莓派编程:指令与系统调用详解
1. 除法指令的引入
早期树莓派(如Raspberry Pi 1和Raspberry Pi Zero)所使用的ARM处理器没有提供除法指令,进行两数相除要么需要一些技巧,要么采用计数减法的方法。从Raspberry Pi 2及后续版本开始,提供了SDIV和UDIV指令,分别用于有符号和无符号除法。这两条指令对状态寄存器标志位没有影响,直接对寄存器进行操作,格式如下:
- SDIV , ,
- UDIV , ,
其中, 是目标寄存器,指令执行完成后,该寄存器将包含商,余数需要单独计算。如果省略 ,结果将存于 中。以下是使用SDIV进行有符号除法的示例代码:
/* Signed Division Example RPi 2 and Greater */
.global _start
_start:
MOV R3, #20 @ Numerator
MOV R4, #5 @ Denominator
SDIV R0, R3, R4 @ R0=R3/R4
@ Do not use SP or PC,
@ SR flags not altered
@ div by 0 returns 0
MOV R7, #1 @ exit through syscall
SWI 0
要打印出结果,可以在命令行输入 echo $? ,根据代码,将返回 4 。
2. 数据移动指令
有两条与数据移动相关的指令:MOV和MVN,用于将数据从一个
超级会员免费看
订阅专栏 解锁全文
56

被折叠的 条评论
为什么被折叠?



