cost 275 ms
在对齐联合中以不同方式对齐数组元素 - align array elements differently in aligned union

我正在使用 SSE/AVX,我需要存储对齐的数据。 然而,我的数据可以是不同类型的。 所以我使用这样的联合 我可以执行以下操作吗? 所以我希望Ints32和Bool元素对齐为 4 个字节,而Int64元素对齐为 8 个字节。 因为Bar每个数组的第一个元素(或者基本上是&data )也应该对 ...

对指令 alignment 使用操作数大小覆盖前缀 0x66 - Using the Operand-size override prefix 0x66 for instruction alignment

最近遇到了遗留的 0x66 操作数大小覆盖。 是否可以在不显式编写单字节/多字节NOP 指令的情况下用于对齐指令? 例如添加align 16指令 生成此反汇编 删除align 16并在mov rax,1前面加上重复的 0x66 忽略字节 生成此反汇编 0x66 alignment 技术是否有效且 ...

“一成不变”地雕刻结构内存布局 - Carving a struct memory layout "in stone"

也许这个话题已经被打死了,但我找不到任何“定论”的答案。 无论如何,我需要在 C++17 中指定一个普通的旧数据结构,它将作为“原始字节块”从外部存储器读取/写入/写入。 这个外部存储器内容必须“永远”指定它的存储器布局,而不管今天和未来几十年有任何更改的编译器设置、新的编译器品牌或版本。 我目前正 ...

编译器应用结构填充,即使它不需要 - Compiler applies structure padding even though it's not needed

我试图了解结构填充在 C 中的工作原理。特别是在 Linux x86-64 环境中。 为此,我重新安排了给定结构的成员顺序,以查看是否在不需要时不应用填充。 但是,当我编译并运行打印每个结构大小时的代码时,对它们都应用了填充,即使第二个结构 ( struct b ) 的成员排列方式不会将它们连续存储 ...

由于扩展的 64 位变量导致的段错误 - SegFault due to an extended 64 bit variable

在将 32 位全局变量扩展到 64 位变量后,我试图解决一个问题。 不幸的是,该程序因扩展的 64 位而崩溃。 当我比较生成的输出 elfdump.txt 时,对于两者:在全局变量扩展之前和之后生成的 elfdump.txt。 我发现程序头现在是 6 个而不是 5 个扩展的 64 位变量,而当应用程 ...

struct数组占用的空间 - Space occupied by array of struct

关于数据 alignment 的《计算机系统:程序员的观点》 (第 3 版(2015 年 10 月 6 日))一书的问题 3.44,我有一个问题。 问题: 对于以下每个结构声明,确定每个字段的偏移量,即结构的总大小,对于 8 位 alignment:struct P1 {short i; int c ...

当我编写应用程序时,我应该担心 C 语言的结构 alignment 还是自动完成? - Should I worry about structure alignment in C language when I write applications or it is done automatically?

我试图了解结构 alignment 是否会影响我用 C 语言编写的程序。 似乎它是为我们自动处理的东西。 问题是: 编写应用程序时我应该担心它吗? 如果是,那么我到底应该什么时候担心呢? ...

如何自动将结构中的字节填充到特定的 alignment? - How to automatically pad bytes in a structure to a specific alignment?

例如,我有以下结构: 这种结构st的定义可能会随着时间而变化(不能保证内部会定义什么...随着开发的进行)。 有没有办法保证char y总是对齐——例如——一个 256 字节的边界? 我想解决方案类似于添加如下数组: 是否有这样一个keyword可以计算此结构中所有先前成员的总大小,从而有助于解决 ...

Modern.Net 中未对齐的指针有多安全? - How safe are unaligned pointers in modern .Net?

我需要从本机 memory 读取/写入一堆结构。 我想弄清楚我是否应该打扰 struct alignment。 这是我编写的用于测试的简单代码。 它将一个压缩结构写入未对齐的指针,然后读回该结构: 我在我手头的几个系统(使用.Net 6.0)上对此进行了测试,它在它们上运行没有问题。 规范说值类型 ...

为什么 sizeof(my struct) 比我预期的要小? - Why is sizeof(my struct) smaller than I expected it to be?

在定义二叉树的时候,我发现了一个问题。 例如,在这段代码中,int变量占用4个字节,int变量有3个。 加上Node* lchild和Node* rchild ,不应该是 36 字节吗? 我自己的想法是把lchild当作同一个节点结构,所以lchild里面也有12个字节,也就是三个int变量。 ...

Intel x86 与 AMD x86 CPU 上的未对齐访问性能 - Unaligned access performance on Intel x86 vs AMD x86 CPUs

我已经实现了一个带有结构内存布局数组的简单线性探测哈希映射。 该结构包含键、值和指示条目是否有效的标志。 默认情况下,此结构由编译器填充,因为键和值是 64 位整数,但条目仅占用 8 个布尔值。 因此,我也尝试以未对齐访问为代价打包结构。 由于更高的内存密度(我们不会在传输填充字节时浪费带宽),我希 ...

如何将 IDA 生成的列表组装回相同的可执行文件? - How to assemble an IDA-generated listing back into an identical executable?

我正在尝试将 IDA 生成的程序集文件重新组装回生成反汇编程序的实模式 16 位 MZ 可执行文件。 我正在使用 TASM: tasm /m2 你好 tlink你好 这给了我很多警告,在 IDA 生成“对齐”指令的行上显示“段对齐不够严格”消息: 程序组装、链接甚至运行,但在终止时崩溃 ...

如何在不因对齐而膨胀大小的情况下构造数据? - How to structure data without bloating the size because of alignment?

假设我们有一个 struct Original是这样的: 由于对齐, sizeof(Original)为 8 个字节。 4 用于 int,2 用于 bool,2 对齐“孔”。 但是当我决定,我想构建我的代码,并且由于某种原因, x和y应该放在一起时,我可能想将此结构重构为: Origi ...


 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM