Merge branch 'master' of gaufre.informatique.univ-paris-diderot.fr:aguatto/compilation-m1-2023
This commit is contained in:
commit
0c61177cab
66 changed files with 1473 additions and 2 deletions
BIN
cours/cours-linearisation.pdf
Normal file
BIN
cours/cours-linearisation.pdf
Normal file
Binary file not shown.
BIN
cours/cours-x86-64.pdf
Normal file
BIN
cours/cours-x86-64.pdf
Normal file
Binary file not shown.
7
flap/tests/06-Retrolix_to_x86-64/01-print-int.expected
Normal file
7
flap/tests/06-Retrolix_to_x86-64/01-print-int.expected
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
Process exited with status exited(0).
|
||||||
|
STDOUT:
|
||||||
|
73
|
||||||
|
STDERR:
|
||||||
|
|
||||||
|
|
||||||
|
|
5
flap/tests/06-Retrolix_to_x86-64/01-print-int.retrolix
Normal file
5
flap/tests/06-Retrolix_to_x86-64/01-print-int.retrolix
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
globals ()
|
||||||
|
l00: %rdi <- copy 73;
|
||||||
|
l01: observe_int();
|
||||||
|
l02: exit;
|
||||||
|
end
|
7
flap/tests/06-Retrolix_to_x86-64/02-double.expected
Normal file
7
flap/tests/06-Retrolix_to_x86-64/02-double.expected
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
Process exited with status exited(0).
|
||||||
|
STDOUT:
|
||||||
|
16
|
||||||
|
STDERR:
|
||||||
|
|
||||||
|
|
||||||
|
|
18
flap/tests/06-Retrolix_to_x86-64/02-double.retrolix
Normal file
18
flap/tests/06-Retrolix_to_x86-64/02-double.retrolix
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
def double_int ( )
|
||||||
|
d0: %rax <- add %rdi, %rdi;
|
||||||
|
d1: ret;
|
||||||
|
end
|
||||||
|
|
||||||
|
globals (x)
|
||||||
|
l00: x <- copy 1;
|
||||||
|
l01: %rbx <- copy 4;
|
||||||
|
l02: jumpif gte %rbx, 1 -> l03, l08;
|
||||||
|
l03: %rdi <- copy x;
|
||||||
|
l04: %rbx <- sub %rbx, 1;
|
||||||
|
l05: double_int();
|
||||||
|
l06: x <- copy %rax;
|
||||||
|
l07: jump l02;
|
||||||
|
l08: %rdi <- copy x;
|
||||||
|
l09: observe_int();
|
||||||
|
l10: exit;
|
||||||
|
end
|
|
@ -0,0 +1,8 @@
|
||||||
|
Process exited with status exited(0).
|
||||||
|
STDOUT:
|
||||||
|
Hello world!
|
||||||
|
|
||||||
|
STDERR:
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
external printf
|
||||||
|
|
||||||
|
globals ()
|
||||||
|
l00: %rdi <- copy "Hello world!\n";
|
||||||
|
l01: %rax <- copy 0;
|
||||||
|
l02: printf();
|
||||||
|
l03: exit;
|
||||||
|
end
|
8
flap/tests/06-Retrolix_to_x86-64/03-print-char.expected
Normal file
8
flap/tests/06-Retrolix_to_x86-64/03-print-char.expected
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
Process exited with status exited(0).
|
||||||
|
STDOUT:
|
||||||
|
a
|
||||||
|
|
||||||
|
STDERR:
|
||||||
|
|
||||||
|
|
||||||
|
|
9
flap/tests/06-Retrolix_to_x86-64/03-print-char.retrolix
Normal file
9
flap/tests/06-Retrolix_to_x86-64/03-print-char.retrolix
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
external printf
|
||||||
|
|
||||||
|
globals ()
|
||||||
|
l00: %rdi <- copy "%c\n";
|
||||||
|
l01: %rsi <- copy 'a';
|
||||||
|
l02: %rax <- copy 0;
|
||||||
|
l03: printf();
|
||||||
|
l04: exit;
|
||||||
|
end
|
|
@ -0,0 +1,8 @@
|
||||||
|
Process exited with status exited(0).
|
||||||
|
STDOUT:
|
||||||
|
The universe is big, it's vast and complicated, and ridiculous and sometimes, very rarely, impossible things just happen and we call them miracles.
|
||||||
|
|
||||||
|
STDERR:
|
||||||
|
|
||||||
|
|
||||||
|
|
10
flap/tests/06-Retrolix_to_x86-64/04-print-global.retrolix
Normal file
10
flap/tests/06-Retrolix_to_x86-64/04-print-global.retrolix
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
external printf
|
||||||
|
|
||||||
|
globals (x)
|
||||||
|
lx : x <- copy "The universe is big, it's vast and complicated, and ridiculous and sometimes, very rarely, impossible things just happen and we call them miracles.";
|
||||||
|
l00: %rdi <- copy "%s\n";
|
||||||
|
l01: %rsi <- copy x;
|
||||||
|
l02: %rax <- copy 0;
|
||||||
|
l03: printf();
|
||||||
|
l04: exit;
|
||||||
|
end
|
|
@ -0,0 +1,9 @@
|
||||||
|
Process exited with status exited(0).
|
||||||
|
STDOUT:
|
||||||
|
The universe is big, it's vast and complicated, and ridiculous and sometimes, very rarely, impossible things just happen and we call them miracles.
|
||||||
|
Like an assignment that works, for instance!
|
||||||
|
|
||||||
|
STDERR:
|
||||||
|
|
||||||
|
|
||||||
|
|
15
flap/tests/06-Retrolix_to_x86-64/05-write-global.retrolix
Normal file
15
flap/tests/06-Retrolix_to_x86-64/05-write-global.retrolix
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
external printf
|
||||||
|
|
||||||
|
globals (x)
|
||||||
|
lx : x <- copy "The universe is big, it's vast and complicated, and ridiculous and sometimes, very rarely, impossible things just happen and we call them miracles.";
|
||||||
|
l00: %rdi <- copy "%s\n";
|
||||||
|
l01: %rsi <- copy x;
|
||||||
|
l02: %rax <- copy 0;
|
||||||
|
l03: printf();
|
||||||
|
lx3: x <- copy "Like an assignment that works, for instance!";
|
||||||
|
l04: %rdi <- copy "%s\n";
|
||||||
|
l05: %rsi <- copy x;
|
||||||
|
l06: %rax <- copy 0;
|
||||||
|
l07: printf();
|
||||||
|
l08: exit;
|
||||||
|
end
|
|
@ -0,0 +1,8 @@
|
||||||
|
Process exited with status exited(0).
|
||||||
|
STDOUT:
|
||||||
|
37
|
||||||
|
|
||||||
|
STDERR:
|
||||||
|
|
||||||
|
|
||||||
|
|
15
flap/tests/06-Retrolix_to_x86-64/06-call-function.retrolix
Normal file
15
flap/tests/06-Retrolix_to_x86-64/06-call-function.retrolix
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
external printf
|
||||||
|
|
||||||
|
def print_one_int ()
|
||||||
|
rax: %rsi <- copy %rdi;
|
||||||
|
l10: %rdi <- copy "%d\n";
|
||||||
|
l11: %rax <- copy 0;
|
||||||
|
l12: printf();
|
||||||
|
l13: ret;
|
||||||
|
end
|
||||||
|
|
||||||
|
globals (x)
|
||||||
|
l01: %rdi <- copy 37;
|
||||||
|
l02: print_one_int();
|
||||||
|
l03: exit;
|
||||||
|
end
|
|
@ -0,0 +1,8 @@
|
||||||
|
Process exited with status exited(0).
|
||||||
|
STDOUT:
|
||||||
|
37 73
|
||||||
|
|
||||||
|
STDERR:
|
||||||
|
|
||||||
|
|
||||||
|
|
19
flap/tests/06-Retrolix_to_x86-64/07-call-function-2.retrolix
Normal file
19
flap/tests/06-Retrolix_to_x86-64/07-call-function-2.retrolix
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
external printf
|
||||||
|
|
||||||
|
def print_two_int ()
|
||||||
|
rax: %rax <- copy %rdi;
|
||||||
|
rbx: %rbx <- copy %rsi;
|
||||||
|
l10: %rdi <- copy "%d %d\n";
|
||||||
|
l11: %rsi <- copy %rax;
|
||||||
|
l12: %rdx <- copy %rbx;
|
||||||
|
l13: %rax <- copy 0;
|
||||||
|
l14: printf();
|
||||||
|
l15: ret;
|
||||||
|
end
|
||||||
|
|
||||||
|
globals (x)
|
||||||
|
l01: %rdi <- copy 37;
|
||||||
|
l02: %rsi <- copy 73;
|
||||||
|
l03: print_two_int();
|
||||||
|
l04: exit;
|
||||||
|
end
|
8
flap/tests/06-Retrolix_to_x86-64/08-use-locals.expected
Normal file
8
flap/tests/06-Retrolix_to_x86-64/08-use-locals.expected
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
Process exited with status exited(0).
|
||||||
|
STDOUT:
|
||||||
|
37 73
|
||||||
|
|
||||||
|
STDERR:
|
||||||
|
|
||||||
|
|
||||||
|
|
20
flap/tests/06-Retrolix_to_x86-64/08-use-locals.retrolix
Normal file
20
flap/tests/06-Retrolix_to_x86-64/08-use-locals.retrolix
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
external printf
|
||||||
|
|
||||||
|
def print_two_int ()
|
||||||
|
local a1, a2:
|
||||||
|
rax: a1 <- copy %rdi;
|
||||||
|
rbx: a2 <- copy %rsi;
|
||||||
|
l10: %rdi <- copy "%d %d\n";
|
||||||
|
l11: %rsi <- copy a1;
|
||||||
|
l12: %rdx <- copy a2;
|
||||||
|
l13: %rax <- copy 0;
|
||||||
|
l14: printf();
|
||||||
|
l15: ret;
|
||||||
|
end
|
||||||
|
|
||||||
|
globals (x)
|
||||||
|
l01: %rdi <- copy 37;
|
||||||
|
l02: %rsi <- copy 73;
|
||||||
|
l03: print_two_int();
|
||||||
|
l04: exit;
|
||||||
|
end
|
|
@ -0,0 +1,8 @@
|
||||||
|
Process exited with status exited(0).
|
||||||
|
STDOUT:
|
||||||
|
37 73 42
|
||||||
|
|
||||||
|
STDERR:
|
||||||
|
|
||||||
|
|
||||||
|
|
23
flap/tests/06-Retrolix_to_x86-64/09-call-function-3.retrolix
Normal file
23
flap/tests/06-Retrolix_to_x86-64/09-call-function-3.retrolix
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
external printf
|
||||||
|
|
||||||
|
def print_three_int ()
|
||||||
|
local a1, a2, a3:
|
||||||
|
a1: a1 <- copy %rdi;
|
||||||
|
a2: a2 <- copy %rsi;
|
||||||
|
a3: a3 <- copy %rdx;
|
||||||
|
l10: %rdi <- copy "%d %d %d\n";
|
||||||
|
l11: %rsi <- copy a1;
|
||||||
|
l12: %rdx <- copy a2;
|
||||||
|
l13: %rcx <- copy a3;
|
||||||
|
l14: %rax <- copy 0;
|
||||||
|
l15: printf();
|
||||||
|
l16: ret;
|
||||||
|
end
|
||||||
|
|
||||||
|
globals (x)
|
||||||
|
l01: %rdi <- copy 37;
|
||||||
|
l02: %rsi <- copy 73;
|
||||||
|
l03: %rdx <- copy 42;
|
||||||
|
l04: print_three_int();
|
||||||
|
l05: exit;
|
||||||
|
end
|
|
@ -0,0 +1,8 @@
|
||||||
|
Process exited with status exited(0).
|
||||||
|
STDOUT:
|
||||||
|
37 73 31 13
|
||||||
|
|
||||||
|
STDERR:
|
||||||
|
|
||||||
|
|
||||||
|
|
26
flap/tests/06-Retrolix_to_x86-64/10-call-function-4.retrolix
Normal file
26
flap/tests/06-Retrolix_to_x86-64/10-call-function-4.retrolix
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
external printf
|
||||||
|
|
||||||
|
def print_four_int ()
|
||||||
|
local a1, a2, a3, a4:
|
||||||
|
a1: a1 <- copy %rdi;
|
||||||
|
a2: a2 <- copy %rsi;
|
||||||
|
a3: a3 <- copy %rdx;
|
||||||
|
a4: a4 <- copy %rcx;
|
||||||
|
l10: %rdi <- copy "%d %d %d %d\n";
|
||||||
|
l11: %rsi <- copy a1;
|
||||||
|
l12: %rdx <- copy a2;
|
||||||
|
l13: %rcx <- copy a3;
|
||||||
|
l14: %r8 <- copy a4;
|
||||||
|
l15: %rax <- copy 0;
|
||||||
|
l16: printf();
|
||||||
|
l17: ret;
|
||||||
|
end
|
||||||
|
|
||||||
|
globals (x)
|
||||||
|
l01: %rdi <- copy 37;
|
||||||
|
l02: %rsi <- copy 73;
|
||||||
|
l03: %rdx <- copy 31;
|
||||||
|
l04: %rcx <- copy 13;
|
||||||
|
l05: print_four_int();
|
||||||
|
l06: exit;
|
||||||
|
end
|
|
@ -0,0 +1,8 @@
|
||||||
|
Process exited with status exited(0).
|
||||||
|
STDOUT:
|
||||||
|
37 73 31 13 0
|
||||||
|
|
||||||
|
STDERR:
|
||||||
|
|
||||||
|
|
||||||
|
|
29
flap/tests/06-Retrolix_to_x86-64/11-call-function-5.retrolix
Normal file
29
flap/tests/06-Retrolix_to_x86-64/11-call-function-5.retrolix
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
external printf
|
||||||
|
|
||||||
|
def print_five_int ()
|
||||||
|
local a1, a2, a3, a4, a5:
|
||||||
|
a1: a1 <- copy %rdi;
|
||||||
|
a2: a2 <- copy %rsi;
|
||||||
|
a3: a3 <- copy %rdx;
|
||||||
|
a4: a4 <- copy %rcx;
|
||||||
|
a5: a5 <- copy %r8;
|
||||||
|
l10: %rdi <- copy "%d %d %d %d %d\n";
|
||||||
|
l11: %rsi <- copy a1;
|
||||||
|
l12: %rdx <- copy a2;
|
||||||
|
l13: %rcx <- copy a3;
|
||||||
|
l14: %r8 <- copy a4;
|
||||||
|
l15: %r9 <- copy a5;
|
||||||
|
l16: %rax <- copy 0;
|
||||||
|
l17: printf();
|
||||||
|
l18: ret;
|
||||||
|
end
|
||||||
|
|
||||||
|
globals (x)
|
||||||
|
l01: %rdi <- copy 37;
|
||||||
|
l02: %rsi <- copy 73;
|
||||||
|
l03: %rdx <- copy 31;
|
||||||
|
l04: %rcx <- copy 13;
|
||||||
|
l05: %r8 <- copy 00;
|
||||||
|
l06: print_five_int();
|
||||||
|
l07: exit;
|
||||||
|
end
|
|
@ -0,0 +1,8 @@
|
||||||
|
Process exited with status exited(0).
|
||||||
|
STDOUT:
|
||||||
|
37 73 31 13 0
|
||||||
|
|
||||||
|
STDERR:
|
||||||
|
|
||||||
|
|
||||||
|
|
31
flap/tests/06-Retrolix_to_x86-64/12-call-function-6.retrolix
Normal file
31
flap/tests/06-Retrolix_to_x86-64/12-call-function-6.retrolix
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
external printf
|
||||||
|
|
||||||
|
def print_six_int ()
|
||||||
|
local a1, a2, a3, a4, a5, a6:
|
||||||
|
a1: a1 <- copy %rdi;
|
||||||
|
a2: a2 <- copy %rsi;
|
||||||
|
a3: a3 <- copy %rdx;
|
||||||
|
a4: a4 <- copy %rcx;
|
||||||
|
a5: a5 <- copy %r8;
|
||||||
|
a6: a6 <- copy %r9;
|
||||||
|
l10: %rdi <- copy "%d %d %d %d %d\n";
|
||||||
|
l11: %rsi <- copy a1;
|
||||||
|
l12: %rdx <- copy a2;
|
||||||
|
l13: %rcx <- copy a3;
|
||||||
|
l14: %r8 <- copy a4;
|
||||||
|
l15: %r9 <- copy a6;
|
||||||
|
l16: %rax <- copy 0;
|
||||||
|
l17: printf();
|
||||||
|
l18: ret;
|
||||||
|
end
|
||||||
|
|
||||||
|
globals (x)
|
||||||
|
l01: %rdi <- copy 37;
|
||||||
|
l02: %rsi <- copy 73;
|
||||||
|
l03: %rdx <- copy 31;
|
||||||
|
l04: %rcx <- copy 13;
|
||||||
|
l05: %r8 <- copy 00;
|
||||||
|
l06: %r9 <- copy 00;
|
||||||
|
l07: print_six_int();
|
||||||
|
l08: exit;
|
||||||
|
end
|
|
@ -0,0 +1,8 @@
|
||||||
|
Process exited with status exited(0).
|
||||||
|
STDOUT:
|
||||||
|
37 73 31 13 0 99
|
||||||
|
|
||||||
|
STDERR:
|
||||||
|
|
||||||
|
|
||||||
|
|
31
flap/tests/06-Retrolix_to_x86-64/13-call-function-7.retrolix
Normal file
31
flap/tests/06-Retrolix_to_x86-64/13-call-function-7.retrolix
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
external printf
|
||||||
|
|
||||||
|
def print_six_int_for_real ()
|
||||||
|
local a1, a2, a3, a4, a5, a6:
|
||||||
|
a1: a1 <- copy %rdi;
|
||||||
|
a2: a2 <- copy %rsi;
|
||||||
|
a3: a3 <- copy %rdx;
|
||||||
|
a4: a4 <- copy %rcx;
|
||||||
|
a5: a5 <- copy %r8;
|
||||||
|
a6: a6 <- copy %r9;
|
||||||
|
l10: %rdi <- copy "%d %d %d %d %d %d\n";
|
||||||
|
l11: %rsi <- copy a1;
|
||||||
|
l12: %rdx <- copy a2;
|
||||||
|
l13: %rcx <- copy a3;
|
||||||
|
l14: %r8 <- copy a4;
|
||||||
|
l15: %r9 <- copy a5;
|
||||||
|
l16: %rax <- copy 0;
|
||||||
|
l17: printf(a6);
|
||||||
|
l18: ret;
|
||||||
|
end
|
||||||
|
|
||||||
|
globals (x)
|
||||||
|
l01: %rdi <- copy 37;
|
||||||
|
l02: %rsi <- copy 73;
|
||||||
|
l03: %rdx <- copy 31;
|
||||||
|
l04: %rcx <- copy 13;
|
||||||
|
l05: %r8 <- copy 00;
|
||||||
|
l06: %r9 <- copy 99;
|
||||||
|
l07: print_six_int_for_real();
|
||||||
|
l08: exit;
|
||||||
|
end
|
|
@ -0,0 +1,8 @@
|
||||||
|
Process exited with status exited(0).
|
||||||
|
STDOUT:
|
||||||
|
37 73 31 13 0 99 42
|
||||||
|
|
||||||
|
STDERR:
|
||||||
|
|
||||||
|
|
||||||
|
|
31
flap/tests/06-Retrolix_to_x86-64/14-call-function-8.retrolix
Normal file
31
flap/tests/06-Retrolix_to_x86-64/14-call-function-8.retrolix
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
external printf
|
||||||
|
|
||||||
|
def print_seven_int_for_real (a7)
|
||||||
|
local a1, a2, a3, a4, a5, a6:
|
||||||
|
a1: a1 <- copy %rdi;
|
||||||
|
a2: a2 <- copy %rsi;
|
||||||
|
a3: a3 <- copy %rdx;
|
||||||
|
a4: a4 <- copy %rcx;
|
||||||
|
a5: a5 <- copy %r8;
|
||||||
|
a6: a6 <- copy %r9;
|
||||||
|
l10: %rdi <- copy "%d %d %d %d %d %d %d\n";
|
||||||
|
l11: %rsi <- copy a1;
|
||||||
|
l12: %rdx <- copy a2;
|
||||||
|
l13: %rcx <- copy a3;
|
||||||
|
l14: %r8 <- copy a4;
|
||||||
|
l15: %r9 <- copy a5;
|
||||||
|
l16: %rax <- copy 0;
|
||||||
|
l17: printf(a6, a7);
|
||||||
|
l18: ret;
|
||||||
|
end
|
||||||
|
|
||||||
|
globals (x)
|
||||||
|
l01: %rdi <- copy 37;
|
||||||
|
l02: %rsi <- copy 73;
|
||||||
|
l03: %rdx <- copy 31;
|
||||||
|
l04: %rcx <- copy 13;
|
||||||
|
l05: %r8 <- copy 00;
|
||||||
|
l06: %r9 <- copy 99;
|
||||||
|
l07: print_seven_int_for_real(42);
|
||||||
|
l08: exit;
|
||||||
|
end
|
|
@ -0,0 +1,8 @@
|
||||||
|
Process exited with status exited(0).
|
||||||
|
STDOUT:
|
||||||
|
37
|
||||||
|
|
||||||
|
STDERR:
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
external printf
|
||||||
|
|
||||||
|
def print_one_int ()
|
||||||
|
local a1:
|
||||||
|
a1: a1 <- copy %rdi;
|
||||||
|
l00: %rdi <- copy "%d\n";
|
||||||
|
l11: %rsi <- copy a1;
|
||||||
|
l12: %rax <- copy 0;
|
||||||
|
l13: printf();
|
||||||
|
l14: ret;
|
||||||
|
end
|
||||||
|
|
||||||
|
globals (x)
|
||||||
|
local f:
|
||||||
|
l01: %rdi <- copy 37;
|
||||||
|
l02: f <- copy &print_one_int;
|
||||||
|
l03: call f();
|
||||||
|
l04: exit;
|
||||||
|
end
|
|
@ -0,0 +1,8 @@
|
||||||
|
Process exited with status exited(0).
|
||||||
|
STDOUT:
|
||||||
|
110
|
||||||
|
|
||||||
|
STDERR:
|
||||||
|
|
||||||
|
|
||||||
|
|
17
flap/tests/06-Retrolix_to_x86-64/16-arithmetic-1.retrolix
Normal file
17
flap/tests/06-Retrolix_to_x86-64/16-arithmetic-1.retrolix
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
external printf
|
||||||
|
|
||||||
|
def print_one_int ()
|
||||||
|
local a1:
|
||||||
|
a1: a1 <- copy %rdi;
|
||||||
|
l00: %rdi <- copy "%d\n";
|
||||||
|
l11: %rsi <- copy a1;
|
||||||
|
l12: %rax <- copy 0;
|
||||||
|
l13: printf();
|
||||||
|
l14: ret;
|
||||||
|
end
|
||||||
|
|
||||||
|
globals (x)
|
||||||
|
l01: %rdi <- add 37, 73;
|
||||||
|
l03: print_one_int();
|
||||||
|
l04: exit;
|
||||||
|
end
|
|
@ -0,0 +1,8 @@
|
||||||
|
Process exited with status exited(0).
|
||||||
|
STDOUT:
|
||||||
|
2701
|
||||||
|
|
||||||
|
STDERR:
|
||||||
|
|
||||||
|
|
||||||
|
|
17
flap/tests/06-Retrolix_to_x86-64/17-arithmetic-3.retrolix
Normal file
17
flap/tests/06-Retrolix_to_x86-64/17-arithmetic-3.retrolix
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
external printf
|
||||||
|
|
||||||
|
def print_one_int ()
|
||||||
|
local a1:
|
||||||
|
a1: a1 <- copy %rdi;
|
||||||
|
l00: %rdi <- copy "%d\n";
|
||||||
|
l11: %rsi <- copy a1;
|
||||||
|
l12: %rax <- copy 0;
|
||||||
|
l13: printf();
|
||||||
|
l14: ret;
|
||||||
|
end
|
||||||
|
|
||||||
|
globals (x)
|
||||||
|
l01: %rdi <- mul 37, 73;
|
||||||
|
l03: print_one_int();
|
||||||
|
l04: exit;
|
||||||
|
end
|
|
@ -0,0 +1,8 @@
|
||||||
|
Process exited with status exited(0).
|
||||||
|
STDOUT:
|
||||||
|
-36
|
||||||
|
|
||||||
|
STDERR:
|
||||||
|
|
||||||
|
|
||||||
|
|
17
flap/tests/06-Retrolix_to_x86-64/18-arithmetic-4.retrolix
Normal file
17
flap/tests/06-Retrolix_to_x86-64/18-arithmetic-4.retrolix
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
external printf
|
||||||
|
|
||||||
|
def print_one_int ()
|
||||||
|
local a1:
|
||||||
|
a1: a1 <- copy %rdi;
|
||||||
|
l10: %rdi <- copy "%d\n";
|
||||||
|
l11: %rsi <- copy a1;
|
||||||
|
l12: %rax <- copy 0;
|
||||||
|
l13: printf();
|
||||||
|
l14: ret;
|
||||||
|
end
|
||||||
|
|
||||||
|
globals (x)
|
||||||
|
l01: %rdi <- sub 37, 73;
|
||||||
|
l03: print_one_int();
|
||||||
|
l04: exit;
|
||||||
|
end
|
|
@ -0,0 +1,8 @@
|
||||||
|
Process exited with status exited(0).
|
||||||
|
STDOUT:
|
||||||
|
0
|
||||||
|
|
||||||
|
STDERR:
|
||||||
|
|
||||||
|
|
||||||
|
|
17
flap/tests/06-Retrolix_to_x86-64/19-arithmetic-5.retrolix
Normal file
17
flap/tests/06-Retrolix_to_x86-64/19-arithmetic-5.retrolix
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
external printf
|
||||||
|
|
||||||
|
def print_one_int ()
|
||||||
|
local a1:
|
||||||
|
a1: a1 <- copy %rdi;
|
||||||
|
l10: %rdi <- copy "%d\n";
|
||||||
|
l11: %rsi <- copy a1;
|
||||||
|
l12: %rax <- copy 0;
|
||||||
|
l13: printf();
|
||||||
|
l14: ret;
|
||||||
|
end
|
||||||
|
|
||||||
|
globals (x)
|
||||||
|
l01: %rdi <- div 37, 73;
|
||||||
|
l03: print_one_int();
|
||||||
|
l04: exit;
|
||||||
|
end
|
11
flap/tests/06-Retrolix_to_x86-64/20-logic.expected
Normal file
11
flap/tests/06-Retrolix_to_x86-64/20-logic.expected
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
Process exited with status exited(0).
|
||||||
|
STDOUT:
|
||||||
|
0
|
||||||
|
1
|
||||||
|
0
|
||||||
|
0
|
||||||
|
|
||||||
|
STDERR:
|
||||||
|
|
||||||
|
|
||||||
|
|
23
flap/tests/06-Retrolix_to_x86-64/20-logic.retrolix
Normal file
23
flap/tests/06-Retrolix_to_x86-64/20-logic.retrolix
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
external printf
|
||||||
|
|
||||||
|
def print_one_int ()
|
||||||
|
local a1:
|
||||||
|
a1: a1 <- copy %rdi;
|
||||||
|
l00: %rdi <- copy "%d\n";
|
||||||
|
l01: %rsi <- copy a1;
|
||||||
|
l02: %rax <- copy 0;
|
||||||
|
l03: printf();
|
||||||
|
l04: ret;
|
||||||
|
end
|
||||||
|
|
||||||
|
globals (x)
|
||||||
|
l11: %rdi <- and 1, 0;
|
||||||
|
l12: print_one_int();
|
||||||
|
l13: %rdi <- and 1, 1;
|
||||||
|
l14: print_one_int();
|
||||||
|
l15: %rdi <- and 0, 1;
|
||||||
|
l16: print_one_int();
|
||||||
|
l17: %rdi <- and 0, 0;
|
||||||
|
l18: print_one_int();
|
||||||
|
l19: exit;
|
||||||
|
end
|
11
flap/tests/06-Retrolix_to_x86-64/21-logic-2.expected
Normal file
11
flap/tests/06-Retrolix_to_x86-64/21-logic-2.expected
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
Process exited with status exited(0).
|
||||||
|
STDOUT:
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
0
|
||||||
|
|
||||||
|
STDERR:
|
||||||
|
|
||||||
|
|
||||||
|
|
23
flap/tests/06-Retrolix_to_x86-64/21-logic-2.retrolix
Normal file
23
flap/tests/06-Retrolix_to_x86-64/21-logic-2.retrolix
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
external printf
|
||||||
|
|
||||||
|
def print_one_int ()
|
||||||
|
local a1:
|
||||||
|
a1: a1 <- copy %rdi;
|
||||||
|
l00: %rdi <- copy "%d\n";
|
||||||
|
l01: %rsi <- copy a1;
|
||||||
|
l02: %rax <- copy 0;
|
||||||
|
l03: printf();
|
||||||
|
l04: ret;
|
||||||
|
end
|
||||||
|
|
||||||
|
globals (x)
|
||||||
|
l11: %rdi <- or 1, 0;
|
||||||
|
l12: print_one_int();
|
||||||
|
l13: %rdi <- or 1, 1;
|
||||||
|
l14: print_one_int();
|
||||||
|
l15: %rdi <- or 0, 1;
|
||||||
|
l16: print_one_int();
|
||||||
|
l17: %rdi <- or 0, 0;
|
||||||
|
l18: print_one_int();
|
||||||
|
l19: exit;
|
||||||
|
end
|
8
flap/tests/06-Retrolix_to_x86-64/22-comparison.expected
Normal file
8
flap/tests/06-Retrolix_to_x86-64/22-comparison.expected
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
Process exited with status exited(0).
|
||||||
|
STDOUT:
|
||||||
|
gt
|
||||||
|
|
||||||
|
STDERR:
|
||||||
|
|
||||||
|
|
||||||
|
|
12
flap/tests/06-Retrolix_to_x86-64/22-comparison.retrolix
Normal file
12
flap/tests/06-Retrolix_to_x86-64/22-comparison.retrolix
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
external printf
|
||||||
|
|
||||||
|
globals (x)
|
||||||
|
l11: jumpif gt 1, 0 -> l17, l20;
|
||||||
|
l17: %rdi <- copy "gt\n";
|
||||||
|
l18: printf();
|
||||||
|
l19: exit;
|
||||||
|
l20: %rdi <- copy "not gt\n";
|
||||||
|
l21: %rax <- copy 0;
|
||||||
|
l22: printf();
|
||||||
|
l23: exit;
|
||||||
|
end
|
|
@ -0,0 +1,8 @@
|
||||||
|
Process exited with status exited(0).
|
||||||
|
STDOUT:
|
||||||
|
not lt
|
||||||
|
|
||||||
|
STDERR:
|
||||||
|
|
||||||
|
|
||||||
|
|
12
flap/tests/06-Retrolix_to_x86-64/23-comparison-2.retrolix
Normal file
12
flap/tests/06-Retrolix_to_x86-64/23-comparison-2.retrolix
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
external printf
|
||||||
|
|
||||||
|
globals (x)
|
||||||
|
l11: jumpif lt 1, 0 -> l17, l20;
|
||||||
|
l17: %rdi <- copy "lt\n";
|
||||||
|
l18: printf();
|
||||||
|
l19: exit;
|
||||||
|
l20: %rdi <- copy "not lt\n";
|
||||||
|
l21: %rax <- copy 0;
|
||||||
|
l22: printf();
|
||||||
|
l23: exit;
|
||||||
|
end
|
|
@ -0,0 +1,8 @@
|
||||||
|
Process exited with status exited(0).
|
||||||
|
STDOUT:
|
||||||
|
gte
|
||||||
|
|
||||||
|
STDERR:
|
||||||
|
|
||||||
|
|
||||||
|
|
12
flap/tests/06-Retrolix_to_x86-64/24-comparison-3.retrolix
Normal file
12
flap/tests/06-Retrolix_to_x86-64/24-comparison-3.retrolix
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
external printf
|
||||||
|
|
||||||
|
globals (x)
|
||||||
|
l11: jumpif gte 1, 1 -> l17, l20;
|
||||||
|
l17: %rdi <- copy "gte\n";
|
||||||
|
l18: printf();
|
||||||
|
l19: exit;
|
||||||
|
l20: %rdi <- copy "not gte\n";
|
||||||
|
l21: %rax <- copy 0;
|
||||||
|
l22: printf();
|
||||||
|
l23: exit;
|
||||||
|
end
|
|
@ -0,0 +1,8 @@
|
||||||
|
Process exited with status exited(0).
|
||||||
|
STDOUT:
|
||||||
|
lte
|
||||||
|
|
||||||
|
STDERR:
|
||||||
|
|
||||||
|
|
||||||
|
|
12
flap/tests/06-Retrolix_to_x86-64/25-comparison-4.retrolix
Normal file
12
flap/tests/06-Retrolix_to_x86-64/25-comparison-4.retrolix
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
external printf
|
||||||
|
|
||||||
|
globals (x)
|
||||||
|
l11: jumpif lte 1, 1 -> l17, l20;
|
||||||
|
l17: %rdi <- copy "lte\n";
|
||||||
|
l18: printf();
|
||||||
|
l19: exit;
|
||||||
|
l20: %rdi <- copy "not lte\n";
|
||||||
|
l21: %rax <- copy 0;
|
||||||
|
l22: printf();
|
||||||
|
l23: exit;
|
||||||
|
end
|
|
@ -0,0 +1,8 @@
|
||||||
|
Process exited with status exited(0).
|
||||||
|
STDOUT:
|
||||||
|
eq
|
||||||
|
|
||||||
|
STDERR:
|
||||||
|
|
||||||
|
|
||||||
|
|
12
flap/tests/06-Retrolix_to_x86-64/26-comparison-5.retrolix
Normal file
12
flap/tests/06-Retrolix_to_x86-64/26-comparison-5.retrolix
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
external printf
|
||||||
|
|
||||||
|
globals (x)
|
||||||
|
l11: jumpif eq 1, 1 -> l17, l20;
|
||||||
|
l17: %rdi <- copy "eq\n";
|
||||||
|
l18: printf();
|
||||||
|
l19: exit;
|
||||||
|
l20: %rdi <- copy "not eq\n";
|
||||||
|
l21: %rax <- copy 0;
|
||||||
|
l22: printf();
|
||||||
|
l23: exit;
|
||||||
|
end
|
29
flap/tests/06-Retrolix_to_x86-64/27-jump.expected
Normal file
29
flap/tests/06-Retrolix_to_x86-64/27-jump.expected
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
Process exited with status exited(0).
|
||||||
|
STDOUT:
|
||||||
|
1 jump
|
||||||
|
2 jump
|
||||||
|
3 jump
|
||||||
|
4 jump
|
||||||
|
5 jump
|
||||||
|
6 jump
|
||||||
|
7 jump
|
||||||
|
8 jump
|
||||||
|
9 jump
|
||||||
|
10 jump
|
||||||
|
11 jump
|
||||||
|
12 jump
|
||||||
|
13 jump
|
||||||
|
14 jump
|
||||||
|
15 jump
|
||||||
|
16 jump
|
||||||
|
17 jump
|
||||||
|
18 jump
|
||||||
|
19 jump
|
||||||
|
20 jump
|
||||||
|
21 jump
|
||||||
|
street
|
||||||
|
|
||||||
|
STDERR:
|
||||||
|
|
||||||
|
|
||||||
|
|
16
flap/tests/06-Retrolix_to_x86-64/27-jump.retrolix
Normal file
16
flap/tests/06-Retrolix_to_x86-64/27-jump.retrolix
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
external printf
|
||||||
|
|
||||||
|
globals (x)
|
||||||
|
l00: %rbx <- copy 1;
|
||||||
|
l01: jumpif eq %rbx, 22 -> l17, l11;
|
||||||
|
l11: %rdi <- copy "%d jump\n";
|
||||||
|
l12: %rsi <- copy %rbx;
|
||||||
|
l13: %rax <- copy 0;
|
||||||
|
l14: printf();
|
||||||
|
l15: %rbx <- add %rbx, 1;
|
||||||
|
ll6: jump l01;
|
||||||
|
l17: %rdi <- copy "street\n";
|
||||||
|
l18: %rax <- copy 0;
|
||||||
|
l20: printf();
|
||||||
|
l21: exit;
|
||||||
|
end
|
14
flap/tests/06-Retrolix_to_x86-64/28-switch.expected
Normal file
14
flap/tests/06-Retrolix_to_x86-64/28-switch.expected
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
Process exited with status exited(0).
|
||||||
|
STDOUT:
|
||||||
|
rdi = 0
|
||||||
|
rdi = 1
|
||||||
|
rdi = 2 or 3
|
||||||
|
rdi = 2 or 3
|
||||||
|
rdi <> 0, 1, 2, 3
|
||||||
|
rdi <> 0, 1, 2, 3
|
||||||
|
rdi <> 0, 1, 2, 3
|
||||||
|
|
||||||
|
STDERR:
|
||||||
|
|
||||||
|
|
||||||
|
|
35
flap/tests/06-Retrolix_to_x86-64/28-switch.retrolix
Normal file
35
flap/tests/06-Retrolix_to_x86-64/28-switch.retrolix
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
external printf
|
||||||
|
|
||||||
|
def check ()
|
||||||
|
c01: switch %rdi -> c02, c04, c06, c06 orelse c08;
|
||||||
|
c02: %rdi <- copy "rdi = 0\n";
|
||||||
|
c03: jump c10;
|
||||||
|
c04: %rdi <- copy "rdi = 1\n";
|
||||||
|
c05: jump c10;
|
||||||
|
c06: %rdi <- copy "rdi = 2 or 3\n";
|
||||||
|
c07: jump c10;
|
||||||
|
c08: %rdi <- copy "rdi <> 0, 1, 2, 3\n";
|
||||||
|
c09: jump c10;
|
||||||
|
c10: %rax <- copy 0;
|
||||||
|
c11: printf ();
|
||||||
|
c12: ret;
|
||||||
|
end
|
||||||
|
|
||||||
|
globals (x)
|
||||||
|
l00: %rdi <- copy 0;
|
||||||
|
l01: check ();
|
||||||
|
l02: %rdi <- copy 1;
|
||||||
|
l03: check ();
|
||||||
|
l04: %rdi <- copy 2;
|
||||||
|
l05: check ();
|
||||||
|
l06: %rdi <- copy 3;
|
||||||
|
l07: check ();
|
||||||
|
l08: %rdi <- copy 4;
|
||||||
|
l09: check ();
|
||||||
|
l10: %rdi <- copy 5;
|
||||||
|
l11: check ();
|
||||||
|
l12: %rdi <- copy 73;
|
||||||
|
l13: check ();
|
||||||
|
l14: %rdi <- copy 0;
|
||||||
|
l15: exit;
|
||||||
|
end
|
127
flap/tests/06-Retrolix_to_x86-64/29-fact-slam.expected
Normal file
127
flap/tests/06-Retrolix_to_x86-64/29-fact-slam.expected
Normal file
|
@ -0,0 +1,127 @@
|
||||||
|
Process exited with status exited(0).
|
||||||
|
STDOUT:
|
||||||
|
fact(1) = 1
|
||||||
|
fact_iter(1) = 1
|
||||||
|
fact_adapt(1) = 1
|
||||||
|
fact_tailrec(1) = 1
|
||||||
|
fact(2) = 2
|
||||||
|
fact_iter(2) = 2
|
||||||
|
fact_adapt(2) = 2
|
||||||
|
fact_tailrec(2) = 2
|
||||||
|
fact(3) = 6
|
||||||
|
fact_iter(3) = 6
|
||||||
|
fact_adapt(3) = 6
|
||||||
|
fact_tailrec(3) = 6
|
||||||
|
fact(4) = 24
|
||||||
|
fact_iter(4) = 24
|
||||||
|
fact_adapt(4) = 24
|
||||||
|
fact_tailrec(4) = 24
|
||||||
|
fact(5) = 120
|
||||||
|
fact_iter(5) = 120
|
||||||
|
fact_adapt(5) = 120
|
||||||
|
fact_tailrec(5) = 120
|
||||||
|
fact(6) = 720
|
||||||
|
fact_iter(6) = 720
|
||||||
|
fact_adapt(6) = 720
|
||||||
|
fact_tailrec(6) = 720
|
||||||
|
fact(7) = 5040
|
||||||
|
fact_iter(7) = 5040
|
||||||
|
fact_adapt(7) = 5040
|
||||||
|
fact_tailrec(7) = 5040
|
||||||
|
fact(8) = 40320
|
||||||
|
fact_iter(8) = 40320
|
||||||
|
fact_adapt(8) = 40320
|
||||||
|
fact_tailrec(8) = 40320
|
||||||
|
fact(9) = 362880
|
||||||
|
fact_iter(9) = 362880
|
||||||
|
fact_adapt(9) = 362880
|
||||||
|
fact_tailrec(9) = 362880
|
||||||
|
fact(10) = 3628800
|
||||||
|
fact_iter(10) = 3628800
|
||||||
|
fact_adapt(10) = 3628800
|
||||||
|
fact_tailrec(10) = 3628800
|
||||||
|
fact(11) = 39916800
|
||||||
|
fact_iter(11) = 39916800
|
||||||
|
fact_adapt(11) = 39916800
|
||||||
|
fact_tailrec(11) = 39916800
|
||||||
|
fact(12) = 479001600
|
||||||
|
fact_iter(12) = 479001600
|
||||||
|
fact_adapt(12) = 479001600
|
||||||
|
fact_tailrec(12) = 479001600
|
||||||
|
fact(13) = 1932053504
|
||||||
|
fact_iter(13) = 1932053504
|
||||||
|
fact_adapt(13) = 1932053504
|
||||||
|
fact_tailrec(13) = 1932053504
|
||||||
|
fact(14) = 1278945280
|
||||||
|
fact_iter(14) = 1278945280
|
||||||
|
fact_adapt(14) = 1278945280
|
||||||
|
fact_tailrec(14) = 1278945280
|
||||||
|
fact(15) = 2004310016
|
||||||
|
fact_iter(15) = 2004310016
|
||||||
|
fact_adapt(15) = 2004310016
|
||||||
|
fact_tailrec(15) = 2004310016
|
||||||
|
fact(16) = 2004189184
|
||||||
|
fact_iter(16) = 2004189184
|
||||||
|
fact_adapt(16) = 2004189184
|
||||||
|
fact_tailrec(16) = 2004189184
|
||||||
|
fact(17) = -288522240
|
||||||
|
fact_iter(17) = -288522240
|
||||||
|
fact_adapt(17) = -288522240
|
||||||
|
fact_tailrec(17) = -288522240
|
||||||
|
fact(18) = -898433024
|
||||||
|
fact_iter(18) = -898433024
|
||||||
|
fact_adapt(18) = -898433024
|
||||||
|
fact_tailrec(18) = -898433024
|
||||||
|
fact(19) = 109641728
|
||||||
|
fact_iter(19) = 109641728
|
||||||
|
fact_adapt(19) = 109641728
|
||||||
|
fact_tailrec(19) = 109641728
|
||||||
|
fact(20) = -2102132736
|
||||||
|
fact_iter(20) = -2102132736
|
||||||
|
fact_adapt(20) = -2102132736
|
||||||
|
fact_tailrec(20) = -2102132736
|
||||||
|
fact(21) = -1195114496
|
||||||
|
fact_iter(21) = -1195114496
|
||||||
|
fact_adapt(21) = -1195114496
|
||||||
|
fact_tailrec(21) = -1195114496
|
||||||
|
fact(22) = -522715136
|
||||||
|
fact_iter(22) = -522715136
|
||||||
|
fact_adapt(22) = -522715136
|
||||||
|
fact_tailrec(22) = -522715136
|
||||||
|
fact(23) = 862453760
|
||||||
|
fact_iter(23) = 862453760
|
||||||
|
fact_adapt(23) = 862453760
|
||||||
|
fact_tailrec(23) = 862453760
|
||||||
|
fact(24) = -775946240
|
||||||
|
fact_iter(24) = -775946240
|
||||||
|
fact_adapt(24) = -775946240
|
||||||
|
fact_tailrec(24) = -775946240
|
||||||
|
fact(25) = 2076180480
|
||||||
|
fact_iter(25) = 2076180480
|
||||||
|
fact_adapt(25) = 2076180480
|
||||||
|
fact_tailrec(25) = 2076180480
|
||||||
|
fact(26) = -1853882368
|
||||||
|
fact_iter(26) = -1853882368
|
||||||
|
fact_adapt(26) = -1853882368
|
||||||
|
fact_tailrec(26) = -1853882368
|
||||||
|
fact(27) = 1484783616
|
||||||
|
fact_iter(27) = 1484783616
|
||||||
|
fact_adapt(27) = 1484783616
|
||||||
|
fact_tailrec(27) = 1484783616
|
||||||
|
fact(28) = -1375731712
|
||||||
|
fact_iter(28) = -1375731712
|
||||||
|
fact_adapt(28) = -1375731712
|
||||||
|
fact_tailrec(28) = -1375731712
|
||||||
|
fact(29) = -1241513984
|
||||||
|
fact_iter(29) = -1241513984
|
||||||
|
fact_adapt(29) = -1241513984
|
||||||
|
fact_tailrec(29) = -1241513984
|
||||||
|
fact(30) = 1409286144
|
||||||
|
fact_iter(30) = 1409286144
|
||||||
|
fact_adapt(30) = 1409286144
|
||||||
|
fact_tailrec(30) = 1409286144
|
||||||
|
|
||||||
|
STDERR:
|
||||||
|
|
||||||
|
|
||||||
|
|
98
flap/tests/06-Retrolix_to_x86-64/29-fact-slam.retrolix
Normal file
98
flap/tests/06-Retrolix_to_x86-64/29-fact-slam.retrolix
Normal file
|
@ -0,0 +1,98 @@
|
||||||
|
external printf
|
||||||
|
|
||||||
|
def fact ( )
|
||||||
|
local x:
|
||||||
|
f1: jumpif lte %rdi, 1 -> f2, f4;
|
||||||
|
f2: %rax <- copy 1;
|
||||||
|
f3: ret;
|
||||||
|
f4: x <- copy %rdi;
|
||||||
|
f5: %rdi <- sub %rdi, 1;
|
||||||
|
f6: fact();
|
||||||
|
f7: %rax <- mul %rax, x;
|
||||||
|
f8: ret;
|
||||||
|
end
|
||||||
|
|
||||||
|
def fact_tailrec_body ( )
|
||||||
|
ft1: jumpif lte %rdi, 1 -> ft2, ft4;
|
||||||
|
ft2: %rax <- copy %rsi;
|
||||||
|
ft3: ret;
|
||||||
|
ft4: %rsi <- mul %rsi, %rdi;
|
||||||
|
ft5: %rdi <- sub %rdi, 1;
|
||||||
|
ft6: fact_tailrec_body ( ) tail;
|
||||||
|
end
|
||||||
|
|
||||||
|
def fact_tailrec ( )
|
||||||
|
ftr1: %rsi <- copy 1;
|
||||||
|
ftr2: fact_tailrec_body ( ) tail;
|
||||||
|
end
|
||||||
|
|
||||||
|
def fact_iter ( )
|
||||||
|
y1: %rax <- copy 1;
|
||||||
|
y2: jumpif lte %rdi, 1 -> y6, y3;
|
||||||
|
y3: %rax <- mul %rax, %rdi;
|
||||||
|
y4: %rdi <- sub %rdi, 1;
|
||||||
|
y5: jump y2;
|
||||||
|
y6: ret;
|
||||||
|
end
|
||||||
|
|
||||||
|
def fact_adapt ( )
|
||||||
|
o1: switch %rdi -> o11, o11, o13, o15, o17, o19 orelse oE;
|
||||||
|
o11: %rax <- copy 1;
|
||||||
|
o12: ret;
|
||||||
|
o13: %rax <- copy 2;
|
||||||
|
o14: ret;
|
||||||
|
o15: %rax <- copy 6;
|
||||||
|
o16: ret;
|
||||||
|
o17: %rax <- copy 24;
|
||||||
|
o18: ret;
|
||||||
|
o19: fact ( ) tail;
|
||||||
|
oE: fact_iter ( ) tail;
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_fact_impl ( )
|
||||||
|
local saved_r12:
|
||||||
|
tf0: saved_r12 <- copy %r12;
|
||||||
|
tf1: %rax <- copy %rdi;
|
||||||
|
tf2: %rdi <- copy %rsi;
|
||||||
|
tf3: %rbx <- copy %rdx;
|
||||||
|
tf4: %r12 <- copy %rsi;
|
||||||
|
tf5: call %rax ();
|
||||||
|
tf6: %rdi <- copy "%s(%d) = %d\n";
|
||||||
|
tf7: %rsi <- copy %rbx;
|
||||||
|
tf8: %rdx <- copy %r12;
|
||||||
|
tf9: %rcx <- copy %rax;
|
||||||
|
tf10: %rax <- copy 0;
|
||||||
|
tf11: printf ();
|
||||||
|
tf12: %r12 <- copy saved_r12;
|
||||||
|
tf13: ret;
|
||||||
|
end
|
||||||
|
|
||||||
|
globals ( )
|
||||||
|
local saved_r12, saved_r13:
|
||||||
|
xx: saved_r12 <- copy %r12;
|
||||||
|
xy: saved_r13 <- copy %r13;
|
||||||
|
x0: %r12 <- copy 30;
|
||||||
|
x1: %r13 <- copy 1;
|
||||||
|
x2: jumpif lte %r13, %r12 -> x3, xEND;
|
||||||
|
x3: %rdi <- copy &fact;
|
||||||
|
x4: %rsi <- copy %r13;
|
||||||
|
x5: %rdx <- copy "fact";
|
||||||
|
x6: test_fact_impl ( );
|
||||||
|
x7: %rdi <- copy &fact_iter;
|
||||||
|
x8: %rsi <- copy %r13;
|
||||||
|
x9: %rdx <- copy "fact_iter";
|
||||||
|
x10: test_fact_impl ( );
|
||||||
|
x11: %rdi <- copy &fact_adapt;
|
||||||
|
x12: %rsi <- copy %r13;
|
||||||
|
x13: %rdx <- copy "fact_adapt";
|
||||||
|
x14: test_fact_impl ( );
|
||||||
|
x15: %rdi <- copy &fact_tailrec;
|
||||||
|
x16: %rsi <- copy %r13;
|
||||||
|
x17: %rdx <- copy "fact_tailrec";
|
||||||
|
x18: test_fact_impl ( );
|
||||||
|
x19: %r13 <- add %r13, 1;
|
||||||
|
x20: jump x2;
|
||||||
|
xEND: %r12 <- copy saved_r12;
|
||||||
|
xEND0: %r13 <- copy saved_r13;
|
||||||
|
xEND1: exit;
|
||||||
|
end
|
|
@ -0,0 +1,7 @@
|
||||||
|
Process exited with status exited(0).
|
||||||
|
STDOUT:
|
||||||
|
1000
|
||||||
|
STDERR:
|
||||||
|
|
||||||
|
|
||||||
|
|
440
flap/tests/06-Retrolix_to_x86-64/30-nested-while.retrolix
Normal file
440
flap/tests/06-Retrolix_to_x86-64/30-nested-while.retrolix
Normal file
|
@ -0,0 +1,440 @@
|
||||||
|
globals (m1)
|
||||||
|
|
||||||
|
l1: m1 <- copy 10;
|
||||||
|
l2: ret;
|
||||||
|
end
|
||||||
|
|
||||||
|
globals (n2)
|
||||||
|
|
||||||
|
l3: n2 <- copy 10;
|
||||||
|
l4: ret;
|
||||||
|
end
|
||||||
|
|
||||||
|
def ref ()
|
||||||
|
local X1, X12, X13, X14, X25, _5, b4, v3 :
|
||||||
|
l5: v3 <- copy %rdi;
|
||||||
|
l37: X25 <- copy 1;
|
||||||
|
l38: %rdi <- copy X25;
|
||||||
|
l40: allocate_block () ;
|
||||||
|
l39: b4 <- copy %rax;
|
||||||
|
l19: X12 <- copy b4;
|
||||||
|
l20: X13 <- copy 0;
|
||||||
|
l21: X14 <- copy v3;
|
||||||
|
l22: %rdi <- copy X12;
|
||||||
|
l23: %rsi <- copy X13;
|
||||||
|
l24: %rdx <- copy X14;
|
||||||
|
l26: write_block () ;
|
||||||
|
l25: _5 <- copy %rax;
|
||||||
|
l8: X1 <- copy b4;
|
||||||
|
l7: %rax <- copy X1;
|
||||||
|
l6: ret;
|
||||||
|
end
|
||||||
|
|
||||||
|
def read ()
|
||||||
|
local X26, X37, X38, r6 :
|
||||||
|
l41: r6 <- copy %rdi;
|
||||||
|
l54: X37 <- copy r6;
|
||||||
|
l55: X38 <- copy 0;
|
||||||
|
l56: %rdi <- copy X37;
|
||||||
|
l57: %rsi <- copy X38;
|
||||||
|
l59: read_block () ;
|
||||||
|
l58: X26 <- copy %rax;
|
||||||
|
l43: %rax <- copy X26;
|
||||||
|
l42: ret;
|
||||||
|
end
|
||||||
|
|
||||||
|
def write ()
|
||||||
|
local X39, X50, X51, X52, r7, v8 :
|
||||||
|
l60: r7 <- copy %rdi;
|
||||||
|
l61: v8 <- copy %rsi;
|
||||||
|
l74: X50 <- copy r7;
|
||||||
|
l75: X51 <- copy 0;
|
||||||
|
l76: X52 <- copy v8;
|
||||||
|
l77: %rdi <- copy X50;
|
||||||
|
l78: %rsi <- copy X51;
|
||||||
|
l79: %rdx <- copy X52;
|
||||||
|
l81: write_block () ;
|
||||||
|
l80: X39 <- copy %rax;
|
||||||
|
l63: %rax <- copy X39;
|
||||||
|
l62: ret;
|
||||||
|
end
|
||||||
|
|
||||||
|
def make_matrix ()
|
||||||
|
local
|
||||||
|
X102, X103, X114, X125, X126, X137, X138, X149, X150, X151, X162, X163, X174, X175, X186, X187, X198, X199, X200, X211, X212, X223, X224, X235, X236, X247, X248, X259, X260, X261, X272, X53, X64, X65, X66, X77, X78, X89, X90, X91, _13, _14, _16, _17, count12, i15, m9, n10, rows11
|
||||||
|
:
|
||||||
|
l82: m9 <- copy %rdi;
|
||||||
|
l83: n10 <- copy %rsi;
|
||||||
|
l358: X272 <- copy m9;
|
||||||
|
l359: %rdi <- copy X272;
|
||||||
|
l361: allocate_block () ;
|
||||||
|
l360: rows11 <- copy %rax;
|
||||||
|
l342: X260 <- copy m9;
|
||||||
|
l343: X261 <- copy 1;
|
||||||
|
l344: X259 <- sub X260, X261;
|
||||||
|
l345: %rdi <- copy X259;
|
||||||
|
l347: ref () ;
|
||||||
|
l346: count12 <- copy %rax;
|
||||||
|
l325: X247 <- copy count12;
|
||||||
|
l326: %rdi <- copy X247;
|
||||||
|
l328: read () ;
|
||||||
|
l327: X236 <- copy %rax;
|
||||||
|
l329: X248 <- copy 0;
|
||||||
|
l330: jumpif gte X236, X248 -> l280, l314;
|
||||||
|
l280: X211 <- copy rows11;
|
||||||
|
l291: X223 <- copy count12;
|
||||||
|
l292: %rdi <- copy X223;
|
||||||
|
l294: read () ;
|
||||||
|
l293: X212 <- copy %rax;
|
||||||
|
l305: X235 <- copy n10;
|
||||||
|
l306: %rdi <- copy X235;
|
||||||
|
l308: allocate_block () ;
|
||||||
|
l307: X224 <- copy %rax;
|
||||||
|
l309: %rdi <- copy X211;
|
||||||
|
l310: %rsi <- copy X212;
|
||||||
|
l311: %rdx <- copy X224;
|
||||||
|
l313: write_block () ;
|
||||||
|
l312: _14 <- copy %rax;
|
||||||
|
l264: X199 <- copy n10;
|
||||||
|
l265: X200 <- copy 1;
|
||||||
|
l266: X198 <- sub X199, X200;
|
||||||
|
l267: %rdi <- copy X198;
|
||||||
|
l269: ref () ;
|
||||||
|
l268: i15 <- copy %rax;
|
||||||
|
l247: X186 <- copy i15;
|
||||||
|
l248: %rdi <- copy X186;
|
||||||
|
l250: read () ;
|
||||||
|
l249: X175 <- copy %rax;
|
||||||
|
l251: X187 <- copy 0;
|
||||||
|
l252: jumpif gte X175, X187 -> l169, l236;
|
||||||
|
l169: X125 <- copy rows11;
|
||||||
|
l180: X137 <- copy count12;
|
||||||
|
l181: %rdi <- copy X137;
|
||||||
|
l183: read () ;
|
||||||
|
l182: X126 <- copy %rax;
|
||||||
|
l184: %rdi <- copy X125;
|
||||||
|
l185: %rsi <- copy X126;
|
||||||
|
l187: read_block () ;
|
||||||
|
l186: X114 <- copy %rax;
|
||||||
|
l198: X149 <- copy i15;
|
||||||
|
l199: %rdi <- copy X149;
|
||||||
|
l201: read () ;
|
||||||
|
l200: X138 <- copy %rax;
|
||||||
|
l212: X162 <- copy i15;
|
||||||
|
l213: %rdi <- copy X162;
|
||||||
|
l215: read () ;
|
||||||
|
l214: X151 <- copy %rax;
|
||||||
|
l226: X174 <- copy count12;
|
||||||
|
l227: %rdi <- copy X174;
|
||||||
|
l229: read () ;
|
||||||
|
l228: X163 <- copy %rax;
|
||||||
|
l230: X150 <- add X151, X163;
|
||||||
|
l231: %rdi <- copy X114;
|
||||||
|
l232: %rsi <- copy X138;
|
||||||
|
l233: %rdx <- copy X150;
|
||||||
|
l235: write_block () ;
|
||||||
|
l234: _17 <- copy %rax;
|
||||||
|
l128: X89 <- copy i15;
|
||||||
|
l139: X102 <- copy i15;
|
||||||
|
l140: %rdi <- copy X102;
|
||||||
|
l142: read () ;
|
||||||
|
l141: X91 <- copy %rax;
|
||||||
|
l143: X103 <- copy 1;
|
||||||
|
l144: X90 <- sub X91, X103;
|
||||||
|
l145: %rdi <- copy X89;
|
||||||
|
l146: %rsi <- copy X90;
|
||||||
|
l148: write () ;
|
||||||
|
l147: _16 <- copy %rax;
|
||||||
|
l253: jump l247;
|
||||||
|
l236: ;; Exit of while loop;
|
||||||
|
l97: X64 <- copy count12;
|
||||||
|
l108: X77 <- copy count12;
|
||||||
|
l109: %rdi <- copy X77;
|
||||||
|
l111: read () ;
|
||||||
|
l110: X66 <- copy %rax;
|
||||||
|
l112: X78 <- copy 1;
|
||||||
|
l113: X65 <- sub X66, X78;
|
||||||
|
l114: %rdi <- copy X64;
|
||||||
|
l115: %rsi <- copy X65;
|
||||||
|
l117: write () ;
|
||||||
|
l116: _13 <- copy %rax;
|
||||||
|
l331: jump l325;
|
||||||
|
l314: ;; Exit of while loop;
|
||||||
|
l86: X53 <- copy rows11;
|
||||||
|
l85: %rax <- copy X53;
|
||||||
|
l84: ret;
|
||||||
|
end
|
||||||
|
|
||||||
|
def transpose ()
|
||||||
|
local
|
||||||
|
X273, X284, X285, X286, X297, X298, X309, X310, X311, X322, X323, X334, X345, X346, X357, X358, X369, X370, X381, X392, X393, X404, X405, X416, X417, X428, X429, X440, X441, X442, X443, X454, X455, X466, X467, X468, X479, X480, _23, _25, _26, c24, m19, matrix18, n20, out21, r22
|
||||||
|
:
|
||||||
|
l362: matrix18 <- copy %rdi;
|
||||||
|
l363: m19 <- copy %rsi;
|
||||||
|
l364: n20 <- copy %rdx;
|
||||||
|
l623: X479 <- copy n20;
|
||||||
|
l624: X480 <- copy m19;
|
||||||
|
l625: %rdi <- copy X479;
|
||||||
|
l626: %rsi <- copy X480;
|
||||||
|
l628: make_matrix () ;
|
||||||
|
l627: out21 <- copy %rax;
|
||||||
|
l607: X467 <- copy n20;
|
||||||
|
l608: X468 <- copy 1;
|
||||||
|
l609: X466 <- sub X467, X468;
|
||||||
|
l610: %rdi <- copy X466;
|
||||||
|
l612: ref () ;
|
||||||
|
l611: r22 <- copy %rax;
|
||||||
|
l590: X454 <- copy r22;
|
||||||
|
l591: %rdi <- copy X454;
|
||||||
|
l593: read () ;
|
||||||
|
l592: X443 <- copy %rax;
|
||||||
|
l594: X455 <- copy 0;
|
||||||
|
l595: jumpif gte X443, X455 -> l573, l579;
|
||||||
|
l573: X441 <- copy m19;
|
||||||
|
l574: X442 <- copy 1;
|
||||||
|
l575: X440 <- sub X441, X442;
|
||||||
|
l576: %rdi <- copy X440;
|
||||||
|
l578: ref () ;
|
||||||
|
l577: c24 <- copy %rax;
|
||||||
|
l556: X428 <- copy c24;
|
||||||
|
l557: %rdi <- copy X428;
|
||||||
|
l559: read () ;
|
||||||
|
l558: X417 <- copy %rax;
|
||||||
|
l560: X429 <- copy 0;
|
||||||
|
l561: jumpif gte X417, X429 -> l450, l545;
|
||||||
|
l450: X345 <- copy out21;
|
||||||
|
l461: X357 <- copy r22;
|
||||||
|
l462: %rdi <- copy X357;
|
||||||
|
l464: read () ;
|
||||||
|
l463: X346 <- copy %rax;
|
||||||
|
l465: %rdi <- copy X345;
|
||||||
|
l466: %rsi <- copy X346;
|
||||||
|
l468: read_block () ;
|
||||||
|
l467: X334 <- copy %rax;
|
||||||
|
l479: X369 <- copy c24;
|
||||||
|
l480: %rdi <- copy X369;
|
||||||
|
l482: read () ;
|
||||||
|
l481: X358 <- copy %rax;
|
||||||
|
l503: X392 <- copy matrix18;
|
||||||
|
l514: X404 <- copy c24;
|
||||||
|
l515: %rdi <- copy X404;
|
||||||
|
l517: read () ;
|
||||||
|
l516: X393 <- copy %rax;
|
||||||
|
l518: %rdi <- copy X392;
|
||||||
|
l519: %rsi <- copy X393;
|
||||||
|
l521: read_block () ;
|
||||||
|
l520: X381 <- copy %rax;
|
||||||
|
l532: X416 <- copy r22;
|
||||||
|
l533: %rdi <- copy X416;
|
||||||
|
l535: read () ;
|
||||||
|
l534: X405 <- copy %rax;
|
||||||
|
l536: %rdi <- copy X381;
|
||||||
|
l537: %rsi <- copy X405;
|
||||||
|
l539: read_block () ;
|
||||||
|
l538: X370 <- copy %rax;
|
||||||
|
l540: %rdi <- copy X334;
|
||||||
|
l541: %rsi <- copy X358;
|
||||||
|
l542: %rdx <- copy X370;
|
||||||
|
l544: write_block () ;
|
||||||
|
l543: _26 <- copy %rax;
|
||||||
|
l409: X309 <- copy c24;
|
||||||
|
l420: X322 <- copy c24;
|
||||||
|
l421: %rdi <- copy X322;
|
||||||
|
l423: read () ;
|
||||||
|
l422: X311 <- copy %rax;
|
||||||
|
l424: X323 <- copy 1;
|
||||||
|
l425: X310 <- sub X311, X323;
|
||||||
|
l426: %rdi <- copy X309;
|
||||||
|
l427: %rsi <- copy X310;
|
||||||
|
l429: write () ;
|
||||||
|
l428: _25 <- copy %rax;
|
||||||
|
l562: jump l556;
|
||||||
|
l545: ;; Exit of while loop;
|
||||||
|
l378: X284 <- copy r22;
|
||||||
|
l389: X297 <- copy r22;
|
||||||
|
l390: %rdi <- copy X297;
|
||||||
|
l392: read () ;
|
||||||
|
l391: X286 <- copy %rax;
|
||||||
|
l393: X298 <- copy 1;
|
||||||
|
l394: X285 <- sub X286, X298;
|
||||||
|
l395: %rdi <- copy X284;
|
||||||
|
l396: %rsi <- copy X285;
|
||||||
|
l398: write () ;
|
||||||
|
l397: _23 <- copy %rax;
|
||||||
|
l596: jump l590;
|
||||||
|
l579: ;; Exit of while loop;
|
||||||
|
l367: X273 <- copy out21;
|
||||||
|
l366: %rax <- copy X273;
|
||||||
|
l365: ret;
|
||||||
|
end
|
||||||
|
|
||||||
|
def check ()
|
||||||
|
local
|
||||||
|
X481, X492, X503, X514, X515, X516, X527, X528, X539, X540, X541, X552, X553, X564, X565, X566, X577, X578, X589, X600, X601, X612, X623, X624, X635, X636, X647, X648, X659, X670, X671, X682, X683, X694, X695, X706, X707, X718, X719, X720, X721, X732, X733, X744, X745, X746, X757, _33, _35, _36, c34, count31, m127, m228, m29, n30, r32
|
||||||
|
:
|
||||||
|
l629: m127 <- copy %rdi;
|
||||||
|
l630: m228 <- copy %rsi;
|
||||||
|
l631: m29 <- copy %rdx;
|
||||||
|
l632: n30 <- copy %rcx;
|
||||||
|
l977: X757 <- copy 0;
|
||||||
|
l978: %rdi <- copy X757;
|
||||||
|
l980: ref () ;
|
||||||
|
l979: count31 <- copy %rax;
|
||||||
|
l961: X745 <- copy m29;
|
||||||
|
l962: X746 <- copy 1;
|
||||||
|
l963: X744 <- sub X745, X746;
|
||||||
|
l964: %rdi <- copy X744;
|
||||||
|
l966: ref () ;
|
||||||
|
l965: r32 <- copy %rax;
|
||||||
|
l944: X732 <- copy r32;
|
||||||
|
l945: %rdi <- copy X732;
|
||||||
|
l947: read () ;
|
||||||
|
l946: X721 <- copy %rax;
|
||||||
|
l948: X733 <- copy 0;
|
||||||
|
l949: jumpif gte X721, X733 -> l927, l933;
|
||||||
|
l927: X719 <- copy n30;
|
||||||
|
l928: X720 <- copy 1;
|
||||||
|
l929: X718 <- sub X719, X720;
|
||||||
|
l930: %rdi <- copy X718;
|
||||||
|
l932: ref () ;
|
||||||
|
l931: c34 <- copy %rax;
|
||||||
|
l910: X706 <- copy c34;
|
||||||
|
l911: %rdi <- copy X706;
|
||||||
|
l913: read () ;
|
||||||
|
l912: X695 <- copy %rax;
|
||||||
|
l914: X707 <- copy 0;
|
||||||
|
l915: jumpif gte X695, X707 -> l804, l899;
|
||||||
|
l804: X623 <- copy m127;
|
||||||
|
l815: X635 <- copy r32;
|
||||||
|
l816: %rdi <- copy X635;
|
||||||
|
l818: read () ;
|
||||||
|
l817: X624 <- copy %rax;
|
||||||
|
l819: %rdi <- copy X623;
|
||||||
|
l820: %rsi <- copy X624;
|
||||||
|
l822: read_block () ;
|
||||||
|
l821: X612 <- copy %rax;
|
||||||
|
l833: X647 <- copy c34;
|
||||||
|
l834: %rdi <- copy X647;
|
||||||
|
l836: read () ;
|
||||||
|
l835: X636 <- copy %rax;
|
||||||
|
l837: %rdi <- copy X612;
|
||||||
|
l838: %rsi <- copy X636;
|
||||||
|
l840: read_block () ;
|
||||||
|
l839: X601 <- copy %rax;
|
||||||
|
l861: X670 <- copy m228;
|
||||||
|
l872: X682 <- copy r32;
|
||||||
|
l873: %rdi <- copy X682;
|
||||||
|
l875: read () ;
|
||||||
|
l874: X671 <- copy %rax;
|
||||||
|
l876: %rdi <- copy X670;
|
||||||
|
l877: %rsi <- copy X671;
|
||||||
|
l879: read_block () ;
|
||||||
|
l878: X659 <- copy %rax;
|
||||||
|
l890: X694 <- copy c34;
|
||||||
|
l891: %rdi <- copy X694;
|
||||||
|
l893: read () ;
|
||||||
|
l892: X683 <- copy %rax;
|
||||||
|
l894: %rdi <- copy X659;
|
||||||
|
l895: %rsi <- copy X683;
|
||||||
|
l897: read_block () ;
|
||||||
|
l896: X648 <- copy %rax;
|
||||||
|
l898: jumpif eq X601, X648 -> l734, l775;
|
||||||
|
l734: X564 <- copy count31;
|
||||||
|
l745: X577 <- copy count31;
|
||||||
|
l746: %rdi <- copy X577;
|
||||||
|
l748: read () ;
|
||||||
|
l747: X566 <- copy %rax;
|
||||||
|
l749: X578 <- copy 1;
|
||||||
|
l750: X565 <- add X566, X578;
|
||||||
|
l751: %rdi <- copy X564;
|
||||||
|
l752: %rsi <- copy X565;
|
||||||
|
l754: write () ;
|
||||||
|
l753: _36 <- copy %rax;
|
||||||
|
l783: jump l782;
|
||||||
|
l775: X600 <- copy count31;
|
||||||
|
l776: %rdi <- copy X600;
|
||||||
|
l778: read () ;
|
||||||
|
l777: X589 <- copy %rax;
|
||||||
|
l779: %rdi <- copy X589;
|
||||||
|
l781: print_int () ;
|
||||||
|
l780: _36 <- copy %rax;
|
||||||
|
l782: ;; Join control point;
|
||||||
|
l703: X539 <- copy c34;
|
||||||
|
l714: X552 <- copy c34;
|
||||||
|
l715: %rdi <- copy X552;
|
||||||
|
l717: read () ;
|
||||||
|
l716: X541 <- copy %rax;
|
||||||
|
l718: X553 <- copy 1;
|
||||||
|
l719: X540 <- sub X541, X553;
|
||||||
|
l720: %rdi <- copy X539;
|
||||||
|
l721: %rsi <- copy X540;
|
||||||
|
l723: write () ;
|
||||||
|
l722: _35 <- copy %rax;
|
||||||
|
l916: jump l910;
|
||||||
|
l899: ;; Exit of while loop;
|
||||||
|
l672: X514 <- copy r32;
|
||||||
|
l683: X527 <- copy r32;
|
||||||
|
l684: %rdi <- copy X527;
|
||||||
|
l686: read () ;
|
||||||
|
l685: X516 <- copy %rax;
|
||||||
|
l687: X528 <- copy 1;
|
||||||
|
l688: X515 <- sub X516, X528;
|
||||||
|
l689: %rdi <- copy X514;
|
||||||
|
l690: %rsi <- copy X515;
|
||||||
|
l692: write () ;
|
||||||
|
l691: _33 <- copy %rax;
|
||||||
|
l950: jump l944;
|
||||||
|
l933: ;; Exit of while loop;
|
||||||
|
l655: X503 <- copy count31;
|
||||||
|
l656: %rdi <- copy X503;
|
||||||
|
l658: read () ;
|
||||||
|
l657: X492 <- copy %rax;
|
||||||
|
l659: %rdi <- copy X492;
|
||||||
|
l661: print_int () ;
|
||||||
|
l660: X481 <- copy %rax;
|
||||||
|
l634: %rax <- copy X481;
|
||||||
|
l633: ret;
|
||||||
|
end
|
||||||
|
|
||||||
|
globals (main37)
|
||||||
|
local
|
||||||
|
X768, X779, X780, X781, X782, X793, X794, X795, X806, X807, X808, X819, X820, _41, m138, m239, m340
|
||||||
|
:
|
||||||
|
l1061: X819 <- copy m1;
|
||||||
|
l1062: X820 <- copy n2;
|
||||||
|
l1063: %rdi <- copy X819;
|
||||||
|
l1064: %rsi <- copy X820;
|
||||||
|
l1066: make_matrix () ;
|
||||||
|
l1065: m138 <- copy %rax;
|
||||||
|
l1043: X806 <- copy m138;
|
||||||
|
l1044: X807 <- copy m1;
|
||||||
|
l1045: X808 <- copy n2;
|
||||||
|
l1046: %rdi <- copy X806;
|
||||||
|
l1047: %rsi <- copy X807;
|
||||||
|
l1048: %rdx <- copy X808;
|
||||||
|
l1050: transpose () ;
|
||||||
|
l1049: m239 <- copy %rax;
|
||||||
|
l1025: X793 <- copy m239;
|
||||||
|
l1026: X794 <- copy n2;
|
||||||
|
l1027: X795 <- copy m1;
|
||||||
|
l1028: %rdi <- copy X793;
|
||||||
|
l1029: %rsi <- copy X794;
|
||||||
|
l1030: %rdx <- copy X795;
|
||||||
|
l1032: transpose () ;
|
||||||
|
l1031: m340 <- copy %rax;
|
||||||
|
l1005: X779 <- copy m138;
|
||||||
|
l1006: X780 <- copy m340;
|
||||||
|
l1007: X781 <- copy m1;
|
||||||
|
l1008: X782 <- copy n2;
|
||||||
|
l1009: %rdi <- copy X779;
|
||||||
|
l1010: %rsi <- copy X780;
|
||||||
|
l1011: %rdx <- copy X781;
|
||||||
|
l1012: %rcx <- copy X782;
|
||||||
|
l1014: check () ;
|
||||||
|
l1013: _41 <- copy %rax;
|
||||||
|
l991: X768 <- copy 0;
|
||||||
|
l992: %rdi <- copy X768;
|
||||||
|
l994: print_int () ;
|
||||||
|
l993: main37 <- copy %rax;
|
||||||
|
l1067: ret;
|
||||||
|
end
|
|
@ -4,9 +4,10 @@ JALONS=\
|
||||||
01-Parsing-no-positions.results \
|
01-Parsing-no-positions.results \
|
||||||
02-Interpreter.results \
|
02-Interpreter.results \
|
||||||
03-Typing.results \
|
03-Typing.results \
|
||||||
04-Hobix_to_Fopix.results
|
04-Hobix_to_Fopix.results \
|
||||||
|
06-Retrolix_to_x86-64.results
|
||||||
EXTS=parsing.hopix parsing-no-positions.hopix eval.hopix typing.hopix \
|
EXTS=parsing.hopix parsing-no-positions.hopix eval.hopix typing.hopix \
|
||||||
hobix
|
hobix retrolix
|
||||||
|
|
||||||
.PHONY: all clean test FAKE
|
.PHONY: all clean test FAKE
|
||||||
.PRECIOUS: %.output %.expected %.score
|
.PRECIOUS: %.output %.expected %.score
|
||||||
|
|
BIN
jalons/jalon-6.pdf
Normal file
BIN
jalons/jalon-6.pdf
Normal file
Binary file not shown.
Reference in a new issue