西安交通大学计算机专业嵌入式系统第一次作业

嵌入式作业 专栏收录该内容
1 篇文章 0 订阅

第一次作业

安装ADS1.2,在CodeWarrior 中make(汇编、连接) 该程序,并将映像文件装入AXD中模拟执行

观察映像文件的组织:

  1. 观察各段的安排次序。

image-20210527151314746

image-20210527153725130

  1. 修改RO Base为0x800,汇编后再观察各段的次序、地址。

image-20210527151603881

image-20210527154107778

image-20210527154133711

  1. 修改RW Base为0xC00,汇编后再观察各段的次序、地址。

image-20210527154442602

image-20210527154524981

  1. 观察MyZIData数据段是否存在,为什么?

​ 观察到MyZIData数据段存在,但在仿真阶段仿真器给没有被使用的数据单元赋随机值,故没有被初始化为0

image-20210528074730793

  1. 调整源代码中各段顺序,汇编后再观察各段的次序、地址。

    交换数据段和代码段的位置,汇编后各段次序不变

交换前:

image-20210528075220460

image-20210527153725130

交换后:

image-20210528075150532

image-20210527163252595

  1. 改变各段对齐方式,改变各数据段长度,再进行观察,总结对齐规律。

AREA MyZIData,DATA,READWRITE,NOINIT,ALIGN=4 DateSpace SPACE 40 ;从DateSpace地址开始,分配40个单元并初始化为0

改为

AREA MyZIData,DATA,READWRITE,NOINIT,ALIGN=5 DateSpace SPACE 40 ;从DateSpace地址开始,分配40个单元并初始化为0

ALIGN由4变为5

而ZI数据段的大小有12行变为16行

改变前:40<16 * 3=48=4 *12

​ 40 < 32 * 2 = 64 =16 * 4

12行

image-20210528075611032

观察伪指令“LDR R0,=0x53002345”及其它指令

  1. 有没有文字池,若有,观察文字池的地址及内容。

代码段后面开辟了文字池,并且有最小长度限制

image-20210528093640431

“LDR R0, 0X00000020”实际是基址+变址的寻址方式,带有一个偏移量作为变址。反汇编给出“LDR R0, 0X00000020”像是直接寻址,但ARM指令长度只有32位,不能实现直接寻址,所以实际基址+变址实现。这一点可以在机器指令中看到。汇编后的机器指令是e59f0018,编译地址为18,当前pc=8,所以绝对地址为20.反汇编给出指令“LDR R0, 0X00000020”其实只是示意,因为机器指令中没有地址“20”这个绝对地址;

另外,后几条LDR伪指令的汇编。比如LDR R2,=Str1,虽然str1可以写成8+4的立即数,但仍然采用文字池的汇编方法,而不是采用mov。

  1. 观察这些指令对应的机器指令,说明对应的汇编指令及寻址方式

    ldr  r0,0x00000020  ;  =  #0x53002345
    

    对应

    LDR R0,=0x53002345
    
	mov  r1,#0								  对应                 LDR		R1,=0x0
	str  r1,[r0,#0]							  对应                 STR		R1,[R0]		;红字汇编指令,其它伪指令
	ldr      r2,0x00000024 ; = #0x00000040    对应                 LDR		R2,=Str1
	ldr      r3,0x00000028 ; = #0x00000080    对应                 LDR		R3,=Str2
	ldr      r4,0x0000002c ; = #0x000000a0    对应                 LDR		R4,=Str3
	ldr      r5,0x00000030 ; = #0x000000c0    对应                 LDR		R4,=Str3
	b        0x1c  ; (Image$$RO$$Base + 0x1c) 对应                 B           .           ; . 表示当前地址,死循环
寻址方式均为基址加变址

单步执行,观察寄存器情况。

image-20210528100451647image-20210528100503044image-20210528100516672image-20210528100531374![

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传image-20210528100829514

  • 3
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页

打赏作者

李汪才

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值