


 
 
 



GSerg писал(а):Неправда, знаем
И описано (правда, в документации к QBasic)
И даже темы есть про это у нас тут (про то, как наступали на эти грабельки, а потом догадывались, в чём дело)
Если, к примеру, в скобки заключить объект, то знаешь что будет? Попробуй





 




alibek писал(а):А объяснение очень простое. Когда аргумент в скобках, то он считается вычисляемым выражением. А выражение всегда передается как ByVal.


 
 Чем отличается?
 Чем отличается?
 



alibek писал(а):Согласен, вычисляемое значение копируется во временную переменную и функция получает ByRef именно ее. Только чем это отличается от ByVal?

GSerg писал(а):Друзья, имейте совесть
Это, по большому счёту, не так уж и важно. С точки зрения процедуры это будет byref, с точки зрения вызывающего - byval, на самом деле - byrefЧем отличается?
ByVal
mov eax, [ebp+0x8]
ByRef
mov eax, [ebp+0x8]
mov eax, [eax]
Только этим
Но неужели это предмет детального обсуждения на нашем форуме?
 Кстати, VB для своих процедур предпочитает esp. И это... того... почему смещение на восемь байт? ("Почему без кепки?")
 Кстати, VB для своих процедур предпочитает esp. И это... того... почему смещение на восемь байт? ("Почему без кепки?")  


BP писал(а):>Народ, скажите, есть у кого нормальная (максимально полная) дока по OpCod'ам
OpCodes.hlp из MASM32 вполне нормальная. А что ты ищешь?
 


BP писал(а):66 - это 16-битный расширитель 32-битной операции.
B8/1/0/0/0 mov eax,1
66/B8/1/0 mov ax,1
Для получения любой 16-битной операции (регистр - это r16, а память - WORD PTR) нужно добавить &H66 перед 32-битной.

Скачай LASM IDE из раздела проектов. Он после компиляции покажет опкоды для каждой операции.

 

 pentium.zip
 pentium.zip
GSerg писал(а):Во! Супер! То, что давно искал
 Вот ссылки на первый и третий, чтобы всё было до кучи:
 Вот ссылки на первый и третий, чтобы всё было до кучи:Со своей стороны поделюсь quick reference card'ом

Сейчас этот форум просматривают: AhrefsBot и гости: 10