工欲善其事,必先利其器。 使用Qemu 虽然可以进行模拟开发,但在Qemu调试汇编有一些困难。
DS-5 (即ARM Development Studio 5) ,是一款针对 ARM 支持的 Linux 和 Android 平台的全面的端到端软件开发工具套件。
DS-5 安装
- 从官网选择一个ARM DS-5版本进行下载
我选择的版本是5.26.2, 已经支持Arm v8了。
下载完成后,解压, 点击setup.exe 进行安装, 安装完成后需要添加license, 否则项目无法编译。
license添加完成后既可以正常使用。
##使用DS-5 创建程序
-
首先新建一个空的C project, 输入project name, 选择tool chains为Arm compiler 6。
-
右击刚才新建的project, 添加source file
新增一个C文件 main.c 和一个汇编文件 asm_add.s。写一个很简单的a + b =c的程序。代码的核心部分使用汇编实现,C程序主要是入口以及检查结果的准确性。
主程序:
汇编部分:
- 代码编译
在编译之前需要预先做一些配置, 右击项目, 点击属性,选择C/ C++ build
选择设置, 将All Tools settings下的target CPU更改为arm v8:
将ARM linker6 中的Image_layout 改为如下配置:
应用这些修改后, 右击项目, 选择build project:
如果编译成功, 会在Debug目录下生成object 和 axf文件。
- DEBUG 设置
选择run-> debug configuration
右击DS-5 debugger, 新建debug 配置
connection 选择 arm v8-a
files选择刚刚编译出来的axf文件:
debugger选择从main开始, 然后apply, 再然后点击debug
- 运行
点击debug 后,生成如下的界面
点击左上角的开始按钮, 会从左下角的光标位置开始运行, 右上角可以看程序的寄存器河内存信息, 右下角可以看程序的运行结果。
选择单步调试,当运行到汇编部分时,查看寄存器状态
可以看到,当运行到ADD w0, w0, w1那一步时,core寄存器的x0, x1已经变成了预设的2和3.
最终结果: