nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Apr 2024 11:10



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

Joined: 08 Jan 2003 23:22
Posts: 22616
Location: Silicon Valley
Reply with quote
b2m wrote:
Shaos wrote:
Можно попробовать 135 байт сэкономить, храня слова по 5 бит на букву

Усложнится код. Достаточно использовать для конца строки старший бит последнего символа (вместо пробела), уже 89 байт сэкономим.
не - там же быстрый подскок к нужному слову - шаг ровно 4 байта (т.е. 4-буквенные слова не имеют между собой пробела) - если делать аля бейсик, то придётся перебором искать, а это долго

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


08 Feb 2024 01:06
Profile WWW
Devil

Joined: 26 May 2003 06:57
Posts: 864
Reply with quote
Shaos wrote:
там же быстрый подскок к нужному слову

Ну хорошо, отсортировать мнемоники по длине, сделать 4 (или 3, если не отделять условия) отдельные таблицы. Всё равно номер мнемоники задан произвольно, а так будет 4 диапазона.

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


08 Feb 2024 01:23
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22616
Location: Silicon Valley
Reply with quote
Это придётся 3 разных алгоритма кодить на вытаскивание слова - с одним алгоритмом оно наверное меньше будет...

Кстати 4-й букве не надо 5 бит т.к. таких букв только 9!
Code:
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 битах надо попробовать закодировать объяснялки...

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


08 Feb 2024 01:57
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22616
Location: Silicon Valley
Reply with quote
b2m wrote:
Условия NZ,Z,NC,... тоже можно как параметр команды сделать, уменьшится количество опкодов на 21. С учётом всех таблиц примерно 180 байт. Кода добавится немного.

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

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


08 Feb 2024 02:34
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 324
Location: Tashkent
Reply with quote
Кстати, у меня мнемоники хранились в трёх байтах - 24 бита достаточно для 4-х символов по 5 бит в регистрах A/H/L. На четыре символа по 5 бит - 20 бит и ещё 4 бита на флаги опций мнемоники.
Code:
;;;;;;;;;;;;;;;;;;;;;;;;;
;       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


08 Feb 2024 03:04
Profile WWW
Fanat

Joined: 21 Feb 2017 06:54
Posts: 79
Location: Казань
Reply with quote
Ого, сколько написали. Почитал про ваши планы и сразу вспомнил как я упаковывал слова для экономии байтов. Так как 3 символьных мнемоник больше всех :
Quote:
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 байта .


08 Feb 2024 03:16
Profile
Senior
User avatar

Joined: 17 Jun 2014 04:29
Posts: 138
Location: 93.80.157.217
Reply with quote
поморщил черепушку, удалось сократить размер кода до 1109 байт.
на этом наши полномочия всё.


Attachments:
disassm.v1.1.zip [3.42 KiB]
Downloaded 23 times

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

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


Attachments:
disassm.v1.2.zip [3.39 KiB]
Downloaded 21 times

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

Joined: 08 Jan 2003 23:22
Posts: 22616
Location: Silicon Valley
Reply with quote
Ну силён :o

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


08 Feb 2024 09:54
Profile WWW
Senior
User avatar

Joined: 17 Jun 2014 04:29
Posts: 138
Location: 93.80.157.217
Reply with quote
если убрать пробелы после запятой в операндах, то можно ещё 12 байт скинуть

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


08 Feb 2024 11:36
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22616
Location: Silicon Valley
Reply with quote
Ещё 48 байт где-то найти и будет килобайт ;)

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


08 Feb 2024 11:50
Profile WWW
Senior
User avatar

Joined: 17 Jun 2014 04:29
Posts: 138
Location: 93.80.157.217
Reply with quote
1042 байта


Attachments:
disassm.v1.3.zip [3.35 KiB]
Downloaded 20 times

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

Joined: 08 Jan 2003 23:22
Posts: 22616
Location: Silicon Valley
Reply with quote
Ух ты

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


08 Feb 2024 12:16
Profile WWW
Senior
User avatar

Joined: 17 Jun 2014 04:29
Posts: 138
Location: 93.80.157.217
Reply with quote
подсократил там, поменял сям -- удалось добиться 1031 байта.
но чтобы прога работала необходимо выполнить одно условие -- строка disassm_reg8_8085 не должна пересекать границу 256 байт.

прикольно... это ровно на 200 байт короче первоначального варианта

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


08 Feb 2024 13:03
Profile WWW
Fanat

Joined: 21 Feb 2017 06:54
Posts: 79
Location: Казань
Reply with quote
Надо бы ещё сделать, что бы можно было компилировать на RK86.ru
у меня что то не получается, ругается на макросы и много другого. Или может bin файл выложите?

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

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


08 Feb 2024 13:20
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 165 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6 ... 11  Next

Who is online

Users browsing this forum: No registered users and 76 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.