Mercurial > hg > CbC > old > device
annotate Changes @ 443:f2d2e27a00a0 inline-before
minor fix
author | kono |
---|---|
date | Sun, 21 Nov 2004 01:27:21 +0900 (2004-11-20) |
parents | 86b04fb4562e |
children | 8bec605d1701 |
rev | line source |
---|---|
59 | 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 | |
325 | 41 call �������argument �⡢ |
59 | 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 | |
325 | 111 Partial evaluator �ޥ�ƥ�������¹ԷϤˤ���Ƥ������Ȥϲ�ǽ��? |
59 | 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( | |
325 | 155 static struct argument { |
59 | 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( | |
325 | 171 static struct argument { |
59 | 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 | |
325 | 192 state �˥��������������lock��? protected state? synchronized state ����? |
193 �������sequential implementation�Ǥϡ�����ʤ�ΤϤ���ʤ��� | |
59 | 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 | |
325 | 208 serialized �� semantics ��? |
59 | 209 |
210 �⤦����micro-C�˶! | |
211 | |
325 | 212 carrying state �� static state�� |
59 | 213 |
214 Mon Dec 13 19:42:41 JST 1999 | |
215 | |
325 | 216 interface �� register keyword ��Ȥ��Τϡ����ޤ�� |
59 | 217 ������ꤹ���롣�Ǥ⡢�Ǥʤ��Ⱦ��֤ˤǤ��ʤ�? |
218 ����ʤ��ȤϤʤ�������äѤ�caller¦��static �ΰ�� | |
219 ľ�ܽ���? | |
220 | |
221 ����C����٤������Ǥ⡢������40�ĤȤ������줿��... | |
222 | |
223 Wed Dec 15 14:09:49 JST 1999 | |
224 | |
225 C �ȸߴ��ˤ���? | |
325 | 226 goto function(arguments); |
227 goto *continuation(arguments); | |
59 | 228 �ߤ����ʴ����ǡ� |
229 | |
230 stack�δ�����? �ɤ�����library �Ȥθߴ��ϤȤ�ʤ��� | |
231 �����ʤ��������... | |
232 | |
233 local �ѿ���������� stack ��ư�������Ǥ⡢�᤹�ۤ����ʤ��� | |
234 closure �����뤫? | |
235 | |
236 return �������ε�ư��ʣ���ˤʤ롣���return����櫓���顣 | |
237 | |
325 | 238 arguments ��static �ΰ�ˤ��������������ȸߴ������Ȥ�ʤ��� |
239 stack ��� frame pointer ��ˤʤ��ȥ�������顣 | |
59 | 240 |
241 ξΩ������Τ�̵����? �Ĥޤꡢ������ȡ��ƤӽФ��줿���� | |
242 frame semantics �ϡ�C �ȸߴ��ˤʤ롣�����顢stack��ľ��� | |
243 frame pointer ������ȻפäƤ��� (������? ) frame pointer | |
244 stack pointer �˱�äư�ư����ľ��ˡ����������offset | |
245 �ǰ��������뤳�Ȥˤʤ롣 | |
246 | |
247 �Ĥޤꡢ����Ϥ�����ä����Ȥ���ʤ�? �Ĥޤꡢgoto ���ȡ� | |
248 frame pointer �ϡ�stack ��ľ��Ȥϸ¤�ʤ����顣���� | |
325 | 249 frame pointer ���Ф˰����˥����������Ƥ������̤����ɤ͡� |
59 | 250 |
251 stack �˰������Ѥ�Τ���ǧ���ơ�goto �ξ��ϡ�������¦�� | |
252 stack �����äƤΤ�? �Ȥ������Ȥϡ����̤δؿ�������� | |
253 ��ˡ���Ѥ���äƤ��Ȥ����ޡ������Ϥʤ����� | |
254 | |
255 ����ȡ�goto ��semantics �ϡ�C �ȸߴ��ˤʤ롣���������� | |
256 �����ۤʤ뤳�Ȥ롣����ϡ��ʤ��������ʡ�����ˡ� | |
257 ������ȴؿ��ƤӽФ����ڤ��ʤ�ʤ�... | |
258 | |
325 | 259 �Ȥ������Ȥϡ���ϤꡢC ��call �ϡ�call function �� |
59 | 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 | |
325 | 296 state �ʳ��ϡ�consistent state �Ǥ��뤳�Ȥ��ݾڤ��ʤ����äƤΤ�? |
59 | 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 | |
325 | 336 # set extra arguments in save area |
59 | 337 # set extra argument pointer in %edx |
338 jmp function | |
339 �Ȥ��������ˤʤ�櫓�͡�second ���������ΤϤ��ɤ����������� | |
340 �ˤ��褦�� | |
341 | |
342 �����ȡ�frame pointer �Ϥʤ����ɡ�����ѥ���μ�礫�餹��� | |
343 ���ä������ɤ�����������frame pointer ���Τ�Τ�static | |
325 | 344 �ˤȤ�ΤϤޤ����������顢frame pointer ��first argument |
59 | 345 �Ȥ������Ȥˤ����������������Ȥ���Ȱ����ϡ�����ˡ����� |
346 ��ȸ����櫓���� | |
325 | 347 f(fp,argument) |
348 fp ���Ϥ��Τˤ����argument ��쥸�������Ϥ��ΤϤ��������������������ɡ� | |
59 | 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 | |
325 | 385 ���餤����? �ǡ�first argument ��ɬ��register�ˤΤ�褦�ˤ��ʤ��� |
59 | 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 | |
325 | 474 �ȡ��ˤ����� storage class register ��������褦�� |
59 | 475 |
476 stmode=REGISTER | |
477 | |
478 �ǡ�local storage �Ȥ��ʤ������Ȥ��� | |
479 static register? �ϡ��ʤ��� | |
480 | |
481 symbol table �� storage class ����? dsp==EXTRN ��Ƚ�ꤷ�Ƥ��뤫�顢 | |
482 local �ѿ���36�ʾ夢��Ȥ��������ʤ뤾? | |
483 | |
325 | 484 sc �� GVAR/LVAR �����ɡ�register �� LVAR ���ü���ۤ����顢 |
59 | 485 sc �������ۤ�����������... |
486 | |
487 Sun Jan 2 01:47:17 JST 2000 | |
488 | |
325 | 489 register �ѿ��ϤǤ��ޤ��������ɡ�register ����ĻȤ��ȡ� |
59 | 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 | |
325 | 568 code ��return |
59 | 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������Τ⤤�����ɡ� | |
325 | 628 �Ǥ⡢label ������ȡ�������spaghetti�ˤʤ�ʤ�? |
59 | 629 |
630 | |
631 Tue Jan 4 11:47:24 JST 2000 | |
632 | |
325 | 633 continuation ����ʤ��ơ�return keyword ��Ȥ����� |
59 | 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 | |
325 | 653 �ƤӽФ��ˤ���ˤ�? dispatcher ��ʬ�Ǻ�뤳�Ȥˤʤ롣���ʤ� |
59 | 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 | |
325 | 665 main ���ѿ�����٤��Τȡ�goto (*reg)(123) �Ǥ��ͤϡ� |
59 | 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 | |
325 | 762 Interface Definition |
59 | 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 ¦��Ƚ�Ǥ��뤫? | |
325 | 799 return(ID) |
59 | 800 �ߤ����ʷ���ID��Ƚ�Ǥ��롣��������С�return ¦��ID |
801 ��Ƚ�ǤǤ��롣����... | |
802 | |
803 �ޤ����Ϥ�ꡢ�Ķ�����ä��⤯�����������ʤ����Ǥ⡢ | |
804 �����Ϥ��Ƥ��뤫�顢��İ����Ϥ��ơ�������Ȥ�줿�Ȥ��ˡ� | |
805 ȿ��¦���ä��Ƥ��ޤ��ΤϤ�������͡����Τޤޤʤ�С� | |
806 �����������Ȥϵ�����ʤ��� | |
807 | |
808 continuation ��ͭ���������ʤ顢���ΤޤޤǤ⤤�������... | |
325 | 809 continuation ��Ķ��ϡ����Υ����ƥ�Ǥϼ�ʬ�Ǻ�뤳�Ȥ� |
59 | 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�����㽪��ʤ����ʤ��� | |
188 | 996 ��ư�������������ΤǤ��礦? |
59 | 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 | |
325 | 1023 sched_yields() ������뤫��? lock ��? |
59 | 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 ���äƤ��ޤ��� | |
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 �� | |
325 | 1062 �ʤ�ʤ������? ANSI �������Ѥ������ʤ��� |
59 | 1063 |
1064 ������ȡ��ץ����������ؤ��ΤȤ��ˤϡ��빽���̤Υǡ����� | |
1065 ���ԡ����뤳�Ȥˤʤ롣����Ǥ⤤���������... | |
1066 | |
1067 ���줴�ȡ��ɤä��ˤȤä��֤���continuation�ؤλ��Ȥߤ����ʤ�� | |
1068 ���Ǥ��ʤ����ʡ� | |
1069 | |
1070 ���ԡ����Ǥ���С�environment/return ���Ȥ�ư���櫓�����顢 | |
1071 ����ؤλ��Ȥ����ؤ������äƤ��ɤ���͡� | |
1072 | |
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 ��? | |
1087 | |
1088 funcall ���Ѱդ�����ɤ��͡� | |
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 �ؿ��ƤӽФ��κǽ�ˤ�äƤ��Ф�����������ǤǤ��뤫��? | |
1157 | |
1158 | |
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 | |
325 | 1194 �����Ʊ���褦�ˤ���ʤ�С�register�λ��ѿ���ǽ��Ĵ�٤�ɬ�פ� |
59 | 1195 ����Τ����ɡ�one path compiler �Ǥ��� micro-C �Ǥϡ������ |
1196 �Ǥ��ʤ����������äơ�enter �ϸ���Ǥ��������ɤ��� | |
67 | 1197 |
59 | 1198 Mon Jan 20 18:25:27 JST 2003 |
1199 | |
1200 3ǯ�֤���äƤʤ��Τ��衣����äƤ��? | |
1201 | |
1202 goto ʸ�ΥХ���Ȥ�ʤ��Ȥ����ʤ��� | |
1203 | |
1204 �ޤ����ؿ������ι�¤�Τ�Ÿ��������ϡ��ɤ��äƤ��Ȥʤ��Ϥ��� | |
1205 | |
1206 goto (*code)(i+1,j,...) | |
1207 | |
1208 �ޤ���������ʤ��Ƥ����ѿ���Ŧ�Ф��롣 | |
1209 | |
1210 foreach arg | |
1211 compare | |
1212 | |
1213 ñ��黻 ( op+const , pointer , const assign ) �ʤɤϡ������Ǹ��Ф��롣 | |
1214 ��Ⱦ�ϡ����Τ褦�ˤʤ�Ϥ��� | |
1215 �쥸�����˾褻��ʬ�����뤫��... ����ˤϿ���ʤ��Ȥ���... | |
1216 | |
1217 ʣ���ʤ�Τϡ�����äƷ����Ƥ�����(get_register ����) | |
1218 �����å��夫�쥸������˺�롣 | |
1219 | |
1220 �Ĥ�����������Ȥʤ롣�Ƶ�Ū�˷����롣 | |
1221 | |
1222 �����ȡ��礭�ʽ�ˤ�����ä�? �����ʽ�ˤ�����ä�? | |
1223 code f( int a, int b, int c ) { | |
1224 goto g(b,c,a); | |
1225 } | |
1226 �ߤ����ʤ�Ĥ���͡� | |
1227 | |
1228 ��ư�����Τ��ĸ��Ф��롣 | |
1229 ���Τ���˰�ư��ɬ�פʤ�Τ��ư���Ƥ���(�Ƶ�) | |
1230 �������� | |
1231 | |
1232 ����ʤ�Ǥ����Τ�? �롼�פ��ʤ�? �����͡��롼�פ����� | |
1233 get_register ���롣 | |
1234 | |
1235 ��������ȡ� | |
1236 | |
1237 g(b,c,a) ��b�����ܤ��롣 | |
1238 b���������륳���ɤ�Ф��ȡ�a ������롣 | |
1239 a ��ɬ�פ��ɤ�����Ĵ�٤롣����ϡ������Υꥹ�Ȥ�Ф狼�롣 | |
1240 �������ˡ�a ���ư���롣a �ΰ�ư��ơ� | |
1241 �����Ƥ���С���ư����Ok����������c | |
1242 �ʤΤǡ� c �롣�� b �ˤʤ�Τǡ��롼�פ���Τ��狼��Τǡ� | |
1243 b �� get_register ���롣 | |
1244 �ǡ�c ����ư�Ǥ��롣�ǡ�a���ư���ơ��ȤäƤ�����b�������� | |
1245 | |
1246 Tue Jan 21 22:45:09 JST 2003 | |
1247 | |
1248 �Ȥꤢ������jump ��ʣ�������롣��äȴ�ñ�ˤ��뤳�Ȥ�ͤ��롣 | |
1249 parser ¦�Ǥ������ٽ����Ǥ��ʤ�? | |
1250 | |
1251 goto f(a+3,b(),c); | |
1252 | |
1253 �ʤɤ� | |
1254 | |
1255 a = a+3; | |
1256 b = b(); | |
1257 goto f(a,b,c); | |
1258 | |
1259 ���٤˴�ά�����롣���λ���f(a,b,c) ��(�Ǥ������)������ | |
1260 �ؿ��ΰ����ꥹ�Ȥ˶��դ��롣�Τ�̵���ʤΤǡ�ñ���ѿ� | |
1261 �ޤ���� | |
1262 | |
1263 ���ޤ�ط��ʤ���������ѿ��Ϥɤ�������櫓�������äƤ��� | |
1264 �ߤ����͡� | |
1265 | |
1266 ���Ȥ���ȡ����Υ����ɤȡ������Ѥ���͡����Τ⡢����ʤ� | |
1267 �����ʤ��äƤ��Ȥ��� | |
1268 | |
1269 Wed Jan 22 14:33:12 JST 2003 | |
1270 | |
1271 ��äѤꡢ����Ƕɽ��ѿ������䤷������͡� | |
1272 | |
1273 Fri Jan 31 20:30:36 JST 2003 | |
1274 | |
1275 �ʤ� #ifdef / #if ���ʤ��Ȥ�����ʡ���������? | |
1276 ���ޤ����� | |
1277 | |
1278 Tue Feb 4 01:04:12 JST 2003 | |
1279 | |
1280 ## while ((*chptr++ = c = getc(filep->fcb)) != '\n') { | |
1281 _1120: | |
1282 movl $10,%eax | |
1283 movl $8,%ecx | |
1284 movl filep,%edx | |
1285 addl %ecx,%edx | |
1286 movl (%edx),%edx | |
1287 pushl %edx | |
1288 xchg %edx,%eax .... edx ��$10������ (�ʤ��xchg?) | |
1289 call getc | |
1290 addl $4,%esp | |
1291 movl %eax,-20(%ebp) c ������ | |
1292 movl $chptr,%ecx | |
1293 pushl %ecx | |
1294 popl %ebx | |
1295 movl (%ebx),%ecx ecx ��chptr����� | |
1296 addl $1,(%ebx) | |
1297 movb %al,(%ecx) | |
1298 subl %edx,%eax eax-edx ($10) | |
1299 je _1119 | |
1300 | |
1301 ���������ͳ�ʤ������... | |
1302 | |
1303 edx,ecx ���˲�������㤦�ߤ����͡� | |
1304 | |
1305 Tue Feb 4 12:17:07 JST 2003 | |
1306 | |
1307 �褦��ä�ľ������... | |
1308 | |
1309 use_pointer �äơ��ʤˤ⤷�ʤ��Ƥ���������? eax,ebx ���� | |
1310 �äƤ��Ȥ餷�����ɡ� | |
1311 | |
1312 inline/�����դ� #define �ߤ����ʤ�? �֤������ϡ�local name stack ���Ѥ㤦�� | |
1313 Ÿ���� function �ǹԤ��� | |
1314 | |
1315 getch ���פ���ɬ�פϤ��뤬���֤����������å���ɬ�ס� | |
1316 | |
1317 | |
1318 Wed Feb 5 01:16:00 JST 2003 | |
1319 | |
1320 ����������줿 struct field ������ѿ��ȽŤʤäƤ��������롣 | |
1321 ����㤽�������ɡ��ɤ������? (ľ�������������������ɤʤ�...) | |
1322 struct ��� field ̾��offset/type ���Ȥ���ƤФ��ɤ������͡� | |
1323 | |
1324 �ʤ�����ɡ�����̵���ι�¤�Τ⤢�뤫�顢��̾�������դ���ɬ�� | |
1325 �⤢�롣�Ȥ����Τϡ���̾�Τʤ���¤�Τ⤢�뤫�顣����̾�ˤϡ� | |
1326 ������ꥹ�Ȥ��Ĥ��Ƥ��롣�ʤ˻Ȥ�ɬ�פ����ä���Ǥ��礦 | |
1327 �͡��������ɤ���̵���ˤ�äƤ�����ѿ�̾������Τ�ľ���� | |
1328 ������ | |
1329 | |
1330 ����äȡ���������ɡ��ַ�̾.�ե������̾�פ���Ͽ���Ƥ��ޤ��ΤϤɤ�? | |
1331 ��̾����ǽФ����Ȥ��������ޤ�����... | |
1332 | |
1333 def ����Ͽ����Ȥ��ˡ�nptr��disp�����������ˡ�struct field list | |
1334 (����ѿ�) ������ơ�type �����ˡ�field list (list3(nptr,offset, | |
1335 type)) ���������ɤ��� | |
1336 | |
1337 ���Ȥϡ�strop ������type��list��褦�ˤ�����ɤ��櫓���� | |
1338 | |
1339 ����ʤ顢��ñ��ľ����Ϥ���LUSTR/GUSTR�ʤɤζ��̤�ʤ��ʤ뤷�� | |
1340 | |
1341 Wed Feb 5 02:10:14 JST 2003 | |
1342 | |
1343 ��ư�������ͤ���������ANSI C�ˤ���Τ����ѡ��Ǥ⡢ | |
1344 ��ư���������餤�ʤ��ȡ� | |
1345 | |
1346 code generation part �����ʬ�䤷�ơ� | |
1347 ʣ���Υ������б��ˤ��䤹���褦�ˤ��롣 | |
1348 �����餯������ۤɶ�ͭ������ʬ�Ϥʤ����ɤ͡� | |
1349 | |
1350 Sample C code ��ѥ��뤷�ơ����η�̤���(Ⱦʬ��ư��) | |
1351 Micro CbC code generation part ������������ˡ���Ѱդ��롣 | |
1352 | |
1353 | |
1354 | |
1355 Thu Feb 6 11:47:03 JST 2003 | |
1356 | |
325 | 1357 Code Segment ��ñ�̤Ȥ��ƻȤ��Ȥ��ˡ�����ѿ��Ϥɤ����� |
59 | 1358 �褦��ʬ�����? static �ʤϰ�̣�ʤ���͡� |
1359 | |
1360 ����������˥��롼��ʬ�������櫓�����ɡ� | |
1361 | |
1362 ���ȥǡ����ե�������͡��ǡ����ե����˴ؤ��Ƥϡ� | |
1363 ����ޤ��äƤʤ��ʤ� | |
1364 | |
1365 Fri Feb 7 14:36:15 JST 2003 | |
1366 | |
1367 inline �Ǥϡ�ɬ�餺���ɽ��ѿ������ä����롣�ޤ���inline | |
1368 �����̤δؿ��Ȥ���Ÿ�����Ƥ���ɬ�פ⤢��餷����(����?) | |
1369 | |
1370 #define �ͤ��� | |
1371 | |
1372 #define c(a,b) g(a+1,b+1) | |
1373 #define g(a,b) printf("%d %d\n",a+1,b+1); | |
1374 | |
1375 main() { | |
1376 int a,b; | |
1377 a =1; b = 3; | |
1378 c(a,b); | |
1379 } | |
1380 | |
1381 local #define ����������͡�g ����� a ���Ф��褿���ˤϡ� | |
1382 c ��a ���֤������ϵ����äƤϤ����ʤ����Ȥ������Ȥϡ�c | |
1383 ���֤�������g ���Ϥޤ����˽��äƤ���ɬ�פ����롣dynamic | |
1384 scope �ʤ�����顢assoc �ξ�褻���ɤ��Ϥ��� | |
1385 macro ��level��������ơ������٥�Ǥϡ����������Ÿ�� | |
1386 ��Ԥ�ʤ��Ȥ�����ˡ���ɤ����ʡ� | |
1387 | |
1388 c(a,b) => a=>"a+1", b=>"b+1" | |
1389 g(a,b) => (a=>"a+1+1",a=>"a+1"), (b=>"b+1+1",a=>"a+1") | |
1390 | |
1391 �ߤ����ʴ���? | |
1392 | |
1393 ��äѤ�ؿ����Ϥǥޥ����������餻��Τ�̵������? ���ɤߤ�����㤦���� | |
1394 | |
1395 Sat Feb 8 00:53:52 JST 2003 | |
1396 | |
1397 macro ������ޤǽޤ������֤�������ޥ������ƤӽФ��줿 | |
1398 ������ cheap ���֤��ȡ�������ä��륿���ߥ��ʤ��� | |
1399 ��������malloc���Ƥ��ɤ���.. | |
1400 | |
1401 chptrsave ��list�ˤ���ɬ�פ����롣list ���ɤ��� | |
1402 | |
1403 ��äѤ�macro level�ơ���ʬ�Ȱ��פ���assoc value�ޤ� | |
1404 �귫�ä��ִ������Ǥ��礦����������С��֤�������ɬ�פ�̵���� | |
1405 �Ȥ������Ȥϡ�local_define ��mflags���Ǽ����ɬ�פ����롣 | |
1406 | |
1407 c(a,b) => a=>"a", b=>"b" | |
1408 a=>"a" .. mflag == 1 | |
1409 g(a,b) => (a=>"a+1+1",a=>"a+1"), (b=>"b+1+1",a=>"a+1") | |
1410 a=>"a+1" .. mflag == 2 | |
1411 | |
1412 macro �Τ�Ȥ�nptr ���ĤäƤʤ��ȡ����ꥸ�ʥ���֤��ʤ����� | |
1413 �ꥸ�ʥ�ϡ�sc �ʤɤ��˲�����Ƥ��ޤ����äƤ��Ȥϡ�local macro | |
1414 �ϡ�local table ������ƤϤ����ʤ��äƤ��Ȥ���͡��äƤ��Ȥϡ� | |
1415 macro table �ϡ���ȤΤȤ��̤��Ѱդ���ɬ�פ����롣 | |
1416 | |
1417 #define c(a,b) g(a+1,b+1) | |
1418 #define g(a,b) printf("%d %d\n",a+2,b+2); | |
1419 | |
1420 main() { | |
1421 int a,b; a ... local | |
1422 a =1; b = 3; | |
1423 #ifndef a | |
1424 c(a, a = "a".. macro mflag==1 | |
1425 g(a, | |
1426 a="a+1" mflag==2 | |
1427 ^ a = "a" mflag==1 | |
1428 While replacing a in g's body, a should not | |
1429 be replaced to (original) "a", should be c's a. | |
1430 b); | |
1431 /* 3,5 expected */ | |
1432 #endif | |
1433 } | |
1434 | |
1435 �����ࡣ��䤳������ | |
1436 | |
1437 main() | |
1438 c(a,b) mflag++ | |
1439 a=>"a" mflag ==1 | |
1440 g(a,b) mflag++; | |
1441 a=>"a+1" mflag ==2 | |
1442 ^ is replaced by c's "a" not g's a; | |
1443 ���ä��� mflag level n ��Ÿ�������顢����� mflag level n-1 �Ȥʤ롣 | |
1444 | |
1445 Sat Feb 8 18:13:43 JST 2003 | |
1446 | |
1447 ����������mflag �ޤǤϥǥХå�������.... mflag ���ᤷ�Ƥʤ���ʤ���? | |
1448 | |
1449 ---c(a,b)----------------------- mflag ==1 | |
1450 a=>hoge, b=>hoga (mflag==1) | |
1451 ----g(ac,bc)----------------- mflag ==2 | |
1452 ac=>goge, bc=>goga(mflag==2) | |
1453 ----printf(a,b)---------- mflag ==3 | |
1454 a=>poge, b=>poga(mflag==3) | |
1455 | |
1456 g ���ƤӽФ����ȡ�ac,bc �� mflag==1 �ǤΤ��ִ�����롣 | |
1457 | |
1458 ����ƥ����Ȥ��֤�������ȡ�������֤��������ޥ�����mflag level | |
1459 (�Ĥޤ��ľ��ʤ���٥�)�ˤʤ롣 | |
1460 �֤��������ä��顢����level���᤹�� | |
1461 | |
1462 mflag==2��level �Ǥϡ�mflag==2��local macro��Ÿ���������ʤ��� | |
1463 | |
1464 �֤�������ȡ�mflag level 1 �ˤʤ�Τǡ������� mflag==1 ��local | |
1465 macro ��Ÿ�����롣mflag==0 �Ͼ��Ÿ����Ԥ��� | |
1466 | |
1467 Sun Feb 9 11:35:23 JST 2003 | |
1468 | |
1469 �����ʤ�type����list ��CHAR�ʤɤ��������äƤ��뤸��� | |
1470 int save = chptrsave; | |
1471 �ǡ�chptrsave ����$chptrsave �ˤʤäƤ��ޤ��� | |
1472 | |
1473 Sun Feb 9 22:33:36 JST 2003 | |
1474 | |
1475 | |
1476 #define car(e) (heap[(int)(e)]) | |
1477 #define cadr(e) (heap[((int)(e))+1]) | |
1478 car(cadr(e)) | |
1479 | |
1480 ������ | |
1481 car -> | |
1482 #define e cadr(e) (mleve=1) | |
1483 cadr -> | |
1484 #define e e (mleve=2) | |
1485 | |
1486 �थ�����졢���ޤ������ʤ�����ޤä��ʤ��� | |
1487 | |
1488 #define c(a,b) g(a+1,b+1) | |
1489 #define g(a,b) printf("%d %d\n",a+1,b+1); | |
1490 c(a, b); | |
1491 | |
1492 ���ä�����ᤸ��ա��ࡣlisp interpreter �Τ褦�� | |
1493 ���Ф����Ϥ��ʤ�����ɡ� | |
1494 | |
1495 Mon Feb 10 08:10:25 JST 2003 | |
1496 | |
1497 ��ɡ�list base ��interpreter ��������ޤ�����������ʤ����� | |
1498 ������ˡ�Ǥ⡢��ĥ��ФǤ����Ǥ��礦���ɤ͡� | |
1499 | |
1500 Tue Feb 11 13:50:03 JST 2003 | |
1501 | |
1502 struct copy ������... �ؿ���struct���֤��Ȥ��ˡ�����������ä� | |
1503 �Ѥ�Ǥ����ΤǤϡ��������ͤ����ԡ�����Ƥ��ޤ��������Ȥǡ� | |
1504 �����å�������֤��Ȥ��ˤ��ޤ����� | |
1505 | |
1506 function call �λ��ˡ������η��Υ����å��Ƥʤ� | |
1507 | |
1508 type �� -1 ��heap�ΰ��������ߤ��Ƥ����Ĥ�����.. | |
1509 ��äѤޤ�����ʤ���? | |
1510 | |
325 | 1511 temporal struct �Ϻ����ѤǤ��������ɡ�disp���ѹ����Ǥ��ʤ��Τ� |
59 | 1512 ��������뤷���ʤ����礭���Ȥ��������������ʤ�Ƥ��������� |
1513 ���Ϥ��뤱�ɡ�(��������ȡ����ä��褿�ͤؤΥݥ���Ȥ��ʤ� | |
1514 �ʤ뤬.... �̤ˤ�����͡�����ͤ��켫�Ȥ�ľ�� return ���� | |
1515 ����������礦�֤ʤϤ�) | |
1516 | |
1517 ��ɡ��ƽ�¦�ǡ��ΰ����ݤ��ư����Ϥ����Ȥˤ��ޤ�����������ˡ���ȡ� | |
1518 �����ΤȤ������٥��ԡ�����ɬ�פ�ʤ��� | |
1519 | |
1520 register ����Ѥ��Ƥ��뤫��������ʤ��ơ��ºݤ�creg/dreg�� | |
1521 �ͤ����뤫�ɤ���������ɬ�פ����롣 | |
1522 | |
1523 Wed Feb 12 11:09:22 JST 2003 | |
1524 | |
1525 ��������ɤ�... ��äѤꥢ�ɥۥå��˼¸�����Τ�����ʤ���? | |
1526 | |
1527 �ޤ��ͤ���register �ξ��γ��ݤȡ���̿���̤����顢����� | |
1528 ����������ɡ�regs flag �����Ǥʤ�Ȥ��ʤ�ʤ��Τ��ʡ� | |
1529 ���������ѹ��ϤϤޤ뤬�������� | |
1530 | |
1531 Thu Feb 13 18:37:36 JST 2003 | |
1532 | |
1533 ���ơ��������� jump �ˤȤ꤫����ޤ����� | |
1534 | |
1535 ��¤�Τΰ����Ϥ��Υ��������˻Ȥ��ɽ��ѿ��ΰ��֤�gcc�Ȱ㤦... | |
1536 | |
1537 �������� register �Ϲ�¤�Τˤ��٤����͡� | |
1538 struct register { | |
1539 int used; | |
1540 int valued; | |
1541 char *name; | |
1542 char *wname; | |
1543 char *bname; | |
1544 int type; /* register variable or not */ | |
1545 int number; | |
1546 } | |
1547 virtual/real �ϡ��ɤ����롣 | |
1548 | |
1549 Sat Feb 15 14:00:03 JST 2003 | |
1550 | |
1551 fdecl_struct ��ʸŪ�˰������и�����Ȥ��˹Ԥ��ȡ�int *f(int | |
1552 a) �ʤɤǡ�* ��ɾ�����������ˡ�int a��ɾ�����줷�ޤ���*obj | |
1553 ��obj ��ɾ��������ʤ���f�Υ����פ����ꤷ�ʤ���int*f()[] �� | |
1554 �����ʾ�礬���뤫�顣(?) �ʤΤǡ�gcc �ȡ��������뤿��ˤϡ� | |
1555 arg ����Ƭ�� fdecl_struct ��Ԥ���ˡ�ǤϤ���ǡ�fdecl ��Ǥ� | |
1556 �Ȥ��齤�����������ɤ��� | |
1557 | |
1558 fix ���褦�ˤ�����ꥹ�Ȥʤ�ơ�¸�ߤ��ʤ������! | |
1559 | |
1560 varargs ���������ΤϤ��ɤ���������... | |
1561 | |
1562 rvalue(expr(),type) �Ǥϡ�expr() ��type��rvalue�˰����Ϥ��� | |
1563 �����Ǥ⡢type ������ѿ��ˤ���ȡ�rvalue��ۤʤ륿���פǸ� | |
1564 �ӽФ��Ȥ���type���ѹ�����ɬ�פ����롣����rvalue��type �ΰ� | |
1565 ���ϡ����ʤ�Ϥޤä����Ȥ�����Τǡ�rvalue(int e,int type)�� | |
1566 �����ɤ����ȤϳΤ��ʤ����... | |
1567 | |
1568 struct_push ��register�ΰ�����ʣ���������ʤ���ä� | |
1569 ��ñ�ˤʤ�ʤ���? | |
1570 | |
1571 Sun Feb 16 07:58:23 JST 2003 | |
1572 | |
1573 �������ʤ����ɤ�����ȸ��äơ������� | |
1574 �Υꥹ�Ȥ�������Ƥϡ�����ɤ��ʤ��� | |
1575 | |
1576 Sun Feb 16 22:55:58 JST 2003 | |
1577 | |
1578 vdisp �äƤʤ���ä����? | |
1579 | |
1580 Mon Feb 17 12:35:39 JST 2003 | |
1581 | |
1582 ���������Ͻ��褿�ߤ����������Ͼ�������Τ���ˤ��٤��ʤΤ�? | |
1583 �ޤ����Ǥ���㤤��������ɡ��������Τ��礭���ΤϤ��� | |
1584 ����͡� | |
1585 | |
1586 Tue Feb 18 11:56:10 JST 2003 | |
1587 | |
325 | 1588 overlapped �Ѥ� emit_copy |
59 | 1589 float/double |
1590 long long | |
1591 | |
1592 Tue Feb 18 19:34:31 JST 2003 | |
1593 | |
1594 code argument ������ȿž������ȡ�list2(LVAR,offset) | |
1595 ��offset�����ɥ쥹�������Ȱ��פ��Ƥ���Ȥ������� | |
1596 ����롣����ǡ���¤�Τγ�Ǽ���������Ƥ��ޤ�... | |
1597 | |
1598 �Ȥ������Ȥ�... def(n) ��code�λ���argument�ϡ��ɽ��ѿ���Ʊ�� | |
1599 �����ǥޥ��ʥ����ǽ������������ɤ��� | |
1600 | |
1601 �Ǥ����ߤ������Ǥ⤵�� | |
1602 | |
1603 int main( int ac, char *av[]) | |
1604 { | |
1605 int n; | |
1606 goto arg1(0,1,2,3,4,return,environment); | |
1607 } | |
1608 | |
1609 �äơ����ä� return ʸ���ʤ��ȡ�ʸ��� | |
1610 �������͡����ࡣ | |
1611 | |
325 | 1612 post processing �������overlap���Ƥʤ��Ȥ����ݾڤ��ʤ��� |
59 | 1613 |
1614 Wed Feb 19 15:38:55 JST 2003 | |
1615 | |
325 | 1616 ��ʬ���ȤȤ�overlap�Ƥʤ��Τǡ� |
59 | 1617 struct a a,int i |
1618 int i,struct a a | |
1619 �ߤ����ʻ��˼�ʬ���Ȥ�����Ƥ��ޤ����ʤΤǡ�emit_copy | |
1620 ���������������Ʋ����ʤ��褦�˽�������ɬ�פ����롣 | |
1621 | |
75 | 1622 call bcopy �Ǥ�������ޤ͡� |
64 | 1623 |
1624 Wed Feb 19 20:42:07 JST 2003 | |
1625 | |
1626 �̤���� C2CbC �� CbC2C ��micro C �˼����ࡣ�ƽ�ˡ� | |
1627 conv->func(); �������ࡣconv �ϡ���¤�Ρ� | |
1628 | |
1629 conv: original | |
1630 c2cbc | |
1631 cbc2c | |
1632 | |
1633 �Ȥ��롣�ʤ�ۤɡ� | |
1634 | |
1635 Thu Feb 20 05:34:58 JST 2003 | |
1636 | |
1637 �थ��code-ia32 �Ƿ빽�Ϥޤä������ȡ�stack �Υ��饤���Ȥ� | |
1638 �����ߤ�����6809�Ǥ�����ˤʤ�ʤ��ä�������ɤ͡� | |
1639 leave ��Ĵ������٤��� | |
1640 | |
66 | 1641 |
1642 Thu Feb 20 14:42:46 JST 2003 | |
1643 | |
1644 c2cbc,cbc2c �ʤ�����ɡ����ä���ʸ�ڤˤ��Ƥ����Ѵ�����ȡ� | |
1645 �빽����������뤱�ɡ�������? �ä˶ɽ��ѿ���̾���Ȥ��� | |
1646 �ξ���Ȥ���macro �⤽�������ɡ� indent ���餤��¸�Ǥ��ʤ��� | |
1647 �ʤ������������function call��������갷��ɬ�פ������ | |
1648 �ǡ���ʸ�ڤˤ��Ƥ�������뤷���ʤ����ʡ�gexpr ��������� | |
1649 ������褦�ˤ��뤫����������ȡ���������Τϡ�statement �ȡ� | |
1650 gexpr �ˤʤ롣�Ǥ⡢��ɡ���ʸ�ڤǷ�������⤯�����ʤ��� | |
1651 �ʤ���? ��äѤ��Ѥ��衣���ξ��ʤ��Τϡ� | |
1652 | |
1653 �����ǤϤʤ��ơ�exprN() ���Ѵ����Ƥ�����ˡ�⤢�롣�������� | |
1654 ������ʤ��Τdzڤ���������������ȡ���������Τϡ� | |
1655 exprN(),doXXXX() | |
1656 �Ȥʤ롣����ϡ��̤�¿�������ɡ��ޤ�������������������� | |
1657 ���ꥸ�ʥ����¸���䤹���� | |
1658 | |
1659 ����ѿ���������ɲä���ȡ������������äƽ��ϤǤ��ʤ� | |
1660 �ʤ롣{int a;...} ��ǧ�����ɤ��櫓���ɡ����������ʤ��� | |
1661 ���㡢����? �Ǥ⡢�����ʤ�ʤ������Ϥä���Хåե� | |
1662 ��������? �ɤ���? cheapp �Ǥ���? ����ѿ��Ϥ���ʤ��� | |
1663 ����ʤ���? | |
1664 a = g(i)+a; | |
1665 �Ǥ��硣 | |
1666 goto g_1(i,f_1,save_a); } | |
1667 code g_1(i,f_1,save_a) { .... goto f_1(ret_value,save_a); } | |
1668 code f_1(ret_value,save_a) { a = ret_value+a; ...} | |
1669 �������ʤ������ | |
1670 | |
1671 | |
1672 ����ɽ������롼����ɬ�פ��͡� | |
1673 | |
1674 ���ɤ������ʤ���CbC��Prolog version �Ȥ��ۤ����ʤ�����������С� | |
1675 �Ѵ��ϴ�ñ���Ǥ⡢������Ȥ��ƤǤ��ʤ��ä����ȤǤ⤢��ʡ� | |
1676 | |
1677 | |
1678 Thu Feb 20 21:13:23 JST 2003 | |
1679 | |
1680 MC6809 �� mc-codegen.c version ��? (����äȵ���������?) | |
1681 X �� D �ǡ�use_data_register, use_pointer ���Ƥ�롣 | |
1682 tosop �ǡ�X �� D �δ֤����������̰������롣 | |
1683 (�ʤ�ۤ�...) MAX_MAX=0�Ǥ��ޤ�ư���Τ�? ��äѤꡢ1�� | |
1684 �����͡��Ǥ���С�2����͡� | |
1685 | |
1686 �빽����ư���������ñ���⡣ | |
1687 | |
1688 ���Ѥν����ġ�������������� | |
1689 | |
1690 �Ǥ⡢Prolog version �äƤΤ������� | |
1691 code(name,interface(....)) :- | |
1692 p()....,goto(name,interface(....)). | |
1693 �ߤ����ʴ���? �빽����ñ��interpreter��뤫���Τ�ʤ��� | |
1694 ����ϡ�������͡�thread diagram interpreter �Ȼ��Ƥ��롣 | |
1695 | |
1696 Fri Feb 21 13:34:17 JST 2003 | |
1697 | |
1698 ��ʸ���ǤǤν��������ɡ��ɤ줯�餤��ǽ�Ϥ������? | |
1699 ���ξ�Ǥν����������ȡ�����ä��㤹���ʤ�? ����ǡ� | |
1700 cbc2c,c2cbc �ϤǤ���Ȥϻפ��� | |
1701 | |
1702 �ޤ���������.. chk ��̵�뤷�Ƥ���Ȥ������빽�����Ǥ����ɡ� | |
1703 jmp,enter,leave ... | |
67 | 1704 |
1705 Sat Feb 22 13:05:04 JST 2003 | |
1706 | |
1707 type �������... | |
1708 | |
1709 conv �Ϥ���Ⱦ��default conv���ƤФ�롣�ʤΤǡ�c.c | |
1710 �äƤ������ϡ�default.c����͡�ɬ�פʤȤ��������� | |
1711 ��ʬ����������ȸ�����ˡ���ɤ����������������� | |
1712 �إå����ĤǺѤष���������object �ظ��ʤ� | |
1713 ��ñ�ʤ����... | |
1714 | |
1715 | |
1716 Sun Feb 23 19:47:41 JST 2003 | |
1717 | |
1718 struct ��type��������������ɡ������������顢���Ȥϰ��� | |
1719 ���ʤ������ɤ����դ����ʤ顢tag̾type̾�ϡ�����ʤ��� | |
1720 ���� | |
1721 | |
1722 �Ȥ����type�β��Ϥ���ndecl�ǽ�������? �����Ǥϡ������ | |
1723 �����櫓�����ɡ� | |
1724 | |
1725 ���Υ����פΰ������ȺƵ����ϰ�������λ���ʤ���ʤ���? | |
1726 ���ʤ��͡� | |
69 | 1727 |
1728 Mon Feb 24 02:31:06 JST 2003 | |
1729 | |
1730 strings ��\n�ʤɤ��᤹ɬ�פ����롣 | |
1731 | |
1732 �ʤ�̤����ˤʤäƤ�ʡ� | |
70 | 1733 |
1734 Mon Feb 24 11:02:07 JST 2003 | |
1735 | |
73 | 1736 typedef ���줿�����פϡ��������Ȥ������ɤ������ɡ����� |
1737 ���Ƥ��ޤäƤ���Τǡ��ɤ����ˤȤäƤ����ʤ��Ȥ�����͡�dsp | |
1738 ? | |
70 | 1739 |
73 | 1740 �����ࡢ����Ϥʤ��ʤ����������������Ƥ⤤����ʤ��� |
1741 �ʡ��٤����ɡ����ʤ��Ȥ�gnptr��������줿��Τϥ��������٤� | |
1742 �Ǥ��礦�� | |
72 | 1743 |
1744 indirect function type ��ɽ�����ʤ�.... | |
1745 | |
73 | 1746 sdecl �Ǥ�conv ��Ԥ��Τǡ�type_print �Ǥ�sdecl���ͳ������ |
1747 ���ɽ����ԤäƤϤ����ʤ��� | |
72 | 1748 |
73 | 1749 �ʤؿ��ΰ����η����ͤ���̯���Ѥ���Ǥ�����... ����ʤ�... |
75 | 1750 |
1751 �ޤ����ؿ������typedef��struct���Ѥ�äƤ��ޤ���gtypedefed | |
1752 �����ޤ�ư���Ƥ��ʤ�? | |
1753 | |
1754 Mon Feb 24 17:24:31 JST 2003 | |
1755 | |
1756 �ޤ��ͤ�����äѤ괰���˹�ʸ�ڤ���ƹ����������� | |
1757 �����ǤϤ����͡��ä� getsym (����ʤ�)�� conv->x_() | |
1758 �Ȥ�������ѤϤ��ɤ������� | |
1759 | |
1760 ���Τ���ˤϡ��ɽ��ѿ�̾��tree��ǻ����⤯ɬ�פ����롣 | |
1761 �ޤ�������������ɤ����������ɡ� | |
1762 | |
1763 �ºݡ����Υ��åȤǽ���뤫�ɤ����ϡ�����äȲ������� | |
1764 ���֤�buffer �˽��Ϥ���äƤΤ��Ф����餯�� | |
1765 �Ѵ��Ǥ���������� | |
1766 | |
76 | 1767 ��������ǤθƤӽФ��Ȥ���ͤ���ȡ���äѤ� |
1768 ��ʸ�������������ʤ��Ȥ���������͡� | |
1769 (�äƤ��Ȥϡ��ޤ������ʤ�κ�Ȥ�����äƤ���.... �थ...) | |
1770 tmp2.c �ϡ��̤�ʤ���... | |
78 | 1771 |
1772 Fri Feb 28 20:32:46 JST 2003 | |
1773 | |
1774 �ǡ�c2cbc �ϡ������ float ��������ˤ��櫓? | |
1775 | |
1776 Sat Mar 1 22:05:43 JST 2003 | |
1777 | |
1778 creg_destroy �ϡ�������ᡣ����ϴ���Ū�ʥ����ǥ������ᡣ | |
1779 | |
1780 long long ��struct�Ǥ�����ʤ�? ����? �� struct �黻���̤� | |
1781 ������Ƥ�롣����ϡ������ˤ��뤫�� | |
1782 | |
1783 float,long long�ʤ�����ɡ� | |
1784 FRGVAR DRGVAR LRGVAR | |
1785 �ʤɤ��롣����ˡ� | |
1786 FMUL DMUL LMUL | |
1787 �ʤɤ⤤�롣�����Ѵ��� binop �Dz�᤹�롣�Ѵ���黻�ˤʤ롣 | |
1788 D2F, D2I, F2D, F2I, I2D, I2F, U2D, U2F | |
1789 ���餤�Ǥ���? | |
1790 | |
1791 emit_push�ϡ�����ɬ�פȤ��뤱��? �������ͤ���emit_fpush, emit_dpush | |
1792 ����? | |
1793 | |
1794 creg ��float register(or stack) ���ͤ������Ф�����ʤ���? | |
1795 ����ơ�emit_push�η�����롣creg �ϡ����ä����������� | |
1796 ��Τ����Ƥ���Τǡ�������ʤ�������������ʤ����ʤ��� | |
1797 �����͡�FMUL�Ȥ�������ʤ顢�����Ƚ�ǤǤ������� | |
1798 | |
1799 ��ʸ�ڤˤϷ���ޤ�ʤ��äƤΤ����ء�����������? ��������С� | |
1800 RGVAR CRGVAR FRGVAR DRGVAR LRGVAR | |
1801 �ǤϤʤ��� | |
1802 RGVAR | |
1803 �Ǥ��ष�����������ѷ���ڤ����͡����ϡ� | |
1804 CHAR,UNSIGNED, UNSIGNED CHAR, INT, FLOAT, DOUBLE, LONGLONG | |
1805 ���餤�Ǥ����� | |
1806 | |
1807 emit_data | |
1808 | |
1809 �Ȥ���ȡ��������빽���뤱�ɡ� | |
1810 | |
1811 Sun Mar 2 12:58:38 JST 2003 | |
1812 | |
1813 ���Ȥ�constant���͡�FCONT,DCONST���ʡ�binop�Ǥ� | |
1814 �Ѵ��Ȥ���ɬ�פʤ櫓�����ɡ� | |
1815 | |
1816 ���������С�shot ��load/store��ʤ��͡�SRGVAR,SASS�Ȥ��Ǥ���? SASS | |
1817 �ϡ����Ǥˤ���ʤ��� | |
1818 | |
1819 Sun Mar 2 22:01:58 JST 2003 | |
1820 | |
1821 ����? | |
1822 conv->_sm(); | |
1823 (*conv->_sm)(); | |
1824 �ξ��ϡ� | |
1825 *conv->_sm ���ͤ�call���� | |
1826 ������ɡ� | |
1827 goto exit1(); | |
1828 goto (*exit1)(); | |
1829 �ξ��ϡ� | |
1830 exit1 | |
1831 ���ͤ�jump���������? ����? �ʤ��㤤���Ƥ�? �ʤ��exit1() | |
1832 ����indirect���Фơ�(*exit1)���ȽФʤ��������? | |
1833 | |
1834 ��������ϡ� | |
1835 void (*_sm)(); | |
1836 �Ǥ��äơ� | |
1837 void _sm(); | |
1838 �ϤǤ��ʤ�? �ʤ��? | |
1839 | |
1840 �������ޤ����������������ɤ������� | |
79 | 1841 |
1842 ��äѤꡢarglist �κƵ�Ū�����������Ȥ��Ƥʤ��Ȥ��ᡣ | |
81 | 1843 |
1844 �����ࡢ enum �ʤ�ƤΤ⤢��Τ͡��䤵�������ɡ�����Τ�? | |
1845 | |
1846 code (code *) * �ߤ����ʤΤ�����Τǡ�conv �ϼ�ľ����ɬ�ס� | |
1847 | |
1848 Mon Mar 3 12:38:08 JST 2003 | |
1849 | |
325 | 1850 float/double �Ͻ�Ĵ�˿ʤ�Ǥ뤱�ɡ�3���Ϥ�����Ǥ��礦�� |
81 | 1851 |
1852 binop ����㤦��mc-parse.c �ϡ��ۤȤ�ɽ���?! | |
1853 �����ȴؿ��ƤӽФ����ĤäƤ��뤫������ single �⤢��͡� | |
1854 | |
1855 emit_push base �ǽ�����ɡ�¾��CPU�ǤϤ��������꤬ | |
1856 �㤦��������ʡ� | |
1857 | |
1858 dreg/creg ��floating version��ɬ�פǤ���( �Ǥ�? ) | |
82 | 1859 |
1860 Tue Mar 4 14:56:28 JST 2003 | |
1861 | |
1862 double ��current register ��387�Υ����å���Ȥ���(?) | |
1863 �ؿ��ƤӽФ�����387�Υ����å�����¸�����Ȥ��� | |
1864 �ݾڤ�̵���Τǡ�emit_dpush�Ǥϡ�%esp ����¸���롣 | |
1865 | |
1866 �Ǥ⡢��������ȡ������θ�ʤɤ�387�Υ����å��� | |
1867 ��˻Ĥ뤳�Ȥˤʤ롣�����Ĥꥢ���륳���ɤ� | |
1868 �ɤ��ˤ����? free_register �Ǥ⤤���������.... | |
1869 �������ࡢ�Ĥ������餤��ġ�ld ����ʤ��ơ� | |
1870 stack top ���������륪�ڥ졼�����Ϥʤ���? | |
1871 | |
1872 (�������Ǥ⡢�ʤ�float�ϡ��⤦�������ä��㤦��... �ʤ� | |
1873 ���Ӥ�...) | |
1874 | |
1875 Tue Mar 4 23:58:07 JST 2003 | |
1876 | |
1877 fmulp �Ȥ��Ǥϡ�fpp ��stack�ΤĤ��ĤޤϤ�����fstl �Ȥ����ȡ� | |
1878 ���ʤ���fstpl ����Ф�������������������Ϣ³�����Ǥޤ����ʤ롣 | |
1879 �ͤ�Ȥ����ɤ��������������Τ뤳�Ȥ��Ǥ�����ɤ�������� | |
85 | 1880 (use flag ��Ƚ�Ǥ��뤳�Ȥˤ���) |
82 | 1881 |
1882 ��ɡ�freg �ϡ��Ȥ�ʤ��ä��͡�0�������äƤ���Τ�ľ���ʤ��Ȥޤ������� | |
1883 freg�ơ�stack ��ľ���äƤΤϡ���äѤꡢ�ޤ������... | |
1884 | |
1885 �Ǥ⡢��ư�������쥸���������CPU�ξ��Ϥ����ʤ���? | |
1886 | |
85 | 1887 Wed Mar 5 11:25:11 JST 2003 |
1888 | |
1889 printf �Ǥ� ������double�����줹��ɬ�פ����롣goto() �Ǥϡ� | |
1890 �����ΤϤޤ������ɽ��ѿ���Ʊ�������顣�äƤ��Ȥϡ� | |
1891 | |
1892 �ؿ��ΰ�����double�ˤ��ʤ��Ȥ���ʤΤ͡��ץ��ȥ����פ� | |
1893 ������ϡ����θ¤�Ǥʤ���(������...) | |
1894 | |
87 | 1895 (�����������Ĥ������Ѥ��빽�Ф��...) |
1896 | |
85 | 1897 ���ȡ�fpp �Υ����å�����äƤ���Τǡ�overflow�������� |
1898 ����ʤ���? �ۤȤ�ɤξ��Ǥ������礦�֤�����������ä� | |
1899 ����error���餤�Ф���? �Ǥ�¹Ի��ˤ����狼��ʤ���... | |
1900 | |
325 | 1901 I2D �Ǥ���signed/unsigned �ζ��̤�����͡� |
85 | 1902 |
1903 ��äѤ� FCONST �����ʤ���? | |
87 | 1904 |
1905 Wed Mar 5 19:51:59 JST 2003 | |
1906 | |
1907 �����Ѱʳ��Ͻ��ä�����.... ���ȡ�name space ���빽�ŤʤäƤ��� | |
1908 �����͡� | |
1909 struct tag, struct field | |
1910 ���ŤʤäƤ���ΤϷ빽���äȤ�������gsearc/lsearch �Τ������ | |
1911 ��ľ���ʤ��Ȥ��ᤫ�⡣ | |
1912 | |
1913 ���ȡ�list ��ʤ���mode �κ�����ˤ����Ǥ��礦���ɡ� | |
1914 | |
1915 ���ȡ��빽���������... | |
88 | 1916 |
1917 Wed Mar 5 21:15:34 JST 2003 | |
1918 | |
1919 �Ǥ����衣�ޤ����ƥ��Ȥ��Ƥʤ���ʬ�Ϥ��뤱�ɡ��ɽ��ѿ��ν�����Ȥ��� | |
1920 FCONST �Ȥ���3���ǽ��褿�͡� | |
1921 | |
1922 (gcc �������ä������������ʤ�...) | |
89 | 1923 goto.c ���̤�ʤ��ʤäƤ�ʡ� |
1924 | |
1925 Thu Mar 6 14:00:13 JST 2003 | |
1926 | |
1927 PowerPC��non-lazy pointer�äơ��ơ��֥�����äƤ��Ƥ������ | |
1928 �߹�������ʤΤ͡����ä��쥸�������ɤ߹�����顢������ | |
1929 ���Ѥ�������ɤ��餷�����Ȥ������Ȥϡ�code_gvar �˥���å��� | |
1930 ����ʤ��Ȥ����ʤ��������� RLU �Ǥ���? (���ɤ�����) | |
1931 �Ǥ⡢�������ʤ��ȡ� | |
1932 i = i+1; | |
1933 �ʤ�ƤΤǤ⡢�Ҥɤ��ܤˤ��äƤ��ޤ��� | |
1934 | |
325 | 1935 local variable ��ǽ�� move multiple register ����Ⱦ�� |
89 | 1936 �쥸�������ɤ߹��㤦�ߤ����͡�pointer �ǻ��Ȥ����� |
1937 �����Ǥ��礦���ɡ��ޤ���31�Ĥ⤢��С������������Ȥ� | |
1938 ���Ƥ⤢�ޤ�����ʤ��Τ����Τ�ʤ����ɡ� | |
1939 | |
1940 creg ���˲����ʤ������ˤ���С������Ϥޤ��ˤʤ��ʤ�? | |
1941 (IA32�Ǥϡ������������) | |
1942 | |
1943 Thu Mar 6 20:50:24 JST 2003 | |
1944 | |
1945 ��äѤꡢ�Ȥä�ʬ����register����¸����褦�ʥ����ɤ� | |
1946 �ʤ�ߤ�����one path �ǡ�����뤿��ˤϡ� | |
1947 .align 2 | |
1948 _main0__: | |
1949 lwz r5,2136(r1) | |
1950 addi r1,r1,2128 | |
1951 lmw r23,-36(r1) | |
1952 mtlr r5 | |
1953 blr | |
1954 .align 2 | |
1955 .globl _main0 | |
1956 _main0: | |
1957 mflr r2 | |
1958 stmw r30,-8(r1) | |
1959 stw r2,8(r1) | |
1960 li r11,0 | |
1961 stwu r1,-480(r1) | |
1962 li r2,100 | |
1963 mtctr r2 | |
1964 mr r30,r3 | |
1965 addi r0,r1,64 | |
1966 mr r9,r0 | |
1967 b _main0__; | |
1968 �Ȥ����������ˤ��뤷���ʤ��͡� | |
1969 | |
1970 ���Ȱ����ϡ��쥸�������Ѥ�褦�ˤʤäƤ���ߤ���������... r3 ����? | |
1971 | |
1972 mflr r31 | |
1973 li r0,7 | |
1974 stw r0,56(r1) | |
1975 | |
1976 ������8�ĤޤǤϥ쥸�������Ѥ�ߤ����͡� | |
1977 r3-r10 ���͡� | |
1978 | |
1979 ��¤�Τ�register�˥��ԡ������Τ��������ơ�����¦�Ǽ���� | |
1980 ���ԡ���Ԥ��櫓���͡���Ƭ��return struct�ؤΥݥ�������Τ� | |
1981 Ʊ���� | |
1982 | |
1983 (������memcpy���ޤ����...) | |
1984 | |
1985 ��ư��������쥸�����Ϥ���������f1���顣(�ʤ�ۤ�) | |
1986 | |
1987 saveFP�äƤΤ�ƤӽФ��ơ� f24-f31��save����餷���� | |
1988 (31-24)*8 �����ʤ���? | |
1989 | |
1990 pointer �Τ��Ȥ�ͤ���ȡ��쥸�������Ȥޤ�����Τ⤢�� | |
1991 �櫓�����ɡ����ɥ쥹�����Ƥ���Ǵ֤˹礦��ʤ�? | |
1992 ����ʤɤϡ���Ȥ�Ȥ��������������(?)�ϳ��ݤ���Ȥ��ơ� | |
1993 | |
1994 ���������դˡ�r3-r10 �ϰ����Ǥʤ���в����Ƥ��ɤ��櫓���� | |
1995 (�����r9�Ȥ��ɤ��Ȥ��Ƥ���櫓��...) | |
1996 �Ȥ������Ȥ���ʤ��ʤä��顢�������֤�����ɤ��櫓�͡� | |
1997 (�äƤ��Ȥϡ�LVAR ���� REGISTER �äƤ���������������... | |
1998 �ޤ������������ɤ�...) | |
1999 ����� get_register �����ɤ������� | |
2000 | |
2001 �ɤ��⡢r11-r12 ������ϼ�ͳ�˻ȤäƤ���餷���� | |
2002 | |
2003 �������äƤ�������Ǵؿ��ƽФ�����Ȥ��ϡ��ɤ������? | |
2004 r30�ʤɤ˰�ư����Τ�? | |
2005 | |
2006 �ʤ��Τ�ɡ�in file call name �� out file call name �� | |
2007 �㤦�ߤ����͡�(sigh...) ����ʤΤʤ�Ȥ��ʤ�Τ��ʤ��� | |
2008 ������stub �ˤ��Ƥ����ơ�.set �ǽ�����Ȥ�����⤢�뤱�ɡ� | |
2009 | |
2010 (�������˰����ǤϤǤ��ʤ���...) | |
90 | 2011 |
2012 �ʤ�����������ư�������ؤ��Ѵ��Ϥ��֤�Ǥ��ʤ��Ȥ���ʤΤ͡� | |
92 | 2013 ����ϥ��֥롼�����Ƥ�������ޤ����� |
2014 | |
2015 get_register �����м��Ԥ��ʤ��褦�ˤǤ����ʤ���? | |
2016 | |
2017 label ������ȡ�code_base cache ��clear���ʤ��Ȥ����ʤ��� | |
2018 �����Ƚ�Ǥ���ˤ� fwddef ��hook����ɬ�פ����뤱�ɡ� | |
93 | 2019 |
2020 Fri Mar 7 09:17:10 JST 2003 | |
2021 | |
2022 ����ϡ� | |
2023 register allocation | |
2024 �� | |
2025 function call/goto call | |
2026 �ι������ʡ�goto ������ machine dependent�ʤȤ����� | |
2027 �ۤȤ�ɤʤ���register ��save����ɬ�פʤ����顣 | |
2028 | |
2029 register allocation �����ɡ� | |
2030 r0 | |
2031 r1 frame pointer (or stack pointer ) | |
2032 r30 jj | |
2033 r31 relocation register | |
2034 r0,r1,r2 �����ƥ�ǻȤ� | |
2035 r0-r10 ���� | |
2036 �����Ǥʤ��Ȥ�����ͥ��Ū�˻Ȥ� | |
2037 r20-r29 �����֤��ƻȤ��ΰ� | |
2038 | |
2039 r10-r19 �Ϥɤ��ʤ������? �����֤��ʤ��Τ�? | |
2040 | |
2041 ia32 �����Ǥ�fpp�Υ����å���ؿ��ƤӽФ��ΤȤ����Ǥ��Ф������� | |
2042 �ɤ��� | |
2043 | |
2044 r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 | |
2045 r10 r11 r12 r13 r14 r15 r16 | |
2046 r28 r29 r30 r31 | |
2047 | |
2048 �ʤΤǡ���ΤΤߤ��Ȥˡ�17-27 �ޤǤ��Ȥ��Ƥʤ��͡� | |
2049 | |
2050 �Ȥ������Ȥϡ��ؤ��ƽФ����ˤϡ���¸�����쥸�����Ϥʤ��� | |
2051 �פä������ɤ��äƤ���? ���뤤�ϡ�r17-r28 ����¸������ | |
2052 �פä��ɤ��Τ��ʡ� | |
2053 | |
2054 Sat Mar 8 19:28:42 JST 2003 | |
2055 | |
2056 �ؿ��ƤӽФ����Υ쥸���������֤��뤿��ˤϡ��ؿ��ƤӽФ� | |
2057 ��ͥ�褷�Ƽ¹Ԥ��Ƥ����ɤ����ؿ��ƤӽФ��η�̤϶ɽ��ѿ��� | |
2058 �����֤��롣 | |
2059 f(g(h(a)+1)+2) | |
2060 �ϡ� | |
2061 a1=h(a) | |
2062 a2=g(a1+1) | |
2063 f(a1+2) | |
2064 �Ȥʤ롣��������С��ؿ��ƤӽФ��ΤȤ��Υ����å��Ϥ��ʤ餺0�ˤʤ롣 | |
2065 | |
2066 �Ǥ⡢��ɡ������ϴؿ��ƤӽФ������˥����֤���Τ͡����ä��顢 | |
2067 ����ʤ��Ȥ��ʤ��ǡ������֤�����ɤ��Τ��� | |
2068 | |
94 | 2069 Mon Mar 10 11:42:40 JST 2003 |
2070 | |
2071 �ǡ��쥸�����Υ����֤ʤ�����ɡ�mc-codegen.c ���ѹ����ʤ� | |
2072 �Ȥ���С������Υꥹ�Ȥ�Ȥä��ѹ����Ƥ����Τ��ɤ��� | |
2073 �ؿ��ƤӽФ��ϴ���Ū�ˤ����������ˤʤ롣���������Ǥ� | |
2074 �Ƥ�Ǥ��ʤ��Ƥ⡢�����֤���ɬ�פϤ��롣������������ | |
2075 �롼����ΤǤ����ɤ��ʤ��Τǡ���Ʊ�����ɤ����פ��� | |
2076 Ƚ�Ǥ���Τ��ɤ��ΤǤϤʤ���? | |
2077 | |
2078 �ؿ��ƤӽФ������˼��Ѥ˥쥸�������Ѥޤ줿�ͤϥ����֤��� | |
2079 �����ɤ��������֤������lvar�Ȥ��ƥ����������뤳�Ȥˤʤ롣 | |
2080 �����å��Ǥ⤤�����ɡ� | |
2081 ��������ȡ�stack ����ˤϡ� | |
2082 | |
2083 �쥸���� �쥸�����ֹ� (>0) | |
2084 �����å� -1 | |
2085 lvar lvar�ֹ� | |
2086 | |
2087 �λ����ब���뤳�Ȥˤʤ롣����˹�碌��tosop/assop���ľ | |
2088 ��ɬ�פ����롣emit_pop �����Ǥ������⡣�����å���ߤ���ޤ� | |
2089 �Τ��ǤϤ��뤬��ia32�����Ǹ�Ψ����������äѤ껰���ॵ�ݡ� | |
2090 �Ȥ���Τ��ɤ��������� | |
2091 | |
2092 (���ä���������������ʤ�... �ɤ��������դ��뤫...) | |
2093 | |
2094 Tue Mar 11 14:23:57 JST 2003 | |
2095 | |
2096 save_stacks ����ȡ��쥸�����ϤۤȤ�ɻȤ��ʤ��ʤä� | |
2097 ���ޤ������������ɤθ��̤����ɤ��ʤ롣 | |
2098 | |
2099 ������դ˻��äƹԤ���save_stacks��save�����̤����롣���� | |
2100 ���ˤ��ɤ������͡�ȿ��Χ������Ω���ʤ��黻�Ҥ˴ؤ��Ƥϡ�tosop | |
2101 ������ǤȤ���뤳�Ȥˤʤ�Τ�... ���ȥ����å����Ѥ������� | |
2102 �ˤʤäƤ��ޤ����ޤ�����Ȥ��ǤǤϹԤ��Ƥ������Ȥ���... | |
2103 CMP�Ǥ�rexpr ��ȿž�����������ž������������ñ����SUB�Ǥϡ� | |
2104 ADD + (-CONST) �ˤ��������ɤ��͡� | |
2105 | |
2106 je _xxx | |
2107 �������ȡ�current register ��regv[]���ĤäƤ��ޤ�������ϡ� | |
2108 �Ѥ���͡�gexpr_init �� regv ���Ĥ�Τϡ�case ʸ����Ӥ����� | |
2109 ���Ȥ�����0�ˤ����ɤ���(�ޤ�������̵���������) | |
2110 | |
2111 (case ʸ��jump�ϡ�switch ʸ��������˽�������С�index jump | |
2112 �ˤ��뤳�Ȥ��Ǥ����) | |
2113 | |
2114 Wed Mar 12 12:58:47 JST 2003 | |
2115 | |
2116 ��Ӥ����촹����Ȥ�����ϼ㴳�㤦��͡� | |
96 | 2117 |
2118 Thu Mar 13 19:39:48 JST 2003 | |
2119 | |
2120 ���������С�doif �Ǿ�郎������ä��Ȥ��Ȥ��κ�Ŭ���� | |
2121 ���Ƥʤ�����͡��䤵�������ɡ�chk ��Ȥ����ɤ��Τǡ� | |
2122 | |
2123 f(g(1,2,3),g(1,2,3),g(1,2,3)) | |
2124 | |
2125 �Ȥ����ȡ���ɡ�g ���֤��ͤϰ�ö���������ʤ��Ȥ��ᤸ��� | |
2126 �ʤ�����ɡ��ºݤϡ�r29-r22 ��ȤäƤ���褦�Ǥ��͡� | |
2127 | |
2128 �äƤ��Ȥϡ�function call �λ��ˡ�r3-r10 �����ΰ������ɤ����� | |
2129 �����å����ơ��������ä���r29-r22�˰ܤ���Ȥ�����櫓����͡� | |
2130 ���ä���r3�Ȥ�������Ƥ��ޤä�����ȡ���ʣ���Ƥ��ޤ���... | |
2131 ����äƴؿ��ƽФ������뤫�ɤ����ϡ�Ĵ�٤뤳�Ȥ��Ǥ��뤫�顢 | |
2132 �ؿ��ƤӽФ������ä��顢��������褦�ˤ���? | |
2133 | |
2134 �����������ɤ������ʤ�... (���ä��������Ĥʤä���Ǥ�����?) | |
98 | 2135 |
2136 Fri Mar 14 10:38:25 JST 2003 | |
2137 | |
2138 function �� dsp ����arglist �� extern flag ��ξ��������Ƥ��ޤäƤ��롣 | |
2139 ����� sc �Ƕ��̤���٤�ʪ����͡� | |
2140 | |
2141 �ʤ�emit_pop_free ��xreg��LVAR�λ��ΥХ�����Τ˶�ϫ����... | |
2142 gdb �� top level �Ǥ�while ������դ��ʤ��ơ�define ���Ƥ�ʤ�ʤ��� | |
2143 ����ߤ����͡� | |
99 | 2144 |
2145 Fri Mar 14 15:50:28 JST 2003 | |
2146 | |
2147 �ʤ�... �Ƥ�Ƥ�Ƥ⡢�����! | |
2148 | |
2149 Fri Mar 14 19:43:44 JST 2003 | |
2150 | |
2151 jump ����� input register ���꿶��Ȥ��� floating point register �� | |
2152 ���Ȥ�ͤ��Ƥʤ��ä�������� register_var �Ȥϰۤʤ�Τǰۤʤ� | |
2153 ���Ȥߤdz�꿶��ɬ�פ����롣�äƤ��Ȥϡ�get_input_register_var | |
2154 ���פ�äƤ���? | |
2155 | |
100
a9e6f2a2946f
Wrote all code for PowerPC and no compile error. Let's fix all bugs...
kono
parents:
99
diff
changeset
|
2156 |
a9e6f2a2946f
Wrote all code for PowerPC and no compile error. Let's fix all bugs...
kono
parents:
99
diff
changeset
|
2157 0x9001a544 <saveFP+4>: stfd f15,-136(r1) |
a9e6f2a2946f
Wrote all code for PowerPC and no compile error. Let's fix all bugs...
kono
parents:
99
diff
changeset
|
2158 0x9001a548 <saveFP+8>: stfd f16,-128(r1) |
a9e6f2a2946f
Wrote all code for PowerPC and no compile error. Let's fix all bugs...
kono
parents:
99
diff
changeset
|
2159 0x9001a54c <saveFP+12>: stfd f17,-120(r1) |
a9e6f2a2946f
Wrote all code for PowerPC and no compile error. Let's fix all bugs...
kono
parents:
99
diff
changeset
|
2160 0x9001a550 <saveFP+16>: stfd f18,-112(r1) |
a9e6f2a2946f
Wrote all code for PowerPC and no compile error. Let's fix all bugs...
kono
parents:
99
diff
changeset
|
2161 0x9001a554 <saveFP+20>: stfd f19,-104(r1) |
a9e6f2a2946f
Wrote all code for PowerPC and no compile error. Let's fix all bugs...
kono
parents:
99
diff
changeset
|
2162 0x9001a558 <saveFP+24>: stfd f20,-96(r1) |
a9e6f2a2946f
Wrote all code for PowerPC and no compile error. Let's fix all bugs...
kono
parents:
99
diff
changeset
|
2163 0x9001a55c <saveFP+28>: stfd f21,-88(r1) |
a9e6f2a2946f
Wrote all code for PowerPC and no compile error. Let's fix all bugs...
kono
parents:
99
diff
changeset
|
2164 0x9001a560 <saveFP+32>: stfd f22,-80(r1) |
a9e6f2a2946f
Wrote all code for PowerPC and no compile error. Let's fix all bugs...
kono
parents:
99
diff
changeset
|
2165 0x9001a564 <saveFP+36>: stfd f23,-72(r1) |
a9e6f2a2946f
Wrote all code for PowerPC and no compile error. Let's fix all bugs...
kono
parents:
99
diff
changeset
|
2166 0x9001a568 <saveFP+40>: stfd f24,-64(r1) |
a9e6f2a2946f
Wrote all code for PowerPC and no compile error. Let's fix all bugs...
kono
parents:
99
diff
changeset
|
2167 0x9001a56c <saveFP+44>: stfd f25,-56(r1) |
a9e6f2a2946f
Wrote all code for PowerPC and no compile error. Let's fix all bugs...
kono
parents:
99
diff
changeset
|
2168 0x9001a570 <saveFP+48>: stfd f26,-48(r1) |
a9e6f2a2946f
Wrote all code for PowerPC and no compile error. Let's fix all bugs...
kono
parents:
99
diff
changeset
|
2169 0x9001a574 <saveFP+52>: stfd f27,-40(r1) |
a9e6f2a2946f
Wrote all code for PowerPC and no compile error. Let's fix all bugs...
kono
parents:
99
diff
changeset
|
2170 0x9001a578 <saveFP+56>: stfd f28,-32(r1) |
a9e6f2a2946f
Wrote all code for PowerPC and no compile error. Let's fix all bugs...
kono
parents:
99
diff
changeset
|
2171 0x9001a57c <saveFP+60>: stfd f29,-24(r1) |
a9e6f2a2946f
Wrote all code for PowerPC and no compile error. Let's fix all bugs...
kono
parents:
99
diff
changeset
|
2172 0x9001a580 <saveFP+64>: stfd f30,-16(r1) |
a9e6f2a2946f
Wrote all code for PowerPC and no compile error. Let's fix all bugs...
kono
parents:
99
diff
changeset
|
2173 0x9001a584 <saveFP+68>: stfd f31,-8(r1) |
a9e6f2a2946f
Wrote all code for PowerPC and no compile error. Let's fix all bugs...
kono
parents:
99
diff
changeset
|
2174 0x9001a588 <saveFP+72>: stw r0,8(r1) |
a9e6f2a2946f
Wrote all code for PowerPC and no compile error. Let's fix all bugs...
kono
parents:
99
diff
changeset
|
2175 0x9001a58c <saveFP+76>: blr |
a9e6f2a2946f
Wrote all code for PowerPC and no compile error. Let's fix all bugs...
kono
parents:
99
diff
changeset
|
2176 |
a9e6f2a2946f
Wrote all code for PowerPC and no compile error. Let's fix all bugs...
kono
parents:
99
diff
changeset
|
2177 �ʤΤ����Ȥ������Ȥϡ� |
a9e6f2a2946f
Wrote all code for PowerPC and no compile error. Let's fix all bugs...
kono
parents:
99
diff
changeset
|
2178 f%d ���Ф��ơ�"saveFP+%d",68-(31-f)*4 |
a9e6f2a2946f
Wrote all code for PowerPC and no compile error. Let's fix all bugs...
kono
parents:
99
diff
changeset
|
2179 ����? |
a9e6f2a2946f
Wrote all code for PowerPC and no compile error. Let's fix all bugs...
kono
parents:
99
diff
changeset
|
2180 |
101 | 2181 ��������ǡ��������������롣�Ǥ⡢�ۤȤ�������� |
2182 �ؿ��˥Х�������������ʤ�����İ�ļ�äƤ��������ʤ����� | |
102 | 2183 |
2184 Sat Mar 15 16:04:09 JST 2003 | |
2185 | |
2186 �䤡... �ޤ�.... �Х����餱���ʡ� | |
103 | 2187 |
325 | 2188 function call �Υ쥸�����ν������Ǥ���ᡣRISC�ξ��ϡ�parallel_assign |
103 | 2189 ��������������ʤ���? |
2190 | |
2191 Sun Mar 16 20:59:10 JST 2003 | |
2192 | |
2193 �������ޤ��ޤ��������ꤽ����.... | |
2194 | |
2195 �������Ƥʤ��ؿ�/�����extern�����ˤ���ɬ�פ����롣(�ʤ�ǡ�PIC�ʤ�?) | |
2196 | |
2197 function �� c0(n->ty)==FUNCTION �Ǽ��̤��롣n->sc �ˤϡ�FUNCTION/EXTRN[1] | |
2198 �����롣����͡�(CODE)�⡣�����ɡ�n->ty ����귿�����äƤ����礬 | |
2199 ���ä�������餷���� | |
2200 | |
2201 (������������ϡ��빽�������...) | |
2202 | |
2203 Mon Mar 17 12:02:22 JST 2003 | |
2204 | |
2205 function ��nptr�����ɡ� | |
2206 nptr->ty function �� return type | |
2207 list3(FUNCTION,return_type,arg_type_list); | |
2208 nptr->sc �����FUNCTION/CODE (EXTRN/EXTRN1) | |
2209 nptr->dsp �����Υꥹ�� | |
2210 �ȸ��������ʤ櫓����͡��ǡ������Υꥹ�Ȥ�type�Ͻ�ʣ���Ƥ��롣 | |
2211 | |
2212 ¾��nptr�Ȥ���������ͤ���ȡ� | |
2213 nptr->ty return type | |
2214 nptr->sc FUNCTION/CODE | |
2215 nptr->dsp �����Υꥹ�� | |
2216 ���ɤ����ǡ������Υꥹ�Ȥ�EXTRN�ξ�������������������ʤ���? | |
2217 (�ɤä��ˤ�������...) | |
2218 | |
2219 �ץ��ȥ����פȼºݤΰ����ꥹ�Ȥ��������ϥ����å����ʤ����� | |
2220 �����ʤ��櫓�����顢�̤�����������ʤ���? �Ȥ���ȡ� | |
2221 ��äѤ����Ԥ�... | |
2222 | |
2223 | |
2224 extern �ȡ������Ǥʤ���ΤȤθƽФ��ƽФ��λ����� | |
2225 ���̤��ʤ��Ȥ����ʤ�����������prototype ���������Ƥ��� | |
2226 ��Τ� default extern �ζ��̤ϡ��ǽ��λ����Ǥ���Ƚ�̤Ǥ��ʤ��� | |
2227 �Ǥ��ʤ���͡��������Ƥʤ���Τ� default extern �ʤ�����顣 | |
2228 �äƤ��Ȥϡ��Ǹ�ˡ�.set ��������뤷���ʤ�����(sigh...) | |
104 | 2229 |
2230 Mon Mar 17 14:34:12 JST 2003 | |
2231 | |
2232 �����ȡ�input register �� regv/regs �åȤ��ʤ��Ȥ��ᡣ | |
2233 �ؿ��ƤӽФ��ΰ�����ɾ���������� save ����ɬ�פ����롣 | |
2234 ����ˡ�������ɾ���θ�ˡ�save ���줿�ѿ���ƤӽФ�ɬ�פ� | |
2235 ���롣(�äƤ��Ȥϡ����ޤޤǤΤϡ��ޤä����ΤǤ���ᤫ..) | |
2236 | |
2237 register �ѿ��ξ��ϡ�����ʤ����äƤ��Ȥϡ�ia32 ¦�� | |
2238 �ѹ����Ƥ��ޤä��Τǡ����������ʤäƤ���͡���äȤ⡢ | |
2239 code �ξ��ϡ���������save�Ȥ���ɬ�פʤ������ɤ��Τ��� | |
2240 | |
2241 (11���ܤ�...) | |
2242 | |
2243 mr creg,hoge | |
2244 mr hoge2,creg | |
2245 | |
2246 �Ȥ��ϡ�g_expr_u �Ǻ�Ŭ������٤���set_freg/set_creg �ǥ쥸 | |
2247 �����ѿ��˳�꿶��ȡ�set_freg ��free����Ƥ��ޤ��� | |
2248 | |
2249 ��ư����������ζ�ͭ�Ϥ�ä������ɤ�? | |
2250 | |
2251 input register ��save��˺��Ƥ��롣 | |
2252 input register �γ������ս硣 | |
105 | 2253 |
2254 Mon Mar 17 23:38:14 JST 2003 | |
2255 | |
2256 ��������������input-register �Υ��ɥ쥹���ä��Ȥ��ϡ� | |
2257 �����LVAR���Ѥ��ʤ��Ȥ��ᡣ | |
2258 | |
2259 �ʤ�����ɡ������ʬ���äƤ⡢loop ��������뤳�Ȥ�����Τǡ� | |
2260 ���٤�Ǥ����Ȥ������Ȥϡ�one path �ǤϤǤ��ʤ��͡� | |
2261 | |
2262 �थ... function call �� save_input_register ��Ʊ���ּ��٤�� | |
2263 �����꤬����Τ͡�function argument �ϡ����Ǥ� parse ����� | |
2264 ���ơ����ΰ����ϡ�register �˸��ꤵ��Ƥ��ޤäƤ��롣 | |
2265 save_input_register �ǡ�save ���륳���ɤ�Ф��Ƥ⡢ | |
2266 �������褦�ˤϽ���Ƥʤ���(�ɤ�����Ф������?) | |
2267 | |
2268 function call����Ƭ�ǡ�����������stack��save���Ƥ��ޤ��С� | |
2269 ���Τ����������ϲ�褹�롣���ɡ�����ޤ�ʵ��⤹��͡� | |
2270 �Ǥ⡢stmw ��Ȥ��뤷��... | |
2271 | |
2272 ��ɡ�input_register �ϡ�LVAR �Τޤ������ơ���ǽ�ʤ�� | |
2273 register ��Ȥ��ä�����������ʤ����ʤ�.... �Ǥ⡢ | |
2274 ��������ȡ����ޤǽ������ɤϡ��ۤȤ��̵�̤���... | |
2275 | |
2276 ������ˤ��衢����ޤ��ñ�ʲ��Ϥʤ��͡� | |
2277 | |
106 | 2278 Tue Mar 18 10:46:48 JST 2003 |
2279 | |
2280 ��ɡ����� stack ��save ���ޤ�������������С��ѹ���1�ԡ� | |
2281 | |
2282 ��äѤꡢ�ؿ����Τ�ʸ�ڤ���Ƥ���gexpr����٤�����͡� | |
2283 ���켫�Τϡ�����ʤ����ʤ����� | |
108 | 2284 |
2285 Tue Mar 18 12:41:42 JST 2003 | |
2286 | |
2287 COND(����黻��)�ǻȤ��쥸�������ؿ��ΰ������˲����Ƥ��ޤ��� | |
2288 input register �ˤʤ�ʤ��ͤ�Ȥ����ɤ�������ɡ�r15 | |
2289 ��ȤäƤ��������ɡ�����Ǥ�����? | |
2290 | |
2291 virtual ��ȤäƤ����Ȥ��ϡ�use_register �Dz����˲�����ʤ��ä� | |
2292 ������ɡ��Ȥ�ʤ��Ȥ���ȡ��빽�˲�����Ƥ��ޤ����ʤΤǡ� | |
2293 ����äȱ��ο������꤫��͡�����黻�Ҥη��ϥ����å����Ƥʤ��ä����� | |
2294 | |
2295 �ޤ�������ϡ�����쥸������Ȥ����ɤ��Ȥ���... | |
2296 | |
2297 �����ƤӽФ���u2d �Ȥ� bcopy �Ȥ����˲������input �쥸���� | |
2298 �Ϥɤ�����? ����ϡ�ͽ¬�Ϻ������͡��Ȥ�ʬ����save����ä� | |
2299 ������⤢�뤱�ɡ��������ɤ����褦... ���ФǤ���褦�ˤ���� | |
2300 �Ƥ�����⤢�롣(�ȡ��פä��顢get_register_var ���ְ�äƤ� | |
2301 ��ߤ�����) ���ФϤ���äȽŤ��������Υ��르�ꥺ��ϡ����� | |
2302 ��Ȥ������ʤ����Ȥ��äƤ⡢�����ˤʤ���������ƽ�¦��save | |
2303 ����? bcopy ���ɤ줯�餤�Ȥ�������ۣ�档 | |
2304 | |
2305 ��ä��Ѷ�Ū��get_register_var ����äƤ�����⤢���͡��� | |
2306 ������С����ޤ굤�ˤ��뤳��̵�� library call �Ǥ��롣(���� | |
2307 �äȡ�������¿����...) ���������ڤ��ʡ��Ȥ��쥸������ | |
2308 �餽���Ȼפ��ȡ�����ϸ��Ф���Τȡ�����ۤɺ��Ϥʤ��櫓���� | |
2309 | |
2310 ���Τ�����ʸ�ڤ��������äƤ���в��Ǥ�������ʡ� | |
2311 | |
2312 �����ޤ��ޤ������ʡ� | |
2313 | |
2314 �ؿ����ؿ��ƤӽФ��Ƿ�ޤ���� input register ���˲���ͤ��� | |
2315 �ޤ���Ǥ���������⡢�ɤ�����Ф������... �ޤ���get_register_var | |
2316 ����Τ���ñ����͡� | |
2317 | |
2318 save register �����äƤ���褦���͡�max_register_var ������? | |
110 | 2319 |
2320 Wed Mar 19 02:22:51 JST 2003 | |
2321 | |
2322 �ʤ������struct ��tag list����int a,b,c; �Τ褦�ˤʤäƤ���Τ� | |
111 | 2323 ��Ĥȿ����Ƥ���餷�������ä���Τ������˸��ä��Τ������ |
2324 �������褦�� | |
2325 | |
2326 macro �ΥХ��⸫�Ĥ�����ä���... �थ�� | |
2327 | |
2328 �Ǥ⡢�Ȥꤢ������a.out ��ư���ޤ����� | |
2329 | |
2330 Wed Mar 19 12:59:01 JST 2003 | |
2331 | |
2332 �ʤ���ư��������printf�˰����Ϥ��Ȥ��ϡ�rn�쥸�����ˤ� | |
2333 �ͤ�Ƥ��ơ������⡢���ä���ߤ����͡�����ϡ� | |
2334 ���ɤ�����.... | |
2335 r4,r5 ... f1 | |
2336 r6,r7 ... f2 | |
2337 r8,r9 ... f3 | |
2338 f4 �����ñ�� | |
2339 (�������ʤ�����ϰ۾�ˤ��ɤ�������... ����ʤ��Ȥ���ʤ� | |
2340 f0 ���� r0 �˥��ԡ������Ƥ�...) | |
2341 | |
2342 40(r1)�Ȥ���printf�ϡ��ɼ�ˤ֤ä��魯�褦�Ǥ��͡����ä��� | |
2343 �ɤ���������ɤ��������? | |
2344 | |
2345 -112 ���餤? ����-72���٤��� | |
2346 | |
2347 (�ʤ����٤Ҥ���... ���⤬����Ȥ����Τ�...) | |
2348 | |
2349 ��ư�������ΥХ����Ĵ�˼��Ƥ��ޤ��� | |
112 | 2350 |
2351 �ʤ�save_stack ��;�פ�save���Ƥʤ�? | |
2352 �ޤ�������ѿ����ɤ��Ȥ��Τ�free list���ä������ɤ�����͡� | |
113 | 2353 |
2354 �������������黻�Υ����å���ɬ�פ��ʡ� | |
114 | 2355 |
2356 Thu Mar 20 12:06:27 JST 2003 | |
2357 | |
2358 �ޤ���save �����쥸�������˲����Ƥ���ʡ� | |
2359 set L_98,244 | |
2360 stw r15,lo16(-44+L_98)(r1) | |
2361 ���餤�ǡ��⤦������㤦�ߤ������äƤ��Ȥϡ�L_98 ����ä� | |
2362 �礭���ʤ��ȥ���ʤΤ��� | |
2363 | |
2364 | |
116 | 2365 Thu Mar 20 23:43:42 JST 2003 |
2366 | |
2367 �褦��äȡ�self compile ���̤ꤽ����register save �Ϥ� | |
2368 ��äѤ����ߤ������͡�dynamic loader ��������ꤹ�뤷�� | |
2369 | |
2370 ����mod�����������ߤ����ǡ�hash���ͤ��㤦�餷�����ޥ��ʥ����� | |
2371 �ˤʤ�unsigned�Τ������ͤ���int.c ��recursion���̤�ʤ��� | |
2372 �ޤ���offset �����������餷���� | |
2373 | |
2374 macro �ΥХ���Ȥ줿���� | |
2375 | |
2376 ����ϡ�self compile ���̤�ޤ����� | |
2377 | |
2378 Fri Mar 21 03:18:26 JST 2003 | |
2379 | |
2380 ��äѤꡢr1 �� x(r30) �η������ʤ������äȡ� | |
2381 �ƽ�¦�ǡ�������ʬ��offset ���Ѱդ��Ƥ���Τ������� | |
2382 �����顢�ɤ줯�餤�ΰ����δؿ���ƤӽФ������Ȥ��� | |
2383 �ͤ�����ΤǤϤʤ���? | |
2384 | |
2385 | |
117 | 2386 Fri Mar 21 12:22:11 JST 2003 |
2387 | |
2388 <------r1_offset------------------------------> | |
2389 <------------lvar_offset-------> | |
2390 r+ +------------+---+---------------+----------+--------------+----+ - | |
2391 caller arg xx register save local callee arg xx | |
2392 reg_save disp max_func_args*size_of_int | |
2393 | |
2394 �Ȥ������Ȥ��ä��ߤ����͡��褦��ä� self compile ���̤�ޤ����� | |
2395 | |
2396 free_glist ���뤫.... | |
119 | 2397 |
2398 Sat Mar 22 11:17:41 JST 2003 | |
2399 | |
2400 creg/freg �� g_expr �ΰ����ˤ����������쥸�����ޥ���ϤǤϡ���ľ�� | |
2401 �ߤ�������������С� | |
2402 ## conv->static_(); | |
2403 addis r15,r31,ha16(_conv-L_242) | |
2404 la r15,lo16(_conv-L_242)(r15) | |
2405 lwz r3,0(r15) | |
2406 lwz r3,244(r3) | |
2407 mr r29,r3 | |
2408 mtctr r29 | |
2409 �ߤ����� mr �ϸ���͡���äȤ��̿������ɤ���3% �⤢��ߤ����� | |
2410 ����ä�¿����... 386 �Ǥ� use_register ��ʤ��ʤ뤷�ʤ��� | |
2411 (�������Ǥ���Ⱦ�ϥݥ�����å�����ʡ����ä���ľ������ | |
2412 ��ñ��) | |
2413 | |
2414 �ޤ�������������Ŭ���ʤ��äƤ����Τ������Υ���ѥ����Ω�� | |
2415 �ʤ櫓�����ɡ� | |
2416 | |
2417 | |
2418 ��¤�Τΰ����Ϥ��Ǥϡ���¤�Τ��Τ�Τ�쥸�����˺ܤ��� | |
2419 �����Ϥ��Ƥ���ߤ������͡��ޤä���... ����ǡ�����Ƥ� | |
2420 ������������Ƥ���櫓���� | |
2421 | |
2422 �ʤ� mtctr r2; bdn Lxx �Ȥ������Τ�����Τ͡�main frame �äݤ�! | |
2423 ����ϥ٥���ޡ����Ѥäƴ������͡� | |
2424 | |
2425 | |
2426 Sun Mar 23 16:06:29 JST 2003 | |
2427 | |
2428 Breakpoint 3, get_register () at mc-code-powerpc.c:235 | |
2429 235 for(i=MAX_TMP_REG;i>MIN_TMP_REG;i--) { | |
2430 (gdb) c 9999 | |
2431 Will ignore next 9998 crossings of breakpoint 3. Continuing. | |
2432 test/basic.c:67:Bug of compiler | |
2433 | |
2434 Breakpoint 2, errmsg () at mc-parse.c:214 | |
2435 214 if(lineno==0) return; | |
2436 (gdb) info b | |
2437 Number Type Disposition Enabled Address WhatStackFrame Condition IgnoreCount Commands | |
2438 2 breakpoint keep y 0x0000ca08 in errmsg at mc-parse.c :214 | |
2439 breakpoint already hit 1 time | |
2440 3 breakpoint keep y 0x000028e4 in get_register at mc-code-powerpc.c :235 | |
2441 breakpoint already hit 69 times | |
2442 ignore next 9930 hits | |
2443 (gdb) run | |
2444 The program being debugged has been started already. | |
2445 Start it from the beginning? (y or n) y | |
2446 Starting program: /Users/kono/src/device/mc -s test/basic.c | |
2447 [Switching to process 24650 thread 0x2307] | |
2448 test/basic.c:67:Bug of compiler | |
2449 | |
2450 Breakpoint 2, errmsg () at mc-parse.c:214 | |
2451 214 if(lineno==0) return; | |
2452 (gdb) c 69 | |
2453 | |
2454 ���ޤ�������͡� | |
2455 | |
2456 a+a+a....a ������Ƥ��ޤ����ޤ��ͤ��� | |
124 | 2457 |
2458 ��ɡ�stack frame �����꤫�� | |
2459 | |
2460 Mon Mar 24 03:06:32 JST 2003 | |
2461 | |
2462 Intel ¦�ˤ������ embug ���Ƥ��ޤä��褦���� | |
2463 | |
2464 basic�Ȥ�float������٤�夲��������? | |
125 | 2465 |
2466 mc-code-power.c ��lvar �ϡ� | |
2467 input arg > 0 | |
2468 local var < 0 | |
2469 output arg > ARG_OFF | |
2470 �Ȥ���٤����͡� | |
2471 | |
2472 Mon Mar 24 12:08:43 JST 2003 | |
2473 | |
2474 addi r27,r1,56 | |
2475 addi r29,r28,28 | |
2476 mr r3,r27 | |
2477 mr r4,r29 | |
2478 li r5,372 | |
2479 bl L_memcpy$stub | |
2480 lwz r4,0(r28) | |
2481 lwz r5,4(r28) | |
2482 lwz r6,8(r28) | |
2483 lwz r7,12(r28) | |
2484 lwz r8,16(r28) | |
2485 lwz r9,20(r28) | |
2486 lwz r10,24(r28) | |
2487 mr r3,r28 | |
2488 bl _main3 | |
2489 | |
2490 | |
2491 �����ࡢ������ۡ��ǽ��28byte�����쥸�����Ϥ��ʤΤ������ɥ쥹 | |
2492 ���Ѥ��ʤ���Ǥ��礦���ɡ��ޤ�����碌�ʤ��ƤⳲ��̵�����ɤ��� | |
2493 ���Τ����͡�(����ʤ�����̵����... �ޤ���function ��ʣ�� | |
2494 ����ˤʤ��) ��������ư�������쥸������Ȥ��Ȥ�����ʤ�ʤ��� | |
2495 �ɤ��ä����⡣ | |
2496 | |
2497 | |
126 | 2498 stwu r1,lo16(-L_9)(r1) |
2499 �Ȥ����Ƥ��뤫�顢�ɽ��ѿ���64k����äƤ��Ȥ��͡�ha���Ƥ⤤��������ɤ��� | |
2500 | |
2501 Mon Mar 24 17:07:59 JST 2003 | |
2502 | |
2503 ���ơ��褦��ä� fact-a.c �˼��ݤ����櫓�����ɡ����Τޤޤ��ȡ� | |
2504 input register -> ����ؤ�save | |
2505 �äƤΤ���������͡�����Ϥ��������ʤ���sub routine call ����ȡ� | |
2506 r0-r10 ���˲�������㤦�����Ȥ������Ȥϡ�code segment �ΰ����ϡ� | |
2507 r29-r20 ���ɤ���ʤ���? ��ư������f31-f20��ޤ�ơ� | |
2508 | |
2509 ����ϡ��ɤ���input register ����ꤹ�뤫�����ɡ�get_input_register_var | |
2510 �� code �Ѥ��ɤ�������ꤹ��Τ��ɤ����ʡ�fnptr �Ǥϥ���ʤΤ��������� | |
2511 �����ɤ��������� | |
2512 | |
2513 r31, r1 �����꤬����ΤϤ������ޤ���r1=r30�Ǥ��ä������ɤ��Τ�������? | |
2514 ��������function calll �λ����ѹ������ʤ��������� | |
2515 | |
2516 �����input register (���ξ���r29-r20,f21-f20������)���б��� | |
2517 �ɤ�����? �̾���ȸƽ�¦�����ݤ���櫓�����ɡ������Ϥ����ʤ��͡� | |
2518 �쥸������save����ɬ�פ�̵�����顢����������ñ�Ǥ�������� | |
2519 | |
2520 ���Ȥϡ�return/environment �ΰ��������ɡ�ia32 �����Ǥ⤤������ | |
2521 ư���ʤ��ʤäƤ���褦���ʡ� | |
2522 | |
2523 Mon Mar 24 21:56:47 JST 2003 | |
2524 | |
2525 �������̤˥ե졼����Ѥ��ʤ��ǡ����ΤޤޤǤ������� | |
2526 ���������ڤ���͡�return ���褦�Ȼפ��Ȥ������� | |
2527 frame �������ʤ��Ȥ����ʤ����ɡ�return �� | |
2528 �̽������������顢����ʤ����� | |
2529 | |
2530 Wed Mar 26 14:29:21 JST 2003 | |
2531 | |
2532 �ǡ��ե졼����Ѥ��ʤ��Ȥ���ȡ� | |
2533 | |
2534 <------r1_offset------------------------------> | |
2535 * <------------lvar_offset-------> | |
2536 r+ +------------+---+---------------+----------+--------------+----+ - | |
2537 callee arg xx register save ! local caller arg xx | |
2538 reg_save disp max_func_args*size_of_int | |
2539 lvar>0 lvar<0 lvar>0x1000 0000 | |
2540 | |
325 | 2541 �ʤΤǡ�r1/r30 ���˰�ư������ɬ�פ����롣����code segment/ |
126 | 2542 function ���ɤ���r1/r30����äƤ��������Τ���ʤϤʤ��Τǡ� |
2543 jump �����������Ȥ��᤹ɬ�פ����롣r30������ʤ��r1�Τߤ� | |
2544 �������ɤ��������᤹ɬ�פϤʤ��� | |
2545 | |
2546 �Ǥ⡢r1_offset ʬ���᤻���ɤ������ʤ�����顢r30�� * �˸��� | |
2547 ���Ƥ��ɤ���ʤ���? ! �Ǥ⤤��������ɡ����ä���������ñ | |
2548 ����? code �ξ��� register_save �� 0 (�Ĥޤꡢ�ޥ��ʥ�)�� | |
2549 �櫓�����顣(�ޤ�������Ƥ����Ƥ��ɤ�����) | |
2550 | |
2551 Intel �ξ��Ϥɤ����ơ��������ʤ��ä��Τ�? (�Ǥ⡢�Ǹ�˥����å� | |
2552 �������ˤ�core dump���Ƥ�����...) | |
2553 | |
2554 ebp <-----esp-----------> | |
2555 <------r1_offset------------------------------> | |
2556 * <------------lvar_offset-------> | |
2557 r+ +------------+---+---------------+----------+--------------+----+ - | |
2558 callee arg xx register save ! local caller arg xx | |
2559 reg_save disp max_func_args*size_of_int | |
2560 lvar>0 lvar<0 lvar>0x1000 0000 | |
2561 | |
325 | 2562 �Ȥ����櫓�ʤΤǡ�* �ˤ����������� Intel �ǤȤ���פ��롣 |
2563 �äƤ��Ȥϡ�ebp �ΰ�ư�� Intel �Ǥ��äƤ����äƤ���? | |
126 | 2564 ����function�ǤϤ����ʤäƤ��������ɡ�code �Ǥϰ㤦�� |
2565 | |
2566 | |
2567 ebp <-----esp-----------> | |
2568 <------r1_offset------------------------------> | |
2569 * <------------lvar_offset-------> | |
2570 r+ +------------+---+---------------+----------+--------------+----+ - | |
2571 callee arg xx register save ! local caller arg xx | |
2572 reg_save disp max_func_args*size_of_int | |
2573 lvar>0 lvar<0 lvar>0x1000 0000 | |
2574 | |
2575 �äƤ櫓�����Ȥ���� powerpc �Ǥϡ� | |
2576 | |
2577 r30 <------r1_offset------------------------------> r1 | |
2578 # * <------------lvar_offset-------> | |
2579 r+ +------------+---+---------------+----------+--------------+----+ - | |
2580 xx callee arg zz register save ! local caller arg zz | |
2581 reg_save disp max_func_args*size_of_int | |
2582 lvar>0 lvar<0 lvar>0x1000 0000 | |
2583 | |
2584 ��#��r30����ꤷ��r1�餹���Ȥˤʤ롣��äѡ����ä�����͡� | |
2585 zz �Ϥ��顣xx �ˡ�base �Ȥʤ�ؿ��ƤӽФ�����롣���顢 | |
325 | 2586 callee arg ���˲�����롣 |
126 | 2587 |
2588 �ɤä����ǽ���ʡ�ξ����������? ��äѤ��Ԥ��餫�ʡ�gcc �� | |
2589 ���Ԥ�������ñ�������� | |
2590 | |
2591 �����ѿ���쥸�����˳�꿶�äƤ��ޤ��ȡ������ϰϤǤ� | |
2592 ��ñ��ư���Ƥ��ޤ���(����㡢������...) | |
2593 | |
2594 goto with environment �ǹ�¤�Τ��֤��Τˤ����դ�ɬ�ס� | |
2595 �ɤ��ǥ��ԡ�����? goto �������? return-continuation? | |
2596 �����ͤ���return-continuation ¦�����̤Ǥ��礦�������� | |
2597 �Ǥ��֤���ϸ��δؿ��ƤӽФ��ΰ����������������ä� | |
2598 ���뤫��͡������顢�ȤäƤ��������������ɤ��櫓�͡� | |
127 | 2599 |
2600 (�ʤ� -O3 �ˤ���ȡ�mc1 ��������...) | |
2601 | |
2602 Sat Mar 29 16:35:18 JST 2003 | |
2603 | |
2604 r30 <------r1_offset------------------------------> r1 | |
2605 # * <------------lvar_offset-------> | |
2606 r+ +------------+---+---------------+----------+--------------+----+ - | |
2607 xx callee arg zz register save ! local caller arg zz | |
2608 reg_save disp max_func_args*size_of_int | |
2609 lvar>0 lvar<0 lvar>0x1000 0000 | |
2610 | |
2611 ���Τޤޤ��ȡ�* �� previous r1/r30 �ˤʤ�Τǡ�function ���� | |
2612 goto �������������Ϥ�zz�ˤ���Ϥ���saved r31/r30���˲������ | |
2613 ���ޤ�������ϡ�����äȺ���Ȥ������Ȥϡ���ö��dummy subroutine | |
2614 (���̤�stub �äƤ�����)��ƤӽФ������ɤ�? ������Ϥ�previous r1/r30 | |
2615 �ϻ����⤤�Ƥ���櫓������... �ޤ���r20-r29�ϤĤ֤���Ƥ��ޤ� | |
2616 �Τǡ�����ä�save����ɬ�פ⤢�롣f31-f20�⡣(�빽¿����...) | |
2617 | |
2618 # * r30 <--------------r1_offset-----------> r1 | |
2619 r+ +--+----------+----------+-----------+----------+----+ | |
2620 xx zz reg save !callee arg!code local caller arg xx | |
2621 r20-r29 | |
2622 | |
2623 ������� environment �ϻ�������ɬ�פϤʤ�? ���䡢����? | |
2624 �դ�������Ϥ��������ɬ�פϤʤ��ʤ�櫓�͡����ä��� | |
325 | 2625 �������줤���ʡ�goto-continuation �ߤ����ʴ������� |
127 | 2626 |
2627 �֤�¦�ϡ� | |
2628 | |
2629 lwz r1,continuation | |
2630 lwz r1,0(r1) | |
2631 lwz r0,8(r1) | |
2632 mtlr r0 | |
2633 lmw r30,-8(r1) | |
2634 blr | |
2635 | |
2636 ���٤��ɤ�? ����r30�äƤΤ�goto��Ǥ��Τ����ʤ������䡢�ԤƤ衢 | |
2637 ���ξ��ϡ�r20-r29�äƷ�ޤäƤ���櫓���� | |
2638 | |
2639 lwz r1,continuation | |
2640 set r3/f1 as a return value | |
2641 lwz r1,0(r1) | |
2642 lwz r0,8(r1) | |
2643 mtlr r0 | |
2644 lmw r20,-148(r1) (?!) | |
2645 blr | |
2646 | |
2647 ���ɤ��櫓������ʸ��Ʊ����return address��̵�뤹�뤳�Ȥˤ��뤫�� | |
2648 �ƽ�¦�ϡ� | |
2649 | |
2650 �̾�δؿ��ƤӽФ� (����0) (�ϡ����0������..) | |
2651 bl L_stub_NN | |
2652 L_return: (���̤�retrun�⤢�뤫�顢ɬ�פʾ�礬����) | |
2653 lwz r1,0(r1) | |
2654 lwz r0,8(r1) | |
2655 mtlr r0 | |
2656 lmw r20,-8(r1) | |
2657 blr | |
2658 L_stub_NN: | |
2659 mflr r0 | |
2660 bl L_61 | |
2661 L_65: | |
2662 lwz r1,0(r1) | |
2663 lmw r23,-108(r1) | |
2664 b restFP+36 ; restore f23-f31 | |
2665 L_61: | |
2666 stmw r23,-108(r1) | |
2667 stw r0,8(r1) | |
2668 b saveFP+36 ; save f23-f31 | |
2669 | |
2670 ����ä�ʣ�������뤫�ʡ��ä� gcc �Ǥϡ������������������⡣ | |
2671 | |
2672 ������������register save�ϡ�����y�ؿ����ƤӽФ��줿������ | |
2673 ��äƤ��ޤ����ɤ������������ɬ�פʤ���������Ϥ���� xx | |
2674 �����äƤ��롣����͡� | |
2675 | |
2676 * goto��ƤӽФ����ؿ���r1 ! r1(goto����r1) | |
128 | 2677 # * r30<--r1_offset-------------> r1 |
127 | 2678 r+ +----------+--+----------+----------------+-----------+----------+----+ |
2679 cousin arg xx reg save !callee arg !code local caller arg xx | |
2680 r20-r29 lvar>0 lvar<0 lvar>0x1000 000 | |
2681 f20-f31 <-my_func_args--><--disp-----><-max_func_arg-> | |
2682 *size_of_int *size_of_int | |
2683 | |
2684 �Ȥ���� stub ��ɬ�פʤ���cousin arg ����¸����Ƥ��롣goto �� | |
2685 �����Τߤ�local�ѿ���������dz�Ǽ����롣����ǡ�original | |
2686 ��IA32�����Ȱ��פ��뤳�Ȥˤʤ롣(��������¸������ơ����䡢 | |
2687 ���Τ���¸����Ƥ����ʤ���?) | |
2688 | |
2689 ����ǡ�code segment ����ؿ��ƽФ�����Ȥ���? (�äƤ��Ȥϡ� | |
2690 ����褦�Υƥ��Ȥ�ɬ�פʤ櫓��...) | |
128 | 2691 |
2692 Wed Apr 2 17:40:32 JST 2003 | |
2693 | |
2694 register �ѿ������˻Ȥ��Ƥ��Ƥ⡢�虜�虜save����ɬ�פϤʤ��� | |
2695 ��ä���ʤ����顣register ��Ȥä����Ȥˤ���ˤϡ�used_max_register_var | |
2696 �����ꤷ�Ƥ����ɤ��� | |
2697 | |
325 | 2698 Intel�Ǥ� goto ��ư���ʤ��ʤä��Τϡ�arg_offset ����register �ѿ�ʬ |
128 | 2699 ����褦�ˤʤä����顣save ���뤳�Ȥ�ͤ���ȡ����������ɤ����ºݡ� |
2700 function call �������save����Ƥ��ޤ����Ȥ������Ȥϡ��̤� r20-r29 | |
2701 �Ǥ���ɬ�פϤʤ��äƤ��Ȥ����̾��input register var���ɤ����Ȥ���ȡ� | |
2702 register�ѿ���save����ɬ�פ�ʤ��͡� | |
325 | 2703 ������input register var �ϡ�function call�����ˤ� save����ɬ�פ� |
128 | 2704 ���롣�Ǥ⡢����ϡ���äѤ���٤줫���äƤ��Ȥϡ���äѤꡢ |
2705 r20-r29���ɤ��äƤ��Ȥ��� | |
2706 | |
2707 jump() �Ǥϡ��ƽФ������ϡ�-arg_size �Ĥޤꡢ�ɽ��ѿ��� | |
2708 Ʊ�������ˤʤäƤ��롣�äƤ��Ȥϡ� | |
2709 | |
2710 * goto��ƤӽФ����ؿ���r1 ! r1(goto����r1) | |
2711 # * r30<----r1_offset---------> r1 | |
2712 r+ +----------+--+----------+----------------+-----------+----------+----+ | |
2713 cousin arg xx reg save !callee arg !code local caller arg xx | |
2714 r20-r29 lvar >0 lvar<0 lvar>0x1000 000 | |
2715 f20-f31 <-my_func_args--><--disp-----><-max_func_arg-> | |
2716 *size_of_int *size_of_int | |
2717 | |
2718 r1 <----------------------r30 (return continuation) | |
2719 | |
2720 �ǡ�callee arg ����¸���줿�ޤޡ�code local �����Ѥ��äƤ��Ȥ��͡� | |
2721 | |
2722 return continuation �ǡ���¤�Τ��֤����Ȼפ����������⤽�⡢ | |
2723 ��ư�����������������֤�Τ�? | |
130 | 2724 |
2725 Thu Apr 3 13:47:23 JST 2003 | |
2726 | |
2727 r1 �� stack top ����¸���Ƥ����Τ��Τޤ�environment | |
2728 �Ȥ����Ϥ��Τ��ɤ��� | |
2729 | |
2730 stack ��Υǡ�����64kbyte�ʤΤ����¤��������ޤ��� | |
2731 | |
2732 �Ȥ����櫓�ǡ�powerpc �Ǥ� CwC �ϤǤ������ꡣ | |
2733 | |
2734 return continuation �Ǥι�¤�Τΰ��Ϥ� | |
2735 function ��prototype�Ǥν�ʣ���������ξ�ά | |
2736 | |
2737 �����꤬���ޤ����ƥ��Ȥ��Ƥ��ʤ������ȡ� | |
2738 | |
2739 �ؿ�ñ�̤Ǥι�ʸ�ڤκ��� | |
2740 ����Υե졼�¤�κ����ѥС������ | |
2741 | |
2742 �����ǤϤ��롣 | |
2743 | |
2744 | |
2745 Fri Apr 4 10:41:22 JST 2003 | |
2746 | |
2747 ����������-O3 �ˤ���ȡ�mc-codegen.c �� arg_register �� | |
2748 r14 �ޤǻȤ��衣����ϡ��ޤ�����Ǥʤ�����? ���ä��ʤ��� | |
131 | 2749 |
2750 Mon Apr 7 14:29:51 JST 2003 | |
2751 | |
2752 ���������С�unsigned char �Ͻ������Ƥ��? crgvar �Ϥ��뤱�ɡ� | |
2753 curgvar �Ȥ��Ϥʤ��ߤ��������ɡ� | |
2754 | |
2755 ���ȡ�-1.0 �Ȥ��� d2i �Ȥ�����������Τ�ľ���Ƥʤ���Ǥʤ�����? | |
2756 | |
2757 MIPS �����̿��ϡ� | |
2758 | |
2759 beq $2,$3,$L18 | |
2760 | |
2761 slt $2,$2,$3 | |
2762 bne $2,$0,$L17 | |
2763 | |
2764 �Ȥ��������ʤ櫓�͡�(signed less than ��?) | |
2765 | |
2766 ���Ȥ���Ⱥ�����ˡ�ǤϤ��ޤ��ʤ����⡣ | |
2767 | |
2768 PS2Linux�Υ�����֥餬��ǽ�����ơ�forward reference ������ | |
2769 ��褷�Ƥ���ʤ����ɤ�����㤤�����? | |
2770 | |
2771 .include ��Ȥ����ɤ��餷����(����ʤ�Ǥ����Τ�?!) | |
2772 | |
325 | 2773 csvalue() �Ǽ�ä��褿register��ï��free�����? |
132 | 2774 |
2775 Tue Apr 8 14:52:06 JST 2003 | |
2776 | |
2777 MIPS�ˤ� bgez �Ȥ� bgtz �Ȥ�����̿�����Τ͡��ʤ� | |
2778 �Ȥ����? �Ȥ��뤱�ɤ������Υ���ѥ���ǻȤ���ˡ��? | |
2779 | |
2780 gcc����ư�������쥸��������褦�˥���ѥ��뤷�Ƥ��� | |
2781 �Τϲ��Τ�����? �٤�����? jal dcmp �Ȥ��ϡ���äѤ��ѡ� | |
2782 | |
2783 double �� float �κ����ɤ��狼��ʤ��� | |
2784 | |
2785 Wed Apr 9 16:20:00 JST 2003 | |
2786 | |
2787 LOR LAND ������ΰ������ɲ� | |
2788 | |
2789 ����ν��������뤫�顢�ѿ�*������餤��h��Ŭ���� | |
2790 ���줿�����ɤ����⡣���������쥸�����⾯�ʤ��Ȥ����� | |
2791 (�ޤ�?) | |
2792 | |
2793 ���ȤǻȤ��褦�ˡ��ޤ�����Ŭ���������Τ�ɬ�פ��ʡ� | |
2794 | |
2795 MIPS����ư�������äƤ���single precision ����������̿� | |
2796 �ʤ�? dpsub �Ȥ���ƤӽФ��ΤäƤ��������ʤ�? (�ޤ��� | |
2797 ����������ɤ�) | |
2798 | |
133 | 2799 Fri Apr 11 14:36:33 JST 2003 |
2800 | |
2801 (�������...) | |
2802 | |
2803 �פ���ˡ� | |
2804 ��ư�������쥸������ single float �����Ȥ��ʤ� | |
2805 double �ϡ����٤ơ����ѥ쥸�������֤������Ϥ��٤ơ� subroutine | |
2806 �äƤ��Ȥ���͡�(������������) | |
2807 | |
2808 single float �����Ǥα黻��Ƴ�����뤿��ˤϡ�DSUB��¾��FSUB | |
2809 �ʤɤ�Ƴ������ɬ�פ����롣����ϡ֤������ס��Բ�ǽ����ʤ��� | |
2810 �ɡ����ʤ���ɤ������͡���ư����������������⤢�뤷������ | |
2811 double ���Ѵ����Ƥ�������������ʤ����ȸ����ȡ�����ʤ� | |
2812 �ȤϤʤ��櫓����������ơ���ư�������쥸������Ǥα黻�� | |
2813 �ʤ�subroutine�Ϥʤ���? (���뤫���Τ�ʤ�) | |
2814 | |
2815 �ޤ��ʤ���FCOMP�Ȥ����Ф��������ʤ�����ɡ� | |
2816 | |
2817 Sat Apr 12 13:30:07 JST 2003 | |
2818 | |
2819 jal dpadd �ϡ���äѤꡢ���ʤ�ʣ������ư�������黻���Ȥ����� | |
2820 �狼�ä���IEEE�η����ȹ��ʤ��Ȥ��Ȥ��Ǥ����ʤä���ʤ� | |
2821 ������? ��äȤ⡢PlayStation �˹�碌�Ƥ���Τ����Τ�ʤ��� | |
2822 �ɡ� | |
2823 | |
2824 �Ȥ������Ȥǡ�single float ��������ʤ��ȡ���Ȥ�gcc �Ȥ� | |
2825 �����礭������������Ȼפ����äƤ��Ȥϡ�fmachineop �Ȥ� FSUB | |
2826 ������ʤ��Ȥ���äƤ��Ȥ����ޤ������С����������ʤ�����ɡ� | |
2827 ¾��CPU�Ȥ�Ĵ��ʤ�... | |
2828 | |
2829 ���ϡ�float �α黻��pipeline��Ǥ�1clock�ʤ���������顢 | |
2830 �Ǥ����double �Ǥ�ä��ߤ������ɤ͡��ȤϤ�����double/float | |
2831 ���Ѵ������פˤʤ�Τǡ�float base ����MIPS������®�� | |
2832 �äƤ��ȤˤϤʤ뤫���Τ�ʤ��� | |
2833 | |
2834 gdb ��disass ��ȡ�jal bpadd �Ȥ�������쥸���� | |
2835 ��Ȥä����������ˤʤäƤ���餷�����ޤ���disass �� | |
2836 �쥸����ɽ������ | |
2837 | |
2838 $a0 $a2 $a3 $at $f0 $gp $ra $s0 $s1 $sp $t9 $zero $v1 $f12 $at | |
2839 | |
2840 �Ȥ��ʤΤǡ��褯�狼����ޤä���Τ�������⡢ | |
2841 ����äȻ��֤�����Τ���? | |
2842 | |
2843 | |
2844 �ޤ����ʤ�... ANSI-C �˽������Ȼפ��ȡ����Τ������float/double | |
2845 �Ϥ��äȤ�������͡��Ǥ⡢�Ȥꤢ����ư�����ɤ�? | |
2846 | |
2847 expr �ΰ����Ȥ��ơ�output type�פ�����뤫? ����Ū�ˤ� assign | |
2848 �Ƿ�ޤ�type���᤹�롣��äѤꡢC �ε��ʽ����������ʤ��� | |
2849 (����Ϸ�����...) CbC �Ȥ��ơ�����������Τ������Τ������� | |
2850 ��������? (�����ͤ�...) | |
2851 float = float op float | |
2852 ���ɤ�������ɡ� | |
2853 double = float op float | |
2854 �λ��ˡ�ɬ�פ����٤���ݤǤ��ʤ���cast ������ɤ�������ɡ������ | |
2855 ANSI-C �Ȥϰۤʤ��ư�ˤʤäƤ��ޤ����ޡ��������� | |
2856 | |
2857 MIPS��double=float �Ȥ������Ȥˤ���äƤ�����⤢��͡� | |
2858 �����������줤�����Ǥ⡢�ɤ�����¾��CPU�⤢�뤳�Ȥ�ͤ���ȡ� | |
2859 fbinop �����ʤ���? lbinop ��Ф��ʤ��Ȥ������������ | |
2860 short �Ȥ�unsigned char �ΰ�����͡�(sigh...) | |
2861 | |
2862 �ޤ������֤���������顢�����ɤ������ʤ�����ɡ����ɤ�! | |
2863 | |
2864 (�����double�Υ롼������ư�������쥸������ȤäƤ����� | |
2865 �ڤ��ä��Τˡ�) | |
2866 | |
2867 Mon Apr 14 23:29:37 JST 2003 | |
2868 | |
2869 ��äѤꡢ����ä��ѹ��礭���ʤ��� | |
134 | 2870 |
2871 Fri May 2 14:53:16 JST 2003 | |
2872 | |
2873 �ʤ�Ǥ⤤�����ɡ�power-pc �� test/basic ���̤�ʤ��ʤäƤ롣 | |
2874 (�ޡ����������....) struct-push�� args-works ������� | |
2875 ư���ʤ��ʤä��餷���� | |
2876 | |
2877 ���ȡ������ΰ��Ϥ������ɡ�printf (...) �������̰���������? | |
2878 �ץ��ȥ����פ�����Τ����̰�������ɬ�פϤʤ���ʤ�? | |
135 | 2879 |
2880 Sat May 3 18:38:57 JST 2003 | |
2881 | |
2882 �狼��ޤ�����contains_in_list ��������Τ�˺��Ƥ���͡� | |
2883 ���ȡ�get_register �ϡ��ɤ�����ʤ��ʤ�櫓����? ���� | |
2884 ���Ϥɤ������? ��ʤ��ʤ�Τϴؿ��ƤӽФ��λ�����? | |
2885 (����?) | |
2886 | |
2887 ���Ȥ���С��ؿ��ƤӽФ���save���ѿ���ɽ��ѿ���Ȥ���褦�� | |
2888 ������ɤ��������͡� | |
2889 | |
2890 Sun May 4 09:18:32 JST 2003 | |
2891 | |
2892 �ؿ��ƤӽФ�������ư���������Ǽ���롢r8,r9 �ΰ����� | |
2893 ���������� | |
2894 | |
2895 emit_push / tosop �Ƕɽ��ѿ����������̰��� | |
2896 ��������������ʤ�? register full ���ȡ� | |
2897 | |
2898 register ��load (emit_push) | |
136
069960078249
remove redundant funcall argument for prototyped code in PowerPC case.
kono
parents:
135
diff
changeset
|
2899 register full �Ǥ����ɽ��ѿ������� (*) |
135 | 2900 �黻����register�˺����� |
2901 | |
136
069960078249
remove redundant funcall argument for prototyped code in PowerPC case.
kono
parents:
135
diff
changeset
|
2902 �ޤ��ͤ���������ȡ�mc-code-386.c �λ�������櫓 |
069960078249
remove redundant funcall argument for prototyped code in PowerPC case.
kono
parents:
135
diff
changeset
|
2903 �����ɡ��ޤ����������������Τ��ʡ���äȤ⡢(*) |
069960078249
remove redundant funcall argument for prototyped code in PowerPC case.
kono
parents:
135
diff
changeset
|
2904 ��������ʤ���С��ä�����Ϥʤ�������ɤ͡� |
069960078249
remove redundant funcall argument for prototyped code in PowerPC case.
kono
parents:
135
diff
changeset
|
2905 |
069960078249
remove redundant funcall argument for prototyped code in PowerPC case.
kono
parents:
135
diff
changeset
|
2906 �ɽ��ѿ�������ѿ�������������Ȥ��Ͻ����������������Τ��ʤ��� |
137 | 2907 |
2908 Sun May 4 15:10:48 JST 2003 | |
2909 | |
2910 ���֤�oprt �Ȥ��ϡ�����ۤɸ��̤�̵���衣�����Τϡ� | |
2911 register full ���������? | |
2912 | |
2913 MIPS version �ϡ��ޤ��ޤ������ȸ�����������ä��� | |
2914 ���դ��ƹԤ������ʤ��͡� | |
2915 | |
2916 Sun May 4 18:29:26 JST 2003 | |
2917 | |
2918 d50 �Ǥϡ������ϥ쥸������ $4,$5,$6,$7 �� double ��Ĥ����Τ�ʤ��� | |
2919 | |
2920 f50 �Ǥϡ������� | |
2921 $f12,$f14,$6,$7 | |
2922 �Ȥ����褦��4�ľ��餷����(���ޤä�����...) | |
2923 | |
2924 i50�Ǥϡ�$4,$5,$6,$7 ���͡� | |
2925 | |
2926 ���Ȥ�stack���Ѥ�ߤ����͡� | |
2927 | |
2928 ������ get_input_register_var �ǽ�������櫓���� | |
138 | 2929 |
2930 Mon May 5 15:28:07 JST 2003 | |
2931 | |
2932 code_fconst/code_dconst �� code_drgvar(e4,d,reg) �ߤ����ʤΤ� | |
2933 �������äƤ�ʡ��ޡ�����������ɡ� | |
2934 | |
2935 ��äѤꡢ��Ԥ����졣(���ɤ���) free �� d ����ꤹ��ΤϤޤ����� | |
141 | 2936 |
2937 Thu May 8 11:02:42 JST 2003 | |
2938 | |
2939 regs/fregs ��ʣ����ɬ�פʤ���ʤ���? ��Ĥ��ɤ�? ������ | |
2940 �ϸ����ʤ����顢mc-code-mips �����Ǥ�������Τ��ɤ��� | |
2941 | |
2942 register �Τ�������פ��ʤ��Ȥ��ᤫ�� | |
2943 | |
2944 �������ɤ�.... ������ư���Τ�? | |
2945 | |
2946 double �Υ饤�֥��ƤӽФ���$3,$4,$5,$6 ��Ȥ��櫓�����ɡ� | |
2947 ������ɬ�������Ƥ����ʤ���Ф����ʤ��櫓����͡��Ǥ⡢�ºݤ� | |
2948 �ϡ��饤�֥��θƤӽФ���ˤ�$3,$4 ���Ȥ��Ƥ��ޤ��������ǡ� | |
2949 emit_push �����ȵ��ޤ�����... | |
2950 | |
2951 ������function call��Ʊ�������Ǥ⤤��������ɡ�������� | |
2952 ����äȤ��Ĥ��ʤ�? | |
2953 | |
2954 �ʤ���ư�������쥸�����ѿ��ؤ�dpreinc/dpostinc ��������� | |
2955 �ʤ���ʤ�? ����ϡ��ޤ�����ʤ���? dassop �⤽����? | |
2956 ����? �ʤ��⤷�Ƥʤ��ߤ������ʡ�Intel �Ǥˤϥ쥸�����ѿ� | |
2957 ���ʤ����顢�ƥ��Ȥ��ʤ��ä��Τ���code �ΰ����ϥ쥸�����˳� | |
2958 �����Ƥ��뤫�顢���Τ�����ǥƥ��Ȥ��뤳�Ȥϲ�ǽ�������͡� | |
2959 �ޤ������켫�Τ����Ϥʤ���... | |
2960 | |
142 | 2961 code segment �Ǥ���ư�������쥸�����˳�꿶���Ƥ��ޤ��Τǡ� |
2962 �¤ϥ��顼���ФƤ�����ʤ����ʡ�����ϥƥ��ȥץ������ | |
2963 ��٤��Ǥ��礦�͡� | |
2964 | |
141 | 2965 ���뤤��#define REG register �ǥƥ��Ȥ���ɬ�פ�����櫓�͡� |
2966 | |
2967 MIPS�Ǥϡ�$4,$5,$6,$7 �ϡ����������̰������ʤ��Ȥ�����͡� | |
142 | 2968 |
2969 Thu May 15 21:25:45 JST 2003 | |
2970 | |
2971 fregv �ϡ���äѤꥵ�֥롼��������ˤ�������? | |
2972 (�������˼��Ȥ��ϤޤäƤ��ޤ��ȡ��ʤ��ʤ��ʤޤʤ�...) | |
2973 | |
2974 Sat May 17 13:57:12 JST 2003 | |
2975 | |
2976 $4,$5 ���� creg �ޤ��ϡ�double ��freg�Ȥ��ƻȤ��� | |
2977 $f12 ��floating �ѡ� | |
2978 | |
2979 �������emit_push����Ф�����㤦���ɤ͡�rename ����٤���? | |
2980 ���⤽��rename��ɬ�פʤ���ʤ���? | |
2981 | |
2982 ���Ȥ⤦�����ʤ�����ɤͤ�����뵤���Ǥ�... | |
143 | 2983 |
2984 Tue May 20 11:08:44 JST 2003 | |
2985 | |
2986 freg ��Ʊ���褦�� dreg ����? (��������� ia32 | |
2987 �ν�ľ�������뤬��������ɤ��Ȥ���...) | |
2988 | |
2989 �Ǥ⡢mc-codegen.c �� creg/freg �˰�¸���Ƥ��뤫�顢 | |
2990 ������ľ���Τ��빽���ɤ���������ľ���� | |
2991 ����פʤΤ�? ��������... | |
2992 | |
2993 �դ�creg/dreg/freg ��̵�����äƤΤ�? ������creg �� | |
2994 ���櫓���ʡ�����äȽ�ľ����¿�����ɡ�����Ū�ˤ� | |
2995 ����Ǥ����Ϥ������ɡ����ܤ��Ƥ���current register | |
2996 �ϰ�ĤΤϤ������顣 | |
2997 (1) | |
2998 creg int | |
2999 freg double/float | |
3000 | |
3001 �äƤʤäƤ��뤫�餪�������ΤǤ��äơ� | |
3002 (2) | |
3003 creg int/double/float | |
3004 ���� | |
3005 (3) | |
3006 creg int | |
3007 freg double | |
3008 greg float | |
3009 ����ͤ��� | |
3010 | |
3011 ��äѤ�(2)���ʤ���long long �Τ��Ȥ�Ȥ���ͤ���ȡ� | |
3012 �Ǥ⡢�Ȥꤢ����(1)�Ǥ�뤫�� | |
144 | 3013 |
3014 ������ˤ��衢fregv ���������뤳�Ȥ���Ϥ�����ʤ�? | |
3015 | |
3016 ����ϤǤ��ޤ����� | |
145 | 3017 |
3018 Thu May 22 23:40:13 JST 2003 | |
3019 | |
3020 3808 macro = (char *)car(nptrm->dsp); | |
3021 3809 if (nptrm->sc==MACRO) { | |
3022 3810 while((*macropp++ = *macro++)); | |
3023 3811 macropp[-1]=c; | |
3024 (gdb) | |
3025 3812 } else if (nptrm->sc==FMACRO) { | |
3026 3813 if(c!='(') error(MCERR); | |
3027 3814 *macropp++=0; | |
3028 3815 macrop = macro_function(macrop,&body,nptrm, | |
3029 3816 list2((int)macro,history)); | |
3030 | |
3031 MACRO �ξ���recursive �ʽ�����˺�줤�Ƥ���ߤ��������ɡ� | |
3032 ����Ǥ��ɤ��ä��Ϥ��ʤ�����ɡ�macro_buf ��static �ʤΤ� | |
3033 ���Թ礬�ФƤ���ߤ����͡� | |
3034 | |
3035 recursive �˽�������ȡ� | |
3036 #deifne car(e) heap[e] | |
3037 car(e) | |
3038 �ߤ����ʻ��ˤޤ���������ϡ��ɤ��������ä�? | |
3039 | |
3040 LMACRO �äƤΤ����ä��ߤ����͡� | |
147 | 3041 |
3042 Sun May 25 21:48:46 JST 2003 | |
3043 | |
3044 macro_eval ���ޤ����������Τ��֤��Ȥ���... | |
3045 | |
3046 ñ���creg/freg�����줷�Ƥ��ޤ��ȡ� | |
3047 fdecl �� creg �å� | |
3048 �������ˡ�float/double/int �ˤɤ줫�˸��ꤵ��롣���Τޤޡ� | |
3049 coce_rlvar(creg) �Ȥ���ƤФ�Ƥ��ޤ��Τǡ�����äȺ��롣 | |
3050 code_rlvar �ǡ�if(!is_int_reg(creg)) creg = ireg; | |
3051 �Ȥ�����Ф���������ɡ�����ϡ�����ä��Ѥ����? | |
3052 | |
3053 ���⤽�⡢mc-codgen.c ��creg������⤤�Ƥ�����ͳ��? | |
3054 �ʤ��ä��褦�ʵ������뤬... | |
3055 | |
3056 �������� | |
3057 use_int_reg() | |
3058 �Ȥ����Ƥ����ɤ��櫓�͡�(rname ��Ȥ����ɤ����ϤȤ⤫��) | |
3059 | |
3060 code_rlvar �Ȥ������ꤹ��register����Ѥ������ | |
3061 ���줷���ʤ���(���?) codegen ¦�� use_int_reg()�Ȥ� | |
3062 �Ǥ���Ф�����ʤ���? | |
3063 | |
3064 Mon May 26 21:06:14 JST 2003 | |
3065 | |
3066 code_* ¦�Ǥ�뤫��mc-codegen ¦�ǹԤ���? �ɤä����ʤ��� | |
3067 code_* ¦�������ɤ��褦�ʵ��⤹�뤱�ɡ� | |
3068 | |
3069 Thu May 29 10:30:09 JST 2003 | |
3070 | |
3071 freg/creg �ζ��̤� mc-codegen ¦�Ǥ�äƤ���������顢 | |
3072 mc-codegen ¦�Ǥ��ʤ��ȡ�mc-cdoe-* ¦�Ǥ�ưŪ | |
3073 �����å������������Ƥ��ޤ��� | |
3074 | |
3075 creg/freg ��ͭ����Τ��ɤ��Τ�������������� | |
3076 mc-codegen ¦�Ǥ��٤��ʤ�ʤ���? | |
3077 | |
3078 mc-code-* ¦��������ȥХ�������ڤ�ʤ�... | |
3079 (�Ȥ����Ĥġ��⤦�������ʤ����������... �Ǥ⡢�ʤ�) | |
3080 | |
3081 cast ��ʬ������Ǥ������ʤ��ñ�ʤ���������ɡ� | |
3082 | |
3083 Tue Jun 3 13:03:41 JST 2003 | |
3084 | |
3085 �������ʤ���ڤ�ʤ���CONV ��ľ����creg��������� | |
3086 �ɤä��� use_float ��˺��Ƥ����������ʡ� | |
148 | 3087 |
3088 Wed Jun 11 12:27:58 JST 2003 | |
3089 | |
3090 �ʤ��褦��ä� creg/ireg/freg �����դ����衣 | |
3091 creg ���ѹ������Ȥ��ˡ�ireg ���ѹ���˺��뤳�Ȥ�¿���ä� | |
3092 �ߤ�����set_creg ��ɬ���Ȥ��褦�ˤ�����ɤ��������Ȼפ� | |
3093 ������ | |
3094 | |
3095 Thu Jun 12 19:34:48 JST 2003 | |
3096 | |
3097 �ޤ���MIPS�ѤΥ쥸����������Ƥ�ʤ��Ȥ�����͡� | |
3098 �����ȽƤ⤤��������ɤ����ʤ� one path �� | |
3099 ����Τ�����Ǥ���? | |
3100 | |
3101 Sun Jul 13 18:26:29 JST 2003 | |
3102 | |
3103 �ޤ����쥫��ʤˤ�ʤ��ä��Τ��� mips �ϡ�mc-code-power.c | |
3104 �����ľ���������ɤ��������͡� | |
3105 | |
3106 regs/regv �ϡ�i/f/d �Τ��٤ƤΥ쥸�����˴ؤ��ư�� | |
3107 | |
3108 �Ǥʤ��� stack ���Ѥ�Τ�����Ǥ��ʤ����顣����������̣�Ǥϡ� | |
3109 reg_stack �� freg_stack ����̤����̣�Ϥʤ��櫓�͡��Ǥ�stack | |
3110 �Ϸ��դ����������ɤ����顣�Ǥ⡢���̤��Ƥ����ȡ�long ������ | |
3111 �������ˤ⡢stack �����䤵�ʤ��Ȥ���ʤ�ʤ�? �ʤΤǶ��� | |
3112 ���ʤ������ɤ����Ǥ⡢����˼��Ĥ���ȡ��ޤ����֤������ | |
3113 ��ʤ���? ���Τ���ˤϥ����å����Τ�Τ˷��դ����ʤ��Ȥ���� | |
3114 ������Ʊ������ | |
3115 | |
3116 mips �� double ���Ǽ���뤿���register pair�ϡ�regs �� | |
3117 ��Ǽ���롣regs �˥��������ˤ�ɬ�����������ؿ����̤��� | |
3118 �ʤ�ۤɡ� | |
3119 | |
3120 get_input_dregister_var �ʤ�����ɡ�dregister pair �� | |
3121 ���ϡ����pair����ޤä��ͤˤʤ�ɬ�פ������͡� | |
3122 ����ʬ�Ϥɤ�����? ����äƤȤäƤ�����? | |
3123 | |
3124 ������������Ǥ�դ�register pair������ʤ��Ƥ��ɤ��衣input register | |
3125 ���б�����Ϣ³����register pair ���������������������С��� | |
3126 �ޤ굤�ˤ��ʤ��Ƥ��ɤ��ʤ뤫�顣�Ǥ⡢gcc �����pair������� | |
3127 �����鵤�ޤ����ʤ�? | |
3128 | |
3129 regv �ϡ�register rename ���ʤ���Ф���ʤ���ʤ�? | |
150 | 3130 |
3131 Mon Jul 14 10:54:46 JST 2003 | |
3132 | |
3133 �ʤʤ�... creg/ireg/freg/dreg �ϡ�����ޤ��ɤ������ǥ� | |
3134 �Ǥϡ��ʤ��ä��ߤ�����creg �ϡ����Τ����Τɤ줫�Ǥʤ��Ƥ� | |
3135 �ʤ�ʤ��������������ݾڤǤ��ʤ��� | |
3136 | |
3137 ����Ʊ���ǡ�creg ���ѻߤ��ơ�ireg/freg/dreg/lreg �Ȥ��뤫? | |
151 | 3138 |
3139 Mon Jul 14 14:25:23 JST 2003 | |
3140 | |
3141 �ʤ� unsigned ���̤�ʤ��ʤäƤ���ߤ����� | |
153 | 3142 |
3143 Sun Jul 20 17:37:34 JST 2003 | |
3144 | |
3145 ��äѤ� dictionary �ϡ���ľ���ʤ��Ȥ������ʡ� | |
3146 ����˴ؤ��ơ�heap �⽤�����������ɤ������Υ����� | |
3147 �Ϥ���ޤ����Τʤ��� | |
3148 | |
3149 ���ơ����Ȥϡ����ե��åȤ�����... ����... | |
3150 | |
3151 Mon Jul 21 15:12:56 JST 2003 | |
3152 | |
3153 Frame pointer �ϻȤ���? �Ȥä�����������ʤ�? | |
3154 PowerPC �ϻȤ�ʤ��ä����ɡ� | |
154 | 3155 |
3156 Tue Jul 22 08:12:48 JST 2003 | |
3157 | |
3158 switch ʸ��table�˥���ѥ��뤹��ˤ�... | |
3159 | |
3160 �ǽ����ӤιԤ�����ǻ��ꤹ��褦�ˤ��� | |
3161 cmp reg,case_value | |
3162 bne L_NEXT | |
3163 .... | |
3164 L_NEXT: | |
3165 �� | |
3166 cmp reg,case_value | |
3167 bne L_CASE | |
3168 .... | |
3169 L_NEXT: | |
3170 .... | |
3171 L_CASE | |
3172 �ǡ�case ʸ�����ä���table���롣table ������ʤ��褦���ä��顢 | |
3173 L_CASE = L_NEXT | |
3174 | |
3175 ��case�������ϳФ��Ƥ����� | |
3176 (list of (value, label)) | |
3177 | |
3178 table �ϡ��ɤ���äƺ�뤫�ȸ����ȡ� | |
3179 | |
3180 �ޤ����ͤ�ʬ�ۤ�����å����� | |
3181 ̩�٤ι⤤ɽ����(ü�Τ����Ĥ��������Ϣ³���Ƥ��뤳��) | |
3182 �Ȥ�������(�꺹ʬ��)Ϣ³���Ƥ�����ʬ�ˤ���ɽ������ɤ����� | |
3183 table ��8entry�ʾ塣����ʲ��ϡ�2ʬˡ���餱�롣 | |
3184 (list of (number of entry, diff, (list of (value,label)))) | |
3185 | |
3186 512 or 128kbyte �ޤ���ǧ���롣���٤Ϥʤ��Ƥ��ɤ�����Ϣ³���Ƥ��� | |
3187 ��ʬ�ˤ���ɽ�Ϻ��ʤ��� | |
3188 | |
3189 Ϣ³���Ƥʤ���ʬ�ϡ�2ʬˡ�ˤ��롣 | |
3190 | |
3191 2 ʬˡ�Ǥ⤤�����ɡ�2ʬˡ�ˤ���? ����������ñ���ʡ��Ǹ�Υ� | |
3192 �ơ����ϡ�(��������פ��Ƥ����...) ���Υ����ɤ��Ȥ��뤷���� | |
3193 ������ȡ�sort ���ơ����椫������Ӥ��ƹԤ����ɤ����������� | |
3194 ��ɽ��ʬ�ۤȤ��ͤ��ʤ��Ƥ��ɤ����餤������͡� | |
3195 | |
3196 ����� | |
3197 | |
3198 �ޤ�����äѤꡢ��ʸ�ڤ����ɤߤ��ʤ���? ��������� | |
3199 reference �ΤȤ��Ƥʤ��ѿ���狼�뤷�� | |
3200 | |
3201 Wed Jul 23 16:21:12 JST 2003 | |
3202 | |
3203 ��äѤ깽¤�ΤΥ�����̾����name table�ˤ�����������͡� | |
3204 �ޤ�������ʤ��㤤���ʤ�������ɤ����ɤ�����? | |
3205 �ɤ�����äƤ��äƤ�... | |
3206 | |
3207 Thu Jul 31 15:07:08 JST 2003 | |
3208 | |
3209 C �����Ѵ����������ɤ�ư�������ɡ��ޤ���cast ��ư���Τ� | |
3210 �ɤ�������ɡ����������Τ���ʤ��ơ�link ��Ȥä��Ѵ� | |
325 | 3211 �Ǥ⤤����ʤ�? ��������С�spaghetti stack �Ǥ�Ok |
154 | 3212 ���ʡ�������GC ���ʤ��ȻȤ�ʪ�ˤʤ�ʤ����������� |
3213 | |
3214 Link �ˤ���С�������Τ����Ѵ����ǽ����͡�������union | |
3215 �ϰ�̣�ʤ�����record ����ľ���ʤ��Ȥ͡� | |
3216 | |
3217 recursion �� loop ��detect �����static ��compile | |
3218 �Ǥ��롣���뤤�ϡ�recursion ����ʬ��������ˤǤ��� | |
3219 ��ʤ����ʡ� | |
3220 | |
3221 ���줾��������ȷ�����ͻ������CW���̤��ʤ�? | |
3222 (�ܵ�?) | |
155 | 3223 |
3224 Mon Aug 4 12:48:40 JST 2003 | |
3225 | |
3226 converted call | |
3227 480 | |
3228 8.070u 0.010s 0:08.22 98.2% 0+0k 0+2io 0pf+0w | |
3229 call | |
3230 480 | |
3231 6.590u 0.000s 0:06.67 98.8% 0+0k 0+0io 0pf+0w | |
3232 | |
3233 ��������10%���餤�٤��ʤ���(�ʤ��?) ����-O6 ���Ƚ��ܰ㤦... | |
3234 | |
3235 ����powerpc �� subroutine ���static���̤��� | |
3236 | |
3237 ���֥롼������ʤ�ľ���ޤ����� | |
3238 | |
3239 % time ./a.out 0 | |
3240 720 | |
3241 9.590u 0.010s 0:09.64 99.5% 0+0k 0+0io 0pf+0w | |
3242 % time ./a.out 1 | |
3243 719 | |
3244 12.610u 0.020s 0:12.71 99.3% 0+0k 0+0io 0pf+0w | |
3245 % time ./a.out 2 | |
3246 720 | |
3247 6.310u 0.020s 0:06.41 98.7% 0+0k 0+0io 0pf+0w | |
3248 % vi test/conv1.c | |
3249 % gcc -O6 test/conv1.c | |
3250 % ./a.out 0 | |
3251 720 | |
3252 % time ./a.out 0 | |
3253 720 | |
3254 1.990u 0.020s 0:02.03 99.0% 0+0k 0+2io 0pf+0w | |
3255 % gcc test/conv1.c | |
3256 % time ./a.out 0 | |
3257 720 | |
3258 7.530u 0.000s 0:07.64 98.5% 0+0k 0+0io 0pf+0w | |
3259 % gcc -O2 test/conv1.c | |
3260 % time ./a.out 0 | |
3261 720 | |
3262 3.520u 0.010s 0:03.55 99.4% 0+0k 0+0io 0pf+0w | |
3263 % | |
3264 | |
3265 �ޡ�����ʤ�Τ��ʡ�-O2 ���餱��ʤ�äƵ��⤹�뤬�� | |
3266 | |
3267 ��40Mbps | |
3268 | |
3269 Intel PC (on PowerPC) �� | |
3270 | |
3271 [root@localhost ~/device]# time ./a.out 2 | |
3272 470 | |
3273 0.660u 0.010s 0:02.37 28.2% 0+0k 0+0io 92pf+0w | |
3274 [root@localhost ~/device]# time ./a.out 3 | |
3275 720 | |
3276 0.920u 0.020s 0:01.74 54.0% 0+0k 0+0io 92pf+0w | |
3277 [root@localhost ~/device]# gcc test/conv1.c | |
3278 [root@localhost ~/device]# ./a.out 0 | |
3279 | |
3280 [root@localhost ~/device]# time ./a.out 0 | |
3281 720 | |
3282 1.310u 0.030s 0:01.39 96.4% 0+0k 0+0io 92pf+0w | |
3283 [root@localhost ~/device]# gcc -O test/conv1.c | |
3284 [root@localhost ~/device]# time ./a.out 0 | |
3285 720 | |
3286 1.130u 0.030s 0:01.16 100.0% 0+0k 0+0io 92pf+0w | |
3287 [root@localhost ~/device]# gcc -O4 test/conv1.c | |
3288 [root@localhost ~/device]# time ./a.out 0 | |
3289 720 | |
3290 0.870u 0.000s 0:00.87 100.0% 0+0k 0+0io 92pf+0w | |
3291 [root@localhost ~/device]# gcc -O6 test/conv1.c | |
3292 [root@localhost ~/device]# time ./a.out 0 | |
3293 720 | |
3294 0.850u 0.020s 0:00.88 98.8% 0+0k 0+0io 92pf+0w | |
3295 [root@localhost ~/device]# | |
3296 | |
3297 PowerPC �ξ��ϡ�PIC symbol ����äѤ��٤��͡� | |
3298 �����Ĥ�ʤ�Ȥ���������Ǥ����ְ㤦�����Τ�ʤ��� | |
156 | 3299 |
3300 Tue Aug 5 13:53:43 JST 2003 | |
3301 | |
3302 �ࡢ�ʤ��⤦�������ʤäƤ뤸��� | |
3303 | |
3304 �ؿ�scope ��� static�ν�������̤�ʤ���Ǥ����ɡ� | |
3305 | |
3306 ľ��ޤ������б����Ƥʤ��ä��ߤ����͡� | |
158 | 3307 |
3308 Wed Aug 6 12:07:07 JST 2003 | |
3309 | |
3310 [kono@pw001 ~/device]% ./mc -s test/conv1.c | |
3311 [kono@pw001 ~/device]% gcc test/conv1.s | |
3312 [kono@pw001 ~/device]% time ./a.out 1 | |
3313 �������ȥ��顼 (core����Ϥ��ޤ���) | |
3314 0.000u 0.000s 0:00.00 0.0% 0+0k 0+0io 73pf+0w | |
3315 [kono@pw001 ~/device]% time ./a.out 2 | |
3316 470 | |
3317 0.350u 0.000s 0:00.35 100.0% 0+0k 0+0io 88pf+0w | |
3318 [kono@pw001 ~/device]% time ./a.out 0 | |
3319 720 | |
3320 0.650u 0.010s 0:00.65 101.5% 0+0k 0+0io 88pf+0w | |
3321 [kono@pw001 ~/device]% time ./a.out 1 | |
3322 �������ȥ��顼 (core����Ϥ��ޤ���) | |
3323 0.000u 0.000s 0:00.00 0.0% 0+0k 0+0io 73pf+0w | |
3324 [kono@pw001 ~/device]% time ./a.out 2 | |
3325 470 | |
3326 0.350u 0.000s 0:00.35 100.0% 0+0k 0+0io 88pf+0w | |
3327 [kono@pw001 ~/device]% time ./a.out 3 | |
3328 720 | |
3329 0.380u 0.000s 0:00.38 100.0% 0+0k 0+0io 88pf+0w | |
3330 [kono@pw001 ~/device]% time ./a.out 4 | |
3331 0.000u 0.000s 0:00.00 0.0% 0+0k 0+0io 77pf+0w | |
3332 [kono@pw001 ~/device]% time ./a.out 0 | |
3333 720 | |
3334 0.660u 0.000s 0:00.65 101.5% 0+0k 0+0io 88pf+0w | |
3335 [kono@pw001 ~/device]% time ./a.out 1 | |
3336 �������ȥ��顼 (core����Ϥ��ޤ���) | |
3337 0.010u 0.000s 0:00.00 0.0% 0+0k 0+0io 73pf+0w | |
3338 [kono@pw001 ~/device]% time ./a.out 2 | |
3339 470 | |
3340 0.350u 0.010s 0:00.35 102.8% 0+0k 0+0io 88pf+0w | |
3341 [kono@pw001 ~/device]% time ./a.out 3 | |
3342 720 | |
3343 0.390u 0.000s 0:00.38 102.6% 0+0k 0+0io 88pf+0w | |
3344 [kono@pw001 ~/device]% time ./a.out 4 | |
3345 0.000u 0.000s 0:00.00 0.0% 0+0k 0+0io 77pf+0w | |
3346 [kono@pw001 ~/device]% gcc test/conv1.c | |
3347 [kono@pw001 ~/device]% time ./a.out 1 | |
3348 0.000u 0.000s 0:00.00 0.0% 0+0k 0+0io 77pf+0w | |
3349 [kono@pw001 ~/device]% time ./a.out 0 | |
3350 720 | |
3351 0.430u 0.000s 0:00.42 102.3% 0+0k 0+0io 88pf+0w | |
3352 [kono@pw001 ~/device]% gcc -O test/conv1.c | |
3353 [kono@pw001 ~/device]% time ./a.out 0 | |
3354 720 | |
3355 0.370u 0.000s 0:00.36 102.7% 0+0k 0+0io 88pf+0w | |
3356 [kono@pw001 ~/device]% gcc -O2 test/conv1.c | |
3357 [kono@pw001 ~/device]% time ./a.out 0 | |
3358 720 | |
3359 0.370u 0.000s 0:00.37 100.0% 0+0k 0+0io 88pf+0w | |
3360 [kono@pw001 ~/device]% gcc -O6 test/conv1.c | |
3361 [kono@pw001 ~/device]% time ./a.out 0 | |
3362 720 | |
3363 0.240u 0.010s 0:00.25 100.0% 0+0k 0+0io 88pf+0w | |
3364 | |
3365 Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/2.95.3/specs | |
3366 gcc version 2.95.3 20010315 (release) | |
3367 Intel Architecture ���ȡ��빽���ɤ������äƤ���ߤ����� | |
159 | 3368 |
3369 Thu Aug 14 02:39:29 JST 2003 | |
3370 | |
3371 done | |
3372 [kono@pw001 ~/device]% time ./a.out 0 | |
3373 720 | |
3374 0.640u 0.000s 0:00.63 101.5% 0+0k 0+0io 88pf+0w | |
3375 [kono@pw001 ~/device]% time ./a.out 1 | |
3376 719 | |
3377 0.720u 0.000s 0:00.71 101.4% 0+0k 0+0io 88pf+0w | |
3378 [kono@pw001 ~/device]% time ./a.out 2 | |
3379 470 | |
3380 0.330u 0.000s 0:00.33 100.0% 0+0k 0+0io 88pf+0w | |
3381 [kono@pw001 ~/device]% time ./a.out 3 | |
3382 720 | |
3383 0.370u 0.010s 0:00.37 102.7% 0+0k 0+0io 88pf+0w | |
3384 | |
160 | 3385 |
3386 +jessica+kono time ./a.out 0 | |
3387 720 | |
3388 1.190u 0.010s 0:01.51 79.4% 0+0k 0+0io 0pf+0w | |
3389 +jessica+kono time ./a.out 1 | |
3390 719 | |
3391 1.700u 0.000s 0:01.78 95.5% 0+0k 0+0io 0pf+0w | |
3392 +jessica+kono time ./a.out 2 | |
3393 470 | |
3394 0.630u 0.000s 0:00.66 95.4% 0+0k 0+0io 0pf+0w | |
3395 +jessica+kono time ./a.out 3 | |
3396 720 | |
3397 0.790u 0.000s 0:00.81 97.5% 0+0k 0+0io 0pf+0w | |
3398 +jessica+kono time ./a.out 4 | |
3399 0.000u 0.000s 0:00.00 0.0% 0+0k 0+0io 0pf+0w | |
3400 | |
3401 +jessica+kono gcc test/conv1.c | |
3402 +jessica+kono time ./a.out 0 | |
3403 720 | |
3404 0.960u 0.000s 0:00.97 98.9% 0+0k 0+2io 0pf+0w | |
3405 +jessica+kono gcc -O test/conv1.c | |
3406 +jessica+kono time ./a.out 0 | |
3407 720 | |
3408 0.470u 0.000s 0:00.48 97.9% 0+0k 0+0io 0pf+0w | |
3409 +jessica+kono gcc -O6 test/conv1.c | |
3410 +jessica+kono time ./a.out 0 | |
3411 720 | |
3412 0.260u 0.000s 0:00.26 100.0% 0+0k 0+0io 0pf+0w | |
3413 | |
3414 Mon Sep 1 13:49:43 JST 2003 | |
3415 | |
3416 short ����äѤ��ߤ�����͡�long long �ϤȤ⤫��... | |
3417 �����ޤǤ����ȡ�ANSI-C �б��ˤǤ���������long long | |
3418 ����? | |
3419 | |
3420 short �ϡ�����ʤ����ʤ��Ϥ������Ȥϡ� | |
3421 statement ��ޤtree�ν��� | |
3422 �Ѵ��Ϥδ��� | |
3423 ������Ĥ��ʡ�GCC ���Ȥ߹���Τ�̵���������� | |
3424 | |
3425 °��ʸˡ�ߤ����ʼ�ˡ���Ȥ���Ф͡� | |
3426 | |
3427 ���ȡ�struct ��tag����äѤ�word table ����ľ���ʤ��ȡ� | |
3428 | |
3429 Wed Sep 10 21:53:16 JST 2003 | |
3430 | |
3431 short �� unsigned short �����ˡ� | |
3432 �ʤ� unsigned char ��ʤ���Ǥ����ɡ� | |
3433 | |
3434 Wed Oct 8 22:43:17 JST 2003 | |
3435 | |
3436 (�ޤ����쥫����äƤʤ��Τ�...) | |
3437 | |
3438 ̵̾ code �Ϥ��ä�����������ʤ�? | |
3439 | |
3440 code *a(int i); | |
3441 a = code(int j) { } | |
3442 | |
3443 �ߤ����ʴ���? C �ˤϤʤ����ɤ͡���Ȥ�ȡ�̾������� | |
3444 �������餢�ä������������⡣�Ǥ⡢�¹Ի��˺����櫓����ʤ��� | |
3445 ����ˡ�����������Τ���� closure ���Ȼפ���褦�� | |
3446 ���⤹�롣closure �ߤ����ʤ�Τϡּ�ʬ�Ǵ�������פäƤΤ� | |
3447 CbC �λ��ۤ���? | |
3448 | |
3449 ���������С�static ��code�Ϥ��ä�����������ʤ�? | |
3450 | |
3451 static code func() { .... } | |
3452 | |
3453 ��������Ϥ������ʡ� | |
3454 | |
3455 Fri Oct 10 13:08:01 JST 2003 | |
3456 | |
3457 link register �ޤ��Ȥ��ˤ�continuation�� | |
3458 ���ꤹ������Ǥϥ���ǡ� | |
3459 goto hoge(....,next); | |
3460 code next.. | |
3461 �ߤ����ʤΤ����ä�����������ʤ�? | |
3462 | |
3463 goto �θ�Υ��ơ��ȥ��Ȥ�̵̾code�ˤʤ�Ф��������͡� | |
3464 | |
3465 stack ��Ȥ�ʤ����֥롼����ߤ����ʤ�Τ���ñ�ʤ�call | |
3466 �ˤʤ�櫓�͡�����⤤�����⡣ | |
3467 | |
3468 Sat Nov 22 15:51:36 JST 2003 | |
3469 | |
3470 ��¤�Τ�field�������nptr�ϡ�����̾���ơ��֥뤫�� | |
3471 �������ʤ��Ȥ����ʤ����Ǥ⡢�������Ƥ����ޤ��ȡ� | |
3472 ��¤�Τ���Υݥ���������㤦�Τǡ��ޤ����� | |
3473 | |
3474 filed���Ѥ��ΰ����Τ��ȡ�ʣ���ι�¤�Τ�Ʊ�� | |
3475 field̾����ĤȤ��ˤ���äȺ��롣��¤�ΤΥ����פ� | |
3476 ������������������... | |
3477 | |
3478 ��������ȡ���¤�Τ�filed���ɤ�����getsym�������å� | |
3479 ����Ȥ��ˤ���äȺ��롣 | |
3480 | |
161 | 3481 filed ��linear search����ΤϷ������ɡ��������ʤ����� |
3482 | |
3483 �ʤ�struct ����ˡ� | |
3484 void (*case_)(int cases,int def); | |
3485 �Ȥ�������ȡ� | |
3486 void (*case_)(); | |
3487 int cases; | |
3488 int def; | |
3489 �Ȥ���������;�פ�field���������Ƥ�ߤ����� | |
3490 | |
3491 adecl �� nptr �������κǸ��ؤ��Ƥ��ޤ��Τ��ޤ����ä��� | |
164 | 3492 |
3493 Mon Nov 24 00:52:31 JST 2003 | |
3494 | |
3495 signed char �ϼ������ޤ�����... test routine ���ʤ��� | |
3496 | |
3497 ���ȡ�short �ϡ�code_crxxxx �����byte���礭���˽��ä� | |
3498 ��������Τ��������ʡ� | |
3499 | |
166 | 3500 Mon Nov 24 10:53:31 JST 2003 |
3501 | |
3502 short ������������ɡ��ޤ�������ѥ�����̤�ʤ��� | |
3503 | |
3504 �������� stdio.h ���̤��ʤ��ȥ�����͡�(������������������ʤ�...) | |
3505 �Ȥꤢ������#include <> ��ʤ�Ȥ����ʤ��ȡ� | |
3506 | |
3507 long long �α黻�ϤȤ⤫�� long long �������ϤǤ����������� | |
3508 �����Ǥ⡢����ʤ顢��¤�Τ�����Ǥ�����ʤ�? | |
3509 typedef struct { char a[4]; } long long | |
3510 �ߤ����ʴ���? ����ϤǤ��ʤ���������ѥ��������ǤϤ�������Ȥ��� | |
3511 ��⤢�롣 | |
168 | 3512 |
3513 Mon Nov 24 18:59:30 JST 2003 | |
3514 | |
3515 ��������ʥ��顼�ĤäƤ���Τ���code_cpostint �Ȥ� | |
3516 �Ϥ���Ȥ��ʤ��櫓? | |
170 | 3517 |
3518 struct { char a[4],a; } ��ľ���ޤ����� | |
3519 | |
3520 short �ΰ����ΰ����⽤���� | |
172 | 3521 |
3522 Mon Nov 24 22:20:29 JST 2003 | |
3523 | |
3524 Ʊ���쥸�������äȻȤ鷺��statement���Ȥ� | |
3525 ���餹�ȡ�����ä�®���ʤ뤫��͡��ɤ��ʤ������? | |
3526 rename ������㤨�Ф���ޤ�ط��ʤ��Τ����Τ�ʤ����ɡ� | |
3527 | |
3528 ��ĤΥ쥸�������ߤ˻Ȥ��Ȥ����ȡ��ޤ��������Ǥ��͡� | |
173 | 3529 |
3530 Wed Nov 26 13:27:00 JST 2003 | |
3531 | |
3532 include path ����¢�Τ�Τȡ������Τ�Τ���Ĥ���櫓�͡� | |
3533 | |
3534 predefined ���빽̵���Ȥ����ʤ��ߤ����� | |
3535 | |
3536 �ˤ�� inline ��ɬ�ܤʤ�? macro �Ǽ�������Τ�����ʤ����ʤ��� | |
3537 inline �ˤϡ��빽����������Ѥ���ʬ����������ʡ���ö�ϥ���ѥ��� | |
3538 ���ʤ��Ȥ����ʤ��Ϥ������� | |
3539 inline int f(int a,int b) { | |
3540 int c; | |
3541 c = a+b; | |
3542 return c; | |
3543 } | |
3544 ����͡� | |
3545 f(3,4) | |
3546 �����ä����ˤϡ� | |
3547 int _c,int _a,int _b; ��local�ѿ����դ��ä��� | |
3548 _a = 3; | |
3549 _b = 4; | |
3550 _c = _a+_b; | |
3551 ��ѥ��롣 | |
3552 current register = _c | |
3553 �Ȥ��롣���ʤ��� | |
3554 | |
3555 �ष���� | |
3556 c = { decl; statements* return value; } | |
3557 ��������ơ�#define ���ĥ���� | |
3558 ������ñ����ʤ�? ���Τ���ˤ� nest ����decl ��ʤ��� | |
3559 ���������... | |
3560 | |
3561 ���䡢��äѤꡢ����ڤ�ʤ�Ȥ�����Τ��ʤ��� | |
3562 | |
178 | 3563 �Ȥꤢ������̵�롣���̤δؿ�(static)�Ȥ���compile���롣 |
173 | 3564 |
3565 ��äѤꡢlong long �Ϥ���Τ͡� | |
3566 | |
3567 ��äѤꡢenum �⤤���͡� | |
3568 | |
3569 �ʤ��Τ�ʤ����ɡ���äѤ������������ʤ��Ȥ���ʤΤ͡� | |
3570 | |
174 | 3571 ���ȡ�const int ���ʡ� |
177 | 3572 |
3573 Fri Nov 28 14:01:25 JST 2003 | |
3574 | |
3575 volatile ... (�ʤˤ���Ф����������?) | |
3576 | |
3577 �ʤ�*.c �ʳ����ȥ������������㤦��... | |
178 | 3578 (�����ľ���ޤ���) |
177 | 3579 |
3580 ������struct ��tag��type̾����ˤ�����㤦�Τ�... | |
3581 �����������Ȥ����ѿ��ơ��֥��ľ���ʤ���ư�����ʤ�... | |
178 | 3582 TYPE_TAG �ߤ����ʥ��ɥۥå��ʤɤ���ľ���ʤ��� |
3583 �ʤ�Ȥ��ʤ�ʤ����ʤ��� | |
3584 | |
3585 ���ȡ�struct ��forward definition �äƤΤ�����ߤ����͡� | |
3586 | |
3587 #if defined(A) && A �ǡ������ɾ��������㤦�ߤ��������ɡ��� | |
3588 ������ȸ����̾����define����Ƥ��ޤ����ա��ࡣ����ʤΤɤ� | |
3589 ��ä��ɤ��Ф������? | |
3590 | |
3591 ��äѤ�long long ��64bit �ˤ��ʤ��ȥե����륵������ | |
3592 ���ʤ��� | |
3593 | |
3594 ��äѤ� include �ϡ����Υե�����Τ����꤫���ɤ߹��� | |
3595 ������������� | |
3596 | |
3597 Sat Nov 29 19:01:26 JST 2003 | |
3598 | |
3599 typedef enum { | |
3600 ... | |
3601 REGS_SAVED_ALL /* All registers */ | |
3602 } regs_saved_t; | |
3603 | |
3604 ��äѤꡢ����Τ͡� | |
3605 | |
3606 | |
3607 void (*signal ()) (int); | |
3608 | |
3609 ��ư���ʤ��ʤäƤޤ��� | |
179 | 3610 |
3611 Sun Nov 30 05:30:56 JST 2003 | |
3612 | |
3613 �褦��ä� <stdlib.h> ���̤ä��� | |
3614 | |
3615 nkf.c �� while() { int hoge;... } ��ȤäƤ���Τϡ��ѡ� | |
3616 �ʤ�ǡ������������Ȥ��뤫�ʤ�������ݡ��Ȥ���Τ� | |
3617 �Բ�ǽ�ǤϤʤ����ɡ�����������ľ�������롣 | |
3618 | |
3619 �ʤ��������� n->sc ������������äơ��Ѥ� | |
3620 ���Ȥ������Ƥ���ߤ������͡� | |
3621 | |
3622 stat �δؿ�̾��tag̾���ŤʤäƤ���ߤ�������äѤ� | |
3623 tag̾��̾�����֤�櫓�ʤ��Ȥ��ᤫ��... | |
180 | 3624 |
3625 Sun Nov 30 17:41:04 JST 2003 | |
3626 | |
3627 �ޥ�������Ͽ����Ȥ��ˤϡ������Ȥ�Ȥ�ʤ��Ȥ��ᡣ | |
3628 | |
3629 while ��slfree �ǥޥ�����chptrsave ���˲�����Ƥ��ޤ��� | |
3630 | |
3631 ��äѤꡢnkf.c �ϡ���ȯ�Ǥ�ư���ʤ��ߤ����͡�compile �� | |
3632 �Ǥ������ɤ��� | |
186 | 3633 |
3634 >> ������¸ �ƥ��ȥ롼�������äƤʤ��ä� | |
3635 | |
3636 ������K&R�ΰ����ν�����ؿ��ΰ����Ȥ���Ƥ���Ȥ��ϡ� | |
3637 �ؿ��ν��������ͥ�褷�ʤ��Ȥ����ʤ�... ���������� | |
3638 | |
3639 { | |
3640 extern hoge... | |
3641 } | |
3642 | |
3643 int | |
3644 h_conv(f, c2, c1) | |
3645 FILE *f; int c1, c2; | |
3646 | |
3647 �ޤ���������������ͤ��� | |
3648 | |
3649 #define hex(c) (('0'<=c&&c<='9')?(c-'0'):\ | |
3650 ('A'<=c&&c<='F')?(c-'A'+10):('a'<=c&&c<='f')?(c-'a'+10):0) | |
3651 fprintf(stderr,"mime_getc h: %d c2 %d c3 %d\n",((hex(c2)<<4) + hex(c3)),c2,c3); | |
3652 return ((hex(c2)<<4) + hex(c3)); | |
3653 | |
325 | 3654 �դࡣ(?::)+(?::) �ߤ����ʻ��ˤϡ�code-set-fixed-register ��register |
186 | 3655 ����Ĥ���櫓�͡�push �Ǥ��ʤ���? |
3656 | |
325 | 3657 case COND: /* a?0:1 should consider non-branch instruction */ |
186 | 3658 case DCOND: |
3659 case FCOND: | |
3660 d = (car(e1)==COND?INT:car(e1)==DCOND?DOUBLE:FLOAT); | |
3661 e2=fwdlabel(); | |
3662 if(d==INT) emit_push(); else emit_dpush(d); | |
3663 b_expr(cadr(e1),0,e2,0); | |
3664 g_expr_u(assign_expr0(stack_top(d),caddr(e1),d,d)); | |
3665 jmp(e3=fwdlabel()); | |
3666 fwddef(e2); | |
3667 g_expr_u(assign_expr0(stack_top(d),cadddr(e1),d,d)); | |
3668 fwddef(e3); | |
3669 if (d==INT) emit_pop_free(emit_pop(0)); | |
3670 else emit_dpop_free(emit_dpop(d),d); | |
3671 return t; | |
3672 | |
3673 �ϡ�����ޤ��ɤ��ʤ���register machine �ʤ餤��������ɡ� | |
3674 �빽���������Ѥ�뤫�顢code-$(ARCH) �˰ܤ��������������ʡ� | |
3675 | |
3676 | |
187 | 3677 �ʤ�arg_reording() ���� |
3678 PowerPC | |
3679 fnptr->dsp = arg_reorder(reverse0(sarg),reverse0(fnptr->dsp)); | |
3680 IA32 | |
3681 fnptr->dsp = arg_reorder(sarg,fnptr->dsp); | |
3682 �Ȥ������ȤˤʤäƤ���ߤ���������ʤ��������ʤ��Τ͡��ɤ����褦���ʡ� | |
3683 ����ϡ��狼��ޤ����� | |
3684 | |
325 | 3685 case COND: /* a?0:1 should consider non-branch instruction */ |
187 | 3686 case DCOND: |
3687 case FCOND: | |
3688 d = (car(e1)==COND?INT:car(e1)==DCOND?DOUBLE:FLOAT); | |
3689 e2=fwdlabel(); | |
3690 b_expr(cadr(e1),0,e2,0); | |
3691 g_expr0(caddr(e1)); | |
3692 t = creg; | |
3693 jmp(e3=fwdlabel()); | |
3694 fwddef(e2); | |
3695 g_expr0(cadddr(e1)); | |
3696 code_set_fixed_creg(t,1,d); | |
3697 fwddef(e3); | |
3698 return d; | |
3699 | |
3700 �ʤ�����ɡ�t ��creg����ia32 �Ǥ�virtual register �ʤΤǡ��ѹ������ | |
3701 ���Ȥ����롣(���ޤä�������) | |
3702 | |
188 | 3703 COND�ˤ� type �줿���������ߤ����͡�a?b:c type ��list5���� |
3704 | |
3705 | |
3706 void (*signal ()) (int); | |
3707 | |
3708 ������� signal ����� function ���Ȼפ��롣 | |
3709 | |
3710 recursive macro | |
3711 #define stdout stdout | |
3712 | |
3713 main() | |
3714 { | |
3715 register double d; | |
3716 int i = stdout; | |
3717 d *= i; register float �ؤ� assop | |
3718 return (int)d; | |
3719 } | |
3720 | |
3721 �Ȥ����櫓�ǡ�nkf �� system ��/usr/include/stdio.h ��ư���ޤ����� | |
3722 �ʤ����줷���� | |
3723 | |
191 | 3724 ptr_cache ��mr �ϳΤ���̵�̤�����... ��α���ƤޤǼ����� |
3725 ���ͤϤʤ���ʤ����ʡ��Ǥ�32bit�ȤäƤ뤫�ʤ�ʤ��� | |
3726 lvar cache �ߤ����ʤ�Τ������ɡ��ޤ��������ޤ� | |
3727 ���ʤ顢�쥸�����μ�̿�Ȥ�����Ф��������ʡ����� | |
3728 | |
193 | 3729 Wed Dec 3 13:11:15 JST 2003 |
3730 | |
3731 ����åɤȤ����� | |
3732 �äƤ������������Ĥ�thread library�Ȥ��ƻȤ��ˤϤɤ�����Ф�����? | |
3733 env �� return ����������? | |
3734 | |
3735 ��ʸŪ���̤ˤ����������������ɡ� | |
3736 | |
3737 Sun Dec 14 16:26:19 JST 2003 | |
3738 | |
3739 long long ����? �任�ϥ��֥롼����ƤӽФ��ߤ����� | |
3740 | |
3741 float/double ���� long long, unsigned long long �ؤ��Ѵ��⤤��Τ��� | |
3742 F2LL | |
3743 D2LL | |
3744 F2ULL | |
3745 D2ULL | |
3746 LL2F | |
3747 LL2D | |
3748 ULL2F | |
3749 ULL2D | |
3750 ������(���ɤ����������ɤ�) | |
3751 | |
3752 (�ܵ�? �ɤ줯�餤������? 2-3�����ʤ�...) | |
266 | 3753 (�ºݤˤ�Ⱦǯ�����ä�...) |
194 | 3754 |
325 | 3755 getsym �ο����ΰ�����unsigned�Ǥ���٤�����͡� |
194 | 3756 �ǡ�- �����ä�����overflow �Ф���Τ��ɤ���ʡ� |
3757 | |
3758 ���ȡ�strol �Ȥ���overflow�θ��ФܤäƤ�ʡ� | |
3759 | |
3760 Fri Jan 2 09:53:53 JST 2004 | |
3761 | |
3762 goto hoge(...,next); | |
3763 fuagua....; | |
3764 | |
3765 �ߤ����ʹ�ʸ���? Fortran �ߤ���.... | |
3766 (���) | |
3767 | |
3768 Sat Jan 3 17:12:46 JST 2004 | |
3769 | |
3770 FEATURE_LONGLONG | |
3771 FEATURE_FLOAT | |
3772 | |
3773 �ߤ����ʴ����� feature ����������ɤ�? ��ǽ�����䤹���� | |
3774 �Ȥ��������ɤ��ʤ���������顣 | |
3775 | |
3776 LE�Ȥ�LT�ϡ�GE,GT���֤��������������ɡ�����������ΤȤ��ˤ� | |
3777 dual_op �����촹�������㤦�Τǡ���äѤ�ɬ�פʤߤ����� | |
3778 | |
3779 Mon Jan 5 15:55:37 JST 2004 | |
3780 | |
3781 byte code format �Ȥ������ϡ���äѤ�byte code encode | |
3782 ���줿��ʸ�ڤ��ߤ��������͡� | |
3783 | |
3784 �Ĥ��Ǥ� interpreter ���뤫��byte code interpreter �ǤϤʤ��ơ� | |
3785 (�ǤϤʤ���?) code ������®��������顢code�������ʤ���¹Ԥ��� | |
3786 �����ɤ��͡���äѤꡢincore compiler ���� | |
3787 | |
3788 inline �ʤ������... #define ���֤���������? | |
3789 inline int hoge(int hoga1) { hoge2 } | |
3790 �ϡ� | |
3791 #define hoge(hoga1_0) { | |
3792 #define hoga1 ((int) hoga1_0) | |
3793 int hoga1 = hoga1_0; hoge2 } | |
3794 �Ǥ����櫓����͡��ǡ������ return ������... | |
3795 | |
3796 ��������6�Ǥ��ʡ� | |
3797 | |
3798 inline �ϡ����Τޤ�string�Хåե��ˤ�����ǡ��ؿ��ƤӽФ����� | |
3799 ���������������������� | |
3800 | |
3801 �����ϡ�#define hoga1 ((int) hoga1_0) ���Ƥ����� | |
3802 Ÿ����λ���˸����᤹ | |
3803 | |
3804 �������Ǥ⡢����ѿ����ޤ������� | |
3805 | |
3806 �Ȥ������Ȥϡ���äѤꡢ���ξ�ǹ�ʸ���Ϥ��Ƥ��ޤ��Τ��ɤ��� | |
3807 inlined LVAR (ARG) | |
3808 ��ξ����ɬ�ס�tree �Υ��ԡ��ʤ���Ÿ�����뤳�Ȥϲ�ǽ? (�Ǥ�����������...) | |
3809 | |
3810 �Ȥ������Ȥϡ���äѤꡢ���湽¤�ˤ�node���꿶��٤�����͡� | |
3811 | |
3812 order 1 compiler + JIT + intensive optimizer | |
3813 | |
3814 �Ǥ����͡� | |
3815 | |
195 | 3816 Wed Jan 14 10:21:49 CET 2004 |
3817 | |
3818 function call�� compiler �γ��˽Ф��ʤ����ʤ��� | |
3819 code function_interface(args) { | |
3820 ..... | |
3821 push(args); (in asm) | |
3822 push(next); | |
3823 goto function... | |
3824 } | |
3825 code function_continuation(args) { | |
3826 } | |
3827 �ߤ����ʴ�����... �ޡ��٤��ʤ����������... | |
3828 | |
3829 �Ǥ⡢��������С�����ѥ���ΰܿ������Ū��ñ�ˤʤ롣 | |
3830 | |
3831 Thu Jan 15 11:52:03 CET 2004 | |
3832 | |
3833 stack �ϡ� | |
3834 system wide �˰�� ( classical environment) | |
325 | 3835 code �˰�� ( Fortran type ) |
195 | 3836 object �˰�� (like message buffer in ABCL) |
3837 �äƤ�������⤢��͡� | |
3838 | |
3839 Sun Jan 18 11:08:13 JST 2004 | |
3840 | |
3841 (�ʤ��٤����ʤ�����... CPS �Ѵ���...) | |
3842 | |
3843 shift/reset ��C�Ǽ�������Τϴ�ñ����... | |
3844 reset{ | |
325 | 3845 shift(); |
195 | 3846 } |
3847 �ߤ����ʴ���? | |
3848 | |
3849 stack / data structure ���ݸ����ˡ�ˡ���äȲ���������� | |
3850 �ʤ����ʡ� | |
3851 | |
3852 �ؿ��ƤӽФ��ʤ������... | |
3853 | |
3854 apply �ߤ����ʤΤ�����Ф���? | |
3855 goto apply(function_name,continuation(return_type),args....); | |
3856 ���ʡ��ǡ�������ʬ��C/asm �ǽȤ����櫓�͡� | |
3857 �ޡ�����ʤ��褦�ʤ�Τ���(����?) ������ʬ���� interpreter Ū�� | |
3858 �ʤä��㤦�ʡ�varargs �Ǥ⤤���������... | |
3859 | |
3860 ����ѥ����CbC�ǽȸ�����Ȥ��ĤäƤ��������... | |
3861 | |
3862 ������äѤꡢlong long �ϡ���... �Ǥ����? | |
196 | 3863 |
3864 | |
3865 Mon Apr 5 00:20:13 JST 2004 | |
3866 | |
3867 �ְ㤨��3��ʬ�ä�����ä����� | |
3868 | |
325 | 3869 int �Ǥ� RLVAR �Ȥ��� unsigned/signed �ζ��̤��ʤ��Ȥޤ�����͡� |
196 | 3870 |
3871 ���Ū�ʥƥ��ȥ롼�����ä�����������long.c ��ä�����ä����� | |
3872 | |
201 | 3873 Fri Apr 9 02:11:42 JST 2004 |
3874 | |
3875 ��äѤ� incore compiler �ȡ�non textural syntax ���ߤ����� | |
3876 �ޡ���������͡� | |
3877 | |
3878 ���ȡ�#include �� search path �Υ��ޥ�ƥ�������ľ���ʤ��ȡ� | |
203 | 3879 |
3880 Mon Apr 12 12:19:35 JST 2004 | |
3881 | |
3882 3461 if (!integral(t=cadr(type))&& | |
3883 3462 !(t==FLOAT||t==DOUBLE) && | |
3884 3463 !(t==LONGLONG||t==ULONGLONG) && | |
3885 3464 (car(t)==STRUCT||car(t)==UNION)) { | |
3886 | |
3887 ����ʤ��ơ�t>0 && (car(t)==STRUCT||car(t)==UNION)) { | |
3888 ����ʤ���? | |
3889 | |
205 | 3890 |
3891 Wed Apr 14 14:26:04 JST 2004 | |
3892 | |
3893 creg �ʤ�����ɡ�ľ�ܥ쥸�����������Τ��ȡ�ʣ���쥸������ | |
3894 �Ȥä� double / long ���פäƤΤ���ꤺ�餤�������顢 | |
3895 register �ѿ��������Τ�������ʤ�? �Ǥ⡢��������� | |
3896 �ѹ���¿���ʤ뤱��... | |
3897 | |
3898 free_register �δط������뤫�顢��äѤꡢ�����Ѥ��ʤ��� | |
3899 ������͡� | |
3900 | |
3901 creg/freg ��ߤ�Τϡ�MIPS�� float/double ����̤��� | |
3902 ɬ�פ����뤿�ᡣ���λ��ˡ�creg ��¤�β�����٤����ä� | |
3903 �ߤ������͡� | |
3904 creg = { ireg, freg, dreg } | |
3905 �ߤ����ˤ��Ƥ��ɤ��ä��櫓���� | |
3906 | |
3907 �⤷�����ơ�regv �äƻȤäƤʤ���? (��������...) | |
3908 | |
3909 register �� list �ǻ���? ����ˤ����? | |
3910 regs[0] = glist4(LREGISTER,use,r1,r2) | |
3911 regs[0] = glist3(REGISTER,use,r1) | |
3912 �ߤ����ʴ���? ������... ������ϡ� | |
3913 ireg_list | |
3914 dreg_list | |
3915 freg_list | |
3916 lreg_list | |
3917 ���ʡ��Ǥ���? �ճ��ˤ��ɤ�������ptr cache �Υ����ɤ⤢�뤷�� | |
3918 | |
3919 �ޤ���conservative �ˤ������� | |
3920 | |
3921 lreg �ϡ��Ѷ�Ū�˲������ʤ��Ȥޤ������ɡ��ɤΥ����ߥ�? | |
3922 �Ȥ�������creg �⤽�Υ����ߥDz��������ɤ���ʤ�? | |
3923 �ա��� | |
3924 | |
3925 gexpr_init() �Υ����ߥDz������Ƥ⤤��������ɡ�������ȡ� | |
3926 gexpr_0 �Dz��äƤ���Ȥ��˲�������ʤ����ɡ� | |
3927 g[long long hoge] | |
3928 �ߤ����ʾ��Ǥϡ�����Dz��������ߤ������? | |
3929 | |
3930 use_int �Ȥ��� lreg �ϲ��������ɤ���ʤ�? | |
206 | 3931 |
3932 creg =0 �� free_register(creg) ���ƤФ�Ƥ���͡����ä��ʡ� | |
207 | 3933 |
3934 Sat Apr 17 17:01:02 JST 2004 | |
3935 | |
3936 long long register �ǡ�regs�� regv ������ | |
3937 ɬ�פϤʤ���regs �����̤��Ѱդ��ơ�regv �ǤϤʤ��ơ� | |
3938 lreg_h��lreg_l�ߤ����ʴ����ˤ��롣 | |
208 | 3939 |
3940 ������register full ����������������������ä����ʤ��� | |
209 | 3941 |
3942 Wed Apr 21 17:32:40 JST 2004 | |
3943 | |
3944 unsigned ��cosnt��������������ʤ�? | |
210 | 3945 |
3946 Thu Apr 22 12:33:04 JST 2004 | |
3947 | |
212 | 3948 �褦��äȡ�int/float ���������ޤ����� |
3949 | |
210 | 3950 lrexpr �ϡ�codegen �ǡ�long �η����֤���������������? |
3951 �Ǥ⡢������ȡ�64bit �黻�ݡ��Ȥ��Ƥ���CPU�����줷�� | |
3952 �ʤ����� | |
212 | 3953 |
3954 ���ȡ��⤦����! �Ǥ⡢2,3�������ꤽ���� | |
3955 loprtc �⡢���ä�����������ʤ�? (�ޤ�....) | |
3956 | |
213 | 3957 Fri Apr 23 14:40:02 JST 2004 |
3958 | |
3959 ���Ȥϡ�switch, inline, stdargs, alloca ���ʡ� asm �⤢�뤫�� | |
3960 asm �ϡ�����äȼ�ݤ��鳰��뤫�餤������ | |
3961 | |
3962 PowerPC ��alloca �ϡ���������������������ʡ� | |
3963 | |
3964 join ������? | |
3965 | |
3966 a?a,b:a,b �äƵ�������? | |
3967 | |
3968 "" ����Υޥ�����Ÿ������Ƥ��ޤ���Ǥ����ɡ�(�ޡ������ʤ������) | |
214 | 3969 |
3970 #hoge ��̵�뤹�뤫�����Τޤޤˤ��뤫... | |
3971 | |
3972 Sat Apr 24 14:39:14 JST 2004 | |
3973 | |
3974 long long op int, unsigned long long op int/unsigned | |
3975 | |
3976 �äƤΤ�����Τ�.... ������... | |
219 | 3977 |
3978 Sun Apr 25 17:20:40 JST 2004 | |
3979 | |
3980 �������ʤ��Τ˥ƥ��ȥ롼���������ʤ衣���� register lassop | |
3981 | |
3982 compiler ��ˤ�... | |
3983 (1) parser ��� | |
3984 (2) code ��������� | |
3985 (3) compiler ��compile ���顼���� | |
3986 (4) compiler �Υ�����������ǥХå����� | |
3987 (5) �������������ɤ�������֥���̤뤫�ɤ�����ľ�� | |
3988 (6) �������������ɤ����������ɤ�����Ĵ�٤� | |
3989 �ǡ�(4) �ޤǤǤ��ޤ����� | |
3990 | |
220 | 3991 |
3992 ��äѤꡢuse_int �Ȥ��äơ��ʤ�Ȥʤ����ᡣ����� | |
3993 ��ͳ�������������ʤ����ۤȤ�ɥХ��Ϥ������� | |
3994 �������Τ͡� | |
3995 | |
3996 use_int �Ȥ��ϡ�codegen �Ǥ�ä��㤤���ʤ��ơ� | |
3997 ��äȤⲼ��code������ʬ�Ǥ��ʤ��Ȥ����ʤ���ʤ�? | |
3998 ����Ǥ����Τ�? | |
221 | 3999 |
4000 ������������ | |
4001 | |
4002 creg ���Ф������Фä��ꤸ��ʤ��Τǡ�code_xxxx(xxxx,creg) | |
4003 �Ȥ����褦�ˤʤäƤ��롣��������ȡ�creg �γ��� | |
4004 creg = use_int(creg) ����ɬ�פ����롣���͡� | |
4005 | |
4006 void | |
4007 code_lvar(int e2,int reg) { | |
4008 creg = use_int(creg); | |
4009 lvar_intro(e2); | |
4010 printf("\tla %s,",register_name(reg)); | |
4011 lvar(e2); | |
4012 } | |
4013 | |
4014 ���ȡ�reg ���֤˹��ʤ������٤졣 | |
4015 | |
4016 reg ��creg �ʳ�������Τϡ�����Ū�ˤ� assign_opt �ϤǤ��͡� | |
4017 ����� creg ��ľ���С������� | |
4018 | |
4019 void | |
4020 code_lvar(int e2,int reg) { | |
4021 if (reg==-1) { | |
4022 creg = use_int(creg); | |
4023 reg = creg; | |
4024 } | |
4025 lvar_intro(e2); | |
4026 printf("\tla %s,",register_name(reg)); | |
4027 lvar(e2); | |
4028 } | |
4029 | |
4030 �ߤ�����? | |
4031 | |
4032 #define use_int(reg) if (reg==-1) reg = use_int0(reg) | |
4033 void | |
4034 code_lvar(int e2,int reg) { | |
4035 use_int(reg); | |
4036 lvar_intro(e2); | |
4037 printf("\tla %s,",register_name(reg)); | |
4038 lvar(e2); | |
4039 } | |
4040 use_int0(int reg) { | |
4041 creg = ireg; | |
4042 return creg; | |
4043 } | |
4044 | |
4045 ���ʡ� #define ��? �ޡ��ɤä��Ǥ⤪��ʤ��褦�ʤ�Τ��� | |
4046 | |
4047 �Ǥ⡢������ѹ�¿���ʤ��� | |
4048 | |
4049 Mon Apr 26 05:35:24 JST 2004 | |
4050 | |
4051 �����no long long ���̤ä��ߤ����������� | |
4052 | |
223 | 4053 ��¤�Τ����ͤ���ľ��ˡ��������ʤ��Ȥ��ޤ������ʤ��� |
224 | 4054 |
325 | 4055 #include "" �ϡ����ɤ�Ǥ���ե������current directory ��õ���� |
226 | 4056 |
4057 �ޤ���ia32 �ϡ�eax,edx ��long,long ���Ѥ�ǡ����Ȥϡ� | |
4058 �Х���Ƿ�����櫓�͡������������ʡ��ष���� | |
4059 �䤵�������⡣ | |
227 | 4060 |
4061 ��������������long �ΰ������Ϥ����ϡ� | |
4062 r10 �ϥ쥸�������Ĥ�ϥ��������櫓�͡� | |
230 | 4063 |
4064 Wed Apr 28 13:01:13 JST 2004 | |
4065 | |
4066 �����֡��̤�ޤ�����ltosop �ϡ����ꡣ | |
4067 | |
4068 drexpr, lrexpr �� cond ��������Ƥʤ��ä��� | |
4069 | |
4070 ��ư�������θ����Ϥɤ����褦��ʤ���? printf ������? | |
4071 | |
4072 �������ʤ��ޤ���printf ���ɽ��ѿ�������Ƥ���͡� | |
4073 | |
4074 ���������С��ɽ��ѿ��Υ��饤���ȤϹ�碌�Ƥʤ����ɤ�����? | |
231 | 4075 |
4076 unsigned �äơ��⤷�����ơ��⤦�����롼�뤬ʣ��? | |
4077 / % << > | |
4078 I op I I I I I | |
4079 I op U I I I I | |
4080 U op I I I U I | |
4081 U op U U U U U | |
4082 �Ǥ�ʤ����� | |
4083 | |
4084 �ʤ���������ľ������ˡ��ʤ�Ǥʤ��ʡ� | |
232 | 4085 |
4086 code_bool ��jmp��Ȥ��ΤϤ����ˤ�ޤ�����͡������ͤ��� | |
4087 | |
4088 ��������float/double printf("%d",f0>f1) �ο����ͤ�����ȿž���� | |
4089 �Х������ʤ��� | |
4090 | |
4091 code-gen.c ������ư��������float.c ���������ᡣ | |
4092 �ʤ��ޤ�ǤǤ�����ư���Ƥ���ߤ���.... | |
4093 | |
4094 function() ����ǡ�lreg ��input register�ȽŤʤäƤ��ޤ��� | |
234 | 4095 |
4096 Thu Apr 29 19:40:08 JST 2004 | |
4097 | |
4098 �ɤ��狼��ʤ������̤ä��� | |
239 | 4099 |
4100 Sun May 2 09:40:21 JST 2004 | |
4101 | |
4102 ��äѤ� LREGISTER �ʤ�ƺ���ʤ��ä���code_lconst | |
4103 �Ȥ��� edx,eda �� dsi,edi pair �����ؤ�����ʤ��ȡ� | |
245 | 4104 |
4105 Thu May 6 08:33:23 JST 2004 | |
4106 | |
4107 ia32, powerpc �Ȥ� long long �ޤǡ��̤�ޤ�����ia32 ��콵�� | |
4108 �����ä��������ϡ�MIPS, ARM �Ǥ��ʡ� | |
4109 | |
4110 ����ѿ�+���ե��å� ( heap[3] �ߤ����ʤ�) �ǡ� | |
4111 heap+24 �Ȥ��Фʤ�����Ȥ�Ȥ� offset,y ���ä����� | |
4112 ����ʤ��ä�������ɤ͡� | |
4113 | |
4114 �ߴ�����ΤƤƤ��ޤ��С�����ѿ��ݥ���Ƴ�����Ƥ� | |
4115 ����������ɡ�������32bit �ʾ�Υ��ե��åȤ���RISC | |
4116 ̿����Ȥޤ����� | |
4117 | |
4118 ���֥������Ȼظ����Ȥ��Τ�����ϲ�褹�������ɤ͡� | |
4119 | |
4120 longlong/float ��regression�Ϥ���������ɡ��⤦���� | |
4121 �����������ä�������������͡� | |
246 | 4122 |
4123 �ʤ�Linux ��include directory �äơ��ɤ��ˤ��ʤ�ʤ���? | |
4124 | |
4125 assop �ǡ� | |
4126 calc left exp | |
4127 move creg,dreg | |
4128 move const,creg | |
4129 op creg,(dreg) | |
4130 �äơ���äƤ���Τʤ��Ѥ���ʤ�? | |
4131 | |
4132 a && b �ǡ�b ��bool������Ƥ���Τ��ѡ�use �Υե饰 | |
4133 ��Τ��ɲä����顣 | |
4134 | |
4135 | |
4136 Sat May 8 21:29:32 JST 2004 | |
4137 | |
4138 ��ư��������long long��������Ʊ���ͤϰ�ĤˤޤȤ��٤�����͡� | |
4139 Ϣ�� list ���Ļ��Ƥ��ɤ����������� | |
249 | 4140 |
4141 string ��ޤȤ�뤫�ɤ����ϡ�const ���ɤ����ˤ��櫓����... | |
4142 | |
4143 RETURN register ������ν��������������ޡ����礦���ʤ����� | |
4144 | |
4145 MIPS ��debug�ˤ����������ɡ����ϻ�����������ʡ��ʤ�ǡ� | |
4146 ��ä���Ǥ��ʤ��ä��Τ���gcc modification �Ϥɤ�����? | |
4147 | |
4148 ������ register �� 0 �����äƤʤ��Ȥ���ΤϤޤ����ä� | |
4149 ���äƤ���Τ�... | |
4150 | |
4151 float �� normal register ���Ѥ�Τ��� | |
4152 | |
4153 s.s $f4,16($sp) | |
4154 mov.s $f12,$f0 | |
4155 mov.s $f14,$f1 | |
4156 mfc1 $6,$f2 | |
4157 mfc1 $7,$f3 | |
4158 jal f | |
4159 | |
4160 �ޡ�����������ɤ���(�Ǥ⡢�ʤ��$4,$5 ��Ȥ�ʤ����?) | |
4161 | |
4162 long long ��4,5,6,7 �����쥸�������Ѥޤʤ����ޡ���������ɡ� | |
4163 | |
4164 �����쥸�����Υ����֤äƼ�ʬ�Ǥ��Τ���(���㡢mask �äƤʤ� | |
4165 ����...) �äƤ��Ȥ�entry �Ϥ��Ȥǽ��Ϥ��ʤ��Ȥ�����͡� | |
4166 | |
4167 �ޤ������������ä��ʤ�����... �٤������顼���ĤäƤ���ʡ� | |
4168 | |
4169 ��äѤ� codegen �γ�ĥˡ���äƤ����ʤ��ȥ�����͡� | |
4170 | |
4171 �ؿ��ƤӽФ��ѡ��Ȥ�CbC���Ȥǽʤ��Τ��ʤ��� | |
4172 ���ޤ�ˤ��ɤ��������� | |
251 | 4173 |
4174 cpload �ϡ�gp �쥸�����ν����˴ط�����餷����gp �쥸�����äƲ�? | |
4175 cploat $25 �� $25 �ϡ�stack offset �ߤ����͡�$sp ���ѹ�����Ȥ��ˡ� | |
4176 �ʤΥե饰������ʤ��褦�ˤ��뤿��ν����ߤ����� | |
4177 | |
325 | 4178 ���Ȥ���С�code segment ¦��stack�����ˤ˰�ư����ΤϤޤ���? |
252 | 4179 |
4180 float/double �Υե����� mc-parse �Ǥϡ�����������������ߤ����� | |
254 | 4181 |
4182 �ϡ��ɤ��Ȥ���.... | |
4183 | |
4184 cprestore, mask �η� | |
4185 offset �ι�碌 | |
4186 | |
4187 �������ư����? �������? | |
4188 | |
4189 ������ | |
4190 int endian; | |
4191 extern int endian; | |
4192 ���̤�ɬ�פ�����Τ͡��ޤ����ե饰�ΰ�������������.... | |
255 | 4193 |
4194 Thu May 13 12:58:58 JST 2004 | |
4195 | |
4196 .frame �ο����ˤ� input variable ��saveʬ�������ʤ���? | |
4197 | |
4198 code_l1 �� ll0 �����������ʤ�Τϡ�strtoll ��int���������Ƥ뤫�顣 | |
4199 | |
4200 function ��argument��ʣ���ʤ�Τ�������ƹԤ��Τ��롼��ʤΤ͡� | |
4201 �ޡ���������ʡ��Ǥ��ʤ����ȤϤʤ�.... | |
4202 | |
4203 �����ʤΤ����ǽ�˥롼�פ������ʣ���ʤ�Τ�쥸�����ʤ��ѿ��ʤ� | |
4204 ���������ơ������ꥹ�Ȥ��֤������Ƥ��ޤ����ɤ����Ĥ��Ǥˡ� | |
4205 ��������٤��ѿ��Ϥ����Ƿ����Ƥ�����... (�äơ�����äơ� | |
4206 parallel_assignment �Ǥ�äƤ��뤳�Ȥ�Ʊ����) | |
4207 | |
4208 ������ʬ��codegen �Ǥ�äƤ⤤���������... ia32 �Τ褦�ʾ��� | |
4209 �ष�����פʤΤ��� | |
4210 | |
256
d80e6387c539
powerpc function call complex arugment pre computation.
kono
parents:
255
diff
changeset
|
4211 �Ǥ⡢��äѤꡢ�ճ���ʣ�����衣struct ��ɤ����뤫�Ȥ����� |
d80e6387c539
powerpc function call complex arugment pre computation.
kono
parents:
255
diff
changeset
|
4212 |
258
22949117768f
Complex function argments. Struct is done. Long long is odd.
kono
parents:
256
diff
changeset
|
4213 struct �ϡ�call memmove ���������ɡ������Ĥ���ˤ��櫓�ˤ� |
22949117768f
Complex function argments. Struct is done. Long long is odd.
kono
parents:
256
diff
changeset
|
4214 �����ʤ�����ˤ��ȡ����δ֤�function call�������Ƥ��ޤ��� |
22949117768f
Complex function argments. Struct is done. Long long is odd.
kono
parents:
256
diff
changeset
|
4215 ��˻��ä��ɤ��ȡ�input register �������Τǡ���äѤꡢ |
22949117768f
Complex function argments. Struct is done. Long long is odd.
kono
parents:
256
diff
changeset
|
4216 ���̰�������ɬ�פ����롣�äƤ��Ȥ�... |
22949117768f
Complex function argments. Struct is done. Long long is odd.
kono
parents:
256
diff
changeset
|
4217 complex function argument |
22949117768f
Complex function argments. Struct is done. Long long is odd.
kono
parents:
256
diff
changeset
|
4218 struct copy |
22949117768f
Complex function argments. Struct is done. Long long is odd.
kono
parents:
256
diff
changeset
|
4219 simple arguments |
22949117768f
Complex function argments. Struct is done. Long long is odd.
kono
parents:
256
diff
changeset
|
4220 �äƤ������֤Ǥ����ɤ��äƤ��Ȥ�.... ������ |
22949117768f
Complex function argments. Struct is done. Long long is odd.
kono
parents:
256
diff
changeset
|
4221 |
22949117768f
Complex function argments. Struct is done. Long long is odd.
kono
parents:
256
diff
changeset
|
4222 (�����Ǥ�ʤ�������?) |
22949117768f
Complex function argments. Struct is done. Long long is odd.
kono
parents:
256
diff
changeset
|
4223 |
22949117768f
Complex function argments. Struct is done. Long long is odd.
kono
parents:
256
diff
changeset
|
4224 function argument �η��ǡ�long long register ���˲������Τϡ� |
22949117768f
Complex function argments. Struct is done. Long long is odd.
kono
parents:
256
diff
changeset
|
4225 �ʤ���ˡ��������ʤ���? ���衢lreg �����Ϥ��Ǥ���٤�����͡� |
22949117768f
Complex function argments. Struct is done. Long long is odd.
kono
parents:
256
diff
changeset
|
4226 �ޤ��ͤ��� |
22949117768f
Complex function argments. Struct is done. Long long is odd.
kono
parents:
256
diff
changeset
|
4227 |
259 | 4228 ʣ���ʤ�Τ�������������ɤ��äƤ��Ȥϡ������å����Ѥ� |
4229 ������������������ɤ��äƤ��Ȥ��� | |
262 | 4230 |
4231 �ޡ�����ϤǤ����Ȥ���... | |
4232 | |
4233 Sat May 15 22:45:30 JST 2004 | |
4234 | |
4235 ��ɡ�.cprestore �ϡ��ǽ�ˤʤ��Ȥ����ʤ��Τǡ�include �� | |
4236 �Ȥ������ʤ��餷���� | |
4237 | |
4238 add.s ����ư�������쥸��������������ʤ����ɡ� | |
263 | 4239 |
4240 Sun May 16 13:58:42 JST 2004 | |
4241 | |
4242 ����ϥ쥸������save���͡��Ȥä��쥸�����ϥ����������θ�� | |
4243 �����狼��ʤ��Τǡ�������jmp ����Ф���������ɡ��ɤ�� | |
4244 ����? | |
4245 | |
4246 subu $sp,$sp,$L_r1_offset | |
4247 .cprestroe | |
4248 sw $fp,$L_r1_offset-16($sp) | |
4249 sw $31,$L_r1_offset-160($sp) | |
4250 addu $fp,$sp,$L_r1_offset | |
4251 jal $L_save-$L_save_label*4 | |
4252 addu $fp,$fp,$L_fregister_save | |
4253 jal $L_fsave-$L_fsave_label*4 | |
4254 move $fp,$sp | |
4255 | |
4256 ... | |
4257 sw $17,-12($fp) | |
4258 sw $16,-8($fp) | |
4259 $L_save: | |
4260 j $31 | |
4261 ... | |
4262 s.s $f22,-16($fp) | |
4263 s.s $f21,-12($fp) | |
4264 s.s $f20,-8($fp) | |
4265 $L_fsave: | |
4266 j $31 | |
4267 | |
4268 �ߤ����ʴ����ˤ���? ����ȡ�ɬ��$31��save���뤳�Ȥˤʤ뤱�ɡ� | |
4269 noreorder ���ʤ��Ȥ��ᤫ�⡣ | |
4270 | |
4271 ������������ѥ��Ȥ����ɡ� | |
4272 subu $sp,$sp,$L_r1_offset | |
4273 .cprestroe | |
4274 sw $fp,$_Lr1_offset-16($sp) | |
4275 sw $31,$_Lr1_offset-160($sp) | |
4276 j $L_save | |
4277 $L_fsave_0: | |
4278 move $fp,$sp | |
4279 | |
4280 ... | |
4281 $L_save: | |
4282 ... | |
4283 sw $17,-12($sp) | |
4284 sw $16,-8($sp) | |
4285 s.s $f22,-16($sp) | |
4286 s.s $f21,-12($sp) | |
4287 s.s $f20,-8($sp) | |
4288 j $L_save_0 | |
4289 | |
4290 �������������ʡ�save ����ɬ�פ��ʤ���С� | |
4291 j $L_save | |
4292 $L_save_0: | |
4293 move $fp,$sp | |
4294 | |
4295 $L_save = $L_fsave_0 | |
4296 | |
4297 �ȤǤ��뤷�� | |
4298 | |
4299 ξ����äơ����ַפ�? | |
4300 | |
4301 �ޤ������Ԥ������ŤäƤ��뤷��̿���Ū�ˤ��Ѥ��ʤ����顢 | |
4302 space factor Ū�����Ԥ�����®����ʤ���? | |
265 | 4303 |
266 | 4304 �Ǥ��Ԥ�������ñ����ʡ� |
4305 | |
265 | 4306 Mon May 17 01:09:02 JST 2004 |
4307 | |
4308 ���ơ�������֥���̤�褦�ˤʤ�ޤ�����... | |
4309 | |
4310 �ɤ��⡢$0,$1���ФƤ��ޤ���礬����ߤ���������Ф��� | |
4311 ���ʤ��ä������ɤ��͡� | |
4312 | |
4313 ���ȡ�int �θ��double/longlong �ϡ�$3 �Τ��ȡ�$5,$6 �� | |
4314 ���ߤ����Ǥ��͡� | |
266 | 4315 |
268 | 4316 ���ơ����褤�衢���ե��åȹ�碌���� |
4317 | |
4318 Tue May 18 13:05:24 JST 2004 | |
4319 | |
4320 �ʤ쥸���������֤��ܤ��ܤ������max_reg_var �Ȥ����� | |
4321 �����ȥ쥸�����θĿ���ɽ���褦�ˤ����衣 | |
271 | 4322 |
4323 Wed May 19 13:49:40 JST 2004 | |
4324 | |
4325 endian �˴ؤ��륳���ɤϡ������ȥ������ˤ����������ɤ��͡� | |
4326 | |
4327 �䤡���ʤ�Endian�����ʤ��衣���� | |
4328 | |
4329 printf �� $6,$7 ��Ʊ���ͤ��Ϥ��Ƥ���Τˡ� | |
4330 | |
4331 diff test/code-gen-all.gcc.out test/code-gen-all.mc-mips.out | |
4332 53,54c53,54 | |
4333 < code_lrindirect ffffffffffffffc9 37 c8 80 | |
4334 < code_lrindirect -55 55 200 128 | |
4335 --- | |
4336 > code_lrindirect 37ffffffc9 37 c8 80 | |
4337 > code_lrindirect 240518168521 55 200 128 | |
4338 | |
4339 �Ȥʤ�ΤϤʤ�Ǥ�����? 37 �� overwrite ����Ƥ���Τ��� | |
4340 �Ǥ⡢37�Υݥ������������������ʡ�37���Τϥ쥸�����ˤ� | |
4341 ��äƤʤ����� | |
272 | 4342 |
4343 Wed May 19 22:15:33 JST 2004 | |
4344 | |
4345 ������������Х��ϼ��Ƥ����櫓�����ɡ��ʤ� | |
4346 ��̯�ˤ櫓�狼��ʤ��Х����ĤäƤ���ʡ� | |
273 | 4347 |
4348 MIPS�ä�const �Τ������ʤ������͡����ä��顢*4���餤 | |
4349 ��shift���������ɤ����⡣ | |
4350 | |
4351 Thu May 20 21:46:17 JST 2004 | |
4352 | |
4353 register_dassop ��ƥ��Ȥ��Ƥʤ��ơ������ɤ�ְ�äƤ롣 | |
275 | 4354 |
4355 chptrsave �ʤ�����ɡ� | |
4356 case hoge: | |
4357 macro_replace() | |
4358 �ǡ�case hoge: ����λ����ȡ�getsym�����ɤߤǡ�macro_replace | |
4359 ��Ÿ�����ơ������� lfree ( chptrsave = list2(hoge,chptrsave) )�˾�äƤ��ޤ��� | |
4360 docase �ǡ�lfree = slfree ����ȡ�����list2 ���˲�����Ƥ��ޤ��� | |
4361 �Ĥޤꡢslfree=lfree;.... getsym ...; lfree=slfree �ϡ��������ʤ��� | |
4362 �ʤΤǡ�list2 ����ʤ��ơ�glist2 ���ơ�free_glist2 ���Ƥ��褦�ˤ��롣 | |
4363 | |
4364 �Ǥ⡢���⤽�⡢macro_buffer �ϡ��ɤ��ʤ�? �����ΰ�Ϻ����Ѥ����Τ�? | |
4365 �����Ǥʤ��ȵ����macro��줿�Ȥ��˵��ޤ�����cheap �ϡ�malloc | |
4366 ���Ƥ⤤����ʤ����ʤ��� | |
4367 | |
4368 code-gen-all.c �� simp1.c ���̤ä�������ɡ�basic.c ����̯�� | |
4369 �̤�ʤ����ʤ�Ǥ��ʡ�diff ��͡� | |
4370 | |
4371 Fri May 21 13:09:10 JST 2004 | |
4372 | |
4373 switch �ʤ�����ɡ�long long ���̤��������͡� | |
4374 | |
276 | 4375 �ʤ��ʤ�self compile���̤�ʤ��ʡ����٤ϡ�getsym ������äѤꡢ$gp |
4376 ��Ϣ? | |
4377 | |
4378 ����ʸ�η��������ͤη��ˤʤäƤ���������ʥХ������ޤ��� | |
4379 �ĤäƤ����Ȥϡ� | |
4380 | |
4381 double register �ν������ʤ���dead lock ����ʡ� | |
4382 | |
4383 �����ȡ�double register ��conflict ���ޤ���ʤ��� | |
4384 �������� function �Ǥϵ����ʤ��餷����... | |
4385 �Ȥ������Ȥϡ�set_[dl]operand �����꤫�� | |
277 | 4386 |
4387 ��äѤ� register parallel assign ��Τ���ñ����͡� | |
278 | 4388 |
4389 slt/beq �äƤΤ������ޤ�ư���Ƥʤ��ߤ����͡� | |
4390 | |
279 | 4391 |
4392 Sat May 22 12:49:55 JST 2004 | |
4393 | |
4394 �ʤ�¤�Τ���Ƭ�ϥ쥸�������֤��ߤ�����... �������ɡ� | |
4395 $5,$6,$7 ���� | |
280 | 4396 |
4397 continuation frame �ϡ�$sp=$fp �ˤ����? �ؿ������� | |
4398 $fp���Ѥ�Ǥ��뤫�顢��������ɬ�פ�����櫓�����ɡ� | |
4399 ���������$fp �����ư�����ʤ��Ȥ����ʤ������͡� | |
4400 �ޤ���PowerPC�Ǥ⡢�������Ƥ���櫓�����ɡ� | |
4401 | |
4402 jal ��� $gp ����᤹�櫓�����ɡ����Υ��ɥ쥹�� | |
4403 ��ޤäƤ��뤷������֤���ɬ�פ�ʤ����ɡ� | |
4404 $sp ���Ф��Ȥޤ����ʤ��� | |
4405 | |
4406 fmask,mask �Ȥ����פ�ʤ���ʤ���? ���⤽�� | |
4407 �ʤ�Ǥ���������? | |
4408 | |
4409 (gdb) x/20i carg1 | |
4410 0x400a80 <carg1>: lui $gp,0xfc0 | |
4411 0x400a84 <carg1+4>: addiu $gp,$gp,30128 | |
4412 0x400a88 <carg1+8>: addu $gp,$gp,$t9 | |
4413 0x400a8c <carg1+12>: addiu $sp,$sp,-144 | |
4414 0x400a90 <carg1+16>: sw $gp,32($sp) | |
4415 0x400a94 <carg1+20>: move $s8,$sp | |
4416 0x400a98 <carg1+24>: sw $s2,16($s8) | |
4417 0x400a9c <carg1+28>: sw $s1,20($s8) | |
4418 0x400aa0 <carg1+32>: lw $t3,-32692($gp) | |
4419 0x400aa4 <carg1+36>: lw $a0,0($t3) | |
4420 0x400aa8 <carg1+40>: lui $t2,0xf000 | |
4421 | |
4422 �Ȥ����褦�� .cp ��Ϣ���Ѵ�����롣�����ϼ�ʬ�Ǥ�ä� | |
4423 �����ɤ�������ɡ� | |
4424 | |
4425 �֥����� jal �ߤ����ˤ��Ѵ�����ʤ��Τ����ޤ���? | |
4426 | |
4427 0x400b00 <carg1+128>: move $a1,$s5 | |
4428 0x400b04 <carg1+132>: move $a2,$s4 | |
4429 0x400b08 <carg1+136>: move $a3,$s3 | |
4430 0x400b0c <carg1+140>: lw $t9,-32664($gp) | |
4431 0x400b10 <carg1+144>: jalr $t9 | |
4432 0x400b14 <carg1+148>: nop | |
4433 0x400b18 <carg1+152>: lw $gp,32($s8) | |
4434 | |
4435 ��äѤ� sp ���Ф� $gp �ϥ����֤����Τ���jalr �� | |
4436 ��ʬ���������������¿����� | |
4437 | |
4438 *.i �������Τ��ɤ����� .include �� | |
4439 �ե�����̾������롣���ϥե���������Ф��� | |
4440 .i ����٤��� | |
4441 | |
4442 a.c b.c �Τ褦�ˤĤʤ���Ȼߤޤ�ʤ��ʤ롣(-D�Υ롼�פ�?) | |
4443 | |
4444 �빽����ӤΥХ����ĤäƤ��뤸��������Ӥ�embug��������͡� | |
4445 | |
4446 long long ����Ӥ� int ����Ӥ��������ѥ롼������ä����� | |
4447 �ɤ��ʤ�? | |
282 | 4448 |
4449 �Ĥ������ޤä����ְ�äƤޤ����� | |
4450 | |
4451 Sun May 23 17:10:59 JST 2004 | |
4452 | |
4453 ��ä�MIPS���ž�ä��衣�ޤ���code jump �ϡ��Ǥ��Ƥʤ����ɡ� | |
4454 | |
4455 ���⤽�� external jump���Ǥ��뤫�ɤ���Ĵ�٤Ƥʤ��ʡ� | |
4456 | |
4457 slt $r1,$r2,12 �ߤ����ʥ����ɤ�Ф�������... | |
4458 | |
325 | 4459 parallel_rassign �ä� target=source ��̵�¥롼�פ��ʤ�? |
282 | 4460 |
4461 Sun May 23 21:21:22 JST 2004 | |
4462 | |
4463 ��äѤꡢboolean �ΰ������ʤ���jmp�Ǥʤ������ɤ���͡� | |
4464 | |
4465 Mon May 24 07:11:57 JST 2004 | |
4466 | |
4467 �ؿ��ƤӽФ��ΰ����ϡ���äѤ�$sp���ե��åȤ��Ѥ�٤��Ǥ��礦�� | |
4468 �Ǥʤ��ȡ�$fp!=$sp �λ��ˤ��������ʤ롣($s8=$fp) | |
4469 | |
4470 code ��������ѿ����ɤ�ʤ��� | |
4471 | |
4472 0x401170 <main1>: lui $gp,0xfc0 | |
4473 0x401174 <main1+4>: addiu $gp,$gp,28352 | |
4474 0x401178 <main1+8>: addu $gp,$gp,$t9 | |
4475 0x40117c <main1+12>: addiu $sp,$sp,-144 | |
4476 0x401180 <main1+16>: sw $gp,16($sp) | |
4477 0x401184 <main1+20>: sw $ra,136($sp) | |
4478 0x401188 <main1+24>: b 0x401234 <main1+196> | |
4479 0x40118c <main1+28>: sw $s8,132($sp) | |
4480 0x401190 <main1+32>: move $s8,$sp | |
4481 | |
4482 0x400aa0 <carg1>: lui $gp,0xfc0 | |
4483 0x400aa4 <carg1+4>: addiu $gp,$gp,30096 | |
4484 0x400aa8 <carg1+8>: addu $gp,$gp,$t9 | |
4485 0x400aac <carg1+12>: addiu $sp,$sp,-144 | |
4486 0x400ab0 <carg1+16>: sw $gp,32($sp) | |
4487 0x400ab4 <carg1+20>: move $s8,$sp | |
4488 | |
4489 �Ǥ�����$t9 �äƤʤ������? | |
4490 | |
4491 0x401290 <main+48>: lw $t9,-32744($gp) | |
4492 0x401294 <main+52>: addiu $t9,$t9,4464 | |
4493 0x401298 <main+56>: jalr $t9 | |
4494 0x40129c <main+60>: nop | |
4495 0x4012a0 <main+64>: lw $gp,16($s8) | |
4496 | |
4497 ���줫���äƤ��Ȥϡ�����Ƥ����̤ꡢ | |
4498 printf("\tj %s\n",s); | |
4499 �ǤϤ���ʤΤ͡� | |
4500 | |
4501 $t8 �ϡ�$25 �äƤ��Ȥϡ�$t9 ��$26? jmp��ߤ������͡� $jp? | |
4502 cpload $25 ��$25 ����ʤ���? ���㤡�� | |
4503 jrn = register_name(cadr(jmp)); | |
4504 printf("\tmove $25,%s\n",jrn); | |
4505 printf("\tjal\t$31,$25\n"); | |
4506 ����Ф����Τ���? | |
4507 | |
4508 .ent ���ʤ��äƤ�����⤢�뤱��... ���������ä��褿���� | |
4509 �ɤ�����? (���⤽�⡢code �äơ�������ƤӽФ����?) | |
4510 | |
4511 printf("\tla $25,%s\n",s); | |
4512 printf("\tj\t$25\n"); | |
4513 | |
4514 �Ǥ����ߤ������͡� | |
4515 1,9d0 | |
4516 < arg1: 0 1 2 3 4 : 1 1 | |
4517 < arg1: 1 2 3 4 0 : 1 1 | |
4518 < args: 1 2 3 4 0 : 1 1 | |
4519 < 321=0 | |
4520 < args3: 11 22 33 44 55 : 1 2 3 4 | |
4521 < args4: 11 22 33 44 55 : 2 3 4 1 | |
4522 < args5: 66 77 88 99 10 : 3 4 1 2 | |
4523 < args6: 66 77 88 99 10 : 3 4 1 2 | |
4524 < args3: 66 77 88 99 10 : 3 4 1 2 | |
4525 make: [check-code] Error 1 (ignored) | |
4526 +pstwo1+kono ./a.out | |
4527 arg1: 0 1 2 3 4 : 0 0 | |
4528 arg1: 1 2 3 4 0 : 0 0 | |
4529 args: 0 263785888 4200109 2712942 0 : 0 0 | |
4530 Segmentation fault | |
4531 �ޡ�������������͡� | |
283 | 4532 |
4533 | |
4534 0x401180 <main1+16>: sw $gp,16($sp) | |
4535 | |
4536 0x401298 <main+56>: jalr $t9 | |
4537 0x40129c <main+60>: nop | |
4538 0x4012a0 <main+64>: lw $gp,16($s8) | |
4539 | |
4540 ���ΰ�Ӥ��ʤ��Τ��Ƥ�.... $sp!=$fp �ˤ���ȡ�$gp ������� | |
4541 ���ޤ���call ������ $fp=$sp �ˤ���Ȥ�����⤢�뤬.... | |
284 | 4542 |
4543 ��ɡ���ʬ�ǡ� | |
4544 lw $gp,16($sp) | |
4545 ����ΤDz�衣 | |
4546 | |
4547 Mon May 24 13:26:54 JST 2004 | |
4548 | |
4549 MIPS �� jump �ϡ��Ǥ��ޤ�����MIPS��R1SAVE���ʤ��Τ͡�R1SAVE | |
4550 �������㴳�����ʵ��⤹�뤬������֤�����ΤϤ��������ʤ��� | |
4551 �͡� | |
4552 | |
4553 leave �ǡ�control ��ɬ�� on �ˤʤ�Τϲ���? | |
4554 | |
4555 ���ϡ���äѤꡢc2cbc �Ǥ��礦�� | |
285 | 4556 |
4557 (float) f == 1.0 �� double ���Ѵ����Ƥ���ʡ� | |
4558 | |
4559 register oprtc ���� | |
4560 move $4,$20 | |
4561 addu $4,$4,16 | |
4562 move $20,$4 | |
4563 �Ȥ��ʤ�Τ��ᤷ���ʤ�? | |
4564 | |
4565 Tue May 25 05:14:30 JST 2004 | |
4566 | |
4567 indirect jump �ǡ�$25 ���������������ɡ� | |
4568 ����˲�����ɬ�� simple �ˤʤ뤫�顢�����Ǥ� | |
4569 $25 ��ľ�������Ǥ���͡�move ��ĸ�����������ɡ� | |
4570 | |
4571 pcond �ϡ�pcond_const ����Ĥ٤��� | |
4572 | |
4573 cmp/jcond �ϡ���Ĥǽ������������ɤ���switch ʸ�� bne $6,1,$L_11 | |
4574 �Ȥ��Ǥ��������ɤ���͡� | |
4575 | |
4576 struct proto tcp_prot = { | |
4577 .name = "TCP", | |
4578 .close = tcp_close, | |
4579 .connect = tcp_v4_connect, | |
4580 .disconnect = tcp_disconnect, | |
4581 .accept = tcp_accept, | |
4582 .ioctl = tcp_ioctl, | |
4583 .init = tcp_v4_init_sock, | |
4584 | |
4585 �ϡ���������͡����ä�����������ʡ�(����ʤ����ʤ���) | |
4586 ��������ö�����ꥹ�Ȥˤ��ʤ��ȳ�Ǽ�Ǥ��ʤ��������ߤ������� | |
4587 �ɤ��ʤ�������? ʸ������Ф�����? | |
4588 | |
297 | 4589 ��äѤꡢ����ʤ����ʤ�������äơ����ξ��emit_data/ |
4590 decl_data �Ǥ��ʤ���͡�local �ξ���assign ����˥���ѥ� | |
4591 �뤹�뤳�ȤϤǤ��������ɡ�global �ϡ�assign_data �ǡ��ʤ� | |
4592 ���Υ��塼������뤫��mode �����䤹�櫓�͡� | |
4593 | |
4594 decl_data ����Ƭ��getsym����ΤϤޤ����櫓�͡� | |
4595 while(t1) { | |
4596 offset = decl_data(car(t1),n,offset); /* alignment? */ | |
4597 .... | |
4598 } | |
4599 ������ˡ� | |
4600 | |
4601 getsym(); | |
4602 if (SYM==DOT) { | |
4603 smode=mode; | |
4604 sstlist = stlist; | |
4605 stlist = 0; | |
4606 if (mode!=LOCAL) | |
4607 mode = SNAMEMODE; | |
4608 while(sym!=RC) { | |
4609 type = search_struct_type(..&offset1); | |
4610 decl_data(car(t1),n,offset1); | |
4611 } | |
4612 if (mode== SNAMEMODE) | |
4613 emit_sname_assign(stlist); // global? | |
4614 offset += sizeof(struct); | |
4615 stlist = sstlist; | |
4616 mode=smode; | |
4617 } else { | |
4618 while(t1) | |
4619 offset = decl_data(car(t1),n,offset); /* alignment? */ | |
4620 .... | |
4621 } | |
4622 �ߤ����ʴ���? nest �������ϡ�emit_sname_assign �Ǥ� decl_data | |
4623 ��Ƥ�ǡ����٥��塼������뤷���ʤ����� | |
4624 | |
285 | 4625 Mon May 31 19:08:57 JST 2004 |
4626 | |
4627 register_assop �ϡ�����������ɡ�register_assop_const �� | |
4628 �����ɤ��ɤ��ʤ��͡� | |
286 | 4629 |
4630 Wed Jun 2 13:12:35 JST 2004 | |
4631 | |
4632 rexpr �� value option ���դ��ơ� | |
4633 code_bool | |
4634 �Ǥϡ�rexpr,drexp ��Ƥ�����������������... && || �Ȥ��ɤ����� | |
4635 ���ʡ� | |
287 | 4636 |
4637 ���������ʤ��Ѥ��������ߥ����ĤäƤ���͡� | |
289 | 4638 |
4639 Thu Jun 3 13:16:33 JST 2004 | |
4640 | |
4641 code_bool �ϤǤ���������ɡ��ޤ�������������͡� | |
4642 | |
4643 code_bool �� !use �λ��ˡ�null branch���Ĥä��㤦����... | |
4644 �ޡ��������ʤ����� | |
292 | 4645 |
4646 Fri Jun 4 12:57:28 JST 2004 | |
4647 | |
4648 switch ʸ���������ɡ� | |
4649 | |
4650 main() { | |
4651 int i=3,j=1,k=0; | |
4652 switch(i) | |
4653 for(;j<10;j++) { | |
4654 case 3: k++; case 2: k++; case 1: k++; case 0: k++; | |
4655 } | |
4656 printf("%d\n",k); | |
4657 } | |
4658 | |
4659 �ʤ�����ɡ�j<10 �ʤɤ�ɾ����������jmp����ɬ�פ�����Τǡ��� | |
4660 ���caseʸ��jump���ʤ��Ȥ����ʤ�����jump ����ɬ�פ����뤫�� | |
4661 �����ϡ�switch �μ���ʸ��ºݤ�ɾ�����Ƥߤʤ��Ȥ狼��ʤ��� | |
4662 | |
4663 �ʤΤǡ� checkret() �ǡ����ν�����Ԥ������ɤ��� | |
4664 if (first_case) { | |
4665 jmp(first_case); first_case =0; | |
4666 } | |
4667 ���ʡ��⤷�����줬�Ԥ���ʤ顢�������table jump routine �Ǥ���٤��� | |
4668 | |
4669 switch ��ޤȤ��ΤϤ�ä����ɡ������Υ����ɤ���table | |
4670 �ϡ��ۤȤ�ɤǤʤ��͡�2ʬ�ڤϽФ뤱�ɡ�ID��Ϣ³����褦�� | |
4671 ���פ������������Τ��ʡ� | |
295 | 4672 |
4673 chunk �� merge ��algorithm ������.... O(N^2) ����͡� | |
4674 | |
4675 c0, c1, c2, ... cn | |
4676 | |
4677 �ǡ�(�ʤ������Ȥ���...) | |
4678 | |
4679 c0, c1, c2, ... cn | |
4680 +------------------+ rate | |
4681 +---------------+ rate | |
4682 +----------+ rate | |
4683 +----+ rate | |
4684 +-------------+ rate | |
4685 +----------+ rate | |
4686 +-----+ rate | |
4687 ... | |
4688 | |
4689 �Ȥ����Τ��롣((n-1)*(n-2)/2) �����ǡ����֡�rate �ι⤤��Τ� | |
4690 ���Τ����������Ȥϸ¤�ʤ�.... rate ����ʤ��ơ�cover Ψ�� | |
4691 �⤤��Τ������ɤ����õ�ˡ���ɤ��ơ��ޤ��� | |
4692 | |
4693 RATE �ʲ��Τ�Τ�õ�� (�������ʤ�) | |
4694 �����ơ�cover Ψ�ι⤤��Τ�Ȥäơ����٤Ƥ���Ԥ��� | |
4695 | |
4696 +------------+ rate 75% | |
4697 +-------++------+ rate 80% | |
4698 | |
4699 �ߤ����ʤΤ�ɤ����뤫������... �ơ��֥뤬���ʤ�����ͥ��? | |
4700 �ơ��֥뤬��Ĥ��ɤ��Ȥϸ¤�ʤ��� | |
4701 | |
4702 count ��¿���Τ� delta ���ۤʤ�Ȱ���Ū�ˤϤ��ᡣ | |
4703 | |
4704 +-------++---------+ rate 80% | |
4705 <------> �ߤ����ʷ��Ǽ��礦���⤢�롣 | |
4706 | |
4707 ���ξ��� cover rate ���Ѥ��ʤ��Τǡ�table rate �Ƿ�����? | |
4708 | |
4709 �����ȡ������������Ƥζ�֤��ȹ礻���������櫓�ǤϤʤ��� | |
4710 | |
4711 c0, c1, c2, ... cn | |
4712 +----+ rate ���줬 fix ����ȡ� | |
4713 +---------+ rate | |
4714 +-------------+ rate | |
4715 +-----+ rate | |
4716 ... �ʤɤ���������ʤ��� | |
4717 | |
4718 �����������Ƥ�����������Ƥ⤪��ʤ��Ϥ��� | |
4719 �����������ͤ�¿�����η��̤��ʤ��� | |
4720 | |
4721 �ޤ�����äѤꡢ | |
4722 | |
4723 for i (0..n) { | |
297 | 4724 c_i �� c_n �˸����äƲ�ǽ�ʸ¤���礹�� |
295 | 4725 �Ǥ��ʤ��ä��顢��������� |
4726 } | |
4727 | |
4728 �Ǥ���? | |
4729 | |
4730 �ޤ������������Ǥ���������ɡ��٤����Х����ĤäƤ��������͡� | |
4731 | |
4732 < # chunks 1 = sum 1/123 sum = 1 | |
4733 --- | |
4734 > # chunks 1 = sum 1/2 sum = 1 | |
4735 | |
4736 �ʤ�ƤΤ⤢�뤷�� | |
4737 | |
296 | 4738 merge ���礭���������äƤ��褦�ˤ�����ä����ɡ������� |
4739 ��̤��ɤ��ʤ��ߤ������ʹ֤ϡ�case 1: case 2: ... �Ȥ����褦�� | |
4740 ����͡�����ʤ����ʤ��Ϥ�������ľ���Τ����ݡ� | |
4741 | |
297 | 4742 Sun Jun 6 02:41:27 JST 2004 |
4743 | |
4744 ���ϥХ��ʥꥵ�����ǡ��ơ��֥���������륳���ɤ���ɤ��� | |
4745 ��������2ʬˡ���Ȥ��줤�ʥ֥����ѥ�����ˤʤ�ʤ���8ʬˡ�� | |
4746 �餤�ǽΤ�������ʤ����ʡ� | |
4747 | |
4748 case_group_1: | |
4749 if (c==case_2) goto case_2 ( or nested case_group ) | |
4750 if (c==case_3) goto case_3 | |
4751 .... | |
4752 if (c==case_8) goto case_8 | |
4753 goto default | |
4754 case_group_2: | |
4755 if (c==case_10) goto case_10 | |
4756 ... | |
4757 goto default | |
4758 cslabel: | |
4759 if (c==case_1) goto case_1 (*) | |
4760 else (c<case_1) goto default | |
4761 if (c==case_9) goto case_9 (*) | |
4762 else (c<case_9) goto case_group_1 (or table lookup ) | |
4763 if (c==case_17) goto case_17 (*) | |
4764 else (c<case_17) goto case_group_2 | |
4765 ... | |
4766 else goto default; | |
4767 | |
4768 ����... (*) �ϡ����ץ���ʤ������ɤ�CPU�⤢���������MIPS�Ȥ��� | |
4769 | |
4770 �ե�åȤ������ɤ����⤢��Ϥ���(��¬����?) | |
4771 | |
4772 Sun Jun 6 09:39:13 JST 2004 | |
4773 | |
4774 �ǡ�nested branch �ϡ��ɤ�����������ɤ���? recursive �� | |
4775 ������? bottom up �˽����Ȥ��������ɡ� | |
4776 | |
4777 #define CASE_INDEX_COUNT 8 | |
4778 switch_index(int chunk,int *cslist) { | |
4779 if (case count > CASE_INDEX_COUNT) { | |
4780 chunk1 = gather_chunk() | |
4781 chunk1 = switch_index(chunk,&cslist); | |
4782 | |
4783 while(chunks) { | |
4784 chunk = switch_index(chunk,&cslist); | |
4785 | |
4786 ���餤? (chunk �Ǥ���?!) ... ��... ���ä��顢merge_chunk | |
4787 �ǤǤ����ʤ���? �Ǥ�����������ɡ�����ä�ʣ�������뤫�� | |
4788 | |
4789 table ������ʤ顢ɬ�� index ��ɬ�ס� | |
4790 | |
4791 index ��table�ˤʤ뤳�Ȥä�... �����ˤϤ��뤫���Τ�ʤ����� | |
4792 ̵���ˤ���ФǤ��ʤ����ȤϤʤ�����������... | |
4793 | |
298 | 4794 Sun Jun 6 23:07:16 JST 2004 |
4795 | |
4796 level 1 table ��������������������ʤ��� | |
302 | 4797 |
4798 ���Υ��르�ꥺ����ȡ�10����Ϣ³���Ƥ���ơ��֥�� | |
4799 ������anomaly������äƻ��˺���͡��ơ��֥뤬ʬ����㤦�� | |
4800 �ޡ�����ʥ����ɤʤ��Ȼפ����ɡ� | |
4801 | |
4802 cmpdimm ��ľ���Τ�˺��Ƥޤ����� | |
4803 | |
4804 ���ȡ�delta!=1 ���ȡ��任�����Ȥ���;�꤬0�Ǥ��뤳�Ȥ��ǧ���ʤ��� | |
4805 �����ʤ���gcc �Ǥϡ�delta!=1 ��ɽ�ϽФ��ʤ��ߤ������͡� | |
4806 | |
303 | 4807 ���ȡ��Ԥ��褬Ʊ��case�ϡ�range check �ˤ���Ȥ�... |
4808 (�ޤ��ͤ�����) | |
4809 | |
4810 �ޡ�����ϤǤ��ޤ����� | |
4811 | |
302 | 4812 kernel �Ȥ� gcc �Ȥ� compile �Ǥ�����ɤ����ɤͤ��� |
303 | 4813 |
4814 Mon Jun 7 18:24:27 JST 2004 | |
4815 | |
4816 ���ơ����ϡ���¤�Τν��������c2cbc ����mc-tree ��ʬΥ���� | |
4817 | |
4818 �ɽ��ѿ��ν�������쥸�����ѿ��Ǥ���˴ؤ�餺�����å��� | |
4819 ��������Ƥ���ʡ� | |
304 | 4820 |
4821 gcc -E -c -DCONFIG_TASK_SIZE=4096 -DCONFIG_KERNEL_START=1 -D__KERNEL__=1 tcp_ipv4.c -I../../include > ~/src/device/test/struct_init.c | |
4822 | |
4823 kernel source �ϡ��ޤ����ᤤ��ʤ�? asm �Ȥ����뤷�� | |
4824 �Ǥ⡢asm �������ǤϤʤ����ɤ͡� | |
4825 | |
4826 stdarg �ϴ�ñ�ʤ�����ɡ�������Ѥ� C source ����äƤ������� | |
4827 �ɤ��͡�macro �����Ǥʤ� typedef �⤷������͡� | |
4828 | |
4829 "test" "test" �ϡ�macro ��ǤϻȤ��ʤ����äƤ������Ȥ�ɬ�פʤ�? | |
4830 �ɤ��������ȤDz�ᤵ��뤫�顣 | |
4831 | |
4832 hoge##name �ߤ����ʤΤΰ���������... hogefuga ���Ѵ����줿���ȡ� | |
4833 �ޤ���Ÿ������ɬ�פ���������͡� | |
4834 | |
4835 ������������ϡ�chptr ����������� macro processing ����ʤ��� | |
4836 macro �ϡ�getline �ǹԤ��뤫�顣������ | |
4837 | |
4838 ������line continuation �� macro �δط��ϱ��������ʡ� | |
4839 getch �� null ���֤��Τ�ǧ�����ɤ�������ɡ�¾�ΤȤ����� | |
4840 �ƶ����礭���� | |
4841 | |
305
117baacd1ed0
stdarg powerpc passed except long long (macro problem)
kono
parents:
304
diff
changeset
|
4842 ## l = va_arg(ap,long long); |
117baacd1ed0
stdarg powerpc passed except long long (macro problem)
kono
parents:
304
diff
changeset
|
4843 ## (*((longlong *)ap)++) |
117baacd1ed0
stdarg powerpc passed except long long (macro problem)
kono
parents:
304
diff
changeset
|
4844 |
117baacd1ed0
stdarg powerpc passed except long long (macro problem)
kono
parents:
304
diff
changeset
|
4845 ������macro �ط�����space �����Ƥ����ï������? |
117baacd1ed0
stdarg powerpc passed except long long (macro problem)
kono
parents:
304
diff
changeset
|
4846 |
117baacd1ed0
stdarg powerpc passed except long long (macro problem)
kono
parents:
304
diff
changeset
|
4847 ������������register ��ΰ����ϡ�varargs �ξ��ϡ� |
117baacd1ed0
stdarg powerpc passed except long long (macro problem)
kono
parents:
304
diff
changeset
|
4848 ���٤ƥ��������ʤ��Ȥ����ʤ��櫓�͡����㤡�� |
117baacd1ed0
stdarg powerpc passed except long long (macro problem)
kono
parents:
304
diff
changeset
|
4849 ��ư���������������Ϥɤ���ä�Ƚ�Ǥ����? |
117baacd1ed0
stdarg powerpc passed except long long (macro problem)
kono
parents:
304
diff
changeset
|
4850 |
117baacd1ed0
stdarg powerpc passed except long long (macro problem)
kono
parents:
304
diff
changeset
|
4851 Wed Jun 9 10:14:35 JST 2004 |
117baacd1ed0
stdarg powerpc passed except long long (macro problem)
kono
parents:
304
diff
changeset
|
4852 |
117baacd1ed0
stdarg powerpc passed except long long (macro problem)
kono
parents:
304
diff
changeset
|
4853 �������ʤ��ȡ��ʤ��ؿ��ΰ����η��Υ����å��Ƥʤ� |
117baacd1ed0
stdarg powerpc passed except long long (macro problem)
kono
parents:
304
diff
changeset
|
4854 �ߤ����� |
117baacd1ed0
stdarg powerpc passed except long long (macro problem)
kono
parents:
304
diff
changeset
|
4855 |
307 | 4856 stdarg �Ǥ��ޤ�����struct size �Υ��顼�Ϥʤ�? |
4857 | |
4858 �����ȡ� | |
4859 alloca | |
4860 asm | |
4861 struct partial field init | |
4862 hoge##name | |
4863 ���ʤ��͡��Ȥ��������������? (��ĥ���) | |
309 | 4864 |
4865 Thu Jun 10 17:57:35 JST 2004 | |
4866 | |
4867 struct partial field init �ϡ��Ǥ���������ɡ��ɽ��ѿ��ξ�� | |
4868 �ϡ��������ʬ��0�ˤ��Ƥ���ߤ����͡��Ĥޤꡢstatic �ˤȤäơ� | |
4869 ���ԡ����Ƥ���ߤ����͡������ɸ��Ū�ʥ��ޥ�ƥ������ʤΤ���? | |
310 | 4870 |
4871 ��äѤꡢ��ʣ����������ϵ�����ʤ��Τ����̤ʤΤ��� | |
4872 | |
4873 skipspc()=='.' ���ȥ����Ȥ������åפ���ʤ����ա��ࡣ | |
311 | 4874 �⤦�����衣skip flag �ǡ� |
4875 | |
4876 �ʤ�� macro_expansion �� | |
4877 c = 1; | |
4878 macrop = list2((int)macropp,macrop); | |
4879 while(c && (*macropp++ = c = *body++)) { | |
4880 �ʤ���Ѥʥ롼�פʤ��? | |
4881 | |
4882 Sat Jun 12 10:42:15 JST 2004 | |
4883 | |
4884 ��������inline �Τ���� constant switch �Ȥ�����ȡ�����Ū | |
4885 �� statement ��skip ����äƤΤ�ʤ��Ȥ����ʤ��櫓�͡�chk | |
4886 ��Ȥ����ɤ�����������ɡ�����ۤɡ����Ϥʤ�����.... | |
312 | 4887 |
4888 alloca �� r1 �� $sp ��ư�����Ƥ����������� | |
4889 | |
4890 �Ĥ�ϡ� | |
4891 alloca | |
4892 inline | |
4893 asm | |
4894 �ȸ������Ȥˤʤ�ޤ�����... MIPS ��stdarg��ư���Ƥʤ�����... | |
4895 ����� include file ��������Τʡ� | |
4896 | |
4897 typeof ������ | |
4898 typeof (hoge) i; | |
4899 sizeof(typeof(hoge)); | |
4900 ((typeof (hoge)) fuga) | |
4901 �ߤ����ʴ����� | |
313 | 4902 |
4903 �ʤ� g() �ǡ�register_save ���Ф���äƤ�͡� | |
4904 | |
4905 Sun Jun 13 12:20:39 JST 2004 | |
4906 | |
4907 ia32 �� alloca �ϡ��ؿ��ΰ����˸ƤӽФ����ΤϤޤ��������ȡ� | |
4908 stack ������⡢�ޤ��������㤡���ɤ������? | |
4909 a = alloca(3)+3; | |
4910 f(i,alloca(3),j); | |
4911 �ߤ����ʤΤǤ���þ�����㤦�Τ͡� | |
4912 | |
4913 powerpc �Ǥ�빽���������ʡ��ؿ��ƤӽФ����ΰ����ϡ� | |
4914 r1 ���ФǤĤޤʤ��Ȥ��ᡣ��������͡��Ȥ������� | |
4915 �ǽ餫�� r1 ���Ф��Ѥ�衣 | |
4916 | |
4917 lwz r2,0(r1) | |
4918 neg r0,r0 | |
4919 stwux r2,r1,r0 | |
4920 addi r2,r1,208 | |
4921 addi r0,r2,15 | |
4922 srwi r0,r0,4 | |
4923 slwi r0,r0,4 | |
4924 stw r0,208(r30) <=== �ǽ��local �ѿ��Υ��ɥ쥹�� | |
4925 b L26 | |
4926 L25: | |
4927 li r0,0 | |
4928 stw r0,208(r30) | |
4929 L26: | |
4930 | |
4931 �äƤ櫓���� | |
4932 | |
4933 ������ | |
4934 int i; | |
4935 goto f(alloca(100),&i); | |
4936 �ʤΤäƤ����͡����Ȥ���С�local �ѿ��ϤĤ֤��ʤ����� | |
4937 �����Τ�������������ñ����������������Ф� local �ѿ��� | |
4938 goto �ΰ����ϽŤʤ�ʤ����� parallel assignment ��ɬ�� | |
4939 �ʤ������ʤ�ǡ��ǽ餫�餽�����ʤ��ä��������? | |
4940 | |
4941 ����������������ˤϤɤ�ľ�����ɤ��������? max-func-arg? | |
4942 | |
315 | 4943 �ޤ������礨����alloca �� goto ��ξΩ���ʤ��äƤ��Ȥ� |
4944 ������ʤ�? ���ʡ�subroutine �Ϥ�����ɤ����������͡� | |
4945 | |
313 | 4946 Mon Jun 14 20:48:13 JST 2004 |
4947 | |
4948 PowerPC �� alloca ��ư��������... | |
315 | 4949 |
4950 Tue Jun 15 10:47:53 JST 2004 | |
4951 | |
4952 ��ä� inline ������ asm macro �����? asm macro �� constraints �� | |
4953 ���ꤹ��Ф���ʤ����ʤ��Ȼפ����ɡ� | |
4954 | |
4955 inline �ϡ������� CSE �Ȥ� flow ���ϤȤ����ʤ��Ȥ����ʤ�������ɤ͡� | |
4956 | |
4957 ������inline ����Τ��ɤ����� CbC �Ȥ������ˤ���ʡ� | |
4958 | |
4959 �Ȥ����櫓�ǡ�asm ���������������ʤ�? | |
4960 | |
4961 ia32 ��switch ʸ�����������ʤäƤ뤾�� | |
316 | 4962 |
4963 Wed Jun 16 13:05:40 JST 2004 | |
4964 | |
4965 asm �ϡ�({....; val;}) ����˼������ʤ��Ȥ��ᡣ���ȡ� | |
4966 local_decls �Ǥ� redefined �����ɡ��ʤ�����ˡ�����? | |
4967 ̵��äƤ⤤���������... | |
4968 | |
4969 association list ��Ȥäơ�unwind ������ɤ�������ɤ͡� | |
317 | 4970 ����ϡ�����Ū�˼�ľ�����������ɤ������ |
318 | 4971 |
4972 cheap �ΰ����� boundary �Ƥʤ��Τ����Ĥ�����͡� | |
4973 | |
4974 Thu Jun 17 17:10:21 JST 2004 | |
4975 | |
4976 �����ȡ� | |
4977 "m" �Ȥ��ϡ�������ѹ��ʤΤǸ��ʤ��Ƥ������ | |
4978 "r" �ϥ쥸�����������Ƥ� | |
4979 "=" �Ͻ��ϤΥޡ����ʤΤ�̵�뤷���ɤ� | |
4980 "+", "&" �Ͻ��ϤΥޡ����ʤΤ�̵�뤷���ɤ� | |
4981 �ǡ� | |
4982 "0" 0���ܤ�operand | |
4983 �Ȥ��ʤ������... �����Ĥ� input (��˥���ѥ��뤹����) | |
4984 �˸���롣�����顢output operand ����˽������롣out | |
4985 put operand ��ñ�������ʸ�����顢�����Ok�� | |
4986 | |
4987 Fri Jun 18 13:33:19 JST 2004 | |
4988 | |
4989 �ʤ�%0,%1 �Ȥ��äơ�Ʊ���쥸�����˳�꿶���뤳�Ȥ� | |
4990 ����ߤ����͡�����ˡ�Ϣ³���ƤǤ����Ȥ�¤�ʤ��ߤ����� | |
4991 | |
4992 �äƤ��Ȥ�? | |
4993 | |
4994 �ʤ��ְ㤨����%0...%8 �ϡ��ѥ����ν���� | |
4995 �����Ƥ���Τ͡���������ʡ� | |
321 | 4996 |
4997 Sat Jun 19 00:17:33 JST 2004 | |
4998 | |
4999 asm �Ͻ���ޤ������ޤ���ia32�Ȥ�MIPS�Ȥ��ϡ��ȼ������꤬ | |
5000 �������������ɡ� | |
5001 | |
5002 Sat Jun 19 06:40:30 JST 2004 | |
5003 | |
5004 label ��function local�ˤʤäƤʤ��ߤ����� | |
5005 | |
5006 builtin_expect ������ | |
5007 | |
325 | 5008 bit field ���������븫������ |
321 | 5009 |
5010 ��ɡ��������������ʤ��Ȥ��ᤫ�� | |
5011 q = (struct spin_lock) { }; | |
5012 | |
5013 �Ȥ��� | |
5014 | |
322 | 5015 typedef struct __wait_queue wait_queue_t; |
5016 | |
5017 struct __wait_queue { | |
5018 unsigned int flags; | |
5019 ... | |
5020 }; | |
5021 | |
5022 �äƸ��������� typedef �� struct ������������Ƥ��ޤ��� | |
5023 ����� struct def �ϡ�typedef ���줿��̾���Τ�褦���ʤ������� | |
324 | 5024 0 �ʤ顢type �� nptr �����äƤ���Τǡ������filed list��õ�����ɤ��� |
5025 | |
5026 ��ä�bit filed���ʤ��Ȥ��ᤫ���ɤ�����Τ��ʡ�type �γ�ĥ? | |
5027 | |
5028 bit field �����������ʤ���� | |
5029 | |
5030 �ޤ�����¤�Τ�������Ʊ���褦�ʷ��ˤ�����ɤ��櫓�����ɡ� | |
325 | 5031 |
5032 bit field �ν�����äƤΤ⤢��Τ���(������) | |
5033 | |
5034 ������äѡ��̤Ƥʤ��ʡ� | |
5035 ASSOP, PREINC, POSTINC.... | |
5036 �ޤ��� | |
5037 BASSOP, BPREINC, BPOSTINC.... | |
5038 �Ǥ⤤��������ɡ� | |
326 | 5039 |
5040 Sun Jun 20 20:21:38 JST 2004 | |
5041 | |
5042 �ɤ��⡢mc-parse �ˡ�mc-codegen ������������ʬ�����ʤ��������Ǥ��� | |
5043 �ߤ������͡������ܤ��ΤϤ��ɤ�������... binop �Ȥ�����Ȥ�� | |
5044 mc-codegen �ˤ���٤���ΤʤΤ��� | |
5045 | |
5046 �Ǥ⡢����ʤ��ȡ���ʸ���б�������ʸ�ڤ���ʤ��櫓���� | |
5047 inline �ǡ���ʸ�ڤ��ɾ��������⤢�뤫��ʤ�����ɾ������ | |
5048 ���ˡ���ʸ�ڥ�٥���ѹ�����٤��ʤΤ���������������٥�� | |
5049 �ڤǤ��٤��ʤΤ����Ȥ�������⤢��櫓���� | |
5050 | |
5051 macro ��ʬ�䤷�������ɤ��͡� | |
327 | 5052 |
5053 Mon Jun 21 00:29:12 JST 2004 | |
5054 | |
5055 mc-tree �ϡ��⤦�����٤졣�ڤ�Υ���������ɤ��� | |
5056 conv �⡢����ʤ�ʤ�? | |
5057 | |
5058 �ʤ���ʬ���Ѥ�����ä��ʡ�ư�����Τ����Ѥ����� | |
5059 | |
5060 �Ǥ������ static �ˤ���������... | |
5061 mc-codegen ����������Ȥ���� mc-parse.c ��extern | |
5062 �äƤΤ� C �Ǥ�ɽ���Ǥ��ʤ�����ö��extern ����ȻȤ��Ƥʤ��Ƥ� | |
5063 ���ˤ����ʤ��ʤ뤫�顣 | |
5064 | |
5065 mc-codegen �λȤäƤ����ѿ��Τ������ɤ줬static�ʤ�������ФǤ��ʤ��� | |
5066 | |
5067 emit_data_closing �ξ�꤬�ѡ� | |
328 | 5068 |
5069 Tue Jun 22 01:05:09 JST 2004 | |
5070 | |
5071 �褦��äȥꥫ�Х�Ǥ����衣 | |
5072 | |
329 | 5073 local scope { int hoge; ... { int hoge;... }} for(int i=0; hoge...) |
5074 �ϡ���餶������ʤ��������͡� | |
5075 | |
5076 Tue Jun 22 06:49:55 JST 2004 | |
5077 | |
5078 bit-field �� alignment �ϡ��������ƥ�����ˤ�ä�Ǥ�դä� | |
5079 �������ʡ� | |
5080 | |
5081 MIPS | |
5082 | |
5083 01:ffffffffffffffff | |
5084 02:fffffff0 0000001f 00000000 00000000 00000000 00000000 00000000 00000000 | |
5085 02:00000000 00000000 ffffffff 00000001 00000000 00000000 00000000 00000000 | |
5086 02:00000000 00000000 00000000 00000000 ffffffff 00000001 00000000 00000000 | |
5087 01:ffffffffffffffff | |
5088 02:fffffff0 000fffff 00000000 00000000 00000000 00000000 00000000 00000000 | |
5089 02:00000000 00000000 ffffffff 0000ffff 00000000 00000000 00000000 00000000 | |
5090 02:00000000 00000000 00000000 00000000 ffffffff 0000ffff 00000000 00000000 | |
5091 1:ffffffffffffffff | |
5092 2:fffffff0 0fffffff 00000000 00000000 00000000 00000000 00000000 00000000 | |
5093 2:00000000 00000000 ffffffff 00ffffff 00000000 00000000 00000000 00000000 | |
5094 2:00000000 00000000 00000000 00000000 ffffffff 00ffffff 00000000 00000000 | |
5095 | |
5096 PowerPC | |
5097 | |
5098 01:ffffffffffffffff | |
5099 02:0fffffff f8000000 00000000 00000000 00000000 00000000 00000000 00000000 | |
5100 02:00000000 07ffffff fc000000 00000000 00000000 00000000 00000000 00000000 | |
5101 02:00000000 00000000 03ffffff fe000000 00000000 00000000 00000000 00000000 | |
5102 01:ffffffffffffffff | |
5103 02:0fffffff fffff000 00000000 00000000 00000000 00000000 00000000 00000000 | |
5104 02:00000000 00000000 ffffffff ffff0000 00000000 00000000 00000000 00000000 | |
5105 02:00000000 00000000 00000000 0000ffff ffffffff 00000000 00000000 00000000 | |
5106 1:ffffffffffffffff | |
5107 2:0fffffff fffffff0 00000000 00000000 00000000 00000000 00000000 00000000 | |
5108 2:00000000 00000000 ffffffff ffffff00 00000000 00000000 00000000 00000000 | |
5109 2:00000000 00000000 00000000 00000000 ffffffff ffffff00 00000000 00000000 | |
5110 | |
5111 �����ϡ�mc-parse.c �ǤϷ����ʤ��Τ��� | |
5112 | |
5113 �ޤ��� | |
5114 boundary ��ޤ���ɤ߹��� (ɬ�����ꤵ�줿���Υ������˼��ޤ�) | |
5115 ���ˡ� | |
5116 �ɤ߹������ʬ�λ��ꤵ�줿bit���֤����� | |
5117 �ޤ� 0 �ˤ��ơ��֤������� or ����(?) | |
5118 �����ơ� | |
5119 ��� | |
5120 �äƴ����Ǥ����͡�64bit �Ϥ��ɤ������ʡ� | |
5121 | |
5122 �äƤ��Ȥϡ� | |
5123 and mask ��Ĥ��äơ�or mask ��Ĥ��äơ� | |
5124 �༡�¹� | |
5125 �äƴ����Ǥ������Ϥ����� | |
5126 | |
5127 BIT_FIELD ��size����ʤ��ȡ���������Ǥ��ʤ��� | |
5128 | |
5129 Wed Jun 23 14:06:10 JST 2004 | |
5130 | |
5131 (�����ϰ��ߤ���...) | |
5132 | |
5133 emit_data �ϡ�mc-codegen �ˤ���٤�����͡� | |
5134 | |
5135 bit_field ������ѿ��ν�������Ǥ��ʤ������ä��ɤä��� | |
5136 ����ʤ��Ȥ��ᡣassign_data level? | |
331 | 5137 |
5138 �ʤ�assign_expr �� ���� type ������ѿ������Ƥޤ����� | |
5139 ���줬�Ѥ��������Х��θ������ä��Τ��� | |
335 | 5140 |
5141 Fri Jun 25 00:00:46 JST 2004 | |
5142 | |
5143 �ʤ�Union �Υƥ��ȥ����ɤ�Ƥʤ��������롣 | |
336 | 5144 Union �ϡ��ְ�äƤޤ����� |
5145 | |
5146 bit field �ϤǤ��ޤ����� | |
337 | 5147 |
5148 �ʤ� MIPS ��gcc�ϡ�bit field �˥Х�����ߤ������͡� | |
338 | 5149 |
5150 Fri Jun 25 11:30:30 JST 2004 | |
5151 | |
5152 3249,3252c3249,3251 | |
5153 < // n = get_register_var(0); | |
5154 < g_expr_u(assign_expr0(n,list2(ADDRESS,cadr(e2)),INT,INT)); | |
5155 < e4 = rvalue_t(list2(INDIRECT,rvalue_t(n,INT)),type); | |
5156 < g_expr(assign_expr0(list2(INDIRECT,rvalue_t(n,INT)), | |
5157 --- | |
5158 > g_expr_u(assign_expr0(n,list2(ADDRESS,e2),INT,INT)); | |
5159 > e4 = rvalue_t(list2(INDIRECT,n),type); | |
5160 > g_expr(assign_expr0(list2(INDIRECT,n), | |
5161 3255,3256c3254 | |
5162 < if (car(n)==LVAR) free_lvar(cadr(n)); | |
5163 < else if (car(n)==REGISTER) free_register(cadr(n)); | |
5164 --- | |
5165 > free_lvar(cadr(n)); | |
5166 | |
5167 �ʤ�����ɡ�lassop ������Ǥ����ꤢ�ꤽ���� | |
5168 | |
5169 bassop ��ƤӽФ� BPOSTINC �ǡ�post �ν����ܤäƤޤ��� | |
5170 | |
5171 �äƤ�������bassop �ϴְ�äƤ��뤸��� | |
5172 | |
5173 bassign ���ä��顢�ɤ߽Ф���bit replace ���ɤ�������� | |
5174 op �������ä��顢bit_field �Ȥ����ɤ߽Ф��ơ� | |
5175 ��ö�������ͤˤ��Ƥ�������ʤ��Ȥ��ᡣ | |
5176 | |
5177 post �ν�����ʣ���ʤΤ����ѤΤ�������ɤ��� | |
5178 | |
5179 if (simple) { | |
5180 tmp_var = bit_field | |
5181 tmp_var op= operand | |
5182 bit_field = new_var | |
5183 } else { | |
5184 address = lvalue; | |
5185 tmp_var = address->bit_field | |
5186 tmp_var op= operand | |
5187 address->bit_field = new_var | |
5188 } | |
5189 if (post) tmp_var; | |
5190 | |
5191 �Ǥ����͡� | |
339 | 5192 |
5193 Fri Jun 25 14:49:57 JST 2004 | |
5194 | |
5195 �⤦����ʣ�����ä����Ǥ⡢����ޤ�����codegen level �� | |
5196 ����Τ��ɤ���͡� | |
5197 | |
5198 �ޤ���bit-field �⡢ | |
5199 | |
5200 constant assign �λ��κ�Ŭ�� (and/or mask �η�) | |
5201 1 bit �λ�������̿���Ȥ�? | |
5202 bit.r == 1 ��and 0x100 �˥���ѥ��뤹�� | |
5203 | |
5204 �Ȥ�����������뤳�ȤϤ��뤱�ɡ���̣�ʤ����... | |
343 | 5205 |
5206 Sat Jun 26 16:32:57 JST 2004 | |
5207 | |
5208 �ǡ�local �ѿ��ΰ���������.... | |
5209 | |
5210 ����ѿ����ɽ��ѿ�������̾���ե������̾����̾����٥� | |
5211 | |
5212 �Ȥ���櫓����͡��ǡ��������פ�Ǥ�դˤ������櫓���� | |
5213 | |
5214 nptr �ɽ�->�ɽ�->��� ��link����褦�ˤ�����ɤ� | |
5215 | |
5216 malloc ����褦�ˤ���? ����Ȥ�link����褦�ˤ��뤫�� | |
5217 | |
5218 ������hash ��̵���� lsearch ���Ƥ���Ȥ���������ʡ� | |
5219 hash ���̴ؿ��ˤʤäƤʤ����� | |
5220 | |
5221 | |
344 | 5222 Sun Jun 27 10:58:04 JST 2004 |
5223 | |
5224 �礷���ѹ����Ƥʤ����ɡ�ia32 code ���Х��ä��� | |
5225 | |
5226 Sun Jun 27 14:52:59 JST 2004 | |
5227 | |
5228 is_memory �ΥХ��Ǥ����� | |
5229 | |
5230 ���������С�double register pair ��parallel assignment�ä� | |
5231 ��äƤ�? | |
345 | 5232 |
5233 ������äѤꡢcodegen �� register pair ���Τ뤳�Ȥ����� | |
5234 ��褦�ˡ�list2(LREGISTER,high,low) �ߤ����ʷ��ˤ�������͡� | |
5235 �ʤ�ǡ�����ʤ���ä��ä�? | |
5236 list2(DREGISTER,list2(REGISTER2,high,low)) | |
5237 list2(LREGISTER,list2(REGISTER2,high,low)) | |
5238 list2(FREGISTER,list2(REGISTER,high)) | |
5239 �Ȥ�? | |
5240 list3(REGISTER,1,reg); | |
5241 list3(DREGISTER,2,reg,reg); | |
5242 list3(FREGISTER,1,reg); | |
5243 ���ʡ� | |
5244 | |
5245 ����������ɡ��ѹ�¿���ʤ�? �Ǥ⡢use_reg �Ȥ���ʣ������ͤ���ȡ� | |
5246 ������������������ʤ����ʤ��� | |
5247 | |
5248 �Ǥ⡢�ѹ�¿����͡������Ȥ��Ƥϡ�regs[] �� lregster ʬ���ʤ��� | |
5249 ���ळ�Ȥ��ʡ��Ǥ⡢�����˴�ñ�ˤʤ�Τ���? | |
5250 | |
5251 code_*() �ǥ쥸������ȤäƤ�����ʬ��������ɬ�פ����뤫�顢 | |
5252 ���ʤ��礭���ѹ��ˤʤ�Τ����Ǥ⡢code_*() �˰����Ϥ��ѿ��� | |
5253 ��ʸ��������Ǥ�Ʊ���ˤʤ�ΤϽ��פ���͡� | |
5254 | |
5255 ��ʸ�ڤǤΥ쥸�����ѿ��Υ�ˡ�������ݻ����ʤ��ȡ� | |
5256 if(r!=reg) | |
5257 printf("\tmr %s,%s\n",register_name(reg),register_name(r)); | |
5258 return; | |
5259 �ߤ����ʤΤ�����͡��Ȥ������Ȥ� reverse poiner ������äƤ� | |
5260 �Ȥ��� | |
5261 | |
5262 overlap ��Ȥ��ˡ���ʬ���Ȥ� overlap ���Ƥ��Ƥ�����ʤ��� | |
5263 ���������Ťʤ�ʤ��褦�˥��ԡ����ʤ��Ȥ��ᡣ�������ʤ��ȡ� | |
5264 ����ʹ�¤�Τ���ԡ�����Ϥ�ˤʤ롣 | |
5265 | |
5266 |---||--------------| | |
5267 | |
5268 |--------------||---| | |
5269 | |
5270 |--------------| |---| | |
5271 | |
5272 |--------------||---| | |
5273 | |
347 | 5274 �ߤ����ʴ������͡�����ϡ��ޤ��������Ƥʤ������͡� |
346 | 5275 |
5276 Sun Jun 27 21:06:28 JST 2004 | |
5277 | |
5278 ��äѤꡢname/namebuf ��Ϣ�Ͻ������Ǥ���? | |
5279 | |
5280 �ޤ���get_name/get_string �ϡ�cheap ��˥��ԡ����롣 | |
5281 �ǡ�new_def �Ǥʤ��ä����ˤ� cheap ���᤹�� | |
5282 name, namebuf �ϡ��ʤ����� | |
5283 | |
5284 string hash (oblist) -> hash table -> | |
5285 nptr -> macro/reserve/local/global/typedef etc | |
5286 | |
5287 �Ȥʤ롣local nptr �ϡ�local_scope list ����Ͽ���� | |
5288 scope ��ȴ����Ȥ��˾ä��� | |
5289 | |
5290 get_name/string ��t������Ͽ���Ƥ��ޤ���gserach/lsearch/msearch | |
5291 �ϡ���Ͽ���줿hash �����linked list ���ɤ���gsearch �� linked | |
5292 list �ˤ���ɬ�פ����롣nptr �ˤϡ�next ��Ĥ���? | |
5293 | |
5294 ������ARM �ˤ� fpp �Ϥʤ��Τ͡����䡢GBA�ˤϤʤ����ɡ� | |
5295 Zaurus �ˤϤ���äƤ����ѥ�����?! | |
5296 | |
5297 �äƤ��Ȥ�... MIPS �� PowerPC ��������dz�ä��褦�ʼ��� | |
5298 �ʤ��Ȥ����ʤ��Τ��������ࡣ | |
5299 | |
5300 macrobuf �ϡ�cheap �Ƕ�ͭ�Ǥ���Ϥ�����������С�linebuf �ʳ��� | |
5301 ��Ĥˤʤ롣linebuf ����ˤǤ��뤫��? ����ϡ�̵���ʤ������... | |
5302 cheap �ʤ�����ɡ�extendable �ˤ��뤿��ˤ�... | |
5303 | |
5304 struct cheap { | |
5305 char *cheap; | |
5306 char *last; | |
5307 struct cheap *next; | |
5308 } | |
5309 | |
5310 �Ȥ��ơ�����ؤΥݥ���cheap�Ȥ����Ѥ�����ɤ���cheapp �Ȥ��� | |
5311 ����Τǡ���ä�������.. | |
5312 | |
5313 Mon Jun 28 20:18:03 JST 2004 | |
5314 | |
5315 ���Τ���������ä��㤦�ȡ�chptr �� cheap �Ȥ��������顢 | |
5316 ���ä��⡢ľ���ʤ��Ȥ��ᤸ��� | |
5317 | |
5318 ���䡢����Ϥʤ���mappend �ǡ�ɬ�� cheap chunk �˼��ޤ�Ϥ� | |
5319 �����顣�빽��̵�̤��Ф��ǽ���⤢�뤱�ɡ��̤ˤ�����ʤ�? | |
5320 �����Ÿ������ macro �κǸ�������� cheap ����ϤߤǤ�Ȥ��� | |
5321 ������ɤ��ʤ�? 2M �Ȥ���Ÿ�������櫓�Ǥ�ʤ�����? | |
5322 | |
5323 mappend �� chunk boundary �ˤ������ copy �� append �� | |
5324 �����Ƥ��ޤ����ɤ�����cheap rest ���Ƥ��顢chptr �� | |
5325 ���ؤ��������餤��������ɤ��� | |
5326 | |
5327 Tue Jun 29 17:36:36 JST 2004 | |
5328 | |
5329 #define car(a) heap[a] | |
5330 ������... | |
5331 typedef struct tree { | |
5332 int id; | |
5333 int next; | |
5334 } TREE; | |
5335 �Ȥ��ơ� | |
5336 #define as_tree(a) (TREE)(heap[a]) | |
5337 TREE t = tree(a); | |
5338 if (t.id == HOGE) {.... | |
5339 �äƤ����褦�˥������������Ϥ����͡� | |
5340 #define tree(a) ((TREE)(heap[a])) | |
5341 if (tree(a).id == HOGE) {.... | |
5342 �Ǥ⤤������ | |
5343 | |
5344 conservative ���Ѥ������Τ���drastic ���Ѥ������Τ� | |
5345 �ɤä����衣 | |
5346 | |
5347 | |
5348 name space �ϡ�tag, macro, ����¾? typename �ϽŤʤäƤ��ƤϤ����ʤ��� | |
5349 field ���̤����ɡ�sc �Ƕ��̤���櫓������... | |
347 | 5350 |
5351 hash_search ���֤��Τ� name spcae assoc ����͡� | |
5352 | |
5353 �����name ������ȡ� macro Ÿ�����줿 chptr �������ǽ�������롣 | |
5354 cheap->ptr chptr | |
5355 |--------|-name1-| |-name2-|pppppppp| | |
5356 cheap->ptr chptr | |
5357 |--------|xxxxxxx| |-name1-name2-|--| | |
5358 ��ޤǥ��ԡ����Ƥ��Ф����������... | |
5359 chptr | |
5360 |--------|xxxxxxx| |-name1-name2-|pp| |pppppp| | |
5361 | |
5362 �Ǥ⡢chptr �ϡ�boundary �ˤ����뤳�ȤϤʤ�������顢�����������Ȥ� | |
5363 �����ʤ���ʤ���? chptr �Ϥ�����ʤ��Ƥ⡢cheap->ptr �ϡ������� | |
5364 ��ǽ�������뤫�� | |
5365 | |
5366 ����Υ��ԡ���������ơ�mappend �Ǥ�page ž�����ʤ��褦�ˤ���С� | |
5367 mappend �� reset_cheap ���Ƥ��ɤ��� | |
5368 | |
5369 Thu Jul 1 20:28:49 JST 2004 | |
5370 | |
5371 { int hoge; | |
5372 { int hoge; ....} } | |
5373 �����ɡ����� | |
5374 | |
5375 �ۤʤ��٥���äƤΤ�ɤ���äƸ��Ĥ����? define case �ϡ� | |
5376 �狼�뤫������פ����ʤ��ץ�����? | |
5377 | |
5378 hash -> name_space -> nptr | |
5379 global (typename, global, function) | |
5380 tag | |
5381 field | |
5382 local -> name_space | |
5383 label | |
5384 tag | |
5385 field | |
5386 | |
5387 �Ǥ���٤������? | |
348 | 5388 |
5389 Fri Jul 2 06:46:27 JST 2004 | |
5390 | |
5391 ����ʤ��ѹ�������äơ�ư���櫓�ʤ���͡� | |
349 | 5392 |
5393 ñ�Υƥ��Ƚ�? | |
5394 cheap | |
5395 hash | |
5396 ���餤? | |
351 | 5397 |
5398 ��äѤꡢ���Ѥ�����ȡ��⤦�������Ȥϻפ����ɡ� | |
5399 | |
5400 Fri Jul 2 23:38:14 JST 2004 | |
5401 | |
5402 ���ȡ��⤦����.. | |
353 | 5403 |
5404 ����ե���ѥ���ΥХ����Ȥ�ʤ��衣 | |
5405 | |
5406 �⤷������ȡ�void fuga(b,d,e,f) { return hoge(a,b,c,e) ; } | |
5407 �äƤ����ץ������Ǵ����ˡ�tail recursion ����ʤ顢 | |
5408 CbC �ȡ�����ʤ��ʤ�ʤ�? (����?) | |
5409 | |
5410 ����������ñ��? ���䡢�ؿ��ƤӽФ��ȸߴ�����ݻ����ʤ��Ȥ����ʤ� | |
5411 �Τǡ���äѤꡢ���ä������������쥸�����Υ����֤Ȥ����뤷�� | |
5412 | |
5413 ��������I2C, I2S, U2UC, U2US ��ɬ�פʤߤ������͡�����˱����ơ� | |
5414 code_i2c | |
5415 code_i2s | |
5416 code_u2uc | |
5417 code_u2us | |
5418 ��������� | |
5419 | |
5420 endian ��ͭ������ʤΤ������㤡��hash �ΥХ��Ȥϴط��ʤ��Τ͡� | |
5421 | |
5422 K&R argument �� redefined �����ǡ��������ѿ��ˤʤä� | |
5423 ���ޤ��� | |
355 | 5424 |
5425 Sat Jul 3 15:16:50 JST 2004 | |
5426 | |
5427 �褦��ä� recovery �Ǥ��ޤ����� | |
5428 | |
5429 global heap �γ�ĥ������͡��äˡ�heap �λȤ����� | |
5430 ���Ȼ��ʺ�������nptr,heap,local �Ȥ�integer �� | |
5431 ������������ʤ�Ȥ⤫���� | |
5432 | |
5433 �ޤ����������gcc �γ�ĥ��... �Ȥ��ʤ�... __label__ | |
5434 | |
5435 ��äѤꡢ��̾������ѿ��Ȥ��̤�̾�����֤���ʡ� | |
5436 | |
5437 �ޤ��ͤ��� code �����빽������եꥯ�Ȥ��Ƥ���ʡ��ޡ����������ɡ� | |
5438 | |
5439 ����黻�Ҥΰ������ά�Ǥ���Τ��� | |
5440 | |
5441 �����Ĥ�����Ϥ��뤬��kernel source �ϡ��̤�ޤ����� | |
356 | 5442 |
5443 Sun Jul 4 19:17:02 JST 2004 | |
5444 | |
5445 arg ����˴ؿ������äơ����줬����˴ؿ���������äƤ���ȡ� | |
5446 ���줬define����Ƥ��ޤ������줬�Ȥ����EXTRN1�ˤʤäơ� | |
5447 ̤����ؿ��ˤʤäƤ��ޤ��� | |
5448 | |
5449 �Ȥꤢ����������ʤ�Τ��ʡ� | |
5450 | |
5451 ���Ȥϡ� | |
5452 inline | |
5453 c2cbc converter | |
5454 �Ǥ��͡� | |
5455 | |
5456 inline �Ϲ⤯�դ����������ɡ� | |
5457 | |
5458 inline ��ޥ����Ǽ�������Τ����Ū��ñ�ʤ����͡������ɡ� | |
5459 c2cbc ��ͤ���ȡ���äѤꡢ��ʸ�ڤǼ�������٤��Ǥ���? | |
5460 | |
5461 global heap �ϳ�ĥ��ǽ����ʤ�? local heap ���ʤ����ˡ� | |
5462 ��Ф������ä����ĥ���Ƥ��ޤ���realloc �Ǥ������� | |
5463 pointer �ȤäƤ���Τ� scope ��������ʤ���? | |
357 | 5464 |
5465 ������äѤꡢglobal heap �γ�ĥ�ϡ�����ۤ�ñ�㤸��ʤ� | |
5466 �ߤ����͡� | |
5467 | |
5468 | |
5469 41c41,43 | |
5470 < int args,init_vars,heap[HEAPSIZE]; | |
5471 --- | |
5472 > int args,init_vars; | |
5473 > int *heap; | |
5474 > static int HEAPSIZE = HEAPSIZE0; | |
5475 236a234,245 | |
5476 > void | |
5477 > clear_lfree() | |
5478 > { | |
5479 > if (gfree>HEAPSIZE-LHEAPMARGIN) { | |
5480 > HEAPSIZE *= 2; | |
5481 > heap = realloc(heap,HEAPSIZE*sizeof(int)); | |
5482 > if (!heap) error(MMERR); | |
5483 > fprintf(stderr,"heap extended to %d\n",HEAPSIZE); | |
5484 > } | |
5485 > lfree= HEAPSIZE; | |
5486 > } | |
5487 > static void | |
5488 331a353,354 | |
5489 > if (!heap) heap = (int *)malloc(HEAPSIZE*sizeof(int)); | |
5490 > if (!heap) error(MMERR); | |
5491 | |
5492 ���餤�ǤϤ�����ᡣ | |
5493 | |
358 | 5494 �̤�����ʤ��Ǥ��뤸��ʤˤ�äƤ��? |
360 | 5495 |
5496 LDECL ����� nlist �ä������ˤ����? ����ʤΤ����뤫�顢�� | |
5497 �֤� nptr ����̵�̤ˤ��Ƥ�������͡�make_local_scope �� | |
5498 �����ɤ���ʤ����ʡ�macro �ϡ������ư���Ƥ���櫓������ | |
5499 | |
5500 �ʤ�struct ��������äȤ���ʤߤ������ʡ�type̾��local | |
5501 �ˤʤäƤ��ޤ�����? | |
5502 | |
5503 �ʤ�type �� tag ��global�ˤ���Τ��̤ä�����... scope | |
5504 �˴ؤ��Ƥϡ��⤦�����ƥ��Ȥ�ʤ��Ȥ�����ʡ� | |
362 | 5505 |
5506 Mon Jul 5 14:11:07 JST 2004 | |
5507 | |
5508 local label �͡��ޤ�����ñ�ʤ������... | |
363 | 5509 |
5510 lazy flag �ǡ� | |
5511 do if | |
5512 make l = listN(IF,cond,then,else) | |
5513 if(lazy) | |
5514 return l; | |
5515 else | |
5516 eval_if l; | |
5517 eval_if | |
5518 �ߤ����ʴ���? | |
364 | 5519 |
5520 Tue Jul 6 17:46:50 JST 2004 | |
5521 | |
5522 type �� tag �����ˤ����ʤ��ơ�tag ���ä�����衢 | |
5523 type �ϡ�LTDECL �ΤߤǶɽ�äƤ����褦�ˤ���٤�����͡� | |
5524 | |
5525 static �� global �ˤʤä���äƤ�ʡ� | |
365 | 5526 |
5527 ���������ʤ����ʤ�������ä��衣���� | |
366 | 5528 |
5529 bit field �ä� | |
5530 | |
5531 e4 = rvalue_t(e2,type); | |
5532 g_expr(assign_expr0(e2, list4(BFD_REPL,e4,e3,t), type,type)); | |
5533 | |
5534 �ʤ�����ɡ�������ȡ� | |
5535 e2 ����Ϥ��ơ�push ���ơ� | |
5536 e2 ��⤦����ɤ߹���� load | |
5537 ������ replace | |
5538 pop ���� assign | |
5539 �äƴ����ʤ����ʡ��̤ˤ���������ɤ��� | |
5540 e2 | |
5541 load | |
5542 replace | |
5543 store | |
5544 �äƤ����褦�ˤ�����������ɡ� | |
5545 | |
5546 �Ǥ⡢������ʬ�ä� long long ���̤äƤ��뤫���ѹ�����Ȥʤ�� | |
5547 �̤�¿�������ʡ� | |
5548 | |
5549 GVAR + offset ����list2(INDIRECT,list2(ADD..)) ��Ÿ�������Τǡ� | |
5550 simple �����ˤ�äƤ�����ʤ����Ȥ������Ȥϡ�GVAR �� GVAR + offset | |
5551 �Ȥ��������ˤ��������ɤ��äƤ��Ȥ���͡� | |
5552 | |
5553 list2(GVAR,nptr) �ʤ�����ɡ������list2(GVAR,nptr,0) | |
5554 �ˤ�����ɤ�? �ޤ��ͤ�������ޤ�Ȥ��ʤ��Ȥϻפ����ɤ͡� | |
5555 �ºݡ��Ф륳���ɤ��Ѥ��ʤ����� | |
367 | 5556 |
5557 �빽��ʣ����ʣ���������ʤ���? | |
368 | 5558 |
5559 Wed Jul 7 23:19:35 JST 2004 | |
5560 | |
5561 �Ǥ������ɡ�mips �� register usage ��������������ä� | |
5562 �쥸������Ȥ���Ϥ��� | |
5563 | |
5564 save_stack �ǡ�regisiter ���������Τ�˺��Ƥޤ����� | |
370 | 5565 |
5566 parallel_rassign �Ǥϡ���IJ��������顢������¾�ΰ�¸�롼�� | |
5567 ���褹��Τ˻Ȥ��Τ��ɤ�������... | |
5568 | |
5569 �ɤ��⡢;�פ� extsb ���Ƥ���ߤ������ʡ� | |
5570 | |
5571 �����ɬ�פʻ����Ѵ�����٤�����͡��Ǥʤ��ȡ� | |
5572 lbz | |
5573 extsb | |
5574 stb | |
5575 �����㤦���顣 | |
5576 | |
5577 Thu Jul 8 02:31:03 JST 2004 | |
5578 | |
5579 ARM�ϡ��ɤ���add, sub �ϡ�8bit �����������Ƥ�ߤ����͡� | |
371 | 5580 |
5581 table ��max-min ��16bit ���Ȳ��ꤷ�Ƥ���ߤ������ܿ��� | |
5582 �ޤ�Ǥ���Ȥ��ϡ����θ¤�Ǥʤ��� | |
5583 | |
5584 Fri Jul 9 14:45:56 JST 2004 | |
5585 | |
5586 LDECL �ϡ�disp < 0 | |
5587 | |
5588 const ��������ʤ��Ȥ����ʤ������ʡ� | |
372 | 5589 |
5590 arm �ϡ�����ѿ��� | |
5591 ldr r3, .L28+88 | |
5592 .... | |
5593 .L29: | |
5594 .align 2 | |
5595 .L28: | |
5596 .word i1 | |
5597 .word i2 | |
5598 .word s1 | |
5599 .word s2 | |
5600 .word us1 | |
5601 | |
5602 �ߤ����ʷ��Ǵ��ܻ��Ȥ���櫓�����ɡ����Ȥ�����˥ꥹ�Ȥ˳�Ǽ���ʤ��� | |
5603 ����? �ѿ�ɽ�˳�Ǽ�����������... make scope �ǽ���ʤ�����? | |
5604 linear list �ǻ��äƤ⤤��������ɡ� | |
5605 | |
5606 ptr_cache �����ǥꥹ�Ȥ���Ƥ�? | |
5607 | |
5608 �ʤ�add # �ΰ�̣���ɤ��狼��ʤ��衣�̤˾�˥��� | |
5609 ���Ȥ�����Ϥʤ���Ǥ���? | |
5610 | |
5611 �ɤ��狼��ʤ����ɡ� | |
5612 8bit ��������ǡ����եȤ�2���� | |
5613 �ߤ����ʴ���? | |
5614 | |
5615 �Ǥ������ɡ��ɤ�ʥ��르�ꥺ��������������衣 | |
5616 | |
5617 8bit mask ��2���ĥ��եȤ��ơ� | |
5618 �Ĥ꤬���뤫�ɤ�����ߤ� | |
5619 | |
5620 �����ȡ�16x8x8 ���餤�Υ�����? | |
5621 for(sign=-1;sign<=1;sign+=2) { | |
5622 if (sign==1) d = c; else d = -c; | |
5623 for(i=0;i<32;i+=2) { | |
5624 if (!(im=mask8(d,i))) continue; | |
5625 id = d - im; | |
5626 if (id==0) goto found; | |
5627 for(j=i+8;j<32;i+=2) { | |
5628 if (!(jm=mask8(id,j))) continue; | |
5629 jd = id - jm; | |
5630 if (jm==0) goto found; | |
5631 for(k=i+8;k<32;k+=2) { | |
5632 if (!(km=mask8(jd,j))) continue; | |
5633 kd = jd - km; | |
5634 if (km==0) goto found; | |
5635 } | |
5636 } | |
5637 } | |
5638 } | |
5639 emit_const(c); | |
5640 found: | |
5641 if (sign==1) emit_add(im,jm,km); | |
5642 else emit_sub(im,jm,km) | |
5643 �Ǥ����͡�1024 �롼�פ������� const ���? | |
5644 | |
5645 �����⡢������ǡ���äȤ�û��̿���õ���ʤ��Ȥ���ʤΤ��� | |
5646 | |
5647 pointer offset �⡢�����ʤΤ���? (���β�ǽ���Ϥ���Ȼפ�) | |
5648 | |
5649 12*8*4 = 384 ���餤��(�ǰ���) | |
5650 | |
5651 sub mask8 { | |
5652 my ($d,$bit) = @_; | |
5653 $d & (255 << $bit); | |
5654 } | |
5655 | |
5656 sub make_const { | |
5657 my ($c) = @_; | |
5658 my ($sign,$im,$jm,$km); | |
5659 my ($min_stage) = 4; | |
5660 my ($msign,$mim,$mjm,$mkm); | |
5661 for($sign=1;$sign>=-1;$sign-=2) { | |
5662 my $d; | |
5663 if ($sign==1) { $d = $c; } else { $d = -$c; } | |
5664 last if ($min_stage==1); | |
5665 for(my $i=24;$i>=0;$i-=2) { | |
5666 $jm = $km = 0; | |
5667 next if (!($im=mask8($d,$i))); | |
5668 my $id = $d - $im; | |
5669 if ($id==0) { | |
5670 $min_stage=1; $msign = $sign; | |
5671 $mim = $im;$mjm = $jm;$mkm = $km; | |
5672 last; | |
5673 } | |
5674 next if ($min_stage<=2); | |
5675 for(my $j=$i-8;$j>=0;$j-=2) { | |
5676 $km = 0; | |
5677 next if (!($jm=mask8($id,$j))); | |
5678 $jd = $id - $jm; | |
5679 if ($jd==0) { | |
5680 $min_stage=2; $msign = $sign; | |
5681 $mim = $im;$mjm = $jm;$mkm = $km; | |
5682 last; | |
5683 } | |
5684 next if ($min_stage<=3); | |
5685 for(my $k=$j-8;$k>=0;$k-=2) { | |
5686 next if (!($km=mask8($jd,$k))); | |
5687 $kd = $jd - $km; | |
5688 if ($kd==0) { | |
5689 $min_stage=3; $msign = $sign; | |
5690 $mim = $im;$mjm = $jm;$mkm = $km; | |
5691 last; | |
5692 } | |
5693 } | |
5694 } | |
5695 } | |
5696 } | |
5697 if ($min_stage<=3) { emit($sign,$im,$jm,$km); } | |
5698 else { print "emit const $c\n"; } | |
5699 } | |
5700 | |
5701 ���餤�Ǥ����� | |
5702 | |
373 | 5703 Sun Jul 11 12:54:26 JST 2004 |
5704 | |
5705 ��äѤ�large offset �Ϥ��ޤ�ư���Ƥʤ��ߤ����͡� | |
5706 | |
5707 local global table �ϡ�12bit offset(+sign 1bit) ������4096/4 | |
5708 ��1000̿����ˤϽ��Ϥ���ɬ�פ����롣�����⡢���˽��Ϥ���Ƥ� | |
5709 ���Τϡ����Τ�Ȥ�ɬ�פ����롣�ʤ�ۤɤ͡��äƤ������Ȥϡ� | |
5710 �ơ��֥�ˤ��������ե饰��Ĥ��ʤ��Ȥ��ᤫ��(���줰�餤 | |
374 | 5711 ������֥�Ǥ�äƤ��) |
5712 | |
5713 ���٤Ƥ�printf��counter ��Ĥ�����ɤ��櫓�����ɡ������Ĥ��� | |
5714 ���꤬����������ʡ�����ä���¿�����͡� | |
373 | 5715 |
5716 ARM�ˤ� short �äƤʤ��Τ���short ��¿�Ѥ��Ƥ���ץ������� | |
5717 ����ʤΤ͡� | |
5718 | |
5719 (�Ǥ⡢�ɤä����äƸ����ȥƥ��ȴĶ�������������) | |
374 | 5720 |
5721 sl�Ȥ�ip�Ȥ��פ����줬���ꤽ���ʥ쥸������̾�����礷����̣������ | |
5722 �櫓�ǤϤʤ��餷���� | |
5723 | |
5724 ARM�äơ��ʤ�signed char ��unsinged char �ζ��̤��ʤ��ʡ� | |
5725 | |
5726 lvar offset ��������äȤ��ɤ��������ʡ� | |
5727 constant ����ޤäƤʤ����顢���ä�����ä�code_add | |
5728 ���Ȥ��ʤ������䡢��ޤ�Τ���? | |
5729 | |
5730 Sun Jul 11 20:37:20 JST 2004 | |
5731 | |
5732 ��äѤꡢlocal variable �Υ��ե��åȤ����ξ������Ǥʤ��Τ� | |
5733 �ޤ����� | |
5734 | |
5735 ����� | |
5736 fp <-------| | |
5737 +------+------------------+ | |
5738 <----lvar_offset---> | |
5739 | |
5740 �ʤΤ��ޤ��������͡� | |
5741 | |
5742 ����� | |
5743 fp-------> | | |
5744 +------+------------------+ | |
5745 <----lvar_offset---> | |
5746 | |
5747 �ˤ�����ɤ���������͡��ʤɡ�def �� pre decrement ���Ƥ��뤬 | |
5748 �ޤ���������<0 �Ǥʤ��Ȥޤ����Τǡ�ñ��� post decrement �Ǥ���ᡣ | |
5749 | |
5750 �Ǥ⡢���콤���̤�¿����͡� | |
5751 | |
5752 ����� | |
5753 fp-------> sp-----> | |
5754 +------+------------------+ | |
5755 callee <----lvar_offset---> caller | |
5756 arg arg | |
5757 <------> pre known offset | |
5758 ----> | |
5759 | |
5760 �ȡ�ľ�����ɤ��� | |
5761 | |
5762 ����.... | |
5763 | |
375 | 5764 <------r1_offset------------------------------> |
5765 <-lvar_offset-------> | |
5766 r+ +------------+---+-------+------------------+--------------+----+ - | |
5767 callee arg xx local register save caller arg xx | |
5768 disp reg_save max_func_args*SIZE_OF_INT | |
5769 lvar>0 lvar<0 lvar>0x1000 0000 | |
5770 r30 r1 | |
5771 | |
5772 �Ȥ���Τϡ�PowerPC �Ǥ��ѹ����礭�����롣�쥸���������֤����� | |
5773 ���ɤ��狼��ʤ����� | |
5774 | |
377 | 5775 �⤷�����ơ�register save �ΰ�ϸ���?! |
5776 | |
375 | 5777 |
5778 Mon Jul 12 05:35:33 JST 2004 | |
5779 | |
5780 ������äѤꡢ�����... ���Τ���printf �� local variable | |
5781 ������Ƥ��ޤ��� | |
376 | 5782 |
377 | 5783 register save �ΰ�ϸ���ʤ櫓����ʤ��������ǽ餫����ľ���ơ� |
5784 | |
5785 function call stack frame | |
5786 <-------r1_offset------------------------------> | |
5787 <------------lvar_offset0------> | |
5788 <--lvar_offset--> | |
5789 r+ +------------+---+---------------+----------+--------------+----+ - | |
5790 callee arg xx register save local caller arg xx | |
5791 reg_save disp max_func_args*SIZE_OF_INT | |
5792 lvar>0 lvar<0 lvar>0x1000 0000 | |
5793 | |
5794 �Ȥ������Ȥˤʤ�ޤ�����frame ������ΤȤ�������̵����32bit add | |
5795 �ˤʤä��������ʤ��ʡ�������ȡ�callee arg �����ꥪ�ե��åȤˤʤ餶�� | |
5796 �����ʤ���reg_save ���Ǹ�ޤǷ�ޤ�ʤ����顣 | |
5797 | |
376 | 5798 �Ϥ������ѤʤΤ�PowerPC�����ǡ�MIPS��ia32 �ϡ����Τޤ�ư���Ȥ����Τ� |
5799 �狼��ޤ����� | |
377 | 5800 |
5801 Mon Jul 12 12:54:14 JST 2004 | |
5802 | |
5803 ������ɡ�MIPS�� $fp ������祪�ե��åȤˤ���Τ϶�ϫ�����͡� | |
5804 .frame $fp ����ʤ��ơ� .frame $sp �ˤ����ư���Τ��� | |
5805 ���ȡ�goto ��Ϣ�ϡ� | |
5806 code_environment | |
5807 code_fix_frame_pointer | |
5808 leave | |
5809 �λ��Ĥ�ľ���ʤ��Ȥ���ʤΤ͡� | |
5810 | |
5811 �����ѹ��ϡ�ARM�Υ��ե��åȷ�����ꥪ�ե��åȤǹԤ������ | |
5812 ��äƤ��������ɡ�ARM�Υ쥸���������֤�����ΰ�ˤ���С� | |
5813 ���뤤�ϡ��ɤ������ɤ����С�callee arg ��ޤ�Ƹ���˽��� | |
5814 ��Ϥ��� | |
5815 | |
5816 | |
5817 �ʤ���ư�������쥸������ f4 �����ߤ����͡� | |
5818 | |
5819 mov ip, sp | |
5820 stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, ip, lr, pc} | |
5821 sub fp, ip, #4 | |
5822 sub sp, sp, #12 | |
5823 .L3: | |
5824 ldmea fp, {r4, r5, r6, r7, r8, r9, sl, fp, sp, pc} | |
5825 .Lfe1: | |
5826 | |
5827 �ޤ�ǡ�6809 �� PSHS X,Y,D ���͡�PULS X,PC �Ȥ��� | |
5828 | |
5829 �ʤ�����ɡ�������ȡ� | |
5830 | |
5831 <-------r1_offset------------------------------> | |
5832 <------------lvar_offset0------> | |
5833 <--lvar_offset--> | |
5834 r+ +------------+---+---------------+----------+--------------+----+ - | |
5835 callee arg xx register save local caller arg xx | |
5836 reg_save disp max_func_args*SIZE_OF_INT | |
5837 lvar>0 lvar<0 lvar>0x1000 0000 | |
5838 | |
5839 �ˤʤ餶������ʤ����Ȥʤ�ȡ��ɤä����ϡ����ꥪ�ե��åȤ��ʡ� | |
5840 �ޡ�callee ¦�Ǥ��礦���ޡ�����˽����������뤤�ϡ��ݥ��� | |
5841 �ǻؤ��Ƥ⤤�������͡��Ƥ�������reg_save �˴ؤ�餺��ޤä��ΰ� | |
5842 ��Ȥä��㤨�Ф�����ʤ�? �礷���̤���ʤ�������ư������ | |
5843 �쥸�������Ĥ����͡� | |
5844 | |
5845 �⤦���������ꤽ�����͡� | |
378 | 5846 |
5847 Wed Jul 14 12:45:01 JST 2004 | |
5848 | |
5849 ��äѤ���ư����������Ȥʤ�����˼�������ΤϤ��ɤ��� | |
5850 | |
5851 ���졢? mc-code-mips.c �� | |
5852 rexpr_bool(int e1, int reg) | |
5853 { | |
5854 int e2,reg0; | |
5855 int op = car(e1); | |
5856 return 0; | |
5857 | |
5858 �äƤʤ��? ���ä�����ä��Τ�? | |
5859 | |
379 | 5860 ����äȥХ��äƤޤ������Ǥ⡢�ʤ�Ǥ�����? logic miss ������? |
5861 | |
5862 drexpr_bool for MIPS �Ϻ�äƤʤ��ߤ����͡�long long �Ϥ������� | |
5863 ���Ѥ��������� | |
5864 | |
5865 double/long long ����������ɤ��� | |
5866 local const table ��Ϣ³��������� | |
5867 ����ΰ�˽�������ơ������ؤΥݥ���local const table ������� | |
5868 �Ǥ����������... ���Ԥ��ȡ�search�����ɤ�����Ԥ��ȡ�double load | |
5869 �ˤʤ�Τǡ��ʤ������ޤ��ް��פ���0��Ȥ��ʤ��Τ�ʤ͡� | |
5870 | |
5871 adr �ʤ�Ƹ����Τ�����Τ���adr ���� ldmia �äƤʤ��ѡ�mvfs #0 | |
5872 �ʤ�ƤΤ�����Τ���0,1,10 ������Τ��狼�뤱��... | |
5873 | |
5874 float �� switch �äƤ����? | |
5875 | |
5876 (�Ϥ������ɤ�����... �콵�֤����äƤ뤷...) | |
5877 | |
380 | 5878 Sun Jul 18 20:45:48 JST 2004 |
5879 | |
5880 �ʤ��ʤ�����ʤ��͡�GBA��Linux Zaurus ��ξ��������ʡ� | |
381 | 5881 (��ä� ARM �˼��Ĥ����Τϼ��ԤǤ���) |
383 | 5882 |
5883 alloca �ΰ���������ξ����äƤʤ��͡� | |
5884 | |
5885 �ޤ�����Ĺ�������Ǥ⡢��ꤿ���ä�������顢�����ʤ��� | |
5886 | |
5887 ��ư�������쥸������ĤäƤα����ʡ��쥸�����ϻȤ����Ӥˡ� | |
5888 ����֤���ߤ����͡� | |
384 | 5889 |
5890 Wed Jul 21 13:51:56 JST 2004 | |
5891 | |
5892 ���ơ�inc_inst �ɤ���äƤ���뤫.... | |
385 | 5893 |
5894 copmpile error �ϼ�ä����ɤ��� | |
5895 | |
5896 Fri Jul 23 13:28:24 JST 2004 | |
5897 | |
5898 �ʤ�Ƭ�����ʤ��ʡ� | |
386 | 5899 |
5900 Sat Jul 24 19:27:55 JST 2004 | |
5901 | |
5902 ����mc-arm �ǹ�ʸ���顼���Ǥ�Τϡ��ʤ�����Ƥ��뤫�� | |
5903 �ʤ�����ɡ������ľ�ܤ˥ǥХå�����Τϡ�����ޤ��ɤ���ˡ | |
5904 ����ʤ�����������������٤Υ��顼��ưŪ�˸��Ĥ��Ƥ����Τ� | |
5905 �ߤ����衣 | |
5906 | |
5907 | |
5908 Tue Jul 27 13:45:21 JST 2004 | |
5909 | |
5910 .L183: | |
5911 mov sl, r9 | |
5912 .L178: | |
5913 mov r9, sl | |
5914 .L175: | |
5915 mov sl, r9 | |
5916 .L172: | |
5917 mov r9, sl | |
5918 .L169: | |
5919 mov sl, r9 | |
5920 .L166: | |
5921 mov r8, sl | |
5922 .L163: | |
5923 | |
5924 ����ͤ��� | |
5925 | |
5926 �ޤ����Ǥ⡢�ʤ�Ȥʤ���ä��褿���� | |
387 | 5927 |
5928 �ܤ��ܤ����ʤ�����ʸ��ʤ��㤤���ʤ��Τˡ� | |
388 | 5929 |
5930 Thu Aug 12 14:15:40 JST 2004 | |
5931 | |
5932 ����äȴ֤������͡�ARM�⡢�⤦���������ɡ�c2cbc ��������� | |
5933 ���ʤ��ȡ�C++ ������Ѵ��Ϥɤ�����? cfront �ä�ư���Τ���? | |
5934 | |
5935 (�������ʸ����ä�...) | |
5936 | |
5937 Mon Aug 16 17:27:17 JST 2004 | |
5938 | |
5939 COND �ϡ��Ǥ������ CREG_REGISTER ��Ȥ��褦�ˤ������ɡ� | |
5940 ���ɥۥå����͡�(�ޤ��ͤ�) | |
5941 | |
5942 COND�Υƥ��Ȥ����äƤʤ��ʤ��� | |
389 | 5943 |
5944 Tue Aug 24 15:39:27 JST 2004 | |
5945 | |
5946 register �����Ƥ��ѡ��ۤȤ�ɤ�register var �˳�����Ƥ�褦�� | |
5947 �ʤäƤ��뤱�ɡ���ä�tmp���ʤ��ȷ��Ǥ��ʤ���͡� | |
5948 | |
5949 Thu Sep 2 20:46:56 JST 2004 | |
5950 | |
5951 ���������� Input register ��tmp�˻Ȥ�ʤ��ΤϤʤ��? | |
390 | 5952 |
5953 ��Ĵ�˥Х����Ͽʤ�ǤϤ���������... | |
391 | 5954 |
5955 Sat Sep 4 18:04:40 JST 2004 | |
5956 | |
5957 INPUT/REGISTER �� double int register �� float register | |
5958 �ǰ�Ӥ��Ƥʤ��� | |
5959 | |
5960 Wed Sep 8 01:08:35 JST 2004 | |
5961 | |
5962 lvar_offset_label, r1_offset_label �äƤ����? fp �� | |
5963 �ȤäƤ������顢����ʤ���⤢�뤬.. | |
5964 | |
5965 �ɽ��ѿ�����Υ��ե��åȤǥ������������ؿ��ƤӽФ���sp ���ե��å� | |
5966 ���Ѥ�ʤ顢����ʤ��Ϥ��� | |
5967 | |
393 | 5968 Sat Sep 11 15:13:33 JST 2004 |
5969 | |
5970 ��äѤꡢCSE ���餤���٤�����ʤ�? �ޥ��������������Ȥͤ��� | |
5971 if (o==H1||o==H2|o==H3) | |
5972 �ߤ����ʤ�Τ͡��ޤ��ͤ��� | |
5973 | |
5974 �Ǥ⡢��������ȡ�asm ���ʤ����Ǥ⡢��������� elimination | |
5975 ���ꤿ����͡� | |
5976 | |
5977 ������ϡ�inline ���褫�� | |
394 | 5978 |
5979 Tue Sep 14 14:36:15 JST 2004 | |
5980 | |
5981 arm lvar ��large offset ��ʤ�Ȥ����ʤ��ȡ�lvar intro | |
5982 �Ǥʤ��Ƥ�Ǥ���Ϥ�����͡� | |
5983 | |
5984 �����ɡ�ptr cache �� const list | |
5985 �����Ū�˰��ˤǤ��ʤ�? ξ���Ȥ�const�����ͤ��� | |
395 | 5986 |
5987 ��������ptr cache �ϳ��ˤǤ���äƤ��ơ�nptr ������ˤ��Ƥ��� | |
5988 �Τǡ�����ä�����uniq nptr �����ƤϤ�Ƥ��Ф褤�ߤ��� | |
5989 ������... | |
5990 | |
5991 str r1, [fp, #0+.L3] | |
5992 str r2, [fp, #4+.L3] | |
5993 �ʤ�����ɡ�L3 ������ʤΤǤ���ˤʤäƤ��ޤ���(�ޤ������������) | |
5994 �ޤ����Ǥ⡢L3 �ϵ���ˤϤʤ�ʤ���ʤ�? | |
396 | 5995 |
5996 Wed Sep 15 16:50:46 JST 2004 | |
5997 | |
5998 basic �Υ쥸�����˺ܤä��������å����᤹�Ȥ��������������� | |
5999 | |
6000 | |
6001 ��������C++ ��maglegation���С�C++ �Ȥ���³��ǽ�� | |
6002 �����ɡ� | |
6003 | |
397 | 6004 |
6005 Wed Oct 13 21:06:31 JST 2004 | |
6006 | |
6007 mvn ��1's complement �ǡ�sub ��2's complement �ʤߤ����͡� | |
6008 �ʤΤǡ�8bit const �λ��ˤ��������ʤ롣 | |
6009 | |
6010 32bit word ��alignment��4�Ǥʤ��ƤϤʤ�ʤ��餷���� | |
6011 | |
6012 0x20005cc <code_lvar_address+216>: str r0, [r11, -#22] | |
6013 (gdb) p $r0 | |
6014 $13 = -1073742791 | |
6015 0x20005d0 <code_lvar_address+220>: ldr r0, [r11, -#22] | |
6016 (gdb) si | |
6017 (gdb) p $r0 | |
6018 $15 = -63324161 | |
6019 (gdb) p (char*) -1073742791 | |
6020 $16 = 0xbffffc39 " \004@L | |
6021 (gdb) p (char*)-63324161 | |
6022 $17 = 0xfc39bfff <Address 0xfc39bfff out of bounds> | |
6023 (gdb) quit | |
6024 | |
6025 �����ࡣ | |
398
bf583e04936f
ARM continue... calling sequence, float/duble arg function
kono
parents:
397
diff
changeset
|
6026 |
bf583e04936f
ARM continue... calling sequence, float/duble arg function
kono
parents:
397
diff
changeset
|
6027 Fri Oct 15 08:46:59 JST 2004 |
bf583e04936f
ARM continue... calling sequence, float/duble arg function
kono
parents:
397
diff
changeset
|
6028 |
bf583e04936f
ARM continue... calling sequence, float/duble arg function
kono
parents:
397
diff
changeset
|
6029 mov ip, sp |
bf583e04936f
ARM continue... calling sequence, float/duble arg function
kono
parents:
397
diff
changeset
|
6030 stmfd sp!, {fp, ip, lr, pc} |
bf583e04936f
ARM continue... calling sequence, float/duble arg function
kono
parents:
397
diff
changeset
|
6031 sub fp, ip, #4 |
bf583e04936f
ARM continue... calling sequence, float/duble arg function
kono
parents:
397
diff
changeset
|
6032 sub sp, sp, #16 |
bf583e04936f
ARM continue... calling sequence, float/duble arg function
kono
parents:
397
diff
changeset
|
6033 str r0, [fp, #-16] ����1 |
bf583e04936f
ARM continue... calling sequence, float/duble arg function
kono
parents:
397
diff
changeset
|
6034 str r1, [fp, #-20] ����2 |
bf583e04936f
ARM continue... calling sequence, float/duble arg function
kono
parents:
397
diff
changeset
|
6035 str r2, [fp, #-24] ����3 |
bf583e04936f
ARM continue... calling sequence, float/duble arg function
kono
parents:
397
diff
changeset
|
6036 str r3, [fp, #-28] ����4 |
bf583e04936f
ARM continue... calling sequence, float/duble arg function
kono
parents:
397
diff
changeset
|
6037 ... |
bf583e04936f
ARM continue... calling sequence, float/duble arg function
kono
parents:
397
diff
changeset
|
6038 ldr r2, [fp, #4] ����5 |
bf583e04936f
ARM continue... calling sequence, float/duble arg function
kono
parents:
397
diff
changeset
|
6039 add r3, r3, r2 |
bf583e04936f
ARM continue... calling sequence, float/duble arg function
kono
parents:
397
diff
changeset
|
6040 ldr r2, [fp, #8] ����6 |
bf583e04936f
ARM continue... calling sequence, float/duble arg function
kono
parents:
397
diff
changeset
|
6041 |
bf583e04936f
ARM continue... calling sequence, float/duble arg function
kono
parents:
397
diff
changeset
|
6042 ���������쥸�����ΰ���ʬ�ϥ���ˤϼ���ʤ��ǡ��ɽ��ѿ�¦ |
bf583e04936f
ARM continue... calling sequence, float/duble arg function
kono
parents:
397
diff
changeset
|
6043 �ˤ������餷����sp�ϡ�stmfd �Ǽ�ưŪ��Ĵ������뤫�顢sub sp |
bf583e04936f
ARM continue... calling sequence, float/duble arg function
kono
parents:
397
diff
changeset
|
6044 �϶ɽ��ѿ�ʬ������fp ��#4��������Ϥ���? |
bf583e04936f
ARM continue... calling sequence, float/duble arg function
kono
parents:
397
diff
changeset
|
6045 |
bf583e04936f
ARM continue... calling sequence, float/duble arg function
kono
parents:
397
diff
changeset
|
6046 �Ǥ⡢������� va_next �����������ɡ� |
399 | 6047 |
6048 Fri Oct 15 20:51:19 JST 2004 | |
6049 | |
6050 mov r3, #0 | |
6051 str r3, [sp, #0] | |
6052 mov r3, #1069547520 | |
6053 add r3, r3, #3145728 | |
6054 ldr r0, .L28+388 | |
6055 adr r1, .L28+392 | |
6056 ldmia r1, {r1-r2} @ double | |
6057 bl printf | |
6058 | |
6059 �äƤ櫓�ǡ��ޤ����ä�double/long�ϡ�Ⱦʬ�����쥸�������֤���� | |
6060 �ߤ����͡� | |
6061 | |
401 | 6062 Sat Oct 16 19:12:31 JST 2004 |
6063 | |
6064 �ޡ������ľ�ä�������ɡ�register �ϡ�input register �ʳ��� | |
6065 ���� save ���Ƥ���ߤ������ʡ�frame ���碌�����ɤ������� | |
6066 | |
6067 cmf f4,#0����f4 �����������Ƥʤ��������ߤ�����illigal instruction | |
6068 �äƤ������ɡ� f4 ���ͤˤ��Τ�? | |
402 | 6069 |
6070 fdecl_struct(int fntype) | |
6071 { | |
6072 ... | |
6073 mode=ADECL; | |
6074 args = 0; | |
6075 def(&str_ret); | |
6076 struct_return = list3(list2(LVAR,str_ret.dsp),sz,type); | |
6077 caddr(fnptr->ty) = glist2(POINTER,caddr(fnptr->ty)); | |
6078 | |
6079 �ʤ�����ɡ�����ä� save_input_register �����LVAR�ˤʤ�櫓 | |
6080 ����͡�def �������ˤϥ쥸�����˳�����Ƥ����ǽ���⤢���͡� | |
6081 �����������ȤϤʤ��Τ��� | |
6082 | |
6083 �ǡ�mc-parse.c �ǡ� | |
6084 if (struct_return) { | |
6085 ... | |
6086 gexpr(list4(STASS,rvalue(car(struct_return)),e,e1),0); | |
6087 | |
6088 �äƤʤ�櫓����͡� | |
6089 | |
6090 �ǡ�mc-code-arm.c �Ǥϡ�������dsp���ѹ�����뤫�����ʤ櫓�͡�(�����å� | |
6091 �˳�����Ƥ��Ƥʤ�����) | |
6092 | |
6093 �����顢struct_return �� save_input_register �ǽ�������ɬ�פ����롣 | |
6094 | |
6095 ARM�Ǥϡ�register�������ʬ��stack�˼���Ƥʤ��Τǡ�struct_push | |
6096 �ǡ�����ʬ��register ��copy���ʤ��Ȥ��ᡣ�Ǥ⡢��������ȡ�����¦ | |
6097 �Ϥɤ������? | |
6098 mov ip, sp | |
6099 sub sp, sp, #8 | |
6100 stmfd sp!, {r4, r5, fp, ip, lr, pc} | |
6101 sub fp, ip, #12 | |
6102 sub sp, sp, #96 | |
6103 ��������ʤ��Ȥ�äƤ뤷�� | |
6104 | |
404 | 6105 Sun Oct 17 13:13:00 JST 2004 |
6106 | |
6107 �ʤ� long long �˴ؤ��Ƥϡ�gcc �������빽���ְ�äƤ���ʤ��� | |
405 | 6108 |
6109 signed char �˴ؤ��Ƥϡ�ldrsb �äƤΤ�����ߤ����͡��ʤ�ǡ� | |
6110 arm-linux-gcc �ǤϤǤʤ��������? | |
406 | 6111 |
6112 Mon Oct 18 00:15:05 JST 2004 | |
6113 | |
6114 self compile ���̤�ʤ���¾�Υƥ��Ȥ�ͥ�褹��٤����� | |
6115 | |
408 | 6116 Mon Oct 18 20:25:16 JST 2004 |
6117 | |
6118 emit_copy �� offset �ΰ�������Ӥ��Ƥʤ��餷���� | |
6119 ���ȡ� powerpc ��r3,r4,r5 ��Ȥä����֤�memmove���ƤФ��ߤ����� | |
6120 | |
6121 ������äѤ깽¤�Τ�쥸�����˳�꿶��ΤäƤ��ʤ���ɤ� | |
6122 �ʤΤ͡��ä˥ͥ��Ȥ���ؿ��Ǥ�... | |
409 | 6123 |
6124 ��¤�Τ�stack���ɬ�� align �����餷���� | |
6125 | |
6126 ARM �� bitield �ʤ������ |---====|=====|====----| �Ȼ��Ĥˤޤ�����Τ� | |
6127 �������ߤ������͡�char �Ǥ� |--===|===--| �����뤷���äƤ��Ȥϡ����ʤ� | |
6128 �Ѥ��ʤ��Ȥ�����Ƥ��Ȥ��ʤ������ʤ����Ǥʤ���С�����������ư��������ɡ� | |
6129 | |
6130 �Ĥ�ϡ�stdarg �� bitfield ���������ޤ���������ʤ�? stdarg �ϡ� | |
6131 stdarg.h ��ʬ�Ǻ����ɤ��ߤ����� | |
6132 | |
410 | 6133 Tue Oct 19 11:12:16 JST 2004 |
6134 | |
6135 �ޤ���? �Υ��顼���� | |
6136 ## mode=(s==STRUCT?GSDECL:GUDECL); | |
6137 # 1287: : creg=r4 freg=f0 | |
6138 ldr r4, [fp, #4] | |
6139 mvn r7, #6 | |
6140 cmp r4, r7 | |
6141 bne .L713 | |
6142 mov r7, #2 | |
6143 b .L714 | |
6144 .L713: | |
6145 mov r7, #3 | |
6146 mov r0, r7 | |
6147 .L714: | |
6148 ldr r7, .L709+4 | |
6149 str r0, [r7, #0] | |
6150 �ƥ��ȥ롼����ɬ�פ��͡� | |
6151 | |
6152 (MIPS�Ȥ�PowerPC�Ȥ��������ֲ�������ä��ߤ���...) | |
6153 | |
6154 C �ȤθƽФ�������Ƥ���(��äѤ�쥸����?) mc �� gcc �Υ��֥������Ȥ� | |
6155 ���ߤ�����Ȥ�����͡� | |
6156 | |
6157 ��ư�������ط��� Endian ���������� | |
412 | 6158 |
6159 Tue Oct 19 19:07:57 JST 2004 | |
6160 | |
6161 stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, ip, lr, pc} | |
6162 | |
6163 �äƤ櫓�ǡ�r0-r3 ��input register�ǡ�r4-sl ��register_var ��tmp | |
6164 ���ͤ�櫓���͡�r4����������register_var �˳�꿶�����þ����������� | |
6165 | |
6166 �äƤ��Ȥϡ�����ѿ��ǤϤʤ��Ѷ�Ū�˥쥸�����ѿ���Ȥä����� | |
6167 �ɤ��櫓������... | |
413 | 6168 |
6169 save_stack �� register var ��save ����ɬ�פϤʤ�������... | |
6170 | |
6171 longlong_lib �� creg �� RET_LREG �ˤʤäƤ������ɡ����γ��ǡ� | |
6172 emit_pop_free ������ˡ����ΰ�����RET_LREG�ȽŤʤäƤ��ơ� | |
6173 ����free����Ƥ��ޤ�����������ȡ�����emit_pop�ǡ������Ƥ��ޤ��� | |
6174 �ʤΤǡ�RET_LREG�ˤ��ʤ��ǡ�lmove ���Ƥ��ޤ��Τ��ɤ��� | |
414 | 6175 |
6176 align ���������� | |
416 | 6177 |
6178 Sat Oct 23 23:33:11 JST 2004 | |
6179 | |
6180 struct ��Ȥä� interface ��register ��map���뤫�ɤ������ޤ��� | |
6181 �����ɤ͡� | |
6182 | |
6183 ��äѤ�arm��bitfield���碌��Τϻߤ����������ʤ�? | |
6184 long long �ʳ��ϡ������礭�������б��Ǥ��롣long long �ΤϤ߽Ф� | |
6185 �ϡ�����ä��н�Ǥ��ʤ��� | |
6186 a:8 => a0:4<<4+a1:4 | |
6187 a:8 = hoge => a0:4 = hoge<<4, a1:4 = hoge; | |
6188 �Ȥ����褦��ʬ��? | |
6189 | |
6190 Sun Oct 24 14:19:13 JST 2004 | |
6191 | |
6192 code_frame_pointer �� code_environment ��Ʊ���ʤ�Ǥ�����... | |
6193 | |
6194 ����ʹ�¤�Τ�������������ȡ� | |
6195 | |
6196 ��ʬ���Ȥ��ŤʤäƤ��� | |
6197 |----------| | |
6198 |----------| | |
6199 | |
6200 �Ǥϡ� | |
6201 |----------| | |
6202 --copy-> |----------| | |
6203 ¾�Τ�Τ����� | |
6204 <-copy-- | |
6205 |----------| | |
6206 �äƤ��Ȥˤʤ롣 | |
6207 | |
6208 ����ϡ�����äȼ�֤��礭���� | |
6209 |--|---|---| | |
6210 |--|---|---| | |
6211 ��ʬ�䤹��(ʬ�䤬�٤����ʤ�ʤ�?) | |
6212 |---|--|---| | |
6213 |---|--|---| | |
6214 | |
6215 ʬ��Ϥ�����͡���ʬ���Ȥ����ŤʤäƤʤ��Τ��ä���overappable copy | |
6216 ���롣 | |
6217 |----------|----------|----------| | |
6218 |----------|----------|----------| | |
6219 | |
6220 circular dependency ��recursive call����ɬ�פϤʤ��͡� | |
6221 | |
6222 �ʤ���¤�Τ����١������å��ˤ������Ƥ����ᤵ��Ƥ���ߤ��� | |
6223 | |
6224 RSTRUCT �äơ������ˤ����? | |
6225 | |
6226 �ʤ��֤ޤ���emit_copy ���ְ�äƤ���!�� | |
6227 | |
6228 PowerPC �ϡ�code �Υ쥸�����˳�����Ƥ�줿ʬ�Υ����å���ΰ��� | |
6229 �������ƤƤ���ʡ��ʤΤǡ� | |
6230 ## code carg6(int i, int j,int k,int l,struct arg args0) | |
6231 ## goto carg3(args0,args0,i,j,k,l); | |
417 | 6232 �ǡ�args0 ��copy��;�פ˽Ф�͡� �����⤺�������ѡ�(*) |
416 | 6233 |
6234 ̵���ǤϤ�������... | |
6235 | |
6236 �Ǥ⡢����ǥХ��Ĥ����櫓���� | |
6237 | |
6238 �����֡�enbug ������ä���... | |
417 | 6239 |
6240 emit_copy ��memmove ������ˤϡ�offset ��̵�뤹�롣address + offset | |
6241 ���顢reverse �� address �ޤǥ��ԡ�����Ȥ�����̣�����顣 | |
6242 | |
6243 memmove �ϡ�����쥸����������Ƥ��ޤ��Τǡ�parallel assignment | |
6244 �ΰ���ˤ����̤Υ쥸�����ϻȤ��ʤ��� | |
6245 | |
6246 PowerPC �� code segment �ǡ���������CALLER_ARG �Ĥޤꡢ�ؿ��ƤӽФ� | |
6247 �Υ����å��ȽŤʤäƤ��롣code_disp_offset �Ǥ�Ĵ���Ǥ��ʤ��餷���� | |
6248 ���ޤǤϡ�(*) �Τ�����;�פ˰���ѿ����äƤ����ΤǸ������ʤ��ä� | |
6249 �餷���� | |
6250 | |
6251 ������... �����ľ�ä�����... | |
6252 | |
6253 ¾�Τ��ɤ�ɤ�ư���ʤ��ʤ�... | |
418 | 6254 |
6255 Mon Oct 25 03:13:48 JST 2004 | |
6256 | |
6257 codegen �ǡ�jump ���Ƥ���Τ����ɡ������Ǥϡ�offset -1 �ǡ� | |
6258 �ɽ��ѿ��Ȥʤ롣�ɽ��ѿ��Τޤ�code_segment �ΰ����� | |
6259 ���Ƥ���餷���� | |
6260 | |
6261 code_segment¦�Ǥ⡢Ʊ��offset�ǽ������뤬��ARM�ξ��ϡ� | |
6262 offset 0- -xx �ޤǤϡ�register save �����롣�������٤� | |
6263 ���Ƥ��ޤ��餷����goto ���ˡ��ǡ���ä��Ȥ���error�Ȥʤ롣 | |
6264 register ��������save ����Τǡ����Ϥ狼�äƤ���Τǡ������ | |
6265 �����ɤ����������ɤ͡�(���졢�����ä���...) | |
419 | 6266 |
6267 Mon Oct 25 19:36:16 JST 2004 | |
6268 | |
6269 �ʤ��Ǥ����� | |
6270 | |
6271 �ޤ����쥸����ʬ�Υ��ե��åȤ�code_segment�Ǽ����Τ�ľ���Ƥʤ��� | |
6272 ARM �� bit field �η�ɤ���͡� | |
6273 | |
6274 ���Ȥϡ� | |
6275 inline | |
6276 CbC2C | |
6277 C2CbC | |
6278 �������͡� | |
6279 | |
6280 Wed Oct 27 08:48:37 JST 2004 | |
6281 | |
6282 MIPS��alloca�ϡ�$sp���ư����Τǡ�j �θ�Ρ�code segement �� | |
6283 lw $gp,$L_41($sp) | |
6284 �Ϥޤ����������̾�ϡ� | |
6285 lw $gp,$L_41($fp) | |
6286 ���Ф롣�����顢alloca ��$gp���ư����ɬ�פϤʤ�����������code_segment | |
6287 �� alloca �ϻȤ��ʤ���$gp ��sw���ʤ�����? | |
6288 | |
420 | 6289 input interface ��¤�Τ� alignment ��64�ˤ���С��ޥå������ǽ���� |
6290 ����äȹ⤯�ʤ롣 | |
6291 | |
6292 const ���쥸�����˴��ˤ��뤫�ɤ���������å�����? �ޡ�����ʤ����� | |
6293 | |
6294 ARM �� bitield | |
6295 |---====|=====|====----| | |
6296 |--===|===--| | |
6297 �ϡ�mc-codegen ¦���н褷�ʤ�? char/short/int �� -> short/int/long | |
6298 �ˤ�����ɤ��櫓����͡� | |
6299 | |
6300 ����ϡ�long �������Ϥߤ����Τ�int���äƤ狼�äƤ��롣 | |
6301 | |
6302 bit_filed | |
6303 bit_field(upper) << offset + bit_filed(lower) | |
6304 | |
6305 bassign | |
6306 bit_filed(upper) = value >> offset; | |
6307 bit_filed(lower) = value << (32-offset-size); | |
6308 | |
6309 bassop .... | |
6310 | |
6311 ��äѤ�����ᡣ | |
6312 | |
6313 bit_filed �����ˡ��ɤ߹��ߤ��ʳ��� | |
6314 upper2 << offset + (lower&mask >> 32-offset-size) | |
6315 ���뤫�� | |
6316 | |
6317 bit_field_repl,bit_filed_repl_const �Ϥ��Τޤޤǡ� | |
6318 ��������Ȥ��ˡ���� replace ���롣 | |
6319 | |
6320 ����ʤ����Ȥ��� | |
6321 | |
6322 ** �����ǤϤʤ��ơ� | |
6323 | |
6324 long ��int��;�ä��Ȥ��γ��ݤ�����(int)(bitfield_opt)��stack����Ѱդ��롣 | |
6325 (new_lvar�Ǥ��礦��) get_register_var �Ǥ⤤������... ARM �Ǥϰ�̣�ʤ� | |
6326 �������ʡ� | |
6327 | |
6328 mc-codegen:bit_field �Ǥϡ�load ������ˡ�bitfield_opt �ˤ�load | |
6329 code_bit_field �Ǥϡ�ɬ�פʤ�С�bitfield_opt �����ͤ��ɤ� | |
6330 | |
6331 mc-codegen:bassign �Ǥϡ�load ������ˡ�bitfield_opt �ˤ�load | |
6332 mc-codegen:bit_field_repl �Ǥϡ�ɬ�פʤ�С�bitfield_opt ���ִ����� | |
6333 �������ˤϡ�˺�줺��bit_field_opt ����� | |
6334 | |
6335 mc-codegen:bassop �Ǥϡ�tmp1 ���ɤ�Ȥ���bitfield_opt �ˤ⤤��� | |
6336 | |
6337 �Ǥ�����ʤ�? ��������... | |
6338 | |
6339 Thu Oct 28 17:40:35 JST 2004 | |
6340 | |
6341 ��������ѹ�����¿�����롣long long �ǥХ�����꤬�ޤ������ | |
6342 �ˤϡ���Ǽtype �� struct { int [3]; } �Ȥ��ơ�����ΰ�˳�Ǽ | |
6343 ���롣�ºݤˤϡ����ɥ쥹�����ä���뤳�Ȥˤʤ롣�ǡ�code_bit_ | |
6344 replace_const �ʤɤǤϡ����ɥ쥹���Ф��ƽ���������ɤ������� | |
422 | 6345 ����С�codegen ¦���ѹ���(�ۤȤ��)�ʤ��ʤ롣 |
420 | 6346 |
6347 �Ǥ⡢��������ȳ�Ǽ�����ͷ�����̤��ʤ��Ȥޤ����͡� | |
422 | 6348 |
6349 Fri Oct 29 04:19:58 JST 2004 | |
6350 | |
6351 code-* ¦�ˤ�type��������¤�Ȥ����Ϥ��Τ��ɤ��ʤ��� | |
6352 | |
6353 ���Ȥϡ���Ǽ��>�ͷ��λ���bit���ͤν������ʡ� | |
6354 | |
6355 ���μ��bit-field �äơ�����ʤ顢inline �� *C* �ǵ��Ҥ����٤� | |
6356 ��Τ���͡� | |
6357 | |
424 | 6358 Fri Oct 29 20:30:41 JST 2004 |
6359 | |
6360 �Ǥ�������.... bassign �����sassign�ǥ��ɥ쥹�������Х��� | |
6361 ����餷��������ϡ�;�פʥ��ԡ������äƤ⡢���Ϥʤ��Ϥ� | |
6362 �ʤ������ | |
6363 diff test/bitfield.gcc.out test/bitfield.mc-arm.out | |
6364 1058c1058 | |
6365 < 2:00000000 00000000 00000000 def00000 56789abc 00000234 00000000 00000000 | |
6366 --- | |
6367 > 2:00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 | |
6368 �ȸ������ǡ�����Ƥ��ޤ��� | |
6369 | |
6370 dum()��Ϥ����ľ�ä�������Τǥ쥸�����Υ��ƥʥ� | |
6371 ����餷����... | |
425 | 6372 |
6373 ����ѿ���ptr cache����jump ��input argument regsiter �� | |
6374 �����Ƥ��ޤ���ARM�ʳ��Ϥɤ����Ʋ����ʤ�? ñ�˥쥸���� | |
6375 ���Ѥν��������ǡ��Ǥ��ǽ���Ϥ���äƤ��Ȥ��� | |
6376 jump �����usig_reg ������ɤ�������ɡ� | |
6377 | |
6378 get_input_register* ��code�ξ����� using_reg ������ä����ɡ� | |
6379 ��������? | |
6380 | |
6381 ���äȡ�goto ����ư�������쥸�����Ϥ��ޤ�ƥ��Ȥ��Ƥʤ��͡� | |
426 | 6382 |
6383 bitfield �ϡ����ɥ쥹�Ϥ��ǡ��������ʤ������ɤ��͡� | |
427 | 6384 |
6385 Sat Oct 30 17:48:18 JST 2004 | |
6386 | |
6387 ������������ѹ������Ĥ�... | |
6388 | |
6389 a = b = c = 0 | |
6390 | |
6391 �ǡ�a ����������ˤϤʤ�ʤ��Τ�? �̾�Ϥ���������ɡ�bitfield | |
6392 �Ȥ��Ǥ�;���ɤ��ʤ��͡� | |
428 | 6393 |
6394 Sat Oct 30 20:39:34 JST 2004 | |
6395 | |
6396 MIPS ��$4,$5,$6,$7 �ϰ����Ϥ��˻Ȥ���櫓�����ɡ� | |
6397 6,7��long long ������Ȥ��ˤϡ�$5 �ˤϡ�$6 ��Ʊ���ͤ�����? | |
6398 ���䡢bitfield1.c �� printf �� %lld �� %d �ˤʤäƤ��������Ǥ����� | |
430 | 6399 |
6400 ARM �� lreg ��regsiter �� lost ����Τ�ߤ���ʤ�... | |
6401 use_input_reg(int reg,int mode) �äƤ�äѤꡢ����������͡� | |
6402 | |
432 | 6403 �ʤ�ľ���Τ�5���֤⤫���ä��衣 |
6404 | |
6405 ARM �Ǥϡ�use_int/use_longlong �η����֤��� lreg ��lost ���� | |
6406 �餷���Τ�����¾��mips/powerpc �Ǥϡ������������Ȥϵ����ʤ��� | |
6407 �ʤ�Ǥ�����? | |
6408 | |
434 | 6409 Wed Nov 3 18:31:28 JST 2004 |
6410 | |
6411 ��äѤ깽¤�Τ�intñ�̤�ʬ��������������ɤ��ʤ�͡��� | |
6412 ������������ȡ�����ʹ�¤�ΤǤϥ���ѥ�����֤������ꤹ���� | |
6413 �Τȡ������ɤ��Ǥ����ʤäƤ��ޤ��� | |
6414 | |
6415 ���������⡢�⤦�����ͤ���٤����ʡ� | |
435 | 6416 code f(int a,struct b) { |
6417 goto g(b,a); | |
6418 } | |
6419 �ߤ����ʾ����͡� | |
6420 | |
6421 ʬ�Ƥ��顢�⤦���١�memcpy �ˤޤȤ��Ȥ�����⤢�뤱��... | |
6422 �����١����ǤϤʤ��ơ�swap base ���ִ��ˤ���? | |
6423 for(i) swap(a[i],b[i]); | |
6424 �ߤ����ʴ���? | |
6425 code f(struct a,struct b) { | |
6426 goto g(b,a); | |
6427 } | |
6428 �ߤ����ʾ��ϡ�����ʤΤ�˾�ޤ�����... | |
6429 | |
6430 ʬ�ƽ���¸���ä��ơ�address ��sort �����... memcpy | |
6431 �ϸ��ФǤ���Ϥ�������... | |
6432 | |
6433 ����������������¸�ϡ�����Ū��swap�Dz��Ǥ���Ϥ��� | |
6434 copy(a,b) | |
6435 swap(a,b) | |
6436 ���ȹ礻�ǡ���Ŭ�ʷ�̤�������Ϥ�����������С�save�Ȥ� | |
6437 �ʤ��Ƥ��ࡣ | |
6438 (a,b,c) <= (b,c,a) | |
6439 �ϡ� | |
6440 swap(a,b); swap(c,a); | |
6441 �Ȥʤ�? ����? | |
6442 | |
6443 case triple | |
6444 a b c | |
6445 |---||-----||---------| | |
6446 b c a | |
6447 |-----||---------||---| | |
6448 | |
6449 ������ | |
6450 | |
6451 circular_dependency => smallest dependent element | |
6452 singleton or not | |
6453 | |
6454 swith(circula_depent(&small)) { | |
6455 case CIRCULAR_DEPEND: save(small); remove(small); break; | |
6456 case DEPEND_SINGLETON: memcpy(small); break; | |
6457 default: continue; // try another | |
6458 } | |
6459 | |
6460 ������ȡ�a ��save, b ��save�ǡ�c ��signleton �Ȥ������Ȥˤʤ롣 | |
6461 ���䡢b ��singleton �ˤʤ뤫��? b&c ���Ĥ�memcpy�ˤޤȤ�� | |
6462 �Τϡ�����ۤɰ�̣�Ϥʤ���... | |
6463 | |
6464 ����Ǥ⡢ | |
6465 case eq | |
6466 a b | |
6467 |---------|---------| | |
6468 b a | |
6469 |---------|---------| | |
6470 �ϡ�save code ���ФƤ��ޤ����ޤ�����ξ��Ǥ⡢a ���Ǥ������ | |
6471 �������͡����衢 | |
6472 one integeter save | |
6473 �������Ǥ���Ϥ���(�����swap) �ǡ�ʬ��Ф����swap code�ϽФ롣 | |
6474 | |
6475 memcpy ���뤿��ˤϡ������������save���ʤ��Ȥ��ᡣ�����顢memcpy | |
6476 �Ȥ�ξΩ���ʤ����������顢swap operation �ˤ���Τ��ɤ������� | |
6477 case triple ��swap operation �Dz�褹����ˡ���ɤ��狼��ʤ��� | |
6478 a b c | |
6479 |123||45678||9abcdefgh| | |
6480 |-23||45678||9abcdefgh| {1} | |
6481 |423||-5678||9abcdefgh| {1} | |
6482 �äƤʴ�������������ϡ�space/operation trade off �ʤ�? | |
6483 a b c | |
6484 |123||45678||9abcdefgh| | |
6485 |-23||45678||9abcdefgh| {1} | |
6486 |4-3||15678||9abcdefgh| {2} | |
6487 |45-||12678||9abcdefgh| {3} | |
6488 |456||-2378||9abcdefgh| {1} | |
6489 |456||7-318||9abcdefgh| {2} | |
6490 |45678||-12||9abcdefgh| {3} | |
6491 |45678||9-2||3abcdefgh| {1} | |
6492 |45678||9a-||31bcdefgh| {2} | |
6493 |45678||9ab-||12cdefgh| {3} | |
6494 |45678||9abc-||23defgh| {1} | |
6495 |45678||9abcd-||31efgh| {2} | |
6496 |45678||9abcde-||12fgh| {3} | |
6497 |45678||9abcdef-||23gh| {1} | |
6498 |45678||9abcdefg-||31h| {2} | |
6499 |45678||9abcdefgh||-12| {3} | |
6500 |45678||9abcdefgh||1-2| {3} | |
6501 |45678||9abcdefgh||12-| {3} | |
6502 |45678||9abcdefgh||123| {-} | |
6503 b c a | |
6504 �ǡ��Ǥ���ˤϤǤ�������.... | |
6505 | |
6506 ����ȡ�memcpy�Ȥɤä���®�����ϥ������ƥ������memcpy�ˤ�롣 | |
6507 | |
6508 �����顢 | |
6509 �������١���������¤�Τ�ʬ�� | |
6510 �礭�ʤ�Τϡ�singleton/smallest detection ��ޤ���� | |
6511 save ���礭������Ȥ��ˤϡ�circular dependent �����Ǥ���̤�Ф� | |
6512 �äƤʴ����Ǥ����͡� | |
6513 | |
6514 ����̤ʤ�����ɡ� | |
6515 a b c | |
6516 |-||---||-------| | |
6517 123456789abcdefgh | |
6518 a b1 c b2 c_t + c_s ��swap | |
6519 |-||||-------||-| | |
6520 123459abcdefgh678 | |
6521 b2 b1 c a a_t + b2 ��swap | |
6522 |-||||-------||-| | |
6523 678459abcdefgh123 | |
6524 b c a b2,b1 ��swap | |
6525 |---||-------||-| | |
6526 456789abcdefgh123 | |
6527 �äƤʴ������礭�ʤ�Τ���swap���ʡ���������м�ưŪ��ʬ�䤵��� | |
6528 �Τǡ�ʬ���ɬ�פʤ��ʤ�? | |
6529 | |
6530 circular_dependency => smallest dependent element | |
6531 singleton or not | |
6532 | |
6533 swith(circula_depent(&small,&large_conflict)) { | |
6534 case CIRCULAR_DEPEND: | |
6535 if (size(small) < SAVE_MAX) { | |
6536 save(small); remove(small); break; | |
6537 } else { | |
6538 swap_divide(large_conflict); | |
6539 reposition(conflict); | |
6540 remove(large); | |
6541 break; | |
6542 } | |
6543 case DEPEND_SINGLETON: memmove(small); break; | |
6544 default: continue; // try another | |
6545 } | |
6546 | |
6547 swap: ld r0,(to); | |
6548 ld r1,(from); | |
6549 st r0,(from++); | |
6550 st r1,(to++); | |
6551 if (cnt-->0) goto swap | |
6552 | |
6553 �äƴ���? swap ���줿�Ǹ夬���ɤ������ѥ�����ˤʤ뤫�ϡ�����ä� | |
6554 ������������ɤ͡� | |
6555 | |
6556 Thu Nov 4 10:15:29 JST 2004 | |
6557 | |
6558 �����ʤ� long long ��������եȤ� > 32 �ξ���˺��Ƥ���͡� | |
436 | 6559 |
6560 Fri Nov 12 15:37:42 JST 2004 | |
6561 | |
6562 ��äѤꡢrecord (taged union) ���ߤ�����͡� | |
6563 | |
6564 struct { | |
6565 enum {hoge0,hoge1,hoge2} i; | |
6566 switch(i) { | |
6567 case hoge0: struct {...} b; | |
6568 case hoge1: struct {...} c; | |
6569 case hoge2: struct {...} d; | |
6570 } | |
6571 } a; | |
6572 | |
6573 assert(a.i==hoge0); | |
6574 a.b.j = 3; | |
6575 assert(a.i==hoge0); | |
6576 printf("%d\n",a.b.j); | |
6577 | |
6578 ��������ޤ��ɤ��ʤ��ʤ���������ä��顢����ʤ���͡� | |
6579 | |
6580 Fri Nov 12 15:59:32 JST 2004 | |
6581 | |
6582 Template ���뤤�Ϸ��ѿ������줿���ʤ���͡������Ȥ��Ƥ⡢ | |
6583 ��̸���������ʤ��� | |
6584 | |
6585 Sat Nov 13 11:05:06 JST 2004 | |
6586 | |
6587 main() { printf("%d,%d\n", -555>>3,-555/8); } | |
6588 -70,-69 | |
6589 | |
6590 �ʤ�ۤɤ͡� | |
6591 | |
6592 �ʤ� arm-linux-gcc ���Х��äƤ����... | |
6593 | |
6594 ltosop_register() | |
6595 { | |
6596 register long long i1,i2,i; | |
6597 register unsigned long long u1,u2,u; | |
6598 u1 = 632423423; u2= 32394234; | |
6599 u = 0; | |
6600 .... | |
6601 u = u1 & u2; | |
6602 printf("#2052:ltosop r u 6 %llu\n",u); | |
6603 | |
6604 sub r6, fp, #48 | |
6605 ldmia r6, {r2-r3} | |
6606 sub r7, fp, #48 <---?! | |
6607 ldmdb r7, {r6-r7} | |
6608 and r2, r2, r6 | |
6609 and r3, r3, r7 | |
6610 sub r7, fp, #64 | |
6611 stmia r7, {r2-r3} | |
6612 ldr r0, .L640+92 | |
6613 | |
6614 �ʤ�Ǥ��͡� | |
6615 | |
437 | 6616 Sun Nov 14 15:59:33 JST 2004 |
6617 | |
6618 �褷��inline ��뤫�� | |
6619 | |
6620 inline function (or parsed tree) | |
6621 list4(INLINE,name,type) | |
6622 declaration (argument, local, static) | |
6623 list4(DECL,next,type,name) done by def (?) | |
6624 statement | |
6625 list3(IF,next,list3(cond,then,else)) | |
6626 list3(DO,next,list2(cond,while)) | |
6627 list3(FOR,next,list4(A,B,C,body)) | |
6628 list4(SWITCH,next,expr,body) | |
6629 list3(COMP,next,body) | |
6630 list2(BREAK,next) | |
6631 list2(CONTINUE,next) | |
6632 list3(CASE,next,label) | |
6633 list3(RETURN,next,expr) | |
6634 list3(GOTO,next,expr,env) | |
6635 list3(ASM,next,list4(A,B,C,D)) | |
6636 list3(LABEL,next,label) | |
6637 list3(COMMENT,next,comment) (?) | |
6638 | |
6639 (1) make inline tree | |
6640 (2) evaluate inline function (copy and partial evaluation) | |
438
626d705471d5
Unexecuted code in conditional. Lazy jmp code generation.
kono
parents:
437
diff
changeset
|
6641 peval(inline_func,args) |
626d705471d5
Unexecuted code in conditional. Lazy jmp code generation.
kono
parents:
437
diff
changeset
|
6642 similar to the function call (with type check) |
626d705471d5
Unexecuted code in conditional. Lazy jmp code generation.
kono
parents:
437
diff
changeset
|
6643 |
626d705471d5
Unexecuted code in conditional. Lazy jmp code generation.
kono
parents:
437
diff
changeset
|
6644 const ����Τ��ʤ��� |
626d705471d5
Unexecuted code in conditional. Lazy jmp code generation.
kono
parents:
437
diff
changeset
|
6645 builtin_constant_p ������ |
626d705471d5
Unexecuted code in conditional. Lazy jmp code generation.
kono
parents:
437
diff
changeset
|
6646 |
626d705471d5
Unexecuted code in conditional. Lazy jmp code generation.
kono
parents:
437
diff
changeset
|
6647 Mon Nov 15 17:37:57 JST 2004 |
626d705471d5
Unexecuted code in conditional. Lazy jmp code generation.
kono
parents:
437
diff
changeset
|
6648 |
626d705471d5
Unexecuted code in conditional. Lazy jmp code generation.
kono
parents:
437
diff
changeset
|
6649 code hoge() { a; } |
626d705471d5
Unexecuted code in conditional. Lazy jmp code generation.
kono
parents:
437
diff
changeset
|
6650 code hoge1() { b; } |
626d705471d5
Unexecuted code in conditional. Lazy jmp code generation.
kono
parents:
437
diff
changeset
|
6651 |
626d705471d5
Unexecuted code in conditional. Lazy jmp code generation.
kono
parents:
437
diff
changeset
|
6652 �Ǥϡ�a-> b �ˡ����Τޤ������٤��������͡��ե����뤬ʬΥ����� |
440 | 6653 ���Ͼ������뤬.... �������ʤ����˥��顼��Ф��ʤ��ȡ� |
438
626d705471d5
Unexecuted code in conditional. Lazy jmp code generation.
kono
parents:
437
diff
changeset
|
6654 |
626d705471d5
Unexecuted code in conditional. Lazy jmp code generation.
kono
parents:
437
diff
changeset
|
6655 if (0) hoge; ��hoge����������Ƥ��ޤ���control ���ڤäƤ�Ф�͡� |
626d705471d5
Unexecuted code in conditional. Lazy jmp code generation.
kono
parents:
437
diff
changeset
|
6656 ���䡢�ä��Ƥޤ�����������jmp ����������Ƥ��ޤ��͡�checkret |
626d705471d5
Unexecuted code in conditional. Lazy jmp code generation.
kono
parents:
437
diff
changeset
|
6657 �ǡ������å�����٤��Ǥ��礦�� |
626d705471d5
Unexecuted code in conditional. Lazy jmp code generation.
kono
parents:
437
diff
changeset
|
6658 |
626d705471d5
Unexecuted code in conditional. Lazy jmp code generation.
kono
parents:
437
diff
changeset
|
6659 checkret �ϡ�control �����������Ȥ����ǸƤФ��櫓�����顢����� |
626d705471d5
Unexecuted code in conditional. Lazy jmp code generation.
kono
parents:
437
diff
changeset
|
6660 control=1 �ˤ���Τϡ�checkret �����Ǥ���٤��� |
626d705471d5
Unexecuted code in conditional. Lazy jmp code generation.
kono
parents:
437
diff
changeset
|
6661 jmp(hoge) �ϡ�pending_jmp |
626d705471d5
Unexecuted code in conditional. Lazy jmp code generation.
kono
parents:
437
diff
changeset
|
6662 �����ꤷ�ơ�checkret �ǡ�pending_jmp ����������櫓������ |
626d705471d5
Unexecuted code in conditional. Lazy jmp code generation.
kono
parents:
437
diff
changeset
|
6663 �ǡ�pending jmp �����ꤷ��label����������С�pending_jmp ��0�� |
626d705471d5
Unexecuted code in conditional. Lazy jmp code generation.
kono
parents:
437
diff
changeset
|
6664 ���ꤵ���(������reference���줿�����Τ�ʤ�����label����������?) |
626d705471d5
Unexecuted code in conditional. Lazy jmp code generation.
kono
parents:
437
diff
changeset
|
6665 label ��reference�������ɤ�����flag���դ��������ɤ�? |
626d705471d5
Unexecuted code in conditional. Lazy jmp code generation.
kono
parents:
437
diff
changeset
|
6666 |
626d705471d5
Unexecuted code in conditional. Lazy jmp code generation.
kono
parents:
437
diff
changeset
|
6667 if (1) hoge else fuga ; �� fuga ����������Ƥ��ޤ���bexpr �� |
626d705471d5
Unexecuted code in conditional. Lazy jmp code generation.
kono
parents:
437
diff
changeset
|
6668 always jump ���ɤ������֤������Ȥ�������... |
440 | 6669 |
6670 Mon Nov 15 21:25:15 JST 2004 | |
6671 | |
6672 ��¤Ū�ˤϤ���inline �ϡ�CbC �γ��ǹԤ���٤���Τ���͡� | |
6673 �����ǽ������Ƥ⤤��������ɡ�����ϳ��Ǥ��٤���ΤǤ��� | |
6674 | |
6675 gcov ������! | |
6676 | |
6677 Sat Nov 20 16:44:38 JST 2004 | |
6678 | |
6679 �Ť�switch�μ���������Ƥ��롣lazy jump �αƶ��餷���� | |
6680 | |
441 | 6681 PowerPC �� cmp immideate value ����Ϥ��Ƥʤ������Τ�����ϡ� |
6682 �Ѷ�Ū������������뤱�ɤ͡�ľ���Ȥ��ɤ��������⡣ | |
6683 MIPS �� ARM �ϡ�����äȤ������äƤ�ʡ� | |
440 | 6684 |
6685 ���졢ʣ���Υե������ѥ��뤹��Ȥ������꤬���ä��褦�� | |
6686 ������������... | |
441 | 6687 |
6688 | |
442 | 6689 Sat Nov 20 22:00:36 JST 2004 |
6690 | |
6691 �������ʤ��������˲����Ƥ��뤷�� |