Форум программистов «Весельчак У»
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
Начало
Наши сайты
Галерея
Весельчак У
Наша Вики
Хранилище
Проекты
Правила
Правила форума
Правила русского языка
Помощь
Поиск
Календарь
Почта
Войти
Регистрация
Форум программистов «Весельчак У»
>
Программирование
>
C/C++
>
WinAPI & Visual C++
(Модератор:
Вад
) > Тема:
Передача аргументов в регистрах
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Передача аргументов в регистрах (Прочитано 9901 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Daniloff
Помогающий
Offline
Передача аргументов в регистрах
«
:
11-01-2007 17:40 »
можно ли на VC++ заставить компилятор передавать аргументы в регистрах?
Знаю что есть модификаторы cdecl, stdcall, pascal - для регистрового обмена тоже нужен один из них?
Или VC в принципе так не умеет?
Записан
RXL
Технический
Администратор
Offline
Пол:
Re: Передача аргументов в регистрах
«
Ответ #1 :
11-01-2007 18:29 »
Daniloff
, зависит от компилятора. В Borland используется атрибут __fastcall для определения ф-ии. В других компиляторах - не знаю. Следует посмотреть доку по каомпилятору.
Записан
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Serg79
Команда клуба
Offline
Пол:
Re: Передача аргументов в регистрах
«
Ответ #2 :
12-01-2007 04:50 »
В VC++ 6.0 так же __fastcall.
Его можно установить в свойствах проекта или при определении функции указывать данный метод вызова.
Записан
npak
Команда клуба
Offline
Пол:
Re: Передача аргументов в регистрах
«
Ответ #3 :
12-01-2007 12:01 »
А зачем нужно на современных процессорах передавать параметры через регистры?
Доступ к данным, размещённым в кэше и пред-загрузка данных из памяти в конвейре, ИМХО, позволяют вызывать функцию той же скоростью, что и при передаче параметров через регистры. Есть какие-то фактические данные, которые показывают, что вызов с передачей параметров через регистры происходит быстрее, чем вызов с передачей параметров через память?
Записан
UniTesK -- индустриальная технология надежного тестирования.
http://www.unitesk.com/ru/
Daniloff
Помогающий
Offline
Re: Передача аргументов в регистрах
«
Ответ #4 :
14-01-2007 20:10 »
Цитата: npak от 12-01-2007 12:01
А зачем нужно на современных процессорах передавать параметры через регистры?
Просто вызываемая процедура пишется на Ассемблере и для перекачки аргументов в регистры приходится добавлять в код лишние строки...
Записан
Serg79
Команда клуба
Offline
Пол:
Re: Передача аргументов в регистрах
«
Ответ #5 :
15-01-2007 04:47 »
Цитата: Daniloff от 14-01-2007 20:10
Просто вызываемая процедура пишется на Ассемблере и для перекачки аргументов в регистры приходится добавлять в код лишние строки...
Если пишишь функцию на асемблере, то тем более для этой функции используй
'C'
-ный метод вызовов функций и возвращения результата.
Т.е. все параметры через стек, результат в
'eax'
.
«
Последнее редактирование: 13-12-2007 21:03 от Алексей1153++
»
Записан
Daniloff
Помогающий
Offline
Re: Передача аргументов в регистрах
«
Ответ #6 :
21-01-2007 16:22 »
Цитата: Serg79 от 15-01-2007 04:47
Если пишишь функцию на асемблере, то тем более для этой функции используй
'C'
-ный метод вызовов функций и возвращения результата.
Т.е. все параметры через стек, результат в
'eax'
.
Не вижу смысла... Зачем что-то мудрить со стеком, если можно просто передать 2-3 аргумента в регистрах? Кстати,
__fastcall
отлично работает, спасибо за подсказку!
«
Последнее редактирование: 13-12-2007 21:03 от Алексей1153++
»
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Форум программистов «Весельчак У»
>
Программирование
>
C/C++
>
WinAPI & Visual C++
(Модератор:
Вад
) > Тема:
Передача аргументов в регистрах
Загружается...