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.
; 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]
(let [fetched (cod cont-prg),
opcode (if (symbol? fetched) fetched (first fetched)),
@ -1893,7 +1899,6 @@
(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 (let [
res (not (last pila)),
@ -1965,6 +1970,11 @@
; SUB: Como ADD, pero resta.
SUB (let [res (aplicar-operador-diadico - pila)]
(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