📄 arm_util.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 + -