asmasm_linux.asm 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. ;; This file is part of asmc, a bootstrapping OS with minimal seed
  2. ;; Copyright (C) 2018 Giovanni Mascellani <gio@debian.org>
  3. ;; https://gitlab.com/giomasce/asmc
  4. ;; This program 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. ;; This program is distributed in the hope that it will be useful,
  9. ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. ;; GNU General Public License for more details.
  12. ;; You should have received a copy of the GNU General Public License
  13. ;; along with this program. If not, see <https://www.gnu.org/licenses/>.
  14. extern platform_panic
  15. extern platform_exit
  16. extern platform_open_file
  17. extern platform_reset_file
  18. extern platform_read_char
  19. extern platform_write_char
  20. extern platform_log
  21. extern platform_allocate
  22. section .data
  23. global main
  24. main:
  25. ;; Init everything
  26. call init_symbols
  27. call init_assembler
  28. ;; Open input file
  29. mov eax, [esp+8]
  30. add eax, 4
  31. mov eax, [eax]
  32. push eax
  33. call platform_open_file
  34. add esp, 4
  35. ;; Call assemble
  36. push 0x100000
  37. push 1
  38. push eax
  39. call assemble
  40. add esp, 12
  41. mov eax, 0
  42. ret