Skip to content

v2.gen.arm64 #

fn Gen.new #

fn Gen.new(mod &ssa.Module) &Gen

fn MachOObject.new #

fn MachOObject.new() &MachOObject

struct Gen #

struct Gen {
	mod &ssa.Module
mut:
	macho &MachOObject

	stack_map      map[int]int
	alloca_offsets map[int]int
	stack_size     int
	curr_offset    int

	block_offsets  map[int]int
	pending_labels map[int][]int

	// Register allocation
	reg_map   map[int]int
	used_regs []int
	next_blk  int
}

fn (Gen) gen #

fn (mut g Gen) gen()

fn (Gen) write_file #

fn (mut g Gen) write_file(path string)

struct MachOObject #

struct MachOObject {
pub mut:
	text_data []u8
	str_data  []u8
	data_data []u8

	relocs    []RelocationInfo
	symbols   []Symbol
	str_table []u8
}

fn (MachOObject) add_symbol #

fn (mut m MachOObject) add_symbol(name string, addr u64, is_ext bool, sect u8) int

fn (MachOObject) add_undefined #

fn (mut m MachOObject) add_undefined(name string) int

fn (MachOObject) add_reloc #

fn (mut m MachOObject) add_reloc(addr int, sym_idx int, typ int, pcrel bool)

fn (MachOObject) write #

fn (mut m MachOObject) write(path string)