; int __stdcall wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nShowCmd)
[email protected] proc near
var_4= dword ptr -4
hInstance= dword ptr 4
hPrevInstance= dword ptr 8
lpCmdLine= dword ptr 0Ch
nShowCmd= dword ptr 10h
Из того, что я вижу, последние 4 переменных являются параметрами, переданными функции WinMain. Кроме того, var_4 должен быть переменной int, объявленной позже в теле функции. Теперь у меня есть пара вопросов:Простые вопросы сборки
a) Каков размер слова в 32-битной программе Windows? 4 байта? будучи мечом 8?
b) Почему var_4 установлен на -4? Почему бы не начать, скажем так, 0?
с) стандартной процедурой для определения Интсов в С, хотя
var_x = DWORD PTR у?
С благодарностью
Спасибо за ответ. Но я определил свою переменную как int. Как получилось, что это 32-битная переменная без знака? Или это просто означает, что это указатель (который, очевидно, является неподписанным int?) –
Это просто макросы, которые помогают сделать сборку ясной. Это смещения w.r.t. к указателю рамки. – user7116
@devoured elysium Нет разницы между подписанными и неподписанными данными в ASM. Они всего лишь 32 бит. Разница заключается в том, какие инструкции вы используете для их работы. –