disasm now displays literal string value

This commit is contained in:
mlokr 2024-09-04 18:38:32 +02:00
parent a21dee61e7
commit f063d0a4fd
No known key found for this signature in database
GPG key ID: DEA147DDEE644993

View file

@ -8,7 +8,7 @@ use {
parser::{self, find_symbol, idfl, CtorField, Expr, ExprRef, FileId, Pos}, parser::{self, find_symbol, idfl, CtorField, Expr, ExprRef, FileId, Pos},
HashMap, HashMap,
}, },
std::{fmt::Display, ops::Range, rc::Rc}, std::{fmt::Display, ops::Range, rc::Rc, usize},
}; };
type Offset = u32; type Offset = u32;
@ -3275,12 +3275,19 @@ impl Codegen {
) )
}), }),
) )
.chain( .chain(self.output.strings.iter().map(|s| {
self.output (
.strings s.range.start,
.iter() (
.map(|s| (s.range.start, ("string", s.range.len() as _, DisasmItem::Global))), std::str::from_utf8(
) &self.output.code[s.range.start as usize..s.range.end as usize - 1],
)
.unwrap_or("!!!!invalid string"),
s.range.len() as _,
DisasmItem::Global,
),
)
}))
.collect::<HashMap<_, _>>(); .collect::<HashMap<_, _>>();
crate::disasm(&mut sluce, &functions, output, |bin| { crate::disasm(&mut sluce, &functions, output, |bin| {
if self.ct.active() if self.ct.active()