Результаты поиска по запросу "calling-convention"
беспокоиться о такого рода микро-оптимизации.
ичок в C, и есть одна вещь, которую я не могу понять. Когда функция возвращает что-то не больше регистра, мой компилятор помещает это в EAX. Когда я возвращаю большую структуру (не указатель, а саму структуру) - она возвращается ...
Поведение 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; ...
Вызываемая функция отвечает за выделение своего собственного стекового фрейма, сохраняя 16-байтовое выравнивание в стеке. Эта операция выполняется разделом кода, называемым прологом, который компилятор помещает перед телом подпрограммы. После тела подпрограммы компилятор помещает эпилог, чтобы восстановить процессор до состояния, в котором он находился до вызова подпрограммы.
у понять это требование для старых систем PPC RISC и даже для x86-64, но для старых проверенных x86? В этом случае стек должен быть выровнен только по 4-байтовым границам. Да, некоторые инструкции MMX / SSE требуют выравнивания по 16 байт, но ...
, не могу определить параметр или что-то для передачи информации, которую вы действительно хотите. (Или положить в базовый класс или что-то ...)
жный дубликат: Как я могу найти метод, который вызвал текущий метод? [https://stackoverflow.com/questions/171970/how-can-i-find-the-method-that-called-the-current-method] У меня есть метод в объекте, который вызывается из нескольких мест ...
Библиотека заключается в том, что разработчик мог забыть правильно освободить стек, или злоумышленник может внедрить некоторый код, повредив стек DLL (например, путем перехвата API), который затем не проверяется вызывающей стороной. У меня нет примеров безопасности CVS, показывающих, что моя интуиция верна.
тоящее время я занимаюсь разработкой библиотеки C ++ для Windows, которая будет распространяться в виде DLL. Моя цель - максимизировать бинарную совместимость; более точно, функции в моей DLL должны быть пригодны для использования из ...
CLR / Fastcall: как типы больших значений внутренне передаются вызываемым функциям?
Просто из любопытства: типы значений обычно копируются, и JIT-компилятор, похоже, использует соглашение вызовов Fastcall от Microsoft при вызове метода. Это помещает первые несколько аргументов в регистры для быстрого доступа. Но как типы больших ...
Соглашения о вызовах x86_64 и стековые фреймы
Я пытаюсь разобраться в исполняемом коде, который GCC (4.4.3) генерирует для машины x86_64, работающей под Ubuntu Linux. В частности, я не понимаю, как код отслеживает кадры стека. В старые времена в 32-битном коде я привык видеть этот «пролог» ...
Написание голых функций с собственным прологом и кодом эпилога в Visual Studio
Я пишу некоторый код плагина в dll, который вызывается хостом, который я не могу контролировать. Хост предполагает, что плагины экспортируются как функции __stdcall. Хосту сообщается имя функции и подробности ожидаемых аргументов, и он ...
Что за звонок?
Я работаю над созданием ActiveX EXE с использованием VB6, и единственный полученный мной пример - все написано на Delphi. Читая пример кода, я заметил, что есть некоторые функции, подписи которых следуютдиректива SafeCallключевое слово. Вот ...
Как «перейти» в другую функцию в c?
В основном я пытаюсь смоделировать ассемблерный код на C. Вот код C: int main() { test(); main_next: printf("Hello, World!"); } void test() { goto main_next; }Пытаясь скомпилировать этот код (Linux 32 bit, gcc 4.6.3), я получил эту ...