не - там же быстрый подскок к нужному слову - шаг ровно 4 байта (т.е. 4-буквенные слова не имеют между собой пробела) - если делать аля бейсик, то придётся перебором искать, а это долгоb2m wrote:Усложнится код. Достаточно использовать для конца строки старший бит последнего символа (вместо пробела), уже 89 байт сэкономим.Shaos wrote:Можно попробовать 135 байт сэкономить, храня слова по 5 бит на букву
Дизассемблер Yozh
Moderator: Shaos
-
- Admin
- Posts: 24067
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Дизассемблер Yozh
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Devil
- Posts: 907
- Joined: 26 May 2003 06:57
Re: Дизассемблер Yozh
Ну хорошо, отсортировать мнемоники по длине, сделать 4 (или 3, если не отделять условия) отдельные таблицы. Всё равно номер мнемоники задан произвольно, а так будет 4 диапазона.Shaos wrote:там же быстрый подскок к нужному слову
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
http://bashkiria-2m.narod.ru/
-
- Admin
- Posts: 24067
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Дизассемблер Yozh
Это придётся 3 разных алгоритма кодить на вытаскивание слова - с одним алгоритмом оно наверное меньше будет...
Кстати 4-й букве не надо 5 бит т.к. таких букв только 9!плюс 10-й вариант - нет четвёртой буквы (пробел) т.е. эту букву можно закодить 4 битами вместо 5 (но потребуется специальная функция, которая будет эту букву печатать), а в оставшихся 24-5*3-4=5 битах надо попробовать закодировать объяснялки...
Кстати 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
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 24067
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Дизассемблер Yozh
Ну у них названия разные - если добавлять код, который будет по месту коверкать мнемонику, то код раздуется...b2m wrote:Условия NZ,Z,NC,... тоже можно как параметр команды сделать, уменьшится количество опкодов на 21. С учётом всех таблиц примерно 180 байт. Кода добавится немного.
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Doomed
- Posts: 355
- Joined: 14 Oct 2019 18:10
- Location: Tashkent
Re: Дизассемблер Yozh
Кстати, у меня мнемоники хранились в трёх байтах - 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
-
- Fanat
- Posts: 88
- Joined: 21 Feb 2017 06:54
- Location: Казань
Re: Дизассемблер Yozh
Ого, сколько написали. Почитал про ваши планы и сразу вспомнил как я упаковывал слова для экономии байтов. Так как 3 символьных мнемоник больше всех :
все используемые буквы в старших 4 битах имеют только 2 значения 4Х и 5Х, то можно вычесть из кода каждого символа 40 , а младшие 3 полубайты уложить в 2 байта, а единицы получаемые при вычитании прибавить в 3 старших бита соответственно каждому символу.
Пример: команда MOV, коды символов 4D 4F 56 - получаем 2D F6 - и програмно дешифрируем обратно
2 символьные таким же образом упаковывал по 2 слова в 1 байт, а ещё один байт с единицами в старшей тетраде по такому же принципу,
4 символьные в 2 байта + 1 байт с единицами в старшей тетраде.
то есть получалось экономить по 1 байту на каждое слово. Всего 62 байта .
про них и напишу.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 байта .
-
- Senior
- Posts: 181
- Joined: 17 Jun 2014 04:29
- Location: 93.80.157.217
Re: Дизассемблер Yozh
поморщил черепушку, удалось сократить размер кода до 1109 байт.
на этом наши полномочия всё.
на этом наши полномочия всё.
You do not have the required permissions to view the files attached to this post.
-
- Senior
- Posts: 181
- Joined: 17 Jun 2014 04:29
- Location: 93.80.157.217
Re: Дизассемблер Yozh
удалось ещё немного скинуть, теперь код весит 1084 байт
You do not have the required permissions to view the files attached to this post.
-
- Admin
- Posts: 24067
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
-
- Senior
- Posts: 181
- Joined: 17 Jun 2014 04:29
- Location: 93.80.157.217
Re: Дизассемблер Yozh
если убрать пробелы после запятой в операндах, то можно ещё 12 байт скинуть
-
- Admin
- Posts: 24067
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Дизассемблер Yozh
Ещё 48 байт где-то найти и будет килобайт 

Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Senior
- Posts: 181
- Joined: 17 Jun 2014 04:29
- Location: 93.80.157.217
Re: Дизассемблер Yozh
1042 байта
You do not have the required permissions to view the files attached to this post.
-
- Admin
- Posts: 24067
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
-
- Senior
- Posts: 181
- Joined: 17 Jun 2014 04:29
- Location: 93.80.157.217
Re: Дизассемблер Yozh
подсократил там, поменял сям -- удалось добиться 1031 байта.
но чтобы прога работала необходимо выполнить одно условие -- строка disassm_reg8_8085 не должна пересекать границу 256 байт.
прикольно... это ровно на 200 байт короче первоначального варианта
но чтобы прога работала необходимо выполнить одно условие -- строка disassm_reg8_8085 не должна пересекать границу 256 байт.
прикольно... это ровно на 200 байт короче первоначального варианта
-
- Fanat
- Posts: 88
- Joined: 21 Feb 2017 06:54
- Location: Казань
Re: Дизассемблер Yozh
Надо бы ещё сделать, что бы можно было компилировать на RK86.ru
у меня что то не получается, ругается на макросы и много другого. Или может bin файл выложите?
Может обьявить конкурс на программу Дизассемблер для Радио 86 РК - программистов здесь много, будет чем заняться, что пообсуждать ?
я тоже буду учавствовать.
у меня что то не получается, ругается на макросы и много другого. Или может bin файл выложите?
Может обьявить конкурс на программу Дизассемблер для Радио 86 РК - программистов здесь много, будет чем заняться, что пообсуждать ?
я тоже буду учавствовать.