|
@ -69,6 +69,17 @@ |
|
|
// std::cout << "[" << start << ", " << end << ")" << std::endl;
|
|
|
// std::cout << "[" << start << ", " << end << ")" << std::endl;
|
|
|
//}
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
void raw_code_check_verify(uint64_t index) { |
|
|
|
|
|
uint64_t start = index * 0x100000000; |
|
|
|
|
|
uint64_t end = start + 0x100000000; |
|
|
|
|
|
for (uint64_t common_code = start; common_code < end; ++common_code) { |
|
|
|
|
|
if (RawCode::check(RawCode::extract(common_code)) != CommonCode::check(common_code)) { |
|
|
|
|
|
printf("Error -> %09lX\n", common_code); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
std::cout << "verify ok: " << std::hex << "[" << start << ", " << end << ")" << std::endl; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
int main() { |
|
|
int main() { |
|
|
|
|
|
|
|
|
// AllCases::build();
|
|
|
// AllCases::build();
|
|
@ -393,19 +404,30 @@ int main() { |
|
|
// if (RawCode::check(RawCode::extract(common_code)) != CommonCode::check(common_code)) {
|
|
|
// if (RawCode::check(RawCode::extract(common_code)) != CommonCode::check(common_code)) {
|
|
|
// printf("%09lX\n", common_code);
|
|
|
// printf("%09lX\n", common_code);
|
|
|
// }
|
|
|
// }
|
|
|
// if (common_code % 0x1000 == 0) {
|
|
|
// if (common_code % 0x1000000 == 0) {
|
|
|
// std::cout << std::hex << common_code << std::endl;
|
|
|
// std::cout << (common_code / 0x1000000) << std::endl;
|
|
|
// }
|
|
|
// }
|
|
|
// }
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
std::thread tasks[16]; |
|
|
|
|
|
std::cout << "verify start" << std::endl; |
|
|
|
|
|
for (int i = 0; i < 16; ++i) { |
|
|
|
|
|
tasks[i] = std::thread(raw_code_check_verify, i); |
|
|
|
|
|
} |
|
|
|
|
|
for (auto &t : tasks) { |
|
|
|
|
|
t.join(); |
|
|
|
|
|
} |
|
|
|
|
|
std::cout << "verify complete" << std::endl; |
|
|
|
|
|
|
|
|
// TODO: why 0x555a4001 broken extract function?
|
|
|
// TODO: why 0x555a4001 broken extract function?
|
|
|
// std::cout << RawCode(RawCode::extract(0x00000FEC4)).dump_case() << std::endl;
|
|
|
// std::cout << RawCode(RawCode::extract(0x00000FEC4)).dump_case() << std::endl;
|
|
|
// std::cout << RawCode(RawCode::extract(0x000055480)).dump_case() << std::endl;
|
|
|
// std::cout << RawCode(RawCode::extract(0x000055480)).dump_case() << std::endl;
|
|
|
// std::cout << RawCode(RawCode::extract(0x0000FF004)).dump_case() << std::endl;
|
|
|
// std::cout << RawCode(RawCode::extract(0x0000FF004)).dump_case() << std::endl;
|
|
|
std::cout << RawCode::extract(0x555a4001) << std::endl; |
|
|
// std::cout << RawCode::extract(0x555a4001) << std::endl;
|
|
|
|
|
|
|
|
|
|
|
|
std::cerr << (clock() - start_time) / CLOCKS_PER_SEC << "s" << std::endl; |
|
|
// std::cerr << (clock() - start_time) * 1000 / CLOCKS_PER_SEC << "ms" << std::endl;
|
|
|
// std::cerr << (clock() - start_time) * 1000 / CLOCKS_PER_SEC << "ms" << std::endl;
|
|
|
std::cerr << (clock() - start_time) * 1000000 / CLOCKS_PER_SEC << "us" << std::endl; |
|
|
// std::cerr << (clock() - start_time) * 1000000 / CLOCKS_PER_SEC << "us" << std::endl;
|
|
|
// std::cout << "complete benchmark" << std::endl;
|
|
|
// std::cout << "complete benchmark" << std::endl;
|
|
|
|
|
|
|
|
|
// pause();
|
|
|
// pause();
|
|
|