Re: Euphoria 3.0.0 Released! - what about Openwatcom?
- Posted by Robert Craig <rds at RapidEuphoria.com> Oct 19, 2006
- 524 views
schrott wrote: > just trying to build my own exw.exe, no translator. > I had to change one line to make it compile (matherr header). > > I dont think running "exw.exe sieve8k.exw" uses calls > to C DLL routines or multitasking? Still, it's hanging at > the "end for" in line 42. > > And that disassembling stuff really is a bit cryptic There's a WATCOM bug that pops up occasionally in some places in be_execute.c. It might happen if you use a different version of WATCOM. In be_execute.c I use the thread() machine-language macro to insert JMP [ECX] in many places. This causes a quick, single machine instruction, jump to the next IL opcode. It's faster than using BREAK; but in rare cases WATCOM will stupidly move a machine instruction that should be executed *before* thread(), to just *after* thread(), where it won't be executed, causing a failure. You might want to use wdis to examine the assembly code that you are getting for ENDFOR_INT_UP etc. If you see a problem, use BREAK; instead. You might also define INT_CODES, but that will slow the interpreter down quite a bit. A third alternative, is to simply shuffle the code around a bit, or add some pointless, no-effect code. Sometimes that makes WATCOM do the right thing. This is a big headache, but once it's fixed it won't happen again unless you make major changes to be_execute.c or switch WATCOM compiler versions. If you fix it, let me know what you did and I'll probably add it to the official source. Regards, Rob Craig Rapid Deployment Software http://www.RapidEuphoria.com