elea_tipi.h 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. #ifndef ELEA_TIPI_INCLUSO
  2. #define ELEA_TIPI_INCLUSO
  3. #include <stdint.h>
  4. typedef uint8_t carattere;
  5. typedef int8_t segno;
  6. typedef uint8_t booleano;
  7. typedef uint32_t indirizzo;
  8. #define SI (1)
  9. #define NO (0)
  10. /* bit gA: valido solo se il carattere e` letto da Accumulatore.
  11. * Nelle operazioni aritmetiche le cifre che lo seguono sono zeri
  12. * Nei trasferisferimento a mem principale il bit e` ignorato i
  13. */
  14. #define gA(x) ((x >> 7) & 0x01)
  15. struct __attribute__((packed)) istruzione_gen {
  16. carattere F; /* Tipo di funzione */
  17. carattere Tm; /* Modificatore */
  18. carattere I[4]; /* Indirizzo */
  19. carattere L[2]; /* Lunghezza */
  20. };
  21. struct __attribute__((packed)) istruzione_t {
  22. carattere F; /* Tipo di funzione */
  23. carattere Tm; /* Modificatore */
  24. carattere To; /* Indirizzo del secondo operando*/
  25. carattere L[2]; /* Lunghezza */
  26. };
  27. struct __attribute__((packed)) istruzione_c {
  28. carattere F; /* Tipo di funzione */
  29. carattere To; /* Registro operando */
  30. carattere C[5]; /* Costante */
  31. carattere X; /* Non utilizzato */
  32. };
  33. struct __attribute__((packed)) istruzione_s {
  34. carattere F; /* Tipo di funzione */
  35. carattere Tm; /* Modificatore */
  36. carattere I[4]; /* Indirizzo per il salto */
  37. carattere Ts; /* Indirizzo da cui avviene il salto */
  38. carattere E; /* Eventualita` */
  39. };
  40. struct __attribute__((packed)) istruzione_n {
  41. carattere F; /* Tipo di funzione */
  42. carattere Tm; /* Modificatore */
  43. carattere I[4]; /* Indirizzo del blocco in memoria */
  44. carattere n; /* Unita` nastro */
  45. carattere X; /* Non utilizzato */
  46. };
  47. struct __attribute__((packed)) istruzione_da {
  48. carattere F; /* Tipo di funzione */
  49. carattere Tm; /* Modificatore */
  50. carattere I[2]; /* Indirizzo interno dell'accumulatore */
  51. carattere X[4]; /* Non utilizzato */
  52. };
  53. typedef union u_istruzione {
  54. struct istruzione_gen gen;
  55. struct istruzione_t t;
  56. struct istruzione_c c;
  57. struct istruzione_s s;
  58. struct istruzione_n n;
  59. struct istruzione_da da;
  60. } istruzione;
  61. #endif /* ELEA_TIPI_INCLUSO */