Loader finished.

Signed-off-by: jmug <u.g.a.mariano@gmail.com>
This commit is contained in:
Mariano Uvalle 2025-02-02 00:37:50 -08:00
parent ea6edf6efe
commit 1a122c85b8

View file

@ -530,5 +530,21 @@ let assemble (p : prog) : exec =
may be of use. may be of use.
*) *)
let load { entry; text_pos; data_pos; text_seg; data_seg } : mach = let load { entry; text_pos; data_pos; text_seg; data_seg } : mach =
failwith "load not implemented" let mem = Array.make mem_size InsFrag in
let regs = Array.make 17 0L in
let flags = {fs = false; fz = false; fo = false} in
let sentinel_addr = mem_top -. 8L in
let sentinel_pos = mem_size - 8 in
let text_seg_size = List.length text_seg in
let data_seg_size = List.length data_seg in
regs.(rind Rip) <- entry;
regs.(rind Rsp) <- sentinel_addr;
Array.blit (Array.of_list @@ sbytes_of_int64 exit_addr) 0 mem sentinel_pos 8;
Array.blit (Array.of_list text_seg) 0 mem 0 text_seg_size;
Array.blit (Array.of_list data_seg) 0 mem text_seg_size data_seg_size;
{
flags = flags;
regs = regs;
mem = mem;
}
;; ;;