diff --git a/flap/questions/retrolixToX86_64/01.retrolix b/flap/questions/retrolixToX86_64/01.retrolix new file mode 100644 index 0000000..33b5fee --- /dev/null +++ b/flap/questions/retrolixToX86_64/01.retrolix @@ -0,0 +1,3 @@ +globals () + exit; +end diff --git a/flap/questions/retrolixToX86_64/02.retrolix b/flap/questions/retrolixToX86_64/02.retrolix new file mode 100644 index 0000000..04134a4 --- /dev/null +++ b/flap/questions/retrolixToX86_64/02.retrolix @@ -0,0 +1,26 @@ +globals (x, y, z, k) + x <- copy 6; + %rdi <- copy x; + print_int(); + %rdi <- copy "\n"; + print_string(); + + y <- copy 7; + %rdi <- copy y; + print_int(); + %rdi <- copy "\n"; + print_string(); + + z <- mul y, x; + %rdi <- copy z; + print_int(); + %rdi <- copy "\n"; + print_string(); + + k <- sub z, x; + %rdi <- copy k; + print_int(); + %rdi <- copy "\n"; + print_string(); + +end diff --git a/flap/questions/retrolixToX86_64/03.retrolix b/flap/questions/retrolixToX86_64/03.retrolix new file mode 100644 index 0000000..82d8927 --- /dev/null +++ b/flap/questions/retrolixToX86_64/03.retrolix @@ -0,0 +1,16 @@ +def fact () + %rax <- copy 1; + boucle: jumpif lte %rdi, 1 -> fin, suite; + suite: %rax <- mul %rax, %rdi; + %rdi <- sub %rdi, 1; + jump boucle; + fin: ret; +end + +globals (res) + %rdi <- copy 5; + fact(); + res <- copy %rax; + %rdi <- copy res; + print_int(); +end diff --git a/flap/questions/retrolixToX86_64/Makefile b/flap/questions/retrolixToX86_64/Makefile new file mode 100644 index 0000000..de64643 --- /dev/null +++ b/flap/questions/retrolixToX86_64/Makefile @@ -0,0 +1,9 @@ +FLAP = ../../_build/default/src/flap.exe +TARGET = retrolix + +main: + @for f in $(wildcard *.$(TARGET)); do \ + printf "%s:\n" $$f; \ + ./$(FLAP) -s $(TARGET) -d true -r true $$f; \ + printf "\n"; \ + done