сборка — C ++ __asm ​​Генерация разных байтов

В своей функции я использую

__asm
{
mov     ecx,dword ptr [0x28F1431]
mov     ecx,ds:[0x28F14131]
}

который должен производить следующие байты: 0x8B0D (mov ecx, dword ptr []). Однако первая инструкция выдает 0xB9 (mov ecx,0x28F14131) и второй 0x3E: 8B0D

Итак, мой вопрос, какую инструкцию я должен использовать, чтобы получить желаемый результат внутри C ++ __asm?

3

Решение

Если вы на 100% знаете, какой должна быть ваша последовательность байтов для встроенной сборки, вы всегда можете явно использовать эти байты. Точный синтаксис ускользает от меня, но если вы используете GCC, вы можете попробовать ….

__asm {
.byte 0x##
.byte 0x##
...
}

Этот подход работает, только если вы знаете со 100% уверенностью, каковы последовательности байтов для всей инструкции. И если вы собираетесь это сделать, обязательно прокомментируйте соответственно.

(Для чего бы это ни стоило, мне приходилось использовать этот подход в прошлом, чтобы обойти ошибку компилятора, где бы он ни использовал неправильную последовательность байтов для одной из инструкций.)

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]