📄 armtest.cpp
字号:
//--------------------------------------------------------
Core::Wukong_Get_System().load_binary((Core::Binary_Loader &)(*loader), "ARM", "swpb_1.axf");
( (ARM::CPU_7TDMI *) Core::Wukong_Get_System().get_cpu() )->run();
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->\
get_mmu().access(Memory_32Bit::MEMORY_READ,0xe0,4,buf);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(1,r1);
buf0 = buf[0];
buf1 = buf[1];
buf2 = buf[2];
buf3 = buf[3];
CPPUNIT_ASSERT( buf0 == 0x01);
CPPUNIT_ASSERT( buf1 == 0x00);
CPPUNIT_ASSERT( buf2 == 0x00);
CPPUNIT_ASSERT( buf3 == 0x10);
CPPUNIT_ASSERT( r1 == 0x00000002);
//--------------------------------------------------------
Core::Wukong_Get_System().load_binary((Core::Binary_Loader &)(*loader), "ARM", "swpb_2.axf");
( (ARM::CPU_7TDMI *) Core::Wukong_Get_System().get_cpu() )->run();
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->\
get_mmu().access(Memory_32Bit::MEMORY_READ,0xe0,4,buf);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(1,r1);
buf0 = buf[0];
buf1 = buf[1];
buf2 = buf[2];
buf3 = buf[3];
CPPUNIT_ASSERT( buf0 == 0x02);
CPPUNIT_ASSERT( buf1 == 0x01);
CPPUNIT_ASSERT( buf2 == 0x00);
CPPUNIT_ASSERT( buf3 == 0x10);
CPPUNIT_ASSERT( r1 == 0x0);
//--------------------------------------------------------
Core::Wukong_Get_System().load_binary((Core::Binary_Loader &)(*loader), "ARM", "swpb_3.axf");
( (ARM::CPU_7TDMI *) Core::Wukong_Get_System().get_cpu() )->run();
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->\
get_mmu().access(Memory_32Bit::MEMORY_READ,0xe0,4,buf);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(1,r1);
buf0 = buf[0];
buf1 = buf[1];
buf2 = buf[2];
buf3 = buf[3];
CPPUNIT_ASSERT( buf0 == 0x02);
CPPUNIT_ASSERT( buf1 == 0x00);
CPPUNIT_ASSERT( buf2 == 0x01);
CPPUNIT_ASSERT( buf3 == 0x10);
CPPUNIT_ASSERT( r1 == 0x0);
//--------------------------------------------------------
Core::Wukong_Get_System().load_binary((Core::Binary_Loader &)(*loader), "ARM", "swpb_4.axf");
( (ARM::CPU_7TDMI *) Core::Wukong_Get_System().get_cpu() )->run();
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->\
get_mmu().access(Memory_32Bit::MEMORY_READ,0xe0,4,buf);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(1,r1);
buf0 = buf[0];
buf1 = buf[1];
buf2 = buf[2];
buf3 = buf[3];
CPPUNIT_ASSERT( buf0 == 0x02);
CPPUNIT_ASSERT( buf1 == 0x00);
CPPUNIT_ASSERT( buf2 == 0x00);
CPPUNIT_ASSERT( buf3 == 0x01);
CPPUNIT_ASSERT( r1 == 0x10);
#endif
//____________________________________________________________________________
//--------------------------------------------------------
#ifdef WORD
Core::Wukong_Get_System().load_binary((Core::Binary_Loader &)(*loader), "ARM", "word.axf");
( (ARM::CPU_7TDMI *) Core::Wukong_Get_System().get_cpu() )->run();
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(0,r0);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(1,r1);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(2,r2);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(3,r3);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(4,r4);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(5,r5);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(6,r6);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(7,r7);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(8,r8);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(9,r9);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(10,r10);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(11,r11);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(12,r12);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(13,r13);
CPPUNIT_ASSERT( r0 == 0x8078);
CPPUNIT_ASSERT( r1 == 0x80c8);
CPPUNIT_ASSERT( r2 == 0x0);
CPPUNIT_ASSERT( r3 == 0x4);
#endif
//--------------------------------------------------------
#ifdef JUMP
Core::Wukong_Get_System().load_binary((Core::Binary_Loader &)(*loader), "ARM", "jump.axf");
( (ARM::CPU_7TDMI *) Core::Wukong_Get_System().get_cpu() )->run();
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(0,r0);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(1,r1);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(2,r2);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(3,r3);
CPPUNIT_ASSERT( r0 == 0x5);
CPPUNIT_ASSERT(r1 == 0x3);
CPPUNIT_ASSERT( r2 == 0x2);
CPPUNIT_ASSERT( r3 == 0x8024);
#endif
//--------------------------------------------------------
#ifdef MAIN
Core::Wukong_Get_System().load_binary((Core::Binary_Loader &)(*loader), "ARM", "main.axf");
( (ARM::CPU_7TDMI *) Core::Wukong_Get_System().get_cpu() )->run();
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(0,r0);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(1,r1);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(2,r2);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(3,r3);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(4,r4);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(5,r5);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(6,r6);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(7,r7);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(8,r8);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(9,r9);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(10,r10);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(11,r11);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(12,r12);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(13,r13);
CPPUNIT_ASSERT( r0 == 0x16);
CPPUNIT_ASSERT( r1 == 0x83f8);
CPPUNIT_ASSERT( r2 == 0x83fc);
CPPUNIT_ASSERT( r3 == 0x0);
CPPUNIT_ASSERT( r4 == 0x83bc);
CPPUNIT_ASSERT( r5 == 0x80bc);
CPPUNIT_ASSERT( r6 == 0x0);
CPPUNIT_ASSERT( r7 == 0x0);
CPPUNIT_ASSERT( r8 == 0x8098);
CPPUNIT_ASSERT( r9 == 0x0);
CPPUNIT_ASSERT( r10 == 0x0);
CPPUNIT_ASSERT( r11 == 0x837f);
CPPUNIT_ASSERT( r12 == 0x83a3);
CPPUNIT_ASSERT( r13 == 0x83f8);
#endif
//--------------------------------------------------------
#ifdef OS
Core::Wukong_Get_System().load_binary((Core::Binary_Loader &)(*loader), "ARM", "linux_2.4");
((Core::Board<Core::u32> *)(Core::Wukong_Get_System().get_board()))->prepare_rom();
( (ARM::CPU_7TDMI *) Core::Wukong_Get_System().get_cpu() )->run();
#endif
#ifdef ucos
Core::Wukong_Get_System().load_binary((Core::Binary_Loader &)(*loader), "ARM", "ucos_shell.elf");
((Core::Board<Core::u32> *)(Core::Wukong_Get_System().get_board()))->prepare_rom();
( (ARM::CPU_7TDMI *) Core::Wukong_Get_System().get_cpu() )->run();
#endif
#ifdef Arm_linux
Core::Wukong_Get_System().load_binary((Core::Binary_Loader &)(*loader), "ARM", "zImage");
((Core::Board<Core::u32> *)(Core::Wukong_Get_System().get_board()))->prepare_rom();
( (ARM::ARM_CPU*) Core::Wukong_Get_System().get_cpu() )->run();
#endif
#ifdef TEST_ALL
Core::Wukong_Get_System().load_binary((Core::Binary_Loader &)(*loader), "ARM", "huochai.axf");
( (ARM::CPU_7TDMI *) Core::Wukong_Get_System().get_cpu() )->run();
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(0,r0);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(1,r1);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(2,r2);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(3,r3);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(4,r4);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(5,r5);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(6,r6);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(7,r7);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(8,r8);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(9,r9);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(10,r10);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(11,r11);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(12,r12);
( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(13,r13);
CPPUNIT_ASSERT( r0 == 0x00000016);
CPPUNIT_ASSERT( r1 == 0x000084D0);
CPPUNIT_ASSERT( r2 == 0x000084D4);
CPPUNIT_ASSERT( r3 == 0);
CPPUNIT_ASSERT( r4 == 0x8494);
CPPUNIT_ASSERT( r5 == 0x00008188);
CPPUNIT_ASSERT( r8 == 0x00008098);
CPPUNIT_ASSERT( r11 == 0x0000844B);
CPPUNIT_ASSERT( r12 == 0x0000846F);
CPPUNIT_ASSERT( r13 == 0x000084D0);
//memory check
//data address :0x8488 ~ 0x84f3
Util util;
MMU<u32> *mem = &(( (ARM::CPU_7TDMI *) Core::Wukong_Get_System().get_cpu() )->get_mmu());
u32 rt = util.compare("D:/Core/Wukong/image/ARM/huochai.data", mem,
0x8488, 0x84f3);
//printf("\n0x%x\n",rt);
//std::vector<u8> buffer;
//mem->access(Memory_Space_Base::MEMORY_READ, 34000, 1, buffer);
CPPUNIT_ASSERT( rt == 0x00);
// std::vector<u8> mem_data;
// mem->access(Memory_Space_Base::MEMORY_READ, addr, size, mem_data);
#endif
}
int main(int argc, char * argv[])
{
/*Core::Wukong_Get_System().load_binary((Core::Binary_Loader &)(*loader), "ARM", "mul");
((Core::CPU_32Bit *)cpu)->run(); */
CppUnit::TextUi::TestRunner runner;
CppUnit::Test *suite = CppUnit::TestFactoryRegistry::getRegistry().makeTest();
runner.addTest( suite );
runner.setOutputter( new CppUnit::CompilerOutputter( &runner.result(),
std::cerr ) );
runner.run();
int i;
std::cin>>i;
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -