Описание тега cdecl
Anything related to the `cdecl` calling convention, i.e. one of the common subroutine calling conventions used on systems with x86 architecture.
1
ответ
В соглашении о вызовах CDECL я могу повторно использовать аргументы, которые я поместил в стек?
В GCC cdecl Соглашение о вызовах. Могу ли я полагаться на аргументы, которые я поместил в стек, чтобы они были такими же после возврата вызова? Даже при смешивании ASM и C и с оптимизацией (-O2) включен?
09 авг '16 в 06:53
2
ответа
Ошибка cdecl: ожидаемый инициализатор перед
У меня проблема с соглашением о вызовах cdecl: void Test1(char* str, ...) // ok {} void cdecl Test2(char* str, ...) // error: expected initializer before 'Test2' {} int main() {} Что я должен сделать, чтобы компилятор распознал соглашение о вызовах …
06 янв '12 в 12:02
2
ответа
Соглашение о вызовах CDECL Вызывает странные предупреждения ASSEMBLY X86
Привет, люди. Я новичок в изучении ассемблера x86, я пытаюсь создать соглашение о вызовах CDECL из набора инструкций по шифрованию. Я полагаю, что я иду куда-то не так в процессе реализации конвенции. Ниже приведен оригинальный набор инструкций и фу…
02 апр '14 в 22:34
1
ответ
Что означает документация Apple, когда она указывает на правильное место для включения атрибутов ARC?
При наведении (без каламбура), чтобы уточнить, когда использовать __strong в объявлении переменной я наткнулся на эти строки в примечаниях к выпуску Переход к ARC: Вы должны правильно декорировать переменные. При использовании квалификаторов в объяв…
03 июн '12 в 12:58
2
ответа
Нужно ли сохранять состояние FPU здесь?
Я написал простую совместную многопоточную библиотеку. В настоящее время я всегда сохраняю и восстанавливаю состояние fpu с помощью fxsave / fxrstor при переключении в новый контекст. Но необходимо ли это в соглашении о вызовах cdecl? В качестве про…
12 мар '16 в 22:03
2
ответа
_cdecl соглашение о вызовах
В статье о соглашении о вызовах _cdecl автор упомянул: Освободить локальное хранилище Когда функция выделяет локальное временное пространство, она делает это, уменьшая с точки стека количество необходимого пространства, и этот процесс должен быть об…
28 фев '12 в 08:03
1
ответ
Присваивание функций std::function с одинаковой сигнатурой, но другое соглашение о вызовах не выполняется
Следующий компилируется и прекрасно работает с флагами mingw 4.7.2 и -m64. но с -m32 или с любым 32-разрядным выпуском mingw он не скомпилируется. это ошибка или мне не хватает флага компилятора? #include <iostream> #include <functional>…
31 янв '13 в 13:01
2
ответа
Ошибка C2664 из-за конфликта cdecl и myclass
Я пытаюсь присоединить старый кусок кода на C к моему нынешнему проекту VC++: // .h class DMSinv : public CDialog { double finte(double z); double ITFStolz(double Zp1, double Zp2, double Zc); }; // .cpp double Zcglob; double DMSinv::finte(double z) …
27 мар '13 в 11:47
3
ответа
Почему нет сопутствующей инструкции, чтобы уйти?
Просто быстро, почему на x86 нет сопутствующей инструкции? Сюда, pushl %ebp movl %esp,%ebp pushl $3 leave ret мог стать: enter #or something pushl $3 leave ret Разве это не просто быстрее в целом?
05 июл '13 в 06:13
2
ответа
Передача 64-битных функций C++ с "различными" соглашениями о вызовах в качестве параметров дает неоднозначную ошибку
Моя цель - легко извлечь прототип произвольной функции с соглашениями о вызовах __cdecl и __stdcall. Он отлично работает в 32-битной. Единственное, что меняется, это соглашение о вызовах в параметрах моей функции шаблона. Согласно Википедии:"При ком…
05 май '16 в 17:12
1
ответ
Нужна помощь в понимании макета стека
Реализуя стек-обходчик для отладчика, над которым я работаю, я достиг точки, чтобы извлечь аргументы для вызова функции и отобразить их. Для простоты я начал с соглашения cdecl в чистом 32-битном режиме (как отладчик, так и отладчик) и функции, кото…
01 янв '17 в 19:39
12
ответов
Как вы читаете объявления C?
Я слышал о некоторых методах, но ни один из них не застрял. Лично я стараюсь избегать сложных типов в C и пытаюсь разбить их на компонент typedef. Теперь я сталкиваюсь с необходимостью поддерживать некоторый унаследованный код от так называемого "тр…
18 сен '08 в 00:57
3
ответа
Как мне скомпилировать boost, используя соглашение о вызовах __cdecl?
У меня есть проект, скомпилированный с использованием __cdecl соглашение о вызовах (msvc2010) и я скомпилировали boost, используя тот же компилятор, используя настройки по умолчанию. Проект связан с Boost, но я во время выполнения получил сообщение …
24 апр '10 в 14:10
1
ответ
C++ и ПОЛНОСТЬЮ динамические функции
У меня проблема с объездными путями. Обходы, как вы все знаете, могут перемещаться только между 5 байтами пространства (то есть вызовом 'jmp' и адресом 4 байта). Из-за этого невозможно иметь функцию 'hook' в классе (метод), вы не можете предоставить…
04 май '12 в 15:17
1
ответ
Передать аргумент от C до сборки?
Как я могу передать аргумент из главной функции C в функцию ассемблера? Я знаю, что моя пользовательская функция должна выглядеть примерно так: void function(char *somedata) __attribute__((cdecl)); Теперь, как бы я использовал somedata в файле сборк…
02 дек '10 в 00:37
2
ответа
Обмен двух указателей int в сборке x86
Я хочу поменять местами два указателя int. Я могу сделать это в C, как это void swap(int* a, int* b) int temp = *a; *a = *b; *b=temp; Сейчас я пытаюсь сделать это в сборке, но, и терпите меня, я не понимаю, почему это не работает push %ebp mov %esp,…
22 апр '17 в 18:24
2
ответа
Что означает "#define __cdecl" в моем коде C++?
Я работаю над существующим проектом C++ с Visual Studio, и я обнаружил, что почти каждое объявление функции получает __cdecl перед именем функции, например:void __cdecl functionName(), Затем я перехожу к определению __cdecl, который находится в winn…
29 мар '17 в 14:54
1
ответ
Почему компилятор go "gc" использует другое соглашение о вызовах, чем C?
C использует cdecl, который я изучил и вызвал из сборки. Чувствуется достаточно хорошо, так зачем ломать совместимость? Зачем нужен был еще один съезд?
31 мар '13 в 22:44
1
ответ
C++, как объект-значение возвращается из функции в деталях
Встроенные типы, такие как int, char и т. Д., Могут быть возвращены из функции с использованием регистров, но что, если функция возвращает некоторый большой объект. Я полагаю, что стек процесса не может быть использован для такой проблемы, я прав? М…
18 ноя '14 в 22:16
1
ответ
Как читать и записывать байт из и в стандартный ввод / вывод с помощью Syscall в x86 с ассемблером NASM?
Я пытаюсь прочитать строку из stdin и распечатать ее обратно, используя x86, NASM и Syscalls. Чтение в байте будет функцией, а запись байта будет функцией. Я читаю строку из стандартного ввода и помещаю каждый символ в массив. Вот моя первоначальная…
15 апр '15 в 01:20