static void Jtypei(char *line, int k, int *macode){ int machCode = 0; int regA = line[REGAF] - '0'; int regB = line[REGBF] - '0'; machCode |= OPCODE(k)|REGA(regA)|REGB(regB); ///itoa(machCode, *macode, 10); *macode = machCode; }
/* flush serial input queue. returns 0 on success or negative error * number otherwise */ static int serial_flush_input(void) { volatile u32 tmp; /* keep on reading as long as the receiver is not empty */ while(UTRSTAT0&0x01) { tmp = REGB(URXH0); } return 0; }
static void Rtypei(char *line, int k, int *macode){ int machCode = 0;///Clear this 32 bits integer whole zero int regA = line[REGAF] - '0'; int regB = line[REGBF] - '0'; int destReg = line[DESTREGF] - '0'; machCode |= OPCODE(k)|REGA(regA)|REGB(regB)|DESTR(destReg); ///itoa(machCode, *macode, 10);///TRY this offical conversion function itoa *macode = machCode; }
static void Itypei(char *line, int k, int *macode, int addr2){ int machCode = 0;///like Rtypei int i; int addr; ///int tmp; unsigned short offset; char labelname[LABLEN + 1] = {'\0',}; if (isalpha(line[LABELF])){///it's a label for(i = 0; !isspace(line[LABELF + i]) && line[LABELF + i] != '\0'; i++) labelname[i] = line[LABELF + i]; labelname[i + 1] = '\0'; if ( (addr = addrOflabel(labelname)) >= 0){ ///tmp = addr - addr2 - 1; if(addr >= addr2) offset = (unsigned short)(addr - addr2); else offset = (unsigned short)((~(-(addr - addr2 -1)))+1); } else err_sys("Label undefined"); } else{///it's a numberic int tmpnum; char charnum[DECLEN]; for(i = 0; !isspace(line[OFFSETF + i]) && line[OFFSETF + i] != '\0'; i++) charnum[i] = line[OFFSETF + i]; charnum[i + 1] = '\0'; tmpnum = atoi(charnum); /// printf("tmpnum = %d\n", tmpnum); if(tmpnum >= 0) offset = (unsigned short)tmpnum; else offset = (unsigned short) ((~(-tmpnum))+1) ; }///end else int regA = line[REGAF] - '0'; int regB = line[REGBF] - '0'; machCode |= OPCODE(k)|REGA(regA)|REGB(regB)|offset; ///itoa(machCode, *macode, 10); *macode = machCode; }