Почему компилятор go «gc» использует другое соглашение о вызовах, чем C?

C использует cdecl, который я изучил и вызвал из сборки. Чувствуется достаточно хорошо, так зачем ломать совместимость? Зачем нужен был другой съезд?

7 голосов | спросил galva 1 AMpMon, 01 Apr 2013 02:44:08 +040044Monday 2013, 02:44:08

1 ответ


0

Потому что нет преимущества в том же соглашении о вызовах. Код Go и код C не могут вызывать друг друга напрямую, даже если соглашение о вызовах будет одинаковым, поскольку Go использует разделенные стеки.

OTOH, это имеет смысл в gccgo, так как gcc поддерживает C-стеки для некоторых архитектур. И, IIRC, там соглашение о вызове из-за этого совместимо. (Подробнее здесь .)

Отказ от ответственности: я никогда не использовал gccgo.

ответил zzzz 1 AMpMon, 01 Apr 2013 02:54:08 +040054Monday 2013, 02:54:08

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132