Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Asm для начинающих > Уродский вопрос про параметры функций |
Автор: SomeNoOp 19.7.2007, 18:23 |
Доброе время суток! Извините за столь уродский вопрос, но почему если при вызове какой-нибудь функции нужно в параметре указать 0, то в стек забивают не 0, а регист, равный нулю. Это что-то дает? Иными словами я про разницу между: push 0 call Function и: xor eax, eax push eax call Function |
Автор: ILyAHA 19.7.2007, 18:59 |
А где ты нашел этот уродский код? ![]() Если у процедуры нет параметров, то и в стэк ничего не надо ложить. |
Автор: spin2 19.7.2007, 19:13 |
Потому что в стек можно положить либо значение регистра, либо значение ячейки памяти... |
Автор: SomeNoOp 19.7.2007, 19:16 |
А разница какая? Быстрее работает? Меньше места занимает? Если бы 0 был ячейкой памяти, то разница была бы очевидна, но ведь 0 это не адрес ячейки памяти, это константа. Или я не прав? |
Автор: ILyAHA 19.7.2007, 19:47 | ||||
Извиняюсь за чуш которую написал в начале. Непонял вопроса ![]()
Здесь используется низкоуровневая оптимизация. В книге Зубкова написано так:
Набор этих команд дает оптимизацию выполнения на 10-20%. А вообще почитай книгу Зубкова - Assembler для Dos, Windows и Unix |
Автор: ILyAHA 19.7.2007, 20:03 | ||
А вообще
лучше неписать Некоторые ассемблеры, например masm, могут воспринять это как ошибку. |
Автор: SomeNoOp 20.7.2007, 11:17 |
Исчерпывающе, всем спасибо! |
Автор: setty 20.7.2007, 11:32 | ||
ниразу масм не выдавал ошибки по поводу использования push 0 (2 байта) использованием же xor eax, eax 2 байта push eax 1 байт можно выиграть в размере при вызовах функции где больинство параметров должно иметь нулевое значение к примеру
однако выигрышь довольно скромен ) |
Автор: SomeNoOp 23.7.2007, 20:20 |
Действительно скромен, но все-таки он есть (=. Как я понел, если в функцию нужно передать параметры и только в ожном из параметров нужно передовать 0, то выгоднее писать push 00h, чем xor eax, eax push eax. Это правда? |
Автор: W4FhLF 23.7.2007, 20:40 | ||||
Что значит выгоднее? В плане размера? Почему бы не проверить самому?
Как видишь, выгода начинается с 3х и более параметров. |