From c3adbeb8ada59f9e4b87d97aea3f93581e1a449f Mon Sep 17 00:00:00 2001 From: Daniele Lacamera Date: Mon, 23 Dec 2019 08:46:37 +0100 Subject: [PATCH] Aggiunti codici operativi istruzioni --- codifica_istruzioni.h | 77 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 codifica_istruzioni.h diff --git a/codifica_istruzioni.h b/codifica_istruzioni.h new file mode 100644 index 0000000..2c1036c --- /dev/null +++ b/codifica_istruzioni.h @@ -0,0 +1,77 @@ +#include "elea_tipi.h" + + +/* + * Istruzioni memoria-accumulatore + */ +#define OP_DA CAR_A /* Dispone Accumulatore */ +#define OP_MA CAR_F /* Trasferisce da memoria ad accumulatore */ +#define OP_AM CAR_G /* Trasferisce da accumulatore a memoria (senza azzeramento) */ +#define OP_AoM CAR_B /* Trasferisce da accumulatore a memoria con azzeramento */ +#define OP_PIU_MA CAR_C /* Somma memoria ad accumulatore, risultato in accumulatore */ +#define OP_PIU_AM CAR_GAMMA /* Somma accumulatore e memoria, risultato in memoria */ +#define OP_MENO_MA CAR_H /* Sottrae memoria da accumulatore, risultato in accumulatore */ +#define OP_CMA CAR_E /* Confronta memoria con accumulatore */ +#define OP_FAM CAR_DELTA /* Fine accumulatore in memoria */ + +/* + * Istruzioni memoria-memoria + */ +#define OP_PUM CAR_DIVISO /* Prepara uscita memoria */ +#define OP_MEM CAR_UNO /* Trasferisce da memoria a memoria */ +#define OP_PIU_MM CAR_TRE /* Somma memoria a memoria */ +#define OP_MENO_MM CAR_OTTO /* Sottrae memoria da memoria */ +#define OP_CMM CAR_BARRA /* Confronta memoria con memoria */ + +/* + * Istruzioni memoria-registri + */ +#define OP_MT CAR_X /* Trasferisce da memoria a registro T */ +#define OP_TM CAR_Y /* Trasferisce da registro T a memoria */ +#define OP_ToM CAR_T /* Trasferisce da registro T a memoria con azzeramento */ +#define OP_PIU_MT CAR_U /* Somma memoria a registro T, risultato in registro */ +#define OP_PIU_TM CAR_MOLTIPLICATO_PER /* Somma registro a memoria, risultato in memoria */ +#define OP_MENO_MT CAR_Z /* Sottrae memoria da registro T, risultato in registro */ +#define OP_CMT CAR_W /* Confronta memoria con registro */ +#define OP_FTM CAR_TETA /* Fine registro T in memoria */ + +/* + * Istruzioni costanti-registri + */ +#define OP_CT CAR_NOVE /* Trasferisce una costante in registro T */ +#define OP_PIU_CT CAR_PIU /* Somma costante a registro T */ +#define OP_MENO_CT CAR_QUATTRO /* Sottrae costante da registro T */ +#define OP_CCT CAR_DIESIS /* Confronta costante con registro T */ + +/* + * Istruzioni per la moltiplicazione + */ + +#define OP_Y CAR_6 /* Trasferisce il moltiplicatore nel registro T */ +#define OP_PIU_X CAR_UGUALE /* Moltiplicazione additiva */ +#define OP_MENO_X CAR_VIRGOLA /* Moltiplicazione sottrattiva */ + +/* + * Istruzioni per la ricerca in memoria + */ +#define OP_RIa CAR_DUE /* Ricerca Avanti */ +#define OP_RIi CAR_SETTE /* Ricerca Indietro */ + +/* + * Istruzioni logiche + */ +#define OP_XLD CAR_ESCLAMATIVO /* Moltiplicazione logica diretta (AND) */ +#define OP_XLN CAR_E_COMMERCIALE /* Moltiplicazione logica negata (NAND) */ +#define OP_PIU_LD CAR_V /* Somma logica (OR) */ + +/* + * Istruzioni relative al tavolo di comando + */ +#define OP_CM CAR_PERCENTO /* Da tavolo/telescrivente/fotolettore a memoria */ +#define OP_MS CAR_PHI /* Da memoria a telescrivente */ + +/* + * Istruzioni di salto *TODO: sottocodici* + */ +#define OP_SALTO CAR_ZERO +