nedoPC.org

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



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

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

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


29 Feb 2024 08:48
Profile WWW
Senior
User avatar

Joined: 14 Oct 2023 06:59
Posts: 139
Reply with quote
vital72 wrote:
дизассемблер выводит мнемонику согласно таблице кодов. эта команда не документирована, о чём говорит подсказка, тем не менее, в железе процессором она исполняется именно так, как написано и, соответственно, следующий код будет выбран тот, который соответствует длине этой недокументированной инструкции, так что тут ещё вопрос, чей дизассемблер кривой.
но если так уж смущают недокументированные инструкции, которые специально помечены, чтобы обратить на себя внимание, то вы всегда можете код по этим адресам пометить как данные и вывод листинга будет приятен вашему глазу.


А где такие сведения о недокументированных командах? Вообще-то меня смущают недокументированные инструкции, с ними одна головная боль.

_________________
uselessretro.blogspot.com


29 Feb 2024 08:55
Profile
Senior
User avatar

Joined: 17 Jun 2014 04:29
Posts: 138
Location: 93.80.157.217
Reply with quote
вообще-то, это не является каким-то секретом, информация легко гуглится.
в журнале Радио 87г. печаталась цветная таблица мнемоник проца 8080, где недокументированные команды были помечены серым цветом.

процессор Z80 имеет большую кучу недокументированных команд для работы с битами, не думаю, что их не использовали, такие полезные вещи не могут остаться без внимания, так что головой боли тут нет.

процессор 8085 имеет 12 дополнительных команд, по сравнению с 8080, но только две из них документированы, а команды эти могут упростить программисту жизнь.

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


Last edited by vital72 on 29 Feb 2024 11:14, edited 1 time in total.



29 Feb 2024 09:04
Profile WWW
Senior
User avatar

Joined: 14 Oct 2023 06:59
Posts: 139
Reply with quote
vital72 wrote:
вообще-то, это не является каким-то секретом, информация легко гуглится.


у меня какое-то невезение с Радио 86рк - мало что находится. В описании опкодов 8080 находил команды с прочерками.

Спасибо за разъяснение, учту.
Quote:
КР580ВМ80А (как и прототип 8080) имеет 12 недокументированных команд. Опкоды #08, #10, #18, #20, #28, #30, #38 являются аналогами операции NOP; опкод #CB является аналогом JMP; опкоды #DD, #ED, #FD являются аналогами CALL; опкод #D9 является аналогом RET.

_________________
uselessretro.blogspot.com


29 Feb 2024 09:12
Profile
Senior
User avatar

Joined: 17 Jun 2014 04:29
Posts: 138
Location: 93.80.157.217
Reply with quote
таблички из ж. Радио


Attachments:
Mnemo8080.pdf [1.34 MiB]
Downloaded 25 times

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

Joined: 14 Oct 2023 06:59
Posts: 139
Reply with quote
дизассемблер REZ с сырками под cp/m:
http://www.retroarchive.org/cpm/cdrom/S ... 00/VOL010/

_________________
uselessretro.blogspot.com


29 Feb 2024 22:56
Profile
Senior
User avatar

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


обнаружился небольшой баг в моём коде дизассма, связанный с проверкой границ блока.
например, если ввести директиву "YF800,FFFF" или "Y1,", то ничего выводиться не будет, хотя директива D с такими параметрами отрабатывает. ошибка связана с нечёткой проверкой границ блока.
простое решение, которое у меня получилось на данный момент -- это:
1. вначале цикла дизассма по метке disassm убрать код
Code:
   inx   d
   call   CMP_DE_HL
   jnc   MONITOR_PROMPT

2. в конце цикла вместо кода
Code:
   jmp   disassm + 1

поместить код
Code:
   dcx   h
   call   CMP_DE_HL
   inx   h
   jc   disassm
   jmp   MONITOR_PROMPT


это решит проблему с параметрами "YF800,FFFF", но по-прежнему не решит "Y1,", т.е. будет необходимо всегда задавать конечный адрес блока.

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


Last edited by vital72 on 01 Mar 2024 06:43, edited 1 time in total.



01 Mar 2024 04:16
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 324
Location: Tashkent
Reply with quote
vital72 wrote:
это решит проблему с параметрами "YF800,FFFF", но по-прежнему не решит "Y1,", т.е. будет необходимо всегда задавать конечный адрес блока.
В своём варианте я тоже с этим сталкивался и решил тупо: Три раза проверяю границы на ZF со сдвигом на единицу. :lol:
Громоздко, но помогло. :idea:


01 Mar 2024 04:23
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
кто я такой, чтобы спорить с самим собой


01 Mar 2024 04:41
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22606
Location: Silicon Valley
Reply with quote
А если просто проверять, что текущий адрес (подготовленный для следующего цикла) переехал через конечный?

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


01 Mar 2024 08:20
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
кто я такой, чтобы спорить с самим собой


01 Mar 2024 10:31
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22606
Location: Silicon Valley
Reply with quote
ну ноль это тоже адрес :)

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


01 Mar 2024 21:58
Profile WWW
Senior
User avatar

Joined: 17 Jun 2014 04:29
Posts: 138
Location: 93.80.157.217
Reply with quote
ну вот когда конечный адрес блока равен нулю, а начальный нет -- ничего выводиться не будет, а если оба по нулям, только одна инструкция выведется. думаю, это приемлемое решение минимумом кода. была проблема, когда конечный адрес был FFFF, сейчас, вроде, я её вылечил, но это не точно :ebiggrin:

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


01 Mar 2024 22:04
Profile WWW
Senior
User avatar

Joined: 17 Jun 2014 04:29
Posts: 138
Location: 93.80.157.217
Reply with quote
ради интереса замерил время, за сколько продизассеблирует дизассемблер всю память 0000-FFFF.
у меня получилось 41 минута.
условия, при которых выполнялась программа, были следующие:
-- частота процессора 3МГц;
-- стандартная авторская подпрограмма вывода текста;
-- сразу после запуска была нажата кнопка, чтобы изменить внутреннее состояние клавиатуры на "есть символ для чтения", это придаёт скорости к выводу.
самое узкое место здесь -- это авторская подпрограмма вывода. мало того, что она сама по себе медленная, так какого-то чёрта в ней ещё делается опрос клавиатуры, убивающий скорость напрочь. по итогу скорее была измерена скорость вывода, чем скорость дизассемблеривания.
на скорость дизассемблеривания влияют команды, которые попадаются по дороге. самые быстрые -- это команды NOP и аналогичные. у меня в памяти были какие то куски кода, нулей было немного, особенно учитывая, что половина памяти -- это адреса портов, там вообще нулей не бывает.
для своего проекта я полностью переписал весь Монитор и моя подпрограмма вывода в разы шустрее авторской.

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


02 Mar 2024 01:41
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22606
Location: Silicon Valley
Reply with quote
Медленновато как-то

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


02 Mar 2024 09:11
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 165 posts ]  Go to page Previous  1 ... 7, 8, 9, 10, 11

Who is online

Users browsing this forum: vital72 and 67 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.