![]() |
|
![]() ![]() ![]() |
|
SomeNoOp |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 16.6.2007 Репутация: нет Всего: нет |
Доброе время суток! Извините за столь уродский вопрос, но почему если при вызове какой-нибудь функции нужно в параметре указать 0, то в стек забивают не 0, а регист, равный нулю. Это что-то дает? Иными словами я про разницу между:
push 0 call Function и: xor eax, eax push eax call Function |
|||
|
||||
ILyAHA |
|
|||
![]() Гламурный хакер ![]() Профиль Группа: Участник Сообщений: 193 Регистрация: 30.3.2007 Где: Ярославская обл. г.Рыбинск Репутация: нет Всего: 3 |
А где ты нашел этот уродский код?
![]() Если у процедуры нет параметров, то и в стэк ничего не надо ложить. --------------------
<sсriрt>alert('xss')</sсriрt> |
|||
|
||||
spin2 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 15.12.2005 Где: Москва-Одесса Репутация: нет Всего: 31 |
Потому что в стек можно положить либо значение регистра, либо значение ячейки памяти...
-------------------- |
|||
|
||||
SomeNoOp |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 16.6.2007 Репутация: нет Всего: нет |
А разница какая? Быстрее работает? Меньше места занимает? Если бы 0 был ячейкой памяти, то разница была бы очевидна, но ведь 0 это не адрес ячейки памяти, это константа. Или я не прав?
Это сообщение отредактировал(а) SomeNoOp - 19.7.2007, 19:24 |
|||
|
||||
ILyAHA |
|
||||
![]() Гламурный хакер ![]() Профиль Группа: Участник Сообщений: 193 Регистрация: 30.3.2007 Где: Ярославская обл. г.Рыбинск Репутация: нет Всего: 3 |
Извиняюсь за чуш которую написал в начале. Непонял вопроса
![]()
Здесь используется низкоуровневая оптимизация. В книге Зубкова написано так:
Набор этих команд дает оптимизацию выполнения на 10-20%. А вообще почитай книгу Зубкова - Assembler для Dos, Windows и Unix --------------------
<sсriрt>alert('xss')</sсriрt> |
||||
|
|||||
ILyAHA |
|
|||
![]() Гламурный хакер ![]() Профиль Группа: Участник Сообщений: 193 Регистрация: 30.3.2007 Где: Ярославская обл. г.Рыбинск Репутация: нет Всего: 3 |
А вообще
лучше неписать Некоторые ассемблеры, например masm, могут воспринять это как ошибку. Это сообщение отредактировал(а) ILyAHA - 19.7.2007, 20:05 --------------------
<sсriрt>alert('xss')</sсriрt> |
|||
|
||||
SomeNoOp |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 16.6.2007 Репутация: нет Всего: нет |
Исчерпывающе, всем спасибо!
|
|||
|
||||
setty |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 8.6.2006 Где: Украина Репутация: нет Всего: нет |
ниразу масм не выдавал ошибки по поводу использования push 0 (2 байта)
использованием же xor eax, eax 2 байта push eax 1 байт можно выиграть в размере при вызовах функции где больинство параметров должно иметь нулевое значение к примеру
однако выигрышь довольно скромен ) |
|||
|
||||
SomeNoOp |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 16.6.2007 Репутация: нет Всего: нет |
Действительно скромен, но все-таки он есть (=. Как я понел, если в функцию нужно передать параметры и только в ожном из параметров нужно передовать 0, то выгоднее писать push 00h, чем xor eax, eax push eax. Это правда?
|
|||
|
||||
W4FhLF |
|
||||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 1 Всего: 121 |
Что значит выгоднее? В плане размера? Почему бы не проверить самому?
Как видишь, выгода начинается с 3х и более параметров. Это сообщение отредактировал(а) W4FhLF - 23.7.2007, 20:41 -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Asm для начинающих" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Asm для начинающих | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |