8、树莓派编程:指令与系统调用详解

树莓派编程:指令与系统调用详解

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,用于将数据从一个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值