From af72ed08c37202cd6c7a8f313d58836f807e38ae Mon Sep 17 00:00:00 2001 From: Hydrostic Date: Tue, 12 May 2026 18:46:01 +0800 Subject: [PATCH] feat(backend): Add var align --- src/backend/generator.rs | 6 ++++-- src/backend/types.rs | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) 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