Важная информация

User Tag List

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 20

Тема: IDA Pro

  1. #1
    --- Аватар для Shadow Maker
    Регистрация
    01.03.2005
    Адрес
    Саранск
    Сообщений
    5,824
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    237
    Поблагодарили
    101 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию IDA Pro

    Поделитесь опытом работы. Конечно так-то интуитивно понятно, но непонятно к примеру как сделать dw по метке. Ну то есть вот:

    Код:
    Meshok:   dw 0c000h
              dw 0c100h
    ---
    
    #c000:
    Uho       db 0,12,3
    Вот как в мешке вместо dw 0c000h поставить меткой, то есть заменить dw 0c000h на dw Uho?
    Свирепый агрессивно-депрессивный мордовец!
    Не уверен - не напрягай!

    Не сдавайся. Дыши?

    Virtual TR-DOS

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Guru Аватар для caro
    Регистрация
    14.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,721
    Спасибо Благодарностей отдано 
    16
    Спасибо Благодарностей получено 
    134
    Поблагодарили
    87 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Shadow Maker
    Вот как в мешке вместо dw 0c000h поставить меткой, то есть заменить dw 0c000h на dw Uho?
    Поставь курсор на 0с000h и нажми клавишу <O>.

  4. #3
    --- Аватар для Shadow Maker
    Регистрация
    01.03.2005
    Адрес
    Саранск
    Сообщений
    5,824
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    237
    Поблагодарили
    101 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А вот еще вопрос.

    Код:
    ROM:A989 square:         db 0                    ; DATA XREF: ROM:5B3Fo
    ROM:A989                                         ; sub_873A+18w ...
    ROM:A98A word_A98A:      dw 0
    Как у word_A98a убрать метку? Ну то есть чтобы все ссылки на нее поменялись на square+1?

    И вот еще сразу:

    Код:
    ROM:5B7A                 ld      hl, word_6600
    ROM:5B7D                 ld      de, 6601h
    ROM:5B80                 ld      bc, 1FFh
    ROM:5B83                 ld      (hl), 0
    ROM:5B85                 ldir
    Можно как-то автоматически сменить у de метку на word_6600+1? А то когда "O" жму она конвертируется в "(word_6600+1)", что неправильно. Можно вручную прописать, но напрягает.
    Последний раз редактировалось Shadow Maker; 20.08.2008 в 12:22.
    Свирепый агрессивно-депрессивный мордовец!
    Не уверен - не напрягай!

    Не сдавайся. Дыши?

    Virtual TR-DOS

  5. #4
    Guru Аватар для caro
    Регистрация
    14.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,721
    Спасибо Благодарностей отдано 
    16
    Спасибо Благодарностей получено 
    134
    Поблагодарили
    87 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Shadow Maker
    А вот еще вопрос.

    Код:
    ROM:A989 square:         db 0                    ; DATA XREF: ROM:5B3Fo
    ROM:A989                                         ; sub_873A+18w ...
    ROM:A98A word_A98A:      dw 0
    Как у word_A98a убрать метку? Ну то есть чтобы все ссылки на нее поменялись на square+1?
    Обьяви зону с метки square как array (клавиша <*>) с требуемым размером (в данном случае 3).

    Цитата Сообщение от Shadow Maker
    И вот еще сразу:

    Код:
    ROM:5B7A                 ld      hl, word_6600
    ROM:5B7D                 ld      de, 6601h
    ROM:5B80                 ld      bc, 1FFh
    ROM:5B83                 ld      (hl), 0
    ROM:5B85                 ldir
    Можно как-то автоматически сменить у de метку на word_6600+1? А то когда "O" жму она конвертируется в "(word_6600+1)", что неправильно. Можно вручную прописать, но напрягает.
    Точно также область, начиная с word_6600, обьяви как array с размером, в данном случае 200H.

  6. #5
    --- Аватар для Shadow Maker
    Регистрация
    01.03.2005
    Адрес
    Саранск
    Сообщений
    5,824
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    237
    Поблагодарили
    101 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну с первым я сам уже разобрался, а второе нифига, объявил массив,

    word_6600: dw 0, 38h, 700h, 3800h, 7 ;
    а он мне все равно пишет ld de, (word_6600+1) вместо ld de, word_6600+1
    Свирепый агрессивно-депрессивный мордовец!
    Не уверен - не напрягай!

    Не сдавайся. Дыши?

    Virtual TR-DOS

  7. #6
    Guru Аватар для caro
    Регистрация
    14.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,721
    Спасибо Благодарностей отдано 
    16
    Спасибо Благодарностей получено 
    134
    Поблагодарили
    87 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Shadow Maker
    ... он мне все равно пишет ld de, (word_6600+1) вместо ld de, word_6600+1
    Вообще то это ошибка дизассемблера, это же принципиально разный исходный код.
    Какой версией IDA пользуешься?
    Последний раз редактировалось caro; 20.08.2008 в 13:46.

  8. #7
    --- Аватар для Shadow Maker
    Регистрация
    01.03.2005
    Адрес
    Саранск
    Сообщений
    5,824
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    237
    Поблагодарили
    101 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну да, именно разный. Что меня и добивает.

    Версия 4.5.1.770.

    До кучи интересует вопрос, можно ли в Z80 дизассемблере заменить этот db [XXXXh], XXh на нормальный DS XXXXh, XXh. А то такое ни один ассемблер не понимает, а редактировать утомляет.
    Последний раз редактировалось Shadow Maker; 20.08.2008 в 13:51.
    Свирепый агрессивно-депрессивный мордовец!
    Не уверен - не напрягай!

    Не сдавайся. Дыши?

    Virtual TR-DOS

  9. #8
    Guru Аватар для caro
    Регистрация
    14.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,721
    Спасибо Благодарностей отдано 
    16
    Спасибо Благодарностей получено 
    134
    Поблагодарили
    87 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Shadow Maker
    Ну да, именно разный. Что меня и добивает.

    Версия 4.5.1.770.
    Попробовал в версии 4.30, вот результат:
    Код:
    seg000:0000                 ld      hl, byte_0_6600
    seg000:0003                 ld      de, (byte_0_6600+1)
    seg000:0006                 ld      bc, 1FFh
    seg000:0009                 ld      (hl), 0
    seg000:000B                 ldir
    
    dat:6600 ; ==========================================================
    dat:6600                 segment dat
    dat:6600                 org 6600h
    dat:6600 byte_0_6600:    ds 100h                 ; DATA XREF: seg000:0000
    Та же ошибка. Похоже глюк. Сейчас гляну в другой версии.

    Цитата Сообщение от Shadow Maker
    До кучи интересует вопрос, можно ли в Z80 дизассемблере заменить этот db [XXXXh], XXh на нормальный DS XXXXh, XXh. А то такое ни один ассемблер не понимает, а редактировать утомляет.
    Там в настройках есть выбор ассемблера, которому соответствует результирующий исходник.
    Попробуй разные варианты.

  10. #9
    --- Аватар для Shadow Maker
    Регистрация
    01.03.2005
    Адрес
    Саранск
    Сообщений
    5,824
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    237
    Поблагодарили
    101 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Там в настройках есть выбор ассемблера, которому соответствует результирующий исходник.
    Попробуй разные варианты.
    Я пробовал. Все остальные вообще не знают, что есть такая команда DS и фигачут многокилометровые портянки из DB-шек. Ладно, я себе конвертор в sjasm написал в принципе уже, так что это не очень актуально в любом случае.
    Свирепый агрессивно-депрессивный мордовец!
    Не уверен - не напрягай!

    Не сдавайся. Дыши?

    Virtual TR-DOS

  11. #10
    Guru Аватар для caro
    Регистрация
    14.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,721
    Спасибо Благодарностей отдано 
    16
    Спасибо Благодарностей получено 
    134
    Поблагодарили
    87 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Попробовал версию 5.2.0.908, вот результат:
    Код:
    		segment	ROM
    		ld	hl, byte_6600
    		ld	de,  byte_6600+1
    		ld	bc, 1FFh
    		ld	(hl), 0
    		ldir
    ; ===================================================
    		segment	dat
    		org 6600h
    byte_6600:	ds 100h
    Теперь всё правильно.

    Интересно, что старая версия 3.75, выдаёт тоже правильный листинг, а все версии начинающиеся с 4 выдают одну и ту же ошибку.
    Последний раз редактировалось caro; 20.08.2008 в 14:22.

Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •