feat(backend): Add var align

This commit is contained in:
2026-05-12 18:46:01 +08:00
parent de712d0bc5
commit af72ed08c3
2 changed files with 5 additions and 2 deletions
+4 -2
View File
@@ -10,6 +10,7 @@ pub struct Generator {
register_allocator: RegisterAllocator,
}
const DEFAULT_VAR_ALIGN: usize = 4;
impl Generator {
pub fn new() -> Self {
Self {
@@ -32,10 +33,10 @@ impl Generator {
let mut text = String::new();
text.push_str(".arch armv7ve\n.arm\n.fpu vfpv4\n");
for var in &self.var_uninited {
text.push_str(&format!(".comm {}, {}\n", var.name, var.size));
text.push_str(&format!(".comm {}, {}, {}\n", var.name, var.size, var.align));
}
for var in &self.var_inited {
text.push_str(&format!(".data\n.align 4\n.global {}\n.type {}, @object\n:{}\n", var.name, var.name, var.name));
text.push_str(&format!(".data\n.align {}\n.global {}\n.type {}, @object\n:{}\n", var.align, var.name, var.name, var.name));
text.push_str(&format!(".word 0\n"));
}
text.push_str(".text\n");
@@ -50,6 +51,7 @@ impl Generator {
self.var_uninited.push(ARMAsmVar {
name: format!("global_var_{}", var.index),
size: var.data_type.size_in_bytes(),
align: DEFAULT_VAR_ALIGN,
});
}
+1
View File
@@ -1,4 +1,5 @@
pub struct ARMAsmVar {
pub name: String,
pub size: usize,
pub align: usize,
}