|
|
|
@ -22,7 +22,7 @@ look like: |
|
|
|
0, 1, 6, 1, 44, 5, 300, 200, 11, 1 |
|
|
|
|
|
|
|
The above doesn't really work, but it's a start. An unsigned byte (byte code |
|
|
|
offset)) can't hold negative values, or values larger than 255, a signed byte |
|
|
|
offset) can't hold negative values, or values larger than 255, a signed byte |
|
|
|
(line number) can't hold values larger than 127 or less than -128, and the |
|
|
|
above example contains two such values. So we make two tweaks: |
|
|
|
|
|
|
|
@ -95,16 +95,16 @@ which compiles to this: |
|
|
|
6 POP_JUMP_IF_FALSE 17 |
|
|
|
|
|
|
|
3 9 LOAD_CONST 1 (1) |
|
|
|
12 PRINT_ITEM |
|
|
|
12 PRINT_ITEM |
|
|
|
|
|
|
|
4 13 BREAK_LOOP |
|
|
|
4 13 BREAK_LOOP |
|
|
|
14 JUMP_ABSOLUTE 3 |
|
|
|
>> 17 POP_BLOCK |
|
|
|
>> 17 POP_BLOCK |
|
|
|
|
|
|
|
6 18 LOAD_CONST 2 (2) |
|
|
|
21 PRINT_ITEM |
|
|
|
21 PRINT_ITEM |
|
|
|
>> 22 LOAD_CONST 0 (None) |
|
|
|
25 RETURN_VALUE |
|
|
|
25 RETURN_VALUE |
|
|
|
|
|
|
|
If 'a' is false, execution will jump to the POP_BLOCK instruction at offset 17 |
|
|
|
and the co_lnotab will claim that execution has moved to line 4, which is wrong. |
|
|
|
|