纯python arm处理器模拟器

armulator的Python项目详细描述



纯python arm模拟器

开始

先决条件

唯一需要的包是“bitstring”。
要运行测试,需要“pytest”。

```
PIP安装位串
pip安装pytest
```

安装

安装“扶手架”非常简单。你需要做的就是:

```
PIP安装支架
```

用法

要创建处理器对象,需要先导入它:
```
来自armulator.arm v6.arm_v6导入armv6
```

然后您可以创建它:

```
臂=ARMV6()
```
要真正使用处理器,必须熟悉内存控制器的概念。
这一概念的主要思想是,有一个“集线器”,您可以连接多个控制器。
一个“内存控制器”可以是一个内存棒、内存映射LCD屏幕或任何你想要的东西。

例如,让我们创建一个RAM控制器:

```
从armulator.armv6.memory_type导入RAM
来自armulator.armv6.memory_controller_hub import memory controller
内存=内存(0x100)
mc=内存控制器(mem,0xf000000,0xf0001000)
arm.mem.memories.append(mc)
```

现在,任何试图访问0xf000000到0xf0001000之间的内存的尝试都将访问“mem”对象。
您还可以手动更改内存:

```
内存写入(0,2,“\xfe\xe7”)
```

另一个有用的功能是使用内存保护或管理单元,
例如,取消内存保护看起来像:
```
arm.registers.sctlr.set_m(错误)
手臂复位()
```
请注意,更改内部功能后,建议重新设置处理器。

运行armulator时,可能需要从定义的地址开始,因此:
```
从位字符串导入位数组
arm.registers.branch_to(位数组(uint=0x100,length=32))
```

我们需要做的最后一件事是真正运行处理器,它可以使用:
```
arm.emulate_cycle()
```


运行测试

使用pytest可以轻松地运行测试:

```
python-m pytest测试-vv
```

不久将添加更多测试。



*[位字符串](http://scott-griffiths.github.io/bitstring/)-用于位操作

作者

**matan perelman**-[matan1008](https://github.com/matan1008)

许可证

此项目是根据麻省理工学院许可证授权的-有关详细信息,请参阅[license.md](license.md)文件

致谢

*起初,我这样做是为了更好地学习ARM体系结构我想我是被迷住了。
*请随时报告错误。
*请随意要求更多功能。

关键词:arm模拟器
平台:未知
分类器:开发状态::3-alpha
分类器:编程语言::Python::2
分类器:编程语言::Python::2.7

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java:在迭代器类型(接口/实现类)之间转换?   java“Click Method”不断返回“Stale Element Exceoption”?   Android应用程序/进程的java生命周期?   java在发布消息时收到“无法识别的Windowssocket错误:0:recv失败”   java如何返回第二个值   java将基本授权头添加到一些请求中   使用改型安卓的java Post请求错误   PropertyPlaceHolderConfigure位置内的java Spring占位符   java是导入com的工具。谷歌。安卓gms。gcm无法解决,Google Play服务已经安装   java如何获取JSON数据的多个可选值?   java如何使用ApachePOI从word中的形状读取文本   安卓 java。Eclipse中的lang.NoClassDefFoundError,但不适用于Ant   如何在Java中用stream()将Map<v1,Set<v2>>转换为Map<v2,Set<v1>>   循环在java中循环时,如何从数组列表中删除某些内容?