+ '(((0op #x00) rtrue ez-op-rtrue)
+ ((0op #x01) rfalse ez-op-rfalse)
+ ((1op #x00) jz ez-op-jz)
+ ((1op #x0B) ret ez-op-ret)
+ ((1op #x0C) jump ez-op-jump)
+ ((2op #x0D) store ez-op-store)
+ ((1op #x0E) load ez-op-load)
+ ((var #x01) storew ez-op-storew)
+ ((2op #x01) je ez-op-je)
+ ((2op #x08) or ez-op-or)
+ ((2op #x09) and ez-op-and)
+ ((2op #x14) add ez-op-add)
+ ((2op #x15) sub ez-op-sub)
+ ((2op #x16) mul ez-op-mul)
+ ((2op #x17) div ez-op-div)
+ ((2op #x18) mod ez-op-mod)
+ ((var #x00) call_fv ez-op-callf)
+ ((1op #x01) get_sibling ez-op-get-sibling)
+ ((1op #x02) get_child ez-op-get-child)
+ ((1op #x03) get_parent ez-op-get-parent)
+ ((var #x03) put_prop ez-op-put-prop)))
+
+(defun ez-op-ret (operands &optional operand-types)
+ (let ((retval (car operands)))
+ (ez-pop-call-stack-frame)
+ (ez-set-var (ez-read-pc-byte-and-inc) retval))
+ t)
+
+(defun ez-op-rtrue (&optional operands operand-types)
+ (ez-op-ret (list 1)))
+
+(defun ez-op-rfalse (&optional operands operand-types)
+ (ez-op-ret (list 0)))
+
+(defun ez-op-jz (operands operand-types)
+ (ez-do-branch (= (car operands) 0))
+ t)
+
+(defun ez-op-je (operands operand-types)
+ (ez-do-branch (memq (car operands) (cdr operands)))
+ t)
+
+(defun ez-op-jump (operands operand-types)
+ (let ((offset (if (eq (car operand-types) 'b)
+ (ez-decode-signed-byte (car operands))
+ (ez-decode-signed-word (car operands)))))
+ (ez-set-pc (+ (ez-get-pc) offset -2)))
+ t)