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

Передача параметров в функцию - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Номер элемента массива http://www.cyberforum.ru/cpp-beginners/thread1330.html
Собсно сабж. Подскажите нубу, как узнать номер элемента массива. Ну вот к примеру такая прога: которая просит ввести строку и выдаёт номер (порядковый) элемента массива который равен, ну к примеру 'A': #include<stdio.h> #include<conio.h> #include<string.h> void main() { clrscr(); int a; char MAS;
C++ Не могу справиться с задачей на BorlC++ Дерево Пифагора – такая вещь, когда все начинается с квадрата, который на одной из сторон имеет равнобедренный прямоугольный треугольник. Катеты этих треугольников равны и являются сторонами новых квадратов. И так фигурка разрастается. Cos(a) sin(a) 0 T= -sin(a) cos(a) 0 -x0*(cos(a)-1)+ -x0*sin(a)- ... http://www.cyberforum.ru/cpp-beginners/thread1318.html
C++ Есть вопрос по сетевому программированию
Пишу прогу для поиска файлов в сети по заданной маске. Можно ли использовать процедуры FindFirstFile, FindNextFile в асинхронном режиме? Или какими другими их можно заменить?
Как узнать, что делается с файлами? C++
Как узнать какие файлы сейчас использует операционная система Windows, в частности: читает, пишет, используются, перемещается, копируется, удаляется. Путь тотального анализа диска не подойдет. Неплохо так же узнать, какие процессы сейчас открыты (связка: процесс – файл на диске). Интересуют API функции, можно программные тексты на СИ. П.С. FileMon for Windows самая близкая к задаче.
C++ Надо сделать несколько курсоров мыши на экране http://www.cyberforum.ru/cpp-beginners/thread1289.html
Подскажите, возможно ли реализовать такую задачу: Нужно сделать одновременно несколько курсоров мыши на экране. Расположены они к примеру на определённом расстоянии друг от друга и при движении мыши двигаются все одновременно, при нажатии на левую кнопку мыши, нажимаются сразу все курсоры мыши. Очень надо реализовать! Помогите!
C++ Помогите с преобразованием строк Помогите плиз. м.б. кто-нибудь знает функцию для преобразования AnsiString в char* подробнее

Показать сообщение отдельно
1doma
Сообщений: n/a
20.02.2007, 23:18
Реальная проблема (во всяком случае, из тех, которые мне известны) лишь в том, что fastcall не столь стандартизирован, как cdecl или stdcall - в компиляторах Microsoft и Borland (Watcom тоже, но про него я знаю мало) он реализован по разному:
- Microsoft: передача первых двух параметров в регистрах ecx и edx, остальные через стек справа-налево (как cdecl или stdcall);
- Borland: передача первых трех параметров в регистрах eax, edx и ecx, остальные через стек _слева-направо_ (как pascal; читал, что Borland впервые ввела этот тип в Delphi).

В результате могут возникнуть сложности при использовании библиотек РАЗНЫХ компиляторов. Хотя, fastcall практически не используется для экспорта, так что вероятность нарваться на такое невелика.

По скорости в типичных приложениях fastcall на ~2% быстрее cdecl. Можно выиграть в скорости, создавая безфреймовые функции. С другой стороны, вызываемая функция может "испортить" содержимое регистра, следовательно, его требуется где-то сохранять, а это тоже потеря...

Разумеется fastcall имеет смысл, когда функция сразу использует данные в регистрах по назначению без необходимости их пушить в стек, а затем заново извлекать. А если в начале функции идет вызов API или чего другого, то регистры приходится все равно пушить\попить, если они еще понадобятся.

Поэтому подход должен быть индивидуальным. Fastcall рулит для простых и быстрых функций, которые сразу используют переданные параметры без необходимости их пушить в стек. Если же регистры приходится пушить, или функция имеет большое число параметров, или работает она сравнительно долго, то fastcall ничего хорошего не дает.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru