hi All,
I just encountered the following problem
I've a function "detect_US", which should return true when a valid
US-echo is detected
In the main program I call the function like this
<JAL>
if detect_US then
asynch_send_hw (US_distance)
end if
</JAL>
This worked perfect, at least I thought ;-)
For test purposes, I removed "asynch_send_hw" call
and the result was that about my whole program was optimized away :-(
Strictly speaking, this optimization was a correct action,
because I forgot to set a return value in the function "detect_US".
(The US-distance was also transmitted in another place,
therfor I thought the program worked correctly).
And main problem is that the function detect_US was never called !!
So I think at least it's inconsequent to optimize away or not
the function detect_US,
depending on if the "if-statement" contains any functional code.
It would also be a good idea to give a warning when no return value is
set in a function.
Stef
hi All,
Having again an application, that has problems with the 2k-border,
and not be able to make all the code 2k-safe (program becomes too large),
I want to build a small application to help me finding problems with 2k
border.
Is there an compiler option that gives me the location-address of each
instruction ?
(I tried several options, but all options I tried, crashed the compiler,
saying something not having enough memory).
If there isn't a good compiler option, here is the idea
- parse the asm listing and find all the 2k borders
- display 50 lines before and after each 2k border
Until now I do this by hand, and it works quiet well,
but having a complex application, it's a terrible job,
searching the 2k-borders manually.
So what I need is a good rule to locate the addresses in the assembler file.
This is what I found until now:
- any line starting at the first position, and not starting with a
semicolon,
contains an address at the end of the line.
Can anyone verify if this is correct,
or is there a better rule ?
thanks,
Stef
Hi all
CVS is a harsh mistress. I finally made it work. Here is the terminal
log for anyone who wants a crack at it. OS is OS X 10.3.9, but any
*nix should work. Some bash specifics.
> iMacDiane:~/jalprogs/sourceforge eur$ ls -la
> total 0
> drwxr-xr-x 2 eur eur 68 27 Apr 19:53 .
> drwxr-xr-x 7 eur eur 238 17 Mar 23:24 ..
We start with a clean directory.
> iMacDiane:~/jalprogs/sourceforge eur$ set | grep CVS
> CVSROOT=:ext:eur@...:/cvsroot/jal
> CVS_RSH=ssh
these were set previously in this bash terminal session by:
export CVSROOT=:ext:eur@...:/cvsroot/jal
export CVS_RSH=ssh
remember that you can only do this if you are a developer. Use your own
username as well.
let's checkout some code:
> iMacDiane:~/jalprogs/sourceforge eur$ cvs checkout jal
> eur@...'s password:
> cvs checkout: Updating jal
> U jal/AUTHORS
> U jal/COPYING
> [...]
> cvs checkout: Updating jal/jal/testsuite/src/config
> U jal/jal/testsuite/src/config/Makefile
> U jal/jal/testsuite/src/config/t0067.jal
> U jal/jal/testsuite/src/config/t0068.jal
> U jal/jal/testsuite/src/config/t0069.jal
> U jal/jal/testsuite/src/config/t0070.jal
> U jal/jal/testsuite/src/config/t0071.jal
> U jal/jal/testsuite/src/config/t0072.jal
> U jal/jal/testsuite/src/config/t0073.jal
> U jal/jal/testsuite/src/config/t0074.jal
> cvs checkout: in directory jal/jal/testsuite/src/cvs:
> cvs checkout: cannot open CVS/Entries for reading: No such file or
> directory
> cvs checkout: Updating jal/jal/testsuite/src/cvs
this "cvs" directory should be UPPERcase, IMHO. I have no idea how to
change that :-(
Javier?
> cvs checkout: Updating jal/jal/testsuite/src/word
> U jal/jal/testsuite/src/word/Makefile
> U jal/jal/testsuite/src/word/t0118.jal
> [..]
> U jal/lib/sx_50.jal
> iMacDiane:~/jalprogs/sourceforge eur$ cd jal
> iMacDiane:~/jalprogs/sourceforge/jal eur$ ls -la
> total 984
> drwxr-xr-x 32 eur eur 1088 27 Apr 19:55 .
> drwxr-xr-x 3 eur eur 102 27 Apr 19:55 ..
> -rw-r--r-- 1 eur eur 91 1 Mar 2003 AUTHORS
> -rw-r--r-- 1 eur eur 17990 1 Mar 2003 COPYING
> drwxr-xr-x 6 eur eur 204 27 Apr 19:55 CVS
> -rw-r--r-- 1 eur eur 5859 26 Apr 20:53 ChangeLog
> -rw-r--r-- 1 eur eur 9236 21 May 2003 INSTALL
> -rw-r--r-- 1 eur eur 3692 11 Sep 2003 MAINTAINERS
> -rw-r--r-- 1 eur eur 277 17 Sep 2003 Makefile.am
> -rw-r--r-- 1 eur eur 18952 28 Jan 18:46 Makefile.in
> -rw-r--r-- 1 eur eur 11 1 Mar 2003 NEWS
> -rwxr-xr-x 1 eur eur 10128 18 Sep 2003 PIC18_news.txt
> -rw-r--r-- 1 eur eur 1067 1 Mar 2003 README
> -rw-r--r-- 1 eur eur 9509 9 May 2003 TODO
> -rw-r--r-- 1 eur eur 36823 28 Jan 18:46 aclocal.m4
> -rwxr-xr-x 1 eur eur 41449 27 Mar 2003 config.guess
> -rw-r--r-- 1 eur eur 3543 1 May 2004 config.h.in
> -rwxr-xr-x 1 eur eur 29792 27 Mar 2003 config.sub
> -rwxr-xr-x 1 eur eur 194976 28 Jan 18:46 configure
> -rw-r--r-- 1 eur eur 3444 28 Jan 18:46 configure.ac
> -rwxr-xr-x 1 eur eur 12123 21 May 2003 depcomp
> drwxr-xr-x 53 eur eur 1802 27 Apr 19:55 doc
> -rwxr-xr-x 1 eur eur 5569 21 May 2003 install-sh
> drwxr-xr-x 48 eur eur 1632 27 Apr 19:55 jal
> -rwxr-xr-x 1 eur eur 6930 10 Jun 2003 jal.dsp
> -rwxr-xr-x 1 eur eur 14874 13 Apr 2003 jal.mak
> -rw-r--r-- 1 eur eur 1103 1 Jul 2003 jal.spec.in
> -rwxr-xr-x 1 eur eur 5859 1 Sep 2003 jal.vcproj
> drwxr-xr-x 67 eur eur 2278 27 Apr 19:55 lib
> -rwxr-xr-x 1 eur eur 10270 21 May 2003 missing
> -rwxr-xr-x 1 eur eur 1801 21 May 2003 mkinstalldirs
> -rw-r--r-- 1 eur eur 10 1 Mar 2003 stamp-h.in
all seems to be fine
> iMacDiane:~/jalprogs/sourceforge/jal eur$ cp /Users/eur/Temporary\
> Items/examples/ .
here I add the examples subdir, which I kept in a temp directory
> iMacDiane:~/jalprogs/sourceforge/jal eur$ ls
> AUTHORS Makefile.am aclocal.m4 depcomp
> jal.mak stamp-h.in
> COPYING Makefile.in config.guess doc
> jal.spec.in
> CVS NEWS config.h.in examples
> jal.vcproj
> ChangeLog PIC18_news.txt config.sub install-sh lib
> INSTALL README configure jal missing
> MAINTAINERS TODO configure.ac jal.dsp
> mkinstalldirs
it is where it should be.
> iMacDiane:~/jalprogs/sourceforge/jal eur$ cd ..
> iMacDiane:~/jalprogs/sourceforge eur$ cvs add jal/examples/
> eur@...'s password:
> cvs add: in directory .:
> cvs [add aborted]: there is no version here; do 'cvs checkout' first
don't do it here
> iMacDiane:~/jalprogs/sourceforge eur$ cd jal
do it here
> iMacDiane:~/jalprogs/sourceforge/jal eur$ cvs add examples
> eur@...'s password:
> ? examples/16_tst.jal
> [...]
> ? examples/tc77_lcd.jal
cvs doesn't understand the files in this directory, which makes sense.
They were not added. Maybe I should have used the -R option?
> Directory /cvsroot/jal/jal/examples added to the repository
cvs did add the directory, though.
> iMacDiane:~/jalprogs/sourceforge/jal eur$ cvs add examples/*
now we add the files, with a wildcard no less.
> eur@...'s password:
> ? examples/CVS/Entries
> ? examples/CVS/Repository
> ? examples/CVS/Root
> cvs add: scheduling file `examples/16_tst.jal' for addition
> cvs add: scheduling file `examples/16bit.jal' for addition
> cvs add: scheduling file `examples/2416_tst.jal' for addition
> cvs add: cannot add a `CVS' directory
no you can't. It was a bit rude of me to use a wildcard.
> cvs add: scheduling file `examples/analog.jal' for addition
> [..]
> cvs add: scheduling file `examples/tc77_lcd.jal' for addition
> cvs add: use 'cvs commit' to add these files permanently
well, let's do just that:
> iMacDiane:~/jalprogs/sourceforge/jal eur$ cvs commit -m 'added
> examples'
> cvs commit: Examining .
> cvs commit: Examining doc
> cvs commit: Examining examples
> cvs commit: warning: directory CVS specified in argument
> cvs commit: but CVS uses CVS for its own purposes; skipping CVS
> directory
did I mention it was rude to use wildcards?
> cvs commit: Examining jal
> cvs commit: Examining jal/testsuite
> cvs commit: Examining jal/testsuite/bin
> cvs commit: Examining jal/testsuite/hex
> cvs commit: Examining jal/testsuite/src
> cvs commit: Examining jal/testsuite/src/config
> cvs commit: Examining jal/testsuite/src/word
> cvs commit: Examining lib
> eur@...'s password:
now things are really happening
> RCS file: /cvsroot/jal/jal/examples/16_tst.jal,v
> done
> Checking in examples/16_tst.jal;
> /cvsroot/jal/jal/examples/16_tst.jal,v <-- 16_tst.jal
> initial revision: 1.1
> done
> [..]
> Checking in examples/tc77_lcd.jal;
> /cvsroot/jal/jal/examples/tc77_lcd.jal,v <-- tc77_lcd.jal
> initial revision: 1.1
> done
all done!
> iMacDiane:~/jalprogs/sourceforge/jal eur$
Eur van Andel, eur@...
Hi Eur,
> iMacDiane:~/jalprogs/sourceforge/jal eur$ cvs add examples/16_tst.jal
> eur@...'s password:
> cvs add: cannot open CVS/Entries for reading: No such file or directory
> cvs [add aborted]: no repository
> iMacDiane:~/jalprogs/sourceforge/jal eur$
>
Based on sourceforge CVS documents you should add the directory
folder first (only once, just to create it).
$ cvs add examples examples/16_tst.jal
Test it, if don't work send me 16_tst.jal and I'll try to upload it.
Regards,
Javi.
>>> iMacDiane:~/jalprogs/sourceforge/jal/examples eur$ cvs
>>> -d:ext:eur@c...:/cvsroot/jal commit -m 'adding examples' *
>>> cvs commit: warning: directory CVS specified in argument
>
> PLEASE!!, CVS directories are for internal use only. If it's your
> current working directory ---> change the name ...
No this was because of the *. CVS ignores directories named CVS.
> -- Eur as Developer
> $ export CVS_RSH=ssh
> $ cvs -d:ext:eur@...:/cvsroot/jal checkout jal
Gives an error?
cvs -d:ext:eur@...:/cvsroot/jal checkout jal
eur@...'s password:
? jal/examples
cvs checkout: Updating jal
cvs checkout: Updating jal/doc
cvs checkout: Updating jal/jal
cvs checkout: Updating jal/jal/testsuite
cvs checkout: Updating jal/jal/testsuite/bin
cvs checkout: Updating jal/jal/testsuite/hex
cvs checkout: Updating jal/jal/testsuite/src
cvs checkout: Updating jal/jal/testsuite/src/config
cvs checkout: in directory jal/jal/testsuite/src/cvs:
cvs checkout: cannot open CVS/Entries for reading: No such file or
directory
cvs checkout: Updating jal/jal/testsuite/src/cvs
cvs checkout: Updating jal/jal/testsuite/src/word
cvs checkout: Updating jal/lib
iMacDiane:~/jalprogs/sourceforge eur$
CVS doesn't understand the examples dir, that's fine. But there is
another error?
> Once you've made changes (on existing files), as a developer, you
> can upload the changes (NOTE THE PATH):
>
> $ cd /home/eur/jal_sources/jal
> $ export CVS_RSH=ssh
> $ cvs commit -m "A brief overview of the changes"
Changed Changelog and committing:
> Checking in ChangeLog;
> /cvsroot/jal/jal/ChangeLog,v <-- ChangeLog
> new revision: 1.23; previous revision: 1.22
> done
> iMacDiane:~/jalprogs/sourceforge/jal eur$
This works!
> You can add *new* files and directorires:
>
> -- Listing files and directories, "testsuite" is a directory.
> $ cd /home/eur/jal_sources/jal
> $ ls
> client.c CVS LICENSE README server.h version.h
> client.h INSTALL Makefile server.c testsuite
> $ ls testsuite
> CVS Makefile test.sh
>
> -- note the directory order
> $ export CVS_RSH=ssh
> $ cvs add INSTALL version.h testsuite testsuite/Makefile
> testsuite/test.sh
This doesn't:
iMacDiane:~/jalprogs/sourceforge/jal eur$ cvs add examples/16_tst.jal
eur@...'s password:
cvs add: cannot open CVS/Entries for reading: No such file or directory
cvs [add aborted]: no repository
iMacDiane:~/jalprogs/sourceforge/jal eur$
Now what?
Eur van Andel, eur@...
> Just before uploaded changes it's nice to make an update, so you can
> get also commits made by others developers:
... after, once you've commited the changes.
Javi.
> Javi.
Hi Eur,
> cvs -d:ext:username@c...:
> cvs -d:pserver:username@c...:
This is the difference between *normal* users, that only get files
from CVS, and developers that can upload changes to CVS. Developers
uses SSH for authentication while the rest uses an anonymous plain login.
> > iMacDiane:~/jalprogs/sourceforge/jal/examples eur$ cvs
> > -d:ext:eur@c...:/cvsroot/jal commit -m 'adding examples' *
> > cvs commit: warning: directory CVS specified in argument
PLEASE!!, CVS directories are for internal use only. If it's your
current working directory ---> change the name ...
> > cvs commit: but CVS uses CVS for its own purposes; skipping CVS
> > directory
... the error output is telling you what's happening.
==========================
CVS COMMANDS QUICK GUIDE
==========================
You can download a copy of CVS as a developer or not:
-- Anyone
$ cvs -d:pserver:anonymous@...:/cvsroot/jal checkout jal
-- Eur as Developer
$ export CVS_RSH=ssh
$ cvs -d:ext:eur@...:/cvsroot/jal checkout jal
Once you've made changes (on existing files), as a developer, you
can upload the changes (NOTE THE PATH):
$ cd /home/eur/jal_sources/jal
$ export CVS_RSH=ssh
$ cvs commit -m "A brief overview of the changes"
Just before uploaded changes it's nice to make an update, so you can
get also commits made by others developers:
$ cd /home/eur/jal_sources/jal
$ export CVS_RSH=ssh
$ cvs update -dP
You can add *new* files and directorires:
-- Listing files and directories, "testsuite" is a directory.
$ cd /home/eur/jal_sources/jal
$ ls
client.c CVS LICENSE README server.h version.h
client.h INSTALL Makefile server.c testsuite
$ ls testsuite
CVS Makefile test.sh
-- note the directory order
$ export CVS_RSH=ssh
$ cvs add INSTALL version.h testsuite testsuite/Makefile
testsuite/test.sh
$ export CVS_RSH=ssh
$ cvs commit -m "Added test suite, version information and
installation guide."
Regards,
Javi.
On 19 Apr 2005, at 12:22, Eur van Andel wrote:
>> Did Sourceforge ask for your password?
yes.
>> Did you make the initial import of these files?
Import doesn't work, add does. Add says that I must commit. Commit
doesn't work.
>> $ export CVS_RSH=ssh
>> $ cvs -d:ext:username@...:/cvsroot/myproject add ...
That works. Commit doesn't.
>> tutorial:
>> http://sourceforge.net/docman/display_doc.php?docid=14033&group_id=1
But nowhere an example that I can understand.
Maybe you can create, add & commit some bogus file and mail me your
terminal log?
I never understood CVS. For instance: why are there three different
modes?
cvs -d:ext:username@...:
cvs -d:pserver:username@...:
cvs .... (after login)
The error I get now is:
> iMacDiane:~/jalprogs/sourceforge/jal/examples eur$ cvs
> -d:ext:eur@...:/cvsroot/jal commit -m 'adding examples' *
> cvs commit: warning: directory CVS specified in argument
> cvs commit: but CVS uses CVS for its own purposes; skipping CVS
> directory
> eur@...'s password:
> cvs commit: failed to create lock directory for
> `/cvsroot/jal/jal/examples' (/cvsroot/jal/jal/examples/#cvs.lock): No
> such file or directory
> cvs commit: lock failed - giving up
> cvs [commit aborted]: lock failed - giving up
a diff has the same problem:
> iMacDiane:~/jalprogs/sourceforge eur$ cvs
> -d:ext:eur@...:/cvsroot/jal diff jal
> eur@...'s password:
> ? jal/.DS_Store
> cvs diff: Diffing jal
> Index: jal/ChangeLog
> ===================================================================
> RCS file: /cvsroot/jal/jal/ChangeLog,v
> retrieving revision 1.22
> diff -r1.22 ChangeLog
> 0a1,3
> > 2005-04-18 Eur van Andel <eur@...>
> > * added example directory with schematics, pinouts and index.html
> documentation
> >
> cvs diff: Diffing jal/doc
> cvs diff: Diffing jal/examples
> cvs diff: failed to create lock directory for
> `/cvsroot/jal/jal/examples' (/cvsroot/jal/jal/examples/#cvs.lock): No
> such file or directory
> cvs diff: failed to obtain dir lock in repository
> `/cvsroot/jal/jal/examples'
> cvs [diff aborted]: read lock failed - giving up
Eur van Andel, eur@...
Hi Eur,
> My G5 doesn't like your binary:
> > G5-fiwihex:~/Documents/download/jab Folder eur$ ./jab
> > -bash: ./jab: cannot execute binary file
That's the problem with close sources ... I'm not interested in that.
IMHO: This list are for *jal_developers* that maintain a GPL project, and
it's funny to see a guy asking something for a close project and NDA.
Regards,
Javi.
On 17 Apr, 2005, at 15:24, nisma@... wrote:
>>> I have it put to a other server , http://m8-i.net/bas/ .
>> It looks good. I miss an executable somehow or something that I could
>> compile into one.
>>
> I have added a archive file with a binary.
My G5 doesn't like your binary:
> G5-fiwihex:~/Documents/download/jab Folder eur$ ./jab
> -bash: ./jab: cannot execute binary file
I'm afraid that you have to give us your source if you want a real
discussion.
ir EE van Andel eur@... www.fiwihex.nl
Fiwihex B.V. Wierdensestraat 74, NL7604BK Almelo, Netherlands
tel+31-546-491106 fax+31-546-491107
>
> On 17 Apr, 2005, at 12:31, nisma@... wrote:
>
> > I have it put to a other server , http://m8-i.net/bas/ .
>
> It looks good. I miss an executable somehow or something that I could
> compile into one.
>
I have added a archive file with a binary.
It output only a xml tree. Use.
./jab < LED2.bsc
The backend is simple, constant expression elimination, dead code
elimination,
loop and variable optimisation, address taking, link, call/jump adjustement,
inlining, address tweaking, translation of statements to asm code, peephole
optimizer,nothing more. This is a separate part of SW and is common to some
frontends. Between the frontend and backend, a interface wrapper exists that
standarisize the xml/node list.
Currently i switch from the LR to LL parser and from BNF to EBNF.
The attachement gives a example of such a ebnf grammar for the jal language.
It resolves some issues and eliminate many hacks currently fond on some
frontends.
--
+++ NEU: GMX DSL_Flatrate! Schon ab 14,99 EUR/Monat! +++
GMX Garantie: Surfen ohne Tempo-Limit! http://www.gmx.net/de/go/dsl
On 17 Apr, 2005, at 12:31, nisma@... wrote:
> I have it put to a other server , http://m8-i.net/bas/ .
It looks good. I miss an executable somehow or something that I could
compile into one.
ir EE van Andel eur@... www.fiwihex.nl
Fiwihex B.V. Wierdensestraat 74, NL7604BK Almelo, Netherlands
tel+31-546-491106 fax+31-546-491107
Thanks for the notice.
I have it put to a other server , http://m8-i.net/bas/ .
--
+++ GMX - Die erste Adresse für Mail, Message, More +++
1 GB Mailbox bereits in GMX FreeMail http://www.gmx.net/de/go/mail
On 15 Apr, 2005, at 18:23, nisma@... wrote:
> I have a small rewritten jal compiler similar to this one.
> http://www.net4free.org/Computers/scx31114/bas.html
Link is broken
ir EE van Andel eur@... www.fiwihex.nl
Fiwihex B.V. Wierdensestraat 74, NL7604BK Almelo, Netherlands
tel+31-546-491106 fax+31-546-491107
Hi. From my previous post, i have announced, that i have (alpha) a
alternative
jal compiler. Unfortunatly for my, the jal language itself has some
intrigous
language weakness, when trying to extend it with goto/labels or similar
constructs.
I have realized this too late.
I have a small rewritten jal compiler similar to this one.
http://www.net4free.org/Computers/scx31114/bas.html
Hovewer there is a difference. The operator definition is parsed correctly ,
but
in the actual implementation this currently have no effect on the generated
code.
Instead a C backend is used with the additional advantage of more
optimisation
possibility releated to the typing information, not available in the
scripting language. The actual implementation is , that a " use file " load
a shared library
or bytecode (Quake VM) responsable for this type of mods.
If you would utilize it, i will release it to a closed group and give full
assistence
to these guys includes the closed source flow chart editor and the C
interface builder.
The later too tools are customizable with a C-VM.
--
+++ GMX - Die erste Adresse für Mail, Message, More +++
1 GB Mailbox bereits in GMX FreeMail http://www.gmx.net/de/go/mail
Hi Brian,
Send me the patch (or sources). You can place them in jal_developers file
area or send it to me directly ( japus13 {at} telefonica {dot} net ).
Thanks,
Javi.
El Jueves, 14 de Abril de 2005 18:27, Brian Schmalz escribió:
> Hi. A while back I took the compiler source and added in support (it was
> not complicated) for the 10Fxxx series parts. I just found the source and
> the executable that I made way back then, and they still appear to work. (I
> can get my 10F206 to blink and LED from JALcc!)
>
> My problem is that I don't have the time to try and merge the changes I
> made with the current source code base. Is there anybody who would like to
> do that? If not, I'm happy to just put out the executable for anybody who
> wants to use it.
>
> *Brian
>
Hi. A while back I took the compiler source and added in support (it was not
complicated) for the 10Fxxx series parts. I just found the source and the
executable that I made way back then, and they still appear to work. (I can get
my 10F206 to blink and LED from JALcc!)
My problem is that I don't have the time to try and merge the changes I made
with the current source code base. Is there anybody who would like to do that?
If not, I'm happy to just put out the executable for anybody who wants to use
it.
*Brian
nisma@... wrote:
>generally smaller (~20%).
>
That doesn't say too much.
I've seen programs, standard compiled in JAL, reaching 5k of assembler.
Now if I tell JAL it's not a 16F877 but a 16F628, code will shrink
downto less then 2k.
So that's reduction of 60% by just fooling the compiler,
I guess it wouldn't cost much more then 5 lines of code (and twice the
compile time),
to implement that ;-)
I don't have any knowledge of compilers,
but in my opinion you don't need all that fancy/theoretical code
optimizations,
except for
- dead code removal
- bank switch optimization
- stack minimization
Nevertheless, just 500 lines of code for a compiler seems very efficient
to me !
Stef
>>Very intriguing,
>>yes I want to see it, is that possible ?
>>
>>
>Can you test the jal integration and compatibility ? I could offer you a
>full version licence. This includes multitasking/concurrent tasks and
>a state machine compiler in addition to other librarys.
>
>
Well I really don't have the time for that, but there might be others on
this list who are interested.
Still I'ld like to see it, a general impression wouldn't take much time.
Succes,
Stef
generally smaller (~20%). Comparsion with the hitech C compiler has given a
adveraged overhead of 15-30% including strings and arrays.
The compiler is optimized for the 12/14 bit architectures and the sx target,
but not for the new 16+ one.
>
> > I have a small compiler (less then 500 lines of source +rtl )
> > that accept
> > XML (flowchart), PBasic and syntax similar to Jal generating
> > asm files as result.
>
> Do you have any figures on the asm size generated by the Jal compiler
> compared to generated by your translator? Take a non-trivial program,
> for instance the Wisp628 source?
>
> Wouter van Ooijen
>
> -- -------------------------------------------
> Van Ooijen Technische Informatica: www.voti.nl
> consultancy, development, PICmicro products
> docent Hogeschool van Utrecht: www.voti.nl/hvu
>
>
>
>
>
>
> Yahoo! Groups Links
>
>
>
>
>
>
>
--
Sparen beginnt mit GMX DSL: http://www.gmx.net/de/go/dsl
> I have a small compiler (less then 500 lines of source +rtl )
> that accept
> XML (flowchart), PBasic and syntax similar to Jal generating
> asm files as result.
Do you have any figures on the asm size generated by the Jal compiler
compared to generated by your translator? Take a non-trivial program,
for instance the Wisp628 source?
Wouter van Ooijen
-- -------------------------------------------
Van Ooijen Technische Informatica: www.voti.nl
consultancy, development, PICmicro products
docent Hogeschool van Utrecht: www.voti.nl/hvu
Hi Stef,
i principally have tree differences to jal.
1) foo'bar -> ' is a comment on Pbasic
2) foo.bar -> . is a selector for structs and substripts and casts
example:
bar = eeprom[i] -- read a byte from eeprom
foo = eeprom[3].word -- read a word from eeprom
output.led = !output.led -- toggle output on a cio
extension
foo = bar.word[2] -- get out the second LSW
3) foo:bar -> : is used as slice operator or as short form of TO
foo = bar[4:12] -- equivalent to this in C
foo=(bar>>4)&((1<<<(12-4))-1)
or substring on strings ...
foo.word = bar.byte[2:3] is annother usage.
I tend to use foo#bar instead to foo'bar. foo`bar is a alternative.
The reason why i tend to foo#bar is, that # has already a special meaning
and is used for binary operators [ # ] as example and for issuing
compile time errors/warning. Ex.
If typeof(arg) <> string_t #error "Function require a string as parameter"
Adding a hook for read/write access to variables is considered a debug
hook on other languages.
Should i write a wrapper, that changes
`:' -> `.'
`\'' -> `#'
`--' -> `\'' ++ / -- is handy for optimized pointer operations.
and rewrite the jal manual accordly denaying compiling .jal extensions.
Jal sources can be converted to .bas after passing on such a simple
converter.
Pbasic is really powerfull in some domains (rs232,printf,scanf) and less
errorprone as printf/scanf constructs for non C programmers.
So mixing jal/pbasic is surely the usual way.
lookup val ,(100,200,400,500) ,res
has a jal equivalent:
res = lookup ( val , 100,200,400,500 )
this don't have it.
serout dbg , N96 , "test" , # val , $ val , CR
serin2 gps , NEMA , 30000, "$GPRMB" , #time , #dir , ... , $checksum
The only equivalent can be
dbg_fs = fopen(dbg,N96)
fprintf(dbg_fs,"test %d %#x \n",val,val)
fscanf(dbg_fs,"$GPRMB %d %d ... %x",@time,@dir,...,@checksum)
but this introduces several issues that generate more code and problems.
On Pbasic, no nested function call is allowed.
On Jal, there IS. This gives memory problems (buffers) and side effects +
problems, if a user write a wrong format string.
On Pbasic, the serout opens a serial port and use it (FSR/INDF) is atomic.
On Jal, more file pointers can be open and used interleaved,
requiring additional hidden FSR register and exchanges.
The parsing differences is:
<string> -- function call -> jal
<string> <expr> {, <expr>} Pbasic
symbol xxx = value -> symbol is a alias to constant , string constant
allowed
in jal, <expr:id> <expr> never happens, so this is a Pbasic construct
and is interpreted as the follow function call.
<expr:id> ( <expr> )
> hi Chris,
>
> this sounds very interesting,
>
> nisma@... wrote:
>
> >>>Please comment it shortly.
> >>>
> >>>
> >>>
> >>>
> >>Sorry no answer, but if I understand you well ...
> >>do you have an alternative JAL compiler,
> >>with syntax equal to PBasic ?
> >>
> >>
> >I have a small compiler (less then 500 lines of source +rtl )
> >
> that's very small !!
>
> > that accept
> >XML (flowchart),
> >
> that's on my todo-list to put on top of JAL.
> I think it's a must for complex or large statemachines I often use.
>
> > PBasic and syntax similar to Jal generating asm files as
> >result.
> >
> >
> Sounds good,
> so now you just have to add human language to that list ;-)
>
> >The compiler can invoke gpasm or other assemblers in order to produce a
> hex
> >file. Principal differences to Jal: string support,
> >
> also on my todo list (to place on top of JAL)
>
> > no buildin assembler and
> >simulator, no support for assertions and the subscript operator is a dot
> >instead of the colon. All the syntax can be mixed.
> >
> >
> Very intriguing,
> yes I want to see it, is that possible ?
Can you test the jal integration and compatibility ? I could offer you a
full version licence. This includes multitasking/concurrent tasks and
a state machine compiler in addition to other librarys.
> >Currently i modify the syntax in order to be compatible with jal and
> adding
> >some class/module capability in response to some user requests.
> >
> >
> Sounds like a number of people are using it already.
Some , mostly in educational institutions.
> Is it freeware/shareware ?
Compiler freeware, advanced flowchart (with subcharts) + OS kit and other
supporting librarys (I2C slave,Gps,cordic,Wifi ...) is not free.
> Is there a website were we can see it ?
>
> great Chris,
> I love these kinds of initiatives.
>
> Stef
>
>
>
>
>
> Yahoo! Groups Links
>
>
>
>
>
>
>
--
Sparen beginnt mit GMX DSL: http://www.gmx.net/de/go/dsl
hi Chris,
this sounds very interesting,
nisma@... wrote:
>>>Please comment it shortly.
>>>
>>>
>>>
>>>
>>Sorry no answer, but if I understand you well ...
>>do you have an alternative JAL compiler,
>>with syntax equal to PBasic ?
>>
>>
>I have a small compiler (less then 500 lines of source +rtl )
>
that's very small !!
> that accept
>XML (flowchart),
>
that's on my todo-list to put on top of JAL.
I think it's a must for complex or large statemachines I often use.
> PBasic and syntax similar to Jal generating asm files as
>result.
>
>
Sounds good,
so now you just have to add human language to that list ;-)
>The compiler can invoke gpasm or other assemblers in order to produce a hex
>file. Principal differences to Jal: string support,
>
also on my todo list (to place on top of JAL)
> no buildin assembler and
>simulator, no support for assertions and the subscript operator is a dot
>instead of the colon. All the syntax can be mixed.
>
>
Very intriguing,
yes I want to see it, is that possible ?
>Currently i modify the syntax in order to be compatible with jal and adding
>some class/module capability in response to some user requests.
>
>
Sounds like a number of people are using it already.
Is it freeware/shareware ?
Is there a website were we can see it ?
great Chris,
I love these kinds of initiatives.
Stef
>
> >Please comment it shortly.
> >
> >
> Sorry no answer, but if I understand you well ...
> do you have an alternative JAL compiler,
> with syntax equal to PBasic ?
I have a small compiler (less then 500 lines of source +rtl ) that accept
XML (flowchart), PBasic and syntax similar to Jal generating asm files as
result.
The compiler can invoke gpasm or other assemblers in order to produce a hex
file. Principal differences to Jal: string support, no buildin assembler and
simulator, no support for assertions and the subscript operator is a dot
instead of the colon. All the syntax can be mixed.
Currently i modify the syntax in order to be compatible with jal and adding
some class/module capability in response to some user requests.
Chris
>
> Stef Mientki
>
>
>
>
> Yahoo! Groups Links
>
>
>
--
Sparen beginnt mit GMX DSL: http://www.gmx.net/de/go/dsl
scx31114 wrote:
>Please comment it shortly.
>
>
Sorry no answer, but if I understand you well ...
do you have an alternative JAL compiler,
with syntax equal to PBasic ?
Stef Mientki
Please comment it shortly.
It's feasible to use var#get var#put instead of
var'get var'put.
var'get clashed with the comment syntax of pbasic.
On the other hand, var'get,var'put is like a debug hook, so `#' is
advicable. Cpp generally don't care about '#' after other characters.
If yes, use the traditional switch.
I'm want to use a jal/pbasic compatible compiler for MCU programming.
The parser is written in bison and embedded xml as interface to the
backend. Lexer written in C.
What pragmas could be used in order to force the use of foo'put.
What command line argument should be used to determ the autodetect
(if -- comment is used, then jal is assumend), jal, pbasic syntax.
By the way, i propose to use `@' as a address selector like `&' in C
or `@' in turbo pascal.
This helps with Array/Strings.
A = "test" or indf = @foo and is automatic, when using
indf = arr -- arr is a array of bytes. arr[3] accesses byte, arr gives
pointer.
procedure outs(in byref A) is -- pass by reference and leave reference
if typeof(a) <> string_t #error "string argument expected" end if
while a _out = A++ end while -- _out is a overloaded
end procedure
procedure outd(in A) is --
if typeof(a) <> digit_t #error "numeric argument expected"
outs(num2str(a))
end procedure
Inlining functions/procedure that are able to reduce the printf when
used with a constant format string to single printf_str/printf_num ...
instructions and optionall produce errors for wrong arguments.
foo.bar
foo.bar = bit bar from var foo (bar is a constant).
foo.hi = high byte from a word variable or high word from a dword
variable.
foo.lo = low ...
foo.byte[0] = LSB byte from the word/... foo.
foo.1 = bit 1 from var foo.
foo.10= bit 10 from var foo.
foo.bar
hi All,
I found some weird bug again, ....
... am I the only one who finds these strange bugs ?
... or the only one who dares to report these possible bugs, risking
it's my own stupid mistake ;-)
These 2 lines works perfectly
<JAL>
include some_library
var byte S1
</JAL>
Now if I exchange the 2 lines, JAL gives an compiler error, which is not
correct (at least in my opinion ;-)
<JAL>
var byte S1
include some_library
</JAL>
What's in some_library:
<JAL>
procedure some_procedure is
var byte S1
....
end procedure
</JAL>
Apparently the scope of variables is lost.
This problem occures in 4.59 and 4.62
The program where the error occures is rather large,
and I'm in the middle of time critical development,
and short program didn't reveal this bug,
but when I've some more time,
I'll try to shrink the program to get a more precise location of the
problem.
But maybe someone else has seen and located this error before ??
cheers,
Stef
On Tue, 1 Mar 2005 05:22:58 -0500, Artly There <at2004@...> wrote:
>I am very sorry to bother you with this, but I followed your very kind
>OS X G4 JAL directions, made the two corrections to the 2 files
>(manually, outside of the terminal), yet I still get this error (either
>as root, or as admin). I get this if the 2 errors mentioned are
>corrected or not, and If I am logged in as root, or admin.
weird. You did ./configure it first, right? as in:
iMacDiane:~/jal root# ./configure
I believe I left that out of the original instructions :-(
Run this before any make stuff.
My G5 arrived TODAY. It will be a while before I have transfered all these
mails to it, but my next postings will come from a Bill-Free computer.
>
>Making all in jal
>if gcc -DHAVE_CONFIG_H -I. -I. -I..
>-DJAL_LIB_PATH=\"/usr/local/share/jal/lib\" -g -O2 -Wall -pedantic
>-MT assemble.o -MD -MP -MF ".deps/assemble.Tpo" -c -o assemble.o
>assemble.c; \
>then mv -f ".deps/assemble.Tpo" ".deps/assemble.Po"; else rm -f
>".deps/assemble.Tpo"; exit 1; fi
>cpp-precomp: could not open 'assemble.o'
>gnumake[2]: *** [assemble.o] Error 1
>gnumake[1]: *** [all-recursive] Error 1
>gnumake: *** [all] Error 2
>
>
>I do not understand the problem exactly? This is OS X 10.2.8, G4 Dual,
>867, and this is with the 4.62 version, JAL.
>
>Is there a built version of OS X JAL available somewhere, for the
>Terminal-ly challenged people?
No, there isn't. The JAL source and distribution is Posix compatible. Since
there is no GUI, it makes no sense to distribute executables.
>> 2) have iTunes blasting some hits in the backround from the timeframe
>> when you
>> were a teenager. We need the top most part of your brain, the bottom
>> part is
>> best distracted with heavy beats.
>
>This is very funny. :) This is surely why assemble.o refuses to
>cooperate. No iPod.
>
>The only assemble.o listing I can find is this in the file assemble.Po,
>line 1:
>
>assemble.o assemble.o: assemble.c stdhdr.h ../config.h jalcomp.h \
>
>There is no file named assemble.o though , within the sourceforge JAL
>release.
Again, run configure.
--
Ir. E.E. van Andel, Fine Wire Heat Exchangers, Fiwihex B.V. www.fiwihex.com
Wierdensestraat 74, NL-7604 BK Almelo, The Netherlands eur@...
phone +31-546-491106 fax +31-546-491107 mobile +31-653-286573