Day14.进入 ARM 世界: ARM Instruction Sets

继续探讨我们昨天没完成的 ARM Instruction Sets。

Reverse Ordering Operations

  • 为什麽需要 Reverse Ordering Operations?

不同CPU在沟通时,可能会因为Byte Ordering (Big Endian 或 Little Endian不同),而需要Reverse 操作。

  • Example:
REV Rd, Rn  ; Rd = rev(Rn)	;Reverse bytes in word
REV16 Rd, Rn ; Rd = rev16(Rn)	;Reverse bytes in each half word
REVSH Rd, Rn ; Rd = revsh(Rn)	;Reverse bytes in bottom half word and sign extend the result

Data transfer instructions

前面介绍的 Register movement operations 的 MOV 指令只有在 Register 之间互相传送资料,这次补充 Register 和
memory 间互相传递资料。

  • Single register load/store
  • Example:
LDR r0, [r1] ; r0 <-- mem[r1]
STR r1, [r0] ; mem[r0] <-- r1
LDR.W R0,[R1, #offset]! ; Read mem[R1+offset], with R1
                        ; update to R1+offset

使用.W Postindexing 更新 Register

  • Multiple register load/store

    惊叹号(!)代表要存取後会 register 进行更新
    IA,IB,DA,DB 递增/递减()记忆体中的地址以Load/sotre你的数据,还有 after/before之分必须注意可能会导致记忆体位置有所不同
  • Example:
STM r0, {r1,r2} ; r1 --> [r0]  r2 --> [r0+4]
STM r0, {r1,r2} ; r1 <-- [r0]  r2 <-- [r0+4]


higher register numbers in higher addresses
与 Single load/store 相反

Status Register Access Instructions

  • MRS (Register <-- Status Register)
  • MSR (Status Register <-- Register)
  • Example:
MSR r0, IPSR ;(r0 <-- IPSR)
MSR APSR, r0 ;(APSR <-- r0)

Flow Control

用来实作Program Control

  • IF-THEN-Else
  • Conditaion branch
  • Loop
  • Switch case
  • Function call

Conditional Branch Instructions

Stack Memory Access


r13 是 SP (stack pointer)

除了 PUSH、POP 我们也可以使用 STM/LDM 搭配 FA,FD,EA,ED来进行操作。

Full 代表最後被使用的地址。

Thumb Instruction Sets

Thumb Instruction Sets 可以看做是 ARM Instruction Sets 压缩子集,能够提供程序码更佳的密度,它是16-bit的指令模式,缺点就是会受到一些限制。後来又有 Thumb2 的出现,原本单纯的 16 bits Thumb 指令集加入了一些 32 bits 的指令, 也加入了 IT (If Then) 指令。

所有Cortex-M CPU都使用Thumb-2指令集

参考资料

ARM指令
ARM Instruction Set
Definitive Guide To the ARM Cortex-M3
NYCU OCW Lec05 微处理机系统实验
Introduction to Computer Systems


<<:  Day 12 Odoo Server Actions (ir.actions.server)

>>:  【ACL成功案例】欧洲金融科技领导者Ebury 公司宣布采用Diligent勤奋集团所属Galvanize(ACL原厂)解决方案,协助公司提高营运绩效,建立以资料分析为导向,卓越具洞察远见的优秀组织~

Day11 vue.js实现简单的登入功能

延续昨日 今天来把登入的功能搞定吧! 记得我们day7学到的东西吗? :class="pr...

电子商贸系列 | 善用电子商贸增加客源

电子商贸系列 | 善用电子商贸增加客源 电子商贸系列能助你了解建立网上商店的实际流程及细节,并挑选最...

人脸辨识-day24 模型预测

1.preliminaries 要如何选定特徵与要做甚麽样的分类 step1:要先定做怎样的分类 s...

【Day22】导航元件 - Tabs

元件介绍 Tabs 是一个选项卡切换元件,能够在同一层级的内容组别当中导航、切换。此元件由两个部分构...

[13th][Day2] 第一个 Container

Docker 可以提供安全的沙盒环境来做测试, 建构多用户的 PaaS (platform as a...