Hi all, I'm designing a C compiler for the PicoBlaze processor. The compiler is a subset of the C language, but is quite good. I called the C compiler PicoC :-) I'm an FPGA designer and I want to use this compiler for my job. I think is very interesting to have a small microprocessor in an FPGA that you can program in C! Are you using PicoBlaze at moment? do you think you can help me to test the Compiler? The compiler at moment gives working code, but I need someone to do some good testing. I do not promise that I'll give the compiler to eveybody, but I'll give the compiler to 5 or 10 people in all. Also,the compiler is in pre Alpha version. That means that has not all the functionality. When the compiler will be finished I'll do some optimization on the generated code. At moment I can write code like this: EXAMPLE: int i; int *ii; char s; char *ss; void main() { i =0; for(i=0;i<0x123;i++){ s=1; *ss=s; do {s++; *ss +=s; } while (*ss<100); if(s) i = 10; else i = 100; } ii = 1; *ii = 1; } and when I lunch the PicoC compiler this is the result: CONSTANT _i_low , ff CONSTANT _i_high , fe CONSTANT _ii , fd CONSTANT _s , fc CONSTANT _ss , fb LOAD S3 , fb ;int i; ;int *ii; ;char s; ;char *ss; ;void main() _main: ;{ ; i =0; LOAD S5,00 LOAD S4,00 OUTPUT S5 , _i_low OUTPUT S4 , _i_high ; for(i=0;i<0x123;i++){ LOAD S5,00 LOAD S4,00 OUTPUT S5 , _i_low OUTPUT S4 , _i_high L2: INPUT S1 , _i_low INPUT S0 , _i_high SUB S3 , 01 OUTPUT S0 , (S3) SUB S3 , 01 OUTPUT S1 , (S3) LOAD S5,23 LOAD S4,01 INPUT S1, (S3) ADD S3 , 01 INPUT S0, (S3) ADD S3 , 01 SUB S1 , S5 SUBCY S0, S4 JUMP C , L3 JUMP L5 JUMP L4 L3: INPUT S5 , _i_low INPUT S4 , _i_high ADD S5 , 01 ADDCY S5 , 00 OUTPUT S5, _i_low OUTPUT S4, _i_high SUB S5 , 01 SUBCY S5 , 00 JUMP L2 L4: ; s=1; LOAD S5,01 OUTPUT S5 , _s ; *ss=s; INPUT S1 , _ss INPUT S5 , _s OUTPUT S5, (S1) ; do {s++; L6: INPUT S5 , _s ADD S5 , 01 OUTPUT S5, _s SUB S5 , 01 ; *ss +=s; INPUT S1 , _ss INPUT S5, (S1) SUB S3 , 01 OUTPUT S5 , (S3) INPUT S5 , _s INPUT S1, (S3) ADD S3 , 01 ADD S1 , S5 ; } ; while (*ss<100); L7: INPUT S5 , _ss INPUT S5, (S5) SUB S3 , 01 OUTPUT S5 , (S3) LOAD S5,64 INPUT S1, (S3) ADD S3 , 01 SUB S1 , S5 JUMP C , L9 JUMP L8 L9: JUMP L6 L8: ; if(s) INPUT S5 , _s LOAD S4 , 00 OR S5 , S4 JUMP NZ , L10 JUMP L10 L11: ; i = 10; LOAD S5,0a LOAD S4,00 OUTPUT S5 , _i_low OUTPUT S4 , _i_high ; else JUMP L12 L10: ; i = 100; LOAD S5,64 LOAD S4,00 OUTPUT S5 , _i_low OUTPUT S4 , _i_high L12: ; } JUMP L3 L5: ; ii = 1; LOAD S5,01 LOAD S4,00 OUTPUT S5 , _ii ; *ii = 1; INPUT S1 , _ii LOAD S5,01 LOAD S4,00 OUTPUT S5, (S1) SUB S1 , 01 OUTPUT S4 , (S1) ;} I hope someone of you is interested Regards, Francesco
C Compiler for Picoblaze !!!!!
Started by ●November 9, 2004
Reply by ●November 9, 20042004-11-09
Francesco Poderico wrote:> Hi all, > I'm designing a C compiler for the PicoBlaze processor. > The compiler is a subset of the C language, but is quite good. > > I called the C compiler PicoC :-) > > I'm an FPGA designer and I want to use this compiler for my job. > I think is very interesting to have a small microprocessor in an FPGA that > you can program in C!You might want to check out SDCC on sourceforge. -- Steve Williams "The woods are lovely, dark and deep. steve at icarus.com But I have promises to keep, http://www.icarus.com and lines to code before I sleep, http://www.picturel.com And lines to code before I sleep."
Reply by ●November 9, 20042004-11-09
Francesco Poderico wrote:> Hi all, > I'm designing a C compiler for the PicoBlaze processor. > The compiler is a subset of the C language, but is quite good.Did you check out the LCC ? http://www.cs.princeton.edu/software/lcc/
Reply by ●November 11, 20042004-11-11
Reply by ●November 11, 20042004-11-11
Francesco: Your compiler assumes memory is attached to the I/O port, which is usually not. When it is, it is mostly special purpose read or write only memory (registers) not fit for storing variables. The idea with a C compiler for Picoblaze is to have an intelligent use of the registers. In your example all variables should be registers. Only if needed you should offload variables to some scratchpad. The Picoblaze-3 core (KCPSM3.vhd) has a 64 byte scratchpad for that, with its own set of I/O instructions FETCH and STORE. Of course you must also be able to declare references to the I/O ports to control your attached hardware, which will then use INPUT and OUTPUT. A problem with Picoblaze in relation to a, say C, compiler is its inability to work with constant arrays (lookup tables, constant strings) and computed jumps, often you end up with lists of compare/branch lists. Otherwise Picoblaze is tiny yet powerful core to control all sorts of things in an FPGA design. Your C compiler, if more focussed on the typical use of Picoblaze, could nevertheless be very useful in using the core. Henk van Kampen see: www.mediatronix.com/tools francesco_poderico@yahoo.com (Francesco Poderico) wrote in message news:<1d6bc71.0411090836.21210d2b@posting.google.com>...> Hi all, > I'm designing a C compiler for the PicoBlaze processor. > The compiler is a subset of the C language, but is quite good. > > I called the C compiler PicoC :-) > > I'm an FPGA designer and I want to use this compiler for my job. > I think is very interesting to have a small microprocessor in an FPGA that > you can program in C! > > > Are you using PicoBlaze at moment? > do you think you can help me to test the Compiler? > > The compiler at moment gives working code, but I need someone to do some > good testing. > > I do not promise that I'll give the compiler to eveybody, but I'll give > the compiler to 5 or 10 people in all. > > Also,the compiler is in pre Alpha version. > That means that has not all the functionality. > > When the compiler will be finished I'll do some optimization on the generated code. > > > At moment I can write code like this: > > > EXAMPLE: > > int i; > int *ii; > char s; > char *ss; > > void main() > { > i =0; > for(i=0;i<0x123;i++){ > s=1; > *ss=s; > do {s++; > *ss +=s; > } > while (*ss<100); > if(s) > i = 10; > else > i = 100; > } > ii = 1; > *ii = 1; > } > > > and when I lunch the PicoC compiler this is the result: > > CONSTANT _i_low , ff > CONSTANT _i_high , fe > CONSTANT _ii , fd > CONSTANT _s , fc > CONSTANT _ss , fb > LOAD S3 , fb > > > > ;int i; > ;int *ii; > ;char s; > ;char *ss; > ;void main() > _main: > ;{ > ; i =0; > LOAD S5,00 > LOAD S4,00 > OUTPUT S5 , _i_low > OUTPUT S4 , _i_high > ; for(i=0;i<0x123;i++){ > LOAD S5,00 > LOAD S4,00 > OUTPUT S5 , _i_low > OUTPUT S4 , _i_high > L2: > INPUT S1 , _i_low > INPUT S0 , _i_high > SUB S3 , 01 > OUTPUT S0 , (S3) > SUB S3 , 01 > OUTPUT S1 , (S3) > LOAD S5,23 > LOAD S4,01 > INPUT S1, (S3) > ADD S3 , 01 > INPUT S0, (S3) > ADD S3 , 01 > SUB S1 , S5 > SUBCY S0, S4 > JUMP C , L3 > JUMP L5 > JUMP L4 > L3: > INPUT S5 , _i_low > INPUT S4 , _i_high > ADD S5 , 01 > ADDCY S5 , 00 > OUTPUT S5, _i_low > OUTPUT S4, _i_high > SUB S5 , 01 > SUBCY S5 , 00 > JUMP L2 > L4: > ; s=1; > LOAD S5,01 > OUTPUT S5 , _s > ; *ss=s; > INPUT S1 , _ss > INPUT S5 , _s > OUTPUT S5, (S1) > ; do {s++; > L6: > INPUT S5 , _s > ADD S5 , 01 > OUTPUT S5, _s > SUB S5 , 01 > ; *ss +=s; > INPUT S1 , _ss > INPUT S5, (S1) > SUB S3 , 01 > OUTPUT S5 , (S3) > INPUT S5 , _s > INPUT S1, (S3) > ADD S3 , 01 > ADD S1 , S5 > > ; } > ; while (*ss<100); > L7: > INPUT S5 , _ss > INPUT S5, (S5) > SUB S3 , 01 > OUTPUT S5 , (S3) > LOAD S5,64 > INPUT S1, (S3) > ADD S3 , 01 > SUB S1 , S5 > JUMP C , L9 > JUMP L8 > L9: > JUMP L6 > L8: > ; if(s) > INPUT S5 , _s > LOAD S4 , 00 > OR S5 , S4 > JUMP NZ , L10 > JUMP L10 > L11: > ; i = 10; > LOAD S5,0a > LOAD S4,00 > OUTPUT S5 , _i_low > OUTPUT S4 , _i_high > ; else > JUMP L12 > L10: > ; i = 100; > LOAD S5,64 > LOAD S4,00 > OUTPUT S5 , _i_low > OUTPUT S4 , _i_high > L12: > ; } > JUMP L3 > L5: > ; ii = 1; > LOAD S5,01 > LOAD S4,00 > OUTPUT S5 , _ii > ; *ii = 1; > INPUT S1 , _ii > LOAD S5,01 > LOAD S4,00 > OUTPUT S5, (S1) > SUB S1 , 01 > OUTPUT S4 , (S1) > ;} > > > > > > I hope someone of you is interested > > Regards, > Francesco
Reply by ●November 11, 20042004-11-11
Thank you henk for your comment, Yes, I'm assuming to have some external memory attached to the processor. But if you declare a variable as register you may not need any external ram eg. void main(){ register char i; register int *p; p=1; for(i=0;i<100;i++){ { *p=(int)i; } } In this case the compiler generate code that doesn't need any memory attached to PicoBlaze :-) If you still don't bealeve me, send me some code and I'll send you back the code generated by PicoC :-) So, it depeand from the application... you can use the external memory or not. The compiler also tells you how much memory you need (if you need) Unfortunatly I still have a lot work to do, but the compiler start to be working. The version alpha will be read in few weeks time,(I still have some bugs to fix) I hope to fix some bugs in 2 or 3 week time, after that I will appriciate anyone could help me in the testing(I won't give the source) Also, I want to say thanks to all the people that seems interested in this project. Francesco henk@mediatronix.com (Henk van Kampen) wrote in message news:<23ecd97d.0411110331.2992002d@posting.google.com>...> Francesco: > Your compiler assumes memory is attached to the I/O port, which is > usually not. When it is, it is mostly special purpose read or write > only memory (registers) not fit for storing variables. The idea with a > C compiler for Picoblaze is to have an intelligent use of the > registers. In your example all variables should be registers. Only if > needed you should offload variables to some scratchpad. The > Picoblaze-3 core (KCPSM3.vhd) has a 64 byte scratchpad for that, with > its own set of I/O instructions FETCH and STORE. Of course you must > also be able to declare references to the I/O ports to control your > attached hardware, which will then use INPUT and OUTPUT. A problem > with Picoblaze in relation to a, say C, compiler is its inability to > work with constant arrays (lookup tables, constant strings) and > computed jumps, often you end up with lists of compare/branch lists. > Otherwise Picoblaze is tiny yet powerful core to control all sorts of > things in an FPGA design. Your C compiler, if more focussed on the > typical use of Picoblaze, could nevertheless be very useful in using > the core. > Henk van Kampen > see: www.mediatronix.com/tools > > francesco_poderico@yahoo.com (Francesco Poderico) wrote in message news:<1d6bc71.0411090836.21210d2b@posting.google.com>... > > Hi all, > > I'm designing a C compiler for the PicoBlaze processor. > > The compiler is a subset of the C language, but is quite good. > > > > I called the C compiler PicoC :-) > > > > I'm an FPGA designer and I want to use this compiler for my job. > > I think is very interesting to have a small microprocessor in an FPGA that > > you can program in C! > > > > > > Are you using PicoBlaze at moment? > > do you think you can help me to test the Compiler? > > > > The compiler at moment gives working code, but I need someone to do some > > good testing. > > > > I do not promise that I'll give the compiler to eveybody, but I'll give > > the compiler to 5 or 10 people in all. > > > > Also,the compiler is in pre Alpha version. > > That means that has not all the functionality. > > > > When the compiler will be finished I'll do some optimization on the generated code. > > > > > > At moment I can write code like this: > > > > > > EXAMPLE: > > > > int i; > > int *ii; > > char s; > > char *ss; > > > > void main() > > { > > i =0; > > for(i=0;i<0x123;i++){ > > s=1; > > *ss=s; > > do {s++; > > *ss +=s; > > } > > while (*ss<100); > > if(s) > > i = 10; > > else > > i = 100; > > } > > ii = 1; > > *ii = 1; > > } > > > > > > and when I lunch the PicoC compiler this is the result: > > > > CONSTANT _i_low , ff > > CONSTANT _i_high , fe > > CONSTANT _ii , fd > > CONSTANT _s , fc > > CONSTANT _ss , fb > > LOAD S3 , fb > > > > > > > > ;int i; > > ;int *ii; > > ;char s; > > ;char *ss; > > ;void main() > > _main: > > ;{ > > ; i =0; > > LOAD S5,00 > > LOAD S4,00 > > OUTPUT S5 , _i_low > > OUTPUT S4 , _i_high > > ; for(i=0;i<0x123;i++){ > > LOAD S5,00 > > LOAD S4,00 > > OUTPUT S5 , _i_low > > OUTPUT S4 , _i_high > > L2: > > INPUT S1 , _i_low > > INPUT S0 , _i_high > > SUB S3 , 01 > > OUTPUT S0 , (S3) > > SUB S3 , 01 > > OUTPUT S1 , (S3) > > LOAD S5,23 > > LOAD S4,01 > > INPUT S1, (S3) > > ADD S3 , 01 > > INPUT S0, (S3) > > ADD S3 , 01 > > SUB S1 , S5 > > SUBCY S0, S4 > > JUMP C , L3 > > JUMP L5 > > JUMP L4 > > L3: > > INPUT S5 , _i_low > > INPUT S4 , _i_high > > ADD S5 , 01 > > ADDCY S5 , 00 > > OUTPUT S5, _i_low > > OUTPUT S4, _i_high > > SUB S5 , 01 > > SUBCY S5 , 00 > > JUMP L2 > > L4: > > ; s=1; > > LOAD S5,01 > > OUTPUT S5 , _s > > ; *ss=s; > > INPUT S1 , _ss > > INPUT S5 , _s > > OUTPUT S5, (S1) > > ; do {s++; > > L6: > > INPUT S5 , _s > > ADD S5 , 01 > > OUTPUT S5, _s > > SUB S5 , 01 > > ; *ss +=s; > > INPUT S1 , _ss > > INPUT S5, (S1) > > SUB S3 , 01 > > OUTPUT S5 , (S3) > > INPUT S5 , _s > > INPUT S1, (S3) > > ADD S3 , 01 > > ADD S1 , S5 > > > > ; } > > ; while (*ss<100); > > L7: > > INPUT S5 , _ss > > INPUT S5, (S5) > > SUB S3 , 01 > > OUTPUT S5 , (S3) > > LOAD S5,64 > > INPUT S1, (S3) > > ADD S3 , 01 > > SUB S1 , S5 > > JUMP C , L9 > > JUMP L8 > > L9: > > JUMP L6 > > L8: > > ; if(s) > > INPUT S5 , _s > > LOAD S4 , 00 > > OR S5 , S4 > > JUMP NZ , L10 > > JUMP L10 > > L11: > > ; i = 10; > > LOAD S5,0a > > LOAD S4,00 > > OUTPUT S5 , _i_low > > OUTPUT S4 , _i_high > > ; else > > JUMP L12 > > L10: > > ; i = 100; > > LOAD S5,64 > > LOAD S4,00 > > OUTPUT S5 , _i_low > > OUTPUT S4 , _i_high > > L12: > > ; } > > JUMP L3 > > L5: > > ; ii = 1; > > LOAD S5,01 > > LOAD S4,00 > > OUTPUT S5 , _ii > > ; *ii = 1; > > INPUT S1 , _ii > > LOAD S5,01 > > LOAD S4,00 > > OUTPUT S5, (S1) > > SUB S1 , 01 > > OUTPUT S4 , (S1) > > ;} > > > > > > > > > > > > I hope someone of you is interested > > > > Regards, > > Francesco
Reply by ●November 11, 20042004-11-11
My apologies, A C compiler for PicoBlaze ? Is really needed ? Leaving out an academic research, is the correct choice ? Walter. "Francesco Poderico" <francesco_poderico@yahoo.com> a �crit dans le message de news:1d6bc71.0411090836.21210d2b@posting.google.com...> Hi all, > I'm designing a C compiler for the PicoBlaze processor. > The compiler is a subset of the C language, but is quite good. > > I called the C compiler PicoC :-) > > I'm an FPGA designer and I want to use this compiler for my job. > I think is very interesting to have a small microprocessor in an FPGA that > you can program in C! > > > Are you using PicoBlaze at moment? > do you think you can help me to test the Compiler? > > The compiler at moment gives working code, but I need someone to do some > good testing. > > I do not promise that I'll give the compiler to eveybody, but I'll give > the compiler to 5 or 10 people in all. > > Also,the compiler is in pre Alpha version. > That means that has not all the functionality. > > When the compiler will be finished I'll do some optimization on thegenerated code.> > > At moment I can write code like this: > > > EXAMPLE: > > int i; > int *ii; > char s; > char *ss; > > void main() > { > i =0; > for(i=0;i<0x123;i++){ > s=1; > *ss=s; > do {s++; > *ss +=s; > } > while (*ss<100); > if(s) > i = 10; > else > i = 100; > } > ii = 1; > *ii = 1; > } > > > and when I lunch the PicoC compiler this is the result: > > CONSTANT _i_low , ff > CONSTANT _i_high , fe > CONSTANT _ii , fd > CONSTANT _s , fc > CONSTANT _ss , fb > LOAD S3 , fb > > > > ;int i; > ;int *ii; > ;char s; > ;char *ss; > ;void main() > _main: > ;{ > ; i =0; > LOAD S5,00 > LOAD S4,00 > OUTPUT S5 , _i_low > OUTPUT S4 , _i_high > ; for(i=0;i<0x123;i++){ > LOAD S5,00 > LOAD S4,00 > OUTPUT S5 , _i_low > OUTPUT S4 , _i_high > L2: > INPUT S1 , _i_low > INPUT S0 , _i_high > SUB S3 , 01 > OUTPUT S0 , (S3) > SUB S3 , 01 > OUTPUT S1 , (S3) > LOAD S5,23 > LOAD S4,01 > INPUT S1, (S3) > ADD S3 , 01 > INPUT S0, (S3) > ADD S3 , 01 > SUB S1 , S5 > SUBCY S0, S4 > JUMP C , L3 > JUMP L5 > JUMP L4 > L3: > INPUT S5 , _i_low > INPUT S4 , _i_high > ADD S5 , 01 > ADDCY S5 , 00 > OUTPUT S5, _i_low > OUTPUT S4, _i_high > SUB S5 , 01 > SUBCY S5 , 00 > JUMP L2 > L4: > ; s=1; > LOAD S5,01 > OUTPUT S5 , _s > ; *ss=s; > INPUT S1 , _ss > INPUT S5 , _s > OUTPUT S5, (S1) > ; do {s++; > L6: > INPUT S5 , _s > ADD S5 , 01 > OUTPUT S5, _s > SUB S5 , 01 > ; *ss +=s; > INPUT S1 , _ss > INPUT S5, (S1) > SUB S3 , 01 > OUTPUT S5 , (S3) > INPUT S5 , _s > INPUT S1, (S3) > ADD S3 , 01 > ADD S1 , S5 > > ; } > ; while (*ss<100); > L7: > INPUT S5 , _ss > INPUT S5, (S5) > SUB S3 , 01 > OUTPUT S5 , (S3) > LOAD S5,64 > INPUT S1, (S3) > ADD S3 , 01 > SUB S1 , S5 > JUMP C , L9 > JUMP L8 > L9: > JUMP L6 > L8: > ; if(s) > INPUT S5 , _s > LOAD S4 , 00 > OR S5 , S4 > JUMP NZ , L10 > JUMP L10 > L11: > ; i = 10; > LOAD S5,0a > LOAD S4,00 > OUTPUT S5 , _i_low > OUTPUT S4 , _i_high > ; else > JUMP L12 > L10: > ; i = 100; > LOAD S5,64 > LOAD S4,00 > OUTPUT S5 , _i_low > OUTPUT S4 , _i_high > L12: > ; } > JUMP L3 > L5: > ; ii = 1; > LOAD S5,01 > LOAD S4,00 > OUTPUT S5 , _ii > ; *ii = 1; > INPUT S1 , _ii > LOAD S5,01 > LOAD S4,00 > OUTPUT S5, (S1) > SUB S1 , 01 > OUTPUT S4 , (S1) > ;} > > > > > > I hope someone of you is interested > > Regards, > Francesco
Reply by ●November 11, 20042004-11-11
Henk van Kampen wrote:> Francesco: > Your compiler assumes memory is attached to the I/O port, which is > usually not. When it is, it is mostly special purpose read or write > only memory (registers) not fit for storing variables. The idea with a > C compiler for Picoblaze is to have an intelligent use of the > registers. In your example all variables should be registers. Only if > needed you should offload variables to some scratchpad. The > Picoblaze-3 core (KCPSM3.vhd) has a 64 byte scratchpad for that, with > its own set of I/O instructions FETCH and STORE. Of course you must > also be able to declare references to the I/O ports to control your > attached hardware, which will then use INPUT and OUTPUT. A problem > with Picoblaze in relation to a, say C, compiler is its inability to > work with constant arrays (lookup tables, constant strings) and > computed jumps, often you end up with lists of compare/branch lists. > Otherwise Picoblaze is tiny yet powerful core to control all sorts of > things in an FPGA design. Your C compiler, if more focussed on the > typical use of Picoblaze, could nevertheless be very useful in using > the core. > Henk van KampenI would also look at the HLA, here http://webster.cs.ucr.edu/AsmTools/HLA/hla2/0_hla2.html There is an opening for more portable assemblers, call it a "Structured Assembler", or a C-Syntax Assembler, if you will. These will always be subsets, but if they implement a common preprocessor, and in-line asm, for example, then it will be possible to have one source file that is portable. Eg A design could start on a PC, to develop the algorithm, and then be re-coded/optimised as needed, to target tiny cores, like the PicoBlaze, et al. -jg
Reply by ●November 12, 20042004-11-12
Francesco: Please let me know when you have something testable. I think it could be useful to cooperate with/add to my Picoblaze IDE too. You should consider targeting it to the Picoblaze-3 core, which is main stream now, I think. A variation of that core with a block ram as scratchpad gives you 256 byte variable/data space, which can be initialized constant area also. This allows you to work with strings etc. Additionally, since block rams are dual ported, you can share 1 blockram between two Picoblazes. You need to be able to locate your data/variables somewhere in blockram, to keep variables for both pB's separated (or not, so you can use variables to communicate between the 2 pB's). Do not assume any genaral purpose memory attached to the I/O ports. Henk francesco_poderico@yahoo.com (Francesco Poderico) wrote in message news:<1d6bc71.0411110829.c65c63b@posting.google.com>...> Thank you henk for your comment, > Yes, I'm assuming to have some external memory attached to the > processor. > But if you declare a variable as register you may not need any > external ram > > eg. > > void main(){ > register char i; > register int *p; > p=1; > > for(i=0;i<100;i++){ > { > *p=(int)i; > } > > } > In this case the compiler generate code that doesn't need any memory > attached to PicoBlaze :-) > If you still don't bealeve me, send me some code and I'll send you > back the code > generated by PicoC :-) > > So, it depeand from the application... you can use the external memory > or not. > > The compiler also tells you how much memory you need (if you need) > > Unfortunatly I still have a lot work to do, but the compiler start to > be > working. > The version alpha will be read in few weeks time,(I still have some > bugs to fix) > I hope to fix some bugs in 2 or 3 week time, after that I will > appriciate > anyone could help me in the testing(I won't give the source) > > Also, I want to say thanks to all the people that seems interested in > this project. > > > > Francesco
Reply by ●November 12, 20042004-11-12
Jim Granville <no.spam@designtools.co.nz> wrote in message> > There is an opening for more portable assemblers, call it a "Structured > Assembler", or a C-Syntax Assembler, if you will. > These will always be subsets, but if they implement a common > preprocessor, and in-line asm, for example, then it will be possible to > have one source file that is portable. > Eg A design could start on a PC, to develop the algorithm, and then > be re-coded/optimised as needed, to target tiny cores, like the > PicoBlaze, et al.Isn't that why they make software simulators? Though I can see the need for portability when you don't yet know how much work the application will involve to select a suitable processor. Chris