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

📄 arm_util.cpp

📁 浙江大学的悟空嵌入式系统模拟器
💻 CPP
字号:
#include "arm_util.hpp"

u8 Util::convert2u8(char data[])
{
	u8 high, low ;
if(data[0]>='0' && data[0]<='9')
	high = data[0]-0x30;
else if(data[0]>='A' && data[0]<='F')
	high = data[0]-0x37;

if(data[1]>='0' && data[1]<='9')
	low = data[1] - 0x30;
else if(data[1]>='A' && data[1]<='F')
	low = data[1] - 0x37;

return (high*16 + low);
}

u32 Util::compare(std::string file, MMU<u32> *mem, u32 start_addr, u32 end_addr)
{
	assert(start_addr < end_addr);
	assert(mem != NULL);

	std::ifstream in_file(file.c_str());
	if(!in_file)
	{
		std::cerr<< "unload the file" << std::endl;
		in_file.close();
		return -1;
	}

	if(!in_file.eof())
	{
		char addr[128];
		//ignore the first line
		in_file.getline(addr,128);
	}

	char single_data = in_file.get();

	while(single_data != EOF)
	{
 		if(start_addr >= end_addr)
			return 0;	
		char data[128];
		
		//check space
		if(single_data == ' ' || single_data == 0x0D || single_data == 0x0A)
		{
			single_data = in_file.get();
			continue;
		}
		else
		{
			in_file.unget();
			in_file.get(data,3);
		}

		std::vector<u8> buffer;
		mem->access(Core::Memory_32Bit::MEMORY_READ, start_addr++, 1, buffer);
		u8 tmp = convert2u8(data);

		if(tmp != buffer[0])
		{
			in_file.close();
			return (start_addr-1);
		}

		single_data = in_file.get();
	}

	in_file.close();
	return 0;
}

⌨️ 快捷键说明

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