linux - long double 在 64 位 linux、mac 和其他系统中需要的对齐方式是什么?

标签 linux macos gcc memory-alignment

我一直在尝试找出在 x86-64 mac 和 linux 中 long double 所需的确切对齐方式。我发现了各种暗示不同要求的不同事物,但找不到权威来源。

我发现在 Mac OS X 上,gcc 有时会生成代码,使用 movaps 复制 long double,这需要 16 字节对齐。但是 clang 没有,而且 gcc 很老,所以也许这只是一个不会被修复的老错误?

最佳答案

Linux x86_64 ABI 指定 long double 应为 16 字节对齐。这与 32 位 x86 Linux ABI 不同,后者指定 long double 仅对齐 4 字节(当前 CPU 的次优但历史工件)。

我不确定 Mac OSX x86 ABI,但如果他们保留这样的历史包袱,我会感到惊讶。因此我的猜测是 16 字节对齐。

关于linux - long double 在 64 位 linux、mac 和其他系统中需要的对齐方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12938828/

相关文章:

linux - 如何使用pip将python34模块tweepy安装到树莓派上

xcode - OSX Storyboards - 使用标准 segue 打开非模态窗口

ios - 我什么时候应该调用 [NSUserDefaults standardUserDefaults] registerDefaults :] to ensure that . xib 文件可以立即访问首选项?

python - Tkinter 按钮背景颜色在 mac os 中不起作用

c - 为什么用-fpic和-pie编译的程序会有重定位表?

c++ - 如何查看 CMake 使用了哪些 gcc 选项?

c++ - 我应该如何正确使用 g++ 的 -finput-charset 编译器选项来编译非 UTF-8 源文件?

linux - 提取长度为 X 且间隔为 Y 行的行

linux - 如何使用 Bash 获取文件夹中的 .png 文件数组

Linux TTY 和驱动程序