diff options
| author | Miquel Sabaté Solà <mssola@mssola.com> | 2025-12-15 15:07:01 +0100 |
|---|---|---|
| committer | Miquel Sabaté Solà <mssola@mssola.com> | 2025-12-15 19:55:06 +0100 |
| commit | 23bd15c063e40872f065d6b90c6d057e6f1756aa (patch) | |
| tree | 96de67321f0a2288c5735eee61710f8312b7caed /lib/xixanta | |
| parent | 932fe3dc341690688b706b70d56336d899d2246f (diff) | |
| download | tools.nes-23bd15c063e40872f065d6b90c6d057e6f1756aa.tar.gz tools.nes-23bd15c063e40872f065d6b90c6d057e6f1756aa.zip | |
asan: addresses >= 0x2000 cannot be reserved space
These addresses are merely references to real APU/PPU addresses which
can be used for ease of use.
Signed-off-by: Miquel Sabaté Solà <mssola@mssola.com>
Diffstat (limited to 'lib/xixanta')
| -rw-r--r-- | lib/xixanta/src/assembler.rs | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/lib/xixanta/src/assembler.rs b/lib/xixanta/src/assembler.rs index e7843a3..6b82645 100644 --- a/lib/xixanta/src/assembler.rs +++ b/lib/xixanta/src/assembler.rs @@ -923,20 +923,23 @@ impl<'a> Assembler<'a> { }); } } - memory.memory_ranges.push(range); // Increase the counters for memory usage on either RAM slot and // check for bounds. if actual_name.starts_with("zp_") || actual_name.starts_with("m_") { - memory.total_internal_ram += bundle.asan_reserve; - - if memory.total_internal_ram > 0x800 { - errors.push(Error { - line: 0, - global: true, - message: "out of internal RAM".to_string(), - source: self.sources[0].clone(), - }); + // Avoid considering references to PPU/APU addresses as + // reserved memory. + if range.range.start < 0x2000 { + memory.total_internal_ram += bundle.asan_reserve; + + if memory.total_internal_ram > 0x800 { + errors.push(Error { + line: 0, + global: true, + message: "out of internal RAM".to_string(), + source: self.sources[0].clone(), + }); + } } } else if actual_name.starts_with("wr_") { memory.total_working_ram += bundle.asan_reserve; @@ -950,6 +953,8 @@ impl<'a> Assembler<'a> { }); } } + + memory.memory_ranges.push(range); } } |
