Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdint>
- enum { AX, CX, DX, BX, SP, BP, SI, DI, ES, CS, DS, SS, IP, FLAGS };
- enum { AL, CL, DL, BL, AH, CH, DH, BH };
- enum { OF = 1 << 11, DF = 1 << 10, IF = 1 << 9, TF = 1 << 8, SF = 1 << 7,
- ZF = 1 << 6, AF = 1 << 4, PF = 1 << 2, CF = 1 << 0 };
- class CPU {
- public:
- inline uint8_t& regs8(int reg) {
- if (reg < 4) return _regs.bytes[reg * 2];
- else return _regs.bytes[(reg - 4) * 2 + 1];
- }
- inline uint16_t& regs16(int reg) {
- return _regs.words[reg];
- }
- inline uint8_t iregs8(int reg) {
- return reg;
- }
- inline uint8_t iregs16(int reg) {
- if (reg < 8) return reg;
- else return reg - 8;
- }
- private:
- union {
- uint16_t words[14];
- uint8_t bytes[8];
- } _regs;
- };
- int main(int argc, char **argv) {
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment