Add banner

This commit is contained in:
rkx1209 2018-03-17 18:51:50 +09:00
parent 0d9d94f1ec
commit ecce10b623
6 changed files with 34 additions and 13 deletions

View file

@ -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;

View file

@ -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

View file

@ -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 ();

View file

@ -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);

View file

@ -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;
}

View file

@ -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) {