Loader finished.
Signed-off-by: jmug <u.g.a.mariano@gmail.com>
This commit is contained in:
parent
ea6edf6efe
commit
1a122c85b8
1 changed files with 17 additions and 1 deletions
|
|
@ -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;
|
||||||
|
}
|
||||||
;;
|
;;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue