通过联合访问 __m128 变量的字节是否合法?

2024-02-15

考虑这个变量声明:

union {
        struct {
            float x, y, z, padding;
        } components;
        __m128 sse;
    } _data;

我的想法是通过分配值x, y, z字段,执行 SSE2 计算并通过读取结果x, y, z。不过,我对这是否合法有些怀疑。我关心的是一致性:MSDN 是这么说的__m128变量会自动与 16 字节边界对齐,我想知道我的联合是否可以打破这种行为。 这里还有其他需要考虑的陷阱吗?


联合的对齐应该没问题,但对于 Windows,您可能能够直接访问 32 位组件。从xmmintrin.h (DirectXMath):

typedef union __declspec(intrin_type) _CRT_ALIGN(16) __m128 {
     float               m128_f32[4];
     unsigned __int64    m128_u64[2];
     __int8              m128_i8[16];
     __int16             m128_i16[8];
     __int32             m128_i32[4];
     __int64             m128_i64[2];
     unsigned __int8     m128_u8[16];
     unsigned __int16    m128_u16[8];
     unsigned __int32    m128_u32[4];
 } __m128;

正如你所看到的,那里有 4 个花车。如果你想成为超级偏执狂,你可能可以定义所有相同的对齐特性,以确保不会出现任何问题。然而,据我所知,鉴于您在回答中提到了 MSDN,您应该一切顺利。如果你知道你有 SSE 兼容的东西,那么联合和直接访问它都应该可以工作。您还可以浏览 DirectXMath 标头,了解 Windows 如何进行定义和处理自身:它们还定义了一些宏,具体取决于编译时存在哪些内在函数和功能。

编辑:正如 R.Martinho Fernandes 在评论中所说,直接访问它可能比在联合中重新定义它要简单得多。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过联合访问 __m128 变量的字节是否合法? 的相关文章

  • 无法使用 strptime() 获取秒数

    我收到 YYYY MM DDThh mm ss S Z hh mm 这种格式的日期时间 我正在尝试使用复制该值strptime如下所示 struct tm time 0 char pEnd strptime datetime Y m dT
  • boost::multi_index_container 复合键中的 equal_range 与比较运算符

    我正在尝试从多索引容器查询结果 其中值类型是三个元素的结构 第一个值已给出 但第二个和第三个值必须大于或小于查询参数 经过搜索后 我发现必须实现自定义密钥提取器 并且这里的一些链接建议相同 但我无法实现它 boost multi index
  • 创建 DirectoryEntry 实例以供测试使用

    我正在尝试创建 DirectoryEntry 的实例 以便可以使用它来测试将传递 DirectoryEntry 的一些代码 然而 尽管进行了很多尝试 我还是找不到实例化 DE 并初始化它的 PropertyCollection 的方法 我有
  • C++:无法使用scoped_allocator_adaptor传播polymorphic_allocator

    我有一个vector
  • Func 方法参数的首选命名约定是什么?

    我承认这个问题是主观的 但我对社区的观点感兴趣 我有一个缓存类 它采用类型的缓存加载器函数Func
  • 如何在没有 Control.Invoke() 的情况下从后台线程修改控件属性

    最近 我们遇到了一些旧版 WinForms 应用程序 我们需要更新一些新功能 在专家测试该应用程序时 发现一些旧功能被破坏 无效的跨线程操作 现在 在您认为我是新手之前 我确实有一些 Windows 窗体应用程序的经验 我不是专家 但我认为
  • 跨多个控件共享事件处理程序

    在我用 C 编写的 Windows 窗体应用程序中 我有一堆按钮 当用户的鼠标悬停在按钮上时 我希望按钮的边框发生变化 目前我有以下多个实例 每个按钮一个副本 private void btnStopServer MouseEnter ob
  • 使用 C# 在 WinRT 中获取可用磁盘空间

    DllImport kernel32 dll SetLastError true static extern bool GetDiskFreeSpaceEx string lpDirectoryName out ulong lpFreeBy
  • 如何针对 Nancy 中的 Active Directory 进行身份验证?

    这是一篇过时的文章 但是http msdn microsoft com en us library ff650308 aspx paght000026 step3 http msdn microsoft com en us library
  • C# 用数组封送结构体

    假设我有一个类似于 public struct MyStruct public float a 我想用一些自定义数组大小实例化一个这样的结构 在本例中假设为 2 然后我将其封送到字节数组中 MyStruct s new MyStruct s
  • c# Asp.NET MVC 使用FileStreamResult下载excel文件

    我需要构建一个方法 它将接收模型 从中构建excel 构建和接收部分完成没有问题 然后使用内存流导出 让用户下载它 不将其保存在服务器上 我是 ASP NET 和 MVC 的新手 所以我找到了指南并将其构建为教程项目 public File
  • .Net Core / 控制台应用程序 / 配置 / XML

    我第一次尝试使用新的 ConfigurationBuilder 和选项模式进入 Net Core 库 这里有很多很好的例子 https docs asp net en latest fundamentals configuration ht
  • 网络参考共享类

    我用 Java 编写了一些 SOAP Web 服务 在 JBoss 5 1 上运行 其中两个共享一个类 AddressTO Web 服务在我的 ApplycationServer 上正确部署 一切都很顺利 直到我尝试在我的 C 客户端中使用
  • AccessViolationException 未处理

    我正在尝试使用史蒂夫 桑德森的博客文章 http blog stevensanderson com 2010 01 28 editing a variable length list aspnet mvc 2 style 为了在我的 ASP
  • 检查 url 是否指向文件或页面

    我们需要以下内容 如果文件确实是文件 则从 URL 下载该文件 否则 如果它是一个页面 则什么也不做 举个简单的例子 我有以下命令来下载文件 My Computer Network DownloadFile http www wired c
  • EPPlus Excel 更改单元格颜色

    我正在尝试将给定单元格的颜色设置为另一个单元格的颜色 该单元格已在模板中着色 但worksheet Cells row col Style Fill BackgroundColor似乎没有get财产 是否可以做到这一点 或者我是否必须在互联
  • 在 ASP.NET 中将事件冒泡为父级

    我已经说过 ASP NET 中的层次结构 page user control 1 user control 2 control 3 我想要做的是 当控件 3 它可以是任何类型的控件 我一般都想这样做 让用户用它做一些触发回发的事情时 它会向
  • 如何使用 ReactiveList 以便在添加新项目时更新 UI

    我正在创建一个带有列表的 Xamarin Forms 应用程序 itemSource 是一个reactiveList 但是 向列表添加新项目不会更新 UI 这样做的正确方法是什么 列表定义 listView new ListView var
  • 如何连接字符串和常量字符?

    我需要将 hello world 放入c中 我怎样才能做到这一点 string a hello const char b world const char C string a hello const char b world a b co
  • 为什么 strtok 会导致分段错误?

    为什么下面的代码给出了Seg 最后一行有问题吗 char m ReadName printf nRead String s n m Writes OK char token token strtok m 如前所述 读取字符串打印没有问题 但

随机推荐

  • 两个同名变量

    In https github com Khan khan exercises blob master khan exercise js https github com Khan khan exercises blob master kh
  • Rails 中控制器和视图中使用的辅助方法

    我知道我可以将辅助方法放入Helper类里面的helperRails 中的文件夹 那么该方法就可以在任何视图中使用 我知道我可以将方法放入ApplicationController类和该方法可以在任何控制器中使用 控制器和视图中经常使用的方
  • Caliburn EventAggregator moq 验证 PublishOnUIThreadAsync 异步方法

    我有一个事件如下 namespace MyProject public class MyEvent public MyEvent int favoriteNumber this FavoriteNumber favoriteNumber p
  • 检测iPhone / iPod的颜色[重复]

    这个问题在这里已经有答案了 可能的重复 检测 iPhone iPod touch 的颜色 https stackoverflow com questions 8463212 detecting color of iphone ipod to
  • 布局动画在第一次运行时不起作用

    我有一个带有项目列表的活动 当您单击某个项目时 我希望该项目的播放控件从屏幕底部向上滑动并变得可见 我已经为滑入和滑出定义了一个动画集 并且它们可以工作 我已经在我的活动中设置了动画监听器 并在项目的单击动画中开始幻灯片 我的问题是 第一次
  • 将以文本形式存储的数字转换为数字?

    如何将以文本形式存储的数字转换为数字 我尝试过设置 ActiveSheet Range H154 NumberFormat General 但这不起作用 我发现唯一有效的方法是使用 文本到列 或单击单元格进行编辑 然后单击 Enter 但我
  • StringLengthAttribute 如何工作?

    使用 Entity Framework 和 ASP NET MVC3 验证模型时 我在使用 StringLengthAttribute 时遇到问题 我的模型基于实体框架实体 该实体具有一个分部类 该分部类使用 MetadataType 属性
  • 用于 REST 轮询的 Akka

    我正在尝试将大型 Scala Akka PlayMini 应用程序与外部 REST API 连接起来 这个想法是定期轮询 基本上每 1 到 10 分钟 根 URL 然后爬取子级 URL 以提取数据 然后将其发送到消息队列 我想出了两种方法来
  • 如何访问具有隔离范围的指令属性?

    我需要访问指令创建的模型 同时我需要在指令中获取属性 JS module directive createControl function compile timeout return scope name Name Dynamically
  • Opencart最低下单价

    我正在尝试在 Catalogue view theme default template checkout confirm tpl 中实现以下代码 div div div class warning Minimum 10 Euro to c
  • 使用 PHP 为移动设备进行令牌身份验证

    我正在编写一个 iPhone 应用程序作为我网站的移动版本 我打算公开一些 REST API 以便应用程序可以更新用户的数据 我不希望用户每次都登录 但我想保存他的令牌 cookie 并在以后的所有请求中重用它 我可以设置一个随机令牌并将其
  • 适用于 8 位 MCU 的更快 16 位乘法算法

    我正在寻找一种比下面的算法更好的算法来将两个整数相乘 你对此有什么好主意吗 MCU AT Tiny 84 85 或类似的 运行此代码的地方没有 mul div 运算符 uint16 t umul16 uint16 t a uint16 t
  • 如何在 Flask 中将 login_required 与类一起使用?

    from flask login import login required from flask restful import Resource login required class MyClass Resource 在主文件中 我调
  • 如何在继承的TextBox中保留Font?

    我使用以下代码来获取未绘制边框的 TextBox public partial class CustomTextBox TextBox public CustomTextBox InitializeComponent SetStyle Co
  • BroadcastReceiver 的生命周期相对于 Android O 发生了变化

    如果我声明一个BroadcastReceiver通过系统广播的清单文件 例如ACTION POWER DISCONNECTED 系统将在每次发送特定广播时调用它 因此 BroadcastReceiver 的生命周期不受限制 但也有一些广播无
  • JavaScript 全局变量和自调用匿名函数

    所以我一直在读Javascript 好的部分 https rads stackoverflow com amzn click com 0596517742Crockford 指出的一件事是 Javascript 中全局变量的使用弱点 如果你
  • CSS:当我附加新的 div 元素时,z-index 无法正常工作

    我想实现一个关于绘制由 div 元素配置的一些矩形和贴纸的网站 要添加贴纸或矩形 用户单击按钮 我想按以下顺序排列 div 元素 上 贴纸 gt 架子 gt 矩形 gt 画布 下 所以我在样式表中使用了 z index canvas pos
  • 我怎样才能制作一个无限循环并暂停 5 秒

    string connectionstring server SQLVS2 SQLVS2 database DDM Persist Security Info True uid ddmuser password User02 Ddm Sql
  • JasperReports 可以在报告中包含 pdf 吗?

    是否可以在 JasperReport 中包含现有的 pdf 文件 我们确实希望将新数据附加到现有报告中 而不重新生成现有报告 我们将导出回 pdf 我正在考虑使用 iText 的 PdfCopy 来合并两个 pdf 但希望 JasperRe
  • 通过联合访问 __m128 变量的字节是否合法?

    考虑这个变量声明 union struct float x y z padding components m128 sse data 我的想法是通过分配值x y z字段 执行 SSE2 计算并通过读取结果x y z 不过 我对这是否合法有些