diff --git a/src/backend/generator.rs b/src/backend/generator.rs index 247bd29..3cb4900 100644 --- a/src/backend/generator.rs +++ b/src/backend/generator.rs @@ -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, }); } diff --git a/src/backend/types.rs b/src/backend/types.rs index 47ec44b..b688dd4 100644 --- a/src/backend/types.rs +++ b/src/backend/types.rs @@ -1,4 +1,5 @@ pub struct ARMAsmVar { pub name: String, pub size: usize, + pub align: usize, } \ No newline at end of file