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

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

Войти
Регистрация
Восстановить пароль
 
anubis1768
4 / 4 / 0
Регистрация: 23.02.2013
Сообщений: 151
#1

fastcall & inline - C++

23.03.2013, 17:15. Просмотров 416. Ответов 1
Метки нет (Все метки)

Здравствуйте, я бы хотел спросить когда нужно использовать эти комманды. Когда использовать inline я примерно знаю:
когда функция маленькая и используется очень часто. То, что fastcall перемещает аргументы не в стек, а сразу в регистры знаю. fastcall нужно использовать когда много аргументов? И есть ли смысл вообще так стремится к оптимизации, если компилятор сам знает что нужно оптимизировать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2013, 17:15     fastcall & inline
Посмотрите здесь:

Inline Assembler & C++ - C++
int main(int argc, char *argv) { perevod(); cout<<"Type Esc to Escape \n"; __asm { mov ah,01h ...

inline - C++
В хедере определён класс со static-методами, в исходнике реализация этих методов. Один из методов определяется с ключевым словом inline....

inline explicit - C++
Почему ошибка? #include <iostream> class A { int i; public: explicit A(int x = 0); void show() {std::cout << "i = "...

inline функции - C++
Как рабоает функция inline, и какие у неё преимущества? Если она такая крутая как я понял, то зачем простые функции??

Inline-метод - C++
Как можно декларировать inline-метод класса не используя ключевое слово inline??

Описатель inline - C++
Описатель inline должен располагаться только в прототипе или определении функции или и там, и там?

Inline функции - C++
Друзья!Инлайн функции могу быть определены только внтури класса?Или могут быть определены вне класса?Если вне,то как?Спасибо!

inline функции - C++
Добрый вечер. Хотелось бы узнать, есть ли минусы у inline функций кроме увеличения размера файла? Везде пишут что использование "жирных"...

Класс, inline - C++
Все ли функции класса по умолчанию содержат спецификатор inline? Нужно ли его писать перед функциями класса?

inline функция - C++
Помогите плиз, трудности с функцией inline. Внешняя функция exam заносит в объект класса Stud результаты сессии. \\ вот часть задания по...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nagdiel
114 / 114 / 3
Регистрация: 23.12.2012
Сообщений: 195
23.03.2013, 20:10     fastcall & inline #2
1.
Цитата Сообщение от anubis1768 Посмотреть сообщение
fastcall нужно использовать когда много аргументов?
для предметного обсуждения хотелось бы узнать, сколько в штуках по Вашему это "много"? Для того чтобы выяснить, сколько параметров можно передать через регистры, следует смотреть документацию для конкретного компилятора. Ну а если лень изучать документацию, то хотя бы на википедии посмотреть:
Кликните здесь для просмотра всего текста
В компиляторе Borland, для соглашения __fastcall, называемого также register,[1] параметры передаются слева направо в eax, edx, ecx и, если параметров больше трёх, в стеке, также слева направо. Указатель стека на исходное значение возвращает вызываемая подпрограмма.

Соглашение __fastcall Microsoft, также называемое __msfastcall, в 32-хразрядной версии компилятора Microsoft,[2] а также компилятора GCC,[3] определяет передачу первых двух параметров слева направо в ecx и edx, а остальные параметры передаются справа налево в стеке. Очистку стека производит вызываемая подпрограмма.

Для x64 целей компилятор Microsoft VisualStudio 2010 CL принимает данное соглашение по умолчанию, остальные игнорируются, даже если заданы явно. Передача параметров в данном случае происходит при помощи 4х 64х разрядных регистра: rcx, rdx, r8, r9. В случае если параметров больше — остальные передаются через стек.


2. Не следует сводить оптимизацию программы исключительно к оптимизации каждой строчки программного кода. Иногда достаточно улучшить работу одного или "нескольких узких мест", которые существенно влияют на производительность.

3. Современные компиляторы проводят большую работу по оптимизации программного кода, однако они не идеальны, так что у программиста должна быть возможность явно указать те или иные приемы оптимизации, или же наоборот запретить их.
Ответ Создать тему
Опции темы

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