nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 27 Apr 2024 01:58



Reply to topic  [ 165 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6, 7, 8 ... 11  Next
Дизассемблер Yozh 
Author Message
Senior
User avatar

Joined: 17 Jun 2014 04:29
Posts: 138
Location: 93.80.157.217
Reply with quote
975


Attachments:
disassm.v1.7.zip [3.75 KiB]
Downloaded 22 times

_________________
https://radio-86rk.ru
кто я такой, чтобы спорить с самим собой
09 Feb 2024 12:13
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22597
Location: Silicon Valley
Reply with quote
да - теперь совсем-совсем предел :surprised:

_________________
:dj: https://mastodon.social/@Shaos


09 Feb 2024 21:41
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 318
Location: Tashkent
Reply with quote
Внесу и свою лепту в это творчество! :no:
Уместил в 926 (только i8080) байтов, но имеются недоработки (за сутки это просто так не отладишь) - нужно более тщательнее всё писать/отлаживать (вылетать перестал - уже хорошо!).
(Вообще-то, особого настроения нет - сложно всё это, да и ваш код не переплюнуть. :roll: )


Attachments:
DISASM-A.RKR.zip [890 Bytes]
Downloaded 19 times
10 Feb 2024 09:15
Profile WWW
Senior
User avatar

Joined: 17 Jun 2014 04:29
Posts: 138
Location: 93.80.157.217
Reply with quote
... и тут подумалось ...
половину таблицы disassm_table_8085 занимают команды MOV, OR, ANA и т.д. а в тоже время, все данные уже находятся в коде команды. если сделать отдельный обработчик для этих команд, то таблицу disassm_table_8085 можно уполовинить, а это АЖ 256 байт!

_________________
https://radio-86rk.ru
кто я такой, чтобы спорить с самим собой


10 Feb 2024 09:57
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22597
Location: Silicon Valley
Reply with quote
vital72 wrote:
... и тут подумалось ...
половину таблицы disassm_table_8085 занимают команды MOV, OR, ANA и т.д. а в тоже время, все данные уже находятся в коде команды. если сделать отдельный обработчик для этих команд, то таблицу disassm_table_8085 можно уполовинить, а это АЖ 256 байт!

Ну это же сдвинутая половина и потом там есть исключение - HLT (MOV M,M), а в-принципе, наверное можно процедурно эту часть таблицы заполучить - типа разбить таблицу на четверти, первая и четвёртая четверти будут храниться и обрабатываться как сейчас, а вторая и третья - процедурно :roll:

типа:
Code:
;  =============================================================================
;  ДИЗАССЕМБЛИРОВАНИЕ БЛОКА КОДА  ______________________________________________
;  вход:  HL - начальный адрес блока
;         DE - конечный адрес блока

disassm:
        inx     d
        call    CMP_DE_HL
        jnc     MONITOR_PROMPT
        push    d
        push    h               ;  addr of first byte
        lxi     d, disassm_out
        push    d
        mov     e, m
        mvi     d, 0
        inx     h
        push    h
; vvvvvvvvvv
        mov a,e
        cpi 40h
        jc old
        cpi 0C0h
        jnc old
        ; procedural
        ...
        jmp DALEE
; ^^^^^^^^^^
old:    lxi     h, disassm_table_8085
        dad     d
        dad     d
...
А внутри таблицы (на месте второй и третьей четверти) положить другие таблички и код, чтобы забить место :lol:

Ну или просто на четверти разбить и иметь четыре таблички - с адресами хранимыми в массиве из 4 слов (просто второй и третий адреса будут по другому использоваться)...

_________________
:dj: https://mastodon.social/@Shaos


10 Feb 2024 11:23
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22597
Location: Silicon Valley
Reply with quote
Alikberov wrote:
Внесу и свою лепту в это творчество! :no:
Уместил в 926 (только i8080) байтов, но имеются недоработки (за сутки это просто так не отладишь) - нужно более тщательнее всё писать/отлаживать (вылетать перестал - уже хорошо!).
(Вообще-то, особого настроения нет - сложно всё это, да и ваш код не переплюнуть. :roll: )

Я хочу CI/CD нахлобучить на гитлаб-репу (когда выложу заточенную под pdp11asm85 версию), чтобы оно при каждом коммите собирало и прогоняло тесты (для этого надо дописать мой текстовый эмулятор рк), чтобы удостовериться, что ничего не сломалось в обновляемой версии...

_________________
:dj: https://mastodon.social/@Shaos


10 Feb 2024 11:25
Profile WWW
Senior
User avatar

Joined: 17 Jun 2014 04:29
Posts: 138
Location: 93.80.157.217
Reply with quote
766 байт
... и жопой чую, что это не пердел.


Attachments:
disassm.v1.8.zip [3.44 KiB]
Downloaded 19 times

_________________
https://radio-86rk.ru
кто я такой, чтобы спорить с самим собой
10 Feb 2024 12:32
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22597
Location: Silicon Valley
Reply with quote
:o

_________________
:dj: https://mastodon.social/@Shaos


10 Feb 2024 12:53
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 318
Location: Tashkent
Reply with quote
Кстати, попытался избавиться от таблицы - дороговато!
 "Подсчёт длины инструкции"
Code:
;;;;;;;;;;;;;;;;;;;;;;;;;
;;;INSTRUCTION LENGTH ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;
; A     INSTRUCTION CODE;
;;;;;;;;;;;;;;;;;;;;;;;;;
; C     INSTRUCTION SIZE;
;;;;;;;;;;;;;;;;;;;;;;;;;
; SIZE: 74 BYTES        ;
;;;;;;;;;;;;;;;;;;;;;;;;;
LEN:    MVI     C,001H  ; Или 31h для F809 проверки
        SUI     040H
        RP
        XRI     046H
        MOV     B,A
        INR     C
        ANI     007H
        RZ
        INR     C
        ORA     B
        CPI     0A0H
        JC      LEN@1
        ANI     007H
        CPI     004H
        RZ
        ORA     B
LEN@1:  CPI     0C0H
        JNC     LEN@2
        ANI     00FH
        CPI     007H
        RZ
        DCR     C
        DCR     C
        RET
LEN@2:  ANI     00FH
        CPI     002H
        RZ
        CPI     00AH
        RZ
        CPI     00BH
        RZ
        ANI     007H
        CPI     005H
        JZ      LEN@4
LEN@3:  DCR     C
        DCR     C
        RET
LEN@4:  ORA     B
        CPI     0C0H
        JC      LEN@3
        CPI     0D0H
        RC
        DCR     C
        CPI     0E0H
        RC
        DCR     C
        RET
Таблицей - компактнее и гибче:
 "Используя таблицу"
Code:
LEN:    MVI     L,001H
        SUI     0C0H
        RM
        PUSH    PSW
        RRC
        RRC
        ANI     01FH
        ADI     LEN@TB
        MOV     L,A
        MVI     A,LEN@TB>>8
        ACI     000H
        MOV     H,A
        MOV     L,M
        POP     PSW
        ORI     0FCH
LEN@1:  DAD     H
        DAD     H
        INR     A
        JM      LEN@1
        MOV     A,H
        ANI     003H
        MOV     L,A
        RET

LEN@TB: DB      0F5H,067H,035H,06FH     ; C0-CF
        DB      0B5H,067H,0B1H,063H     ; D0-DF
        DB      075H,067H,075H,063H     ; E0-EF
        DB      075H,067H,075H,063H     ; F0-FF
        DB      05DH,065H,054H,065H     ; 00-0F
        DB      05CH,065H,054H,065H     ; 10-1F
        DB      07CH,065H,074H,065H     ; 20-2F
        DB      07CH,065H,074H,065H     ; 30-3F


Last edited by Alikberov on 11 Feb 2024 15:25, edited 1 time in total.



10 Feb 2024 13:27
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 318
Location: Tashkent
Reply with quote
На данный момент - 938 байт (все инструкции i8080) с адреса 0038 по 03E2.

В качестве демонстрации код использует служебные ячейки Журнального Монитора для трюкового запуска директивой «G,<начало>,<конец>» для дизассемблирования любого фрагмента памяти…
Прерывание - по F4/УС+C.

Внимание!
Параметр «<начало>» нельзя указывать ниже 0010 и выше 7600/!\


Attachments:
File comment: Пример использования
disassm-a.png
disassm-a.png [ 6.83 KiB | Viewed 544 times ]
File comment: Универсальный вариант
DISASM-A.RKR.zip [985 Bytes]
Downloaded 14 times
11 Feb 2024 15:24
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22597
Location: Silicon Valley
Reply with quote
А трюкового это как? :)

_________________
:dj: https://mastodon.social/@Shaos


11 Feb 2024 17:37
Profile WWW
Senior
User avatar

Joined: 17 Jun 2014 04:29
Posts: 138
Location: 93.80.157.217
Reply with quote
740 байт.
каждый байт даётся с большим трудом.
для тестов прилагаю откомпилированный файл дизассемблера, код располагается с адреса 7000H и запускатель дизассемблера директивой Монитора "G,<начало>,<конец>" (скоммуниженно у Руслана)


Attachments:
File comment: запускатель дизассма
disassm-launcher.rk.zip [202 Bytes]
Downloaded 18 times
File comment: исполняемый файл
disassm.v1.9.rk.zip [903 Bytes]
Downloaded 18 times
File comment: исходник
disassm.v1.9.asm.zip [3.5 KiB]
Downloaded 19 times

_________________
https://radio-86rk.ru
кто я такой, чтобы спорить с самим собой
11 Feb 2024 18:50
Profile WWW
Senior
User avatar

Joined: 17 Jun 2014 04:29
Posts: 138
Location: 93.80.157.217
Reply with quote
ну и как всегда, сразу же нашёл как ещё два байта срезать

_________________
https://radio-86rk.ru
кто я такой, чтобы спорить с самим собой


11 Feb 2024 19:19
Profile WWW
Senior
User avatar

Joined: 17 Jun 2014 04:29
Posts: 138
Location: 93.80.157.217
Reply with quote
хехе 734


Attachments:
disassm.v1.9.1.zip [3.54 KiB]
Downloaded 18 times

_________________
https://radio-86rk.ru
кто я такой, чтобы спорить с самим собой
12 Feb 2024 03:21
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 318
Location: Tashkent
Reply with quote
Shaos wrote:
А трюкового это как? :)
В данном контексте слово трюк употребляется в том смысле, что до него, на сколько мне известно, никто не додумывался до сих пор. :mrgreen:
Здесь развёрнуто и подробно.
vital72 wrote:
(скоммуниженно у Руслана)
:lol:


Last edited by Alikberov on 12 Feb 2024 07:02, edited 1 time in total.



12 Feb 2024 03:46
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 165 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6, 7, 8 ... 11  Next

Who is online

Users browsing this forum: No registered users and 60 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.