我对Skyeye-1.0.0的一点点改进地方思考:
在armemu.c中STR/LDR调用的函数中总有//存储数据地址错误
if (VECTORACCESS (address) || ADDREXCEPT (address))
//#define ADDREXCEPT(address) (address > LEGALADDR && !state->data32Sig)
//#define LEGALADDR 0x03ffffff
//我觉得这点有个小小的错误。假如是一个字的话并且是little-endian,那么address> LEGALADDR-4地址就应该是错误的。
//而且我觉得这是一个Bug,它只能选择一个64M的空间,那么模拟的开发板的存储空间或者IO地址超过这个范围那么对IO地址的访问就会出现错误的结果。 呵呵 ,我又看了几次
发现原来的sim/arm/armvirt.c中getword 和putword中介绍了arm4G地址空间的计算方法。看来if (VECTORACCESS (address) || ADDREXCEPT (address)) 不是地址空间。以前理解错误了
页:
[1]