指令本质是二进制机器码,CPU可以直接执行,伪指令并不是指令,当处理器遇到无法直接执行的指令时,就会将该指令替换成其他指令执行 。比如
【使用LDR伪指令实现将任意一个32位数赋给寄存器】MOV R1, #0xFFFFFFFF
MOV 要求传递给寄存器的值必须是一个立即数,很显然不是一个立即数,处理器是无法直接执行该指令的,所以编译器会事先转化为CPU可以执行的指令 。
文章插图
MOV无法直接将一个32位的数搬移到寄存器中,如果是伪指令就可以做到 。
LDR R1, =0x12345678@ 0x12345678 是要被搬移的数,前面用的是“=”,不是“#”
其本质是先将保存到内存中,然后通过LDR指令从内存加载到寄存器 。
拓展: 除了上述使用方法外,LDR指令还可以将一个标记点的下一条指令的地址保存到寄存器,或者直接将指令保存到寄存器 。
LDR R1, =STOP@ 将标记点STOP的下一条指令的地址保存到寄存器中LDR R2, STOP@ 将标记点的下一条指令保存到寄存器中
- 学习java第四弹——使用java输出1234567890
- Linux有问必答:如何使用tcpdump来捕获TCP SYN,ACK和FIN包
- 35年的电玩记录疑造假被吉尼斯世界纪录除名 伪造吉尼斯记录
- 一步一步教你使用uCOS-II
- 必看:想要免费使用chatgpt ? 一分钟为您讲明白!
- 火车票真伪
- iPhone苹果手机如何将百度小程序添加到手机桌面方便使用?
- 农村淘宝手机版,不想使用农村淘宝手机版怎么办
- USG6000V 华为eNSP的防火墙如何使用Web界面登入
- 谷歌研究人员使用量子计算机运行世界上最大的化学模型