mach1.c 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /*
  2. * (c) copyright 1990 by the Vrije Universiteit, Amsterdam, The Netherlands.
  3. * See the copyright notice in the ACK home directory, in the file "Copyright".
  4. */
  5. #define RCSID1 "$Id$"
  6. /*
  7. * VAX-11 Machine dependent C declarations
  8. */
  9. /* Addressing modes */
  10. #define REG_MODE 5
  11. #define REGDEF_MODE 6
  12. #define AI_MODE 8
  13. #define AI_DEF_MODE 9
  14. #define AD_MODE 7
  15. #define DISPLB_MODE 10
  16. #define DISPLW_MODE 12
  17. #define DISPLL_MODE 14
  18. #define DISPLB_DEF_MODE 11
  19. #define DISPLW_DEF_MODE 13
  20. #define DISPLL_DEF_MODE 15
  21. #define INDEX_MODE 4
  22. #define DISPL 16 /* not an addressing mode; used for branch
  23. displacement addressing
  24. */
  25. #define ABS 17 /* absolute mode (only for internal use) */
  26. #define IMM 18 /* immediate mode (only for internal use) */
  27. #define REL 19 /* relative mode (only for internal use) */
  28. #define REL_DEF 20 /* relative deferred mode (only for internal
  29. use)
  30. */
  31. /* Some mnemonics used in mach5.c */
  32. #define PC 15 /* program counter */
  33. #define BRB 0x11 /* opcode of branch with byte offset */
  34. #define BRW 0x31 /* opcode of branch with word offset */
  35. #define JMP 0x17 /* opcode of jmp instruction */
  36. /* Test if a constant is suitable for literal mode */
  37. #define literal(z) (((z) & ~(int)0x3f) == 0)
  38. /* Declarations for operands */
  39. struct operand {
  40. expr_t exp;
  41. int mode; /* addressing mode */
  42. int reg; /* register used in addressing mode */
  43. int relo; /* index in relocation table for exp */
  44. int size; /* size as imposed by instruction
  45. -1 indicates bit-field (no immediate mode
  46. allowed)
  47. -2 indicates address (no register mode
  48. or immediate mode allowed)
  49. */
  50. int index_reg; /* for indexed mode contains index reg,
  51. -1 if not index mode
  52. */
  53. };
  54. extern struct operand opnd[6]; /* maximum number of operands of a VAX
  55. instruction is 6
  56. */
  57. extern int op_ind; /* index in opng array */