![]() ![]() | ![]() |
vmgen-related changes: in prims2x: Conversion macros for single items now take 2 arguments Converting from two items to a type has changed order argument printing for disassembler disabled (for now) disassembler now also uses VM_IS_INST in Gforth and vmgen-ex: adapted to work with changed prims2x new: vmgen-ex2: uses union for Cell instead of casting (lots of changes compared to vmgen-ex)
1: func operators() 2: print 3 = 3; 3: print (3+5) = 8; 4: print (5-3) = 2; 5: print (3*5) = 15; 6: print (3&5) = 1; 7: print (3|5) = 7; 8: print (3<5) = 1; 9: print (5<3) = 0; 10: print (3=5) = 0; 11: print (5=5) = 1; 12: print (!3) = 0; 13: print (!0) = 1; 14: print (-3) = (0-3); 15: return 0; 16: end func; 17: 18: func params(a, b, c) 19: print a = 3; 20: print b = 5; 21: print c = 7; 22: return 9; 23: end func; 24: 25: func locals(a) 26: var b; 27: var c; 28: b:=a+1; 29: c:=b+1; 30: a:=c+1; 31: return a; 32: end func; 33: 34: func inc(x) 35: return x+1; 36: end func; 37: 38: func sign(n) 39: var r; 40: if (n<0) then 41: r:=-1; 42: else 43: if (0<n) then 44: r:=1; 45: else 46: r:=0; 47: end if; 48: end if; 49: return r; 50: end func; 51: 52: func recfac(n) 53: var r; 54: if (n<1) then 55: r:=1; 56: else 57: r:=recfac(n-1)*n; 58: end if; 59: return r; 60: end func; 61: 62: func itfac(n) 63: var r; 64: r:=1; 65: while (0<n) do 66: r:=r*n; 67: n:=n-1; 68: end while; 69: return r; 70: end func; 71: 72: func testfac() 73: var i; 74: i:=0; 75: while (i<10) do 76: print itfac(i) = recfac(i); 77: i:=i+1; 78: end while; 79: return 0; 80: end func; 81: 82: func main() 83: operators(); 84: print params(3,5,7) = 9; 85: print locals(3) = 6; 86: print (inc(1)+inc(inc(inc(3))))=8; 87: print sign(5) = 1; 88: print sign(0) = 0; 89: print sign(-5) = (-1); 90: print itfac(5) = 120; 91: testfac(); 92: return 0; 93: end func;