当前位置: 首页 > news >正文

ARM汇编语言: lesson 2(ADD, SUB, MUL, set CPSR)

加减乘及mov运算

在arm中,add, sub, mov都支持 sub 支持 register或者immediate的操作。而mul 只支持 寄存器的操作。

mov  r0, #3mov r0, r1

CPSR寄存器

CPSR: represent the current status of the program

set on the result of instruction execution. 一共包含32bits的数据。

如果在add/su b指令后面加上s, 将会改变cpsr的状态。

如下列的汇编代码

.global _start
_start:mov r0, #3mov r1, #3subs r2, r0, r1andeq r0,r0,r0

经过subs的操作后,r2为0, 此外,cpsr寄存器中,zero flag 为1, carry flag 为1, zero flag为1, 是因为此前的结果为0, carry flag 为1, 是因为arm实际使用的是inverted carry flag.参考链接1.

ARM uses an inverted carry flag for borrow (i.e. subtraction). That's why the carry is set whenever there is no borrow and clear whenever there is. This design decision makes building an ALU slightly simpler which is why some CPUs do it.

基于CPUlator ARMv7 System Simulator 可以看到,cpsr的20位和31位被设为1,对应zero flag 和 carry flag.

参考资料

【1】assembly - Confusion about ARM documentation on carry flag - Stack Overflow 

【2】Documentation – Arm Developer

【3】 https://www.youtube.com/watch?v=xQ--xX9rHeE&t=807s


http://www.mrgr.cn/news/37306.html

相关文章:

  • 文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《基于自适应时段划分的含氢微能网中长期变分辨率调度》
  • APP商业化变现模
  • 理解CPU上下文切换-下
  • springboot中有哪些方式可以解决跨域问题
  • Java中使用ZXing和QRCode生成二维码(附Demo)
  • 【SpringBoot详细教程】-06-Restful风格【持续更新】
  • Lod2城市三维模型是什么意思?
  • 你要的录音播放录音功能,直接用!Air201资产定位模组LuatOS快速入门
  • Django Web开发基础介绍
  • SemiDrive E3 MCAL 开发系列(4) – Gpt 模块的使用
  • 软考高级:系统设计 - MDA 模型 AI 解读
  • 生信初学者教程(十二):数据汇总
  • Windows下jenkins执行远程sh脚本中文乱码问题
  • FPGA实现PCIE图片采集转HDMI输出,基于XDMA中断架构,提供3套工程源码和技术支持
  • 设计强化学习算法解决迷宫问题
  • 新160个crackme - 066-Andrnalin.3
  • Dina: 1.0.1靶场
  • C语言数组探秘:数据操控的艺术【下】
  • 2024年9月27日历史上的今天大事件早读
  • 预备阶段-Android逆向基础