ARM aarch64汇编学习笔记(二):ARM DS-5模拟器安装和使用

工欲善其事,必先利其器。 使用Qemu 虽然可以进行模拟开发,但在Qemu调试汇编有一些困难。
DS-5 (即ARM Development Studio 5) ,是一款针对 ARM 支持的 Linux 和 Android 平台的全面的端到端软件开发工具套件。

DS-5 安装

  1. 从官网选择一个ARM DS-5版本进行下载
    这里写图片描述

我选择的版本是5.26.2, 已经支持Arm v8了。
下载完成后,解压, 点击setup.exe 进行安装, 安装完成后需要添加license, 否则项目无法编译。
这里写图片描述

license添加完成后既可以正常使用。

##使用DS-5 创建程序

  1. 首先新建一个空的C project, 输入project name, 选择tool chains为Arm compiler 6。
    这里写图片描述

  2. 右击刚才新建的project, 添加source file
    这里写图片描述

新增一个C文件 main.c 和一个汇编文件 asm_add.s。写一个很简单的a + b =c的程序。代码的核心部分使用汇编实现,C程序主要是入口以及检查结果的准确性。

主程序:
这里写图片描述

汇编部分:
这里写图片描述

  1. 代码编译
    在编译之前需要预先做一些配置, 右击项目, 点击属性,选择C/ C++ build
    这里写图片描述

选择设置, 将All Tools settings下的target CPU更改为arm v8:
这里写图片描述

将ARM linker6 中的Image_layout 改为如下配置:
在这里插入图片描述

应用这些修改后, 右击项目, 选择build project:
这里写图片描述

如果编译成功, 会在Debug目录下生成object 和 axf文件。

  1. DEBUG 设置
    选择run-> debug configuration
    这里写图片描述

右击DS-5 debugger, 新建debug 配置
connection 选择 arm v8-a
这里写图片描述

files选择刚刚编译出来的axf文件:
这里写图片描述

debugger选择从main开始, 然后apply, 再然后点击debug
这里写图片描述

  1. 运行
    点击debug 后,生成如下的界面
    这里写图片描述

点击左上角的开始按钮, 会从左下角的光标位置开始运行, 右上角可以看程序的寄存器河内存信息, 右下角可以看程序的运行结果。

选择单步调试,当运行到汇编部分时,查看寄存器状态
这里写图片描述

可以看到,当运行到ADD w0, w0, w1那一步时,core寄存器的x0, x1已经变成了预设的2和3.

最终结果:
这里写图片描述

SimIt-ARM-3.0 给予命令行ARM指令模拟器,短小精悍,是研究ARM处理器的好工具,该模拟器既可以运行用户级别的ELF程序,又可以模拟运行Linux操作系统;提供了简单易用的调试命令,可以逐条跟踪指令的执行。 SimIt-ARM-3.0-gk-20150902.tar.bz2 HowTo 0.what is SimIt-ARM-3.0 SimIt-ARM 3.0 is an instruction-set simulator that runs both system-level and user-level ARM programs, for more about it please read user's guide file. 1.how to build tar jxvf SimIt-ARM-3.0-gk-20150902.tar.bz2 cd SimIt-ARM-3.0-gk ./configure make make install After these steps, the ./build/bindirectory contains the following programs: ema An ARM interpreter. To test the installation was successful type ./build/bin/ema test/wc configure modifiy PATH environment variable: PATH=$PATH:$HOME/SimIt-ARM-3.0-gk/build/bin ; export PATH 2. how to use 2.1 run user-level ARM programs [root@ORA9 SimIt-ARM-3.0-gk]# cd gcc-asm [root@ORA9 gcc-asm]# more hello.c /* * hello.c * Tue Sep 8 10:13:40 CST 2015 */ int main() { printf("hello world\n"); __asm("mov r0,#2\n\t" "swi 0x1\n\t"); // syscall: exit(2); } [root@ORA9 gcc-asm]# arm-linux-gcc -v Reading specs from /usr/local/arm/3.4.1/bin/../lib/gcc/arm-linux/3.4.1/specs Configured with: /opt/crosstool/crosstool-0.28/build/arm-linux/gcc-3.4.1-glibc-2.3.2/gcc-3.4.1/configure --target=arm-linux --host=i686-host_pc-linux-gnu --prefix=/opt/crosstool/arm-linux/gcc-3.4.1-glibc-2.3.2 --with-float=soft --with-headers=/opt/crosstool/arm-linux/gcc-3.4.1-glibc-2.3.2/arm-linux/include --with-local-prefix=/opt/crosstool/arm-linux/gcc-3.4.1-glibc-2.3.2/arm-linux --disable-nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit --enable-languages=c,c++ --enable-shared --enable-c99 --enable-long-long Thread model: posix gcc version 3.4.1 [root@ORA9 gcc-asm]# arm-linux-gcc hello.c -o hello -static [root@ORA9 gcc-asm]# ls -l hello* -rwxr-xr-x 1 root root 520775 Sep 8 10:18 hello -rw-r--r-- 1 root root 160 Sep 8 10:15 hello.c [root@ORA9 gcc-asm]# file hello hello: ELF 32-bit LSB executable, ARM, vers
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值