CSE 30 -- Lecture 4 -- Oct 8


Hand assembly -- address assignment

First, we assign addresses to everything:
		;0 mult:	subz s,s,next		; s = 0;
		;1		subz i,i,next
		;2		subz i,x,next		; i = -x;
		;3 mloop:	subz i,zero,mdone	; while (i != 0) {
		;		; prepare to call add
		;4		subz t,t,next		; move s to a
		;5		subz t,s,next
		;6		subz a,a,next
		;7		subz a,t,next
		;8		subz t,t,next		; move y to b
		;9		subz t,y,next
		;a		subz b,b,next
		;b		subz b,t,next
		;c		subz addret,addret,next
		;d		subz addret,retproto,next
		;e		subz addret,negretaddr,next
		;f		subz t,t,add
		;retaddr:
		;10		subz t,t,next		; move c to s
		;11		subz t,c,next
		;12		subz s,s,next
		;13		subz s,t,next
		;14		subz i,neg1,next
		;15		subz t,t,mloop		; }
		;16 mdone:	subz t,t,mdone		; infinite loop to indicate done
		;;
		;; Add subroutine
		;;
		;17	add:	subz t,t,next		; t = -a-b
		;18		subz t,a,next
		;19		subz t,b,next
		;1a		subz c,c,next		; c = -t
		;1b		subz c,t,next
		;1c addret:	0 0 0			; generated return instr goes here
		;;
		;; Data
		;;
		;1d  t:		0 0 0
		;1e  a:		0 0 0
		;1f  b:		0 0 0
		;20  c:		0 0 0
		;21  s:		0 0 0
		;22  x:		0 0 3			; inputs, should be elsewhere
		;23  y:		0 0 8			; inputs, should be elsewhere
		;24  z:		0 0 0
		;25  i:		0 0 0
		;;
		;; Constants
		;;
		;26  zero:	0 0 0
		;27  neg1:	0xffff 0xffff 0xffff
		;28  retproto:
		;		- ( t t 0 )
		;29  negretaddr:
		;		-retaddr
		;
Now, we know the addresses of every instruction and variable, and can start the assembly process to get the machine code.
[ CSE home | CSE talks | bsy's home page | webster i/f | yahoo | lycos | altavista | pgp key svr | spam | commerce ]
picture of bsy

bsy@cse.ucsd.edu, last updated Sun Oct 26 23:14:24 PST 1997.

email bsy


Don't make me hand over my privacy keys!