master
CrossNox 3 years ago
parent 7d49e73114
commit 1628337f42
  1. 12
      src/rustint/core.clj

@ -1719,6 +1719,12 @@
; ATAN: Incrementa cont-prg en 1, quita de la pila un elemento numerico, calcula su arcotangente y la coloca al final de la pila. ; ATAN: Incrementa cont-prg en 1, quita de la pila un elemento numerico, calcula su arcotangente y la coloca al final de la pila.
; ABS: Incrementa cont-prg en 1, quita de la pila un elemento numerico, calcula su valor absoluto y lo coloca al final de la pila. ; ABS: Incrementa cont-prg en 1, quita de la pila un elemento numerico, calcula su valor absoluto y lo coloca al final de la pila.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; No puedo usar or a secas:
; Can't take value of a macro: #'clojure.core/or
(defn or-diadico [arg1 arg2]
(or arg1 arg2)
)
(defn interpretar [cod regs-de-act cont-prg pila mapa-regs] (defn interpretar [cod regs-de-act cont-prg pila mapa-regs]
(let [fetched (cod cont-prg), (let [fetched (cod cont-prg),
opcode (if (symbol? fetched) fetched (first fetched)), opcode (if (symbol? fetched) fetched (first fetched)),
@ -1893,7 +1899,6 @@
(recur cod regs-de-act (inc cont-prg) res mapa-regs) (recur cod regs-de-act (inc cont-prg) res mapa-regs)
) )
; NOT: Incrementa cont-prg en 1, quita de la pila un elemento booleano, lo niega y lo coloca al final de la pila. ; NOT: Incrementa cont-prg en 1, quita de la pila un elemento booleano, lo niega y lo coloca al final de la pila.
NOT (let [ NOT (let [
res (not (last pila)), res (not (last pila)),
@ -1965,6 +1970,11 @@
; SUB: Como ADD, pero resta. ; SUB: Como ADD, pero resta.
SUB (let [res (aplicar-operador-diadico - pila)] SUB (let [res (aplicar-operador-diadico - pila)]
(if (nil? res) res (recur cod regs-de-act (inc cont-prg) res mapa-regs))) (if (nil? res) res (recur cod regs-de-act (inc cont-prg) res mapa-regs)))
; OR: Como ADD, pero calcula el or entre los dos valores
OR (let [res (aplicar-operador-diadico or-diadico pila)]
(if (nil? res) res (recur cod regs-de-act (inc cont-prg) res mapa-regs)))
) )
) )
) )

Loading…
Cancel
Save