Stack Overflow на русском Asked by digital-mag on November 5, 2021
Мне нужно взять в переменную в ассемблерной вставке значение по адресу, содержащемуся в регистре [EBP]:
size_t esp_val = 0;
size_t esp_var = 0;
size_t ecx_var = 0;
__asm {
mov esp_var, ESP
mov ecx_var, ECX
mov esp_val, [EBP]
}
Но в последней строке mov esp_val, [EBP]
я неизменно получаю ошибку
Недопустимый тип операнда
Пробовал менять тип на DWORD. В сети встречал вариант в таком духе:
mov esp_val, SIZE_T PTR[EBP]
mov esp_val, DWORD PTR[EBP]
При чем такое впечатление, что у всех это работает кроме меня.
Я что-то упускаю?
Насколько я помню ассемблер, вы пытаетесь сделать пересылку память-память непосредственно, а такой команды нет.
Перебрасывайте в регистр, а регистр - в переменную - типа:
__asm {
mov esp_var, ESP
mov ecx_var, ECX
mov eax, [EBP]
mov esp_val, eax
}
Answered by Harry on November 5, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP