Canon/open_set/62_register_alloc.pas
2024-03-09 20:11:27 +08:00

139 lines
3.1 KiB
ObjectPascal

program main;
var
a0,a1,a2,a3,a4,a5,a6,a7,a8,a9:integer;
a10,a11,a12,a13,a14,a15,a16,a17,a18,a19:integer;
a20,a21,a22,a23,a24,a25,a26,a27,a28,a29:integer;
a30,a31,a32:integer;
a,b:integer;
function func(a,b:integer):integer;
var
i:integer;
c1,c2,c3,c4:integer;
d1,d2,d3,d4:integer;
e1,e2,e3,e4:integer;
f1,f2,f3,f4:integer;
g1,g2,g3,g4:integer;
h1,h2,h3,h4:integer;
i1,i2,i3,i4:integer;
j1,j2,j3,j4:integer;
k1,k2,k3,k4:integer;
begin
c1 := 1;
c2 := 2;
c3 := 3;
c4 := 4;
d1 := 1 + c1 + a1;
d2 := 2 + c2 + a2;
d3 := 3 + c3 + a3;
d4 := 4 + c4 + a4;
e1 := 1 + d1 + a5;
e2 := 2 + d2 + a6;
e3 := 3 + d3 + a7;
e4 := 4 + d4 + a8;
f1 := 1 + e1 + a9;
f2 := 2 + e2 + a10;
f3 := 3 + e3 + a11;
f4 := 4 + e4 + a12;
g1 := 1 + f1 + a13;
g2 := 2 + f2 + a14;
g3 := 3 + f3 + a15;
g4 := 4 + f4 + a16;
h1 := 1 + g1 + a17;
h2 := 2 + g2 + a18;
h3 := 3 + g3 + a19;
h4 := 4 + g4 + a20;
i1 := 1 + h1 + a21;
i2 := 2 + h2 + a22;
i3 := 3 + h3 + a23;
i4 := 4 + h4 + a24;
j1 := 1 + i1 + a25;
j2 := 2 + i2 + a26;
j3 := 3 + i3 + a27;
j4 := 4 + i4 + a28;
k1 := 1 + j1 + a29;
k2 := 2 + j2 + a30;
k3 := 3 + j3 + a31;
k4 := 4 + j4 + a32;
i := a - b + 10;
k1 := 1 + j1 + a29;
k2 := 2 + j2 + a30;
k3 := 3 + j3 + a31;
k4 := 4 + j4 + a32;
j1 := 1 + i1 + a25;
j2 := 2 + i2 + a26;
j3 := 3 + i3 + a27;
j4 := 4 + i4 + a28;
i1 := 1 + h1 + a21;
i2 := 2 + h2 + a22;
i3 := 3 + h3 + a23;
i4 := 4 + h4 + a24;
h1 := 1 + g1 + a17;
h2 := 2 + g2 + a18;
h3 := 3 + g3 + a19;
h4 := 4 + g4 + a20;
g1 := 1 + f1 + a13;
g2 := 2 + f2 + a14;
g3 := 3 + f3 + a15;
g4 := 4 + f4 + a16;
f1 := 1 + e1 + a9;
f2 := 2 + e2 + a10;
f3 := 3 + e3 + a11;
f4 := 4 + e4 + a12;
e1 := 1 + d1 + a5;
e2 := 2 + d2 + a6;
e3 := 3 + d3 + a7;
e4 := 4 + d4 + a8;
d1 := 1 + c1 + a1;
d2 := 2 + c2 + a2;
d3 := 3 + c3 + a3;
d4 := 4 + c4 + a4;
d1 := 1 + c1 + a1;
d2 := 2 + c2 + a2;
d3 := 3 + c3 + a3;
d4 := 4 + c4 + a4;
func := i + c1 + c2 + c3 + c4 - d1 - d2 - d3 - d4 + e1 + e2 + e3 + e4 - f1 - f2 - f3 - f4 + g1 + g2 + g3 + g4 - h1 - h2 - h3 - h4 + i1 + i2 + i3 + i4 - j1 - j2 - j3 - j4 + k1 + k2 + k3 + k4 + a1 - a2 + a3 - a4 + a5 - a6 + a7 - a8 + a9 - a10 + a11 - a12 + a13 - a14 + a15 - a16 + a17 - a18 + a19 - a20 + a21 - a22 + a23 - a24 + a25 - a26 + a27 - a28 + a29 - a30 + a31 - a32;
end;
begin
a0 := 0;
a1 := 1;
a2 := 2;
a3 := 3;
a4 := 4;
a5 := 5;
a6 := 6;
a7 := 7;
a8 := 8;
a9 := 9;
a10 := 10;
a11 := 11;
a12 := 12;
a13 := 13;
a14 := 14;
a15 := 15;
a16 := 16;
a17 := 1;
a18 := 2;
a19 := 3;
a20 := 4;
a21 := 5;
a22 := 6;
a23 := 7;
a24 := 8;
a25 := 9;
a26 := 10;
a27 := 11;
a28 := 12;
a29 := 13;
a30 := 14;
a31 := 15;
a32 := 16;
a := 1;
b := a + 2 * 9;
a := func(a,b);
write(a);
end.