ARM体系结构——如何在MDK上仿真
2016-03-06 00:19
190 查看
今天学习ARM体系结构,记录一下在MDK v4.14中如何仿真,查看寄存器情况。
MDK版本:uVision V4.14.4.0
处理器:Samsung S3C2410A(ARM920T)
开发语言:汇编语言
======================================
步骤及效果如下:
Step1: 打开MDK集成开发环境,新建工程,选择目标设备为S3C2410A,不要添加Startup Code到工程,因为我们这里要自己写汇编程序。
Step2:配置工程选项,如下所示。
Step3: 新建一个汇编文件,注意后缀为s或S,保存并添加到工程,再在该文件输入如下汇编代码。
Step4: 编译,并确认没有Error。
Step5: 进入Debug模式,可以在左边栏查看寄存器及其值,以及ARM当前工作模式等信息,接着单步运行程序,可以看到相关寄存器的值发生变化,也可以打开memory窗口查看内存情况。
上图的详细说明如下:
①、当程序运行到“b .”时,可以发现R2值为0x3,R1值为0x2,R0值为0x1,因为程序就是执行了加法运算,符合我们的预期。(ps:指令“b .”相当于C语言的“while(1)”)
②、PC是程序计数器,指向即将读取的指令,可以看出这里是4字节对齐,说明当前处于ARM状态,而不是Thumb状态。
③、说明ARM启动后处于SVC管理模式。
④、“mov r0, #1”汇编为“E3A00001”,并且对比内存情况发现,数据的低位保存在内存的低地址,即小端模式(Little-Endian)。
======================================
本次实验结束,如需转载请注明出处,谢谢。(2016.03.05)
MDK版本:uVision V4.14.4.0
处理器:Samsung S3C2410A(ARM920T)
开发语言:汇编语言
======================================
步骤及效果如下:
Step1: 打开MDK集成开发环境,新建工程,选择目标设备为S3C2410A,不要添加Startup Code到工程,因为我们这里要自己写汇编程序。
Step2:配置工程选项,如下所示。
Step3: 新建一个汇编文件,注意后缀为s或S,保存并添加到工程,再在该文件输入如下汇编代码。
Step4: 编译,并确认没有Error。
Step5: 进入Debug模式,可以在左边栏查看寄存器及其值,以及ARM当前工作模式等信息,接着单步运行程序,可以看到相关寄存器的值发生变化,也可以打开memory窗口查看内存情况。
上图的详细说明如下:
①、当程序运行到“b .”时,可以发现R2值为0x3,R1值为0x2,R0值为0x1,因为程序就是执行了加法运算,符合我们的预期。(ps:指令“b .”相当于C语言的“while(1)”)
②、PC是程序计数器,指向即将读取的指令,可以看出这里是4字节对齐,说明当前处于ARM状态,而不是Thumb状态。
③、说明ARM启动后处于SVC管理模式。
④、“mov r0, #1”汇编为“E3A00001”,并且对比内存情况发现,数据的低位保存在内存的低地址,即小端模式(Little-Endian)。
======================================
本次实验结束,如需转载请注明出处,谢谢。(2016.03.05)
相关文章推荐
- 如何高性能的给UIImageView加个圆角
- 文章标题
- 20145218《Java程序设计》第一周学习总结
- 图片延迟加载
- insertAfter()
- js 获取url的get传值函数
- innerText兼容处理
- addClass 函数
- hihocoder 八十八 A
- 接口、抽象类
- 《Pro JavaScript Techniques》中的一些函数
- 判断浏览器类型及版本
- 原生ajax
- 封装toDuble (获取时间对象时的补零处理)
- UIView和CALayer有什么关系
- Nyoj 990 蚂蚁感冒(思维)
- 统计java代码文件的代码行数(空行、注释不能计数)
- 每天一个linux命令(51):lsof命令
- html的textarea用作“使用说明框”真的非常适合
- android平台手电筒开发源代码