|
|
|
@ -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))) |
|
|
|
|
|
|
|
|
|
|
|
) |
|
|
|
) |
|
|
|
) |
|
|
|
) |
|
|
|
) |
|
|
|
) |
|
|
|
|