- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ARM及Thumb指令集(练习).ppt
ARM及Thumb指令集(练习) Quiz #2 - GCD 新建一个 ‘ARM Executable Image’ 项目 新建一个 text文件 另存为 “gcd.s” 加入到项目中 Build 并执行 Quiz #2 – 答案 Quiz #3 - Total of array 写一段 ARM汇编程序:循环累加队列中的所有元素,直到碰上零值元素,结果放在r4. 源程序末尾处声明队列: myarray DCD 0x11 DCD 0x22 DCD 0 r0 指向队列头 ADR r0,myarray 使用命令 LDR r1,[r0],#4来装载 累加至 r4 循环,直到r1为0 用死循环来停止 Quiz #3 - Solution Quiz #5 – DSP计算能力 1)写一个汇编函数 ‘qtest’来测试Q flag, 并清零。 参看模板 ‘asm\dsp.s’ 如果 Q 为0,返回0,否则返回非零 2) 写一个汇编主程序,把一个含64个带符号的16-bit数据组成的队列求平方和。 int total=0; for (n=0; n64; n++) total += x[n]*x[n]; 使用 LDRH 来装载数值。 使用SMLABB来求平方和。 3) 是否存在interlocks? 4) 在AXD中检查Q标志, (修改cpsr 为 E-PSR) 5) 循环末尾增加一个 BL来调用qtest,并检测返回值。 6)高手可尝试:改用 LDR,一次 加载两个数据。 7)高手可尝试: 修改代码,使用一个64-bit累加器。 Quiz #5 - Solution (1) Quiz #7 - Solution (2) Quiz #7 - Solution (3) * TM * 106v03 ARM and Thumb Instruction Sets v07 - Solutions to Exercises * TM T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D Start Stop r0 = r1? r0 r1? r0 = r0 - r1 r1 = r1 - r0 Yes No Yes No 你只需要使用CMP、SUB和B指令。 充分使用条件执行! 大家可以尝试计算 2109 和 4161 的GCD AREA myarea, CODE ENTRY MOV r0, #9 MOV r1, #15 start ; your code here stop B stop END AREA gcd, CODE ENTRY MOV r0, #9 MOV r1, #15 start CMP r0, r1 SUBLT r1, r1, r0 SUBGT r0, r0, r1 BNE start stop B stop END 练习:求 2109和4161的 GCD 57 (0x39) 设置初始值 一次比较的值可多次使用 死循环 0x22 0 0x11 r0 地址增加 AREA total, CODE ENTRY MOV r4, #0 ADR r0, array loop LDR r1, [r0], #4 ADD r4, r4, r1 CMP r1, #0 BNE loop stop B stop array DCD 0x11 DCD 0x22 DCD 0 END 基址指针 r0自动增加 死循环 r1为0时中断循环 声明队列 设置初始值 x x[0] x[1] x[2] x[3] x[4] x[63] r0 x[62] x[5] AREA TestQFlag, CODE Qflag EQU 0 qtest MRS r0, cpsr BIC r1, r0, #Qflag AND r0, r0, #Qflag MSR cpsr_f, r1 BX lr END 遵从 ATPCS标准,如果Q为1 ,非零值放在r0中返回 使用 “BX lr”返回, interworking时很安全 1)写一个汇编函数 ‘qtest’来测试Q flag, 并清零. AREA dspcode, CODE ENTRY MOV
您可能关注的文档
- 3讲第五节 水准测量成果计算.ppt-A.ppt
- 4 采蘑菇.ppt
- 4.1Extreme Values of Functions.ppt
- 4.明清皇权和中央集权制度的强化.ppt
- 4月10日营运部巡店门店整改反馈报告.ppt
- 4章 建设工程 投标.ppt
- 5. 线性卷积的FFT算法.ppt
- 6.6Multidimentional Feynman-Kac Theorem.ppt
- 6.893Pervasive Computing.ppt
- 60《一轮复习—书面表达指导训练》 .ppt
- ARTHUR E GROUP 爱华融集团.ppt
- ATM Switch Architectures.ppt
- B9902022 周书民B9902037 胡纪豪.ppt
- Basic Crystallography.ppt
- Bicycles are popular..ppt
- Booz & Company.ppt
- Borna Disease in a Dog with Lethal Meningoencephalitis.ppt
- British Literature before the 16th Century.ppt
- byWang Xiaomiao.ppt
- C++STL中的几个基本数据结构简 介.ppt
最近下载
- 安徽蓝盾 YDZX-01型烟气系统操作手册.pdf VIP
- 宠物除臭剂项目立项报告.pptx VIP
- 2024年履行合同催告函(6篇).pdf VIP
- CFD软件:Star-CCM+ 二次开发_(9).Star-CCM+后处理与可视化二次开发.docx VIP
- CFD软件:Star-CCM+ 二次开发_(8).Star-CCM+物理模型与求解器二次开发.docx VIP
- CFD软件:Star-CCM+ 二次开发_(7).Star-CCM+网格生成与优化二次开发.docx VIP
- CFD软件:Star-CCM+ 二次开发_(6).Star-CCM+二次开发API基础.docx VIP
- CFD软件:Star-CCM+ 二次开发_(5).Star-CCM+脚本编写与调试.docx VIP
- CFD软件:Star-CCM+ 二次开发_(4).Star-CCM+二次开发环境搭建.docx VIP
- CFD软件:Star-CCM+ 二次开发_(3).Star-CCM+数据结构与对象模型.docx VIP
文档评论(0)