联大大纲—通信—电子
;教师介绍;
单片机课程学习经验-
学习路线图;
1.概述
-应用
-定义
-特点
-构成;
2.嵌入式处理器
—DIY CPU
—处理器
—ARM处理器
—Cortex-A8
—S5PV210
—讨论;
3.汇编语言
-作业
4.Bootloader
-作业
5.Linux内核移植
6.嵌入式Linux程序设计
7.图形用户接口QT
8.其他框架介绍;
9.嵌入式物联网应用系统设计
汇编语言作业
课本2.4.2.3中的代码 ldr r1,=0xE0200280是个伪指令(为什么是伪指令?)。
1、将其翻译(编译)为ARMv7的机器指令
2、写出翻译(编译)过程的伪代码
3、用C语言实现上面的伪代码,函数asmlda(par1,par2)
par1是一个字符串数组,存储伪指令,par2是数组中元素的个数
一种解决办法
进一步的问题:
参数结构是否可以进一步优化?
作业分析
伪指令ldr r1,=0xE0200280的含义是将0xE0200280赋值给寄存器r1
机器指令ldr实现将存储单元的内容读到寄存器,str是将寄存器的内容写到存储单元,mov是将数移动到寄存器。
简单的一个伪指令翻译,如此复杂
编译器的做法
在编译的时候把常量提取出来,放到存储空间中,然后使用 ,这就是编译后的.data段,同时为了方便访问,用寄存器存基址加上偏移量访问(是不是和机器码有直接的对应关系?)
所以有些问题需要总体考虑,考虑架构问题,会使个体局部的操作在框架下,变得简单。