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

Кстати а при вызове winapi-функций какие дополнительные регистры (FPU,MMX,SSE) могут

пострадать?
Можно быть уверенным что ebx/esi/edi/ebp (r12...r15) сохраняются (соглашение stdcall).
А с MMX/SSE как? Помню видел в отладчике что генерируемый MSVC код например использует MMX или SSE для затирания памяти. Википедия пишет что для x86-64 параметры могут в SSE-регистрах передаваться и что MSVC их используется и надо сохранять XMM6/7 в ассемблерных вставках. Но внятного списка повреждаемых MMX/SSE-регистров при вызове winapi - я не нашёл.
Если я что-то загружу в MMX/SSE а потом буду вызывать различные winapi-функции - то есть ли какой-то документ гарантирующий что регистры не будут повреждены?

9 ответов

19 просмотров

Никогда не видел, чтобы stdcall гарантировал то, что регистры не изменятся. Да и вообще использовать регистры для хранения данных не особо хорошая практика.

BlackBloodyRabbit Rabbit
Никогда не видел, чтобы stdcall гарантировал то, ч...

У вас теперь и данные в регистрах нельзя хранить? Ну всё в память будем писать, отличная практика.

CLFLUSH 🇷🇺 rdseed
У вас теперь и данные в регистрах нельзя хранить? ...

Да нет, что Вы, лучше всё хранить в регистрах и ловить уб даже при вызове функций стандартной библиотеки си)

BlackBloodyRabbit Rabbit
Да нет, что Вы, лучше всё хранить в регистрах и ло...

У вас какие-то ограничения по отладчику, или какие ещё причины, что вы не можете проверить, какие регистры изменяет функция после вызова? К тому же, кол-во регистров на x86 для stdcall не так велико. EDI, ESI, EBP, EBX не будут изменяться в большинстве случаев.

CLFLUSH 🇷🇺 rdseed
У вас какие-то ограничения по отладчику, или какие...

Регистры для stdcall?) Что-то новенькое, а расскажите подробнее пожалуйста

Евгений- Автор вопроса
BlackBloodyRabbit Rabbit
Никогда не видел, чтобы stdcall гарантировал то, ч...

на сайте микрософта про Calling conventions это неоднократно заявлено, ebx/esi/edi/ebp сохраняются. И в различной программерской литературе. Ещё нашёл что сохраняется FPU состояние и все регистры кроме st0. А вот про SSE ничего толком нет.

Евгений
на сайте микрософта про Calling conventions это не...

Думаю, стоит найти какую-либо функцию WinAPI, использующую SSE, и посмотреть, сохраняет она, или нет.

BlackBloodyRabbit Rabbit
Никогда не видел, чтобы stdcall гарантировал то, ч...

Нормальная практика, и на x86_64 соглашение гарантирует, что некоторые регистры изменяться не будут

BlackBloodyRabbit Rabbit
Регистры для stdcall?) Что-то новенькое, а расскаж...

Он имел ввиду именно stdcall, не надо путать передачу аргументов и ответственность за сохранность регистров

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

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

Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
А вот это что за конструкция? Вернее, она тут нафига?
Serjone
10
Привет. Подскажите, как правильно сматчить лист фиксированного размера, чтобы компилятор не говорил мне о неполном паттерне? Допустим что-то такое [x', y'] = sort [x, y]?
Arseny
8
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Мужики. привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных элементов...
Kraszx
2
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Карта сайта