Create binary from GCJ generated assembly

isuru herath isuru81@yahoo.com
Wed Oct 28 15:43:00 GMT 2009


Hi Bryce,
Thanks for the quick reply. I followed your steps. But got the following error.
shared_counter.s: Assembler messages:
shared_counter.s:1023: Error: file number 1 already allocated
steps I followed.
1. shared counter program with no calls to other classes.
2. generate assembly.(gcj -S shared_counter.java)
3. edit .s file and add instructions.
4. create binary. (gcj shared_counter.s --main=shared_counter)
is there something wrong here or do i need to do another setting. I googled for this error and found lot of bug reports which I couldnot understand. any advice/help is greatly appreciated.
regards,
Isuru
--- On Wed, 10/28/09, Bryce McKinlay <bmckinlay@gmail.com> wrote:
> From: Bryce McKinlay <bmckinlay@gmail.com>
> Subject: Re: Create binary from GCJ generated assembly
> To: "isuru herath" <isuru81@yahoo.com>
> Cc: "Andrew Haley" <aph@redhat.com>, java@gcc.gnu.org
> Date: Wednesday, October 28, 2009, 8:22 AM
> On Wed, Oct 28, 2009 at 11:05 AM,
> isuru herath <isuru81@yahoo.com>
> wrote:
>> > Thanks a lot for the quick reply. I did accordingly.
> But results were not the same. My program is a multi
> threaded shared counter.
> > so in my Java code I have
> >
> > counter++
> >
> > I need to surround this with two xchg instructions.
> like
> >
> > xchg
> > counter++
> > xchg
> >
> > so that I can count number of read and write
> operations between two xchg instructions.
> >
> > with gcc I got both as 1 which is correct.
> > with gcj and JNI I got 47 read operations and 29 write
> operations
> > with gcj and CNI I got 6 read operations and 6 write
> operations
>> This is because you are making calls into native code from
> Java. GCJ
> cannot inline native code into your Java code. Calls are
> not free -
> you are measuring the overhead of returning back from
> native code into
> Java code and vice-versa.
>> If you need to add asm instructions to GCJ compiled code,
> you can
> generate assembler using something like:
>> gcj -S MyClass.java
>> Then, edit the resulting assembler .s file to add the
> instructions.
> Finally, link it with something like:
>> gcj MyClass.s --main=MyClass
>> Bryce
>
 


More information about the Java mailing list

AltStyle によって変換されたページ (->オリジナル) /