169 похожих чатов

Вот я как-то установил SEH без кадра стека Значит всё-таки это

для ЯВУ нужно (и не для SEH, а, скорее, вообще для работы с локальными переменными, потому что Си любит локальные переменные)? Уровень вложенности это вообще понятие от enter op2, вроде как, пошло

13 ответов

23 просмотра

Кстати, на 16ти битах нельзя адресовать относительно sp, только относительно bp

Entusiast- Автор вопроса
Entusiast
А как это относится к SEH на Windows

Никак, это просто интересный факт

Aiwan \ (•◡•) / _bot
еще через bx можно

Можно, но сегмент по умолчанию будет не тот

Установить-то ты можешь что угодно, но вот адресовать локальные переменные в обработчике относительно esp сложно. Кто его знает, что там в esp было, когда исключение произошло. А с ebp достаточно лишь восстановить этот самый ebp.

Entusiast- Автор вопроса
s54820
Установить-то ты можешь что угодно, но вот адресов...

Ну вот я и говорю - дело в локальных переменных А изначально вообще всё пошло от того, почему компилятор Си создаёт кадр стека там, где без него можно обойтись. И вот на O3 он без него и обходится Но ProMinick выдвинул идею, что это с SEH связано. С SEH это не связано, а вот с локальными переменными - да. Но это не относится к тому, что без EBP можно обойтись, где нужны локальные переменные. Как раз где локальные переменные - и нужен кадр EBP

Entusiast
Ну вот я и говорю - дело в локальных переменных А ...

Есть ещё плюсовые исключения, которые в винде через SEH реализованы. Там всё как раз на ebp завязано. А что касается кадра стека — банально анализировать крэшдампы гораздо проще. И дёшево. Если быстродействие настолько важно, что какой-то там push ebp сильно влияет, функцию лучше заинлайнить. Не будет ни функции, ни кадра стека.

Entusiast
Ну вот я и говорю - дело в локальных переменных А ...

где локальные переменные достаточно кадра esp. добавляются макросы для трекинга смещения ESP push`ей, pop`ов, sub`ов esp,imm , add`ов esp, imm, invoke`ов, добавляются макросы для ручных фиксов, т.к. поток исполнения не линейный и есть jmp`ы. Так что локальные переменные я предпочитаю использовать через ESP frame pointer. И когда нибудь введу автоматизацию расчета смещений дружащую с макросетами local & struct.

Entusiast- Автор вопроса
ProMiNick
где локальные переменные достаточно кадра esp. доб...

Зачем? Макросы.. автоматизация рассчётов.. Что-то, что я точно не буду использовать для локальных переменных К тому же, в FASM уже есть подобное Вроде, входит в макрос locals/local

Entusiast
Зачем? Макросы.. автоматизация рассчётов.. Что-то,...

есть, но реализовано криво. точнее в официальном пакете все реализовано из расчета на ebp frame, а вот esp frame я пока реализовал криво.

Entusiast- Автор вопроса
ProMiNick
есть, но реализовано криво. точнее в официальном п...

И зачем тебе это нужно? Чем EBP не угодил?

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта