jmorriso@snickers.ee.ubc.ca (John Paul Morrison) (11/16/90)
As far as I know, there are two assemblers for the Saturn processor: Sass which I believe was the first, and ASAP which was written later. Most people seem to be posting code in ASAP form. Although the mnemonics are the same, there might be differences in assembler directives. Could someone mention why they are using ASAP instead of Sass? Is it better? As far as I know it is written in PERL, and runs on Unix workstations only. Sass however is self contained. It is written in yacc and lex, and the c source code generated compiles on anything . I know that it runs on unix and the ibm pc.
gson@niksula.hut.fi (Andreas Gustafsson) (11/16/90)
In article <1442@fs1.ee.ubc.ca> jmorriso@snickers.ee.ubc.ca writes: > As far as I know, there are two assemblers for the Saturn processor: > Sass which I believe was the first, and ASAP which was written later. Actually they were written roughly at the same time, but Sass was published a bit before ASAP. > Most people seem to be posting code in ASAP form. Although the mnemonics > are the same, there might be differences in assembler directives. > Could someone mention why they are using ASAP instead of Sass? Is it better? > As far as I know it is written in PERL, and runs on Unix workstations only. > Sass however is self contained. It is written in yacc and lex, and the c > source code generated compiles on anything . I know that it runs on unix > and the ibm pc. I wrote ASAP as a quick hack just to get CHIP-48 assembled somehow, because there was no other Saturn assembler available at the time. Sass is certainly smaller, faster and more elegant, but the main reason I haven't switched over to it is that when I last looked, it lacked a crucial feature: it doesn't let you calculate an assembly-time constant by subtracting two labels. The CHIP-48 source relies heavily on this construct to calculate the addresses of fixed tables within a relocateable Code object. Consider the following example: move.a pc,a ; get address of next instruction ref17: move.p5 hexfont-ref17,c ; Sass can't do this add.a a,c ; calculate address of "hexfont" move.a c,d1 ; now d1 points to the hex patterns ... hexfont: data.5 #F999F data.5 #72262 ... I think with Sass you need to either do the subtraction at runtime (making the program bigger and slower) or keep the Code object load address in a register (which could probably be put to better use). If some later version of Sass supports this construct, I will probably switch over to Sass. -- Andreas Gustafsson Internet: gson@niksula.hut.fi Voice: +358 0 563 5592