| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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х и более параметров. |