[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [f-cpu] GCC 3.1 for F-CPU port



hi !

>Hi,
>there was a lot of discussion about ISA.
it is one of the most discussed subject since 1998 :-)

> Lets create assembler, emulator and compiler

there are several F-CPU assemblers now.
even though i don't know which one to trust :-P
everyone with a specific syntax, unique features etc ...

emulator is a big problem. it will take time
before it's completely solved but i am confident.

compiler ... well ... you seem to have taken over
the past efforts :-)))

> and test it (boot
>linux kernel for example and count cycles it takes
>until /sbin/init is launched).

i don't think that it is a good metric.
On top of that, there is no external HW ready.

However it can be interesting to code and run the
"primary boot monitor" (see at
http://f-cpu.seul.org/new/F-CPU_boot.txt )
and start bootstrapping stuffs from that point,
making simple "toy" or useful software, etc ...

>As maintainer of part of Linux kernel I know that if
>I want to bug people with my ideas I should also do
>something.
:-)

>I created port of GCC for F-CPU.

did you start from the existing (limited) code ?

> Just now it compiles
>rather complex functions however there are known bugs
>in stack handling (pointer inc) and some others.

it's just a matter of time, i guess ...

>Also insns other than add and shift should be add (just
>now gcc uses its libs).

? i don't understand what that means ....
we can't do boolean or shift operations ?

>There is problem with jump optimizer because it needs
>labels tied to jumps but we have them in registers.
the 'trick' is maybe to use a "macro" and the instruction
can be rescheduled by Cédric's assembler ...

> Just now I suppose assembler to handle it (ineffecient).
>Also conditional branching is not tuned - it supresses
>loop optimization :(

it seems that you do not use the same set of conditions
as is implemented (LSB, MSB, zero, instead of greater, etc.).

>But at least something to play with :)
>Test:
>long f(short a,short b)
>{
>    short i;
>    for (i=(short)0;i<(short)10;i++) a += b;
>    return a+(long)0x100000;
>}
>
>; FCPU ASM; CC by devik@cdi.cz.text
>..extern f
>f:
>    move.d a0,a3
>    loadcons.0 0,a2
>    loadcons.0 9,a4
>@L6:
>    addi.d 1,a2,a2
>    add.d a3,a1,a3
>    cmples.d a4,a2,a0
>    jmp_direct.nz a0,@L6
>    widen.d a3,a1
>    bseti log2(1048576),r0,a0

wow .... uh ....

>    add a0,a1,rv
>    jmp ra

anyway, that's impressing (particularly because
i am not sure i could get till that point ;-D)

i have put the sources at 
http://f-cpu.seul.org/new/gccfcpu.20021203.tgz

YG

*************************************************************
To unsubscribe, send an e-mail to majordomo@seul.org with
unsubscribe f-cpu       in the body. http://f-cpu.seul.org/