85 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| #
 | |
| ; $Id$
 | |
| ;  (c) copyright 1983 by the Vrije Universiteit, Amsterdam, The Netherlands.
 | |
| ; 
 | |
| ;           This product is part of the Amsterdam Compiler Kit.
 | |
| ; 
 | |
| ;  Permission to use, sell, duplicate or disclose this software must be
 | |
| ;  obtained in writing. Requests for such permissions may be sent to
 | |
| ; 
 | |
| ;       Dr. Andrew S. Tanenbaum
 | |
| ;       Wiskundig Seminarium
 | |
| ;       Vrije Universiteit
 | |
| ;       Postbox 7161
 | |
| ;       1007 MC Amsterdam
 | |
| ;       The Netherlands
 | |
| ; 
 | |
| 
 | |
| /* Author: J.W. Stevenson */
 | |
| 
 | |
| 
 | |
|  mes 2,EM_WSIZE,EM_PSIZE
 | |
| 
 | |
| #define TARLB   0
 | |
| #define DESCR   EM_PSIZE
 | |
| 
 | |
| #define NEWPC   0
 | |
| #define SAVSP   EM_PSIZE
 | |
| 
 | |
| #define D_PC    0
 | |
| #define D_SP    EM_PSIZE
 | |
| #define D_LB    EM_PSIZE+EM_PSIZE
 | |
| 
 | |
| #define LOCLB   -EM_PSIZE
 | |
| 
 | |
| ; _gto is called with two arguments:
 | |
| ;       - pointer to the label descriptor (DESCR)
 | |
| ;       - local base (LB) of target procedure (TARLB)
 | |
| ; the label descriptor contains two items:
 | |
| ;       - label address i.e. new PC (NEWPC)
 | |
| ;       - offset in target procedure frame (SAVSP)
 | |
| ; using this offset and the LB of the target procedure, the address of
 | |
| ; of local variable of the target procedure is constructed.
 | |
| ; the target procedure must have stored the correct target SP there.
 | |
| 
 | |
| descr
 | |
|  bss 3*EM_PSIZE,0,0
 | |
| 
 | |
|  exp $_gto
 | |
|  pro $_gto,EM_PSIZE
 | |
|  lal DESCR
 | |
|  loi EM_PSIZE
 | |
|  adp NEWPC
 | |
|  loi EM_PSIZE
 | |
|  lae descr+D_PC
 | |
|  sti EM_PSIZE
 | |
|  lal TARLB
 | |
|  loi EM_PSIZE
 | |
|  zer EM_PSIZE
 | |
|  cmp
 | |
|  zeq *1
 | |
|  lal TARLB
 | |
|  loi EM_PSIZE
 | |
|  bra *2
 | |
| 1
 | |
|  lae _m_lb
 | |
|  loi EM_PSIZE
 | |
| 2
 | |
|  lal LOCLB
 | |
|  sti EM_PSIZE
 | |
|  lal LOCLB
 | |
|  loi EM_PSIZE
 | |
|  lal DESCR
 | |
|  loi EM_PSIZE
 | |
|  adp SAVSP
 | |
|  loi EM_WSIZE           ; or EM_PSIZE ?
 | |
|  ads EM_WSIZE           ; or EM_PSIZE ?
 | |
|  loi EM_PSIZE
 | |
|  lae descr+D_SP
 | |
|  sti EM_PSIZE
 | |
|  lal LOCLB
 | |
|  loi EM_PSIZE
 | |
|  lae descr+D_LB
 | |
|  sti EM_PSIZE
 | |
|  gto descr
 | |
|  end ?
 |