Оглавление
Соглашение о вызове
-
Обзор соглашений о вызовах
- Соглашения о вызовах определяют, как аргументы передаются и возвращаемые значения возвращаются между функциями.
- Различные архитектуры имеют разные соглашения о вызовах, включая регистровые и стековые.
-
Регистровые соглашения
- Регистровые соглашения используют регистры для передачи аргументов и возвращаемых значений.
- MIPS использует регистры для передачи аргументов, а возвращаемое значение сохраняется в регистре $ra.
- SPARC использует окна регистров для передачи аргументов и имеет разные соглашения для разных типов регистров.
-
Стек-ориентированные соглашения
- Стек-ориентированные соглашения используют стек для передачи аргументов и возврата значений.
- System V ABI использует стек для передачи аргументов, а возвращаемое значение сохраняется в стеке.
- IBM System/360 использует стек для передачи аргументов и сохранения возвращаемого значения в регистре 15.
-
Потоковый код и PL/I
- Потоковый код передает все аргументы и возвращаемые значения через стек.
- PL/I передает аргументы по ссылке, но может использовать и другие соглашения.
-
Другие соглашения
- Существуют и другие соглашения о вызовах, такие как IBM 1130 и Motorola 68000, которые имеют свои особенности.
-
Общие рекомендации
- Соглашения о вызовах могут влиять на производительность и переносимость кода.
- Существуют руководства и рекомендации по использованию различных соглашений о вызовах.