课程列表

基本问题

开源资源

好好学习天天向上

联大大纲—通信电子 ;教师介绍; 单片机课程学习经验- 学习路线图; 1.概述 -应用 -定义 -特点 -构成; 2.嵌入式处理器 —DIY CPU处理器ARM处理器Cortex-A8S5PV210讨论; 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段,同时为了方便访问,用寄存器存基址加上偏移量访问(是不是和机器码有直接的对应关系?)

所以有些问题需要总体考虑,考虑架构问题,会使个体局部的操作在框架下,变得简单。