[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Gcl-devel] Re: [Gcl-commits] gcl/cmpnew cmpmain.lsp
From: |
Mike Thomas |
Subject: |
Re: [Gcl-devel] Re: [Gcl-commits] gcl/cmpnew cmpmain.lsp |
Date: |
Sat, 13 Jul 2002 07:21:59 +1000 |
Hi Greg.
> You could try gcc -g -Wa,-anhl <filename>.c. This gets around using
> objdump. But maybe it tickles the same mingw bug.
Brilliant thanks! With a bit less information the output of that command
from a simple test program I was using:
--------------------
$ cat junk.c
int plus (int i, int j)
{
return i + j;
}
--------------------
would be excellent for our purposes I think. As you say, it removes the
dependency on objdump. I have attached a series of outputs with
progressively higher optimisation settings below. We really just need to
clip the first half of the output, stabs info and the line numbers at the
start of each line to get nice output:
---------------------------------------------
1:junk.c **** int plus (int i, int j)
2:junk.c **** {
LM1:
3:junk.c **** return i + j;
LM2:
0003 8B4508 movl 8(%ebp),%eax
0006 8B4D0C movl 12(%ebp),%ecx
0009 8D1401 leal (%ecx,%eax),%edx
000c 89D0 movl %edx,%eax
000e EB00 jmp L2
4:junk.c **** }
LM3:
.p2align 4,,7
L2:
0010 89EC movl %ebp,%esp
0012 5D popl %ebp
0013 C3 ret
Lscope0:
.text
0014 90909090 Letext:
90909090
90909090
---------------------------------------------
What say you Camm?
Cheers
Mike Thomas.
--------------------
$ gcc -g -Wa,-anhl -c junk.c
1 .file "junk.c"
2 gcc2_compiled.:
3 ___gnu_compiled_c:
4 .stabs "//c/cvs/gcl/",100,0,0,Ltext0
5 .stabs "junk.c",100,0,0,Ltext0
6 .text
7 Ltext0:
8 .stabs
"int:t(0,1)=r(0,1);0020000000000;0017777777777;",
128,0,0,0
9 .stabs "char:t(0,2)=r(0,2);0;127;",128,0,0,0
10 .stabs "long
int:t(0,3)=r(0,1);0020000000000;00177777777
77;",128,0,0,0
11 .stabs "unsigned
int:t(0,4)=r(0,1);0000000000000;0037777
777777;",128,0,0,0
12 .stabs "long unsigned
int:t(0,5)=r(0,1);0000000000000;00
37777777777;",128,0,0,0
13 .stabs "long long
int:t(0,6)=r(0,1);01000000000000000000
000;0777777777777777777777;",128,0,0,0
14 .stabs "long long unsigned
int:t(0,7)=r(0,1);00000000000
00;01777777777777777777777;",128,0,0,0
15 .stabs "short
int:t(0,8)=r(0,8);-32768;32767;",128,0,0,0
16 .stabs "short unsigned
int:t(0,9)=r(0,9);0;65535;",128,0
,0,0
17 .stabs "signed
char:t(0,10)=r(0,10);-128;127;",128,0,0,0
18 .stabs "unsigned
char:t(0,11)=r(0,11);0;255;",128,0,0,0
19 .stabs "float:t(0,12)=r(0,1);4;0;",128,0,0,0
20 .stabs "double:t(0,13)=r(0,1);8;0;",128,0,0,0
21 .stabs "long double:t(0,14)=r(0,1);12;0;",128,0,0,0
22 .stabs "complex
int:t(0,15)=s8real:(0,1),0,32;imag:(0,1)
,32,32;;",128,0,0,0
23 .stabs "complex
float:t(0,16)=r(0,16);4;0;",128,0,0,0
24 .stabs "complex
double:t(0,17)=r(0,17);8;0;",128,0,0,0
25 .stabs "complex long
double:t(0,18)=r(0,18);12;0;",128,0
,0,0
26 .stabs "void:t(0,19)=(0,19)",128,0,0,0
27 .align 4
28 .stabs "plus:F(0,1)",36,0,2,_plus
29 .stabs "i:p(0,1)",160,0,1,8
30 .stabs "j:p(0,1)",160,0,1,12
31 .globl _plus
32 .def _plus; .scl 2; .type 32;
.endef
33 _plus:
34 0000 55 pushl %ebp
35 0001 89E5 movl %esp,%ebp
1:junk.c **** int plus (int i, int j)
2:junk.c **** {
36 .stabn 68,0,2,LM1-_plus
37 LM1:
3:junk.c **** return i + j;
38 .stabn 68,0,3,LM2-_plus
39 LM2:
40 0003 8B4508 movl 8(%ebp),%eax
41 0006 8B4D0C movl 12(%ebp),%ecx
42 0009 8D1401 leal (%ecx,%eax),%edx
43 000c 89D0 movl %edx,%eax
44 000e EB00 jmp L2
4:junk.c **** }
45 .stabn 68,0,4,LM3-_plus
46 LM3:
47 .p2align 4,,7
48 L2:
49 0010 89EC movl %ebp,%esp
50 0012 5D popl %ebp
51 0013 C3 ret
52 Lscope0:
53 .stabs "",36,0,0,Lscope0-_plus
54 .text
55 .stabs "",100,0,0,Letext
56 0014 90909090 Letext:
56 90909090
56 90909090
------------------------------------------------------------
$ gcc -g -Wa,-anhl -c junk.c | fgrep -v .stab
1 .file "junk.c"
2 gcc2_compiled.:
3 ___gnu_compiled_c:
6 .text
7 Ltext0:
27 .align 4
31 .globl _plus
32 .def _plus; .scl 2; .type
32;.ende
f
33 _plus:
34 0000 55 pushl %ebp
35 0001 89E5 movl %esp,%ebp
1:junk.c **** int plus (int i, int j)
2:junk.c **** {
37 LM1:
3:junk.c **** return i + j;
39 LM2:
40 0003 8B4508 movl 8(%ebp),%eax
41 0006 8B4D0C movl 12(%ebp),%ecx
42 0009 8D1401 leal (%ecx,%eax),%edx
43 000c 89D0 movl %edx,%eax
44 000e EB00 jmp L2
4:junk.c **** }
46 LM3:
47 .p2align 4,,7
48 L2:
49 0010 89EC movl %ebp,%esp
50 0012 5D popl %ebp
51 0013 C3 ret
52 Lscope0:
54 .text
56 0014 90909090 Letext:
56 90909090
56 90909090
-----------------------------------------------------
$ gcc -g -O -Wa,-anhl -c junk.c | fgrep -v .stab
1 .file "junk.c"
2 gcc2_compiled.:
3 ___gnu_compiled_c:
6 .text
7 Ltext0:
27 .align 4
31 .globl _plus
32 .def _plus; .scl 2; .type
32;.ende
f
33 _plus:
34 0000 55 pushl %ebp
35 0001 89E5 movl %esp,%ebp
1:junk.c **** int plus (int i, int j)
2:junk.c **** {
37 LM1:
38 0003 8B450C movl 12(%ebp),%eax
3:junk.c **** return i + j;
40 LM2:
41 0006 034508 addl 8(%ebp),%eax
42 0009 89EC movl %ebp,%esp
43 000b 5D popl %ebp
44 000c C3 ret
4:junk.c **** }
46 LM3:
48 Lscope0:
50 .text
52 000d 909090 Letext:
-----------------------------------------------------
$ gcc -g -O2 -Wa,-anhl -c junk.c | fgrep -v .stab
1 .file "junk.c"
2 gcc2_compiled.:
3 ___gnu_compiled_c:
6 .text
7 Ltext0:
27 .align 4
31 .globl _plus
32 .def _plus; .scl 2; .type
32;.ende
f
33 _plus:
34 0000 55 pushl %ebp
35 0001 89E5 movl %esp,%ebp
1:junk.c **** int plus (int i, int j)
2:junk.c **** {
37 LM1:
38 0003 8B450C movl 12(%ebp),%eax
3:junk.c **** return i + j;
40 LM2:
41 0006 034508 addl 8(%ebp),%eax
42 0009 89EC movl %ebp,%esp
43 000b 5D popl %ebp
44 000c C3 ret
46 Lscope0:
48 .text
50 000d 909090 Letext:
-----------------------------------------------------