Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- looplines.push(asmline);
- writeAsm("STORE 1\n");
- writeAsm("LOAD 3\n");
- writeAsm("STORE 2\n");
- writeAsm("SUB 1\n");
- jumpLabel("JZERO 1 ", asmline);
- writeAsm("ADD 1\n"); // cofamy a - b zeby dalej miec glowna liczbe
- writeAsm("SHL 2\n"); // b = 2b
- writeAsm("SHL 4\n"); // wynik = 2wynik
- writeAsm("JUMP " + std :: to_string(asmline - 6));
- ////////// koniec while
- ////////// a <= b
- labelToLine(asmline);
- writeAsm("SHR 2\n"); // powrot do ostatniego dobrego b
- writeAsm("SHR 4\n"); // cofamy wynik raz 2
- writeAsm("STORE 3\n"); // wez backup a
- writeAsm("LOAD 1\n"); // wsadz do R1
- writeAsm("STORE 2\n"); // wez b
- writeAsm("SUB 1\n"); // a - b^max
- writeAsm("ZERO 3\n"); // wyczysc r3
- address = address + 1; // wezmy nasza zmienna tymczasowa z wynikiem
- pompBigValue(0, address); // druga zmienna tymczasowa
- address = address - 1; // powrot do pierwszej tymczasowej
- writeAsm("LOAD 3\n"); // wczytajmy zmienna z wynikiem do R3
- writeAsm("STORE 4\n"); // wezmy R4 do memR0
- writeAsm("ADD 3\n"); // dodajmy do wyniku w R3
- writeAsm("STORE 3\n"); // wsadzmy wynik spowrotem do zmiennej
- pompBigValue(0, address); wrocmy z addressem do pierwszej zmiennej
- int64_t line; // skoczmy spowrtoem do gory
- line = looplines.top();
- looplines.pop();
- writeAsm("JUMP " + std :: to_string(line) + "\n");
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement