Вопрос № 19748: Доброго времени суток НАрод
Вопрос: какой дебагер лучше всего взять, который бы залазил в API функции
слышал про SOftIce, но еще не загружал, не знаю залазиет он в API или нет
PS>Буду благодарен за любую инфу ...Вопрос № 19799: Здраствуйте!
Скажите, пожалуйста, какими из указанных здесь признаков могут отличаться команы, имеющие одинаковый код операции:
длинной, способом адресации, скоростью выполнения. И почему?
Спасибо....
Вопрос № 19748
Доброго времени суток НАрод
Вопрос: какой дебагер лучше всего взять, который бы залазил в API функции
слышал про SOftIce, но еще не загружал, не знаю залазиет он в API или нет
PS>Буду благодарен за любую инфу
Отправлен: 15.04.2005, 08:16
Вопрос задал: Хатабычев Андрей (статус: Посетитель)
Всего ответов отправлено: 2
Отвечает: DSota
Здравствуйте, Хатабычев Андрей!
SoftIce позволяет просматривать API.
Лучше его я еще не видел. Только советую взять отдельный SoftIce, в пакете из Numega Driver Studio он иногда подвисает.
Ответ отправил: DSota (статус: Студент)
Отправлен: 15.04.2005, 09:14 Оценка за ответ: 5
Отвечает: John Freeman
Здравствуйте, Хатабычев Андрей!
1) точно - только слышал, это в 9x нельзя(без кое-чего) лазать в системные функции
2) Любой и SoftIce с патчем даже под 9x
Ответ отправил: John Freeman (статус: Профессионал)
Отправлен: 15.04.2005, 12:47
Вопрос № 19799
Здраствуйте!
Скажите, пожалуйста, какими из указанных здесь признаков могут отличаться команы, имеющие одинаковый код операции:
длинной, способом адресации, скоростью выполнения. И почему?
Спасибо.
Отправлен: 15.04.2005, 22:04
Вопрос задал: mario (статус: Посетитель)
Всего ответов отправлено: 1
Отвечает: Вiктор
Здравствуйте, mario!
команы, имеющие одинаковый код операции могут отличаться длинной, способом адресации, скоростью выполнения, - ваше предположение правильное :-).
например (немного разъехался пример, но я думаю вы поймёте), для USE16:
1) 661510000000 adc eax,00000010
2) 151000 adc ax,0010
3) 13D9 adc bx,cx
4) 110F adc [bx],cx
5) 83D310 adc bx,0010
6) 81D33412 adc bx,1234
7) 6683D310 adc ebx,0010
8) 81173243 adc word ptr [bx],4332
9) 6766131C81 adc ebx,[ecx+4*eax] (адресация с байтом SIB)
вот, 3 и 9 - код операции 10dw, они отличаются длиной (2 и 5 байт соотв), способом адресации (регистр-регистр и регистр-память), и если я правильно разобрался со справочником, то скорость их выполнения на пентиум-1 будет 1 и 2 такта соотв.
почему разная длина:
код операции 000100xxb и там, и там,
в (3) самый правый бит=1, это говорит что будем иметь дело с 16-битным регистром.
(а вот что будет если он =0 -> 12D9 adc bl,cl )
в (3) второй справа бит=1, это говорит что код источника - в поле р/м, код приёмника - в поле рег/коп (см разбор второго байта), вот что будет если этот бит=0 -> 10D9 adc cl,bl.
приступим ко 2-му байту d9h (11011001b):
первые два (с лева) бита (это поле называется MOD) равны 11b, значит операнды в регистрах. Далее идёт поле рег/коп (так в учебнике, как по английски не помню), оно занимает 3 бита и равно 011b=код регистра bx (или bl, или ebx), след. поле р/м равно 001b, это код регистра ecx/cx/cl. Т.к. ранее указано что регистры будут 16-битные, то в команде будут регистры bx и cx. Т.о. команда из 2-х байт: первый - код операции, второй указывает 2 операнда - 2 регистра.
команда (9) - 67h=префикс смены 16/32битной адресации, 66h-префикс смены 16/32битной размерности команд, 13h -код операции, 1Ch- байт адресации, он указывает операнды (регистр и память, а ещё в этом примере он указывает что будет ещё один байт адресации), 81h - байт дополнительной 32-битной адресаци - байт SIB.
итак, в (9) надо указать больше информации про адреса, поэтому и размер больше (а ещё из-за префиксов)
почему разные способы адресации:
потому что иногда нам надо один способ, а иногда другой - для этого предусмотрены разные способы.
почему разная скорость выполнения:
потому что обратиться к регистру быстрее, чем к ячейке памяти; потому что для ячейки памяти надо вычислять адрес; а вообще я сам точно не знаю.
кроме того, для одной команды (например, ADC) может быть несколько разных
кодов операции: 14w, 80sw /2, 10dw (см. команды 1-9)
я советую вам почитать учебники, посмотреть в справочниках - там есть про строение команд процессоров и скорости выполнения команд. Подробнее всего про структуру команд пентиум написано конечно у разарботчика -что-то вроде "Intel Architecture Software Developer’s Manual Volume 1-Basic Architecture 24319002.pdf", а также Volume 2, они должны быть на сайте Intel. Вот только они на английском...
будут ещё вопросы - спрашивайте.
удачи!
Ответ отправил: Вiктор (статус: 3-ий класс)
Отправлен: 17.04.2005, 13:27