hello.M1 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. ## Copyright (C) 2017 Jeremiah Orians
  2. ## This file is part of mescc-tools.
  3. ##
  4. ## mescc-tools is free software: you can redistribute it and/or modify
  5. ## it under the terms of the GNU General Public License as published by
  6. ## the Free Software Foundation, either version 3 of the License, or
  7. ## (at your option) any later version.
  8. ##
  9. ## mescc-tools is distributed in the hope that it will be useful,
  10. ## but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. ## GNU General Public License for more details.
  13. ##
  14. ## You should have received a copy of the GNU General Public License
  15. ## along with mescc-tools. If not, see <http://www.gnu.org/licenses/>.
  16. DEFINE CMPDI_R0 202C
  17. DEFINE NULL 00000000
  18. DEFINE BF 48
  19. DEFINE BB 4B
  20. DEFINE BNE 8240
  21. DEFINE BEQ 8241
  22. DEFINE LI_R0 0038
  23. DEFINE LI_R3 6038
  24. DEFINE LI_R5 A038
  25. DEFINE LWZ_R4 8480
  26. DEFINE SC 02000044
  27. DEFINE MFLR_R4 A602887C
  28. :_start
  29. @1 CMPDI_R0 # cmpdi r0,1
  30. ^@overrr BNE # blne overrr
  31. :backkk
  32. @1 CMPDI_R0 # cmpdi r0,1
  33. @overr BNE # bne overr
  34. :backk
  35. ~over BF # bl over
  36. :back
  37. @4 LI_R0 # li r0, 4
  38. @1 LI_R3 # li r3, 1
  39. ^~after BF # bl 0x8
  40. &msg # Address of Message
  41. NULL # garbage
  42. NULL # garbage
  43. :after
  44. MFLR_R4 # mflr r4
  45. @0 LWZ_R4 # lwz r4, 0(r4)
  46. @15 LI_R5 # li r5, 15
  47. SC # sc
  48. @1 LI_R0 # li r0, 1
  49. @42 LI_R3 # li r3, 0x2a
  50. SC # sc
  51. :over
  52. ~back BB # bl back
  53. :overr
  54. @0 CMPDI_R0 # cmpdi r0,0
  55. @backk BEQ # beq backk
  56. :overrr
  57. @0 CMPDI_R0 # cmpdi r0,0
  58. ^@backkk BEQ # beq backk
  59. :msg
  60. "Hello World!!!
  61. "
  62. :ELF_end