arm fastmodel工具介绍
0赞arm公司,有一款arm指令集仿真工具,名叫fastmodel。该model,可以用来仿真arm的程序,并且打印程序的执行流。不过该工具是收费的。
以下是fastmodel的帮助信息。
其中有用的一些选项:
-a |
指定装载的ELF可执行程序 |
-S |
开启CADI server,允许modeldebugger工具调试 |
-f |
指定model的配置文件 |
-t |
打印tarmac文件 |
fastmodel工具,可以仿真arm的众多架构,众多CPU的指令集,因为需要使用配置文件,对所仿真arm的硬件进行配置。
如以下是一个配置文件的一部分信息:
如cpu.NUM_CORES=0X1, 表示仿真硬件,只有1个CPU。
通过该配置文件,将仿真的ARM硬件进行配置好,然后就可以使用fastmodel工具,进行可程序的仿真。
命令
VAL_VAL_AEMv8A –f cpu_config.cfg –t –a hello.elf > hello.tmc
该命令,载入cpu_config.cfg配置文件,配置硬件环境,然后载入hello.elf可执行程序,进行仿真,并将指令执行结果,打印到hello.tmc文件中。
对于tarmac文件,该文件保存了每条指令的执行结果。
对于每一条指令,有几个字段:
第一,第二个字段 |
仿真cycle数 |
第三个字段 |
指令类型: IT: 普通指令 IS: 跳转指令 |
第四个字段 |
当前指令条数 |
第五个字段 |
PC值,如果VA和PA相等,只会显示一个, 如果不等,显示为 VA:PA |
第六个字段 |
二进制指令码 |
第七个字段 |
架构。 O: A64架构 A: A32架构 T: thumb架构 |
第八个字段 |
对于AArch64,为exception EL和secure state 对于AArch32,为exception mode和secure state |
第九个字段 |
反汇编 |
在每条指令的后面,会显示指令的执行结果。如 mov x0, #0x30, 会将x0的值设置为0x30,因此在指令后一行,会显示x0的值为0x30.
以上是A64的tarmac显示结果。
下面是A32的tarmac显示结果。
下面是T32的tarmac显示结果。
fastmodel,提供了一个图形化界面,modeldebugger工具,来进行程序的图形化调试。
需要在fastmodel命令中,加入-S选项。开启CADI server。
启动modeldebugger工具
选择 connect to model
选择刚刚创建的CADI server。
会弹出选择界面,选择第一个。
载入之后,就可以仿真了,中间是指令码,右边是系统状态,左下角是变量值,右下角是memory的值。
仿真使用,和其他的仿真工具使用一样了,可以单步,可以设置断点进行仿真。
更多关于fastmodel的信息,可以去arm的官网(http://infocenter.arm.com/help/index.jsp),下载fastmodel的文档进行深入了解。