Minimizing Data Movement Between Registers
Data movement between registers for parameter passing may be minimized by
leaving variables in the same argument position wherever possible.
Thus, the clause
p(X,Y) :- p1(X,Y,0).
is preferable to
p(X,Y) :- p1(0,X,Y).
because the first definition leaves the variables X and Y
in the same argument positions (first and second, respectively),
while the second definition does not.