[NEXT] [PREV]    HANDBOOK / GENTLE PRIMER / Optimal Rule Selection /

A Computer with an Accumulator

Gentle
Applications
Concepts
Examples
Handbook
Support
Download

Let us consider a different kind of computer that uses an accumulator to compute values. The accumulator holds one of the operands of a computation, the other being given as a parameter of an instruction. The result is placed into the accumulator.

These are the instructions:


   'action' ACCUPLUS(Variable)
   'action' ACCUMINUS(Variable)
   'action' LOADACCU(Variable)
   'action' STOREACCU(Variable)
ACCUPLUS(X) means Accu := Accu + X, ACCUMINUS(X) means Accu := Accu - X, LOADACCU(X) means Accu := X, STOREACCU(X) means X := Accu. Here is an incomplete specification of code generation:


   'rule' Encode(assign(V,X)):
      AccuCode(X)
      STOREACCU(V)
   
   'rule' AccuCode(plus(X, var(V))):
      AccuCode(X)
      ACCUPLUS(V)
   'rule' AccuCode(minus(X, var(V))):
      AccuCode(X)
      ACCUMINUS(V)
   'rule' AccuCode(var(V)):
      LOADACCU(V)
(The specification is still incomplete because we only consider the case where the second operand of plus and minus is a variable. If it were be a more complex expression, we would have to introduce temporary variables.)





[NEXT] [PREV]