elea9003-emu/elea_tipi.h
2019-12-23 22:08:41 +01:00

71 lines
1.8 KiB
C

#ifndef ELEA_TIPI_INCLUSO
#define ELEA_TIPI_INCLUSO
#include <stdint.h>
typedef uint8_t carattere;
typedef int8_t segno;
typedef uint8_t booleano;
#define SI (1)
#define NO (0)
/* bit gA: valido solo se il carattere e` letto da Accumulatore.
* Nelle operazioni aritmetiche le cifre che lo seguono sono zeri
* Nei trasferisferimento a mem principale il bit e` ignorato i
*/
#define gA(x) ((x >> 7) & 0x01)
typedef carattere * indirizzo;
struct __attribute__((packed)) istruzione_gen {
carattere F; /* Tipo di funzione */
carattere Tm; /* Modificatore */
carattere I[4]; /* Indirizzo */
carattere L[2]; /* Lunghezza */
};
struct __attribute__((packed)) istruzione_t {
carattere F; /* Tipo di funzione */
carattere Tm; /* Modificatore */
carattere To; /* Indirizzo del secondo operando*/
carattere L[2]; /* Lunghezza */
};
struct __attribute__((packed)) istruzione_c {
carattere F; /* Tipo di funzione */
carattere To; /* Registro operando */
carattere C[5]; /* Costante */
carattere X; /* Non utilizzato */
};
struct __attribute__((packed)) istruzione_s {
carattere F; /* Tipo di funzione */
carattere Tm; /* Modificatore */
carattere I[4]; /* Indirizzo per il salto */
carattere Ts; /* Indirizzo da cui avviene il salto */
carattere E; /* Eventualita` */
};
struct __attribute__((packed)) istruzione_n {
carattere F; /* Tipo di funzione */
carattere Tm; /* Modificatore */
carattere I[4]; /* Indirizzo del blocco in memoria */
carattere n; /* Unita` nastro */
carattere X; /* Non utilizzato */
};
typedef union u_istruzione {
struct istruzione_gen gen;
struct istruzione_t t;
struct istruzione_c c;
struct istruzione_s s;
struct istruzione_n n;
} istruzione;
#endif /* ELEA_TIPI_INCLUSO */