NULL pointers everywhere
This commit is contained in:
parent
f818b5548e
commit
f1060ff86c
@ -8,7 +8,8 @@
|
|||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
VM vm((uint8_t*)"\x00\x00\x50\x50\x03\x10\x00\x00\x02\x04\x10\x00\x04\x04\x01\x00\x13", 107);
|
uint8_t bytecode[] = "\x00\x00\x00";
|
||||||
|
VM vm(bytecode, sizeof(bytecode));
|
||||||
vm.run();
|
vm.run();
|
||||||
printf("\n\n");
|
printf("\n\n");
|
||||||
vm.status();
|
vm.status();
|
||||||
|
@ -177,7 +177,7 @@ void VM::run(void) {
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
DBG_INFO(("WAT: 0x%x\n", opcode));
|
DBG_INFO(("WAT: 0x%x\n", opcode));
|
||||||
return;
|
finished = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
13
cpp/vmas.cpp
13
cpp/vmas.cpp
@ -5,6 +5,9 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
VMAddrSpace::VMAddrSpace() {
|
VMAddrSpace::VMAddrSpace() {
|
||||||
|
stack = NULL;
|
||||||
|
code = NULL;
|
||||||
|
data = NULL;
|
||||||
stacksize = DEFAULT_STACKSIZE;
|
stacksize = DEFAULT_STACKSIZE;
|
||||||
codesize = DEFAULT_CODESIZE;
|
codesize = DEFAULT_CODESIZE;
|
||||||
datasize = DEFAULT_DATASIZE;
|
datasize = DEFAULT_DATASIZE;
|
||||||
@ -12,6 +15,9 @@ VMAddrSpace::VMAddrSpace() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
VMAddrSpace::VMAddrSpace(uint32_t ss, uint32_t cs, uint32_t ds) {
|
VMAddrSpace::VMAddrSpace(uint32_t ss, uint32_t cs, uint32_t ds) {
|
||||||
|
stack = NULL;
|
||||||
|
code = NULL;
|
||||||
|
data = NULL;
|
||||||
stacksize = ss;
|
stacksize = ss;
|
||||||
codesize = cs;
|
codesize = cs;
|
||||||
datasize = ds;
|
datasize = ds;
|
||||||
@ -21,12 +27,15 @@ VMAddrSpace::VMAddrSpace(uint32_t ss, uint32_t cs, uint32_t ds) {
|
|||||||
bool VMAddrSpace::allocate(void) {
|
bool VMAddrSpace::allocate(void) {
|
||||||
DBG_INFO(("Allocating sections...\n"));
|
DBG_INFO(("Allocating sections...\n"));
|
||||||
if (code == NULL) {
|
if (code == NULL) {
|
||||||
|
DBG_INFO(("\tcode...\n"));
|
||||||
code = (uint8_t *)malloc(codesize);
|
code = (uint8_t *)malloc(codesize);
|
||||||
}
|
}
|
||||||
if (data == NULL) {
|
if (data == NULL) {
|
||||||
|
DBG_INFO(("\tdata...\n"));
|
||||||
data = (uint8_t *)malloc(datasize);
|
data = (uint8_t *)malloc(datasize);
|
||||||
}
|
}
|
||||||
if (stack == NULL) {
|
if (stack == NULL) {
|
||||||
|
DBG_INFO(("\tstack...\n"));
|
||||||
stack = (uint8_t *)malloc(stacksize);
|
stack = (uint8_t *)malloc(stacksize);
|
||||||
}
|
}
|
||||||
if (code == NULL) {
|
if (code == NULL) {
|
||||||
@ -43,6 +52,10 @@ bool VMAddrSpace::allocate(void) {
|
|||||||
DBG_ERROR(("Couldn't allocate stack section.\n"));
|
DBG_ERROR(("Couldn't allocate stack section.\n"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
memset(code, 0xff,
|
||||||
|
stacksize); // auto halt in case the assembly is not correct
|
||||||
|
memset(stack, 0x0, stacksize);
|
||||||
|
memset(data, 0x0, stacksize);
|
||||||
DBG_SUCC(("Done!\n"));
|
DBG_SUCC(("Done!\n"));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user