repositories
/
mTask.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix if statements and sds publishing
[mTask.git]
/
int
/
interpret.c
diff --git
a/int/interpret.c
b/int/interpret.c
index
4c60bc9
..
6875097
100644
(file)
--- a/
int/interpret.c
+++ b/
int/interpret.c
@@
-23,6
+23,9
@@
void run_task(struct task *t, int fd)
switch(program[pc++]){
case BCNOP: trace("nop\n");
break;
switch(program[pc++]){
case BCNOP: trace("nop\n");
break;
+ case BCLAB: trace("label: 0x%02x!!!!!!\n", program[pc]);
+ pc++;
+ break;
case BCPUSH: trace("push %d\n", program[pc]*265+program[pc+1]);
stack[sp++] = program[pc]*265 + program[pc+1];
pc+=2;
case BCPUSH: trace("push %d\n", program[pc]*265+program[pc+1]);
stack[sp++] = program[pc]*265 + program[pc+1];
pc+=2;
@@
-30,13
+33,13
@@
void run_task(struct task *t, int fd)
case BCPOP: trace("pop\n");
sp--;
break;
case BCPOP: trace("pop\n");
sp--;
break;
- case BCSDSSTORE: trace("sds store
\n"
);
- sds_store(program[pc++], stack[
sp-1
]);
+ case BCSDSSTORE: trace("sds store
: %d\n", program[pc]
);
+ sds_store(program[pc++], stack[
--sp
]);
break;
break;
- case BCSDSFETCH: trace("sds fetch
\n"
);
+ case BCSDSFETCH: trace("sds fetch
: %d\n", program[pc]
);
stack[sp++] = sds_fetch(program[pc++]);
break;
stack[sp++] = sds_fetch(program[pc++]);
break;
- case BCSDSPUBLISH: trace("sds publish
\n"
);
+ case BCSDSPUBLISH: trace("sds publish
%d\n", program[pc]
);
sds_publish(program[pc++], fd);
break;
case BCNOT: trace("not\n");
sds_publish(program[pc++], fd);
break;
case BCNOT: trace("not\n");
@@
-91,13
+94,13
@@
void run_task(struct task *t, int fd)
sp -= 1;
break;
case BCJMP: trace("jmp to %d\n", program[pc]);
sp -= 1;
break;
case BCJMP: trace("jmp to %d\n", program[pc]);
- pc = p
c + program[pc]
;
+ pc = p
rogram[pc]-1
;
break;
case BCJMPT: trace("jmpt to %d\n", program[pc]);
break;
case BCJMPT: trace("jmpt to %d\n", program[pc]);
- pc
+= stack[sp] ? program[pc] :
1;
+ pc
= stack[--sp] ? program[pc]-1 : pc+
1;
break;
case BCJMPF: trace("jmpf to %d\n", program[pc]);
break;
case BCJMPF: trace("jmpf to %d\n", program[pc]);
- pc
+= stack[sp] ? 1 : program[pc]
;
+ pc
= stack[--sp] ? pc+1 : program[pc]-1
;
break;
case BCSERIALAVAIL: trace("SerialAvailable()\n");
break;
break;
case BCSERIALAVAIL: trace("SerialAvailable()\n");
break;
@@
-122,7
+125,8
@@
void run_task(struct task *t, int fd)
pc++;
break;
default:
pc++;
break;
default:
- die("Unrecognized command: %d\n", program[--pc]);
+ trace("unrecognized\n");
+ die("Unrecognized command: %d\n", program[pc-1]);
}
}
debug("Task terminated\n");
}
}
debug("Task terminated\n");