First gcc-compiled Java program runs!
Per Bothner
bothner at cygnus.com
Sat Jun 14 07:58:27 PDT 1997
The following little Java program compiles under "cc1java"
(the Gcc front-end for Java that reads a .class file and
emits assembly code). It runs correctly, using Kaffe (a
modified pre-0.9.1 snapshot) as the run-time engine.
It took 16 seconds to execute. In comparison, the
same programs compiled by Kaffe's JIT takes 26 seconds,
and Sun's JDK 1.1 takes 88 seconds to run the same program.
In all cases, this is under Solaris 2.5.
NOTE: THE CC1JAVA COMPILER IS *NOT* USABLE YET. A NUMBER OF
BYTECODES HAVE NOT BEEN IMPLEMENTED AND NEITHER HAS
EXCEPTION HANDLING.
--Per Bothner
Cygnus Solutions bothner at cygnus.com http://www.cygnus.com/~bothner
Java source code:
class Fib {
public static final int limit = 36;
public static void main(String args[])
{
for (int i = 0; i < limit; i++) {
System.out.print ("Fib("+i+") = " + fib_i(i)+" [iterative]");
System.out.println (" = " + fib_r(i)+" [recursive]");
}
}
static int fib_i (int i)
{
int x0 = 1;
int x1 = 1;
while (--i >= 0) {
int x2 = x0 + x1;
x0 = x1;
x1 = x2;
}
return x0;
}
static int fib_r (int i)
{
if (i <= 1)
return 1;
return fib_r(i-1) + fib_r(i-2);
}
}
Output:
Fib(0) = 1 [iterative] = 1 [recursive]
Fib(1) = 1 [iterative] = 1 [recursive]
Fib(2) = 2 [iterative] = 2 [recursive]
Fib(3) = 3 [iterative] = 3 [recursive]
Fib(4) = 5 [iterative] = 5 [recursive]
Fib(5) = 8 [iterative] = 8 [recursive]
Fib(6) = 13 [iterative] = 13 [recursive]
Fib(7) = 21 [iterative] = 21 [recursive]
Fib(8) = 34 [iterative] = 34 [recursive]
Fib(9) = 55 [iterative] = 55 [recursive]
Fib(10) = 89 [iterative] = 89 [recursive]
Fib(11) = 144 [iterative] = 144 [recursive]
Fib(12) = 233 [iterative] = 233 [recursive]
Fib(13) = 377 [iterative] = 377 [recursive]
Fib(14) = 610 [iterative] = 610 [recursive]
Fib(15) = 987 [iterative] = 987 [recursive]
Fib(16) = 1597 [iterative] = 1597 [recursive]
Fib(17) = 2584 [iterative] = 2584 [recursive]
Fib(18) = 4181 [iterative] = 4181 [recursive]
Fib(19) = 6765 [iterative] = 6765 [recursive]
Fib(20) = 10946 [iterative] = 10946 [recursive]
Fib(21) = 17711 [iterative] = 17711 [recursive]
Fib(22) = 28657 [iterative] = 28657 [recursive]
Fib(23) = 46368 [iterative] = 46368 [recursive]
Fib(24) = 75025 [iterative] = 75025 [recursive]
Fib(25) = 121393 [iterative] = 121393 [recursive]
Fib(26) = 196418 [iterative] = 196418 [recursive]
Fib(27) = 317811 [iterative] = 317811 [recursive]
Fib(28) = 514229 [iterative] = 514229 [recursive]
Fib(29) = 832040 [iterative] = 832040 [recursive]
Fib(30) = 1346269 [iterative] = 1346269 [recursive]
Fib(31) = 2178309 [iterative] = 2178309 [recursive]
Fib(32) = 3524578 [iterative] = 3524578 [recursive]
Fib(33) = 5702887 [iterative] = 5702887 [recursive]
Fib(34) = 9227465 [iterative] = 9227465 [recursive]
Fib(35) = 14930352 [iterative] = 14930352 [recursive]
Generated assembly code:
.file "Fib.java"
! GNU Java version cygnus-2.7.2-970602 (sparc-sun-solaris2.5.1) compiled by GNU C version cygnus-2.7-96q4.
! options passed: -g -O
! options enabled: -fdefer-pop -fomit-frame-pointer -fthread-jumps
! -fpeephole -ffunction-cse -finline -fkeep-static-consts
! -fpcc-struct-return -fdelayed-branch -fexceptions -fsjlj-exceptions
! -fcommon -fverbose-asm -fgnu-linker -mepilogue -mapp-regs
.stabs "/home/bothner/solaris2/gcc/java/",100,0,0,.LLtext0
.stabs "Fib.java",100,0,0,.LLtext0
.section ".text"
.LLtext0:
.stabs "gcc2_compiled.", 0x3c, 0, 0, 0
.stabs "int:t(0,1)=r(0,1);-2147483648;2147483647;",128,0,0,0
.stabs "char:t(0,2)=@s16;-20;",128,0,0,0
.stabs "byte:t(0,3)=r(0,3);-128;127;",128,0,0,0
.stabs "short:t(0,4)=r(0,4);-32768;32767;",128,0,0,0
.stabs "long:t(0,5)=r(0,1);01000000000000000000000;0777777777777777777777;",128,0,0,0
.stabs "unsigned byte:t(0,6)=r(0,6);0;255;",128,0,0,0
.stabs "unsigned short:t(0,7)=r(0,7);0;65535;",128,0,0,0
.stabs "unsigned int:t(0,8)=r(0,8);0;-1;",128,0,0,0
.stabs "unsigned long:t(0,9)=r(0,1);0000000000000;01777777777777777777777;",128,0,0,0
.stabs "boolean:t(0,10)=@s8;-16;",128,0,0,0
.stabs "float:t(0,11)=r(0,1);4;0;",128,0,0,0
.stabs "double:t(0,12)=r(0,1);0;0;",128,0,0,0
.stabs "promoted_byte:t(0,13)=r(0,13);-2147483648;2147483647;",128,0,0,0
.stabs "promoted_short:t(0,14)=r(0,14);-2147483648;2147483647;",128,0,0,0
.stabs "promoted_char:t(0,15)=@s32;-20;",128,0,0,0
.stabs "promoted_boolean:t(0,16)=@s32;-16;",128,0,0,0
.stabs "methodtable:t(0,17)=s0;",128,0,0,0
.stabs "constants:t(0,18)=s12size:(0,8),0,32;tags:(0,19)=*(0,20)=(0,20),32,32;data:(0,19),64,32;;",128,0,0,0
.stabs "Object:t(0,21)=s4dtable:(0,22)=*(0,23)=xsdispatchTable:,0,32;;",128,0,0,0
.stabs "Class:t(0,24)=s84head:(0,21),0,32;next:(0,25)=*(0,24),32,32;name:(0,26)=*(0,27)=s4hash:(0,7),0,16;length:(0,7),16,16;;,64,32;accflags:(0,7),96,16;superclass:(0,25),128,32;subclass_head:(0,25),160,32;subclass_next:(0,25),192,32;constants:(0,18),224,96;methods:(0,28)=*(0,29)=xsMethod:,320,32;nmethods:(0,4),352,16;msize:(0,4),368,16;fields:(0,30)=*(0,31)=xsField:,384,32;bfsize:(0,1),416,32;nfields:(0,4),448,16;nsfields:(0,4),464,16;dtable:(0,22),480,32;interfaces:(0,32)=*(0,25),512,32;interface_len:(0,1),544,32;loader:(0,19),576,32;state:(0,1),608,32;final:(0,1),640,32;;",128,0,0,0
.stabs "Field:t(0,31)=s16name:(0,26),0,32;type:(0,25),32,32;accflags:(0,7),64,16;bsize:(0,7),80,16;info:(0,33)=u4boffset:(0,1),0,32;addr:(0,19),0,32;;,96,32;;",128,0,0,0
.stabs "dispatchTable:t(0,23)=s12class:(0,25),0,32;methods:(0,34)=ar(0,0);0;1;(0,19),32,64;;",128,0,0,0
.stabs "Method:t(0,29)=s44name:(0,26),0,32;signature:(0,26),32,32;accflags:(0,7),64,16;stacksz:(0,7),80,16;localsz:(0,7),96,16;ncode:(0,19),128,32;ncode_start:(0,19),160,32;ncode_end:(0,19),192,32;class:(0,25),224,32;lines:(0,35)=*(0,36)=s4length:(0,8),0,32;;,256,32;exception_table:(0,37)=*(0,38)=s16start_pc:(0,19),0,32;end_pc:(0,19),32,32;handler_pc:(0,19),64,32;catch_type:(0,25),96,32;;,288,32;idx:(0,1),320,32;;",128,0,0,0
.stabs "Fib:t(0,39)=s0!1,020,(0,40)=s0getClass::(0,41)=#(0,40),(0,42)=*(0,43)=xsjava.lang.Class:,(0,44)=*(0,40);:java_lang_Object_getClass;2A*0;(0,40);;hashCode::(0,45)=#(0,40),(0,1),(0,44);:java_lang_Object_hashCode;2A*1;(0,40);;equals::(0,46)=#(0,40),(0,16),(0,44),(0,44);:java_lang_Object_equals_2;2A*2;(0,40);;clone::(0,47)=#(0,40),(0,44),(0,44);:java_lang_Object_clone;1A*3;(0,40);;toString::(0,48)=#(0,40),(0,49)=*(0,50)=xsjava.lang.String:,(0,44);:java_lang_Object_toString_4;2A*4;(0,40);;notify::(0,51)=#(0,40),(0,20),(0,44);:java_lang_Object_notify;2A*5;(0,40);;notifyAll::(0,51):java_lang_Object_notifyAll;2A*6;(0,40);;wait::(0,52)=#(0,40),(0,20),(0,44),(0,5);:java_lang_Object_wait;2A*7;(0,40);(0,53)=#(0,40),(0,20),(0,44),(0,5),(0,1);:java_lang_Object_wait_8;2A*8;(0,40);(0,51):java_lang_Object_wait_9;2A*9;(0,40);;finalize::(0,51):java_lang_Object_finalize_10;1A*10;(0,40);;\\",128,0,0,0
.stabs "<init>::(0,51):java_lang_Object_INIT_11;2A.;;;limit:/2(0,1):_ST_Fib_limit;main::(0,54)=f(0,20):Fib_main_0;2A?;fib_i::(0,55)=f(0,1):Fib_fib_i_1;2A?;fib_r::(0,55):Fib_fib_r_2;2A?;<init>::(0,56)=#(0,39),(0,20),(0,57)=*(0,39);:Fib_INIT_3;2A.;;",128,0,0,0
.section ".data"
.align 2
.type _Utf1java_lang_System.0,#object
.size _Utf1java_lang_System.0,4
_Utf1java_lang_System.0:
.uahalf 4237
.uahalf 16
.ascii "java/lang/System"
.skip 1
.align 2
.type _Utf2java_lang_StringBuffer.1,#object
.size _Utf2java_lang_StringBuffer.1,4
_Utf2java_lang_StringBuffer.1:
.uahalf 34237
.uahalf 22
.ascii "java/lang/StringBuffer"
.skip 1
.align 2
.type _Utf3Fib_.2,#object
.size _Utf3Fib_.2,4
_Utf3Fib_.2:
.uahalf 23105
.uahalf 4
.ascii "Fib("
.skip 1
.align 2
.type _Utf4____.3,#object
.size _Utf4____.3,4
_Utf4____.3:
.uahalf 25718
.uahalf 4
.ascii ") = "
.skip 1
.align 2
.type _Utf5__iterative_.4,#object
.size _Utf5__iterative_.4,4
_Utf5__iterative_.4:
.uahalf 63121
.uahalf 12
.ascii " [iterative]"
.skip 1
.align 2
.type _Utf6___.5,#object
.size _Utf6___.5,4
_Utf6___.5:
.uahalf 46097
.uahalf 3
.ascii " = "
.skip 1
.align 2
.type _Utf7__recursive_.6,#object
.size _Utf7__recursive_.6,4
_Utf7__recursive_.6:
.uahalf 16772
.uahalf 12
.ascii " [recursive]"
.skip 1
.section ".text"
.align 4
.stabs "Fib_main_0:f(0,20)",36,0,0,Fib_main_0
.stabs "args:P(0,58)=*(0,59)=xs[Ljava/lang/String;:",64,0,0,24
.type Fib_main_0,#function
.proc 020
Fib_main_0:
.stabn 68,0,0,.LM1-Fib_main_0
.LM1:
!#PROLOGUE# 0
save %sp,-112,%sp
!#PROLOGUE# 1
.LLBB2:
.stabn 68,0,7,.LM2-Fib_main_0
.LM2:
b .LL3
mov 0,%l4
.LL4:
.stabn 68,0,8,.LM3-Fib_main_0
.LM3:
or %l1,%lo(_CD_Fib+8),%l0
call soft_new,0
ld [%l1+%lo(_CD_Fib+8)],%o0
mov %o0,%l2
ld [%l0-4],%o0
ld [%o0+48],%o0
ld [%o0+28],%o0
ld [%o0],%l3
ld [%l1+%lo(_CD_Fib+8)],%o0
ld [%o0+40],%o0
ld [%o0+104],%o2
mov %l2,%o0
call %o2,0
ld [%l0+4],%o1
ld [%l2],%o0
ld [%o0+104],%o2
mov %l2,%o0
call %o2,0
mov %l4,%o1
mov %o0,%l2
ld [%l2],%o0
ld [%o0+84],%o2
mov %l2,%o0
call %o2,0
ld [%l0+8],%o1
mov %o0,%l2
call Fib_fib_i_1,0
mov %l4,%o0
mov %o0,%o1
ld [%l2],%o0
ld [%o0+104],%o2
call %o2,0
mov %l2,%o0
mov %o0,%l2
ld [%l2],%o0
ld [%o0+84],%o2
mov %l2,%o0
call %o2,0
ld [%l0+12],%o1
mov %o0,%l2
ld [%l2],%o0
ld [%o0+20],%o1
call %o1,0
mov %l2,%o0
mov %o0,%l2
ld [%l3],%o0
ld [%o0+120],%o2
mov %l3,%o0
call %o2,0
mov %l2,%o1
.stabn 68,0,9,.LM4-Fib_main_0
.LM4:
call soft_new,0
ld [%l1+%lo(_CD_Fib+8)],%o0
mov %o0,%l2
ld [%l0-4],%o0
ld [%o0+48],%o0
ld [%o0+28],%o0
ld [%o0],%l3
ld [%l1+%lo(_CD_Fib+8)],%o0
ld [%o0+40],%o0
ld [%o0+104],%o2
mov %l2,%o0
call %o2,0
ld [%l0+16],%o1
call Fib_fib_r_2,0
mov %l4,%o0
mov %o0,%o1
ld [%l2],%o0
ld [%o0+104],%o2
call %o2,0
mov %l2,%o0
mov %o0,%l2
ld [%l2],%o0
ld [%o0+84],%o2
mov %l2,%o0
call %o2,0
ld [%l0+20],%o1
mov %o0,%l2
ld [%l2],%o0
ld [%o0+20],%o1
call %o1,0
mov %l2,%o0
mov %o0,%l2
ld [%l3],%o0
ld [%o0+160],%o2
mov %l3,%o0
call %o2,0
mov %l2,%o1
.stabn 68,0,7,.LM5-Fib_main_0
.LM5:
add %l4,1,%l4
.LL3:
cmp %l4,35
ble .LL4
sethi %hi(_CD_Fib+8),%l1
.stabn 68,0,5,.LM6-Fib_main_0
.LM6:
.LLBE2:
ret
restore
.LLfe1:
.size Fib_main_0,.LLfe1-Fib_main_0
.stabn 192,0,0,.LLBB2-Fib_main_0
.stabn 224,0,0,.LLBE2-Fib_main_0
.LLscope0:
.stabs "",36,0,0,.LLscope0-Fib_main_0
.align 4
.stabs "Fib_fib_i_1:f(0,1)",36,0,0,Fib_fib_i_1
.stabs "i:P(0,1)",64,0,5,9
.type Fib_fib_i_1,#function
.proc 04
Fib_fib_i_1:
.stabn 68,0,5,.LM7-Fib_fib_i_1
.LM7:
!#PROLOGUE# 0
!#PROLOGUE# 1
mov %o0,%o1
.LLBB3:
.stabn 68,0,15,.LM8-Fib_fib_i_1
.LM8:
mov 1,%o0
.stabn 68,0,17,.LM9-Fib_fib_i_1
.LM9:
b .LL9
mov %o0,%g3
.LL10:
.stabn 68,0,19,.LM10-Fib_fib_i_1
.LM10:
mov %g3,%o0
.stabn 68,0,20,.LM11-Fib_fib_i_1
.LM11:
mov %g2,%g3
.LL9:
.stabn 68,0,17,.LM12-Fib_fib_i_1
.LM12:
addcc %o1,-1,%o1
bpos .LL10
add %o0,%g3,%g2
.stabn 68,0,22,.LM13-Fib_fib_i_1
.LM13:
.LLBE3:
retl
nop
.LLfe2:
.size Fib_fib_i_1,.LLfe2-Fib_fib_i_1
.stabn 192,0,0,.LLBB3-Fib_fib_i_1
.stabn 224,0,0,.LLBE3-Fib_fib_i_1
.LLscope1:
.stabs "",36,0,0,.LLscope1-Fib_fib_i_1
.align 4
.stabs "Fib_fib_r_2:f(0,1)",36,0,0,Fib_fib_r_2
.stabs "i:P(0,1)",64,0,22,16
.type Fib_fib_r_2,#function
.proc 04
Fib_fib_r_2:
.stabn 68,0,22,.LM14-Fib_fib_r_2
.LM14:
!#PROLOGUE# 0
save %sp,-112,%sp
!#PROLOGUE# 1
mov %i0,%l0
.LLBB4:
.stabn 68,0,27,.LM15-Fib_fib_r_2
.LM15:
cmp %l0,1
ble,a .LL15
mov 1,%i0
.stabn 68,0,29,.LM16-Fib_fib_r_2
.LM16:
call Fib_fib_r_2,0
add %l0,-1,%o0
mov %o0,%i0
call Fib_fib_r_2,0
add %l0,-2,%o0
add %i0,%o0,%i0
.LL15:
.stabn 68,0,28,.LM17-Fib_fib_r_2
.LM17:
.LLBE4:
.stabn 68,0,29,.LM18-Fib_fib_r_2
.LM18:
ret
restore
.LLfe3:
.size Fib_fib_r_2,.LLfe3-Fib_fib_r_2
.stabn 192,0,0,.LLBB4-Fib_fib_r_2
.stabn 224,0,0,.LLBE4-Fib_fib_r_2
.LLscope2:
.stabs "",36,0,0,.LLscope2-Fib_fib_r_2
.section ".data"
.align 2
.type _Utf8java_lang_Object.7,#object
.size _Utf8java_lang_Object.7,4
_Utf8java_lang_Object.7:
.uahalf 4237
.uahalf 16
.ascii "java/lang/Object"
.skip 1
.section ".text"
.align 4
.stabs "Fib_INIT_3:f(0,20)",36,0,0,Fib_INIT_3
.stabs "this:P(0,57)",64,0,29,24
.type Fib_INIT_3,#function
.proc 020
Fib_INIT_3:
.stabn 68,0,29,.LM19-Fib_INIT_3
.LM19:
!#PROLOGUE# 0
save %sp,-112,%sp
!#PROLOGUE# 1
.LLBB5:
.stabn 68,0,1,.LM20-Fib_INIT_3
.LM20:
sethi %hi(_CD_Fib+32),%o0
ld [%o0+%lo(_CD_Fib+32)],%o0
ld [%o0+40],%o0
ld [%o0+500],%o1
call %o1,0
mov %i0,%o0
.LLBE5:
ret
restore
.LLfe4:
.size Fib_INIT_3,.LLfe4-Fib_INIT_3
.stabn 192,0,0,.LLBB5-Fib_INIT_3
.stabn 224,0,0,.LLBE5-Fib_INIT_3
.LLscope3:
.stabs "",36,0,0,.LLscope3-Fib_INIT_3
.section ".data"
.align 2
.type _Utf9limit,#object
.size _Utf9limit,4
_Utf9limit:
.uahalf 983
.uahalf 5
.ascii "limit"
.skip 1
.global _ST_Fib_limit
.stabs "_ST_Fib_limit:G(0,1)",32,0,0,0
.align 4
.type _ST_Fib_limit,#object
.size _ST_Fib_limit,4
_ST_Fib_limit:
.uaword 36
.align 4
.type _FL_Fib,#object
.size _FL_Fib,16
_FL_Fib:
.uaword _Utf9limit
.uaword intClass
.uahalf 25
.uahalf 4
.uaword _ST_Fib_limit
.align 2
.type _Utf10main,#object
.size _Utf10main,4
_Utf10main:
.uahalf 21869
.uahalf 4
.ascii "main"
.skip 1
.align 2
.type _Utf11__Ljava_lang_String__V,#object
.size _Utf11__Ljava_lang_String__V,4
_Utf11__Ljava_lang_String__V:
.uahalf 65157
.uahalf 22
.ascii "([Ljava/lang/String;)V"
.skip 1
.align 2
.type _Utf12fib_i,#object
.size _Utf12fib_i,4
_Utf12fib_i:
.uahalf 12769
.uahalf 5
.ascii "fib_i"
.skip 1
.align 2
.type _Utf13_I_I,#object
.size _Utf13_I_I,4
_Utf13_I_I:
.uahalf 30495
.uahalf 4
.ascii "(I)I"
.skip 1
.align 2
.type _Utf14fib_r,#object
.size _Utf14fib_r,4
_Utf14fib_r:
.uahalf 12778
.uahalf 5
.ascii "fib_r"
.skip 1
.align 2
.type _Utf15_init_,#object
.size _Utf15_init_,4
_Utf15_init_:
.uahalf 19518
.uahalf 6
.ascii "<init>"
.skip 1
.align 2
.type _Utf16__V,#object
.size _Utf16__V,4
_Utf16__V:
.uahalf 56363
.uahalf 3
.ascii "()V"
.skip 1
.align 4
.type _MT_Fib,#object
.size _MT_Fib,176
_MT_Fib:
.uaword _Utf10main
.uaword _Utf11__Ljava_lang_String__V
.uahalf 16393
.uahalf 4
.uahalf 2
.skip 2
.uaword Fib_main_0
.uaword 0
.uaword 0
.uaword _CL_Fib
.uaword 0
.uaword 0
.uaword 0
.uaword _Utf12fib_i
.uaword _Utf13_I_I
.uahalf 16392
.uahalf 2
.uahalf 4
.skip 2
.uaword Fib_fib_i_1
.uaword 0
.uaword 0
.uaword _CL_Fib
.uaword 0
.uaword 0
.uaword 0
.uaword _Utf14fib_r
.uaword _Utf13_I_I
.uahalf 16392
.uahalf 3
.uahalf 1
.skip 2
.uaword Fib_fib_r_2
.uaword 0
.uaword 0
.uaword _CL_Fib
.uaword 0
.uaword 0
.uaword 0
.uaword _Utf15_init_
.uaword _Utf16__V
.uahalf 16384
.uahalf 1
.uahalf 1
.skip 2
.uaword Fib_INIT_3
.uaword 0
.uaword 0
.uaword _CL_Fib
.uaword 0
.uaword 0
.uaword 0
.stabs "_CD_Fib:S(0,60)=ar(0,0);0;8;(0,19)",38,0,8,_CD_Fib
.align 4
.type _CD_Fib,#object
.size _CD_Fib,36
_CD_Fib:
.uaword 0
.uaword _Utf1java_lang_System.0
.uaword _Utf2java_lang_StringBuffer.1
.uaword _Utf3Fib_.2
.uaword _Utf4____.3
.uaword _Utf5__iterative_.4
.uaword _Utf6___.5
.uaword _Utf7__recursive_.6
.uaword _Utf8java_lang_Object.7
.stabs "_CT_Fib:S(0,61)=ar(0,0);0;8;(0,6)",38,0,1,_CT_Fib
.align 8
.type _CT_Fib,#object
.size _CT_Fib,9
_CT_Fib:
.byte 0
.byte 7
.byte 7
.byte 8
.byte 8
.byte 8
.byte 8
.byte 8
.byte 7
.align 2
.type _Utf17Fib,#object
.size _Utf17Fib,4
_Utf17Fib:
.uahalf 34277
.uahalf 3
.ascii "Fib"
.skip 1
.global _CL_Fib
.stabs "_CL_Fib:G(0,24)",32,0,1,0
.align 4
.type _CL_Fib,#object
.size _CL_Fib,84
_CL_Fib:
.skip 4
.uaword 0
.uaword _Utf17Fib
.uahalf 0
.skip 2
.uaword 8
.uaword 0
.uaword 0
.uaword 9
.uaword _CT_Fib
.uaword _CD_Fib
.uaword _MT_Fib
.uahalf 4
.uahalf 11
.uaword _FL_Fib
.uaword 0
.uahalf 1
.uahalf 1
.uaword 0
.uaword 0
.uaword 0
.uaword 0
.uaword 1
.uaword 1
.section ".text"
.stabs "",100,0,0,.Letext
.Letext:
.ident "GCC: (GNU) cygnus-2.7.2-970602"
More information about the kaffe
mailing list