ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
23 способа получить в регистре единицу. |

03.10.2007, 18:19
|
|
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме: 4226446
Репутация:
1564
|
|
23 способа получить в регистре единицу.
23 способа получить в регистре единицу.
От самых простых до самых извратных. Хорошая разминка для мозгов.
1. непохек
Просто положить в регистр единицу
2.
Код:
sub eax,eax /xor eax,eax (по отдельности не рассматриваю)
inc eax
Красиво, довольно коротко. Обнуляем, инкрементируем....
3. Тоже красиво. Обнуляем, инкрементируем
4. Сопроцессор, но тут нужна дополнительная переменная. mem dword ?
Код:
finit
fld1
fist mem
mov eax,mem
в eax - теперь 1
Сначала мы инициализируем сопроцессор (finit), потом загружаем в st0 1, потом отправляем
содержимое st0 в mem, mem ложим в eax )
5. Еще сопроцессор ( mem dword ?)
Код:
finit
fldpi
fcos
fchs
fist mem
mov eax,mem
То есть ложим в st0 число пи, находим косинус пи (-1), меняем знак, сохраняем значение
6. А теперь больше тригонометрии
Код:
finit
fldz
fcos
fist mem
mov eax,mem
Ищем косинус от нуля))))) А это 1)))
7. А еще можно так
Код:
sub eax,eax
sub al,-1
это 4 байта.
8. Самый мой любимый способ
Код:
sub eax,eax
bfs eax,0
В нулевой бит ложим 1=)
9. Длинно, но все же....
10. Разновидность 5 метода, но беру модуль
Код:
finit
fldpi
fcos
fabs
fist mem
mov eax,mem
11.
Код:
sub eax,eax
dec eax
imul eax,eax
Ну это всем наверное ясно -1*(-1)=1
12. Этот способ я тоже люблю.
Делим двоичный логарифм 10 сам на себя.Аналогичный способ с любым др. числом (например с натуральным логарифмом 2 -
оба способа рассматриваются)
Код:
finit
fld2t
fld2t
fdiv st0,st1
fist mem
mov eax,mem
и соответственно
Код:
finit
fldln2
fldln2
fdiv st0,st1
fist mem
mov eax,mem
а можно еще с числом пи и десятичным логарифмом 2
Код:
finit
fldpi
fldpi
fdiv st0,st1
fist mem
mov eax,mem
и
Код:
finit
fldlg2
fldlg2
fdiv st0,st1
fist mem
mov eax,mem
13. Тригонометрия. Что-то меня тригонометрия в последнее время вдохновляет. Вариация на тему основного тригонометрического
тождества.
Код:
finit
fldln2 ; натуральный логарифм 2
fcos ; получаем косинус
fldln2
fcos
fmul st,st(1) ; (cos(ln2))^2
fldln2
fsin ; теперь синус
fldln2
fsin
fmul st(1),st ; (sin(ln2))^2
fincstp
fadd st,st(1) ; st0+st1=1 по основному тригонометрическому тождеству
fist mem
14. Красивый способ
Код:
stc ; установка флага переноса в 1
sbb eax,eax ; вычитание с заемом
neg eax ; -(-1)=1
15. В еax будет true, то есть 1
Код:
sub eax,eax
cmp eax,eax
sete al
16. Еще извратный способ
Код:
sub eax,eax
sub ecx,ecx
dec eax
mov cx,1fh
m1:
btc eax,ecx ; фишка в этой команде. инвертируем все биты, кроме последнего, тогда в самом регистре будет 1
loop m1
17.А еще можно так
Код:
sub eax,eax
stc ; установка флага переноса в 1
adc eax,eax ; сложнение с учетом флага переноса CF
18.Простенько, но со вкусом
Код:
sub eax,eax
or eax,1
19. Почти тоже самое
Код:
xor eax,eax
xor eax,1
20.Обалденный способ. 4 bsr над -1 и получаем 1)
Код:
sub eax,eax
dec eax
bsr eax,eax
bsr eax,eax
bsr eax,eax
bsr eax,eax
21. Тоже вариант
Код:
sub eax,eax
dec eax
shr eax,1fh ; логический сдвиг вправо
22. Скушный метод, но результат тот же
Код:
xor eax,eax
dec eax
and eax,1
23. Довольно неинтересно.. но все же
Код:
xor eax,eax
dec eax
neg eax
Пока на этом все......
Последний раз редактировалось 0x0c0de; 03.10.2007 в 20:06..
|
|
|
|
Похожие темы
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
Как получить доступ админа Ipb2.2.2
|
bobobo |
Уязвимости CMS / форумов |
6 |
18.05.2007 18:25 |
|
Пробить номер телефона, проверить судимость, получить информацию о прописке
|
Vasilii |
Разное - Покупка, продажа, обмен |
8 |
26.11.2006 01:57 |
|
В Os X легко найти уязвимости, позволяющие получить полный контроль над операционной
|
dinar_007 |
Мировые новости. Обсуждения. |
1 |
12.08.2006 01:07 |
|
Получить название подключения
|
EST a1ien |
С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby |
3 |
27.07.2006 20:32 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|