<*>= # Generated by the New Jersey Machine-Code Toolkit, version 0.4 of 1/25/96 # command line: tools -icon -foldemit -encoder bytecodex bytecode.spec #include <mclib.h> #include "bytecodex.bogus.icn" procedure sign_extend(N, SIZE) local plus, minus plus := iand(N, 2^(SIZE-1) - 1) minus := if iand(N, 2^(SIZE-1)) = 0 then 0 else 2^(SIZE-1) return plus - minus end procedure bc_mark() local _result _result := "" _result ||:= char(13) return _result end procedure bc_array() local _result _result := "" _result ||:= char(77) return _result end procedure bc_set() local _result _result := "" _result ||:= char(29) return _result end procedure bc_procmark() local _result _result := "" _result ||:= char(93) return _result end procedure bc_proc() local _result _result := "" _result ||:= char(45) return _result end procedure bc_stringlit() local _result _result := "" _result ||:= char(109) return _result end procedure bc_null() local _result _result := "" _result ||:= char(61) return _result end procedure bc_lt() local _result _result := "" _result ||:= char(14) return _result end procedure bc_le() local _result _result := "" _result ||:= char(78) return _result end procedure bc_gt() local _result _result := "" _result ||:= char(30) return _result end procedure bc_ge() local _result _result := "" _result ||:= char(94) return _result end procedure bc_ne() local _result _result := "" _result ||:= char(46) return _result end procedure bc_eq() local _result _result := "" _result ||:= char(110) return _result end procedure bc_false() local _result _result := "" _result ||:= char(62) return _result end procedure bc_true() local _result _result := "" _result ||:= char(126) return _result end procedure bc_orb() local _result _result := "" _result ||:= char(7) return _result end procedure bc_and() local _result _result := "" _result ||:= char(71) return _result end procedure bc_not() local _result _result := "" _result ||:= char(23) return _result end procedure bc_add() local _result _result := "" _result ||:= char(87) return _result end procedure bc_sub() local _result _result := "" _result ||:= char(39) return _result end procedure bc_mul() local _result _result := "" _result ||:= char(103) return _result end procedure bc_idiv() local _result _result := "" _result ||:= char(55) return _result end procedure bc_mod() local _result _result := "" _result ||:= char(119) return _result end procedure bc_cl_loc() local _result _result := "" _result ||:= char(15) return _result end procedure bc_force() local _result _result := "" _result ||:= char(95) return _result end procedure bc_known() local _result _result := "" _result ||:= char(47) return _result end procedure bc_if_guard() local _result _result := "" _result ||:= char(63) return _result end procedure bc_neg() local _result _result := "" _result ||:= char(127) return _result end procedure bc_failmsg() local _result _result := "" _result ||:= char(118) return _result end procedure bc_sint(n) local _result _result := "" if -8 <= n < 8 then _result ||:= char(ior(ishift(iand(n, 16rf), 4), 3)) else if -128 <= n < 128 then { _result ||:= char(85) _result ||:= char(iand(n, 16rff)) } else if -32768 <= n < 32768 then { _result ||:= char(101) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(sign_extend(iand(ishift(n, -8), 16rffffff), 24), 16rff)) } else { _result ||:= char(117) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(ishift(n, -8), 16rff)) _result ||:= char(iand(ishift(n, -16), 16rff)) _result ||:= char(iand(ishift(n, -24), 16rff)) } return _result end procedure bc_emit_at(n) local _result _result := "" if -8 <= n < 8 then { _result ||:= char(ior(ishift(iand(n, 16rf), 4), 3)) _result ||:= char(111) } else if -128 <= n < 128 then { _result ||:= char(85) _result ||:= char(iand(n, 16rff)) _result ||:= char(111) } else if -32768 <= n < 32768 then { _result ||:= char(101) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(sign_extend(iand(ishift(n, -8), 16rffffff), 24), 16rff)) _result ||:= char(111) } else { _result ||:= char(117) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(ishift(n, -8), 16rff)) _result ||:= char(iand(ishift(n, -16), 16rff)) _result ||:= char(iand(ishift(n, -24), 16rff)) _result ||:= char(111) } return _result end procedure bc_widen(n) local _result _result := "" if -8 <= n < 8 then { _result ||:= char(ior(ishift(iand(n, 16rf), 4), 3)) _result ||:= char(38) } else if -128 <= n < 128 then { _result ||:= char(85) _result ||:= char(iand(n, 16rff)) _result ||:= char(38) } else if -32768 <= n < 32768 then { _result ||:= char(101) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(sign_extend(iand(ishift(n, -8), 16rffffff), 24), 16rff)) _result ||:= char(38) } else { _result ||:= char(117) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(ishift(n, -8), 16rff)) _result ||:= char(iand(ishift(n, -16), 16rff)) _result ||:= char(iand(ishift(n, -24), 16rff)) _result ||:= char(38) } return _result end procedure bc_fitsu(n) local _result _result := "" if -8 <= n < 8 then { _result ||:= char(ior(ishift(iand(n, 16rf), 4), 3)) _result ||:= char(102) } else if -128 <= n < 128 then { _result ||:= char(85) _result ||:= char(iand(n, 16rff)) _result ||:= char(102) } else if -32768 <= n < 32768 then { _result ||:= char(101) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(sign_extend(iand(ishift(n, -8), 16rffffff), 24), 16rff)) _result ||:= char(102) } else { _result ||:= char(117) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(ishift(n, -8), 16rff)) _result ||:= char(iand(ishift(n, -16), 16rff)) _result ||:= char(iand(ishift(n, -24), 16rff)) _result ||:= char(102) } return _result end procedure bc_fitss(n) local _result _result := "" if -8 <= n < 8 then { _result ||:= char(ior(ishift(iand(n, 16rf), 4), 3)) _result ||:= char(54) } else if -128 <= n < 128 then { _result ||:= char(85) _result ||:= char(iand(n, 16rff)) _result ||:= char(54) } else if -32768 <= n < 32768 then { _result ||:= char(101) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(sign_extend(iand(ishift(n, -8), 16rffffff), 24), 16rff)) _result ||:= char(54) } else { _result ||:= char(117) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(ishift(n, -8), 16rff)) _result ||:= char(iand(ishift(n, -16), 16rff)) _result ||:= char(iand(ishift(n, -24), 16rff)) _result ||:= char(54) } return _result end procedure bc_narrows(n) local _result _result := "" if n ~= 0 & 0 <= n < 32 then _result ||:= char(ishift(iand(n, 16r1f), 3)) else if -8 <= n < 8 then { _result ||:= char(ior(ishift(iand(n, 16rf), 4), 3)) _result ||:= char(86) } else if -128 <= n < 128 then { _result ||:= char(85) _result ||:= char(iand(n, 16rff)) _result ||:= char(86) } else if -32768 <= n < 32768 then { _result ||:= char(101) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(sign_extend(iand(ishift(n, -8), 16rffffff), 24), 16rff)) _result ||:= char(86) } else { _result ||:= char(117) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(ishift(n, -8), 16rff)) _result ||:= char(iand(ishift(n, -16), 16rff)) _result ||:= char(iand(ishift(n, -24), 16rff)) _result ||:= char(86) } return _result end procedure bc_halt() local _result _result := "" _result ||:= char(0) return _result end procedure bc_narrowu(n) local _result _result := "" if 0 <= n < 32 & n ~= 0 then _result ||:= char(ior(ishift(iand(n, 16r1f), 3), 1)) else if -8 <= n < 8 then { _result ||:= char(ior(ishift(iand(n, 16rf), 4), 3)) _result ||:= char(22) } else if -128 <= n < 128 then { _result ||:= char(85) _result ||:= char(iand(n, 16rff)) _result ||:= char(22) } else if -32768 <= n < 32768 then { _result ||:= char(101) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(sign_extend(iand(ishift(n, -8), 16rffffff), 24), 16rff)) _result ||:= char(22) } else { _result ||:= char(117) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(ishift(n, -8), 16rff)) _result ||:= char(iand(ishift(n, -16), 16rff)) _result ||:= char(iand(ishift(n, -24), 16rff)) _result ||:= char(22) } return _result end procedure bc_unsat() local _result _result := "" _result ||:= char(1) return _result end procedure bc_bitslice(lo, hi) local _result _result := "" if lo = 0 & 0 <= hi < 32 then _result ||:= char(ior(ishift(iand(hi, 16r1f), 3), 2)) else if -8 <= hi < 8 & -8 <= lo < 8 then { _result ||:= char(ior(ishift(iand(lo, 16rf), 4), 3)) _result ||:= char(ior(ishift(iand(hi, 16rf), 4), 3)) _result ||:= char(6) } else if -8 <= lo < 8 & -128 <= hi < 128 then { _result ||:= char(ior(ishift(iand(lo, 16rf), 4), 3)) _result ||:= char(85) _result ||:= char(iand(hi, 16rff)) _result ||:= char(6) } else if -8 <= lo < 8 & -32768 <= hi < 32768 then { _result ||:= char(ior(ishift(iand(lo, 16rf), 4), 3)) _result ||:= char(101) _result ||:= char(iand(hi, 16rff)) _result ||:= char(iand(sign_extend(iand(ishift(hi, -8), 16rffffff), 24), 16rff)) _result ||:= char(6) } else if -8 <= lo < 8 then { _result ||:= char(ior(ishift(iand(lo, 16rf), 4), 3)) _result ||:= char(117) _result ||:= char(iand(hi, 16rff)) _result ||:= char(iand(ishift(hi, -8), 16rff)) _result ||:= char(iand(ishift(hi, -16), 16rff)) _result ||:= char(iand(ishift(hi, -24), 16rff)) _result ||:= char(6) } else if -128 <= lo < 128 & -8 <= hi < 8 then { _result ||:= char(85) _result ||:= char(iand(lo, 16rff)) _result ||:= char(ior(ishift(iand(hi, 16rf), 4), 3)) _result ||:= char(6) } else if -128 <= hi < 128 & -128 <= lo < 128 then { _result ||:= char(85) _result ||:= char(iand(lo, 16rff)) _result ||:= char(85) _result ||:= char(iand(hi, 16rff)) _result ||:= char(6) } else if -128 <= lo < 128 & -32768 <= hi < 32768 then { _result ||:= char(85) _result ||:= char(iand(lo, 16rff)) _result ||:= char(101) _result ||:= char(iand(hi, 16rff)) _result ||:= char(iand(sign_extend(iand(ishift(hi, -8), 16rffffff), 24), 16rff)) _result ||:= char(6) } else if -128 <= lo < 128 then { _result ||:= char(85) _result ||:= char(iand(lo, 16rff)) _result ||:= char(117) _result ||:= char(iand(hi, 16rff)) _result ||:= char(iand(ishift(hi, -8), 16rff)) _result ||:= char(iand(ishift(hi, -16), 16rff)) _result ||:= char(iand(ishift(hi, -24), 16rff)) _result ||:= char(6) } else if -32768 <= lo < 32768 & -8 <= hi < 8 then { _result ||:= char(101) _result ||:= char(iand(lo, 16rff)) _result ||:= char(iand(sign_extend(iand(ishift(lo, -8), 16rffffff), 24), 16rff)) _result ||:= char(ior(ishift(iand(hi, 16rf), 4), 3)) _result ||:= char(6) } else if -128 <= hi < 128 & -32768 <= lo < 32768 then { _result ||:= char(101) _result ||:= char(iand(lo, 16rff)) _result ||:= char(iand(sign_extend(iand(ishift(lo, -8), 16rffffff), 24), 16rff)) _result ||:= char(85) _result ||:= char(iand(hi, 16rff)) _result ||:= char(6) } else if -32768 <= lo < 32768 & -32768 <= hi < 32768 then { _result ||:= char(101) _result ||:= char(iand(lo, 16rff)) _result ||:= char(iand(sign_extend(iand(ishift(lo, -8), 16rffffff), 24), 16rff)) _result ||:= char(101) _result ||:= char(iand(hi, 16rff)) _result ||:= char(iand(sign_extend(iand(ishift(hi, -8), 16rffffff), 24), 16rff)) _result ||:= char(6) } else if -32768 <= lo < 32768 then { _result ||:= char(101) _result ||:= char(iand(lo, 16rff)) _result ||:= char(iand(sign_extend(iand(ishift(lo, -8), 16rffffff), 24), 16rff)) _result ||:= char(117) _result ||:= char(iand(hi, 16rff)) _result ||:= char(iand(ishift(hi, -8), 16rff)) _result ||:= char(iand(ishift(hi, -16), 16rff)) _result ||:= char(iand(ishift(hi, -24), 16rff)) _result ||:= char(6) } else if -8 <= hi < 8 then { _result ||:= char(117) _result ||:= char(iand(lo, 16rff)) _result ||:= char(iand(ishift(lo, -8), 16rff)) _result ||:= char(iand(ishift(lo, -16), 16rff)) _result ||:= char(iand(ishift(lo, -24), 16rff)) _result ||:= char(ior(ishift(iand(hi, 16rf), 4), 3)) _result ||:= char(6) } else if -128 <= hi < 128 then { _result ||:= char(117) _result ||:= char(iand(lo, 16rff)) _result ||:= char(iand(ishift(lo, -8), 16rff)) _result ||:= char(iand(ishift(lo, -16), 16rff)) _result ||:= char(iand(ishift(lo, -24), 16rff)) _result ||:= char(85) _result ||:= char(iand(hi, 16rff)) _result ||:= char(6) } else if -32768 <= hi < 32768 then { _result ||:= char(117) _result ||:= char(iand(lo, 16rff)) _result ||:= char(iand(ishift(lo, -8), 16rff)) _result ||:= char(iand(ishift(lo, -16), 16rff)) _result ||:= char(iand(ishift(lo, -24), 16rff)) _result ||:= char(101) _result ||:= char(iand(hi, 16rff)) _result ||:= char(iand(sign_extend(iand(ishift(hi, -8), 16rffffff), 24), 16rff)) _result ||:= char(6) } else { _result ||:= char(117) _result ||:= char(iand(lo, 16rff)) _result ||:= char(iand(ishift(lo, -8), 16rff)) _result ||:= char(iand(ishift(lo, -16), 16rff)) _result ||:= char(iand(ishift(lo, -24), 16rff)) _result ||:= char(117) _result ||:= char(iand(hi, 16rff)) _result ||:= char(iand(ishift(hi, -8), 16rff)) _result ||:= char(iand(ishift(hi, -16), 16rff)) _result ||:= char(iand(ishift(hi, -24), 16rff)) _result ||:= char(6) } return _result end procedure bc_addlit(n) local _result _result := "" if -8 <= n < 8 & n ~= 0 then _result ||:= char(ior(ishift(iand(n, 16rf), 4), 11)) else if -8 <= n < 8 then { _result ||:= char(ior(ishift(iand(n, 16rf), 4), 3)) _result ||:= char(87) } else if -128 <= n < 128 then { _result ||:= char(85) _result ||:= char(iand(n, 16rff)) _result ||:= char(87) } else if -32768 <= n < 32768 then { _result ||:= char(101) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(sign_extend(iand(ishift(n, -8), 16rffffff), 24), 16rff)) _result ||:= char(87) } else { _result ||:= char(117) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(ishift(n, -8), 16rff)) _result ||:= char(iand(ishift(n, -16), 16rff)) _result ||:= char(iand(ishift(n, -24), 16rff)) _result ||:= char(87) } return _result end procedure bc_cl_loc_force() local _result _result := "" _result ||:= char(11) return _result end procedure bc_bitshift(n) local _result _result := "" if -8 <= n < 8 then _result ||:= char(ior(ishift(iand(n, 16rf), 4), 12)) else if -128 <= n < 128 then { _result ||:= char(85) _result ||:= char(iand(n, 16rff)) _result ||:= char(70) } else if -32768 <= n < 32768 then { _result ||:= char(101) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(sign_extend(iand(ishift(n, -8), 16rffffff), 24), 16rff)) _result ||:= char(70) } else { _result ||:= char(117) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(ishift(n, -8), 16rff)) _result ||:= char(iand(ishift(n, -16), 16rff)) _result ||:= char(iand(ishift(n, -24), 16rff)) _result ||:= char(70) } return _result end procedure bc_emit_at_loc(n) local _result _result := "" if n = 1 then _result ||:= char(5) else if n = 2 then _result ||:= char(69) else if n = 4 then _result ||:= char(133) else if n = 8 then _result ||:= char(197) else if -8 <= n < 8 then { _result ||:= char(15) _result ||:= char(95) _result ||:= char(ior(ishift(iand(n, 16rf), 4), 3)) _result ||:= char(111) } else if -128 <= n < 128 then { _result ||:= char(15) _result ||:= char(95) _result ||:= char(85) _result ||:= char(iand(n, 16rff)) _result ||:= char(111) } else if -32768 <= n < 32768 then { _result ||:= char(15) _result ||:= char(95) _result ||:= char(101) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(sign_extend(iand(ishift(n, -8), 16rffffff), 24), 16rff)) _result ||:= char(111) } else { _result ||:= char(15) _result ||:= char(95) _result ||:= char(117) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(ishift(n, -8), 16rff)) _result ||:= char(iand(ishift(n, -16), 16rff)) _result ||:= char(iand(ishift(n, -24), 16rff)) _result ||:= char(111) } return _result end procedure bc_cla(n) local _result _result := "" if -8 <= n < 8 then { _result ||:= char(ior(ishift(iand(n, 16rf), 4), 3)) _result ||:= char(79) } else if -128 <= n < 128 then { _result ||:= char(85) _result ||:= char(iand(n, 16rff)) _result ||:= char(79) } else if -32768 <= n < 32768 then { _result ||:= char(101) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(sign_extend(iand(ishift(n, -8), 16rffffff), 24), 16rff)) _result ||:= char(79) } else { _result ||:= char(117) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(ishift(n, -8), 16rff)) _result ||:= char(iand(ishift(n, -16), 16rff)) _result ||:= char(iand(ishift(n, -24), 16rff)) _result ||:= char(79) } return _result end procedure bc_cla_force(n) local _result _result := "" if 0 <= n - 1 < 2 then _result ||:= char(ior(ishift(iand(n - 1, 16r1), 7), 21)) else if -8 <= n < 8 then { _result ||:= char(ior(ishift(iand(n, 16rf), 4), 3)) _result ||:= char(79) _result ||:= char(95) } else if -128 <= n < 128 then { _result ||:= char(85) _result ||:= char(iand(n, 16rff)) _result ||:= char(79) _result ||:= char(95) } else if -32768 <= n < 32768 then { _result ||:= char(101) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(sign_extend(iand(ishift(n, -8), 16rffffff), 24), 16rff)) _result ||:= char(79) _result ||:= char(95) } else { _result ||:= char(117) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(ishift(n, -8), 16rff)) _result ||:= char(iand(ishift(n, -16), 16rff)) _result ||:= char(iand(ishift(n, -24), 16rff)) _result ||:= char(79) _result ||:= char(95) } return _result end procedure bc_clv(n) local _result _result := "" if n <= 2 & 0 <= n - 1 < 2 then _result ||:= char(ior(ishift(iand(n - 1, 16r1), 7), 37)) else if -8 <= n < 8 then { _result ||:= char(ior(ishift(iand(n, 16rf), 4), 3)) _result ||:= char(31) } else if -128 <= n < 128 then { _result ||:= char(85) _result ||:= char(iand(n, 16rff)) _result ||:= char(31) } else if -32768 <= n < 32768 then { _result ||:= char(101) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(sign_extend(iand(ishift(n, -8), 16rffffff), 24), 16rff)) _result ||:= char(31) } else { _result ||:= char(117) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(ishift(n, -8), 16rff)) _result ||:= char(iand(ishift(n, -16), 16rff)) _result ||:= char(iand(ishift(n, -24), 16rff)) _result ||:= char(31) } return _result end procedure bc_clv_orb(n) local _result _result := "" if 0 <= n - 1 < 2 then _result ||:= char(ior(ishift(iand(n - 1, 16r1), 7), 53)) else if -8 <= n < 8 then { _result ||:= char(ior(ishift(iand(n, 16rf), 4), 3)) _result ||:= char(31) _result ||:= char(7) } else if -128 <= n < 128 then { _result ||:= char(85) _result ||:= char(iand(n, 16rff)) _result ||:= char(31) _result ||:= char(7) } else if -32768 <= n < 32768 then { _result ||:= char(101) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(sign_extend(iand(ishift(n, -8), 16rffffff), 24), 16rff)) _result ||:= char(31) _result ||:= char(7) } else { _result ||:= char(117) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(ishift(n, -8), 16rff)) _result ||:= char(iand(ishift(n, -16), 16rff)) _result ||:= char(iand(ishift(n, -24), 16rff)) _result ||:= char(31) _result ||:= char(7) } return _result end
Definesbc_add
,bc_addlit
,bc_and
,bc_array
,bc_bitshift
,bc_bitslice
,bc_cla
,bc_cla_force
,bc_cl_loc
,bc_cl_loc_force
,bc_clv
,bc_clv_orb
,bc_emit_at
,bc_emit_at_loc
,bc_eq
,bc_failmsg
,bc_false
,bc_fitss
,bc_fitsu
,bc_force
,bc_ge
,bc_gt
,bc_halt
,bc_idiv
,bc_if_guard
,bc_known
,bc_le
,bc_lt
,bc_mark
,bc_mod
,bc_mul
,bc_narrows
,bc_narrowu
,bc_ne
,bc_neg
,bc_not
,bc_null
,bc_orb
,bc_proc
,bc_procmark
,bc_set
,bc_sint
,bc_stringlit
,bc_sub
,bc_true
,bc_unsat
,bc_widen
,sign_extend
(links are to index).
<old stuff>= procedure sign_extend(N, SIZE) local plus, minus plus := iand(N, 2^(SIZE-1) - 1) minus := if iand(N, 2^(SIZE-1)) = 0 then 0 else 2^(SIZE-1) return plus - minus end procedure bc_mark() local _result _result := "" _result ||:= char(13) return _result end procedure bc_array() local _result _result := "" _result ||:= char(77) return _result end procedure bc_set() local _result _result := "" _result ||:= char(29) return _result end procedure bc_procmark() local _result _result := "" _result ||:= char(93) return _result end procedure bc_proc() local _result _result := "" _result ||:= char(45) return _result end procedure bc_stringlit() local _result _result := "" _result ||:= char(109) return _result end procedure bc_null() local _result _result := "" _result ||:= char(61) return _result end procedure bc_lt() local _result _result := "" _result ||:= char(14) return _result end procedure bc_le() local _result _result := "" _result ||:= char(78) return _result end procedure bc_gt() local _result _result := "" _result ||:= char(30) return _result end procedure bc_ge() local _result _result := "" _result ||:= char(94) return _result end procedure bc_ne() local _result _result := "" _result ||:= char(46) return _result end procedure bc_eq() local _result _result := "" _result ||:= char(110) return _result end procedure bc_false() local _result _result := "" _result ||:= char(62) return _result end procedure bc_true() local _result _result := "" _result ||:= char(126) return _result end procedure bc_orb() local _result _result := "" _result ||:= char(7) return _result end procedure bc_and() local _result _result := "" _result ||:= char(71) return _result end procedure bc_not() local _result _result := "" _result ||:= char(23) return _result end procedure bc_add() local _result _result := "" _result ||:= char(87) return _result end procedure bc_sub() local _result _result := "" _result ||:= char(39) return _result end procedure bc_mul() local _result _result := "" _result ||:= char(103) return _result end procedure bc_idiv() local _result _result := "" _result ||:= char(55) return _result end procedure bc_mod() local _result _result := "" _result ||:= char(119) return _result end procedure bc_cl_loc() local _result _result := "" _result ||:= char(15) return _result end procedure bc_force() local _result _result := "" _result ||:= char(95) return _result end procedure bc_known() local _result _result := "" _result ||:= char(47) return _result end procedure bc_if_guard() local _result _result := "" _result ||:= char(63) return _result end procedure bc_neg() local _result _result := "" _result ||:= char(127) return _result end procedure bc_sint(n) local _result _result := "" if -8 <= n < 8 then _result ||:= char(ior(ishift(iand(n, 16rf), 4), 3)) else if -128 <= n < 128 then { _result ||:= char(85) _result ||:= char(iand(n, 16rff)) } else if -32768 <= n < 32768 then { _result ||:= char(101) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(ishift(n, -8), 16rff)) } else if sign_extend(n, 32) = n then { _result ||:= char(117) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(ishift(n, -8), 16rff)) _result ||:= char(iand(ishift(n, -16), 16rff)) _result ||:= char(iand(ishift(n, -24), 16rff)) } else impossible("Can't decide on branch for constructor sint") return _result end procedure bc_emit_at(n) local _result _result := "" if -8 <= n < 8 then { _result ||:= char(ior(ishift(iand(n, 16rf), 4), 3)) _result ||:= char(111) } else if -128 <= n < 128 then { _result ||:= char(85) _result ||:= char(iand(n, 16rff)) _result ||:= char(111) } else if -32768 <= n < 32768 then { _result ||:= char(101) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(ishift(n, -8), 16rff)) _result ||:= char(111) } else if sign_extend(n, 32) = n then { _result ||:= char(117) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(ishift(n, -8), 16rff)) _result ||:= char(iand(ishift(n, -16), 16rff)) _result ||:= char(iand(ishift(n, -24), 16rff)) _result ||:= char(111) } else impossible("Can't decide on branch for constructor emit_at") return _result end procedure bc_widen(n) local _result _result := "" if -8 <= n < 8 then { _result ||:= char(ior(ishift(iand(n, 16rf), 4), 3)) _result ||:= char(38) } else if -128 <= n < 128 then { _result ||:= char(85) _result ||:= char(iand(n, 16rff)) _result ||:= char(38) } else if -32768 <= n < 32768 then { _result ||:= char(101) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(ishift(n, -8), 16rff)) _result ||:= char(38) } else if sign_extend(n, 32) = n then { _result ||:= char(117) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(ishift(n, -8), 16rff)) _result ||:= char(iand(ishift(n, -16), 16rff)) _result ||:= char(iand(ishift(n, -24), 16rff)) _result ||:= char(38) } else impossible("Can't decide on branch for constructor widen") return _result end procedure bc_fitsu(n) local _result _result := "" if -8 <= n < 8 then { _result ||:= char(ior(ishift(iand(n, 16rf), 4), 3)) _result ||:= char(102) } else if -128 <= n < 128 then { _result ||:= char(85) _result ||:= char(iand(n, 16rff)) _result ||:= char(102) } else if -32768 <= n < 32768 then { _result ||:= char(101) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(ishift(n, -8), 16rff)) _result ||:= char(102) } else if sign_extend(n, 32) = n then { _result ||:= char(117) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(ishift(n, -8), 16rff)) _result ||:= char(iand(ishift(n, -16), 16rff)) _result ||:= char(iand(ishift(n, -24), 16rff)) _result ||:= char(102) } else impossible("Can't decide on branch for constructor fitsu") return _result end procedure bc_fitss(n) local _result _result := "" if -8 <= n < 8 then { _result ||:= char(ior(ishift(iand(n, 16rf), 4), 3)) _result ||:= char(54) } else if -128 <= n < 128 then { _result ||:= char(85) _result ||:= char(iand(n, 16rff)) _result ||:= char(54) } else if -32768 <= n < 32768 then { _result ||:= char(101) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(ishift(n, -8), 16rff)) _result ||:= char(54) } else if sign_extend(n, 32) = n then { _result ||:= char(117) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(ishift(n, -8), 16rff)) _result ||:= char(iand(ishift(n, -16), 16rff)) _result ||:= char(iand(ishift(n, -24), 16rff)) _result ||:= char(54) } else impossible("Can't decide on branch for constructor fitss") return _result end procedure bc_narrows(n) local _result _result := "" if not (0 <= n < 32) then impossible("`n' = 0x%x won't fit in 5 bits.", n) else _result ||:= char(ishift(iand(n, 16r1f), 3)) return _result end procedure bc_narrowu(n) local _result _result := "" if not (0 <= n < 32) then impossible("`n' = 0x%x won't fit in 5 bits.", n) else _result ||:= char(ior(ishift(iand(n, 16r1f), 3), 1)) return _result end procedure bc_bitslice(lo, hi) local _result _result := "" if lo = 0 & hi = iand(hi, 16r1f) then _result ||:= char(ior(ishift(iand(hi, 16r1f), 3), 2)) else if -8 <= lo < 8 & -8 <= hi < 8 then { _result ||:= char(ior(ishift(iand(lo, 16rf), 4), 3)) _result ||:= char(ior(ishift(iand(hi, 16rf), 4), 3)) _result ||:= char(6) } else if -8 <= lo < 8 & -128 <= hi < 128 then { _result ||:= char(ior(ishift(iand(lo, 16rf), 4), 3)) _result ||:= char(85) _result ||:= char(iand(hi, 16rff)) _result ||:= char(6) } else if -8 <= lo < 8 & -32768 <= hi < 32768 then { _result ||:= char(ior(ishift(iand(lo, 16rf), 4), 3)) _result ||:= char(101) _result ||:= char(iand(hi, 16rff)) _result ||:= char(iand(ishift(hi, -8), 16rff)) _result ||:= char(6) } else if -8 <= lo < 8 & sign_extend(hi, 32) = hi then { _result ||:= char(ior(ishift(iand(lo, 16rf), 4), 3)) _result ||:= char(117) _result ||:= char(iand(hi, 16rff)) _result ||:= char(iand(ishift(hi, -8), 16rff)) _result ||:= char(iand(ishift(hi, -16), 16rff)) _result ||:= char(iand(ishift(hi, -24), 16rff)) _result ||:= char(6) } else if -128 <= lo < 128 & -8 <= hi < 8 then { _result ||:= char(85) _result ||:= char(iand(lo, 16rff)) _result ||:= char(ior(ishift(iand(hi, 16rf), 4), 3)) _result ||:= char(6) } else if -128 <= lo < 128 & -128 <= hi < 128 then { _result ||:= char(85) _result ||:= char(iand(lo, 16rff)) _result ||:= char(85) _result ||:= char(iand(hi, 16rff)) _result ||:= char(6) } else if -128 <= lo < 128 & -32768 <= hi < 32768 then { _result ||:= char(85) _result ||:= char(iand(lo, 16rff)) _result ||:= char(101) _result ||:= char(iand(hi, 16rff)) _result ||:= char(iand(ishift(hi, -8), 16rff)) _result ||:= char(6) } else if -128 <= lo < 128 & sign_extend(hi, 32) = hi then { _result ||:= char(85) _result ||:= char(iand(lo, 16rff)) _result ||:= char(117) _result ||:= char(iand(hi, 16rff)) _result ||:= char(iand(ishift(hi, -8), 16rff)) _result ||:= char(iand(ishift(hi, -16), 16rff)) _result ||:= char(iand(ishift(hi, -24), 16rff)) _result ||:= char(6) } else if -32768 <= lo < 32768 & -8 <= hi < 8 then { _result ||:= char(101) _result ||:= char(iand(lo, 16rff)) _result ||:= char(iand(ishift(lo, -8), 16rff)) _result ||:= char(ior(ishift(iand(hi, 16rf), 4), 3)) _result ||:= char(6) } else if -32768 <= lo < 32768 & -128 <= hi < 128 then { _result ||:= char(101) _result ||:= char(iand(lo, 16rff)) _result ||:= char(iand(ishift(lo, -8), 16rff)) _result ||:= char(85) _result ||:= char(iand(hi, 16rff)) _result ||:= char(6) } else if -32768 <= lo < 32768 & -32768 <= hi < 32768 then { _result ||:= char(101) _result ||:= char(iand(lo, 16rff)) _result ||:= char(iand(ishift(lo, -8), 16rff)) _result ||:= char(101) _result ||:= char(iand(hi, 16rff)) _result ||:= char(iand(ishift(hi, -8), 16rff)) _result ||:= char(6) } else if -32768 <= lo < 32768 & sign_extend(hi, 32) = hi then { _result ||:= char(101) _result ||:= char(iand(lo, 16rff)) _result ||:= char(iand(ishift(lo, -8), 16rff)) _result ||:= char(117) _result ||:= char(iand(hi, 16rff)) _result ||:= char(iand(ishift(hi, -8), 16rff)) _result ||:= char(iand(ishift(hi, -16), 16rff)) _result ||:= char(iand(ishift(hi, -24), 16rff)) _result ||:= char(6) } else if -8 <= hi < 8 & sign_extend(lo, 32) = lo then { _result ||:= char(117) _result ||:= char(iand(lo, 16rff)) _result ||:= char(iand(ishift(lo, -8), 16rff)) _result ||:= char(iand(ishift(lo, -16), 16rff)) _result ||:= char(iand(ishift(lo, -24), 16rff)) _result ||:= char(ior(ishift(iand(hi, 16rf), 4), 3)) _result ||:= char(6) } else if -128 <= hi < 128 & sign_extend(lo, 32) = lo then { _result ||:= char(117) _result ||:= char(iand(lo, 16rff)) _result ||:= char(iand(ishift(lo, -8), 16rff)) _result ||:= char(iand(ishift(lo, -16), 16rff)) _result ||:= char(iand(ishift(lo, -24), 16rff)) _result ||:= char(85) _result ||:= char(iand(hi, 16rff)) _result ||:= char(6) } else if -32768 <= hi < 32768 & sign_extend(lo, 32) = lo then { _result ||:= char(117) _result ||:= char(iand(lo, 16rff)) _result ||:= char(iand(ishift(lo, -8), 16rff)) _result ||:= char(iand(ishift(lo, -16), 16rff)) _result ||:= char(iand(ishift(lo, -24), 16rff)) _result ||:= char(101) _result ||:= char(iand(hi, 16rff)) _result ||:= char(iand(ishift(hi, -8), 16rff)) _result ||:= char(6) } else if sign_extend(hi, 32) = hi & sign_extend(lo, 32) = lo then { _result ||:= char(117) _result ||:= char(iand(lo, 16rff)) _result ||:= char(iand(ishift(lo, -8), 16rff)) _result ||:= char(iand(ishift(lo, -16), 16rff)) _result ||:= char(iand(ishift(lo, -24), 16rff)) _result ||:= char(117) _result ||:= char(iand(hi, 16rff)) _result ||:= char(iand(ishift(hi, -8), 16rff)) _result ||:= char(iand(ishift(hi, -16), 16rff)) _result ||:= char(iand(ishift(hi, -24), 16rff)) _result ||:= char(6) } else impossible("Can't decide on branch for constructor bitslice") return _result end procedure bc_addlit(n) local _result _result := "" if n ~= 0 & (-8 <= n < 8) then _result ||:= char(ior(ishift(iand(n, 16rf), 4), 11)) else _result ||:= bc_sint(n) || char(87) return _result end procedure bc_cl_loc_force() local _result _result := "" _result ||:= char(11) return _result end procedure bc_bitshift(n) local _result _result := "" if not (-8 <= n < 8) then impossible("`n' = %d won't fit in 4 signed bits.", n) else _result ||:= char(ior(ishift(iand(n, 16rf), 4), 12)) return _result end procedure bc_emit_at_loc(n) local _result _result := "" if n = 1 then _result ||:= char(5) else if n = 2 then _result ||:= char(69) else if n = 4 then _result ||:= char(133) else if n = 8 then _result ||:= char(197) else if -8 <= n < 8 then { _result ||:= char(15) _result ||:= char(95) _result ||:= char(ior(ishift(iand(n, 16rf), 4), 3)) _result ||:= char(111) } else if -128 <= n < 128 then { _result ||:= char(15) _result ||:= char(95) _result ||:= char(85) _result ||:= char(iand(n, 16rff)) _result ||:= char(111) } else if -32768 <= n < 32768 then { _result ||:= char(15) _result ||:= char(95) _result ||:= char(101) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(ishift(n, -8), 16rff)) _result ||:= char(111) } else if sign_extend(n, 32) = n then { _result ||:= char(15) _result ||:= char(95) _result ||:= char(117) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(ishift(n, -8), 16rff)) _result ||:= char(iand(ishift(n, -16), 16rff)) _result ||:= char(iand(ishift(n, -24), 16rff)) _result ||:= char(111) } else impossible("Can't decide on branch for constructor emit_at_loc") return _result end procedure bc_cla(n) local _result _result := "" if -8 <= n < 8 then { _result ||:= char(ior(ishift(iand(n, 16rf), 4), 3)) _result ||:= char(79) } else if -128 <= n < 128 then { _result ||:= char(85) _result ||:= char(iand(n, 16rff)) _result ||:= char(79) } else if -32768 <= n < 32768 then { _result ||:= char(101) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(ishift(n, -8), 16rff)) _result ||:= char(79) } else if sign_extend(n, 32) = n then { _result ||:= char(117) _result ||:= char(iand(n, 16rff)) _result ||:= char(iand(ishift(n, -8), 16rff)) _result ||:= char(iand(ishift(n, -16), 16rff)) _result ||:= char(iand(ishift(n, -24), 16rff)) _result ||:= char(79) } else impossible("Can't decide on branch for constructor cla") return _result end procedure bc_cla_force(n) local _result _result := "" if not (0 <= n - 1 < 2) then impossible("`n - 1' = 0x%x won't fit in 1 bits.", n - 1) else _result ||:= char(ior(ishift(iand(n - 1, 16r1), 7), 21)) return _result end procedure bc_clv(n) local _result _result := "" if not (0 <= n - 1 < 2) then if not (-8 <= n < 8) then impossible("`n' = %d won't fit in 4 signed bits.", n) else { _result ||:= char(ior(ishift(iand(n, 16rf), 4), 3)) _result ||:= char(31) } else _result ||:= char(ior(ishift(iand(n - 1, 16r1), 7), 37)) return _result end procedure bc_clv_orb(n) local _result _result := "" if not (0 <= n - 1 < 2) then impossible("`n - 1' = 0x%x won't fit in 1 bits.", n - 1) else _result ||:= char(ior(ishift(iand(n - 1, 16r1), 7), 53)) return _result end procedure bc_halt() return char(0) end procedure bc_failmsg() local _result _result := "" _result ||:= char(118) return _result end procedure bc_unsat() local _result _result := "" _result ||:= char(1) return _result end
Definesbc_add
,bc_addlit
,bc_and
,bc_array
,bc_bitshift
,bc_bitslice
,bc_cla
,bc_cla_force
,bc_cl_loc
,bc_cl_loc_force
,bc_clv
,bc_clv_orb
,bc_emit_at
,bc_emit_at_loc
,bc_eq
,bc_failmsg
,bc_false
,bc_fitss
,bc_fitsu
,bc_force
,bc_ge
,bc_gt
,bc_halt
,bc_idiv
,bc_if_guard
,bc_known
,bc_le
,bc_lt
,bc_mark
,bc_mod
,bc_mul
,bc_narrows
,bc_narrowu
,bc_ne
,bc_neg
,bc_not
,bc_null
,bc_orb
,bc_proc
,bc_procmark
,bc_set
,bc_sint
,bc_stringlit
,bc_sub
,bc_true
,bc_unsat
,bc_widen
,sign_extend
(links are to index).