我想模拟ARM代码。例如,我想运行如下代码:

MOV    R0, #5
ADD    R0, R0, #1
//somehow output R0

它将在我的Ubuntu上的某些软件上输出6。是否可以?

最佳答案

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

步骤2:下载Keil MDK

步骤3:安装MDK

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

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

打开一个终端并输入:
wine ~/.wine/drive_c/Keil/UV4/Uv4.exe

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

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

创建一个COM1链接到串行端口。打开一个终端并输入:
ln -s /dev/ttyS0 ~/.wine/dosdevices/COM1

Keil uVision MDK项目创建和调试:

步骤1:为ARM7目标创建一个Keil UVision项目。

在Keil UVision工具栏中,选择项目->新建项目。

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

输入项目名称,然后单击“保存”。

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

步骤2:为目标创建一个程序集源文件

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

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

    END

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

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

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

选择test.s,然后单击“添加”。 (选择文件类型作为ASM源文件)

步骤4:构建源文件

在Keil UVision工具栏中,选择项目->构建目标或按F7编译源文件。

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

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

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

使用调试键执行代码:

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

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

关于c - 模拟ARM代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14539787/

10-11 22:08