我正在从教科书中学习ARM处理器……

我认为如果我可以在ARM模拟器上应用我学到的东西会更有用…编写代码然后观察结果和不同的执行阶段会更有趣……

我已经搜索过了,但我找到的只是linux上的免费软件或Windows上的演示

是否有模拟器允许我查看在Windows上运行的ARM处理器(任何版本!)的执行步骤和不同更改?

谢谢

我有一个拇指模拟器,应该编译任何地方,Windows,Linux,Mac,等等. thumbulator.blogspot.com.添加一些printfs,无论你想看到什么,你都是金色的.例如,ARMs模拟器装配器,在许多地方以源形式提供,例如在gdb源中. qemu效果很好,但很难“看到你的代码”.最好的方法是为arm核心创建一个hdl源(例如verilog)并创建vcd文件或其他波形格式.除非你为一家拥有嵌入式设备的芯片公司工作,否则你可能不会找到它.我可能错了,但我认为ARM的所有开臂核心都很快就被取消了.

妈妈有一两个手臂核心.视觉男孩前进有一个手臂核心. nds仿真器有arm核心.

或者你可以做我用缩略图做的事情并自己编写,我发现它比让其他人向我展示我想看的东西更容易.当然我很懒,只做拇指指令集模拟器而不是全臂模拟器.这并不困难,只是耗费时间.

编辑

好的,我的立场得到纠正.谷歌的话verilog. isc.tgz包含一个手臂的行为模型模型,它可以编译并运行icarus verilog(免费).

注释掉所有$save_store();行(就像C使用//).

添加几行代码到testarm.v(在arm10之后和初始开始之前).

初始
开始
$转储文件( “test.vcd”);
$dumpvars(0,ARM10);
结束

永远#50000 $完成;

然后

iverilog -o hello testarm.v arm10.v

vvp你好

它将运行50000单位的时间,完成SIM卡并关闭vcd文件.要使SIM卡更长或更短,请更改总是#50000线.

获取gtkwave(免费)的副本以查看vcd文件.使用gtkwave是另外一篇文章,你需要点击test_arm旁边的标志,然后点击那里的arm10,在信号下点击说addr_bus突出显示该行,然后点击追加框,点击在data_bus上,点击追加按钮,可能会添加一些寄存器,r1,r2等.有一个工具栏,你也可以使用菜单时间 – > zoom-> zoom full,这是我安装的ALT-F .然后你将学习如何放大和缩小事物.

从个人经验来看,你不会“看到你的代码”比使用hdl模拟器更好.实际上,一旦你习惯了这一点,你可能很难在硅片上运行,你几乎看不到任何东西.

我做的不仅仅是运行该行为模型中包含的测试程序.不知道你能做什么或不能做什么.

verilog $readmemh非常简单,它只是想读取十六进制行到指定的内存中.因此,您可以轻松地创建一个工具来获取编译后的arm代码并创建verilog模拟所需的ascii文件.

程序集 – Windows上的ARM模拟器的更多相关文章

  1. 将Trickle移植到android

    >如何告诉编译器链接我之前为android交叉编译的共享库,以便为android生成最终的可执行命令行应用程序.而且这甚至可以在Android上移植涓流?

  2. android – PANIC:’arm’CPUS缺少模拟器引擎程序

    我得到了与下面链接中提到的相同的问题.但是这个问题已被搁置,我仍在寻求解决方案.https://stackoverflow.com/questions/27146511/panic-missing-emulator-engine-program-for-arm-cpus-eclipse所以我想提出这个问题并在这里问一下.直到昨天,模拟器工作正常.但是从今天起,我在尝试打开模拟器时收到以下错误我的A

  3. Android是否真的存在于ARM之外的其他平台上?

    我想将用C编写的应用程序移植到android.将应用程序从C转换为Java将需要大量工作,我更愿意使用该应用程序更好地为该平台,而不是修复转换错误和解决重构问题.NDK似乎是一条很好的路线,但实际上我不想错过一个平台只是因为NDK不支持或不支持它.Android声称支持MIPS,ARM,X86和其他……是否有任何运行或将运行Android的非ARM设备?

  4. android – 关于arm-eabi-gcc和交叉编译

    如果是的,然后问题2:我正在尝试编译这样一个库:libao.使用这些命令:在组装结束时收到以下内容:configure:错误:在此平台上找不到16位类型!如何修复和正确配置库?

  5. Android模拟器ABI

    序言:这个问题已经过时了.创建Android虚拟设备时,可以选择cpu/ABI.我已经尝试了所有可用的目标–除了ARM之外别无选择.我的目标是Android3.2.我假设这是为了在x86上模拟平板电脑或上网本.那些甚至存在于硬件中吗?编辑:在AndroidToolsv17中,API级别10下有一个可选的IntelAtomx86映像.编辑2:ARMv7a现在也在那里.到目前为止没有MIPS.EDIT3:MIPS仿真器和图像现在也可用.等待一些新架构(ARMv8?

  6. 如何强制Android应用程序使用32位或64位库

    在具有64位ARM的Android设备上,将有两个版本的库,32位和64位,它们的性能可能会有所不同.我想知道是否有办法强制应用程序使用32位或64位库.解决方法安装apk时可以指定ABI.adbinstall–abi

  7. Android NDK – 它支持直接ARM代码或只支持Thumb

    我被要求评估我们的产品的Android平台,我正在看各种选项,我只是刚刚刮目前的表面,一件事令我困扰的是,我看不到如何编译代码作为直接的ARM代码,我知道Thumb运行速度较慢,我们将需要在代码的关键部分的性能.我认为应该只是在Android.mk文件的LOCAL_CFLAGS中设置-march标志,但是我不能让它工作…解决方法在Android.mk中为模块指定以下标志将编译直接的ARM代码.启用优化也可能有助于:

  8. 如何在Android项目中使用ARM汇编代码?

    我对Assembly和ARM没有特别的经验,但是我可以在其中编写一些例程,我想看看它们是如何在装有ARM的Android设备上运行的.将程序代码文件包含在Android项目中的程序是什么?我可以只从本机代码或从Java调用吗?

  9. android-ndk – 使用arm-linux-androideabi-gcc编译对象的问题

    背景OSX是OS>R8NDK我正在使用AndroidGCC编译器来编译下面的类…我用以下命令做…所以由于缺乏gcc知识,我发现这一点,并尝试…有人可以帮我做我做错了吗?我错过了一个链接吗?解决方法您必须告诉GCC在哪里找到Android系统文件和标题.使用:>ndk-build和一个带有BUILD_EXECUTABLE的Android.mk>或–sysrootGCC选项[1][2]

  10. iOS逆向工程之Hopper中的ARM指令详解

    这篇文章主要介绍了iOS逆向工程之Hopper中的ARM指令的相关资料,本文介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下

随机推荐

  1. static – 在页面之间共享数据的最佳实践

    我想知道在UWP的页面之间发送像’selectedItem’等变量的最佳做法是什么?创建一个每个页面都知道的静态全局变量类是一个好主意吗?

  2. .net – 为Windows窗体控件提供百分比宽度/高度

    WindowsForm开发的新手,但在Web开发方面经验丰富.有没有办法为Windows窗体控件指定百分比宽度/高度,以便在用户调整窗口大小时扩展/缩小?当窗口调整大小时,可以编写代码来改变控件的宽度/高度,但我希望有更好的方法,比如在HTML/CSS中.在那儿?

  3. 使用Windows Azure查询表存储数据

    我需要使用特定帐户吗?>将应用程序部署到Azure服务后,如何查询数据?GoogleAppEngine有一个数据查看器/查询工具,Azure有类似的东西吗?>您可以看到的sqlExpressintance仅在开发结构中,并且一旦您表示没有等效,所以请小心使用它.>您可以尝试使用Linqpad查询表格.看看JamieThomson的thispost.

  4. windows – SetupDiGetClassDevs是否与文档中的设备实例ID一起使用?

    有没有更好的方法可以使用DBT_DEVICEARRIVAL事件中的数据获取设备的更多信息?您似乎必须指定DIGCF_ALLCLASSES标志以查找与给定设备实例ID匹配的所有类,或者指定ClassGuid并使用DIGCF_DEFAULT标志.这对我有用:带输出:

  5. Windows Live ID是OpenID提供商吗?

    不,WindowsLiveID不是OpenID提供商.他们使用专有协议.自从他们的“测试版”期结束以来,他们从未宣布计划继续它.

  6. 如果我在代码中进行了更改,是否需要重新安装Windows服务?

    我写了一个Windows服务并安装它.现在我对代码进行了一些更改并重新构建了解决方案.我还应该重新安装服务吗?不,只需停止它,替换文件,然后重新启动它.

  7. 带有双引号的字符串回显使用Windows批处理输出文件

    我正在尝试使用Windows批处理文件重写配置文件.我循环遍历文件的行并查找我想要用指定的新行替换的行.我有一个’函数’将行写入文件问题是%Text%是一个嵌入双引号的字符串.然后失败了.可能还有其他角色也会导致失败.如何才能使用配置文件中的所有文本?尝试将所有“在文本中替换为^”.^是转义字符,因此“将被视为常规字符你可以尝试以下方法:其他可能导致错误的字符是:

  8. .net – 将控制台应用程序转换为服务?

    我正在寻找不同的优势/劣势,将我们长期使用的控制台应用程序转换为Windows服务.我们为ActiveMQ使用了一个叫做java服务包装器的东西,我相信人们告诉我你可以用它包装任何东西.这并不是说你应该用它包装任何东西;我们遇到了这个问题.控制台应用程序是一个.NET控制台应用程序,默认情况下会将大量信息记录到控制台,尽管这是可配置的.任何推荐?我们应该在VisualStudio中将其重建为服务吗?我使用“-install”/“-uninstall”开关执行此操作.例如,seehere.

  9. windows – 捕获外部程序的STDOUT和STDERR *同时*它正在执行(Ruby)

    哦,我在Windows上:-(实际上,它比我想象的要简单,这看起来很完美:…是的,它适用于Windows!

  10. windows – 当我试图批量打印变量时,为什么我得到“Echo is on”

    我想要执行一个简单的批处理文件脚本:当我在XP中运行时,它给了我预期的输出,但是当我在Vista或Windows7中运行它时,我在尝试打印值时得到“EchoisOn”.以下是程序的输出:摆脱集合表达式中的空格.等号(=)的两侧可以并且应该没有空格BTW:我通常在@echo关闭的情况下启动所有批处理文件,并以@echo结束它们,所以我可以避免将代码与批处理文件的输出混合.它只是使您的批处理文件输出更好,更清洁.

返回
顶部