Перейти к содержанию

CheatEngine Auto Assemble умножение (mul)


Рекомендуемые сообщения

Не знал в какой ветке темку сляпать.

В низкоуровневом программировании или по взлому игр или же здесь ?

и было бы хорошо если бы сразу не удаляли тему а переносили в правильную ветку.

----------------------------------------------------------------------------

Правильно ли я понял как работает MUL

Заметка:

Money - число в памяти на 8 бит. Процесс 64 битный. rsi - просто свободный регистр

Спойлер

mov rax, qword ptr [money]	<----  Money множимое число
mov rsi, 100			<----- 100 множитель в hex значении
mul rsi				<----- в rsi результат

 

или же результат запишется в rsi и ещё один регистр ?

который надо будет склеить.

 

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, TechnoBOY сказал:

Правильно ли

Не правильно.

А почему не воспользоваться соответствующими командами.

Спойлер

  fld qword ptr [money]
  fmul qword ptr [multiplier]
  fstp qword ptr [money]

...................

money:
  dq (double)..... // скоко там у тебя?
multiplier:
  dq (double)100

 

 

Ссылка на комментарий
Поделиться на другие сайты

О а вот это уже по понятней и легче ?

Спойлер

fld qword ptr [money]
fmul qword ptr [multiplier]
fstp qword ptr [money]

 

Спасибо.

И кстати

dq это qword (double)

db - byte (масив байт)

dw - word

dd - dword ?

а float куда входит ?

или ещё есть

Ссылка на комментарий
Поделиться на другие сайты

2 минуты назад, TechnoBOY сказал:

..................dd - dword ?

да

2 минуты назад, TechnoBOY сказал:

а float куда входит ?

4 байта, т.е. dword

3 минуты назад, TechnoBOY сказал:

db - byte (масив байт)

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

Например
db 64 (или #100) - один байт со значением 100

db 90 90 90 - уже массив из трех нопов

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, Garik66 сказал:

А почему не воспользоваться соответствующими командами

А почему всё надо усложнять и делать 8 байт? Если использует команду mul, значит число 4 байта, значит целое, и в таком случае можно его сразу загружать с переводом и после выгружать:

Спойлер

//Вариант если множитель float или doble
fild dword (muller) //Загружаем число 4 байтов с переводом в число с пл запятой
fmul dword (mult) //Умножаем на множитель который во float
fistp dword (Куда выгружать готовое) //Выгружаем с переводом в 4 байта

//Вариант если множитель целое число
fild dword (muller) //Загружаем число 4 байтов с переводом в число с пл запятой
fild dword (mult) //Загружаем в стек множитель
fmul st(1) //Умножаем
fistp dword (Куда выгружать готовое) //Выгружаем число с переводом в 4 байта
fstp st(0) //Убираем лишнее число из стека (множитель)

muller:
dd (твоё умножаемое число)

mult:
//Если float
dd (float)100 //(умножаем на 100, так и писать в метку (float)100)
//Если простое
dd #100 //100

 


У меня есть урок по fpu если интересно

Изменено пользователем imaginary
Ссылка на комментарий
Поделиться на другие сайты

6 часов назад, imaginary сказал:

А почему всё надо усложнять и делать 8 байт?

 

9 часов назад, TechnoBOY сказал:

Заметка:

Money - число в памяти на 8 бит.

 

  • Смешно 1
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

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

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.