|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Фев 3, 2004 16:48:09 Народ подскажите, читаю книжку по асму, и там есть такой код: .... invoke GetCommandLine mov CommandLine,eax invoke WinMain,hInstance,NULL,CommandLine,SW_SHOWDEFAULT invoke ExitProcess,0 .... Зачем мы заносим в CommandLine, eax? ИМХО быстрее и проще: invoke WinMain,hInstance,NULL,EAX,SW_SHOWDEFAULT Или я не прав, и есть какая то тонкость? |
|
|
Дата: Фев 3, 2004 17:32:46 Это элементарно, чтоб использовать в дальнейшем. |
|
|
Дата: Фев 3, 2004 17:43:23 Asterix Так дальше нигде переменная CommandLine не используется, более того в ф-ии WinMain создается преременная-аналог CmdLine... |
|
|
Дата: Фев 3, 2004 18:13:50 Это они "на автомате" лепят, имхо. |
|
|
Дата: Фев 6, 2004 05:32:29 Правка Это они "на автомате" лепят, имхо. Да, при просмотре исходного кода часто замечаешь, что он сделан "по шаблонам", как обычным (copy), так и шаблонам RadASM :) Кстати, по 1-й строчке GetModuleHandle большинство анализаторов PE32 считают, что компилятор - MASM :o)… |
|
|
Дата: Фев 7, 2004 21:41:46 Самое плохое в этом премере то, что это не асм, а "реализация С посредством асма". nice, вы сделали очень правильное наблюдение, IMHO. В асме нет необходимости в таком "двойном неиспользовании" CommandLine. К тому же и без WinMain можно часто обойтись. В вашем примере ее наверняка можно просто написать на месте invoke |
|
|
Дата: Фев 7, 2004 23:46:55 S_T_A_S_ А как без винМайн? Нет примера, глянуть? |
|
|
Дата: Фев 8, 2004 02:07:57 Как без винМайн? Да просто. Посмотрите, что делает invoke WinMain: - заносит в стек hInstance. Это по большему счету вообще константа в Win32: hInstance EQU 400000h; - следующее значение hPrevInstance, уже и так равно 0; - по поводу CommandLine вы уже писАли; - SW_SHOWDEFAULT - это тоже константа! Зачем эти все КОНСТАНТЫ передавать из одной процедуры в другую? Можно просто поместить "внутренности" WinMain вместо invoke.. И все.. ;) |
|
|
Дата: Фев 8, 2004 10:35:49 S_T_A_S_ Точно :) Пасибо! |
|
|
Дата: Фев 9, 2004 02:56:59 Т.к. обычно мне командная строка не нужна то я, например, начинаю прогу где-то так: invoke GetModuleHandle, NULL
mov hInstance, eax
invoke DialogBoxParam, eax, 200, 0, OFFSET DlgProc, 0
invoke ExitProcess, eax |
|
|
Дата: Фев 9, 2004 04:56:30 А можно так: ; invoke GetModuleHandle, NULL
; mov hInstance, eax
mov hInstance, 400000h
;-) А еще я видел такое: hInstance dd foo foo and hInstance, 0FFF00000h Это если предполагать, что виндос загрузит PE по другому адресу |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.101 |