asm_reg.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. // package asm_reg -- ассемблерный регистр общего назначения ЦП
  2. package asm_reg
  3. type AsmReg struct {
  4. val int32
  5. isTest bool
  6. }
  7. // NewAsmReg -- возвращает регистр нового назначения ЦП
  8. func NewAsmReg() *AsmReg {
  9. sf := &AsmReg{}
  10. return sf
  11. }
  12. // Sub -- добавляет число к регистру
  13. func (sf *AsmReg) Sub(val int32) {
  14. sf.val -= val
  15. }
  16. // Add -- добавляет число к регистру
  17. func (sf *AsmReg) Add(val int32) {
  18. sf.val += val
  19. }
  20. // Dec -- декрементирует регистр
  21. func (sf *AsmReg) Dec() {
  22. sf.val--
  23. }
  24. // Inc -- инкрементирует регистр
  25. func (sf *AsmReg) Inc() {
  26. sf.val++
  27. }
  28. // Set -- устанавливает значение регистра
  29. func (sf *AsmReg) Set(val int32) {
  30. sf.val = val
  31. }
  32. // Get -- возвращает хранимое значение регистра
  33. func (sf *AsmReg) Get() int32 {
  34. return sf.val
  35. }
  36. // TestGet -- возвращает результат теста
  37. func (sf *AsmReg) TestGet() bool {
  38. return sf.isTest
  39. }
  40. // TestSet -- устанавливает результат теста
  41. func (sf *AsmReg) TestSet() {
  42. sf.isTest = true
  43. }
  44. // TestReset -- сбрасывает результат теста
  45. func (sf *AsmReg) TestReset() {
  46. sf.isTest = false
  47. }