Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
/* 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;
}
Ejemplo n.º 3
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;
}
Ejemplo n.º 4
0
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;
}