CS153/hw2/test/studenttests.ml
jmug 4c0d93398f Implement readquad, writequad, fetchins and crack.
Signed-off-by: jmug <u.g.a.mariano@gmail.com>
2025-01-31 22:22:53 -08:00

83 lines
1.8 KiB
OCaml

open Util.Assert
open X86
open Sim.Simulator
open Gradedtests
open Asm
(* These tests are provided by you -- they will be graded manually *)
(* You should also add additional test cases here to help you *)
(* debug your program. *)
let test_my =
let bin = [
InsB0 (Movq, Asm.[ ~$42; ~%Rax ]);
InsFrag;
InsFrag;
InsFrag;
InsFrag;
InsFrag;
InsFrag;
InsFrag;
]
in
let asm = [gtext "main"
[
Movq, [~$42; ~%Rax]];
] in
(assert_eqf (fun() -> (assemble asm).text_seg) bin )
let mov_ri =
test_machine
[
InsB0 (Movq, Asm.[ ~$42; ~%Rax ]);
InsFrag;
InsFrag;
InsFrag;
InsFrag;
InsFrag;
InsFrag;
InsFrag;
]
let crack_tests =
let open Asm in
let pu = (Pushq, [~$42]) in
let po = (Popq, [~%Rax]) in
let ca = (Callq, [Ind2 Rax]) in
let re = (Retq, []) in
[
("crack_pushq", assert_eqf (fun() ->
crack pu) ([ Subq, [Imm (Lit 8L); Reg Rsp]
; Movq, [~$42; Ind2 Rsp] ]));
("crack_pop", assert_eqf (fun() ->
crack po) ([ Movq, [Ind2 Rsp; Reg Rax]
; Addq, [Imm (Lit 8L); Reg Rsp] ]));
("crack_call", assert_eqf (fun() ->
crack ca) ([ Subq, [Imm (Lit 8L); Reg Rsp]
; Movq, [Reg Rip; Ind2 Rsp]
; Jmp, [Ind2 Rax] ]));
("crack retq", assert_eqf (fun() ->
crack re) ([ Movq, [Ind2 Rsp; Reg Rip]
; Addq, [Imm (Lit 8L); Reg Rsp] ]));
]
let provided_tests : suite = [
Test ("My Tests", [
("assert", test_my)
]);
Test ("Student provided crack tests", crack_tests);
Test ("Student-Provided Big Test for Part III: Score recorded as PartIIITestCase", [
]);
]