![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Inline asm: произвол Delphi [D6]
Burmistroff © (2003-05-22 00:40:00)Добрый день! Ни кто случайно не знает, как скомпилировать push $00000001?
Все дело в том, что если я пишу напрямую (push $00000001), то после компиляции имею push $01 или push $0001. Суть в том, что получается совершенно другая инструкция процессора, и длинна вносимого в стек числа (?). Я вынужден делать так:
push ebx
mov ebx, $00000001
push ebx
push somthing
call dword ptr[some address] //вызов WinAPI ф-ции
pop ebx
Но это очевидно извращение :)
P.S. я в ASM"е - 0
Ihor Osov'yak (2003-05-22 15:38:00) [1]2 theodor_iv © (22.05.03 10:53)
Да уж.. Спасибо за уточнение.
theodor_iv (2003-05-22 10:53:00) [2]2 Burmistroff: пиши push 1 -- не ошибешься! Даже если инструкция другая (а она будет выглядеть как $6A/$01), то в стек помещается всегда $00000001.
> Ihor Osov"yak © (22.05.03 01:38)
>
> push dword ptr 1
Работает только в Дельфи 6 и 7. В более ранних версиях компилируется в push dword ptr [ $00000001 ], т.е. поместить в стек двойное слово из памяти по адресу $00000001 -- гарантированный Access Violation.
Ihor Osov'yak (2003-05-22 01:38:00) [3]
push dword ptr 1