/ tmg tables and global definitions / in addition to these definitions each routine / follows the convention / f = stack frame pointer during parse and translation / g = stack frame end during parse / i = interprested instruction counter during parse and translation .globl tables .globl x,si,j,k,n,g1,env .globl ek,ek.fs,ep,ep.fs,fs .globl lptr,sptr,rptr .globl outb,outt,outw .globl stkt,stkb,stke .globl ktat,ktab .globl input,cfile,lfile,dfile,ofile / parse stack frame layout / 0 is previous frame pointer / return address in (sp) x = 2. /exit bit, nonzero at end of rule si = 4. / save location for instruction counter j = 6. / input cursor counts characters k = 8. / ktable water mark, last use location relative to base n = 10. /address of ignored character class env = 12. / frame pointer for static environment g1 = 14. / frame length during parse /symbol table entry layout /word 0 is for customer lptr=2. /index of next entry on tree to left rptr=4. /index of next entry to right sptr=6. /first character of string in this entry /next char is in 7, etc / translation frame layout / used as ek(f), ep(f), etc / x and si have same meaning as in parse stack frame / return address in (sp) ek = 0 / k environment, frame where bunlde address is in si ep = 6 / p environment, frame where si points to parameter list fs = 10 / frame size ek.fs = ek+fs / k environment in next frame ep.fs = ep+fs / p env in next frame .data tables = . /marks break between routines and tables outt = 64. / output buffer top stkt = 800. /stack top for (f), not for (sp) ktat = 1200. / k table top input: -1 / stream number of input cfile: 1 / stream number of current output lfile: 1 / last current output dfile: 2 / diagnostic file ofile: 1 /output file outw: 0 / output write pointer, number of chars in buffer .bss outb: .=.+outt /output buffer ktab: . = .+ktat / contains translation rules that have been bundled stkb: . = .+stkt / stack, (f) ponts into this stke = . /stack end