как компилил?
А теперь то же самое с /Ox /Oy.
Сразу /O3 чё мелочится то
создает локальную переменную кратную 4м даже если сама 1 байт, типа выравнивание. и потом присваивает значение. этот push ecx это просто сдвиг(читать как рещервировпние памяти) стека для лок. переменной.
В MSVC нету -O3.
а может ли это еще быть способ чистки стека такой быстрый перед записью единицы потому что в стеке может быть мусор и потом могут быть трудности с получением sizeof "с" например? если вместо терминирующего нуля там будет что то
Не включена оптимизация абсолютно. В настройках проекта поищи параметр и поставь на "Приоритет скорости"
здесь char c это локальная переменная, инициализированая непосредственно в теле функции. а я говорб про инициализацию за ее пределами - перед вызовом функции
Вроде был
Это как? Писать ниже rsp?
В Visual Studio написано /O1, /O2 и /Ox, ещё есть "отключено" как /Od
да, предварительно вычислив где будет располагаться лок. переменная в памяти после вызова функции. кол-во парметров×4+адрес возврата+запушенный ebp
Не вздумай так делать в ядре, а то прерывание не вовремя посетит и кирдык
"да не очкуй ты, я 100 раз так делал"©
И в один неприятный момент все зависнет и упадет самолёт с кучей людей...
😄Ну в ядре такое вряд ли будет использоваться. Айван же написал, что это для обфускации годится
всё будет норм, cli поставить и окей
Про nmi не забудь
Обсуждают сегодня