1. C++ / Говнокод #27404

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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, 08 Мая 2021

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

    • пробелы блять
      Ответить
    • Выглядит озуеть как круто
      Ответить
    • > INT 0 DEBUG OUTPUT: Hello world!
      > 00> FF FF

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

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

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