Результаты поиска по запросу "calling-convention"

1 ответ

 беспокоиться о такого рода микро-оптимизации.

ичок в C, и есть одна вещь, которую я не могу понять. Когда функция возвращает что-то не больше регистра, мой компилятор помещает это в EAX. Когда я возвращаю большую структуру (не указатель, а саму структуру) - она ​​возвращается ...

2 ответа

Поведение ebp и esp в стеках с использованием функции с параметром

Я хочу узнать больше о стеке. Особенно, что происходит, когда вызывается функция с параметром. Для этого я пишу следующий код: #include <stdio.h> int sum(int d, int e, int f){ int result = d + e + f; return result; } int main(void){ int a = 5; ...

3 ответа

Вызываемая функция отвечает за выделение своего собственного стекового фрейма, сохраняя 16-байтовое выравнивание в стеке. Эта операция выполняется разделом кода, называемым прологом, который компилятор помещает перед телом подпрограммы. После тела подпрограммы компилятор помещает эпилог, чтобы восстановить процессор до состояния, в котором он находился до вызова подпрограммы.

у понять это требование для старых систем PPC RISC и даже для x86-64, но для старых проверенных x86? В этом случае стек должен быть выровнен только по 4-байтовым границам. Да, некоторые инструкции MMX / SSE требуют выравнивания по 16 байт, но ...

ТОП публикаций

1 ответ

, не могу определить параметр или что-то для передачи информации, которую вы действительно хотите. (Или положить в базовый класс или что-то ...)

жный дубликат: Как я могу найти метод, который вызвал текущий метод? [https://stackoverflow.com/questions/171970/how-can-i-find-the-method-that-called-the-current-method] У меня есть метод в объекте, который вызывается из нескольких мест ...

3 ответа

 Библиотека заключается в том, что разработчик мог забыть правильно освободить стек, или злоумышленник может внедрить некоторый код, повредив стек DLL (например, путем перехвата API), который затем не проверяется вызывающей стороной. У меня нет примеров безопасности CVS, показывающих, что моя интуиция верна.

тоящее время я занимаюсь разработкой библиотеки C ++ для Windows, которая будет распространяться в виде DLL. Моя цель - максимизировать бинарную совместимость; более точно, функции в моей DLL должны быть пригодны для использования из ...

1 ответ

CLR / Fastcall: как типы больших значений внутренне передаются вызываемым функциям?

Просто из любопытства: типы значений обычно копируются, и JIT-компилятор, похоже, использует соглашение вызовов Fastcall от Microsoft при вызове метода. Это помещает первые несколько аргументов в регистры для быстрого доступа. Но как типы больших ...

4 ответа

Соглашения о вызовах x86_64 и стековые фреймы

Я пытаюсь разобраться в исполняемом коде, который GCC (4.4.3) генерирует для машины x86_64, работающей под Ubuntu Linux. В частности, я не понимаю, как код отслеживает кадры стека. В старые времена в 32-битном коде я привык видеть этот «пролог» ...

1 ответ

Написание голых функций с собственным прологом и кодом эпилога в Visual Studio

Я пишу некоторый код плагина в dll, который вызывается хостом, который я не могу контролировать. Хост предполагает, что плагины экспортируются как функции __stdcall. Хосту сообщается имя функции и подробности ожидаемых аргументов, и он ...

4 ответа

Что за звонок?

Я работаю над созданием ActiveX EXE с использованием VB6, и единственный полученный мной пример - все написано на Delphi. Читая пример кода, я заметил, что есть некоторые функции, подписи которых следуютдиректива SafeCallключевое слово. Вот ...

4 ответа

Как «перейти» в другую функцию в c?

В основном я пытаюсь смоделировать ассемблерный код на C. Вот код C: int main() { test(); main_next: printf("Hello, World!"); } void test() { goto main_next; }Пытаясь скомпилировать этот код (Linux 32 bit, gcc 4.6.3), я получил эту ...