char* toHexa(int n) { char* retour = malloc(sizeof(char)*40); //char retour[20]; if (n >= 0 && n <= 9) { sprintf(retour,"%d",n); retour; } else if (n == 10) return "A"; else if (n == 11) return "B"; else if (n == 12) return "C"; else if (n == 13) return "D"; else if (n == 14) return "E"; else if (n == 15) return "F"; else if (n > 15) { int modulo = n % 16; int quotient = n / 16; strcpy(retour,toHexa(quotient)); strcat(retour,toHexa(modulo)); } return retour; }
void stateRegister(int* reg, int PC, int SP, int SR) { printf("\n\nEtat des registres :"); int j; for(j=0; j<8; j++) { printf("\nR%d : 0x%s",j,toHexa(reg[j])); } // Affichage en hexa des registres. On peut changer et passer en binaire. printf("\n\nPC : 0x%s",toHexa(PC)); printf("\nSP : 0x%s",toHexa(SP)); printf("\nSR : 0x%s",toHexa(SR)); }
int main (int argc, char ** argv) { int i; unsigned int cylinder, sector; unsigned char buffer[BUFSIZE]; if(argc !=3){ printf("Format necessite 2 arguments: le cylindre et le secteur\n"); exit(EXIT_FAILURE); } cylinder = atoi(argv[1]); sector = atoi(argv[2]); /* initialisation hardware */ if(init_hardware(HARDWARE_INI) == 0) { fprintf(stderr, "Erreur lors de l'initialisation du hardware\n"); exit(EXIT_FAILURE); } for(i = 0; i < 15; i++) IRQVECTOR[i] = nothing; read_sector(cylinder,sector,buffer); toHexa(buffer); exit(EXIT_SUCCESS); }
void TankFile::readAndValidateHeader() { // Read in the header: fileHeader.productId = readFourCC(); fileHeader.tankId = readFourCC(); fileHeader.headerVersion = readU32(); fileHeader.dirsetOffset = readU32(); fileHeader.filesetOffset = readU32(); fileHeader.indexSize = readU32(); fileHeader.dataOffset = readU32(); fileHeader.productVersion = readProductVersion(); fileHeader.minimumVersion = readProductVersion(); fileHeader.priority = static_cast<TankFile::Priority>(readU32()); fileHeader.flags = readU32(); fileHeader.creatorId = readFourCC(); fileHeader.guid = readGuid(); fileHeader.indexCrc32 = readU32(); fileHeader.dataCrc32 = readU32(); fileHeader.utcBuildTime = readSystemTime(); readBytes(fileHeader.copyrightText, sizeof(fileHeader.copyrightText)); readBytes(fileHeader.buildText, sizeof(fileHeader.buildText)); readBytes(fileHeader.titleText, sizeof(fileHeader.titleText)); readBytes(fileHeader.authorText, sizeof(fileHeader.authorText)); fileHeader.descriptionText = readWNString(); // Optional debug printing: #if SIEGE_TANK_DEBUG SiegeLog("====== TANK HEADER FOR FILE: \"" << fileName << "\" ======"); SiegeLog("productId.........: " << fileHeader.productId); SiegeLog("tankId............: " << fileHeader.tankId); SiegeLog("headerVersion.....: " << versionWordToStr(fileHeader.headerVersion)); SiegeLog("dirsetOffset......: " << toHexa(fileHeader.dirsetOffset) << " (" << utils::formatMemoryUnit(fileHeader.dirsetOffset) << ")"); SiegeLog("filesetOffset.....: " << toHexa(fileHeader.filesetOffset) << " (" << utils::formatMemoryUnit(fileHeader.filesetOffset) << ")"); SiegeLog("indexSize.........: " << utils::formatMemoryUnit(fileHeader.indexSize)); SiegeLog("dataOffset........: " << toHexa(fileHeader.dataOffset) << " (" << utils::formatMemoryUnit(fileHeader.dataOffset) << ")"); SiegeLog("productVersion....: " << fileHeader.productVersion); SiegeLog("minimumVersion....: " << fileHeader.minimumVersion); SiegeLog("priority..........: " << priorityToString(fileHeader.priority)); SiegeLog("flags.............: " << fileHeader.flags); SiegeLog("creatorId.........: " << fileHeader.creatorId); SiegeLog("Guid..............: " << fileHeader.guid); SiegeLog("indexCrc32........: " << toHexa(fileHeader.indexCrc32)); SiegeLog("dataCrc32.........: " << toHexa(fileHeader.dataCrc32)); SiegeLog("utcBuildTime......: " << fileHeader.utcBuildTime); SiegeLog("copyrightText.....: " << toString(fileHeader.copyrightText)); SiegeLog("buildText.........: " << toString(fileHeader.buildText)); SiegeLog("titleText.........: " << toString(fileHeader.titleText)); SiegeLog("authorText........: " << toString(fileHeader.authorText)); SiegeLog("descriptionText...: " << toString(fileHeader.descriptionText)); SiegeLog("====== END TANK HEADER ======"); #endif // SIEGE_TANK_DEBUG // Fatal errors: if (fileHeader.productId != TankFile::ProductId) { SiegeThrow(TankFile::Error, "\"" << fileName << "\": Header product id doesn't match the expected value!"); } if (fileHeader.tankId != TankFile::TankId) { SiegeThrow(TankFile::Error, "\"" << fileName << "\": Header Tank id doesn't match the expected value!"); } // Warnings: if (fileHeader.creatorId != TankFile::CreatorIdGPG && fileHeader.creatorId != TankFile::CreatorIdUser) { SiegeWarn("Tank creator id is unknown: " << fileHeader.creatorId); } if (fileHeader.headerVersion != Header::ExpectedVersion) { SiegeWarn("Unknown Tank header version: " << fileHeader.headerVersion); } }