示例#1
0
uint32_t* assemble(char*** tokens, uint32_t lines)
{
  uint32_t i;
  uint32_t* assembledInstrs = calloc(lines, 8);
  char* dataprocessing[12] = {"add", "sub", "rsb", "and", "eor", "orr", "mov", "tst", "teq", "cmp", "lsl", "andeq"};
  char* multiply[2] = {"mul", "mla"};
  char* singleDataTransfer[2] = {"ldr", "str"};
  char* branch[7] = {"beq", "bne", "bge", "blt", "bgt", "ble", "b"};
  node* symbolTable = createSymbolTable(tokens, lines);

  for (i = 0; i < lines; i++)
  {
    if(arrayContains(tokens[i][0], dataprocessing, 12))
      assembledInstrs[i] = data_processing(tokens[i]);
    else if(arrayContains(tokens[i][0], multiply, 2))
      assembledInstrs[i] = multiply_instr(tokens[i]);
    else if(arrayContains(tokens[i][0], singleDataTransfer, 2))
      assembledInstrs[i] = single_data_transfer(tokens[i], symbolTable);
    else if(arrayContains(tokens[i][0], branch, 7))
      assembledInstrs[i] = branch_instr(tokens[i], symbolTable);
    else
      printf("Unknown command");
  }
  return assembledInstrs;
}
示例#2
0
int main()
{
	float SueldoAnualProfesional[LEGAJO] = {0};
	float SueldoMes[MES + 1] = {0};
	int TotalHorasExtra[LEGAJO] = {0};
   
	bool validated = false;
	int menu_item;
   
	system("clear"); //system("cls")
	if(login_request()) // nos logeamos
	{
		while(menu_item != 5) // repetimos el switch hasta salir del menu
		{
			menu_item = menu_items(); // llamamos al menu para introducir items
		     
		 	if(validated == false && menu_item == 0) // opcion 0 usable solo si no introducimos nada
			{
				menu_data(&validated, SueldoAnualProfesional, SueldoMes, TotalHorasExtra); // introducimos datos
			}
			else if(validated == true) // si ya introducimos datos habilitamos las otras opciones
			{
				switch(menu_item) // opciones despues de introducir datos
				{
				case 0:
					system("clear"); //system("cls");
					getchar();
					printf("Solo se puede introducir los datos una vez\n");
					getchar();
					break;
				case 1:
					system("clear"); //system("cls");
					getchar();
					data_processing(menu_item, SueldoAnualProfesional, 0);
					break;
				case 2:
					system("clear"); //system("cls");
					getchar();
					data_processing(menu_item, SueldoMes, 0);
					break;
				case 3:
					system("clear"); //system("cls");
					getchar();
					data_processing(menu_item, SueldoAnualProfesional, 0);
					break;
				case 4:
					system("clear"); //system("cls");
					getchar();
					data_processing(menu_item, SueldoAnualProfesional, TotalHorasExtra);
					break;
				}
			}
			else if(menu_item == 5) // terminamos el loop
			{
				return 0;
			}
			else // si tratamos de usar el menu sin introducir datos nos tira error
			{
				system("clear"); //system("cls");
				getchar();
				printf("Debes introducir los datos antes de usar el menu\n");
				getchar();
			}
		}
	}
	return 0;
}