Описание тега fastcall

Все, что связано с соглашением о вызовах `fastcall`, т. Е. Одним из общих соглашений о вызовах подпрограмм, используемых в системах с архитектурой x86.
1 ответ

Сбой функции FastCall

Пытаюсь вызвать функцию процесса, используя соглашение fastcall из моей программы, но каждый раз получаю сбой. Прошло столько времени и не могу решить это... нужна помощь, пожалуйста... Вот вся необходимая информация и мои попытки: На рисунке показа…
09 авг '17 в 12:27
0 ответов

Выходные параметры с fastcall из cmake-js

Я использую fastcall для вызова функции в DLL или SO написано в C, это зависит от операционной системы. Есть функция с этой подписью: int GetVersion(char* v1, char* v2) Результатом будет 0 в случае успеха и другое значение в противном случае. Параме…
18 окт '17 в 02:17
2 ответа

Пример FastCall GCC

Может ли кто-нибудь привести пример использования fastcall для использования с gcc? Если возможно, не могли бы вы предоставить эквивалентный вызов без использования fastcall и объяснить, как они будут отличаться?
23 мар '09 в 04:46
0 ответов

Проблема с доступом к библиотеке C++ с использованием fastcall. (JavaScript, nodejs, интерфейс сторонних функций)

Я пытался использовать fastcall, это мой первый раз, когда я использую fastcall и интерфейс сторонних функций, я пытался загрузить datatable.dll, это вызывает ошибку, пытался пропустить каждый возможный путь к библиотеке (абсолютный и относительный)…
07 дек '17 в 16:57
1 ответ

Украшение имени Fastcall в Windows нелегко переносить

Я использую mingw в Windows для компиляции кода на C и сборки, некоторые функции в которой имеют соглашение о вызовах fastcall (как его определяет Microsoft). Если я использую __fastcall в объявлении, mingw делает то, что делает Windows, и name укра…
22 июн '14 в 14:34
2 ответа

Адресация переменных (или что генерирует ML64?)

У меня есть файл ASM, написанный для X64. Это обеспечивает функцию листа. Файл был собран с MASM64/ML64. C-псевдо-код с подписью: int GenerateBlock(byte* ptr, size_t size, unsigned int safety) { if (ptr == NUL) return 0; /*FAIL*/ ... } Вот та же час…
15 окт '15 в 01:12
1 ответ

FastCall в 64 бит

Я читал о различиях в 32-битных соглашениях о вызовах. fastcall против stdcall испытание это. Из того, что я прочитал, была большая путаница с этими двумя соглашениями, и 64-разрядная версия была стандартизирована, чтобы избежать этой путаницы. Я до…
10 июл '12 в 22:00
2 ответа

Почему я не должен использовать __fastcall вместо стандартного __cdecl?

Я слушал, как некоторые люди говорили __fastcall быстрее чем __cdecl а также __stdcall вызвать в регистре два параметра вместо одного из других вызовов; но, с другой стороны, это не стандарт, используемый в C. Я хотел бы знать, что делает __fastcall…
26 окт '12 в 15:21
2 ответа

MASM x86 объявление функции fastcall... как?

Я пытаюсь заставить программу VisualStudio 2010 C вызывать подпрограмму ассемблера fastcall. Это объявление в коде C: extern boolean _fastcall InNonSuspendableCriticalRegion(DWORD); Это объявление в коде сборки: public @InNonSuspendableCriticalRegio…
12 авг '12 в 18:54
2 ответа

Что лучше объявить для соглашения о вызовах программы Windows?

Я прочитал статью о Calling convention (__stdcall, __fastcall, паскаль, cdecl и т. д...) И мне интересно: почему часто __stdcall (WinAPI) объявляется для функции WinMain()? Пока я читаю, __stdcall работает со стеком, __fastcall работает с регистрами…
06 сен '13 в 18:07
1 ответ

Влияние на производительность встроенной функции с вызовом fastcall

У меня есть функция расчета CRC, которая вызывается с очень высокой частотой. Я уже объявил как inline я пытался сделать это __attribute((hot))__ но я не уверен, что это что-то покупает. Я думаю о том, чтобы сделать это fastcall, Согласно документац…
05 июл '12 в 21:36
0 ответов

Скомпилированный код сборки x86 gcc: поведение fastcall

Я работаю над некоторыми x86 задачи анализа программы сборки, и я пытаюсь выяснить поведение fastcall. Хотя на 32-bit x86 платформа, стек определяется для передачи параметров функции в вызывающем преобразовании. Тем не менее, я заметил, что многие в…
21 сен '16 в 23:57
2 ответа

Для чего используется ключевое слово fastcall в Visual C?

Я видел fastcall обозначение добавлено перед многими функциями. Почему это используется?
20 май '12 в 06:28
4 ответа

Fastcall действительно быстрее?

Действительно ли соглашение о вызовах fastcall действительно быстрее, чем другие соглашения о вызовах, такие как cdecl? Существуют ли какие-либо тесты, показывающие, как на производительность влияет соглашение о вызовах?
02 фев '10 в 23:56
1 ответ

Почему MS FastCall на x86 не использует EAX в качестве первого аргумента?

Согласно википедии: "Соглашение Microsoft или GCC __fastcall (также известное как __msfastcall) передает первые два аргумента (оцениваются слева направо), которые соответствуют ECX и EDX. Остальные аргументы помещаются в стек справа налево". Почему …
04 фев '14 в 18:23
1 ответ

fastcall: что происходит со стеком?

В настоящее время я изучаю сборку x64 самостоятельно и не могу понять, что происходит со стеком при вызове процедуры сборки из C++. Из того, что я в настоящее время понимаю из MSDN и Intel, первые 4 параметра целых чисел / с плавающей запятой хранят…
24 фев '14 в 15:29
1 ответ

C вручную вызвать функцию со стеком и регистром

Я знаю, что это большая задача для манипулирования стеком, но я думаю, что это будет хорошим уроком для меня. Я искал в Интернете, и я нашел соглашение о вызовах. Я знаю, как это работает и почему. Я хочу имитировать некоторые из "стека очистки Call…
09 авг '13 в 12:22
1 ответ

fastcall как использовать для более чем 4 параметров

Я пытался построить функцию в ассемблере (FASM), которая использовала более 4 параметров. в x86 он работает нормально, но я знаю, что в x64 с fastcall вы должны пролить параметры в теневое пространство в порядке rcx,rdx,r8,r9 Я прочитал, что для 5 и…
26 май '14 в 13:04
0 ответов

Можно ли вручную создать вызов функции типа __fastcall

Я пытаюсь выполнить вызов функции (MSVC, windows x64) на основе указателя функции (поиск из внутренней таблицы имен функций), затем передать аргумент - снова на основе описаний функций в таблице поиска функций (преобразовать из описания типа в соотв…
1 ответ

Вызов функции на C в сборку

Если у нас есть следующая функция: int func(int n, float f, char* s, double* d); Вызов функции в Assembly будет так: movl <n>, %ecx movl <s>, %edx pushl <d> pushl <f> call func Это правильно? Почему именно в таком порядке? Эт…
01 май '21 в 17:47