Advertisement
Guest User

Untitled

a guest
Jan 18th, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.55 KB | None | 0 0
  1.  
  2. looplines.push(asmline);
  3. writeAsm("STORE 1\n");
  4. writeAsm("LOAD 3\n");
  5. writeAsm("STORE 2\n");
  6. writeAsm("SUB 1\n");
  7. jumpLabel("JZERO 1 ", asmline);
  8. writeAsm("ADD 1\n"); // cofamy a - b zeby dalej miec glowna liczbe
  9. writeAsm("SHL 2\n"); // b = 2b
  10. writeAsm("SHL 4\n"); // wynik = 2wynik
  11. writeAsm("JUMP " + std :: to_string(asmline - 6));
  12. ////////// koniec while
  13. ////////// a <= b
  14. labelToLine(asmline);
  15. writeAsm("SHR 2\n"); // powrot do ostatniego dobrego b
  16. writeAsm("SHR 4\n"); // cofamy wynik raz 2
  17. writeAsm("STORE 3\n"); // wez backup a
  18. writeAsm("LOAD 1\n"); // wsadz do R1
  19. writeAsm("STORE 2\n"); // wez b
  20. writeAsm("SUB 1\n"); // a - b^max
  21. writeAsm("ZERO 3\n"); // wyczysc r3
  22. address = address + 1; // wezmy nasza zmienna tymczasowa z wynikiem
  23. pompBigValue(0, address); // druga zmienna tymczasowa
  24. address = address - 1; // powrot do pierwszej tymczasowej
  25. writeAsm("LOAD 3\n"); // wczytajmy zmienna z wynikiem do R3
  26. writeAsm("STORE 4\n"); // wezmy R4 do memR0
  27. writeAsm("ADD 3\n"); // dodajmy do wyniku w R3
  28. writeAsm("STORE 3\n"); // wsadzmy wynik spowrotem do zmiennej
  29. pompBigValue(0, address); wrocmy z addressem do pierwszej zmiennej
  30. int64_t line; // skoczmy spowrtoem do gory
  31. line = looplines.top();
  32. looplines.pop();
  33. writeAsm("JUMP " + std :: to_string(line) + "\n");
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement