aboutsummaryrefslogtreecommitdiff
path: root/crates/nasm/src/main.rs
diff options
context:
space:
mode:
authorMiquel Sabaté Solà <mssola@mssola.com>2026-07-15 07:58:08 +0200
committerMiquel Sabaté Solà <mssola@mssola.com>2026-07-15 08:10:45 +0200
commit61b9ce33d54bc643b0ece227101d8bf571fd86e5 (patch)
treee3fce800a82adac700997b02d4ab37a80f4fd97b /crates/nasm/src/main.rs
parent10b2276829b31c117eb3276dca11503248801cdd (diff)
downloadtools.nes-61b9ce33d54bc643b0ece227101d8bf571fd86e5.tar.gz
tools.nes-61b9ce33d54bc643b0ece227101d8bf571fd86e5.zip
Save known addresses into .nasm/addresses.txt
This new file contains all the addresses that are known to the assembler, belonging to either proc's or plain labels. For the former we will further be able to tell the "end" of the proc. With that, the file follows a simple CSV format, with the name, start and end. Signed-off-by: Miquel Sabaté Solà <mssola@mssola.com>
Diffstat (limited to 'crates/nasm/src/main.rs')
-rw-r--r--crates/nasm/src/main.rs19
1 files changed, 19 insertions, 0 deletions
diff --git a/crates/nasm/src/main.rs b/crates/nasm/src/main.rs
index 55a8f21..010e7d5 100644
--- a/crates/nasm/src/main.rs
+++ b/crates/nasm/src/main.rs
@@ -270,6 +270,20 @@ fn print_memory_summary(mut output: Box<dyn Write>, memory: &MemoryResult, has_w
}
}
+// Save the 'addresses' list into the `<source>/.nasm/addresses.txt` file.
+fn save_addresses(source: &SourceInfo, mut addresses: Vec<xixanta::assembler::Range>) {
+ let Ok(mut file) = File::create(get_directory_from_source(source).join("addresses.txt")) else {
+ return die("could not write memory.txt file".to_string());
+ };
+
+ addresses.sort_by_key(|a| a.range.start);
+ for a in addresses {
+ if let Err(e) = writeln!(file, "{},{:04X},{:04X}", a.name, a.range.start, a.range.end) {
+ return die(format!("could not write addresses.txt file: {e}"));
+ }
+ }
+}
+
// Print to the `output` stream the statistics that can be gathered from the
// given `mappings`.
fn print_segments_stats(mut output: Box<dyn Write>, mappings: &[Mapping]) {
@@ -463,4 +477,9 @@ fn main() {
print_memory_summary(Box::new(io::stdout()), &memory, has_working_ram);
}
}
+
+ // Print addresses.
+ if args.info {
+ save_addresses(&source, res.addresses);
+ }
}