2

Hassan Aït-Kaci's "Warren's Abstract Machine: A Tutorial Reconstruction" Section 2.4 extends L0 to L1 in order to support a set of facts in the abstract machine. The four new instructions put_variable, put_value, get_variable and get_value have arguments Xn and Ai, whose meanings are not clear. The description only mentions index i of argument Ai: the i-th argument position of the predicate. Where n of Xn comes from? Figure 2.9 presents an example of generated code for query p(Z,h(Z,W),f(W)). Since predicate p has arity 3 and the first instruction is put_variable X4, A1, n can't be the predicate's arity.

matheuscscp
  • 827
  • 7
  • 23
  • 1
    *Too much is left untold, ...* says the author in the introduction about the original paper, and now well, the biggest critics of the elves later become elves themselves. – false Oct 31 '16 at 17:11
  • 1
    In 2.4 nevertheless, it is explained that `Ai `is just a *conspicuous* notation for `Xi` when the register is meant as an argument register. So `X4` is an auxiliary scratch register, the next free register. The `put_variable X4, A1` thus means: Make both register 4 and register 1 point to the same variable. – false Oct 31 '16 at 17:24

0 Answers0