Fields§
§name: String§functions: Vec<Function<I>>Implementations§
source§impl<I> VCode<I>where
I: Instr,
impl<I> VCode<I>where
I: Instr,
sourcepub fn allocate_regs<A>(&mut self)where
A: RegisterAllocator,
pub fn allocate_regs<A>(&mut self)where
A: RegisterAllocator,
Examples found in repository?
examples/urcl.rs (line 28)
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
fn main() {
let mut builder = ModuleBuilder::default().with_name("test");
let main_func = builder.new_function("main", &[], &Type::Void);
builder.switch_to_function(main_func);
let entry = builder.push_block().unwrap();
builder.switch_to_block(entry);
let val = builder.push_instruction(&Type::Integer(true, 32), Operation::Integer(
true,
69u32.to_le_bytes().to_owned().to_vec())).unwrap();
let val2 = builder.push_instruction(&Type::Integer(true, 32), Operation::Integer(
true,
69u32.to_le_bytes().to_owned().to_vec())).unwrap();
let val3 = builder.push_instruction(&Type::Integer(true, 32), Operation::Add(val, val2)).unwrap();
builder.set_terminator(Terminator::Return(val3));
let module = builder.build();
let mut vcode = module.lower_to_vcode::<_, UrclSelector>();
vcode.allocate_regs::<RegAlloc>();
vcode.emit_assembly();
}sourcepub fn emit_assembly(&self)
pub fn emit_assembly(&self)
Examples found in repository?
examples/urcl.rs (line 29)
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
fn main() {
let mut builder = ModuleBuilder::default().with_name("test");
let main_func = builder.new_function("main", &[], &Type::Void);
builder.switch_to_function(main_func);
let entry = builder.push_block().unwrap();
builder.switch_to_block(entry);
let val = builder.push_instruction(&Type::Integer(true, 32), Operation::Integer(
true,
69u32.to_le_bytes().to_owned().to_vec())).unwrap();
let val2 = builder.push_instruction(&Type::Integer(true, 32), Operation::Integer(
true,
69u32.to_le_bytes().to_owned().to_vec())).unwrap();
let val3 = builder.push_instruction(&Type::Integer(true, 32), Operation::Add(val, val2)).unwrap();
builder.set_terminator(Terminator::Return(val3));
let module = builder.build();
let mut vcode = module.lower_to_vcode::<_, UrclSelector>();
vcode.allocate_regs::<RegAlloc>();
vcode.emit_assembly();
}