Mercurial > hg > CbC > old > device
annotate Idea @ 66:0b068058dd67
*** empty log message ***
author | kono |
---|---|
date | Sat, 22 Feb 2003 01:32:47 +0900 (2003-02-21) |
parents | eeca07d1b1c2 |
children | 8a72b0afccfc |
rev | line source |
---|---|
0 | 1 |
2 Thu Nov 25 17:27:12 JST 1999 | |
3 | |
4 subroutine call ���ʤ� | |
5 �ɽ��ѿ���ʤ� | |
6 �������ꡢ����ѿ���¿�Ѥ��� | |
7 ����ѿ��Υ������פ϶ɽ�Ū | |
8 Fortran ���Ѥ˶ɽ��ѿ�����Ū�˼�� | |
9 recursion ������ˤϡ���ʬ����¸���� | |
10 subroutine call���Υ쥸�����Υ����֤�ɽ�Ū�˹Ԥ� | |
11 ����ϡ�����ä��Ѥ���ʤ�? | |
12 ��äѤ�ǥե���ȤΥե졼��ϻ����⤯��? | |
13 | |
14 recursive call �Ȥ����Ǥʤ��Τ���̤��뤫? | |
15 | |
16 fp ���Ѱդ��������ɤ� | |
17 | |
18 �ؿ������Ʊ���ˡ��������Ѥ�fp�ι�¤�Τ��Ѱդ��� | |
19 | |
20 C ��compile������ˤϡ�stack������⤯ | |
21 fp = (struct func_state *)stack | |
22 ���äȡ��ɤ������������? ������������⤢��櫓�͡� | |
23 ���㤢��fp������? ����ϵ�������ʤ��ʡ�static | |
24 ��fp�ˤ�����ɤ��櫓�͡� | |
25 | |
26 func(void *stack) { | |
27 static struct func_state { | |
28 static struct func_state *fp; | |
29 int local1; | |
30 brahbrah... | |
31 } func_state; // �����ޤ� hidden | |
32 func_state.fp = (stack -= sizeof(struct func_state)); | |
33 } | |
34 | |
35 func_state ��ȤäƤ���黻�Ҥ����ä������ɤ�? �����͡� | |
36 func.state | |
37 ���餤? | |
38 | |
39 fp->local1 �ߤ����ʤ��Ȥ�������ʤ顢C ��Ʊ���ˤʤ롣 | |
40 | |
41 call �������arguemnt �⡢ | |
42 static �� func_state ���֤� | |
43 stack ��� func_state ���֤� | |
44 �Ȥ������̤������褬���롣C�ȸߴ��ʤ顢��������ԡ� | |
45 | |
46 Recursive �ʤ��Ԥ��������θ���Ͼ������ܤҤ��뤫�顢static | |
47 �ʤ�ΤǤ��ɤ��Ϥ��� | |
48 | |
49 Internal function ��? ���äƤ⤤���������... | |
50 | |
51 Recursive call ������ˤϡ� fp ��save����ɬ�פ�����͡� | |
52 (--(struct func_state *)stack) = fp; | |
53 call callee(&fp->arg,continuation,stack); | |
54 call ���Ƥ⡢��ä���ʤ�����... continuation �ϰ���Ū�ˤ�code | |
55 ������... ����� Internal function �ˤ��뤫�� | |
56 | |
57 continuation �˰���Ū��compile������ˡ��ͤ��ʤ��Ȥ����ʤ����� | |
58 self ��ɬ�פʤ櫓��? | |
59 | |
60 �����̾����ͤ��ʤ��Ȥ�����ʤ��� | |
61 | |
62 C ����Υ���ѥ����ʤ��Ȥ����ʤ��Τ�... | |
63 | |
64 Mon Dec 13 18:53:04 JST 1999 | |
65 | |
66 compiler based �ǡ������� partial evaluation �Ǥ���? | |
67 | |
68 func ��database�Ȥ��ư����ʤ��ʤ顢����ϤǤ��ʤ��� | |
69 | |
70 ���������������ܤȤ��Ƥϼ�갷���롣 | |
71 | |
72 func.state | |
73 func.code | |
74 | |
75 �ߤ����ʷ��ˤ���partial evaluation������ɤ� | |
76 | |
77 �Ǥ�ߤޤ�Τ�? | |
78 | |
79 textual �Ǥʤ������Ū�ʥ�����ɽ�������ä������ɤ�? <-> interpreter? | |
80 | |
81 Prolog �ǤϤʤ�Ǥ����ʤ���? --> Unification ���Ť����� | |
82 | |
83 Sat Nov 27 13:50:41 JST 1999 | |
84 | |
85 func.state �Ȥ����Τ��ä��顢 | |
86 struct { | |
87 struct { | |
88 int i; | |
89 } state; | |
90 state *code = { | |
91 i = i+1; | |
92 }; | |
93 } name; | |
94 �ߤ����ʷ��ǡ����켫�Τ�¤�������? �ǡ������������ʬɾ������롣 | |
95 �������ǽ���ʤ�ۤɡ� | |
96 *name.code; | |
97 �ͤϤ���櫓? �ͤ� &state �Ǥ��礦�͡� | |
98 self ������� | |
99 struct { | |
100 struct { | |
101 int i; | |
102 } state, | |
103 *code = { | |
104 self->i = self->i+1; | |
105 }; | |
106 } name; | |
107 ���ʡ�self = state ����͡� | |
108 | |
109 union �γ�ĥ�⤢�碌�Ƶ��������... | |
110 | |
111 Partial evalutator �ޥ�ƥ�������¹ԷϤˤ���Ƥ������Ȥϲ�ǽ��? | |
112 | |
113 byte code �Ȥ����ۥޥ�����ä����ǽ�������Ǥʤ�����? | |
114 | |
115 ������ˤ��衢��¤�ΤΥ�����unique���������ʤ��Ȥ�����ʡ� | |
116 | |
117 �إå��ե�����Ϥɤ������? | |
118 | |
119 Mon Dec 13 18:53:18 JST 1999 | |
120 | |
121 library �Ȥ���������? | |
122 | |
123 exec sequence �Ǥϡ� | |
124 (--(struct func_state *)stack) = fp; | |
125 call callee(&fp->arg); | |
126 �Ȥ�������pointer�����Ϥ���? ������Ѥ���͡� | |
127 | |
128 ���Ϥ��ˤ���Ȥ���С�ʣ�����ͤ��Ϥ����ۤ����ɤ��� | |
129 | |
130 func(void *stack) { | |
131 static struct func_state { | |
132 static struct func_state *fp; | |
133 int local1; | |
134 brahbrah... | |
135 } func_state; // �����ޤ� hidden | |
136 func_state.fp = (stack -= sizeof(struct func_state)); | |
137 } | |
138 | |
139 �ΰ������Τ�����¤�ΤǤ���٤��� | |
140 | |
141 func( | |
142 struct void *stack | |
143 ) { | |
144 static struct func_state { | |
145 static struct func_state *fp; | |
146 int local1; | |
147 brahbrah... | |
148 } func_state; // �����ޤ� hidden | |
149 func_state.fp = (stack -= sizeof(struct func_state)); | |
150 } | |
151 | |
152 �ǡ���¤�Τ� register storage ������� | |
153 | |
154 func( | |
155 static struct argment { | |
156 register void *stack; | |
157 register void *continuation; | |
158 } | |
159 ) { | |
160 static struct func_state { | |
161 static struct func_state *fp; | |
162 int local1; | |
163 brahbrah... | |
164 } func_state; // �����ޤ� hidden | |
165 func_state.fp = (stack -= sizeof(struct func_state)); | |
166 } | |
167 | |
168 ����ȡ�caller �����⡢��¤�Τ�����Ȥ���Τ������� | |
169 | |
170 call caller( | |
171 static struct argment { | |
172 register void *stack; | |
173 register void *continuation; | |
174 } arg = {a,b}; | |
175 ) | |
176 | |
177 �ߤ����ʡ���������ι�¤�Τϥ��ե������ȸƤФ�롣 | |
178 | |
179 argument �ϡ�callee �ˤ��ä������ɤ����ɡ�caller ¦�ˤ��äƤ� | |
180 �ɤ���register �ʤϡ������� | |
181 | |
182 caller(interface caller_arg = {a,b,c}) | |
183 �ߤ�����syntax ���ʡ� | |
184 caller->interface = {a,b,c}; | |
185 *caller->code; | |
186 �� | |
187 caller(a,b,c); | |
188 �ȾΤ��롣 | |
189 | |
190 function �ˤϡ�interface �� code �� state �����뤳�Ȥˤʤ롣 | |
191 | |
192 state �˥��������������lock��? protected state? synchonized state ����? | |
193 �������sequential implementatoin�Ǥϡ�����ʤ�ΤϤ���ʤ��� | |
194 | |
195 function { | |
196 interface: | |
197 register int a; | |
198 register struct self self; | |
199 state: | |
200 int b; | |
201 serialized int c; | |
202 code: | |
203 b = a; | |
204 } | |
205 | |
206 int ��void value ��������롣�����ϽŤ��ʤ뤱��... | |
207 | |
208 serialzed �� semantics ��? | |
209 | |
210 �⤦����micro-C�˶! | |
211 | |
212 carring state �� static state�� | |
213 | |
214 Mon Dec 13 19:42:41 JST 1999 | |
215 | |
216 interface �� regsiter keyword ��Ȥ��Τϡ����ޤ�� | |
217 ������ꤹ���롣�Ǥ⡢�Ǥʤ��Ⱦ��֤ˤǤ��ʤ�? | |
218 ����ʤ��ȤϤʤ�������äѤ�caller¦��static �ΰ�� | |
219 ľ�ܽ���? | |
220 | |
221 ����C����٤������Ǥ⡢������40�ĤȤ������줿��... | |
222 | |
223 Wed Dec 15 14:09:49 JST 1999 | |
224 | |
225 C �ȸߴ��ˤ���? | |
226 goto function(argments); | |
227 goto *continuation(argments); | |
228 �ߤ����ʴ����ǡ� | |
229 | |
230 stack�δ�����? �ɤ�����library �Ȥθߴ��ϤȤ�ʤ��� | |
231 �����ʤ��������... | |
232 | |
233 local �ѿ���������� stack ��ư�������Ǥ⡢�᤹�ۤ����ʤ��� | |
234 closure �����뤫? | |
235 | |
236 return �������ε�ư��ʣ���ˤʤ롣���return����櫓���顣 | |
237 | |
238 argments ��static �ΰ�ˤ��������������ȸߴ������Ȥ�ʤ��� | |
239 stack ��� frmae pointer ��ˤʤ��ȥ�������顣 | |
240 | |
241 ξΩ������Τ�̵����? �Ĥޤꡢ������ȡ��ƤӽФ��줿���� | |
242 frame semantics �ϡ�C �ȸߴ��ˤʤ롣�����顢stack��ľ��� | |
243 frame pointer ������ȻפäƤ��� (������? ) frame pointer | |
244 stack pointer �˱�äư�ư����ľ��ˡ����������offset | |
245 �ǰ��������뤳�Ȥˤʤ롣 | |
246 | |
247 �Ĥޤꡢ����Ϥ�����ä����Ȥ���ʤ�? �Ĥޤꡢgoto ���ȡ� | |
248 frame pointer �ϡ�stack ��ľ��Ȥϸ¤�ʤ����顣���� | |
249 frmae pointer ���Ф˰����˥����������Ƥ������̤����ɤ͡� | |
250 | |
251 stack �˰������Ѥ�Τ���ǧ���ơ�goto �ξ��ϡ�������¦�� | |
252 stack �����äƤΤ�? �Ȥ������Ȥϡ����̤δؿ�������� | |
253 ��ˡ���Ѥ���äƤ��Ȥ����ޡ������Ϥʤ����� | |
254 | |
255 ����ȡ�goto ��semantics �ϡ�C �ȸߴ��ˤʤ롣���������� | |
256 �����ۤʤ뤳�Ȥ롣����ϡ��ʤ��������ʡ�����ˡ� | |
257 ������ȴؿ��ƤӽФ����ڤ��ʤ�ʤ�... | |
258 | |
259 �Ȥ������Ȥϡ���ϤꡢC ��call �ϡ�call funciton �� | |
260 �¸����ơ�����¾�θƤӽФ��ϡ����٤ơ�goto ������ | |
261 ���������������������� | |
262 | |
263 ����ϡ����θ���δؿ���call���줿�����ʡ�dual entry �ˤ��ơ� | |
264 call �λ��ȡ�goto �λ�����̤��뤫�� | |
265 func: stack processing | |
266 func_goto: normal processing | |
267 ... | |
268 �ߤ����ʴ������Ǥ⡢return �Ϥʤ�����... | |
269 | |
270 ���Τ�����⼫ʬ�ǵ��ҤǤ������Ǥ���٤�����͡������̤ꡣ | |
271 �ĤޤꡢC �Ȥ�stub �⼫ʬ�ǵ��Ҥ���ȸ������Ȥ��� | |
272 | |
273 protocol function { | |
274 interface c { | |
275 register "%esp" struct { | |
276 entry code ret(int); | |
277 void *fp; | |
278 } *sp; | |
279 register "%ebp" void *fp; | |
280 }; | |
281 code function_code { | |
282 fp = sp; | |
283 sp += sizeof(struct local); | |
284 struct local *local = sp; | |
285 | |
286 local->i = 1; | |
287 goto *fp->ret(local->i),sp=fp; // return(local->i); | |
288 }; | |
289 } | |
290 | |
291 �ߤ����ʴ����Ǥ������ä�����������֥顣���ޤ���return���������ɡ� | |
292 �ޤ���return �Ϥ��Τޤ�return�Ǥ⤤�����ɤ��� | |
293 | |
294 ����������ɤ������Τ�ʤ���code ��ʣ�������뤫�顣 | |
295 | |
296 state �ʳ��ϡ�consitent state �Ǥ��뤳�Ȥ��ݾڤ��ʤ����äƤΤ�? | |
297 local �ѿ��ϻȤäƤ��ɤ����ɡ�call/goto ������ǡ��ͤ��ݾڤ��ʤ���... | |
298 | |
299 ������������������Ƥ�ʤ��� | |
300 | |
301 �����顢�쥸�������Ф���ޥåԥε��Ҥȡ������Ǥʤ���ʬ�� | |
302 ���Ҥ�ʬΥ����٤��Ǥ��礦�͡� | |
303 | |
304 | |
305 �������դ˼�������櫓�ˤϤ����ʤ����餡... | |
306 | |
307 Thu Dec 16 13:44:21 JST 1999 | |
308 | |
309 lock �Ͼ������ܥ�٥�Ǽ¸�����Τ����顢self �ʤɤ� | |
310 �Ȥä�lock����ɬ�פϤʤ��Ϥ��� | |
311 | |
312 ���Τ�ľ�ϡ��������ܥ�٥�ǡ� | |
313 lock(storage) -> transition | |
314 �ߤ����ʷ��ǵ��Ҥ�����ɤ�������������ɤΤ褦�˵��Ҥ��뤫�� | |
315 �⤦���������ꤷ�褦�� | |
316 | |
317 | |
318 �����ϥ쥸�����Ϥ��ˤ��褦��Ĺ�������ϡ��ƤӽФ�¦���ΰ�ؤ� | |
319 �ݥ��Ȥ��롣�������ꤷ�Ƥ��ɤ�����������С�varargs | |
320 �ߤ����ʤ�ΤϤʤ��ʤ롣�����������ʤ�ǡ�����ʤ�Τ�����������? | |
321 ������Ϥ��Ф�������� | |
322 | |
323 �ʤΤǡ������ϰ��(or ���)�˸¤�Ȥ�����ˡ�⤢�롣 | |
324 | |
325 �Ȥ���ȡ���Ϥꡢ����ä���Ū�ΰ��ưŪ�ΰ����ݤ��뤳�Ȥ� | |
326 �Ǥ��ʤ��� | |
327 | |
328 ���θ���Ǥ�ưŪ�ΰ�ϼ�ʬ�dz��ݤ���櫓�����顢������������ʤ��� | |
329 | |
330 Thu Dec 16 20:24:55 JST 1999 | |
331 | |
332 �Ȥ���ȴؿ��ƤӽФ��ϡ� | |
333 # register save | |
334 # set 1st argument in register %eax | |
335 # set 2nd argument in register %ecx | |
336 # set extra aguments in save area | |
337 # set extra argument pointer in %edx | |
338 jmp function | |
339 �Ȥ��������ˤʤ�櫓�͡�second ���������ΤϤ��ɤ����������� | |
340 �ˤ��褦�� | |
341 | |
342 �����ȡ�frame pointer �Ϥʤ����ɡ�����ѥ���μ�礫�餹��� | |
343 ���ä������ɤ�����������frame pointer ���Τ�Τ�static | |
344 �ˤȤ�ΤϤޤ����������顢frame pointer ��first argment | |
345 �Ȥ������Ȥˤ����������������Ȥ���Ȱ����ϡ�����ˡ����� | |
346 ��ȸ����櫓���� | |
347 f(fp,argment) | |
348 fp ���Ϥ��Τˤ����argment ��쥸�������Ϥ��ΤϤ��������������������ɡ� | |
349 �ޡ��ɤ����� | |
350 | |
351 return ���ʤ��ʤ顢return type �������Ȥ�Τ��Ѥ��ʡ� | |
352 | |
353 f(fp,arg1,arg2,arg3) �Ȥ���ȡ����줾�줬��ޤä��쥸���������äơ� | |
354 ¿��ʬ������ˤ���Ȼפ��롣�դ�դ�... | |
355 fp->xx | |
356 �ǥ�����������С����Τޤɽ��ѿ��ˤʤ롣����������� | |
357 ���äƤ��ɤ��� | |
358 | |
359 .set label,value | |
360 | |
361 �� as ���ͤåȤ���褦�Ǥ��͡� | |
362 | |
363 �ؿ�������θ����ä���ʤ����������ο��ۤϤ��ʤ��Ƥ褤�� | |
364 frame pointer ��Ȥä��鼫ʬ�����ݤ뤳�ȡ� | |
365 | |
366 ���� | |
367 a = atoi(s); | |
368 �ߤ����ʤ��ȤϤǤ��ʤ�... | |
369 | |
370 ���̤�C������ȸ�ȴְ㤤�䤹���� | |
371 | |
372 �Ȥ���ȡ�struct ��Ʊ�ͤˡ� | |
373 protocol | |
374 code | |
375 interface | |
376 state | |
377 ���Ѱդ���櫓�͡����֤���Τ���? | |
378 | |
379 �Ȥꤢ������register �Ϥ���function �����gotoʸ��������롣 | |
380 | |
381 code name(register "%ebp" void *arg) { | |
382 goto name(arg); | |
383 } | |
384 | |
385 ���餤����? �ǡ�first argment ��ɬ��register�ˤΤ�褦�ˤ��ʤ��� | |
386 �����ʤ���register storage class ������ơ� | |
387 register "%ebp" void *arg | |
388 �Ȥ�����櫓�͡� | |
389 | |
390 �äƤ��Ȥϡ��ޤ����쥸������������ʤ��Ȥ����ʤ��櫓�͡� | |
391 | |
392 �ǡ�stack ��Ȥä��黻�ϡ���������Τޤޤˤ���? ����Ǥ�ư���Ϥ��� | |
393 ���������goto�ϻȤ��ʤ�������顢����Ǥ����Ϥ��� | |
394 | |
395 �ǡ����줫�顢������ĥ���Ƥ����� | |
396 | |
397 interface c { | |
398 register "%ebp" void *arg; | |
399 } | |
400 code name(interface c) { | |
401 goto name(c.arg); // c. �Ͼ�ά��ǽ | |
402 } | |
403 | |
404 �Ȥ��͡�����ˡ� | |
405 | |
406 protocol name { | |
407 interface c { | |
408 register "%ebp" void *arg; | |
409 } | |
410 code name(interface c) { | |
411 goto name(arg); | |
412 } | |
413 code name1(interface c) { | |
414 goto name(arg); | |
415 } | |
416 } | |
417 | |
418 �ʤɤȤ���櫓�����ʤ�ȡ����줬 C �ȶ�¸����櫓�͡������� | |
419 | |
420 Fri Dec 31 11:44:03 JST 1999 | |
421 | |
422 code �Ǥʤ��ơ��̤�̾���Τۤ����ɤ��ʤ�? segment? action? | |
423 | |
424 �쥸����̾������Τϡ���äѤꤤ�䡣optional�ˤϵ����� | |
425 | |
426 interface �Ϲ�¤�ΤΤ褦�ʤ�Τ�����... ��¤�ΤǤ�����ʤ�? | |
427 ��¤�Τξ���... malloc ����? ����������malloc ����Ȥ��ơ� | |
428 ����free �����? | |
429 | |
430 ��������Ȥ��ˤϡ�����ƤƤ�����ʤ�? multi-thread �Ǥʤ���Ф͡� | |
431 multi thread �Ǥϡ����֤ϡ��쥸������ͳ�ޤ��ϡ�thread local �˻��� | |
432 ɬ�פ����롣static �ϡ������� thread local �˻����ʤ��ƤϤʤ�ʤ��� | |
433 ����ѿ��˳�꿶�ä�����ᡣ�Ǥ⡢���ޤϡ����� | |
434 | |
435 interface �ϡ��Ȥꤢ��������ĤޤǤ����Ϥ��ˤ��褦�� | |
436 self �� arg | |
437 �Ǥ��͡� | |
438 | |
439 �⤦������ĥ���䤹������ѥ��餬�����ʤ��� | |
440 | |
441 code name (c,a) | |
442 struct state *c; struct arg *a; | |
443 { | |
444 goto name(arg); | |
445 } | |
446 | |
447 local �ѿ���? ���θߴ��������꤫���� | |
448 | |
449 KL/1 ��ռ����ơ�interface �� heap ���֤����Ȥˤ��Ƥ��ɤ��� | |
450 GC �ϸ��������Ƥ����٤�������interface�� machine independent | |
451 �Ǥ���٤������Ȥ���� use/forget �ߤ�����ΤϤ���������� | |
452 �Ǥ⺣�ΤȤ����Ϲͤ���ɬ�פϤʤ��� | |
453 | |
454 �����ȡ� | |
455 code name (c,a) | |
456 struct state *c; struct arg *a; | |
457 { | |
458 int i; | |
459 goto name(arg); | |
460 } | |
461 �λ��ΰ���ѿ�i�Ϥɤ������? ����Ū�ˤϥ쥸����������Ƥ�����... | |
462 ���Ѥ����ʤ�? �������ʸ�ո����ޤ�����äѤ�heap�˳�����Ƥ��㤦 | |
463 �Τ���ñ�����Ǥ⡢�ɤ���ȴ������ˤϤ���ʤ��ʤ�櫓������... | |
464 | |
465 �ۤ�餤�������ѿ��ϡ�����call�Ǥ�ɬ��̵���ʤ�Τ����̡� | |
466 | |
467 �Ȥˤ������쥸�����ѿ���ɬ�פʤ�Ǥ��礦? | |
468 | |
469 �����顢GC �ȹ�碌�Ƹ�����߷פ��٤�����͡�API ���ꤷ�ơ� | |
470 �ۤʤ�GC������Ǥ���褦�ˤ��롣 | |
471 | |
472 Sat Jan 1 22:40:22 JST 2000 | |
473 | |
474 �ȡ��ˤ����� storage class regisgter ��������褦�� | |
475 | |
476 stmode=REGISTER | |
477 | |
478 �ǡ�local storage �Ȥ��ʤ������Ȥ��� | |
479 static register? �ϡ��ʤ��� | |
480 | |
481 symbol table �� storage class ����? dsp==EXTRN ��Ƚ�ꤷ�Ƥ��뤫�顢 | |
482 local �ѿ���36�ʾ夢��Ȥ��������ʤ뤾? | |
483 | |
484 sc �� GVAR/LVAR �����ɡ�regsiter �� LVAR ���ü���ۤ����顢 | |
485 sc �������ۤ�����������... | |
486 | |
487 Sun Jan 2 01:47:17 JST 2000 | |
488 | |
489 register �ѿ��ϤǤ��ޤ��������ɡ�regsiter ����ĻȤ��ȡ� | |
490 ���դˤʤäƤ��ޤ��Τǡ�REGISTER6 �ǥ���ѥ��뤷�ʤ��� | |
491 �빽�Ҥɤ�������register �ѿ���%esi,%edi �˳�����Ƥ�� | |
492 �������� | |
493 | |
494 Sun Jan 2 04:43:04 JST 2000 | |
495 | |
496 �ǡ� | |
497 code name (c,a) | |
498 struct state *c; struct arg *a; | |
499 { | |
500 goto name(c); | |
501 } | |
502 �ΰ���ѿ�̵���ϼ����Ǥ��ޤ�����������ĤޤǤ͡� | |
503 | |
504 .file "tmp.c" | |
505 .version "01.01" | |
506 gcc2_compiled.: | |
507 .text | |
508 # | |
509 # code name(c,a) | |
510 .align 2 | |
511 .globl code | |
512 code: | |
513 .type code,@function | |
514 # struct state *c; struct arg *a; | |
515 # { | |
516 # goto name(c); | |
517 movl %esi,%esi | |
518 jmp name | |
519 _5: | |
520 .size code,_5-code | |
521 .ident "Micro-C compiled" | |
522 | |
523 ������������ | |
524 | |
525 goto ʸ�����ɤ�������stack ����ǡ�jmp ����� | |
526 �褤��������.. | |
527 | |
528 Sun Jan 2 11:17:50 JST 2000 | |
529 | |
530 ���̤�call��continuation base�ˤ��뤳�Ȥ��Ǥ���? | |
531 | |
532 Sun Jan 2 20:28:45 JST 2000 | |
533 | |
534 goto ʸ�����ɡ���Ϥꡢ���١�expr ���������Ƥ��顢top level | |
535 �� jump code ���������褦�� | |
536 | |
537 Tue Jan 4 03:32:55 JST 2000 | |
538 | |
539 code ��type�ˤ��ʤ��ȡ� | |
540 code *p; | |
541 �Ȥ��ʤ��͡� | |
542 int *p(); | |
543 ��Ʊ�������ɤ��� | |
544 | |
545 | |
546 main(ac,av) | |
547 int ac; | |
548 char *av[]; | |
549 { | |
550 goto code1(ac,av); | |
551 } | |
552 | |
553 code code1(ac,av) | |
554 int ac; | |
555 char *av[]; | |
556 { | |
557 if (ac) | |
558 goto code1(ac,av); | |
559 else | |
560 goto ac(ac,av); | |
561 } | |
562 | |
563 Tue Jan 4 04:56:56 JST 2000 | |
564 | |
565 �����ʤ쥸�����ˤĤ������㤦 | |
566 ����ϡ�adecl ��reverse�ˤĤफ�顣 | |
567 | |
568 code ��retrun | |
569 | |
570 ��Ϥ�code��type�ˤ��ʤ��Ȥ��ᡣ | |
571 | |
572 main() | |
573 { | |
574 goto code1(); | |
575 } | |
576 | |
577 �Ȥ����ȡ�main ����ä����ʤ����������code1() �ʹߤǡ� | |
578 return ����櫓�ˤϤ����ʤ���(main �� disp ��code1 ���Τ����ʤ�) | |
579 goto label ��code1����������? | |
580 | |
581 main() | |
582 { | |
583 goto code1(ret); | |
584 ret: | |
585 } | |
586 | |
587 ������ȡ�ret ��forward label���ɤ���ʬ����ʤ�����? | |
588 | |
589 code1 ��ǻȤ�����ѿ��� stack ��ˤȤ�Τϰ����ʤ���������������� | |
590 %ebp ��ͳ�ǥ�����������Ȥ������Ȥϡ�main ������ѿ�������Ȥ������ȡ� | |
591 ������ɤ��ˤϡ�main ���goto code�ǡ�%ebp �������Ƥ����ɤ��� | |
592 (������ä���ʤ��Τ�����ʤ�) | |
593 | |
594 code1 ��goto �Ǥϡ���ä���ʤ����顢����ɬ�פϤʤ����������� | |
595 label ��code1 ����Ϥ����ȡ�����äȵ��ޤ����� | |
596 | |
597 �Ȥ���ȡ�����϶ػߤ��ơ�main() ���stack����Ǥ���goto���뤫? | |
598 ��������ȡ�̵�¸��ष�ơ���ɡ�����ʤ����Ȥˤʤ�... ������ | |
599 | |
600 main() ���local code ������С�����ϲ�褹�뤬.. | |
601 | |
602 main() | |
603 { | |
604 goto code1(code2); | |
605 code code2() { | |
606 return; | |
607 } | |
608 } | |
609 | |
610 �ߤ����ʴ������Ǥ⡢���������scope rule ���Ѥ���ɬ�פ�����ΤǸ������� | |
611 �ޡ������Ϥʤ����ɤ͡� | |
612 | |
613 continuation ������������ˡ�⤢�롣 | |
614 | |
615 main() | |
616 { | |
617 goto code1(continuation); | |
618 } | |
619 code code1(ret) | |
620 code (*ret)(); | |
621 { | |
622 goto *ret; | |
623 } | |
624 | |
625 ����? call/cc ? | |
626 | |
627 label �ؤ�goto������Τ⤤�����ɡ� | |
628 �Ǥ⡢label ������ȡ�������spagetty�ˤʤ�ʤ�? | |
629 | |
630 | |
631 Tue Jan 4 11:47:24 JST 2000 | |
632 | |
633 contiunation ����ʤ��ơ�return keyword ��Ȥ����� | |
634 (�ºݡ�continuation �Ⱦ����㤦��) | |
635 type �������Ѥˤʤ뤱�ɡ��ޤ��ɤ��� | |
636 | |
637 int | |
638 main() | |
639 { | |
640 goto code1(return); | |
641 } | |
642 code code1(ret) | |
643 code (*ret)(int); | |
644 { | |
645 goto *ret(3); | |
646 } | |
647 | |
648 ���ʡ�prototype ���դ��ʤ��Ȥ����ʤ����� | |
649 | |
650 Tue Jan 4 12:21:44 JST 2000 | |
651 | |
652 �������method�����٤�static �ˤʤäƤ��ޤ���dynamic ��method | |
653 �ƤӽФ��ˤ���ˤ�? dipatcher ��ʬ�Ǻ�뤳�Ȥˤʤ롣���ʤ� | |
654 ���ɤ�������... | |
655 | |
656 code method(obj,arg) | |
657 { | |
658 } | |
659 | |
660 �������뤤�ϡ�inline �ˤ��뤫... #define �Τ����� inline �ͤ��� | |
661 ����Ϥ��Ȥǹͤ����ɤ��� | |
662 | |
663 Tue Jan 4 14:22:19 JST 2000 | |
664 | |
665 main ���ѿ�����٤��Τȡ�gotgo (*reg)(123) �Ǥ��ͤϡ� | |
666 register �Ϥ��ǡ�current register �ˤΤ�ʤ��Τǡ� | |
667 ��ɡ�return label �����Ѥ˺��ɬ�פ����롣 | |
668 | |
669 Tue Jan 4 18:14:07 JST 2000 | |
670 | |
671 stack ��Ѥ����ơ��ƤӽФ���������С�call by value | |
672 ��register �Ϥ������¤���ɬ�פ�̵���ʤ롣 | |
673 | |
674 ʣ�����ͤ��֤����Ȥ��ưפ��� | |
675 | |
676 .file "tmp.c" | |
677 .version "01.01" | |
678 gcc2_compiled.: | |
679 .text | |
680 # | |
681 # code name(a,b,c,d,e,f) | |
682 .align 2 | |
683 .globl code | |
684 code: | |
685 .type code,@function | |
686 # struct arg *a,*b,*c,*d,*e,*f; | |
687 # { | |
688 # int g; | |
689 # goto name(a,b,d,e,f); | |
690 jmp name | |
691 _5: | |
692 .size code,_5-code | |
693 .ident "Micro-C compiled" | |
694 | |
695 ����?! | |
696 %esp new %esp = old %esp - 12 -4 | |
697 %ebp-4 = g | |
698 %esi = a | |
699 %edi = b | |
700 %ebp = old %esp 0 | |
701 %ebp+4 = c code_arg_offset=0 | |
702 %ebp+8 = d | |
703 %ebp+12 = e | |
704 %ebp+16 = f | |
705 | |
706 interface ���դ��褦! �Ȥ������� | |
707 goto name(struct {xxxx}) | |
708 �ߤ����ʴ������ɤ��櫓�͡��ɤ��register�ˤ���뤫�ȸ�������Ϥ��뤬�� | |
709 | |
710 �ǡ��ɤ���ä�call����Ф����櫓? emit_push���뤫����push | |
711 ����? | |
712 | |
713 ����������Ǥϡ����ᤫ��code argument �ο����Ѥ��ȡ� | |
714 ebp ������ư�������Ȥˤʤ롣�����ˤ�old sp �����뤫�� | |
715 �����Ĥ⥳�ԡ�����ɬ�פ����롣 | |
716 | |
717 %esp new %esp = old %esp - 20 | |
718 %ebp-20 = g | |
719 %esi = a | |
720 %edi = b | |
721 %ebp-16 = c code_arg_offset= -16 ((nargs-max_reg)*int_size) | |
722 %ebp-12 = d | |
723 %ebp-8 = e | |
724 %ebp-4 = f | |
725 %ebp = old %esp 0 | |
726 | |
727 ��������function ����call������ˤϡ�local �ѿ�����٤����ɤ��� | |
728 | |
729 # goto name(a,b,d,e,f); | |
730 | |
731 %esp new %esp = old %esp - 20 | |
732 %ebp-20 = g | |
733 %esi = a | |
734 %edi = b | |
735 %ebp-16 = c code_arg_offset= -16 ((nargs-max_reg)*int_size) | |
736 %ebp-12 = d | |
737 %ebp-8 = e | |
738 %ebp-4 = f | |
739 %ebp = old %esp 0 disp=0 (*) | |
740 local1 <----16 local variable | |
741 %edx -12 <- disp_offset | |
742 %ecx -8 | |
743 %ebx -4 | |
744 %ebp = %esp 0 | |
745 %eip 4 <- arg_offset | |
746 | |
747 �Ȥʤ롣�Ȥ������Ȥϡ�pushl %ebp �ϡ��ְ㤤�� | |
748 | |
749 �����ɡ�%ebp �ΤޤȤ��Τ��ɤ��ʤ���disp_offset �������äƤ��뤫�顣 | |
750 �����顢�⤦���� pushl %ebp �����ۤ����褤����������push ������ϡ� | |
751 ���(*)�� | |
752 leave movl %ebp,%esp | |
753 popl %ebp | |
754 ����ʤ��ä���? | |
755 | |
756 Thu Jan 6 13:00:33 JST 2000 | |
757 | |
758 �Ǥ����͡�����ǤȤꤢ����ư���Ϥ���®�٤��������... | |
759 ���Ȥϡ� | |
760 ANSI-C prototype | |
761 ANSI-C prototype check | |
762 Interface Definietion | |
763 GC support | |
764 Direct handling of Frame | |
765 ���͡���ñ�˽��褽��? ���֤�... | |
766 | |
767 Fri Jan 7 09:42:53 JST 2000 | |
768 | |
769 goto ʸ��ư���Ƥʤ��ä������� peep hole optimization version �� | |
770 ��뤫? | |
771 | |
772 continuation �Ȥ��� label �������褦�ˤ���٤���? | |
773 ��������������ʤ�����ɡ�����äȡ������ץ�����ब | |
774 �����褦�ˤʤ롣���ȡ�����¦�δĶ�(frame)��ݻ����� | |
775 ɬ�פ����롣�ޡ��Ǥ��ʤ��Ϥʤ���... | |
776 | |
777 ��������ȡ�label ���ͤ���Ĥ褦�ˤʤ롣 | |
778 a = label:; | |
779 �Ȥ���������label:(a,b,c) {}; �ߤ����ʷ��ǡ�parallel ����������ȸ��� | |
780 ��⤢��͡� | |
781 | |
782 �����������C�Ȥ��������ɤ���... main() { label:(){ ... } } | |
783 �ߤ�����nest��������ɤ����ȸ������꤬���롣 | |
784 �ѿ��λ��Ȥ�����ʤ���С��ä�����Ϥʤ��� | |
785 | |
786 a = label: �ϡ���Ťΰ�̣������ʤ��� | |
787 | |
788 �����̾����DinnerBell II �Ȥ�? join �������? | |
789 code entry_a().entry_b() {} | |
790 �Ǥ���? parallel call ��? | |
791 | |
792 Fri Jan 7 19:53:53 JST 2000 | |
793 | |
794 ���ޤΤޤޤ��� return ���Ķ�����äƤʤ����顢���æ�ФǤ��ʤ��� | |
795 �ޤ����Ķ�������Ƥ⤤��������ɡ��ɤ����֤����ȸ������꤬ | |
796 ����͡� | |
797 | |
798 ��������ʤ��ơ�return ¦��Ƚ�Ǥ��뤫? | |
799 retrun(ID) | |
800 �ߤ����ʷ���ID��Ƚ�Ǥ��롣��������С�return ¦��ID | |
801 ��Ƚ�ǤǤ��롣����... | |
802 | |
803 �ޤ����Ϥ�ꡢ�Ķ�����ä��⤯�����������ʤ����Ǥ⡢ | |
804 �����Ϥ��Ƥ��뤫�顢��İ����Ϥ��ơ�������Ȥ�줿�Ȥ��ˡ� | |
805 ȿ��¦���ä��Ƥ��ޤ��ΤϤ�������͡����Τޤޤʤ�С� | |
806 �����������Ȥϵ�����ʤ��� | |
807 | |
808 continuation ��ͭ���������ʤ顢���ΤޤޤǤ⤤�������... | |
809 contrinuation ��Ķ��ϡ����Υ����ƥ�Ǥϼ�ʬ�Ǻ�뤳�Ȥ� | |
810 �Ǥ��뤫��͡� | |
811 | |
812 �����ʤ������.... retlabel �� retcont �ϼ¤ϥ��֥������� | |
813 ���Τ˰�Ĥ�����ɤ��� | |
814 | |
815 �������Ϥ��Ȥ��ˡ������˴Ķ��ؤΥݥ���Ƥ����ɤ��Τǡ� | |
816 ���ϳ�ȴ�ñ��������������ȡ���ι�¤�Τ�������Ϥ��ȸ��� | |
817 ������褹��ɬ�פ����롣 | |
818 | |
819 �Ǥ⡢���μ����ʤ�С��ޤä���Ʊ���ѿ��ι����ʤ�Х��ԡ��� | |
820 �ºݤˤϵ�����ʤ��櫓����������ʤ��Ϥ����äˡ�������ݾڤ��뤿��ˡ� | |
821 interface ���������ɬ�פ����롣 | |
822 | |
823 return -> | |
824 (void *)old bp | |
825 return address | |
826 | |
827 bp ��ľ�����Ǥ���褦�ˤ���Ȥ����������.... | |
828 | |
829 Sat Jan 8 08:49:59 JST 2000 | |
830 | |
831 ���ϡ�code ��Ǥ�return�Ǥ��ʤ��櫓�����ɡ��¤ϡ�return �äơ� | |
832 code return0(i) int i; { return(i); } | |
833 ��? ���϶ػߤ��Ƥʤ�������㤦��͡��ɤ�����code���Ф�������? | |
834 | |
835 doreturn() �Ǥ� retpending �åȤ��Ƥ�����������顢control=1 | |
836 �Τޤޡ��ǡ�code �ν���ˤ���Τǥ��顼�ˤʤ롣checkret �ϡ� | |
837 statement �ΰ�����Ƚ�Ǥ���褦�ˤ����ۤ�������Ū�������� | |
838 | |
839 ���æ�ФϷ빽����������͡�������åפ���Ƥ��줷����? | |
840 destructor ��Ʊ���ǡ������code�������ƤӤ����Τ����̤������� | |
841 | |
842 bp ��Ʊ���ˤʤ�ޤ� return ������ɤ��櫓����͡� | |
843 return ��Ʊ���ǡ�����Ū�˴Ķ�������Ϥ��褦�ˤ��뤫�� | |
844 type �� void * ���ɤ�? | |
845 | |
846 return �������stack�ξ�¤�ۤ��Ƥ��뤫�ɤ�����ʬ�ǥ����å����� | |
847 ɬ�פ�����͡�ï��return���뤫��code������������ɤ��櫓�����ɡ� | |
848 | |
849 code return0(i) int i; { return(i); } | |
850 | |
851 ������ơ������ǡ�frame pointer ����褢�뤤���Ϥ��������� | |
852 ��Ӥ��ƽ�������? | |
853 code return0(i,env) int i; env *env; { | |
854 if (env==self) return(i); | |
855 } | |
856 ����? ����Ϥ���������͡� | |
857 code return0(i,env) int i; env *env; { | |
858 if (env!=self) { | |
859 env->return(); | |
860 return(i); | |
861 } | |
862 } | |
863 �⡢�ʤ��Ѥ���ʤ����ƤӽФ��ȵս�˵��ꤿ���櫓����... | |
864 �ºݡ��ս�ˤϵ��äƤ���櫓����͡� | |
865 | |
866 return ����Ǥ���������Ӥ���Ȥ������⤢�뤱�ɡ� | |
867 | |
868 ����ϡ�destructor ���Ϥ��������͡��������self ���ɤ��櫓������ | |
869 ���Τ�����ϡ����쳰������ǡ����������Ū�ˤ��������顢���θ���� | |
870 ��äƤ���櫓�ʤΤ����顢����������ǽ�������ΤϤ��������� | |
871 | |
872 code return0(i) int i; { return(i); } | |
873 | |
874 ������ȡ�return �η������ʤ��ȸ������꤬������ʡ���ñ�ˤ� | |
875 �����å��Ǥ��ʤ��� | |
876 int | |
877 main() { | |
878 code a() { | |
879 } | |
880 code b() { | |
881 return(i); | |
882 } | |
883 } | |
884 �ˤ���С�check �ϤǤ���褦�ˤʤ롣�Ǥ⡢������ȡ� | |
885 int | |
886 main() { | |
887 a: { | |
888 } | |
889 b: { | |
890 return(i); | |
891 } | |
892 } | |
893 �Ⱥ����ʤ���module ������쳰�Ǥ��Ȥ����Τ���ݤʤΤ����顢����Ǥ� | |
894 �ޤ���������Ϲ�饢����֥�ʤΤ����顣 | |
895 | |
896 ����������return �ȡ����æ�л���abort�Ȥϡ��������㤦�������顢 | |
897 �̤�code ��ƤӽФ��ʤ��Ȥ��ᡣ���뤤�ϡ��ͤǶ��̤��뤫������ϡ� | |
898 logic programming ��fail/success �Ȼ��Ƥ��롣 | |
899 main() { } abort { ... } | |
900 �Ǥ⤤������? | |
901 main() { code abort { ... }; code return { ... }} | |
902 ����? | |
903 | |
904 ���衢subroutine call���Τ������ʤ�ξ�ά���ʤ櫓�����顢����� | |
905 �������ʤ������Τޤޤ��̾��subroutine call�ߥ�졼�ȤǤ���Τ�? | |
906 code (struct arg {...},void *sp) { | |
907 struct env; | |
908 push(sp,arg); | |
909 push(env,arg); | |
910 } | |
911 �Ǥ��뤱�ɡ�����äȽŤ�����Ϥꡢframe pointer ��ľ�����ʤ��� | |
912 ���ᡣ | |
913 | |
914 goto ʸ�Τۤ��ˡ�env ����������Τ��ä��ۤ��������Τ��⡣ | |
915 goto (*ret)(),environment; | |
916 ���ʡ�type ��? (void *)? | |
917 goto ret(),environment; | |
918 �ˤϤʤ�ʤ���? ��������С���ʬ��thread������Ǥ��롣environment | |
919 ����������ɾ�����ʤ����ɤ���? �ޤ����ͤ��� | |
920 | |
921 ����ϼ������ưפ���... goto �Ȥ��������Τ������ˤ����Τ�? | |
922 env ���Ф���operation�����ä����������ʤ���push �Ȥ�? | |
923 | |
924 code return0(i) int i; { return(i); } | |
925 | |
926 ��ǧ���С�return ���ѿ��Ϥ���ʤ��ʤ롣 | |
927 | |
928 �Ǥ⡢�¤ϡ�return �ϡ�caller �ΰ����ο��Ȱ��פ��Ƥʤ��Ȥ����ʤ� | |
929 �櫓�����顢 code return0(i) int i; { return(i); } �Ϥ��ᡣenv | |
930 �Ȱ��פ��Ƥʤ��Ȥ����ʤ����Ȥ������Ȥ�ʬΥ����Ȥޤ�����ʤ�? | |
931 ����? ����ʤϤ��ʤ��ʡ� | |
932 | |
933 Sun Jan 9 01:15:56 JST 2000 | |
934 | |
935 ��ϤꡢʬΥ���ƤϤޤ�������Ȥ�ȡ� | |
936 goto func(arg); | |
937 ������ | |
938 goto func(arg) with current.env | |
939 �ߤ����ʤ�Τ����Ĥޤꡢ����ϡ�DinnerBell �Ρ� | |
940 self message: arg | |
941 ��Ʊ����self->func(arg); �Ǥ��ɤ�������function call�ȶ��̤��դ��ʤ��Τ� | |
942 �ɤ��ʤ��� | |
943 | |
944 ��������ȡ�type code ��size int �Ǥʤ��ʤ롣 | |
945 code *p = func; | |
946 �ǤϤ����ʤ��ơ� | |
947 code p = {func,env}; | |
948 �Ǥʤ��Ȥ����ʤ����ºݡ� | |
949 goto func(arg) | |
950 �Ǥϡ�current environment �� pushl %ebp ��stack = current env | |
951 ���Ѥ�Ǥ���櫓�����顣 | |
952 | |
953 ������ˤ��衢 | |
954 struct p = q; | |
955 �ϼ�������ɬ�פ����롣local�ʡ� | |
956 code p = {func,env}; | |
957 ��ư���Ϥ�����... | |
958 | |
959 code (*p)(); | |
960 goto (*p)(arg); | |
961 | |
962 �Ϥ����龯����������������ϡ�goto ��env ����äƤ���ȹͤ���٤��� | |
963 | |
964 ���Τ褦�ˤ���ȡ���ˡ� | |
965 func,env | |
966 ���Ȥ�code�Ȥߤʤ����Ȥˤʤ롣����ϡ�object �ȸƤ֤٤����� | |
967 ��������¸��object�Ȥ��̤���ʡ�actor �������ɤ�? | |
968 | |
969 ���������join�������С�������DinnerBell���ʡ����������Ϥʤ����ɡ� | |
970 | |
971 Sun Jan 9 01:40:05 JST 2000 | |
972 | |
973 local �ѿ��ν������allocation �θ���٤餻��ɬ�פ����롣 | |
974 nptr ���������Ϥ������? nptr �˽�����ե饰������? | |
975 | |
976 ʸ����ǽи�����local�ѿ��ν������������ư���Ƥ����? | |
977 | |
978 ��¤�Τ�copy�ϡ�lcheck �������٤��Ǥʤ��� | |
979 | |
980 Sun Jan 9 08:49:43 JST 2000 | |
981 | |
982 �����ʤ�����¿���ʤ������ȡ��ؿ��ƤӽФ���goto ʸ�� | |
983 ��¤�Τؤ��б����� | |
984 | |
985 goto (*code)(); | |
986 | |
987 ����self env ��Ȥ��Τ���code ������ͤ�Ȥ��Τ�����̤��� | |
988 ɬ�פ����롣�⤷*��Ȥ�ʤ��Ȥ����label(FNAME)�Ȥζ��̤� | |
989 �Ĥ��ʤ����������Ǥ⡢�Ķ�������⤯���Ȥˤ������顢label | |
990 �ؤ�jump���褦�Ȼפ��ФǤ���͡� | |
991 | |
992 ���������Ϥʤ��Ƥ⡢���ι����ʤ��statementñ�̤��������Ф���Τ� | |
993 �ưפ������� | |
994 | |
995 ���ФǤ��뤱�ɡ����ν������̤���1�����㽪��ʤ����ʤ��� | |
996 ��ư�������������ΤǤ��礦? | |
997 | |
998 Mon Jan 10 09:00:12 JST 2000 | |
999 | |
1000 �����˹�¤�Τ�����ˤϡ�ɬ��ANSI-C�ˤ���ɬ�פ����롣���� | |
1001 �ʤ���... | |
1002 | |
1003 goto ʸ�ˤ� label, code, continuation ��3�Ĥ���롣 | |
1004 continuation = code + env | |
1005 | label +env | |
1006 �ʤΤ�����code/label �Ǥϡ�env �����Ƥ��ۤʤ롣�Ǥ���������� | |
1007 ���β��ͤϤ���Τ�? | |
1008 | |
1009 ��������code , env ��ʬΥ����Ȥ��ޤ�˴��������롣�ɤ���goto | |
1010 �������ʤ�����餤����? ����������ñ����ñ�ʤ顢���ä�����ˡ�� | |
1011 �Ȥ�٤�����ʤ�? ������ | |
1012 | |
1013 return �δؿ���¸���Ϥʤ����������ɤ��� | |
1014 ��Ĥˤ���Τϡ�pop �����꤬����Τ��ɤ��ʤ���... | |
1015 | |
1016 ��������ret ��env����ꤷ�����褦�ˤ������顢leave ����ɬ�פ� | |
1017 �ʤ��ʤä��������ơ�push %ebp ������������ʬ�ϡ�lea -disp(%ebp),%sp | |
1018 �Ǿõ��Ƥ��롣�Ȥ������Ȥϡ�jump ��function��¸��ʬ�Ϥ���ʤ� | |
1019 �Ȥ������Ȥ��͡� | |
1020 | |
1021 �Ǥ⡢�����ʤ���read only°����hardware support�Ǥ���Фʤ��� | |
1022 | |
1023 sched_yeilds() ������뤫��? lock ��? | |
1024 | |
1025 ������Ǥ������ɡ���äѤ������ | |
1026 | |
1027 Wed Jan 12 16:12:27 JST 2000 | |
1028 | |
1029 ���ϡ�ANSI prototype �Ϥ��ɤ��� | |
1030 bexpr() | |
1031 �ǡ��ؿ��Ǥΰ����ν���ȡ����Τ��Ȥ�����ν�����Ѥ�뤳�Ȥ����롣 | |
1032 ��������ȡ�������������ͥ�褵��Ƥ��ޤ�������ϡ����ޤ롣 | |
1033 | |
1034 ��������code_arg_offset �Τ褦����ˡ���ȡ�ANSI style �Ǥϡ� | |
1035 ���äƤ��ޤ��� | |
6 | 1036 |
1037 Thu Jan 13 04:46:12 JST 2000 | |
1038 | |
1039 # goto name(a,b,d,e,f); | |
1040 code name { int g; ... | |
1041 | |
1042 %esp new %esp = old %esp - 20 | |
1043 %ebp-20 = g code's local variable | |
1044 %ebp-12 = f <- new_disp | |
1045 %ebp-8 = d | |
1046 %ebp-4 = d | |
1047 %ebp-0 = c | |
1048 %edi = b | |
1049 %esi = a | |
1050 %ebp = old %esp 0 disp=0 new env | |
1051 local1 <----16 old local variable ( to be erased ) | |
1052 %edx -12 <- disp_offset | |
1053 %ecx -8 | |
1054 %ebx -4 | |
1055 %ebp = %esp 0 <- old env | |
1056 %eip 4 <- arg_offset | |
1057 | |
1058 | |
1059 Thu Jan 13 13:38:24 JST 2000 | |
1060 | |
1061 ���������Ǥ������ɡ�test/tmp7.c ��printf ��type mismatch �� | |
1062 �ʤ�ʤ������? ASNI �������Ѥ������ʤ��� | |
7 | 1063 |
1064 ������ȡ��ץ����������ؤ��ΤȤ��ˤϡ��빽���̤Υǡ����� | |
1065 ���ԡ����뤳�Ȥˤʤ롣����Ǥ⤤���������... | |
1066 | |
1067 ���줴�ȡ��ɤä��ˤȤä��֤���continuation�ؤλ��Ȥߤ����ʤ�� | |
1068 ���Ǥ��ʤ����ʡ� | |
1069 | |
1070 ���ԡ����Ǥ���С�environment/return ���Ȥ�ư���櫓�����顢 | |
1071 ����ؤλ��Ȥ����ؤ������äƤ��ɤ���͡� | |
1072 | |
8 | 1073 Fri Jan 14 12:03:35 JST 2000 |
1074 | |
1075 Libretto ��keyboard�����줿... control key �������ʤ�... | |
1076 | |
1077 printf �λ��Ȥ�����ϲ�褷�ޤ�����list2 ��local��heap | |
1078 �˳�����ƤƤ���Τ������ʤ��ä��͡� | |
1079 | |
1080 return �ν����ϡ�goto ʸ�ǽ��������ꡢenvironment �� | |
1081 returnto ���������ɤ��Ϥʤ���? | |
1082 | |
1083 environment �ϼ¤�������Ǥ���ʤ�ν�����ɬ�ס� | |
1084 new-environment() �ߤ�����library ������С�thread �ˤǤ��롣 | |
1085 | |
1086 join ��? | |
11 | 1087 |
1088 funcall ���Ѱդ�����ɤ��͡� | |
16 | 1089 |
1090 Mon Jan 17 15:23:34 JST 2000 | |
1091 | |
1092 struct aa f1() { | |
1093 return bb; | |
1094 } | |
1095 | |
1096 �ߤ����ʤΤ�? �ؿ��η��������η��ơ�crn ��pointer���Ϥ��ơ� | |
1097 ���Ȥ�copy���Ƥ��� stack ����ࡣ | |
1098 | |
1099 # bb=f1(aaa); | |
1100 movl $bb,%eax | |
1101 pushl %eax | |
1102 movl $aaa,%eax | |
1103 pushl %eax | |
1104 call main2 | |
1105 popl %edx | |
1106 copy %eax,%edx,$400 | |
1107 addl $400,%esp | |
1108 # return a1; | |
1109 | |
1110 �����Ǥ⡢������ȡ�local�ѿ����֤����Ȥ��˺���͡�leave; ret; | |
1111 ���ƤϤ����ʤ���... | |
1112 | |
1113 ������äѤꡢ�����������ϥ��ԡ����main2�˰����Ϥ��Ƥ���ߤ����͡� | |
1114 void f1(struct aa *ret) { | |
1115 *ret = bb ; | |
1116 return; | |
1117 } | |
1118 ��Ʊ����������ϴ�ñ�� | |
1119 f1().a[55] | |
1120 �ߤ����ʾ��ϡ��ɽ��ѿ��˶���Ū�˼�äƤ��ޤ��ߤ����͡�����Ϥ�����... | |
1121 ���������μ������Ȥ���äȸ��������� | |
1122 leal $-sizeof(struct),%esp | |
1123 pushl %esp | |
1124 �ʤ�����ɡ��ؿ��ƤӽФ�������ǤϤǤ��ʤ�����.... | |
1125 | |
1126 # main(ac,av) | |
1127 # int ac; | |
1128 .align 2 | |
1129 .globl main | |
1130 main: | |
1131 .type main,@function | |
1132 pushl %ebp | |
1133 movl %esp,%ebp | |
1134 pushl %ebx | |
1135 pushl %ecx | |
1136 pushl %edx | |
1137 # char *av[]; | |
1138 # { | |
1139 # register int i; | |
1140 # register char *p; | |
1141 # int j = 3; | |
1142 # struct { int b; void (*c)(struct aa); } q = {3,main1},r; | |
1143 # | |
1144 # j = 3; | |
1145 subl $20,%esp | |
1146 | |
1147 ����subl��夫����ꤷ�Ƥ���Ok�� | |
1148 | |
1149 �Ǥ⡢������� jump �λ��ˤ���ʤ�? ����뤫? �����͡������� | |
1150 �¹Ի��˥����å����Ƥ��Τ��Ѥ����� | |
1151 | |
1152 �ޤ�������ۤ�ɬ�פʵ�ǽ�ǤϤʤ�������ɡ� | |
1153 | |
1154 �����continuation���Ϥ��Ƥ��ȸ�����ˡ���Ȥ��ʤ����ȤϤʤ������... | |
1155 | |
1156 �ؿ��ƤӽФ��κǽ�ˤ�äƤ��Ф�����������ǤǤ��뤫��? | |
18 | 1157 |
1158 | |
51 | 1159 Sun Feb 20 23:59:16 JST 2000 |
1160 | |
1161 MIPS ��call frame | |
1162 | |
1163 $sp = $fp | |
1164 local variables | |
1165 saved register (including $31 = return address) | |
1166 | |
1167 mask �ϻ��Ѥ����쥸������bit pattern | |
1168 -4 �ϲ�? | |
1169 | |
1170 18 .mask 0xc0000000,-4 | |
1171 19 .fmask 0x00000000,0 | |
1172 20 0000 D0FFBD27 subu $sp,$sp,48 | |
1173 21 0004 2C00BFAF sw $31,44($sp) | |
1174 22 0008 2800BEAF sw $fp,40($sp) | |
1175 23 000c 0000000C move $fp,$sp | |
1176 24 0010 21F0A003 jal __main | |
1177 25 0014 03000224 li $2,0x00000003 # 3 | |
1178 26 0018 000082AF sw $2,a | |
1179 27 001c 04000224 li $2,0x00000004 # 4 | |
1180 28 0020 00C082AF sw $2,b | |
1181 29 0024 05000224 li $2,0x00000005 # 5 | |
1182 30 0028 000082A3 sb $2,c | |
1183 31 002c 06000224 li $2,0x00000006 # 6 | |
1184 32 0030 08C082A3 sb $2,d | |
1185 33 $L1: | |
1186 34 0034 21E8C003 move $sp,$fp # sp not trusted | |
1187 here | |
1188 35 0038 2C00BF8F lw $31,44($sp) | |
1189 36 003c 2800BE8F lw $fp,40($sp) | |
1190 37 0040 0800E003 addu $sp,$sp,48 | |
1191 38 0044 3000BD27 j $31 | |
1192 39 .end main | |
1193 | |
1194 �����Ʊ���褦�ˤ���ʤ�С�regiter�λ��ѿ���ǽ��Ĵ�٤�ɬ�פ� | |
1195 ����Τ����ɡ�one path compiler �Ǥ��� micro-C �Ǥϡ������ | |
1196 �Ǥ��ʤ����������äơ�enter �ϸ���Ǥ��������ɤ��� | |
18 | 1197 Mon Jan 20 18:25:27 JST 2003 |
1198 | |
1199 3ǯ�֤���äƤʤ��Τ��衣����äƤ��? | |
1200 | |
1201 goto ʸ�ΥХ���Ȥ�ʤ��Ȥ����ʤ��� | |
1202 | |
1203 �ޤ����ؿ������ι�¤�Τ�Ÿ��������ϡ��ɤ��äƤ��Ȥʤ��Ϥ��� | |
1204 | |
1205 goto (*code)(i+1,j,...) | |
1206 | |
1207 �ޤ���������ʤ��Ƥ����ѿ���Ŧ�Ф��롣 | |
1208 | |
1209 foreach arg | |
1210 compare | |
1211 | |
1212 ñ��黻 ( op+const , pointer , const assign ) �ʤɤϡ������Ǹ��Ф��롣 | |
1213 ��Ⱦ�ϡ����Τ褦�ˤʤ�Ϥ��� | |
1214 �쥸�����˾褻��ʬ�����뤫��... ����ˤϿ���ʤ��Ȥ���... | |
1215 | |
1216 ʣ���ʤ�Τϡ�����äƷ����Ƥ�����(get_register ����) | |
1217 �����å��夫�쥸������˺�롣 | |
1218 | |
1219 �Ĥ�����������Ȥʤ롣�Ƶ�Ū�˷����롣 | |
1220 | |
1221 �����ȡ��礭�ʽ�ˤ�����ä�? �����ʽ�ˤ�����ä�? | |
1222 code f( int a, int b, int c ) { | |
1223 goto g(b,c,a); | |
1224 } | |
1225 �ߤ����ʤ�Ĥ���͡� | |
1226 | |
1227 ��ư�����Τ��ĸ��Ф��롣 | |
1228 ���Τ���˰�ư��ɬ�פʤ�Τ��ư���Ƥ���(�Ƶ�) | |
1229 �������� | |
1230 | |
1231 ����ʤ�Ǥ����Τ�? �롼�פ��ʤ�? �����͡��롼�פ����� | |
1232 get_register ���롣 | |
1233 | |
1234 ��������ȡ� | |
1235 | |
1236 g(b,c,a) ��b�����ܤ��롣 | |
1237 b���������륳���ɤ�Ф��ȡ�a ������롣 | |
1238 a ��ɬ�פ��ɤ�����Ĵ�٤롣����ϡ������Υꥹ�Ȥ�Ф狼�롣 | |
1239 �������ˡ�a ���ư���롣a �ΰ�ư��ơ� | |
1240 �����Ƥ���С���ư����Ok����������c | |
1241 �ʤΤǡ� c �롣�� b �ˤʤ�Τǡ��롼�פ���Τ��狼��Τǡ� | |
1242 b �� get_register ���롣 | |
1243 �ǡ�c ����ư�Ǥ��롣�ǡ�a���ư���ơ��ȤäƤ�����b�������� | |
1244 | |
1245 Tue Jan 21 22:45:09 JST 2003 | |
1246 | |
1247 �Ȥꤢ������jump ��ʣ�������롣��äȴ�ñ�ˤ��뤳�Ȥ�ͤ��롣 | |
1248 parser ¦�Ǥ������ٽ����Ǥ��ʤ�? | |
1249 | |
1250 goto f(a+3,b(),c); | |
1251 | |
1252 �ʤɤ� | |
1253 | |
1254 a = a+3; | |
1255 b = b(); | |
1256 goto f(a,b,c); | |
1257 | |
1258 ���٤˴�ά�����롣���λ���f(a,b,c) ��(�Ǥ������)������ | |
1259 �ؿ��ΰ����ꥹ�Ȥ˶��դ��롣�Τ�̵���ʤΤǡ�ñ���ѿ� | |
1260 �ޤ���� | |
1261 | |
1262 ���ޤ�ط��ʤ���������ѿ��Ϥɤ�������櫓�������äƤ��� | |
1263 �ߤ����͡� | |
1264 | |
1265 ���Ȥ���ȡ����Υ����ɤȡ������Ѥ���͡����Τ⡢����ʤ� | |
1266 �����ʤ��äƤ��Ȥ��� | |
1267 | |
1268 Wed Jan 22 14:33:12 JST 2003 | |
1269 | |
1270 ��äѤꡢ����Ƕɽ��ѿ������䤷������͡� | |
1271 | |
1272 Fri Jan 31 20:30:36 JST 2003 | |
1273 | |
1274 �ʤ� #ifdef / #if ���ʤ��Ȥ�����ʡ���������? | |
25 | 1275 ���ޤ����� |
23 | 1276 |
1277 Tue Feb 4 01:04:12 JST 2003 | |
1278 | |
1279 ## while ((*chptr++ = c = getc(filep->fcb)) != '\n') { | |
1280 _1120: | |
1281 movl $10,%eax | |
1282 movl $8,%ecx | |
1283 movl filep,%edx | |
1284 addl %ecx,%edx | |
1285 movl (%edx),%edx | |
1286 pushl %edx | |
1287 xchg %edx,%eax .... edx ��$10������ (�ʤ��xchg?) | |
1288 call getc | |
1289 addl $4,%esp | |
1290 movl %eax,-20(%ebp) c ������ | |
1291 movl $chptr,%ecx | |
1292 pushl %ecx | |
1293 popl %ebx | |
1294 movl (%ebx),%ecx ecx ��chptr����� | |
1295 addl $1,(%ebx) | |
1296 movb %al,(%ecx) | |
1297 subl %edx,%eax eax-edx ($10) | |
1298 je _1119 | |
1299 | |
1300 ���������ͳ�ʤ������... | |
1301 | |
1302 edx,ecx ���˲�������㤦�ߤ����͡� | |
1303 | |
1304 Tue Feb 4 12:17:07 JST 2003 | |
1305 | |
1306 �褦��ä�ľ������... | |
24 | 1307 |
1308 use_pointer �äơ��ʤˤ⤷�ʤ��Ƥ���������? eax,ebx ���� | |
1309 �äƤ��Ȥ餷�����ɡ� | |
25 | 1310 |
1311 inline/�����դ� #define �ߤ����ʤ�? �֤������ϡ�local name stack ���Ѥ㤦�� | |
1312 Ÿ���� function �ǹԤ��� | |
1313 | |
1314 getch ���פ���ɬ�פϤ��뤬���֤����������å���ɬ�ס� | |
1315 | |
1316 | |
1317 Wed Feb 5 01:16:00 JST 2003 | |
1318 | |
1319 ����������줿 struct field ������ѿ��ȽŤʤäƤ��������롣 | |
1320 ����㤽�������ɡ��ɤ������? (ľ�������������������ɤʤ�...) | |
1321 struct ��� field ̾��offset/type ���Ȥ���ƤФ��ɤ������͡� | |
1322 | |
1323 �ʤ�����ɡ�����̵���ι�¤�Τ⤢�뤫�顢��̾�������դ���ɬ�� | |
1324 �⤢�롣�Ȥ����Τϡ���̾�Τʤ���¤�Τ⤢�뤫�顣����̾�ˤϡ� | |
1325 ������ꥹ�Ȥ��Ĥ��Ƥ��롣�ʤ˻Ȥ�ɬ�פ����ä���Ǥ��礦 | |
1326 �͡��������ɤ���̵���ˤ�äƤ�����ѿ�̾������Τ�ľ���� | |
1327 ������ | |
1328 | |
1329 ����äȡ���������ɡ��ַ�̾.�ե������̾�פ���Ͽ���Ƥ��ޤ��ΤϤɤ�? | |
1330 ��̾����ǽФ����Ȥ��������ޤ�����... | |
1331 | |
1332 def ����Ͽ����Ȥ��ˡ�nptr��disp�����������ˡ�struct field list | |
1333 (����ѿ�) ������ơ�type �����ˡ�field list (list3(nptr,offset, | |
1334 type)) ���������ɤ��� | |
1335 | |
1336 ���Ȥϡ�strop ������type��list��褦�ˤ�����ɤ��櫓���� | |
1337 | |
1338 ����ʤ顢��ñ��ľ����Ϥ���LUSTR/GUSTR�ʤɤζ��̤�ʤ��ʤ뤷�� | |
1339 | |
1340 Wed Feb 5 02:10:14 JST 2003 | |
1341 | |
1342 ��ư�������ͤ���������ANSI C�ˤ���Τ����ѡ��Ǥ⡢ | |
1343 ��ư���������餤�ʤ��ȡ� | |
1344 | |
1345 code generation part �����ʬ�䤷�ơ� | |
1346 ʣ���Υ������б��ˤ��䤹���褦�ˤ��롣 | |
1347 �����餯������ۤɶ�ͭ������ʬ�Ϥʤ����ɤ͡� | |
1348 | |
1349 Sample C code ��ѥ��뤷�ơ����η�̤���(Ⱦʬ��ư��) | |
1350 Micro CbC code generation part ������������ˡ���Ѱդ��롣 | |
1351 | |
1352 | |
1353 | |
26 | 1354 Thu Feb 6 11:47:03 JST 2003 |
25 | 1355 |
26 | 1356 Code Segement ��ñ�̤Ȥ��ƻȤ��Ȥ��ˡ�����ѿ��Ϥɤ����� |
1357 �褦��ʬ�����? static �ʤϰ�̣�ʤ���͡� | |
1358 | |
1359 ����������˥��롼��ʬ�������櫓�����ɡ� | |
1360 | |
1361 ���ȥǡ����ե�������͡��ǡ����ե����˴ؤ��Ƥϡ� | |
1362 ����ޤ��äƤʤ��ʤ� | |
1363 | |
28 | 1364 Fri Feb 7 14:36:15 JST 2003 |
1365 | |
1366 inline �Ǥϡ�ɬ�餺���ɽ��ѿ������ä����롣�ޤ���inline | |
1367 �����̤δؿ��Ȥ���Ÿ�����Ƥ���ɬ�פ⤢��餷����(����?) | |
1368 | |
1369 #define �ͤ��� | |
1370 | |
1371 #define c(a,b) g(a+1,b+1) | |
1372 #define g(a,b) printf("%d %d\n",a+1,b+1); | |
1373 | |
1374 main() { | |
1375 int a,b; | |
1376 a =1; b = 3; | |
1377 c(a,b); | |
1378 } | |
1379 | |
1380 local #define ����������͡�g ����� a ���Ф��褿���ˤϡ� | |
1381 c ��a ���֤������ϵ����äƤϤ����ʤ����Ȥ������Ȥϡ�c | |
1382 ���֤�������g ���Ϥޤ����˽��äƤ���ɬ�פ����롣dynamic | |
1383 scope �ʤ�����顢assoc �ξ�褻���ɤ��Ϥ��� | |
1384 macro ��level��������ơ������٥�Ǥϡ����������Ÿ�� | |
1385 ��Ԥ�ʤ��Ȥ�����ˡ���ɤ����ʡ� | |
1386 | |
1387 c(a,b) => a=>"a+1", b=>"b+1" | |
1388 g(a,b) => (a=>"a+1+1",a=>"a+1"), (b=>"b+1+1",a=>"a+1") | |
1389 | |
1390 �ߤ����ʴ���? | |
1391 | |
1392 ��äѤ�ؿ����Ϥǥޥ����������餻��Τ�̵������? ���ɤߤ�����㤦���� | |
1393 | |
1394 Sat Feb 8 00:53:52 JST 2003 | |
1395 | |
1396 macro ������ޤǽޤ������֤�������ޥ������ƤӽФ��줿 | |
1397 ������ cheap ���֤��ȡ�������ä��륿���ߥ��ʤ��� | |
1398 ��������malloc���Ƥ��ɤ���.. | |
1399 | |
1400 chptrsave ��list�ˤ���ɬ�פ����롣list ���ɤ��� | |
1401 | |
1402 ��äѤ�macro level�ơ���ʬ�Ȱ��פ���assoc value�ޤ� | |
1403 �귫�ä��ִ������Ǥ��礦����������С��֤�������ɬ�פ�̵���� | |
1404 �Ȥ������Ȥϡ�local_define ��mflags���Ǽ����ɬ�פ����롣 | |
29 | 1405 |
1406 c(a,b) => a=>"a", b=>"b" | |
1407 a=>"a" .. mflag == 1 | |
1408 g(a,b) => (a=>"a+1+1",a=>"a+1"), (b=>"b+1+1",a=>"a+1") | |
1409 a=>"a+1" .. mflag == 2 | |
1410 | |
1411 macro �Τ�Ȥ�nptr ���ĤäƤʤ��ȡ����ꥸ�ʥ���֤��ʤ����� | |
1412 �ꥸ�ʥ�ϡ�sc �ʤɤ��˲�����Ƥ��ޤ����äƤ��Ȥϡ�local macro | |
1413 �ϡ�local table ������ƤϤ����ʤ��äƤ��Ȥ���͡��äƤ��Ȥϡ� | |
1414 macro table �ϡ���ȤΤȤ��̤��Ѱդ���ɬ�פ����롣 | |
1415 | |
1416 #define c(a,b) g(a+1,b+1) | |
1417 #define g(a,b) printf("%d %d\n",a+2,b+2); | |
1418 | |
1419 main() { | |
1420 int a,b; a ... local | |
1421 a =1; b = 3; | |
1422 #ifndef a | |
1423 c(a, a = "a".. macro mflag==1 | |
1424 g(a, | |
1425 a="a+1" mflag==2 | |
1426 ^ a = "a" mflag==1 | |
1427 While replacing a in g's body, a should not | |
1428 be replaced to (original) "a", should be c's a. | |
1429 b); | |
1430 /* 3,5 expected */ | |
1431 #endif | |
1432 } | |
1433 | |
1434 �����ࡣ��䤳������ | |
1435 | |
1436 main() | |
1437 c(a,b) mflag++ | |
1438 a=>"a" mflag ==1 | |
1439 g(a,b) mflag++; | |
1440 a=>"a+1" mflag ==2 | |
1441 ^ is replaced by c's "a" not g's a; | |
1442 ���ä��� mflag level n ��Ÿ�������顢����� mflag level n-1 �Ȥʤ롣 | |
1443 | |
30 | 1444 Sat Feb 8 18:13:43 JST 2003 |
29 | 1445 |
30 | 1446 ����������mflag �ޤǤϥǥХå�������.... mflag ���ᤷ�Ƥʤ���ʤ���? |
29 | 1447 |
31 | 1448 ---c(a,b)----------------------- mflag ==1 |
1449 a=>hoge, b=>hoga (mflag==1) | |
1450 ----g(ac,bc)----------------- mflag ==2 | |
1451 ac=>goge, bc=>goga(mflag==2) | |
1452 ----printf(a,b)---------- mflag ==3 | |
1453 a=>poge, b=>poga(mflag==3) | |
29 | 1454 |
30 | 1455 g ���ƤӽФ����ȡ�ac,bc �� mflag==1 �ǤΤ��ִ�����롣 |
29 | 1456 |
31 | 1457 ����ƥ����Ȥ��֤�������ȡ�������֤��������ޥ�����mflag level |
1458 (�Ĥޤ��ľ��ʤ���٥�)�ˤʤ롣 | |
1459 �֤��������ä��顢����level���᤹�� | |
1460 | |
1461 mflag==2��level �Ǥϡ�mflag==2��local macro��Ÿ���������ʤ��� | |
1462 | |
1463 �֤�������ȡ�mflag level 1 �ˤʤ�Τǡ������� mflag==1 ��local | |
1464 macro ��Ÿ�����롣mflag==0 �Ͼ��Ÿ����Ԥ��� | |
1465 | |
32 | 1466 Sun Feb 9 11:35:23 JST 2003 |
31 | 1467 |
32 | 1468 �����ʤ�type����list ��CHAR�ʤɤ��������äƤ��뤸��� |
1469 int save = chptrsave; | |
1470 �ǡ�chptrsave ����$chptrsave �ˤʤäƤ��ޤ��� | |
33 | 1471 |
1472 Sun Feb 9 22:33:36 JST 2003 | |
1473 | |
1474 | |
1475 #define car(e) (heap[(int)(e)]) | |
1476 #define cadr(e) (heap[((int)(e))+1]) | |
1477 car(cadr(e)) | |
1478 | |
1479 ������ | |
1480 car -> | |
1481 #define e cadr(e) (mleve=1) | |
1482 cadr -> | |
1483 #define e e (mleve=2) | |
1484 | |
1485 �थ�����졢���ޤ������ʤ�����ޤä��ʤ��� | |
1486 | |
1487 #define c(a,b) g(a+1,b+1) | |
1488 #define g(a,b) printf("%d %d\n",a+1,b+1); | |
1489 c(a, b); | |
1490 | |
1491 ���ä�����ᤸ��ա��ࡣlisp interpreter �Τ褦�� | |
1492 ���Ф����Ϥ��ʤ�����ɡ� | |
36 | 1493 |
1494 Mon Feb 10 08:10:25 JST 2003 | |
1495 | |
1496 ��ɡ�list base ��interpreter ��������ޤ�����������ʤ����� | |
1497 ������ˡ�Ǥ⡢��ĥ��ФǤ����Ǥ��礦���ɤ͡� | |
1498 | |
39 | 1499 Tue Feb 11 13:50:03 JST 2003 |
1500 | |
1501 struct copy ������... �ؿ���struct���֤��Ȥ��ˡ�����������ä� | |
1502 �Ѥ�Ǥ����ΤǤϡ��������ͤ����ԡ�����Ƥ��ޤ��������Ȥǡ� | |
1503 �����å�������֤��Ȥ��ˤ��ޤ����� | |
1504 | |
1505 function call �λ��ˡ������η��Υ����å��Ƥʤ� | |
1506 | |
1507 type �� -1 ��heap�ΰ��������ߤ��Ƥ����Ĥ�����.. | |
1508 ��äѤޤ�����ʤ���? | |
1509 | |
1510 temproal struct �Ϻ����ѤǤ��������ɡ�disp���ѹ����Ǥ��ʤ��Τ� | |
1511 ��������뤷���ʤ����礭���Ȥ��������������ʤ�Ƥ��������� | |
45 | 1512 ���Ϥ��뤱�ɡ�(��������ȡ����ä��褿�ͤؤΥݥ���Ȥ��ʤ� |
1513 �ʤ뤬.... �̤ˤ�����͡�����ͤ��켫�Ȥ�ľ�� return ���� | |
1514 ����������礦�֤ʤϤ�) | |
1515 | |
1516 ��ɡ��ƽ�¦�ǡ��ΰ����ݤ��ư����Ϥ����Ȥˤ��ޤ�����������ˡ���ȡ� | |
1517 �����ΤȤ������٥��ԡ�����ɬ�פ�ʤ��� | |
39 | 1518 |
1519 register ����Ѥ��Ƥ��뤫��������ʤ��ơ��ºݤ�creg/dreg�� | |
1520 �ͤ����뤫�ɤ���������ɬ�פ����롣 | |
42 | 1521 |
1522 Wed Feb 12 11:09:22 JST 2003 | |
1523 | |
1524 ��������ɤ�... ��äѤꥢ�ɥۥå��˼¸�����Τ�����ʤ���? | |
1525 | |
1526 �ޤ��ͤ���register �ξ��γ��ݤȡ���̿���̤����顢����� | |
1527 ����������ɡ�regs flag �����Ǥʤ�Ȥ��ʤ�ʤ��Τ��ʡ� | |
1528 ���������ѹ��ϤϤޤ뤬�������� | |
45 | 1529 |
1530 Thu Feb 13 18:37:36 JST 2003 | |
1531 | |
1532 ���ơ��������� jump �ˤȤ꤫����ޤ����� | |
1533 | |
1534 ��¤�Τΰ����Ϥ��Υ��������˻Ȥ��ɽ��ѿ��ΰ��֤�gcc�Ȱ㤦... | |
1535 | |
1536 �������� register �Ϲ�¤�Τˤ��٤����͡� | |
1537 struct register { | |
1538 int used; | |
1539 int valued; | |
1540 char *name; | |
1541 char *wname; | |
1542 char *bname; | |
1543 int type; /* register variable or not */ | |
1544 int number; | |
1545 } | |
1546 virtual/real �ϡ��ɤ����롣 | |
46
b1c8ac8c308d
fix cascading struct retrun. Now it should be compatible with gcc
kono
parents:
45
diff
changeset
|
1547 |
b1c8ac8c308d
fix cascading struct retrun. Now it should be compatible with gcc
kono
parents:
45
diff
changeset
|
1548 Sat Feb 15 14:00:03 JST 2003 |
b1c8ac8c308d
fix cascading struct retrun. Now it should be compatible with gcc
kono
parents:
45
diff
changeset
|
1549 |
b1c8ac8c308d
fix cascading struct retrun. Now it should be compatible with gcc
kono
parents:
45
diff
changeset
|
1550 fdecl_struct ��ʸŪ�˰������и�����Ȥ��˹Ԥ��ȡ�int *f(int |
b1c8ac8c308d
fix cascading struct retrun. Now it should be compatible with gcc
kono
parents:
45
diff
changeset
|
1551 a) �ʤɤǡ�* ��ɾ�����������ˡ�int a��ɾ�����줷�ޤ���*obj |
b1c8ac8c308d
fix cascading struct retrun. Now it should be compatible with gcc
kono
parents:
45
diff
changeset
|
1552 ��obj ��ɾ��������ʤ���f�Υ����פ����ꤷ�ʤ���int*f()[] �� |
b1c8ac8c308d
fix cascading struct retrun. Now it should be compatible with gcc
kono
parents:
45
diff
changeset
|
1553 �����ʾ�礬���뤫�顣(?) �ʤΤǡ�gcc �ȡ��������뤿��ˤϡ� |
b1c8ac8c308d
fix cascading struct retrun. Now it should be compatible with gcc
kono
parents:
45
diff
changeset
|
1554 arg ����Ƭ�� fdecl_struct ��Ԥ���ˡ�ǤϤ���ǡ�fdecl ��Ǥ� |
b1c8ac8c308d
fix cascading struct retrun. Now it should be compatible with gcc
kono
parents:
45
diff
changeset
|
1555 �Ȥ��齤�����������ɤ��� |
b1c8ac8c308d
fix cascading struct retrun. Now it should be compatible with gcc
kono
parents:
45
diff
changeset
|
1556 |
b1c8ac8c308d
fix cascading struct retrun. Now it should be compatible with gcc
kono
parents:
45
diff
changeset
|
1557 fix ���褦�ˤ�����ꥹ�Ȥʤ�ơ�¸�ߤ��ʤ������! |
b1c8ac8c308d
fix cascading struct retrun. Now it should be compatible with gcc
kono
parents:
45
diff
changeset
|
1558 |
b1c8ac8c308d
fix cascading struct retrun. Now it should be compatible with gcc
kono
parents:
45
diff
changeset
|
1559 varargs ���������ΤϤ��ɤ���������... |
b1c8ac8c308d
fix cascading struct retrun. Now it should be compatible with gcc
kono
parents:
45
diff
changeset
|
1560 |
b1c8ac8c308d
fix cascading struct retrun. Now it should be compatible with gcc
kono
parents:
45
diff
changeset
|
1561 rvalue(expr(),type) �Ǥϡ�expr() ��type��rvalue�˰����Ϥ��� |
b1c8ac8c308d
fix cascading struct retrun. Now it should be compatible with gcc
kono
parents:
45
diff
changeset
|
1562 �����Ǥ⡢type ������ѿ��ˤ���ȡ�rvalue��ۤʤ륿���פǸ� |
b1c8ac8c308d
fix cascading struct retrun. Now it should be compatible with gcc
kono
parents:
45
diff
changeset
|
1563 �ӽФ��Ȥ���type���ѹ�����ɬ�פ����롣����rvalue��type �ΰ� |
b1c8ac8c308d
fix cascading struct retrun. Now it should be compatible with gcc
kono
parents:
45
diff
changeset
|
1564 ���ϡ����ʤ�Ϥޤä����Ȥ�����Τǡ�rvalue(int e,int type)�� |
b1c8ac8c308d
fix cascading struct retrun. Now it should be compatible with gcc
kono
parents:
45
diff
changeset
|
1565 �����ɤ����ȤϳΤ��ʤ����... |
47 | 1566 |
1567 struct_push ��register�ΰ�����ʣ���������ʤ���ä� | |
1568 ��ñ�ˤʤ�ʤ���? | |
51 | 1569 |
1570 Sun Feb 16 07:58:23 JST 2003 | |
1571 | |
1572 �������ʤ����ɤ�����ȸ��äơ������� | |
1573 �Υꥹ�Ȥ�������Ƥϡ�����ɤ��ʤ��� | |
52 | 1574 |
1575 Sun Feb 16 22:55:58 JST 2003 | |
1576 | |
1577 vdisp �äƤʤ���ä����? | |
1578 | |
1579 Mon Feb 17 12:35:39 JST 2003 | |
1580 | |
1581 ���������Ͻ��褿�ߤ����������Ͼ�������Τ���ˤ��٤��ʤΤ�? | |
1582 �ޤ����Ǥ���㤤��������ɡ��������Τ��礭���ΤϤ��� | |
1583 ����͡� | |
53 | 1584 |
1585 Tue Feb 18 11:56:10 JST 2003 | |
1586 | |
1587 overraped �Ѥ� emit_copy | |
1588 float/double | |
1589 long long | |
1590 | |
1591 Tue Feb 18 19:34:31 JST 2003 | |
1592 | |
1593 code argument ������ȿž������ȡ�list2(LVAR,offset) | |
1594 ��offset�����ɥ쥹�������Ȱ��פ��Ƥ���Ȥ������� | |
1595 ����롣����ǡ���¤�Τγ�Ǽ���������Ƥ��ޤ�... | |
1596 | |
1597 �Ȥ������Ȥ�... def(n) ��code�λ���argument�ϡ��ɽ��ѿ���Ʊ�� | |
1598 �����ǥޥ��ʥ����ǽ������������ɤ��� | |
1599 | |
1600 �Ǥ����ߤ������Ǥ⤵�� | |
1601 | |
1602 int main( int ac, char *av[]) | |
1603 { | |
1604 int n; | |
1605 goto arg1(0,1,2,3,4,return,environment); | |
1606 } | |
1607 | |
1608 �äơ����ä� return ʸ���ʤ��ȡ�ʸ��� | |
1609 �������͡����ࡣ | |
1610 | |
55 | 1611 post processing �������overrap���Ƥʤ��Ȥ����ݾڤ��ʤ��� |
1612 | |
57 | 1613 Wed Feb 19 15:38:55 JST 2003 |
1614 | |
1615 ��ʬ���ȤȤ�overrrap�Ƥʤ��Τǡ� | |
1616 struct a a,int i | |
1617 int i,struct a a | |
1618 �ߤ����ʻ��˼�ʬ���Ȥ�����Ƥ��ޤ����ʤΤǡ�emit_copy | |
1619 ���������������Ʋ����ʤ��褦�˽�������ɬ�פ����롣 | |
1620 | |
59 | 1621 call bcopy �Ǥ�������ޤ͡� |
1622 | |
1623 Wed Feb 19 20:42:07 JST 2003 | |
1624 | |
1625 �̤���� C2CbC �� CbC2C ��micro C �˼����ࡣ�ƽ�ˡ� | |
1626 conv->func(); �������ࡣconv �ϡ���¤�Ρ� | |
1627 | |
1628 conv: original | |
1629 c2cbc | |
1630 cbc2c | |
1631 | |
1632 �Ȥ��롣�ʤ�ۤɡ� |