Skip to content

Latest commit

 

History

History
29 lines (19 loc) · 850 Bytes

README.md

File metadata and controls

29 lines (19 loc) · 850 Bytes

neojam

a nwe version for JamVM1.0.0

Build JamVM

neojam has been fixed some JamVM's compile error when using GCC4.X, one of them like this:

  dll_md.c:37:32: error: lvalue required as increment operand
  SCAN_SIG(sig, ((u8)apntr)++ = ((u8)opntr)++, *apntr++ = *opntr++);

The reason is that it uses some very old (and now omitted) GNU C extensions(cast-as-lvalue). A heavyweight but working approach is to modify the code manually, for instance, the above code can be rewritten as:

u8 *temp = (u8 *)apntr;
*temp = *((u8*)opntr)++;
temp++;
apntr = temp;

neojam has been fixed all the cast-as-lvalue.

Another fix is to remove some code with undefined behavior, one such example is:

*ostack++ = ostack[-1];

For details, see https://github.com/qc1iu/neojam/commit/659b01447245fe40a6725b7ef08da1dfbba283d9