The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Проект SerenityOS развивает Unix-подобную ОС c графическим и..., opennews (??), 27-Май-19, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


36. "Проект SerenityOS развивает Unix-подобную ОС c графическим и..."  +5 +/
Сообщение от Аноним (36), 27-Май-19, 13:33 
Речь шла про amd64, в которой, как минимум, из коробки есть SSE+SSE2 и весь ABI (т.е. как передавать аргументы в функцию и как она возвращает) построен не на стеке, а на регистрах.
Да и FPU x87 это тот еще прикол.
Ответить | Правка | К родителю #5 | Наверх | Cообщить модератору

52. "Проект SerenityOS развивает Unix-подобную ОС c графическим и..."  –2 +/
Сообщение от qwerty123 (??), 27-Май-19, 14:11 
> весь ABI (т.е. как передавать аргументы в функцию и как она возвращает) построен не на стеке, а на регистрах.

верю! как сейчас

$ objdump -d /some/bare
...
  404e21:       bf 19 68 40 00          mov    $0x406819,%edi
  404e26:       31 c0                   xor    %eax,%eax
  404e28:       5b                      pop    %rbx
  404e29:       41 5c                   pop    %r12
  404e2b:       41 5e                   pop    %r14
  404e2d:       41 5f                   pop    %r15
  404e2f:       5d                      pop    %rbp
  404e30:       e9 07 d0 ff ff          jmpq   401e3c <xo_emit@plt>
  404e35:       bf 58 69 40 00          mov    $0x406958,%edi
  404e3a:       5b                      pop    %rbx
  404e3b:       41 5c                   pop    %r12
  404e3d:       41 5e                   pop    %r14
  404e3f:       41 5f                   pop    %r15
  404e41:       5d                      pop    %rbp
  404e42:       e9 15 cf ff ff          jmpq   401d5c <xo_close_list@plt>
  404e47:       5b                      pop    %rbx
  404e48:       41 5c                   pop    %r12
  404e4a:       41 5e                   pop    %r14
  404e4c:       41 5f                   pop    %r15
  404e4e:       5d                      pop    %rbp
  404e4f:       c3                      retq  
  404e50:       55                      push   %rbp
  404e51:       48 89 e5                mov    %rsp,%rbp
  404e54:       41 57                   push   %r15
  404e56:       41 56                   push   %r14
  404e58:       41 55                   push   %r13
  404e5a:       41 54                   push   %r12
  404e5c:       53                      push   %rbx
  404e5d:       48 83 ec 38             sub    $0x38,%rsp
...

Ответить | Правка | Наверх | Cообщить модератору

86. "Проект SerenityOS развивает Unix-подобную ОС c графическим и..."  +2 +/
Сообщение от dasdsadasd (?), 27-Май-19, 15:52 
И? Ну вот серьезно, и? Это что? Я тоже могу сейчас что угодно и на чем угодно так набыдлокодить, что никому и не снилось.
А судя по обилию pop'ов перед ret'ом это быдлокод еще тот (ибо даже если и используется стек, то сохраняется адрес начала стека перед входом в функцию, а в конце тупо этот адрес в ESP / RSP запсывают).
Ответить | Правка | Наверх | Cообщить модератору

166. "Проект SerenityOS развивает Unix-подобную ОС c графическим и..."  +/
Сообщение от Аноним (166), 28-Май-19, 17:21 
> И? Ну вот серьезно, и? Это что? Я тоже могу сейчас что
> угодно и на чем угодно так набыдлокодить, что никому и не
> снилось.
> А судя по обилию pop'ов перед ret'ом это быдлокод еще тот

Это совершенно нормальный код. Просто регистры не те, в которых передаются параметры (см. #165)

> (ибо
> даже если и используется стек, то сохраняется адрес начала стека перед
> входом в функцию, а в конце тупо этот адрес в ESP
> / RSP запсывают).

Сейчас, как правило, RBP не используется под фрейм. См. -fomit-frame-pointer

Ответить | Правка | Наверх | Cообщить модератору

87. "Проект SerenityOS развивает Unix-подобную ОС c графическим и..."  +1 +/
Сообщение от dasdsadasd (?), 27-Май-19, 15:54 
Особенно умиляет начиная с:
>   404e4e:       5d                      pop    %rbp
>  404e4f:       c3                      retq  
>  404e50:       55                      push   %rbp

Весь код после retq нафига? Обсуфикация? Ну тогда да, отличный пример!

Ответить | Правка | К родителю #52 | Наверх | Cообщить модератору

95. "Проект SerenityOS развивает Unix-подобную ОС c графическим и..."  +1 +/
Сообщение от Ordu (ok), 27-Май-19, 17:24 
Следующая функция жеж. push %rbp/mov %rsp, %rbp -- неплохой маркер на стековых ABI.
Ответить | Правка | Наверх | Cообщить модератору

168. "Проект SerenityOS развивает Unix-подобную ОС c графическим и..."  +/
Сообщение от Аноним (166), 28-Май-19, 17:24 
> Следующая функция жеж. push %rbp/mov %rsp, %rbp -- неплохой маркер на стековых
> ABI.

Причём выровнено по кратному 16 адресу без nop-ов.

>  404e50:       55                      push   %rbp

Ответить | Правка | Наверх | Cообщить модератору

165. "Проект SerenityOS развивает Unix-подобную ОС c графическим и..."  +/
Сообщение от Аноним (166), 28-Май-19, 17:16 
>> весь ABI (т.е. как передавать аргументы в функцию и как она возвращает) построен не на стеке, а на регистрах.
> верю! как сейчас

Основывайте суждения на знании, а не на слепой вере. Читайте System V AMD64 ABI.

Регистры RBX, RBP, ESP, R12, R13, R14 и R15 сохраняются при вызовах функций. Следующий фрагмент, очевидно, как раз их восстановление перед выходом. В RAX возвращается 0й результат.

>  404e21:       bf 19 68 40 00          mov    $0x406819,%edi
>  404e26:       31 c0                   xor    %eax,%eax
>  404e28:       5b                      pop    %rbx
>  404e29:       41 5c                   pop    %r12
>  404e2b:       41 5e                   pop    %r14
>  404e2d:       41 5f                   pop    %r15
>  404e2f:       5d                      pop    %rbp
>  404e30:       e9 07 d0 ff ff          jmpq   401e3c <xo_emit@plt>

Аргументы передаются в регистрах RDI, RSI, RDX, RCX (при вызове сервисов ядра - R10), R8 и R9.

Ответить | Правка | К родителю #52 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру