Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- case delete_instr:
- Iterator1 = registersList.begin();
- std::cout << "\n delete \n";
- advance(Iterator1, ((nrOfElementToDelete - 1) * chunkToRemove)); //first iterator points to the first element to delete
- advance(Iterator2, nrOfElementToDelete * chunkToRemove); //second iterator points to the last element to delete
- registersList.erase(Iterator1, Iterator2);
- for (int j = 0; j < chunkToRemove; j++) //after deletion fill last elements with zeros
- registersList.push_back(0);
- //Iterator1 = registersList.begin();
- //advance(Iterator1, chunkToRemove);
- for (int i = 0; i < registersList.size(); i += 6) { // iterate through all next instructions
- //std::cout << "i = " << i << "\n";
- //std::cout << *Iterator1 << "\n";
- //std::cout << "3rd element = " << *Iterator1;
- if ((*Iterator1) == 3) { // if instruction type is 3- JMP
- //std::cout << *Iterator1 << "\n";
- advance(Iterator1, 5); //set iterator to 6th position in this instruction- (according point)
- //std::cout << "Iterator (5)" << *Iterator1 << "\n";
- if (*Iterator1 > nrOfElementToDelete) {//if number of instruction to jump to is before deleted instruction leave it alone
- *Iterator1 = (*Iterator1) - 1;
- }
- //decrement value stored in 6th position - shift jump point reference to fit updated list (jumps have to shift when deleting instruction)
- //std::cout << "zdekrementowana wartosc iterator = " << *Iterator1 << "\n";
- }
- advance(Iterator1, 1);
- }
- break;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement