T-Machine  (pronounce tea-machine)

Instruction format

op:5  d:5  s1:5  s2:5

add d s1 s2,  r[d] = r[s1] + r[s2]

op:5 d:5 ads:22

ld d ads,   r[d] = M[ads]
st ads d,   M[ads] = r[d]

jmp - ads
jt d ads
jf d ads

instruction encoding


1  add
2  le
3  ld
4  st
5  jmp
6  jt
7  jf

Register Transfer Level

fetch
  mbus <- M[pc]
  ir <- mbus;  pc <- pc+1

add
  T <- alu(add,s2,s1), [next]
  r[d] <- T,  [fetch]

ld
  r[d] <- M[ads], [fetch]

st
  M[ads] <- alu(pass,d,-), [fetch]

jmp
  pc <- ads

jt
  if alu(true,d,-) then pc <- ads


Example of an assembly language program for t-machine

To add 1..10 and keep the result in r[3]

assume
r[1] = 1,
r[2] = 10,
r[0] = 0
r[3] = result, initially 0
r[4] = tmp
r[5] = flag

// assembly program

      add r4 r1 r0  // set r4 1
loop: add r3 r4 r3
      add r4 r4 r1  // increment i
      le r5 r4 r2   // i <= 10?
      jt r5 loop
      end


last update  24 Jan 2012