LINUX.ORG.RU

[C\C++]]Дизассемблер


0

1

Всем привет. Тут недавно интересовался про моделирование МП, вот собственно и ссылка на тему.

Теперь, возник вопрос. Вывод в мнемокоде нужен будет, чтобы посмотреть код, находящийся в эмулируемой памяти. Для вывода нужно будет написать простейший дизассемблер.

Подскажите литературу про дизассемблер. Где? Как он пишется? А еще скиньте толковой литературы по мнемокоду, оп коду и операндах..

Буду устраивать трешь своему мозгу....

Я с этим курсачем сума сойду))

★★★★★

Криса Касперски почитай. Зашибенный дядька, я по его книгам и статьям когда-то тоже пытался писать дизасм, зеленость подвела. В любом случае, получишь эстетическое удовольствие от прочтения =)

jessey ()
Ответ на: комментарий от jessey

эстетическое удовольствие

мне курсач написать бы, препод тупой как полено, нихера не знает... сижу вот сам все ковыряю :(

Licwin ★★★★★ ()
Ответ на: комментарий от jessey

а за Криса Касперски спасибо, обязательно прочту :)

Licwin ★★★★★ ()

Для вывода нужно будет написать простейший дизассемблер.

Подскажите литературу про дизассемблер. Где? Как он пишется? А еще скиньте толковой литературы по мнемокоду, оп коду и операндах.

Так по твоей же ссылке и есть перечень мнемокодов/опкодов этого самого i8080/КР580ВМ80/КР580ИК80: http://www.computer-museum.ru/technlgy/i8080.php

Если тебе нужен дизассемблер только в рамках эмулятора, то там же вообще всё просто. Допустим, твой процессор стоит на опкоде 7C. По таблице расшифровываем, что это MOV A,H. Если же опкод 01, то начало мнемокоманды будет LXI B,... Инструкция требует ещё 2 байта данных, поэтому берём их из следующих за ней ячеек и дописываем в конце мнемокоманды.

Насколько я понял, расстановка меток перехода не требуется и достаточно писать, например, CALL F8F0H?

static_lab ★★★★★ ()
Ответ на: комментарий от static_lab

Мне нужно было в отладчик вставить, выдернул из GDB кусок кода минут за 30 и оно сразу как-то заработало.

anonymous ()

Если команды фиксированной длины, то он легко пишется. Если там такой ад, как в x86 — лучше не писать вообще.

buddhist ★★★★★ ()
Ответ на: комментарий от jessey

Сведения у него собраны хорошие и сам он умный в этом плане мужик, но книги писать и систематизировать материал он не умеет.

buddhist ★★★★★ ()
Ответ на: комментарий от static_lab

Насколько я понял, расстановка меток перехода не требуется и достаточно писать, например, CALL F8F0H?

Ну наверно получается да. Не требует... У препода спросил, он сказал, что не знает)

Licwin ★★★★★ ()

Напиши свой компилятор и свой дизасм. Я так делал на втором курсе на питоне. 8-битный простейший компилятор, отладчик + дизасм.

bk_ ★★ ()

Крис Касперски. Образ Мыщления IDA. ну и до кучи еще куча его книг, простите за каламбур. Если бы основательно засел за эти книги в свое время... Все уперлось в знание матана.

Andersen ★★ ()
Ответ на: комментарий от Andersen

я вот думаю реально ли это все выучить и написать за 2 недели??

Licwin ★★★★★ ()
Ответ на: комментарий от Andersen

Все уперлось в знание матана.

Так нет же в книгах Касперски матана, откуда бы?

AptGet ★★★ ()

У i8080, ЕМНИП, все команды определяются по первому байту, а второй и третий - это всегда операнды или адреса. Т.е. задача определения мнемокода решается банальнейшим switch.

blexey ★★★★ ()
Ответ на: комментарий от Licwin

Для простоты понимания кодировки команд i8080 нарисуй табличку 16×16 и выпиши в каждую клетку соотв. мнемокод, тремя цветами обозначая длину команды. Самая большая группа клеток будет занята однобайтовыми командами MOV с комбинациями регистров.

blexey ★★★★ ()
Ответ на: комментарий от AptGet

матан появляется при обходе распаковщиков/шифраторов.

Andersen ★★ ()
Ответ на: комментарий от Licwin

если ты это сделаешь за 2 недели, то потом будешь дизассемблировать в уме

Andersen ★★ ()
Ответ на: комментарий от Licwin

крутой у вас курсач!

Эх, а у нас не только «полено», но и задачи такие, которые даже выразить и донести сложно. Свой курсач так и не начал даже делать...тоже бы надо засесть.

А по теме двух недель...поставь себе жестки рамки: по 4 часа каждый день уделять этому время, тогда вероятно успеешь.

/* лучше брать задания попроще */

muteki_okami ()
Ответ на: крутой у вас курсач! от muteki_okami

лучше брать задания попроще

я не выбирал курсач, нам выдали темы по номеру в журнале :)

Licwin ★★★★★ ()
Ответ на: лучше брать задания попроще от Licwin

Мда уж

Желаю успехов в этом деле. Кто знает, может твой курсач и вырастит потом в Open Source проект, который будет включен в стандартную поставку Debian =)

muteki_okami ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.