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

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

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

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

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

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

4
Каковы соглашения о вызовах для системных вызовов 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 и Linux?
147 linux  unix  assembly  x86-64  abi 

12
Почему логическое значение имеет размер 1 байт, а не 1 бит?
В C ++ Почему логическое значение имеет размер 1 байт, а не 1 бит? Почему нет таких типов, как 4-битные или 2-битные целые числа? Я упускаю перечисленное выше при написании эмулятора для процессора

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

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

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

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

1
Почему стековая память выделяется, когда она не используется?
Рассмотрим следующий пример: 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 Почему он выделяет пространство стека? Это не …
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.