Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.09.2017, 23:01   #1
Player150
Пользователь
 
Регистрация: 21.07.2017
Сообщений: 12
По умолчанию Соглашение о вызове

Добрый вечер, никак пока не могу понять, для чего в компиляторе C++ имеется соглашение о вызове? Как я понял, данные соглашения в основном требуются для правильной очистки стека от аргументов, когда мы передаем их в стек? То есть если мы подключим функцию, которая была написана на ассемблере в исходный код, написанный на C++, тогда мне нужно будет подобрать правильное соглашение для ее вызова? Всмысле мне надо будет узнать какое соглашение использовал программист на ассемблере и подстроить свою программу под это?
Player150 вне форума Ответить с цитированием
Старый 06.09.2017, 23:19   #2
Player150
Пользователь
 
Регистрация: 21.07.2017
Сообщений: 12
По умолчанию

Я вот также не пойму, в асемблере тоже есть соглашения о вызовах?
Player150 вне форума Ответить с цитированием
Старый 06.09.2017, 23:49   #3
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Да, да всё верно.
Цитата:
Сообщение от Player150 Посмотреть сообщение
в асемблере тоже есть соглашения о вызовах?
Скажем да.
Дело в том что каждый компилятор имеет своё соглашения. Но все они работают с ОС у которой они свои.
Если мы берём ОС от майкросфота и компилятор Си от майкрософта и компилятор ассемблера от майкрософта. То у них в принципе проблем будет минимум.

Взять DOS и BIOS они были написаны на ассемблере там параметры передаются через регистры. - registers или fastcall. А в Си они передавались через стек - так как изначально он делался под 3 разных архитектуры ЦП. - cdecl
А потом когда появился виндоус они решили изменить соглашение и получился- stdcall.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 09.09.2017, 20:47   #4
Player150
Пользователь
 
Регистрация: 21.07.2017
Сообщений: 12
По умолчанию

Спасибо
Player150 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
О рекурсивном вызове hoz Общие вопросы .NET 6 08.11.2015 11:43
Соглашение о вызове функций (выравнивание стека) Полный 30h Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 27 29.12.2014 20:07
Лицензионное соглашение Photoshop CS4 VistaSV30 Софт 5 13.12.2009 10:21
Соглашение о кодировании .NET SunKnight Общие вопросы .NET 3 08.11.2009 19:01
Лицензионное соглашение... Jupiter Свободное общение 18 03.05.2009 10:39