/*******************************************************************************/ /* COS2000 - Compatible Operating System - LGPL v3 - Hordé Nicolas */ /* */ #include "types.h" #define opBufSz 32 #define decodeSIB() \ base = r32[*b&0x07]; \ indx = r32[(*b&0x38)>>3]; \ scale = ((*b&0xc0)>>6)*2; \ if(scale && !indx){ \ print("Invalid SIB byte."); \ return; \ } #define setG() \ reg = (*b&0x38)>>3; \ if(!Gsz){ \ } else if(Gsz == 1){ \ G = r8[reg]; \ } else if(Gsz == 2){ \ G = r16[reg]; \ } else if(Gsz == 3){ \ G = r32[reg]; \ } else if(Gsz == 4){ \ if(reg < 8){ \ G = rseg[reg]; \ } else{ \ print("Invalid Mod R/M byte."); \ return; \ } \ } else{ \ print("Invalid Mod R/M byte."); \ return; \ } #define DBG_EXEC 0b00 #define DBG_WRITE 0b01 #define DBG_CLEAR 0b10 #define DBG_READWRITE 0b11 #define DBG_ONEBYTE 0b00 #define DBG_TWOBYTE 0b01 #define DBG_FOURBYTE 0b11 void setdebugreg(u8 number, u8 * address, u8 type); u8 *getdebugreg(u8 number); u32 disasm(u8 * a, u8 * string, bool show);