mirror of
https://github.com/RKX1209/nsemu.git
synced 2024-06-15 18:57:39 -04:00
Add banner
This commit is contained in:
parent
0d9d94f1ec
commit
ecce10b623
|
@ -17,19 +17,22 @@ void RunLoop() {
|
|||
}
|
||||
|
||||
void Dump() {
|
||||
int cnt = 1;
|
||||
ns_print ("CPU Dump:\n");
|
||||
for (int r = 0; r < GPR_DUMMY; r++) {
|
||||
if (!X(r))
|
||||
continue;
|
||||
if (r == GPR_LR)
|
||||
ns_print ("LR\t");
|
||||
ns_print ("LR:\t");
|
||||
else if (r == GPR_SP)
|
||||
ns_print ("SP\t");
|
||||
ns_print ("SP:\t");
|
||||
else
|
||||
ns_print ("X%d\t", r);
|
||||
ns_print ("0x%016lx\n", X(r));
|
||||
ns_print ("X%d:\t", r);
|
||||
ns_print ("0x%016lx%c", X(r), cnt % 3 == 0 ? '\n' : '\t');
|
||||
cnt++;
|
||||
}
|
||||
ns_print ("PC\t0x%016lx\n", PC);
|
||||
ns_print ("NZCV\t0x%016lx\n", NZCV);
|
||||
ns_print ("PC:\t0x%016lx\n", PC);
|
||||
ns_print ("NZCV:\t0x%016lx\n", NZCV);
|
||||
}
|
||||
|
||||
static uint64_t counter;
|
||||
|
|
|
@ -20,10 +20,9 @@ void Interpreter::Run() {
|
|||
while (Cpu::GetState () == Cpu::State::Running) {
|
||||
char c;
|
||||
//scanf("%c", &c);
|
||||
Cpu::DumpMachine ();
|
||||
SingleStep ();
|
||||
// if (counter >= 242)
|
||||
// break;
|
||||
if (counter >= 241)
|
||||
break;
|
||||
counter++;
|
||||
// if (PC == 0x2d54) {
|
||||
// SingleStep ();
|
||||
|
@ -32,6 +31,7 @@ void Interpreter::Run() {
|
|||
// break;
|
||||
// }
|
||||
}
|
||||
Cpu::DumpMachine ();
|
||||
}
|
||||
|
||||
/* ####### Callbacks ####### */
|
||||
|
@ -642,7 +642,7 @@ void IntprCallback::SetPCReg(unsigned int rt_idx) {
|
|||
/* Super Visor Call */
|
||||
void IntprCallback::SVC(unsigned int svc_num) {
|
||||
//debug_print ("SVC: %u\n", svc_num);
|
||||
ns_print ("SVC: %u\n", svc_num);
|
||||
ns_print ("SVC: 0x%02x\n", svc_num);
|
||||
if (SVC::svc_handlers[svc_num])
|
||||
SVC::svc_handlers[svc_num]();
|
||||
else
|
||||
|
|
14
Main.cpp
14
Main.cpp
|
@ -62,6 +62,19 @@ void FinTrace() {
|
|||
fclose (Cpu::TraceOut);
|
||||
}
|
||||
|
||||
void Banner() {
|
||||
|
||||
const char *banner = "\n\n"\
|
||||
"███╗ ██╗███████╗███████╗███╗ ███╗██╗ ██╗\n"\
|
||||
"████╗ ██║██╔════╝██╔════╝████╗ ████║██║ ██║\n"\
|
||||
"██╔██╗ ██║███████╗█████╗ ██╔████╔██║██║ ██║\n"\
|
||||
"██║╚██╗██║╚════██║██╔══╝ ██║╚██╔╝██║██║ ██║\n"\
|
||||
"██║ ╚████║███████║███████╗██║ ╚═╝ ██║╚██████╔╝\n"\
|
||||
"╚═╝ ╚═══╝╚══════╝╚══════╝╚═╝ ╚═╝ ╚═════╝ \n\n"\
|
||||
"NSEMU ver (0.1: unstable)\n\n";
|
||||
ns_print(banner);
|
||||
}
|
||||
|
||||
enum optionIndex {
|
||||
UNKNOWN, HELP, ENABLE_TRACE
|
||||
};
|
||||
|
@ -124,6 +137,7 @@ printUsage:
|
|||
goto printUsage;
|
||||
}
|
||||
}
|
||||
Banner ();
|
||||
nsemu->BootUp (parse.nonOption (0));
|
||||
Nsemu::destroy ();
|
||||
FinTrace ();
|
||||
|
|
|
@ -11,13 +11,15 @@ static void LoadNso(Nsemu *nsemu, string path) {
|
|||
}
|
||||
|
||||
static void CpuThread() {
|
||||
ns_print ("[CPU]\tLaunching ARMv8::VCPU.....\n");
|
||||
Cpu::Init ();
|
||||
Cpu::SetState (Cpu::State::Running);
|
||||
ns_print ("[CPU]\tRunning.....\n");
|
||||
Cpu::Run ();
|
||||
}
|
||||
|
||||
bool Nsemu::BootUp(const std::string& path) {
|
||||
debug_print ("Booting... %s\n", path.c_str ());
|
||||
ns_print ("Booting... %s\n", path.c_str ());
|
||||
Memory::InitMemmap (this);
|
||||
LoadNso (this, path);
|
||||
cpu_thread = std::thread (CpuThread);
|
||||
|
|
2
Svc.cpp
2
Svc.cpp
|
@ -144,6 +144,7 @@ void ExitThread() {
|
|||
}
|
||||
|
||||
uint64_t SleepThread(uint64_t ns) {
|
||||
ns_print("SleepThread 0x%lx [ns]\n", ns);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -257,6 +258,7 @@ uint64_t Break(uint64_t X0, uint64_t X1, uint64_t info) {
|
|||
}
|
||||
|
||||
uint64_t OutputDebugString(uint64_t ptr, uint64_t size) {
|
||||
ns_print("OutputDebugString addr=0x%lx, size=%llu\n", ptr, size);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -13,8 +13,8 @@ enum RunLevel {
|
|||
RUN_LEVEL_DEBUG,
|
||||
};
|
||||
|
||||
static RunLevel curlevel = RUN_LEVEL_DEBUG;
|
||||
//static RunLevel curlevel = RUN_LEVEL_RELEASE;
|
||||
//static RunLevel curlevel = RUN_LEVEL_DEBUG;
|
||||
static RunLevel curlevel = RUN_LEVEL_RELEASE;
|
||||
|
||||
static void util_print(RunLevel level, FILE *fp, const char *format, ...) {
|
||||
if (curlevel >= level) {
|
||||
|
|
Loading…
Reference in a new issue