Кресты / Говнокод #27404 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
INTERRUPT_TABLE section:
00> FF FF | . .
02> 9F 00 | . .

DATA section:
32> 48 65 6C 6C 6F 20 77 6F | Hello.wo
3A> 72 6C 64 21 00 00 00 00 | rld . . . . .
42> 00 00 00 00 00 00 00 00 | . . . . . . . .
4A> 00 00 00 00 00 00 00 00 | . . . . . . . .

_START section:
8F> 9B 00 32 00  PUSH 32
93> 18 00 00 00      INT 0
97> 18 00 01 00      INT 1
9B> 94 40 01 00    ADD %B       1

EXIT interrupt:
9F> 81 40 16 E8   MOV %B       E816
A3> 20 00 00 00     RET


RUNFLOW:
8F> 9B 00 32 00  PUSH 32
93> 18 00 00 00      INT 0          DEBUG OUTPUT: Hello world!
97> 18 00 01 00      INT 1
9F> 81 40 16 E8   MOV %B       E816
A3> 20 00 00 00     RET
9B> 94 40 01 00    ADD %B       1
HALT SEQUENCE REACHED: 0xE817

Закодил свою виртуальную машину и ассемблер под неё.
Заспидранил Hello world за неделю.
https://pastebin.com/NmLEuGMU

Запостил: digitalEugene digitalEugene, (Updated )

Комментарии (11) RSS

  • > INT 0 DEBUG OUTPUT: Hello world!
    > 00> FF FF

    Фейковое прерывание, которое пишет в лог? Ну что за читерство... А как же высирание в сериал порт по байтику?
    Ответить
    • что мешает сделать это в обработчике прерывания, которое он туда любезно загрузил?
      В 21h тоже было овердохуя высокоуровневой хуиты, может он уже DOS для своей машины написал?
      Ответить
      • > В 21h тоже было овердохуя высокоуровневой хуиты

        Но она была реализована через низкоуровневую хуиту, а не захардкожена в процессор...
        Ответить
      • Ну сделать какой-нибудь IO или MMIO порт, в который можно срать байтами. А в прерывании честно реализовать вывод в него.
        Ответить

Добавить комментарий

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8