作者jean164 (宠物猫爱上自由的小猴)
站内Programming
标题[请益] 关於 Compiler 的一个程式码问题
时间Sat Jun 2 19:50:05 2007
关於 Compiler 的一个程式码问题
以下这部分我不太了
if E1.type = arith and E2.type = arith
then begin
/* normal arithmetic add */
E.place := newtemp;
E.code := E1.code || E2.code || gen(E.place ':=' E1.place '+' E2.place)
end
else if E1.type = arith and E2.type = bool
then begin
E.place := newtemp;
E2.true := newlabel;
E2.false := newlabel;
E.code := E1.code || E2.code ||
gen(E2.true ':' E.place ':=' E1.place + 1)||
end
else if E1.type = arith and E2.type = bool
then begin
E.place := newtemp;
E2.true := newlabel;
E2.false := newlabel;
E.code := E1.code || E2.code ||
gen(E2.true ':' E.place ':=' E1.place + 1)||
gen('goto' nextstat + 1)||
gen(E2.false ':' E.place ':=' E1.place)
end
else if .......................
希望有高手可以帮忙解释一下细部内容
我所知道的是第一段是纯粹数学运算
第二段是数学和布林函数
感谢 感谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.137.160.182