⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 atr_test.cpp

📁 浙江大学的悟空嵌入式系统模拟器
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#include "ATR_Test.h"

static std::string arch_name = "ARM";
static std::string conf_file = "AT91X40.conf";
static std::string binary_file_1 = "1.bin";
static std::string binary_file_2 = "2.bin";
static std::string binary_file_3 = "3.bin";
static std::string binary_file_4 = "4.bin";
static std::string binary_file_5 = "5.bin";
static std::string binary_file_6 = "6.bin";
static std::string binary_file_7 = "7.bin";
static std::string binary_file_8 = "8.bin";
static std::string binary_file_9 = "9.bin";
static std::string binary_file_10 = "10.bin";
static std::string binary_file_11 = "11.bin";
static std::string binary_file_12 = "12.bin";
static std::string binary_file_13 = "13.bin";
static std::string binary_file_14 = "14.bin";
static std::string binary_file_15 = "15.bin";
static std::string binary_file_16 = "16.bin";
static std::string binary_file_17 = "17.bin";
static std::string binary_file_18 = "18.bin";
static std::string binary_file_19 = "19.bin";

CPPUNIT_TEST_SUITE_REGISTRATION( ATR_Test );

void ATR_Test::setUp()
{
	Core::Wukong_Get_System().load_config(arch_name, conf_file);
	Core::Config_File * cf = Core::Wukong_Get_System().get_config();
	std::string cpu_name, board_name,  loader_name;
	cf->read("/cpu/name", cpu_name);
	cf->read("/board/name", board_name);
	cf->read("/loader/name", loader_name);
	Core::Module * cpu = Core::Module_Manager::create_module(cpu_name);
	Core::Module * board = Core::Module_Manager::create_module(board_name);
    loader = Core::Module_Manager::create_module(loader_name);
	Core::Wukong_Get_System().install_cpu((Core::Part *)cpu);
	Core::Wukong_Get_System().install_board((Core::Part *)board);
	Core::Wukong_Get_System().install_loader((Core::Binary_Loader *)loader);
}

void ATR_Test::tearDown()
{

}

void ATR_Test::test_DP()
{
	Core::u32 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,cpsr;
	Core::Bytecode_Type buffer;
	Core::u32 value;

	Core::Wukong_Get_System().load_binary((Core::Binary_Loader &)(*loader), "ARM", binary_file_1);
	( (ARM::CPU_7TDMI  *)Core::Wukong_Get_System().get_cpu() )->run();
	( (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);
	cpsr = ( (ARM::CPU_7TDMI   *)Core::Wukong_Get_System().get_cpu() )->get_cpsr().convert_to_int();
	CPPUNIT_ASSERT(r6 == 0x80000000);
	CPPUNIT_ASSERT(r7 == 0xffffffff);
	CPPUNIT_ASSERT(r8 == 0x7fffffff);
	CPPUNIT_ASSERT(r9 == 0xfffffffe);
	CPPUNIT_ASSERT(r10 == 0xbffffffe);
	CPPUNIT_ASSERT(cpsr == 0x90000000);

	Core::Wukong_Get_System().load_binary((Core::Binary_Loader &)(*loader), "ARM", binary_file_2);
	( (Core::CPU_32Bit  *)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);
	cpsr = ( (ARM::CPU_7TDMI   *)Core::Wukong_Get_System().get_cpu() )->get_cpsr().convert_to_int();
	CPPUNIT_ASSERT(r0 == 0x80000000);
	CPPUNIT_ASSERT(r1 == 0x00000001);
	CPPUNIT_ASSERT(r2 == 0x7fffffff);
	CPPUNIT_ASSERT(r3 == 0x00000001);
	CPPUNIT_ASSERT(r4 == 0x00000002);
	CPPUNIT_ASSERT(r5 == 0x00000001);
	CPPUNIT_ASSERT(r6 == 0x00000002);
	CPPUNIT_ASSERT(r7 == 0x00000001);
	CPPUNIT_ASSERT(r8 == 0x00000002);
	CPPUNIT_ASSERT(r9 == 0x00000000);
	CPPUNIT_ASSERT(r10 == 0x00000020);
	CPPUNIT_ASSERT(r11 == 0xffffffff);
	CPPUNIT_ASSERT(cpsr == 0x20000000);

	Core::Wukong_Get_System().load_binary((Core::Binary_Loader &)(*loader), "ARM", binary_file_3);
	( (Core::CPU_32Bit  *)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);
	cpsr = ( (ARM::CPU_7TDMI   *)Core::Wukong_Get_System().get_cpu() )->get_cpsr().convert_to_int();
	CPPUNIT_ASSERT(r0 == 0x80000000);
	CPPUNIT_ASSERT(r1 == 0x00000001);
	CPPUNIT_ASSERT(r2 == 0x80000001);
	CPPUNIT_ASSERT(r3 == 0x00000001);
	CPPUNIT_ASSERT(r4 == 0x00000002);
	CPPUNIT_ASSERT(r5 == 0x00000001);
	CPPUNIT_ASSERT(r6 == 0xfffffffe);
	CPPUNIT_ASSERT(r7 == 0x00000001);
	CPPUNIT_ASSERT(r8 == 0x00000002);
	CPPUNIT_ASSERT(r9 == 0x00000000);
	CPPUNIT_ASSERT(r10 == 0x00000020);
	CPPUNIT_ASSERT(r11 == 0x00000001);
	CPPUNIT_ASSERT(cpsr == 0x80000000);

	Core::Wukong_Get_System().load_binary((Core::Binary_Loader &)(*loader), "ARM", binary_file_4);
	( (Core::CPU_32Bit  *)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);
	cpsr = ( (ARM::CPU_7TDMI   *)Core::Wukong_Get_System().get_cpu() )->get_cpsr().convert_to_int();
	CPPUNIT_ASSERT(r0 == 0x80000000);
	CPPUNIT_ASSERT(r1 == 0x00000001);
	CPPUNIT_ASSERT(r2 == 0x80000001);
	CPPUNIT_ASSERT(r3 == 0x00000001);
	CPPUNIT_ASSERT(r4 == 0x00000002);
	CPPUNIT_ASSERT(r5 == 0x00000001);
	CPPUNIT_ASSERT(r6 == 0x00000002);
	CPPUNIT_ASSERT(r7 == 0x00000001);
	CPPUNIT_ASSERT(r8 == 0x00000002);
	CPPUNIT_ASSERT(r9 == 0x00000000);
	CPPUNIT_ASSERT(r10 == 0x00000020);
	CPPUNIT_ASSERT(r11 == 0x00000003);
	CPPUNIT_ASSERT(cpsr == 0x00000000);

	Core::Wukong_Get_System().load_binary((Core::Binary_Loader &)(*loader), "ARM", binary_file_5);
	( (Core::CPU_32Bit  *)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);
	cpsr = ( (ARM::CPU_7TDMI   *)Core::Wukong_Get_System().get_cpu() )->get_cpsr().convert_to_int();
	CPPUNIT_ASSERT(r0 == 0x80000000);
	CPPUNIT_ASSERT(r1 == 0x00000001);
	CPPUNIT_ASSERT(r2 == 0x00000000);
	CPPUNIT_ASSERT(r3 == 0x00000001);
	CPPUNIT_ASSERT(r4 == 0x00000002);
	CPPUNIT_ASSERT(r5 == 0x00000001);
	CPPUNIT_ASSERT(r6 == 0x00000000);
	CPPUNIT_ASSERT(r7 == 0x00000001);
	CPPUNIT_ASSERT(r8 == 0x00000002);
	CPPUNIT_ASSERT(r9 == 0x00000000);
	CPPUNIT_ASSERT(r10 == 0x00000020);
	CPPUNIT_ASSERT(cpsr == 0x40000000);

	Core::Wukong_Get_System().load_binary((Core::Binary_Loader &)(*loader), "ARM", binary_file_6);
	( (Core::CPU_32Bit  *)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);
	cpsr = ( (ARM::CPU_7TDMI   *)Core::Wukong_Get_System().get_cpu() )->get_cpsr().convert_to_int();
	CPPUNIT_ASSERT(r0 == 0x80000000);
	CPPUNIT_ASSERT(r1 == 0x00000001);
	CPPUNIT_ASSERT(r2 == 0x80000001);
	CPPUNIT_ASSERT(r3 == 0x00000001);
	CPPUNIT_ASSERT(r4 == 0x00000002);
	CPPUNIT_ASSERT(r5 == 0x00000001);
	CPPUNIT_ASSERT(r6 == 0x00000002);
	CPPUNIT_ASSERT(r7 == 0x00000001);
	CPPUNIT_ASSERT(r8 == 0x00000002);
	CPPUNIT_ASSERT(cpsr == 0x00000000);

	Core::Wukong_Get_System().load_binary((Core::Binary_Loader &)(*loader), "ARM", binary_file_7);
	( (Core::CPU_32Bit  *)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);
	cpsr = ( (ARM::CPU_7TDMI   *)Core::Wukong_Get_System().get_cpu() )->get_cpsr().convert_to_int();
	CPPUNIT_ASSERT(r0 == 0x80000000);
	CPPUNIT_ASSERT(r1 == 0x00000001);
	CPPUNIT_ASSERT(r2 == 0x80000000);
	CPPUNIT_ASSERT(r3 == 0x00000001);
	CPPUNIT_ASSERT(r4 == 0x00000002);
	CPPUNIT_ASSERT(r5 == 0x00000001);
	CPPUNIT_ASSERT(r6 == 0x00000002);
	CPPUNIT_ASSERT(r7 == 0x00000001);
	CPPUNIT_ASSERT(r8 == 0x00000002);
	CPPUNIT_ASSERT(r9 == 0x00000000);
	CPPUNIT_ASSERT(r10 == 0x00000020);
	CPPUNIT_ASSERT(r11 == 0x00000001);
	CPPUNIT_ASSERT(cpsr == 0x00000000);

	Core::Wukong_Get_System().load_binary((Core::Binary_Loader &)(*loader), "ARM", binary_file_8);
	( (Core::CPU_32Bit  *)Core::Wukong_Get_System().get_cpu() )->run();
	cpsr = ( (ARM::CPU_7TDMI   *)Core::Wukong_Get_System().get_cpu() )->get_cpsr().convert_to_int();
	CPPUNIT_ASSERT(cpsr == 0x00000000);

	Core::Wukong_Get_System().load_binary((Core::Binary_Loader &)(*loader), "ARM", binary_file_9);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -