| stackmach.c | |||
|---|---|---|---|
| Criterion | Covered | Total | % |
| statement | 0 | 25 | 0.0 |
| branch | 0 | 2 | 0.0 |
| condition | n/a | ||
| subroutine | n/a | ||
| pod | n/a | ||
| total | 0 | 27 | 0.0 |
| line | stmt | bran | cond | sub | pod | time | code |
|---|---|---|---|---|---|---|---|
| 1 | #include "stackmach.h" | ||||||
| 2 | |||||||
| 3 | double | ||||||
| 4 | 0 | i_op_run(int codes[], size_t code_size, double parms[], size_t parm_size) { | |||||
| 5 | double stack[100]; | ||||||
| 6 | 0 | double *sp = stack; | |||||
| 7 | |||||||
| 8 | 0 | 0 | while (code_size) { | ||||
| 9 | 0 | switch (*codes++) { | |||||
| 10 | case bcAdd: | ||||||
| 11 | 0 | sp[-2] += sp[-1]; | |||||
| 12 | 0 | --sp; | |||||
| 13 | 0 | break; | |||||
| 14 | |||||||
| 15 | case bcSubtract: | ||||||
| 16 | 0 | sp[-2] -= sp[-1]; | |||||
| 17 | 0 | --sp; | |||||
| 18 | 0 | break; | |||||
| 19 | |||||||
| 20 | case bcDiv: | ||||||
| 21 | 0 | sp[-2] /= sp[-1]; | |||||
| 22 | 0 | --sp; | |||||
| 23 | 0 | break; | |||||
| 24 | |||||||
| 25 | case bcMult: | ||||||
| 26 | 0 | sp[-2] *= sp[-1]; | |||||
| 27 | 0 | --sp; | |||||
| 28 | 0 | break; | |||||
| 29 | |||||||
| 30 | case bcParm: | ||||||
| 31 | 0 | *sp++ = parms[*codes++]; | |||||
| 32 | 0 | --code_size; | |||||
| 33 | 0 | break; | |||||
| 34 | |||||||
| 35 | case bcSin: | ||||||
| 36 | 0 | sp[-1] = sin(sp[-1]); | |||||
| 37 | 0 | break; | |||||
| 38 | |||||||
| 39 | case bcCos: | ||||||
| 40 | 0 | sp[-1] = cos(sp[-1]); | |||||
| 41 | 0 | break; | |||||
| 42 | |||||||
| 43 | } | ||||||
| 44 | 0 | --code_size; | |||||
| 45 | } | ||||||
| 46 | |||||||
| 47 | 0 | return sp[-1]; | |||||
| 48 | } | ||||||
| 49 |