Сейчас на форуме: vsv1, _MBK_ (+3 невидимых)

 eXeL@B —› Вопросы новичков —› Вопрос по OllyDB
Посл.ответ Сообщение

Ранг: 10.7 (новичок)
Активность: 0.010
Статус: Участник

Создано: 07 октября 2007 14:14
· Личное сообщение · #1

Делаю по книжке все нормально, но автор забыл сказать как в OllyDB посмотреть значение регистра eax после того как в него помещаем число более 32 бит???
вот код:

.386
.model flat,stdcall
includelib \myasm\lib\kernel32.lib
ExitProcess proto :DWORD
.code
start:
mov eax, 4000000000
add eax, 4000000000
invoke ExitProcess, 0
end start



Ранг: 25.8 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 07 октября 2007 14:44
· Личное сообщение · #2

Если ты в еах занесёшь что-нибудь более 32 бит, тогда то, что окажется лишним (со стороны старших бит) просто выйдёт за края битовой сетки и эти биты уйдут "вникуда" и ты получишь в итоге всё равно 32 битный результат.




Ранг: 240.5 (наставник)
Активность: 0.190
Статус: Участник
Author of ACKiller

Создано: 07 октября 2007 15:53
· Личное сообщение · #3

А я и не знал, что в еах можно занести значение больше 32 бит... Если компилер позволяет ТАКОЕ писать, то архитектура х86 - нет.



Ранг: 10.7 (новичок)
Активность: 0.010
Статус: Участник

Создано: 07 октября 2007 18:25
· Личное сообщение · #4

Может я неправильно объяснил что хочу, при сложение должно получится 8000000000, я понимаю что происходит переполнение о чем свидетельствует поднятый флаг переполнения.
есть два объяснения (по моему)
1. где то и как то должно сохранится значение 8000000000 и потом его можно увидеть
или
2. в процессе выпонения сложения регистра eax с самим собой я теряю значение 8000000000, потому как после у меня в регистре оказывается беззнаковое 3705032704



Ранг: 21.1 (новичок)
Активность: 0.030
Статус: Участник

Создано: 07 октября 2007 18:55 · Поправил: Satyr
· Личное сообщение · #5

В принципе, можешь для этого использовать состояние флага переноса. В итоге единицу, которую ты терял, можно как бы "извлечь" из флага переноса. Т.е. проверяешь, поднят ли флаг переноса, и если поднят, то вписываешь единицу в старший разряд числа. Больше единицы там все равно быть не может, т.к. 0ffffffffh + 0ffffffffh = 1fffffffeh




Ранг: 109.2 (ветеран)
Активность: 0.090
Статус: Участник
Cardinal

Создано: 07 октября 2007 19:31
· Личное сообщение · #6

Че вы паритесь
4000000000==0xEE6B2800 где вы тут видите ошибку и темболее компилятора?

-----
– Почему ты работаешь по ночам ? – Так удобнее... В одну смену с чертями...




Ранг: 10.7 (новичок)
Активность: 0.010
Статус: Участник

Создано: 07 октября 2007 22:38
· Личное сообщение · #7

Satyr
Впринципе понятно, т.е. это сам должен улавливать при работе с отладчиком. Спасибо.

tnt17
Никто не парится, нету тут ошибки, просто разбираюсь что и куда, и как пользоваться отладчиком!!!


 eXeL@B —› Вопросы новичков —› Вопрос по OllyDB
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати