· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ASSEMBLER —› Локальные переменные...

Посл.отвђт Сообщенiе


Дата: Июн 9, 2004 08:09:27

Могу ли я использовать локальные переменные без использования addr
То есть не так:

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
WinMain PROC
LOCAL bla_bla :DWORD

invoke ApiWindowsMustDie,addr bla_bla
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
А вот так:

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
WinMain PROC
LOCAL bla_bla :DWORD

push offset bla_bla
call ApiWindowsMustDie
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Мож я че не допираю?
Если нельзя, то может кто напишет какой-нить макрос? :-)
Чтоб было можно. Нуууу Ооочень нужно...


Дата: Июн 9, 2004 09:13:43

DITREX
Посмотри в листинге, какой код генерирует addr bla_bla сравни его со своим push offset bla_bla, почувствуй разницу и подумай об адресах известных на шаге компиляции и известных во время выполнения программы.


Дата: Июн 9, 2004 09:46:29

В листинге посмотреть, конечно, тоже стоит, но на всякий случай:

WinMain PROC
LOCAL bla_bla :DWORD

lea eax,bla_bla ;можно и другой регистр
push eax
call ApiWindowsMustDie


Дата: Июн 9, 2004 10:12:30

Можна ж и так - invoke ApiWindowsMustDie,bla_bla ?
Тут получиться :
FF75 08        PUSH DWORD PTR SS:[EBP+8]
FF15 50204000  CALL DWORD PTR DS:[<&user32.ApiWindowsMustDie>]


Дата: Июн 9, 2004 10:25:45

Не путайте человека - не
invoke ApiWindowsMustDie,bla_bla, а
invoke ApiWindowsMustDie, ADDR bla_bla


Дата: Июн 9, 2004 10:27:25

_Juicy
Ты сам-то листинг видел? Директива addr собственно твой код и генерирует.

bogrus
Разве твой вариант помещает в стек адрес локальной переменной.


Дата: Июн 9, 2004 10:49:48

Не путайте человека

Это смотря кто кого ещё путает :)
Он же не спросил в чём разница offset и addr .

Разве твой вариант помещает в стек адрес локальной переменной.

Нет , её содержимое . Я просто привёл пример использования локальных переменных без ADDR :)))


Дата: Июн 9, 2004 11:13:34

На всяк случай процитирую :

"Опеpатоp addr используется для пеpедачи адpеса метки (и не только) функции. Он действителен только в контексте диpективы invoke. Вы не можете использовать его, чтобы пpисвоить адpес метки pегистpу или пеpеменной . addr не может быть использован с метками, котоpые опpеделены впеpеди, а offset может. Hапpимеp, если метка опpеделена где-то дальше в коде, чем стpока с invoke , addr не будет pаботать."


Дата: Июн 10, 2004 10:44:15

push esp
call foo


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.081