compiling for x86 . was Re: [Maxima] Notes on implementation style
- Subject: compiling for x86 . was Re: [Maxima] Notes on implementation style
- From: Richard Fateman
- Date: Mon, 02 Dec 2002 21:06:38 -0800
for what it is worth, copyi in allegro CL is, in assembler,
cl-user(9): (disassemble 'copyi)
;; disassembly of #<Function copyi>
;; formals: l
;; code start: #x20d047e4:
0: 55 pushl ebp
1: 8b ec movl ebp,esp
3: 56 pushl esi
4: 83 ec 34 subl esp,$52
7: 3b f8 cmpl edi,eax
9: 74 24 jz 47
11: 89 45 e4 movl [ebp-28],eax ; excl::local-0
14: 8b 40 ef movl eax,[eax-17]
17: 8b d7 movl edx,edi
19: ff 57 2b call *[edi+43] ; sys::qcons
22: 89 45 dc movl [ebp-36],eax ; excl::local-2
25: 8b 5d e4 movl ebx,[ebp-28] ; excl::local-0
28: 8b 5b f3 movl ebx,[ebx-13]
31: 89 5d e4 movl [ebp-28],ebx ; excl::local-0
34: 3b fb cmpl edi,ebx
36: 75 0e jnz 52
38: 8b 45 dc movl eax,[ebp-36] ; excl::local-2
41: f8 clc
42: c9 leave
43: 8b 75 fc movl esi,[ebp-4]
46: c3 ret
47: 8b c7 movl eax,edi
49: f8 clc
50: eb f6 jmp 42
52: 8b c8 movl ecx,eax
54: 49 decl ecx
55: f6 c1 07 testb cl,$7
58: 74 14 jz 80
60: 8b d0 movl edx,eax
62: 89 55 e0 movl [ebp-32],edx ; excl::local-1
65: 33 c0 xorl eax,eax
67: b0 10 movb al,$16
69: 8b 5f db movl ebx,[edi-37] ;
;excl::er-general-error-handler-one
72: ff 57 27 call *[edi+39] ; sys::tramp-two
75: 8b 45 e0 movl eax,[ebp-32] ; excl::local-1
78: eb c9 jmp 25
80: 8b 5d e4 movl ebx,[ebp-28] ; excl::local-0
83: 89 45 e0 movl [ebp-32],eax ; excl::local-1
86: 8b 43 ef movl eax,[ebx-17]
89: 8b d7 movl edx,edi
91: ff 57 2b call *[edi+43] ; sys::qcons
94: 33 db xorl ebx,ebx
96: 83 c3 cc addl ebx,$-52
99: c1 fb 02 sarl ebx,$2
102: 8b d3 movl edx,ebx
104: 03 55 e0 addl edx,[ebp-32] ; excl::local-1
107: ff 57 77 call *[edi+119] ; sys::gsgc-setf-protect
110: eb db jmp 75
gsgc-setf-protect
has to do with the generation scavenging garbage collection.
This presumably saves time some other place.
I assume CMUCL does a good job on whatever machines
it runs on.
RJF