Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Hex коды, Ну может знает кто? 
:(
    Опции темы
zMan
Дата 18.8.2006, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 22.6.2006
Где: Новосибирск

Репутация: нет
Всего: нет



Привет всем!

Люди, кто знает алгоритм, по которому любой компилятор создаёт адрес после кода вызова процедуры, "прыжка"?

На асме всё вроде просто:

Код

call proc     ;вызов процедуры
jmp @label ;безусловный переход по метке
je @label   ; условный переход


А как глянул дизассемблированный код - без литра (а лучше двух) не разберёшься!!  smile 


[offset1] E8DBFFFFFF - call proc
[offset2] EBF9       - jmp @label
[offset3] 74F7       - je @label


plz, помогите!!!
PM MAIL WWW ICQ   Вверх
dumb
Дата 18.8.2006, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 4
Всего: 158



непосредственное значение в кодах инструкций тебя интересует? - так там просто знаковое смещение относительно текущего адреса. например, адрес вызова в первой строке твоего примера будет:
offset1+5(длина инструкции)+0ffffffdb(-25)
PM MAIL   Вверх
Romikgy
Дата 18.8.2006, 09:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: нет
Всего: 146



Цитата(zMan @  18.8.2006,  07:47 Найти цитируемый пост)
по которому любой компилятор создаёт адрес после кода вызова процедуры, "прыжка"?

Я не совсем понял вопрос , 
адресс вызова может быть или абсолютный или относительный судя по твоей мессаге у тя оносительный адресс и отрицательный


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
ivashkanet
Дата 18.8.2006, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: нет
Всего: 149



 smile Интересное название темы  smile 
Не мог не запостить smile 
PM MAIL WWW ICQ   Вверх
Akina
Дата 18.8.2006, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: нет
Всего: 454



Программировать в машинных кодах охота? топай на сайт Интела, качай IA-32 Intel® Architecture Software Developer's Manual (5 частей, 14 мегабайт). И изучай.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
zMan
Дата 18.8.2006, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 22.6.2006
Где: Новосибирск

Репутация: нет
Всего: нет



Цитата(dumb @  18.8.2006,  09:08 Найти цитируемый пост)
непосредственное значение в кодах инструкций тебя интересует? - так там просто знаковое смещение относительно текущего адреса. например, адрес вызова в первой строке твоего примера будет:
offset1+5(длина инструкции)+0ffffffdb(-25) 


Пасибочки!
А про переходы (условный/безусловный)?

PM MAIL WWW ICQ   Вверх
Romikgy
Дата 18.8.2006, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: нет
Всего: 146



аналогично


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
BUGOR
Дата 20.8.2006, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 12.3.2006

Репутация: нет
Всего: 16



zMan, всё на самом деле просто:

[offset3] 74F7       - je @label

это так называемый short прыжок, или короткий прыжок, который осуществялется если адрес перехода находится в пределах -128 +128 байт.
74 - опкод команды je, а F7 - это значит переход на (not F7)-1 байт "вверх", если бы второй байт опкода команды был 7F или меньше, то прыжок бы осуществлялся на значение второго опкода(0-7F) + 2 байта(размер команды) "вниз".

Это сообщение отредактировал(а) BUGOR - 20.8.2006, 11:14


--------------------
Живу недоумевая, всё время хочу понять...
http://hunger.ru 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1081 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.