|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
06.09.2017, 23:01 | #1 |
Пользователь
Регистрация: 21.07.2017
Сообщений: 12
|
Соглашение о вызове
Добрый вечер, никак пока не могу понять, для чего в компиляторе C++ имеется соглашение о вызове? Как я понял, данные соглашения в основном требуются для правильной очистки стека от аргументов, когда мы передаем их в стек? То есть если мы подключим функцию, которая была написана на ассемблере в исходный код, написанный на C++, тогда мне нужно будет подобрать правильное соглашение для ее вызова? Всмысле мне надо будет узнать какое соглашение использовал программист на ассемблере и подстроить свою программу под это?
|
06.09.2017, 23:19 | #2 |
Пользователь
Регистрация: 21.07.2017
Сообщений: 12
|
Я вот также не пойму, в асемблере тоже есть соглашения о вызовах?
|
06.09.2017, 23:49 | #3 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Да, да всё верно.
Скажем да. Дело в том что каждый компилятор имеет своё соглашения. Но все они работают с ОС у которой они свои. Если мы берём ОС от майкросфота и компилятор Си от майкрософта и компилятор ассемблера от майкрософта. То у них в принципе проблем будет минимум. Взять DOS и BIOS они были написаны на ассемблере там параметры передаются через регистры. - registers или fastcall. А в Си они передавались через стек - так как изначально он делался под 3 разных архитектуры ЦП. - cdecl А потом когда появился виндоус они решили изменить соглашение и получился- stdcall.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
09.09.2017, 20:47 | #4 |
Пользователь
Регистрация: 21.07.2017
Сообщений: 12
|
Спасибо
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
О рекурсивном вызове | 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 |