From 61b9ce33d54bc643b0ece227101d8bf571fd86e5 Mon Sep 17 00:00:00 2001 From: Miquel Sabaté Solà Date: Wed, 15 Jul 2026 07:58:08 +0200 Subject: Save known addresses into .nasm/addresses.txt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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à --- crates/nasm/src/main.rs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'crates/nasm/src') 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, memory: &MemoryResult, has_w } } +// Save the 'addresses' list into the `/.nasm/addresses.txt` file. +fn save_addresses(source: &SourceInfo, mut addresses: Vec) { + 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, 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); + } } -- cgit v1.2.3