Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.88
Archi100
Сообщений: n/a
#1

Дайте информацию о _cdecl, _fastcall,_stdcall - C++

07.02.2009, 20:17. Просмотров 1977. Ответов 3
Метки нет (Все метки)

что такое _cdecl, _fastcall,_stdcall как оно при вызове функции ведёт себя с памятью (что очищает) и как декорируется (в различных вариантах). заранее спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.02.2009, 20:17     Дайте информацию о _cdecl, _fastcall,_stdcall
Посмотрите здесь:

C++ Дайте совет :)
C++ Дайте пожалуйста ответы
дайте подсказку. Страуструп C++
C++ дайте предстовления о ИИ
Дайте совет по оптимизации C++
C++ Дайте задач
C++ Дайте, пожалуйста, контрпримеры
Дайте исходник на сингелтон C++
Дайте задачу новичку C++
Дайте совет C++
Дайте определение терминам C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
al_diablo
Сообщений: n/a
08.02.2009, 10:36     Дайте информацию о _cdecl, _fastcall,_stdcall #2
вообще-то от этик функций мало что зависит, например __fastcall предназначен для быстрого вызова функции, но если память заполнена, то она не поможет, вряд ли полное описание где либо, кроме MSDN. Но я не замечал, никакой разницы
AmbX
0 / 0 / 0
Регистрация: 21.12.2007
Сообщений: 122
08.02.2009, 10:53     Дайте информацию о _cdecl, _fastcall,_stdcall #3
Разница появляется на уровне машинного кода, это во первых.
Например заботится ли функция сама об освобождении стека или нет.
Дальше - передача параметров слева направо или наоборот.
И есть еще отличия.
В основном это нужно брать во внимание при взаимодействии
функций из разных языков. С -> С++ С++ и VB (Java)
AmbX
0 / 0 / 0
Регистрация: 21.12.2007
Сообщений: 122
08.02.2009, 11:08     Дайте информацию о _cdecl, _fastcall,_stdcall #4
Arguments:
_cdecl (Pushed R to L)
_stdcall (Pushed R to L)
_fastcall (Note 3)

Stack cleaned up by:
_cdecl (Caller)
_stdcall (Called)
_fastcall (Called)

Naming convention:
_cdecl (Prepend '_')
_stdcall (Note 1)
_fastcall (Note 2)

Note 1: The _stdcall calling convention decorates each function name by prepending an underscore character (as the _cdecl convention does) and appending an at sign '@' and the decimal representation of the number of bytes of stack space required. Each argument is widened to a multiple of four bytes.


Note 2: The _fastcall calling convention decorates each function name by prepending an at sign '@' and appending an at sign and the decimal representation of the number of bytes of stack space required. Each argument is widened to a multiple of four bytes.


Note 3: The first two function arguments that require four or fewer bytes are placed into registers. The caller pushes the remainder of the parameters onto the stack from right to left. This behavior may change in future versions.
Yandex
Объявления
08.02.2009, 11:08     Дайте информацию о _cdecl, _fastcall,_stdcall
Ответ Создать тему
Опции темы

Текущее время: 02:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru