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; }
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; }