Можно, но где гарантия того, что состояние флагов и регистров не измениться после ее завершения? Если ты заглянешь в отладчик, то увидишь, что Винда меняет значения многих регистров после выполнения любой АПИ-функции.Ведь так же можно?
Можно, но где гарантия того, что состояние флагов и регистров не измениться после ее завершения? Если ты заглянешь в отладчик, то увидишь, что Винда меняет значения многих регистров после выполнения любой АПИ-функции.Ведь так же можно?
Любой метод заслуживает внимания и критики, особенно если он не полноценен...и всё равно мой метод заслуживает внимания, хотя он и не полноценен
sub Main
ChangeEAX 15
end sub
Function ChangeEAX(NewValue as long) as Long
'Т. к. возвращяемое значение передаётся через EAX, то...
ChangeEAX=NewValue
end function
Имхо к словам предираться не стоит - все поняли о чем я говорил. Впринципе, тоже касается и вопроса о ЕАХ.Также регистры при выполнении апишки меняет не винда а сама функция, т. к. она их использует.
Конечно, если учесть что в ESP он и храниться...keks-n писал(а):Издеваешся?
Если поправить ESP, то слетит указатель на стек
Public Sub asmSinCosPointer(ByRef sngCosAngle As Single, ByRef sngSinAngle As Single)
'#ASM_START
'.MMX
' push ebp
' mov ebp, esp
' mov eax, DWORD PTR [ebp+8] ;'//First argument, store in eax (= value now!)
' fld dword ptr [eax] ;'//Get value for cos
' fsincos ;'//Execute sin/cos instruction
' fstp dword ptr [eax] ;'//Store cos in eax (1st param pointer!)
' mov eax, DWORD PTR [ebp+12] ;'//Second argument, store in eax (=value now!)
' fstp dword ptr [eax] ;'//Store sin in eax (2nd param pointer!)
' mov esp, ebp ;'//MOV/POP is much faster
' pop ebp ;'//on 486 and Pentium than Leave
' ret 8
'#ASM_END
End Sub
Сейчас этот форум просматривают: Google-бот и гости: 60