Windows环境下ARM汇编练习环境的搭建(CodeWarrior for ARM Developer Suite)
本篇文章的目的是让ARM汇编初学者以一个比较简单的方式得到一个能够运行ARM汇编指令的环境,以协助理解学习ARM汇编,因为我最近刚学习ARM汇编,看了一堆语法但仍然是懵懵的,就很想有一个环境能够写一写代码执行一下看看效果。
看网上都是用keil的较多,但是感觉那个配置起来比较复杂,我是看一个课程里面有位老师用的这个IDE,看上去非常简单易用,感觉很nice于是就用了这个。
下载CodeWarrior for ARM Developer Suite v1.2,按照文件内的说明安装即可。
安装完成后启动:
界面是这样的:
先创建一个项目:
项目类型就选第一个,然后设置项目名称和保存位置:
创建完弹出一个窗口,这个就是项目管理窗口,看起来有点老式风格,因为这款软件确实很老...
然后为这个项目创建一个test.s的文件,等下要在这个test.s文件内编写汇编代码,仍然是File-->New:
这次需要切换到File选项卡,输入文件名称,需要注意的是因为这里的文件类型只有Text File,这个IDE是把所有源码都看作是文本类型的,因此在指定File name的时候需要同时指定文件的后缀名,然后指定文件保存的路径,然后勾选Add to project,选择刚刚创建的项目,然后把Target一股脑儿都勾选上:
点击确定后会弹出一个源码编辑窗口,调整一下布局,现在界面是这个样子了:
编写汇编指令的模板是这个样子:
AREA test, CODE, READONLY ENTRY START ; 这是模板,在这里写ARM汇编指令 END
可以把这段模板粘贴带代码编辑窗口,然后修改注释部分为想要实验的汇编指令。
在源码编辑窗口中编辑汇编代码,这里就以一个计算1+1=2的例子,代码如下:
AREA test, CODE, READONLY ENTRY START MOV R0, #0x1 MOV R1, #0x1 ADD R2, R0, R1 END
下个断点:
然后在项目管理窗口中选择这个文件,以debug模式运行:
会弹出一个新的窗口,这个窗口就是一个虚拟仿真系统,用来模拟ARM环境运行此程序,调整窗口的布局看起来更舒服一些:
刚才那个寄存器面板是单击工具栏中的这个按钮打开面板,然后展开里面的current得到的,current让我们不需要关心现在到底处在什么模式下,反正我就要看寄存器的值:
这个工具的视图调整不是特别流畅,我发现我多次单击同一个按钮竟然把一个面板打开了多次...如果某个面板不想看到,在其标题栏的空白处右击,然后close即可。
接下来步进执行程序:
可以看到蓝色光标向下移动了一条指令,同时pc寄存器的值也跟着发生了改变,刚才pc寄存器的值是0x8000,现在变成了0x8004,因为我们是ARM模式,每条指令32位,正好是4个字节,所以每执行完一条指令pc寄存器的值往前移动4个字节。同样变红色的还有r0,因为MOV R0, #0x1这条指令将1赋值给R0,同时我们也明白寄存器标为红色表示提醒我们这个寄存器的值在上一条指令执行完发生了改变。
让我们继续step,执行完MOV R1, #0x1之后,现在寄存器R1的值也被赋值了1,同时pc寄存器继续移动:
然后继续step,执行完ADD R2, R0, R1之后,寄存器R2的被赋值为2,至此完成了1+1=2的运算:
其它指令的理解请自行调试练习。