Вопросы с тегом «abi»

(Двоичный интерфейс приложения) определяет интерфейс низкого уровня между программами, библиотеками и операционной системой. Например, какие регистры используются для передачи параметров функции.

500
Допускает ли стандарт C ++ неинициализированный bool для сбоя программы?

Я знаю, что «неопределенное поведение» в C ++ может позволить компилятору делать все, что он захочет. Однако у меня произошел сбой, который удивил меня, так как я предположил, что код достаточно безопасен. В этом случае настоящая проблема возникла только на конкретной платформе, использующей...

493
Что такое двоичный интерфейс приложения (ABI)?

Я никогда не понимал, что такое ABI. Пожалуйста, не указывайте мне статью в Википедии. Если бы я мог это понять, я бы не стал публиковать такие длинные сообщения. Это мое мышление о различных интерфейсах: Пульт дистанционного управления - это интерфейс между пользователем и телевизором. Это...

194
Разница между API и ABI

Я новичок в системном программировании Linux, и я столкнулся с API и ABI, читая системное программирование Linux . Определение API: API определяет интерфейсы, с помощью которых одна часть программного обеспечения взаимодействует с другой на уровне источника. Определение ABI: Принимая во внимание,...

157
Есть ли недостатки в передаче структур по значению в C, а не в передаче указателя?

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

147
Каковы соглашения о вызовах для системных вызовов UNIX и Linux на i386 и x86-64

Следующие ссылки объясняют соглашения о системных вызовах x86-32 для UNIX (BSD-версия) и Linux: http://www.int80h.org/bsdasm/#system-calls http://www.freebsd.org/doc/en/books/developers-handbook/x86-system-calls.html Но каковы соглашения о системных вызовах x86-64 в UNIX и...

106
Как безопасно передавать объекты, особенно объекты STL, в и из библиотеки DLL?

Как передать объекты класса, особенно объекты STL, в C ++ DLL и обратно? Мое приложение должно взаимодействовать со сторонними плагинами в виде файлов DLL, и я не могу контролировать, на каком компиляторе созданы эти плагины. Я знаю, что не существует гарантированного ABI для объектов STL, и меня...

103
Безопасно ли связывать объекты C ++ 17, C ++ 14 и C ++ 11

Предположим, у меня есть три скомпилированных объекта, созданных одним и тем же компилятором / версией : A был скомпилирован со стандартом C ++ 11 B был скомпилирован по стандарту C ++ 14 C был скомпилирован со стандартом C ++ 17 Для простоты предположим, что все заголовки были написаны на C ++ 11...

102
В каком направлении растет стек в большинстве современных систем?

Я готовлю некоторые учебные материалы на C и хочу, чтобы мои примеры соответствовали типичной модели стека. В каком направлении растет стек C в Linux, Windows, Mac OSX (PPC и x86), Solaris и самых последних версиях Unix?...

85
Почему T * может быть передано в регистр, а unique_ptr <T> не может?

Я смотрю выступление Чендлера Каррута в CppCon 2019: Нет абстракций с нулевой стоимостью в нем он приводит пример того, как он был удивлен тем, сколько накладных расходов вы понесли, используя std::unique_ptr<int>овер int*; этот сегмент начинается примерно в момент времени 17:25. Вы можете...

14
Почему стековая память выделяется, когда она не используется?

Рассмотрим следующий пример: struct vector { int size() const; bool empty() const; }; bool vector::empty() const { return size() == 0; } Сгенерированный код сборки для vector::empty(по clang, с оптимизацией): push rax call vector::size() const test eax, eax sete al pop rcx ret Почему он выделяет...