51 lines
1.4 KiB
Plaintext
51 lines
1.4 KiB
Plaintext
str code = "++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.";
|
|
byte[10000] memory;
|
|
|
|
nat mp = 0; // memory pointer
|
|
nat ip = 0; // instruction pointer
|
|
|
|
while (ip < code.length) {
|
|
if (code[ip] == '>') {
|
|
mp = mp + 1;
|
|
} else if (code[ip] == '<') {
|
|
mp = mp - 1;
|
|
} else if (code[ip] == '+') {
|
|
memory[mp] = memory[mp] + 1;
|
|
} else if (code[ip] == '-') {
|
|
memory[mp] = memory[mp] - 1;
|
|
} else if (code[ip] == '.') {
|
|
// console.write = memory[mp];
|
|
write = memory[mp];
|
|
} else if (code[ip] == ',') {
|
|
// memory[mp] = console.read;
|
|
memory[mp] = read;
|
|
} else if (code[ip] == '[') {
|
|
if(!memory[mp]) {
|
|
nat nc = 1;
|
|
while (nc > 0) {
|
|
ip = ip + 1;
|
|
if (code[ip] == '[') {
|
|
nc = nc + 1;
|
|
} else if (code[ip] == ']') {
|
|
nc = nc - 1;
|
|
}
|
|
}
|
|
}
|
|
} else if (code[ip] == ']') {
|
|
if (memory[mp]) {
|
|
nat nc = 1;
|
|
while (nc > 0) {
|
|
ip = ip - 1;
|
|
if (code[ip] == ']') {
|
|
nc = nc + 1;
|
|
} else if (code[ip] == '[') {
|
|
nc = nc - 1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
ip = ip + 1;
|
|
}
|
|
|
|
halt;
|