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

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

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

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

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

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

Правильно ли я понял как работает 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

Поделиться сообщением


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

? Но не уверен, что CE поддерживает SSE4.1

pmulld ymm0, ymm1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
6 часов назад, imaginary сказал:

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

 

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

Заметка:

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

 

  • Смешно 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
7 часов назад, Garik66 сказал:

Заметка:

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

Как обычно я не заметила 😀

 

Поделиться сообщением


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

Всем как обычно, спасибо ра разъяснение 😊

Щас как раз освобожусь и проверю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Только что, partoftheworlD сказал:

? Но не уверен

Если таким образом то можно
mulsd (double умножение)
Например:

mulsd xmm1,xmm0

 

  • Плюс 1

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

×

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

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