Expand on what the range-checking includes in this version.
Chris Pressey
5 years ago
6 | 6 | * It is a static analysis error if it cannot be proven that a read or write |
7 | 7 | to a table falls within the defined size of that table. |
8 | 8 | * The reference analyzer's ability to prove this is currently fairly weak, |
9 | but it does exist. | |
9 | but it does exist: | |
10 | * Loading a constant into a memory location means we know the range | |
11 | is exactly that one constant value. | |
12 | * `AND`ing a memory location with a value means the range of the | |
13 | memory location cannot exceed the range of the value. | |
14 | * Doing arithmetic on a memory location invalidates our knowledge | |
15 | of its range. | |
16 | * Copying a value from one memory location to another copies the | |
17 | known range as well. | |
10 | 18 | * Cleaned up the internals of the reference implementation (incl. the AST) |
11 | 19 | and re-organized the example programs in the `eg` subdirectory. |
12 | 20 | * Most errors produced by the reference implementation now include a line number. |