⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 compile.pro

📁 prolog开发工具
💻 PRO
字号:
                      /* COMPILER-WORLD */
            /* HOW TO SOLVE IT, Problem 75, p. 102 */


add(add(R,V1+V2), holds(acc,V1+V2)).
add(sub(R,V1-V2), holds(acc,V1-V2)).
add(load(R,V),    holds(acc,V)).
add(store(R,V),   holds(reg,R,V)).

del(Action, holds(acc,_)) :-
    add(Action, holds(acc,_)).
del(Action, holds(reg,R,_)) :-
    add(Action, holds(reg,R,_)).

precond(load(R,V),    [holds(reg,R,V)]).
precond(store(R,V),   [holds(acc,V)]).
precond(add(R,V1+V2), [holds(acc,V1),holds(reg,R,V2)]).
precond(sub(R,V1-V2), [holds(acc,V1),holds(reg,R,V2)]).

given_list([ holds(reg,1,c1),
             holds(reg,2,c2),
             holds(reg,3,c3),
             holds(reg,4,c4) ]).

run1 :-
    given_list(Start),
    warplan(Start,[ holds(reg,1,c1+(c2-c3)),
                    holds(reg,2,c2-c3),
                    holds(reg,3,c4+c4) ]).

run2 :-                                  /* Does this really work? */
    given_list(Start),
    warplan(Start,[holds(acc, (c1-c2) + (c3-c4))]).

run3 :-                                  /* Loops */
    given_list(Start),
    warplan(Start,[ holds(reg,1,c1+(c2-c3)),
            holds(reg,2,c2-c3),
            holds(acc,c1) ]).

recompile :-
    reconsult(compile).




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -