Line | |
---|
1 | #
|
---|
2 | ; $Header: /cvsup/minix/src/lib/ack/libp/gto.e,v 1.1 2005/10/10 15:27:46 beng Exp $
|
---|
3 | ; (c) copyright 1983 by the Vrije Universiteit, Amsterdam, The Netherlands.
|
---|
4 | ;
|
---|
5 | ; This product is part of the Amsterdam Compiler Kit.
|
---|
6 | ;
|
---|
7 | ; Permission to use, sell, duplicate or disclose this software must be
|
---|
8 | ; obtained in writing. Requests for such permissions may be sent to
|
---|
9 | ;
|
---|
10 | ; Dr. Andrew S. Tanenbaum
|
---|
11 | ; Wiskundig Seminarium
|
---|
12 | ; Vrije Universiteit
|
---|
13 | ; Postbox 7161
|
---|
14 | ; 1007 MC Amsterdam
|
---|
15 | ; The Netherlands
|
---|
16 | ;
|
---|
17 |
|
---|
18 | /* Author: J.W. Stevenson */
|
---|
19 |
|
---|
20 |
|
---|
21 | mes 2,_EM_WSIZE,_EM_PSIZE
|
---|
22 |
|
---|
23 | #define TARLB 0
|
---|
24 | #define DESCR _EM_PSIZE
|
---|
25 |
|
---|
26 | #define NEWPC 0
|
---|
27 | #define SAVSP _EM_PSIZE
|
---|
28 |
|
---|
29 | #define D_PC 0
|
---|
30 | #define D_SP _EM_PSIZE
|
---|
31 | #define D_LB _EM_PSIZE+_EM_PSIZE
|
---|
32 |
|
---|
33 | #define LOCLB 0-_EM_PSIZE
|
---|
34 |
|
---|
35 | ; _gto is called with two arguments:
|
---|
36 | ; - pointer to the label descriptor (DESCR)
|
---|
37 | ; - local base (LB) of target procedure (TARLB)
|
---|
38 | ; the label descriptor contains two items:
|
---|
39 | ; - label address i.e. new PC (NEWPC)
|
---|
40 | ; - offset in target procedure frame (SAVSP)
|
---|
41 | ; using this offset and the LB of the target procedure, the address of
|
---|
42 | ; of local variable of the target procedure is constructed.
|
---|
43 | ; the target procedure must have stored the correct target SP there.
|
---|
44 |
|
---|
45 | descr
|
---|
46 | bss 3*_EM_PSIZE,0,0
|
---|
47 |
|
---|
48 | exp $_gto
|
---|
49 | pro $_gto,_EM_PSIZE
|
---|
50 | lal DESCR
|
---|
51 | loi _EM_PSIZE
|
---|
52 | adp NEWPC
|
---|
53 | loi _EM_PSIZE
|
---|
54 | lae descr+D_PC
|
---|
55 | sti _EM_PSIZE
|
---|
56 | lal TARLB
|
---|
57 | loi _EM_PSIZE
|
---|
58 | zer _EM_PSIZE
|
---|
59 | cmp
|
---|
60 | zeq *1
|
---|
61 | lal TARLB
|
---|
62 | loi _EM_PSIZE
|
---|
63 | bra *2
|
---|
64 | 1
|
---|
65 | lae _m_lb
|
---|
66 | loi _EM_PSIZE
|
---|
67 | 2
|
---|
68 | lal LOCLB
|
---|
69 | sti _EM_PSIZE
|
---|
70 | lal LOCLB
|
---|
71 | loi _EM_PSIZE
|
---|
72 | lal DESCR
|
---|
73 | loi _EM_PSIZE
|
---|
74 | adp SAVSP
|
---|
75 | loi _EM_WSIZE ; or _EM_PSIZE ?
|
---|
76 | ads _EM_WSIZE ; or _EM_PSIZE ?
|
---|
77 | loi _EM_PSIZE
|
---|
78 | lae descr+D_SP
|
---|
79 | sti _EM_PSIZE
|
---|
80 | lal LOCLB
|
---|
81 | loi _EM_PSIZE
|
---|
82 | lae descr+D_LB
|
---|
83 | sti _EM_PSIZE
|
---|
84 | gto descr
|
---|
85 | end ?
|
---|
Note:
See
TracBrowser
for help on using the repository browser.