uint32_t parser_r(char **tokens, struct Table *table){ uint32_t opcode = getValue(tokens[0],table)<<26; uint32_t reg1Opcode = (checkRegister(tokens[1])) ? getRegisterNumber(tokens[1]) <<21 : 0; uint32_t reg2Opcode = (checkRegister(tokens[2])) ? getRegisterNumber(tokens[2]) <<16 : 0; uint32_t reg3Opcode = (checkRegister(tokens[3])) ? getRegisterNumber(tokens[3]) <<11 : 0; return (opcode + reg1Opcode + reg2Opcode + reg3Opcode); }
void searchMemory(struct Processor *proc, char **tokens) { int start =0; int end = MEMORY_SIZE; if (!checkIfAllMemoryLocationsAreValid(tokens+1)) { printInvalidCommandMessage(); return; } int value = atoi(tokens[1]); if (strcmp(tokens[0],"-r")==0) { start = getRegisterNumber(token[2]); end = getRegisterNumber(tokens[3]); if (start>end) { printInvalidCommandMessage(); return; } if (tokens[4]!=NULL) { printInvalidCommandMessage(); return; } } else if (strcmp(tokens[0],"-a")!=0) { printInvalidCommandMessage(); return; } printf("\n(JVG)"); for (int i = start; i<end ; i++) { if (proc->gpr[i]==value) { printf("M%i=%i ",i,getRegisterValue(getRegisterNumber)); } } printf("\n(JVG)"); }
int checkAllRegistersAreValid(char **regs) { while (*regs) { if (!checkRegister(*regs) || !checkIfNumber(*regs+1) || getRegisterNumber(*regs) <0 || getRegisterNumber(*regs) >= NUMBER_OF_REGISTERS) { return 0; } regs++; } return 1; }
uint32_t parser_i(char **tokens,struct Table *table){ uint32_t opcode = getValue(tokens[0],table)<<26; uint32_t immediateValue; uint32_t reg1Opcode = getRegisterNumber(tokens[1])<<21; uint32_t reg2Opcode = getRegisterNumber(tokens[2])<<16; if(checkHex(tokens[3])){ immediateValue = (int) strtol(tokens[3],NULL,16); } else if(checkLabel(tokens[3])) { immediateValue = (int) getValue(tokens[3], table); }else{ immediateValue = atoi(tokens[3]); } return (opcode + reg1Opcode + reg2Opcode + immediateValue); }
void searchRegister(struct Processor *proc, char **tokens) { int start =0; int end = NUMBER_OF_REGISTERS; if (!checkIfNumber(tokens[1])) { printInvalidCommandMessage(); return; } int value = atoi(tokens[1]); if (!checkAllRegistersAreValid(tokens+1)) { printInvalidCommandMessage(); return; } if (strcmp(tokens[0],"-r")==0) { start = getRegisterNumber(token[2]); end = getRegisterNumber(tokens[3]); if (start>end) { printInvalidCommandMessage(); return; } if (tokens[4]!=NULL) { printInvalidCommandMessage(); return; } } else if (strcmp(tokens[0],"-a")!=0) { printInvalidCommandMessage(); return; } printf("\n(JVG)"); for (int i = start; i<end ; i++) { if (proc->gpr[i]==value) { printf("$%i=%i ",i,getRegisterValue(getRegisterNumber)); } } printf("\n(JVG)"); }
void printReg(struct Processor *proc , char **tokens) { int start = 0 ; int end = NUMBER_OF_REGISTERS-1; if (strcmp("-r",tokens[0])==0) { start = getRegisterNumber(tokens[1]); end = getRegisterNumber(tokens[2]); if(!start<end && !checkAllRegistersAreValid(tokens+1)){ printInvalidCommandMessage(); return; } } else if (strcmp("-m",tokens[0])==0) { tokens++; if(!checkAllRegistersAreValid(tokens)){ printInvalidCommandMessage(); return; } int i =0; while(tokens[i]!=NULL) { printf("%s = %i \t",tokens[i],getRegisterValue(proc, getRegisterNumber(tokens[i]))); i++; if (i%8==0) printf(" \n"); } printf("\n (JVG)"); } else if (!strcmp("-a",tokens[0])==0){ printInvalidCommandMessage(); return; } printf( "\nstart- > %i end -> %i\n",start, end); for (int i=start; i<end/8 ; i++) { for (int j=0;j<8 ; j++) { printf("%s = %i \t",tokens[(i*j) + j],getRegisterValue(proc,getRegisterNumber(tokens[(i*j) + j]))); } printf(" \n"); } }
QString Register::toString() const{ QString name = getRegisterNameString(); name += " - " + QString::number(getRegisterNumber(getRegisterNameString())); name += "(" + QString::number(_value) + ")"; return name; }
bool ConfigMap::isVariableOut(const std::string& name) const { return m_outputRegistersInterval.in(getRegisterNumber(name)); }