Зачем вам список ABI? Если не совпадают ABI двух модулей вы в первую очередь не сможете вызвать функции/методы ваших межмодульных интерфейсов да хотя бы из-за разницы в name mangling или способа передачи аргументов.
> не гарантируется что оно будет одинаковое для всех компиляторов даже под данную платформу, а значит для интерфейсов нужно явно указывать выравнивание.
В пределах одного ABI будет одинаковое, а больше ни для какой практической цели не требуется.
Ага, да, если бы всё было так просто (некоторые члены комитета стандартизации даже не помнят наизусть всех правил POD'ности). В C++11 даже standard layout структуры ввели, так как POD сочетает слишком много случаев использования, а концепция одна.
Не для создания видимости. Просто первый код паравиртуализированных драйверов для их системы виртуализации был настолько плох (например, там не соблюдались базовые coding style guidelines и даже не постыдились притянуть тип NTSTATUS в ядро Linux).
У меня сейчас нет возможности собирать тестовый стенд и пытаться воспроизвести ошибку. Но в багрепорте приведено достаточно технической информации чтобы перестать сомневаться в том, что на *его* системе действительно kernelbase.dll грузится прямо в середину АП. Причину этого — «интересные» драйверы с хуками, необычная комбинация установленных обновлений или что-либо третье — предстоит установить. Никто же не говорит, что эта проблема проявляется всегда и у всех.
Если хотите покопаться — начните с рассмотрения карты памяти на вашей системе, куда грузится kernelbase.dll? Загружены ли в вашей программе остальные DLL, загруженные в Go?
>> ^name^+~\w*~+^name^+~\([\^name\^\w*\^name\^\w*\,?]*\)\w*~
Как вы лихо всю грамматику декларатора описали таким простым выражением.
Может стоит для поиска по AST C++ использовать подходящие инструменты, например, Clang? www.youtube.com/watch?v=mVbDzTM21BQ
/usr/games/boggle что ли?
В пределах одного ABI будет одинаковое, а больше ни для какой практической цели не требуется.
Да, так как не все процессоры поддерживают обращение к невыровненным данным.
> операции с отдельными битовыми полями работают медленнее, чем маски.
А это почему?
Почитайте про Smalltalk и Lisp image.
Если хотите покопаться — начните с рассмотрения карты памяти на вашей системе, куда грузится kernelbase.dll? Загружены ли в вашей программе остальные DLL, загруженные в Go?