feat(backend): Add var align
This commit is contained in:
@@ -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,4 +1,5 @@
|
||||
pub struct ARMAsmVar {
|
||||
pub name: String,
|
||||
pub size: usize,
|
||||
pub align: usize,
|
||||
}
|
||||
Reference in New Issue
Block a user