Assembler>VB

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 10.03.2006 (Пт) 13:38

Ведь так же можно?
Можно, но где гарантия того, что состояние флагов и регистров не измениться после ее завершения? Если ты заглянешь в отладчик, то увидишь, что Винда меняет значения многих регистров после выполнения любой АПИ-функции.
А я все практикую лечение травами...

Dex
Постоялец
Постоялец
 
Сообщения: 346
Зарегистрирован: 09.08.2004 (Пн) 16:11

Сообщение Dex » 10.03.2006 (Пт) 14:19

Ну тогда вариант tyomitch'а. (и всё равно мой метод заслуживает внимания, хотя он и не полноценен :wink: )

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 10.03.2006 (Пт) 14:22

и всё равно мой метод заслуживает внимания, хотя он и не полноценен
Любой метод заслуживает внимания и критики, особенно если он не полноценен...
А я все практикую лечение травами...

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 10.03.2006 (Пт) 14:46

Twister
Меняем значение EAX средствами VB :lol: :
Код: Выделить всё
sub Main
ChangeEAX 15

end sub

Function ChangeEAX(NewValue as long) as Long
'Т. к. возвращяемое значение передаётся через EAX, то...
ChangeEAX=NewValue
end function


Также регистры при выполнении апишки меняет не винда а сама функция, т. к. она их использует.
Изображение

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 10.03.2006 (Пт) 14:51

ECX, EDX и ESP на закуску слабо?...
А я все практикую лечение травами...

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 10.03.2006 (Пт) 14:54

Издеваешся?
Если поправить ESP, то слетит указатель на стек :lol:
Изображение

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 10.03.2006 (Пт) 14:56

Также регистры при выполнении апишки меняет не винда а сама функция, т. к. она их использует.
Имхо к словам предираться не стоит - все поняли о чем я говорил. Впринципе, тоже касается и вопроса о ЕАХ.
А я все практикую лечение травами...

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 10.03.2006 (Пт) 14:58

Убедил.
Изображение

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 10.03.2006 (Пт) 15:00

keks-n писал(а):Издеваешся?
Если поправить ESP, то слетит указатель на стек :lol:
Конечно, если учесть что в ESP он и храниться... :lol:
PS Пора закрывать тему, пошел флуд.
А я все практикую лечение травами...

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 10.03.2006 (Пт) 15:04

Перечитал тему. Неужели никто не вспомнил про LASM, лежащий на www.vbstreets.ru ?
Изображение

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 10.03.2006 (Пт) 15:08

Я вспомнил. Но собственно, подобный вариант рассматривался здесь и так...
А я все практикую лечение травами...

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 10.03.2006 (Пт) 15:10

Дык это... Там вроде как и компилятор спецательный, и модуль генерится автоматом.
Изображение

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 10.03.2006 (Пт) 15:17

Да. Там такое есть.
А я все практикую лечение травами...

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 10.03.2006 (Пт) 15:28

Inline assembeler for VB http://www.persistentrealities.com/files/inlineasm.zip
Тока ему masm32 нужен.

Рульно?
Изображение

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 10.03.2006 (Пт) 16:32

Судя вот по этому, эта фишка не позволяет обращаться к VB-переменным программы...
Код: Выделить всё
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
А я все практикую лечение травами...

Пред.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 60

    TopList