|
|
|
|
|
by evomassiny
10 days ago
|
|
Could you duplicate `RECORD_INST` before each `INSTRUCTION_N`,
so that: ``` INSTRUCTION_1:
// subroutine 1
ip++;
goto *dispatch_var[*ip];
INSTRUCTION_2:
// subroutine 2
ip++;
goto *dispatch_var[*ip];
```becomes:
``` RECORD_INST_1:
// record logic
INSTRUCTION_1:
// subroutine 1
ip++;
goto *dispatch_var[*ip];
RECORD_INST_2:
// record logic
INSTRUCTION_2:
// subroutine 2
ip++;
goto *dispatch_var[*ip];
```This way you could directly swap `dispatch_var` with an array populated with the
`RECORD_INST_*` labels, and remove one step at runtime. Or maybe this is what you are trying to avoid to reduce the binary size ? |
|