diff options
| author | Miquel Sabaté Solà <mssola@mssola.com> | 2026-07-07 23:01:50 +0200 |
|---|---|---|
| committer | Miquel Sabaté Solà <mssola@mssola.com> | 2026-07-07 23:01:50 +0200 |
| commit | ca7ff2c299dbd15b89adae73caa356584977dd46 (patch) | |
| tree | 49453a74a93eec303d9bdad29fbc7cab238e83fe /tests/code.nes | |
| parent | 85a68dbdcd0200a711bacda9c7170129350813c8 (diff) | |
| download | tools.nes-ca7ff2c299dbd15b89adae73caa356584977dd46.tar.gz tools.nes-ca7ff2c299dbd15b89adae73caa356584977dd46.zip | |
Do not optimize away unresolved non-jumps
In the following code:
.macro MACRO ADDR
adc ADDR
.endmacro
MACRO label
label:
nop
The evaluation of the 'adc' instruction went into being re-sized to 1
despite indications of being an address (and hence hinting to a size of
2). This was done because of the optimization to shrink a single byte
left arm from absolute to relative addressing. But on unresolved bundles
this is bad, as everything may still be zeroed out, and the instruction
itself doesn't hint on the end size. This shrinking would then mess with
the segment's offset, and we would end up with an offset of 2 instead of
3 for the label 'label'.
Note that this is in the same spirit as commit ed3d34b0afb1 ("Only
shrink the addressing on resolved bundles"), but now applied to the
get_from_left() function which apparently was spared for whatever
reason.
Signed-off-by: Miquel Sabaté Solà <mssola@mssola.com>
Diffstat (limited to 'tests/code.nes')
0 files changed, 0 insertions, 0 deletions
