模拟ARM代码

goo*_*ing 8 c linux ubuntu arm

我想模拟ARM代码.例如,我想运行这样的代码:

MOV    R0, #5
ADD    R0, R0, #1
//somehow output R0
Run Code Online (Sandbox Code Playgroud)

它会在我的Ubuntu上的某些软件上输出6.可能吗?

Ign*_*ams 10

如果将其构建为实际可执行文件,则可以使用QEMU的ARM模拟器来运行它.


Pra*_*lix 10

Keil MDK可用于模拟ARM代码.它提供了一个Simulate/Debug透视图,可用于探测ARM寄存器集,内存内容等...

MDK-Lite评估版免费提供,最大代码大小为32KB.

Linux版本的MDK不可用.但Keil MDK 在Ubuntu中与WINE完美配合.


在WINE上安装Keil uVision MDK:

第1步:在Ubuntu上安装wine

打开终端并输入:

sudo apt-get install wine
Run Code Online (Sandbox Code Playgroud)

第2步:下载Keil MDK.

第3步:安装MDK

右键单击MDK可执行文件,然后选择" 使用Wine Windows程序加载器打开 "选项.

第4步:在Ubuntu上调用Keil uVision MDK

打开终端并输入:

wine ~/.wine/drive_c/Keil/UV4/Uv4.exe
Run Code Online (Sandbox Code Playgroud)

第5步:安装Flash Magic(可选)

Flash Magic是一个用于下载Keil板软件的工具.下载Flash Magic Software并将其安装在wine上(参见前面的步骤).

创建到串行端口的COM1链接.打开终端并输入:

ln -s /dev/ttyS0 ~/.wine/dosdevices/COM1
Run Code Online (Sandbox Code Playgroud)

Keil uVision MDK项目创建和调试:

步骤1:为ARM7目标创建Keil UVision项目.

在Keil UVision工具栏中,选择Project - > New Project.

导航到要创建此项目的位置.

输入项目名称,然后单击" 保存".

选择ARM - > ARM7(Little Endian)作为Target的设备.单击确定.

第2步:为目标创建程序集源文件

在Keil UVision工具栏中,选择File - > New.将以下代码添加到新创建的文件中:

    AREA text, code, readonly
    ENTRY

    MOV    R0, #5
    ADD    R0, R0, #1

    END
Run Code Online (Sandbox Code Playgroud)

如上所述,在每个汇编语句之前提供制表空间.使用".s"扩展名保存文件.

第3步:将源文件添加到项目中

在"项目"窗口(位于UVision的左侧)中,右键单击" 源组1",然后选择" 将文件添加到组源组1 "选项.

选择test.s并单击"添加".(选择文件类型作为ASM源文件)

在此输入图像描述

第4步:构建源文件

在Keil UVision工具栏中,选择Project - > Build target或按F7编译源文件.

第5步:模拟/调试应用程序

在Keil UVision工具栏中选择Debug - > Start/Stop Debug Session或按Ctrl + F5.

调试透视图打开,左侧是Register视图,中间是Code View,右下方是Memory视图等...

在此输入图像描述

使用调试键执行代码:

在此输入图像描述

在程序执行结束时观察寄存器视图:

在此输入图像描述

在Keil UVision工具栏中选择Debug - > Start/Stop Debug Session或按Ctrl + F5退出Debugging Perspective.