全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ARM下的位置无关和相关码位置无关代码,即该段代码无论放在内存的哪个地址,都能正确运行。究其原因,是因为代码里没有使用绝对地址,都是相对地址。而位置相关码,即它的地址与代码处于的位置相关,是绝对地址,如:mov PC ,#0xff;ldr pc,=0xffff等。一、位置无关的写法:(1) B指令B指令接受一个相对地址,因此在汇编里用B跳转到一个标号时,实际编译的结果是一个相对跳转。相对地址有个范围限制,即目标不能太远,一般目标放在同一个文件里是肯定可以的。 Offset must IN 32Mbit_start: b _reset_reset: .(2) BLBL用于调用函数,也是一个相对跳转,same as B instrction(3) ADR获取标号的地址,在编译时会使用PC+偏移的方式得到该位置的地址。例如,当TEXT_BASE是0时SMRDATA可能被放在0x100的位置,当TEXT_BASE为0x30000000时放在0x30000100的位置。使用ADR总能获取正确的位置,与程序的加载地址无关。 ADR R0, SMRDATASMRDATA: .word 0x22111120 .word 0x00002F50 .word 0x00000700(相应的, LDR Rn, =LABEL是位置相关的)(4) LDR当加标号时,LDR可以用于伪指令,也可以真指令。真指令: (标号前不加=号,表示取标号处的值) LDR R0, SDRDATA实际被编译为LDR R0, PC, #NN,其中NN是目标的相对距离伪指令: (标号前加=号,取标号的地址) LDR R0, = SDRDATA实际编译的时候的时候,会在某位置存处SDRDATA的值,然后用一个LDR取出来。显然,用LDR时,加不加=号有很大区别。无=号:取该标号处的值,位置无关有=号:取该标号的地址,位置相关举例分析例1:中断向量跳转_start: b reset ldr pc, _undefined_instruction ldr pc, _software_interrupt ldr pc, _prefetch_abort ldr pc, _data_abort ldr pc, _not_used ldr pc, _irq ldr pc, _fiq_undefined_instruction: .word undefined_instruction_software_interrupt: .word software_interrupt_prefetch_abort: .word prefetch_abort_data_abort: .word data_abort_not_used: .word not_used_irq: .word irq_fiq: .word fiq其中,ldr pc, _irq,由于没加=号,表示取值_irq处的值放在pc里 (位置无关)_irq: .word irq ,表示_irq存放的值是irq的绝对地址(位置有关)例2:bl main ; 位置无关ldr pc, =main; 把main的地址放在pc,位置相关例3: 静态变量_MAGIC_NUM: .word 0x12345678取值 LDR R0, _MAGIC_NUM ; 位置无关例4: 存放标号绝对地址(绝对地址是编译的时候已经固定)_OS_Running_p: .word OS_Runing则_OS_Running_p存放的是标号OS_Running的绝对地址例5: 显式LDR和隐式LDR以给某C中的变量的g_num赋值为例(1) 使用伪指令LDR,即为隐式 LDR R0, =g_num 取g_num的地址到R0 MOV R1, #10 STR R1, R0(2) 显式赋值先定义一个变量p_g_num,用于保存g_num的地址p_g_num: .word g_num g_num的绝对地址然后赋值 LDR R0, p_g_num MOV R1, #10 STR R1, R0显然,两者其实一样,伪指令被展开后其实就是(2)的样子。不同点在于:在多次引用的时候,如果使用伪指令,则会有多个临时定义。所以,在多次引用的时候应该使用显式定义。例6: 使用LinkScript中的变量这种情形和例5相同1) LinkScript中定义了两个位置 _bss_start = .; .bss : *(.bss) _end = .;2) 定义两个变量,用于存处这两个位置.globl _bss_start_bss_start: .word _bss_start.globl _bss_end_bss_end: .w
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年重庆工贸职业技术学院单招职业倾向性考试题库带答案
- 2025广西柳州市救助管理站招聘1人参考题库及一套答案详解
- 2025年河北省省直及部分省辖市事业单位招聘考试真题试卷 公共基础知识及答案详解(必刷)
- 教师教资考试题库及答案
- 2025年甘肃省张掖经济技术开发区管理委员会招聘化工产业集中区应急监管人员参考题库含答案详解(模拟题)
- 2026年河北工业职业技术大学单招职业适应性考试题库带答案
- 2026年青海卫生职业技术学院单招职业适应性测试题库新版
- 2025广东中山市公路事务中心所属事业单位招聘事业单位人员4人参考题库含答案详解ab卷
- 2026年内蒙古化工职业学院单招职业适应性考试必刷测试卷及答案1套
- 2025年湖南张家界桑植县事业单位公开招聘87人参考题库附答案详解(预热题)
- 2025年国家开放大学《体育保健学》期末考试备考试题及答案解析
- 2025四川成都新都投资集团有限公司招聘23人笔试历年参考题库附带答案详解
- 热成像在桥梁检测中的应用-洞察及研究
- 2025年内蒙古自治区直属国有企业招聘考试笔试试题(含答案)
- 化工项目安全设计培训课件
- 中国资源循环集团有限公司子公司招聘笔试题库2025
- 海关安检课件
- 校企合作混合所有制学院协议范本
- 安保安检员人员培训课件
- 《房屋市政工程生产安全重大事故隐患判定标准(2024版)》解读
- 公路试验室租赁合同范本
评论
0/150
提交评论