Size: a a a

2020 December 04

IZ

Ilia Zviagin in pro.cxx
Побитый Кирпич
А потом начинаются нюансы - как сделать это эффективно? как сделать это с сохранением совместимости при изменении структуры данных? И уже всё не так просто
ОК, я знаю литературу по этому вопросу — любая книга по MFC и может быть Qt .
источник

R

Rob in pro.cxx
Вопрос, есть как может быть так что а mangled имени функции ( gcc  4 4, x64) в библиотеке параметр кодирован как int (32 bit)  но в тоже время в вызывающем эту функцию коде в стек кладется 64 бит переменная?
источник

m

magras in pro.cxx
Rob
Вопрос, есть как может быть так что а mangled имени функции ( gcc  4 4, x64) в библиотеке параметр кодирован как int (32 bit)  но в тоже время в вызывающем эту функцию коде в стек кладется 64 бит переменная?
Может быть компилятор таким образом выравнивание стэка поддерживает?
источник

m

magras in pro.cxx
Но вообще слишком мало информации. Так можно только гадать.
источник

АР

Андрей Руссков... in pro.cxx
блин ну это же жесть а не вопрос )
источник

АР

Андрей Руссков... in pro.cxx
мало ли, вдруг там varargs
источник

АР

Андрей Руссков... in pro.cxx
какие-нить
источник

m

magras in pro.cxx
Rob
Вопрос, есть как может быть так что а mangled имени функции ( gcc  4 4, x64) в библиотеке параметр кодирован как int (32 bit)  но в тоже время в вызывающем эту функцию коде в стек кладется 64 бит переменная?
System V Application Binary Interface:
> The size of each argument gets rounded up to eightbytes. Therefore the stack will always be eightbyte aligned.
источник

D

Danya in pro.cxx
magras
System V Application Binary Interface:
> The size of each argument gets rounded up to eightbytes. Therefore the stack will always be eightbyte aligned.
Так GCC же Itanium ABI использует, нет?
источник

m

magras in pro.cxx
Danya
Так GCC же Itanium ABI использует, нет?
На сколько я знаю в линуксе используется именно amd64 System V ABI.
источник

D

Danya in pro.cxx
http://itanium-cxx-abi.github.io/cxx-abi/
Accordingly, it is used as the standard C++ ABI for many major operating systems on all major architectures, and is implemented in many major C++ compilers, including GCC and Clang.
источник

m

magras in pro.cxx
Danya
http://itanium-cxx-abi.github.io/cxx-abi/
Accordingly, it is used as the standard C++ ABI for many major operating systems on all major architectures, and is implemented in many major C++ compilers, including GCC and Clang.
Возможно я невнимателен, но у них нет нормального описания calling convention: https://itanium-cxx-abi.github.io/cxx-abi/abi.html#calls

А System V пока всегда совпадал с реальностью в моей практике.
источник

R

Rob in pro.cxx
Вот в чем проблема - есть linux (x64) шаред библиотека,  в ней экспорт символ функции, деманглед вариант которой дает прототип с десятком  параметров в том числе с несколькими параметрами int.  Если такой прототип  скомпилировать в своем коде то чтение (и соответственно часть значение) параметров получается не таким  каким  они  есть в вызывающем коде. Если в прототипе вместо int поставить  int64_t  тогда  все ок - но манглед имя  такой функции не совпадает с оригинальной. Вот и пытаюсь понять как такое может быть?
источник

p

ptrNine in pro.cxx
magras
Возможно я невнимателен, но у них нет нормального описания calling convention: https://itanium-cxx-abi.github.io/cxx-abi/abi.html#calls

А System V пока всегда совпадал с реальностью в моей практике.
Там есть вот такая строчка:
A type which is trivial for the purposes of the ABI will be passed and returned according to the rules of the base C ABI, e.g. in registers
источник

m

magras in pro.cxx
ptrNine
Там есть вот такая строчка:
A type which is trivial for the purposes of the ABI will be passed and returned according to the rules of the base C ABI, e.g. in registers
Да, они в конце ссылаются на System V ABI. Правда почему-то itanium'овский. Возможно это описание abi для itanium процессоров (которые на сколько я помню были не совместимы с x86 и как следствие умерли). Но мне лень сейчас разбираться.
источник

HH

Hoot Hoot in pro.cxx
Что такое буфер? Буфер экрана?
источник

П

Пашечка in pro.cxx
Hoot Hoot
Что такое буфер? Буфер экрана?
В каком контексте?
источник

IZ

Ilia Zviagin in pro.cxx
Rob
Вопрос, есть как может быть так что а mangled имени функции ( gcc  4 4, x64) в библиотеке параметр кодирован как int (32 bit)  но в тоже время в вызывающем эту функцию коде в стек кладется 64 бит переменная?
Может
источник

IZ

Ilia Zviagin in pro.cxx
Rob
Вопрос, есть как может быть так что а mangled имени функции ( gcc  4 4, x64) в библиотеке параметр кодирован как int (32 bit)  но в тоже время в вызывающем эту функцию коде в стек кладется 64 бит переменная?
Просто два исходника с разными соглашениями по ABI собраны...
Это плохо, это UB
источник

HH

Hoot Hoot in pro.cxx
Изучаю opengl, а там говорят  "экранный буфер"
источник