71 lines
1.8 KiB
C
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 */
|