KeinMitleid

8086 2

Apr 15th, 2014
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.75 KB | None | 0 0
  1. #include <cstdint>
  2.  
  3. enum { AX, CX, DX, BX, SP, BP, SI, DI, ES, CS, DS, SS, IP, FLAGS };
  4. enum { AL, CL, DL, BL, AH, CH, DH, BH };
  5. enum { OF = 1 << 11, DF = 1 << 10, IF = 1 << 9, TF = 1 << 8, SF = 1 << 7,
  6.        ZF = 1 << 6, AF = 1 << 4, PF = 1 << 2, CF = 1 << 0 };
  7.  
  8. class CPU {
  9. public:
  10.     inline uint8_t& regs8(int reg) {
  11.         if (reg < 4) return _regs.bytes[reg * 2];
  12.         else return _regs.bytes[(reg - 4) * 2 + 1];
  13.     }
  14.     inline uint16_t& regs16(int reg) {
  15.         return _regs.words[reg];
  16.     }
  17.     inline uint8_t iregs8(int reg) {
  18.         return reg;
  19.     }
  20.     inline uint8_t iregs16(int reg) {
  21.         if (reg < 8) return reg;
  22.         else return reg - 8;
  23.     }
  24. private:
  25.     union {
  26.         uint16_t words[14];
  27.         uint8_t  bytes[8];
  28.     } _regs;
  29. };
  30.  
  31. int main(int argc, char **argv) {
  32.     return 0;
  33. }
Advertisement
Add Comment
Please, Sign In to add comment