int main(int argc, char** argv) { const char* usage = "usage: %s (-vX | -d) [dcpu-16 binary]"; LAssert(argc >= 2, usage, argv[0]); logLevel = 2; const char* file = NULL; unsigned start = 0; int numFiles = 0; for(int i = 1; i < argc; i++){ char* v = argv[i]; if(v[0] == '-'){ if(!strcmp(v, "-h")){ LogI(usage, argv[0]); LogI(" "); LogI("Available flags:"); LogI(" -vX set log level, where X is [0-5] - default: 2"); LogI(" -sX start disassembly at address X - default 0"); return 0; } else if(sscanf(v, "-v%d", &logLevel) == 1){} else if(sscanf(v, "-s0x%x", &start) || sscanf(v, "-s%d", &start) == 1){} else{ LogF("No such flag: %s", v); return 1; } }else{ numFiles++; file = v; } } LAssert(numFiles == 1, "Please specify one file to disassemble"); // Allocate 16MB ROM/RAM uint8_t* ram = calloc(1, 1024 * 1024 * 16); ReadFile(ram, 1024 * 1024 * 16, file); Disasm(ram, start); free(ram); }
void SortRings(int print) { int i, n, temp, swapped; for (i = 0; i < _num_rings; i++) { _srings[i] = _rings[i].z; //sort based on the z-position of each vertex _sringidx[i] = i; } n = _num_rings; do { swapped = 0; for (i = 0; i < _num_rings-1; i++) { if (_srings[i] > _srings[i + 1]) { temp = _srings[i]; _srings[i] = _srings[i + 1]; _srings[i + 1] = temp; temp = _sringidx[i]; _sringidx[i] = _sringidx[i + 1]; _sringidx[i + 1] = temp; swapped = 1; } } //end for --n; } while (swapped); if (print > 0) { for (i = 0; i < _num_rings; i++) { LogI("Ring Idx: ", i); LogI("Sorted Z: ", _srings[i]); LogI("Sorted Idx: ", _sringidx[i]); } LogI("Sort Algorithm Complete - ", 0); } }
int main(int argc, char** argv) { logLevel = 2; int atFile = 0; unsigned addr = 0; unsigned lastAddr = 0xffff; bool debugSymbols = false; char c; DByteOrder byteOrder = DBO_LittleEndian; const char* files[2] = {NULL, NULL}; const char* usage = "usage: %s (-vX | -h | -sX | -d | -eX) [dasm file] [out binary]"; for(int i = 1; i < argc; i++){ char* v = argv[i]; if(STARTSWITH(v, '-')){ if(!strcmp(v, "-h")){ LogI(usage, argv[0]); LogI(" "); LogI("Available flags:"); LogI(" -vX set log level, where X is [0-5] - default: 2"); LogI(" -sX set assembly start address [0-FFFF] - default 0"); LogI(" -h show this help message"); LogI(" -d generate debug symbols"); LogI(" -eX set endianness of output, where X is [l | b] default: l"); return 0; } else if(sscanf(v, "-v%d", &logLevel) == 1){} else if(sscanf(v, "-s%x", &addr) == 1){} else if(sscanf(v, "-e%1c", &c) == 1){ byteOrder = c == 'l' ? DBO_LittleEndian : DBO_BigEndian; } else if(!strcmp(v, "-d")){ debugSymbols = true; } else{ LogF("No such flag: %s", v); return 1; } }else{ LAssert(atFile < 2, "Please specify exactly one input file and one output file"); files[atFile++] = v; } } LAssert(argc >= 3 && files[0] && files[1], usage, argv[0]); LAssert(addr <= 0xffff, "Assembly start address must be within range 0 - 0xFFFF (not %x)", addr); // Allocate 64 kword RAM file uint16_t* ram = calloc(1, sizeof(uint16_t) * 0x10000); Dasm* d = Dasm_Create(); if(debugSymbols){ char tmp[4096]; sprintf(tmp, "%s.dbg", files[1]); d->debugFile = fopen(tmp, "w"); LogV("Opening debug file: %s", tmp); LAssert(d->debugFile, "could not open file: %s", tmp); } uint16_t len = Dasm_Assemble(d, files[0], ram, addr, lastAddr); if(d->debugFile) fclose(d->debugFile); Dasm_Destroy(&d); if(logLevel == 0) DumpRam(ram, len - 1); LogV("Writing to: %s", files[1]); WriteRam(ram, files[1], len - 1, byteOrder); free(ram); return 0; }
void CLog::LogI(PCoreString szText, int Value) { LogI(eLogType::NORMAL, szText, Value); }
int main(int argc, char** argv) { logLevel = 2; int atFile = 0; int romSize = 1024 * 1024 * 16; unsigned addr = 0; bool debugSymbols = false; const char* files[2] = {NULL, NULL}; const char* usage = "usage: %s (-vX | -h | -sX | -d | -eX) [hasm file] [out binary]"; for(int i = 1; i < argc; i++){ char* v = argv[i]; if(STARTSWITH(v, '-')){ if(!strcmp(v, "-h")){ LogI(usage, argv[0]); LogI(" "); LogI("Available flags:"); LogI(" -vX set log level, where X is [0-5] - default: 2"); LogI(" -sX set assembly start address [0-FFFF] - default 0"); LogI(" -h show this help message"); LogI(" -d generate debug symbols"); LogI(" -t unit tests"); return 0; } else if(sscanf(v, "-v%d", &logLevel) == 1){} else if(sscanf(v, "-s%x", &addr) == 1){} else if(!strcmp(v, "-d")){ debugSymbols = true; } else if(!strcmp(v, "-t")){ return Tests(argc, argv); } else{ LogF("No such flag: %s", v); return 1; } }else{ LAssert(atFile < 2, "Please specify exactly one input file and one output file"); files[atFile++] = v; } } LAssert(argc >= 3 && files[0] && files[1], usage, argv[0]); // Allocate 16 MB ROM uint8_t* ram = calloc(1, romSize); Hasm* d = Hasm_Create(); if(debugSymbols){ char tmp[4096]; sprintf(tmp, "%s.dbg", files[1]); d->debugFile = fopen(tmp, "w"); LogV("Opening debug file: %s", tmp); LAssert(d->debugFile, "could not open file: %s", tmp); } uint32_t len = Hasm_Assemble(d, files[0], ram, addr, romSize - 1); if(d->debugFile) fclose(d->debugFile); Hasm_Destroy(&d); if(logLevel == 0 && len) DumpRam(ram, len - 1); LogV("Writing to: %s", files[1]); WriteFile(ram, len ? len - 1 : 0, files[1]); LAssertWarn(len, "produced empty file"); free(ram); return 0; }