RegisterBank.java 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. /*
  2. * To change this license header, choose License Headers in Project Properties.
  3. * To change this template file, choose Tools | Templates
  4. * and open the template in the editor.
  5. */
  6. package tools.mips;
  7. import java.util.ArrayList;
  8. import java.util.Map;
  9. /**
  10. *
  11. * @author EUGENIO CARVALHO
  12. */
  13. class RegisterBank {
  14. long[] registers;
  15. public final long REG_HI;
  16. public final long REG_LO;
  17. public long last;
  18. public ArrayList<String> names = new ArrayList<String>();
  19. public RegisterBank(long i) {
  20. registers = new long[(int) i + 2];
  21. REG_HI = i;
  22. REG_LO = i + 1;
  23. for (Map.Entry<String, String> en : targets.mips.Descriprion.registers.entrySet()) {
  24. names.add(en.getKey());
  25. }
  26. names.add("hi");
  27. names.add("lo");
  28. }
  29. public long R(Integer i) {
  30. return registers[i];
  31. }
  32. public long R(long i) {
  33. return registers[(int) i];
  34. }
  35. public RegisterBank W(long i, long v) {
  36. registers[(int) i] = v;
  37. last = i;
  38. return this;
  39. }
  40. @Override
  41. public String toString() {
  42. String out = "", t;
  43. for (int i = 0; i < registers.length; i++) {
  44. if (last == i) {
  45. t = "-> ";
  46. } else {
  47. t = " ";
  48. }
  49. out = out.concat(t)
  50. .concat(names.get(i) + "\t:" + registers[i])
  51. .concat(",\n");
  52. }
  53. return out;
  54. }
  55. }