Дизассемблер Yozh

Советский компьютер Радио-86РК (1986) и его клоны

Moderator: Shaos

User avatar
Shaos
Admin
Posts: 24067
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Дизассемблер Yozh

Post by Shaos »

b2m wrote:
Shaos wrote:Можно попробовать 135 байт сэкономить, храня слова по 5 бит на букву
Усложнится код. Достаточно использовать для конца строки старший бит последнего символа (вместо пробела), уже 89 байт сэкономим.
не - там же быстрый подскок к нужному слову - шаг ровно 4 байта (т.е. 4-буквенные слова не имеют между собой пробела) - если делать аля бейсик, то придётся перебором искать, а это долго
Я тут за главного - если что шлите мыло на me собака shaos точка net
b2m
Devil
Posts: 907
Joined: 26 May 2003 06:57

Re: Дизассемблер Yozh

Post by b2m »

Shaos wrote:там же быстрый подскок к нужному слову
Ну хорошо, отсортировать мнемоники по длине, сделать 4 (или 3, если не отделять условия) отдельные таблицы. Всё равно номер мнемоники задан произвольно, а так будет 4 диапазона.
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
User avatar
Shaos
Admin
Posts: 24067
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Дизассемблер Yozh

Post by Shaos »

Это придётся 3 разных алгоритма кодить на вытаскивание слова - с одним алгоритмом оно наверное меньше будет...

Кстати 4-й букве не надо 5 бит т.к. таких букв только 9!

Code: Select all

4th letter:
      X -> 02,12,0A,1A,D9,ED
      L -> F9,E3,E9,CD,10
      H -> C5,D5,E5,F5
      I -> 28,38
      D -> 22,2A
      V -> CB
      G -> EB
      E -> 18
      B -> 08
плюс 10-й вариант - нет четвёртой буквы (пробел) т.е. эту букву можно закодить 4 битами вместо 5 (но потребуется специальная функция, которая будет эту букву печатать), а в оставшихся 24-5*3-4=5 битах надо попробовать закодировать объяснялки...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24067
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Дизассемблер Yozh

Post by Shaos »

b2m wrote:Условия NZ,Z,NC,... тоже можно как параметр команды сделать, уменьшится количество опкодов на 21. С учётом всех таблиц примерно 180 байт. Кода добавится немного.
Ну у них названия разные - если добавлять код, который будет по месту коверкать мнемонику, то код раздуется...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Alikberov
Doomed
Posts: 355
Joined: 14 Oct 2019 18:10
Location: Tashkent

Re: Дизассемблер Yozh

Post by Alikberov »

Кстати, у меня мнемоники хранились в трёх байтах - 24 бита достаточно для 4-х символов по 5 бит в регистрах A/H/L. На четыре символа по 5 бит - 20 бит и ещё 4 бита на флаги опций мнемоники.

Code: Select all

;;;;;;;;;;;;;;;;;;;;;;;;;
;       AHL - Сжатое имя токена/мнемоники
;;;;;;;;;;;;;;;;;;;;;;;;;
MOUT:   PUSH    PSW     ; Сохраняем для анализа опций
MOUT@1: DAD     H
        ADC     A
        ANI     01FH
        JZ      MOUT@2
        ORI     040H
        MOV     C,A
        CALL    OF809H
        DAD     H
        ADC     A
        DAD     H
        ADC     A
        DAD     H
        ADC     A
        DAD     H
        ADC     A
        JMP     MOUT@1
MOUT@2: POP     PSW     ; Анализируем опциональные флаги
        ...
        RET
Damir
Fanat
Posts: 88
Joined: 21 Feb 2017 06:54
Location: Казань

Re: Дизассемблер Yozh

Post by Damir »

Ого, сколько написали. Почитал про ваши планы и сразу вспомнил как я упаковывал слова для экономии байтов. Так как 3 символьных мнемоник больше всех :
3 = 46 шт.
NOP, HLT, ADD, ADC, ANA, ADI, ACI, ANI, CPI, CMP, CNZ, CNC, CPO, CPE, INR, INX,
DAD, DCX, DCR, MOV, MVI, ORA, OUT, JNZ, JMP, JNC, JPO, JPE, LXI, LDA, ORI, POP,
RLC, RNZ, RST, RET, RNC, RPO, RPE, STA, SUB, SBB, SUI, SBI, XRA, XRI,

2 = 15 шт.
EI, CM, CZ, CC, DI, CP, IN, JZ, JC, JP, JM, RZ, RC, RP, RM,

4 = 9 шт.
LDAX, LHLD, PUSH, PCHL, STAX, SHLD, SPHL, XTHL, XCHG
про них и напишу.
все используемые буквы в старших 4 битах имеют только 2 значения 4Х и 5Х, то можно вычесть из кода каждого символа 40 , а младшие 3 полубайты уложить в 2 байта, а единицы получаемые при вычитании прибавить в 3 старших бита соответственно каждому символу.
Пример: команда MOV, коды символов 4D 4F 56 - получаем 2D F6 - и програмно дешифрируем обратно

2 символьные таким же образом упаковывал по 2 слова в 1 байт, а ещё один байт с единицами в старшей тетраде по такому же принципу,

4 символьные в 2 байта + 1 байт с единицами в старшей тетраде.

то есть получалось экономить по 1 байту на каждое слово. Всего 62 байта .
User avatar
vital72
Senior
Posts: 181
Joined: 17 Jun 2014 04:29
Location: 93.80.157.217

Re: Дизассемблер Yozh

Post by vital72 »

поморщил черепушку, удалось сократить размер кода до 1109 байт.
на этом наши полномочия всё.
You do not have the required permissions to view the files attached to this post.
https://radio-86rk.ru
кто я такой, чтобы спорить с самим собой
User avatar
vital72
Senior
Posts: 181
Joined: 17 Jun 2014 04:29
Location: 93.80.157.217

Re: Дизассемблер Yozh

Post by vital72 »

удалось ещё немного скинуть, теперь код весит 1084 байт
You do not have the required permissions to view the files attached to this post.
https://radio-86rk.ru
кто я такой, чтобы спорить с самим собой
User avatar
Shaos
Admin
Posts: 24067
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Дизассемблер Yozh

Post by Shaos »

Ну силён :o
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
vital72
Senior
Posts: 181
Joined: 17 Jun 2014 04:29
Location: 93.80.157.217

Re: Дизассемблер Yozh

Post by vital72 »

если убрать пробелы после запятой в операндах, то можно ещё 12 байт скинуть
https://radio-86rk.ru
кто я такой, чтобы спорить с самим собой
User avatar
Shaos
Admin
Posts: 24067
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Дизассемблер Yozh

Post by Shaos »

Ещё 48 байт где-то найти и будет килобайт ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
vital72
Senior
Posts: 181
Joined: 17 Jun 2014 04:29
Location: 93.80.157.217

Re: Дизассемблер Yozh

Post by vital72 »

1042 байта
You do not have the required permissions to view the files attached to this post.
https://radio-86rk.ru
кто я такой, чтобы спорить с самим собой
User avatar
Shaos
Admin
Posts: 24067
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Дизассемблер Yozh

Post by Shaos »

Ух ты
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
vital72
Senior
Posts: 181
Joined: 17 Jun 2014 04:29
Location: 93.80.157.217

Re: Дизассемблер Yozh

Post by vital72 »

подсократил там, поменял сям -- удалось добиться 1031 байта.
но чтобы прога работала необходимо выполнить одно условие -- строка disassm_reg8_8085 не должна пересекать границу 256 байт.

прикольно... это ровно на 200 байт короче первоначального варианта
https://radio-86rk.ru
кто я такой, чтобы спорить с самим собой
Damir
Fanat
Posts: 88
Joined: 21 Feb 2017 06:54
Location: Казань

Re: Дизассемблер Yozh

Post by Damir »

Надо бы ещё сделать, что бы можно было компилировать на RK86.ru
у меня что то не получается, ругается на макросы и много другого. Или может bin файл выложите?

Может обьявить конкурс на программу Дизассемблер для Радио 86 РК - программистов здесь много, будет чем заняться, что пообсуждать ?

я тоже буду учавствовать.