Function: ccl-compile-expression
ccl-compile-expression is a byte-compiled function defined in
ccl.el.gz.
Signature
(ccl-compile-expression RRR EXPR)
Documentation
Compile SET statement of the form (RRR = EXPR).
Source Code
;; Defined in /usr/src/emacs/lisp/international/ccl.el.gz
(defun ccl-compile-expression (rrr expr)
"Compile SET statement of the form `(RRR = EXPR)'."
(let ((left (car expr))
(op (get (nth 1 expr) 'ccl-arith-code))
(right (nth 2 expr)))
(if (listp left)
(progn
;; EXPR has the form `((EXPR2 OP2 ARG) OP RIGHT)'. Compile
;; the first term as `(r7 = (EXPR2 OP2 ARG)).'
(ccl-compile-expression 'r7 left)
(setq left 'r7)))
;; Now EXPR has the form (LEFT OP RIGHT).
(if (and (eq rrr left)
(< op (length ccl-assign-arith-table)))
;; Compile this SET statement as `(RRR OP= RIGHT)'.
(if (integerp right)
(progn
(ccl-embed-code 'set-assign-expr-const rrr (ash op 3) 'r0)
(ccl-embed-data right))
(ccl-check-register right expr)
(ccl-embed-code 'set-assign-expr-register rrr (ash op 3) right))
;; Compile this SET statement as `(RRR = (LEFT OP RIGHT))'.
(if (integerp right)
(progn
(ccl-embed-code 'set-expr-const rrr (ash op 3) left)
(ccl-embed-data right))
(ccl-check-register right expr)
(ccl-embed-code 'set-expr-register
rrr
(logior (ash op 3) (get right 'ccl-register-number))
left)))))