arm及thumb指令集内容摘要:
项目中 Build 并执行 16 TM 16 ARM及 Thumb指令集 乘法 语法: MUL{cond}{S} Rd, Rm, Rs Rd = Rm * Rs MLA{cond}{S} Rd,Rm,Rs,Rn Rd = (Rm * Rs) + Rn [U|S]MULL{cond}{S} RdLo, RdHi, Rm, Rs RdHi,RdLo := Rm*Rs [U|S]MLAL{cond}{S} RdLo, RdHi, Rm, Rs RdHi,RdLo := (Rm*Rs)+RdHi,RdLo 占用的周期数 基本 MUL 指令 ARM7TDMI 上为 25 周期 StrongARM/XScale上为 13 周期 ARM9E/ARM102xE上为 2 周期 ARM9TDMI 比 ARM7TDMI多 1 周期 累加再多 1 周期 (不针对 9E, 尽管结果延迟多于 1周期 ) 对于“ long”型数据,多 1 周期 以上均为一般规则,确切细节查看相应手册。 17 TM 17 ARM及 Thumb指令集 单寄存器数据传送 LDR STR Word LDRB STRB Byte LDRH STRH Halfword LDRSB 带符号的 byte load LDRSH 带符号的 halfword load 存储器系统必须支持所有访问宽度 语法: LDR{cond}{size} Rd, address STR{cond}{size} Rd, address . LDREQB 18 TM 18 ARM及 Thumb指令集 地址访问 LDR/STR访问的地址由基址寄存器加上偏移量来产生。 针对 word和无符号 byte 的访问 , 偏移量可以是: 一个无符号 12bit立即数 (如 0 4095 bytes). LDR r0,[r1,8] 一个寄存器,或再加上移位(由立即数指定) LDR r0,[r1,r2] LDR r0,[r1,r2,LSL2] 可以是从基址寄存器上加或减去偏移量 : LDR r0,[r1,8] LDR r0,[r1,r2] LDR r0,[r1,r2,LSL2] 对于 halfword和带符号的 halfword / byte, 偏移量可以是 : 一个无符号 8 bit 立即数 (如 0255 bytes). 一个寄存器 (不能偏移 )。 可选择采用 preindexed或 postindexed方式寻址 19 TM 19 ARM及 Thumb指令集 0x5 0x5 r1 0x200 基址 寄存器 0x200 r0 0x5 源寄存器 for STR 偏移量 12 0x20c r1 0x200 原基址 寄存器 0x200 r0 0x5 源寄存器 for STR 偏移量 12 0x20c r1 0x20c 更新 基址寄存器 通过 STR r0,[r1,12]!来自动更新基址寄存器 Pre or Post Indexed 寻址 ? Preindexed: STR r0,[r1,12] Postindexed: STR r0,[r1],12 20 TM 20 ARM及 Thumb指令集 编写一个 ARM汇编程序,累加一个队列中的所有元素,碰上 0时停止。 结果放入 r4。 在源文件末尾按如下方式声明队列: myarray DCD 0x11 DCD 0x22 DCD 0 用 r0指向队列的入口 ADR r0,myarray 使用 LDR r1,[r0],4从队列中装载数据 累加并放入 r4 循环,直到 r1为 0 停止,进入死循环 Quiz 3 Total of array 0x22 0 0x11 r0 地址增加 21 TM 21 ARM及 Thumb指令集 LDM / STM指令允许一次传送 1到 16个寄存器到 /从存储器中。 寄存器传送顺序不能被指定 • 最小数字的寄存器总是被传送到 /从存储器的最低地址上。 LDMIA r10,{r0,r1,r4} 基址寄存器指定存储器访问开始的地址 快传送指令针对下列情况很有效: • 从存储器中搬运一块数据 • 保存或恢复堆栈中的内容 • 如果是慢速存储器,会影响中断响应时间 块数据传送 r1 r4 r0 r10 地址增加 22 TM 22 ARM及 Thumb指令集 LDM / STM 操作 语法: LDM|STM{cond}addressing_mode Rb{!}, 寄存器 list 4 中寻址操作 : LDMIA / STMIA Increment After( 先操作,后增加) LDMIB / STMIB Increment Before( 先增加,后操作 ) LDMDA / STMDA Decrement After ( 先操作,后递减) LDMDB / STMDB Decrement Before ( 先递减,后操作 ) IA r1 地址 增加 r4 r0 r1 r4 r0 r1 r4 r0。arm及thumb指令集
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。