解释GDB寄存器(SSE寄存器)

2023-11-28

我已经使用 GDB 1 天了,我对它有了一定的了解。 但是,当我使用 GDB 和打印寄存器在最后一个分号处设置断点时,我无法完全解释存储到 XMM 寄存器中的数据的含义。

我不知道数据是否采用(MSB > LSB)格式,反之亦然。

    __m128i S = _mm_load_si128((__m128i*)Array16Bytes);

}

这就是我得到的结果。

(gdb) print $xmm0
$1 = {
  v4_float = {1.2593182e-07, -4.1251766e-18, -5.43431603e-31, -2.73406277e-14}, 
  v2_double = {4.6236050467459811e-58, -3.7422963639201271e-245}, 
  v16_int8 = {52, 7, 55, -32, -94, -104, 49, 49, -115, 48, 90, -120, -88, -10, 67, 50}, 
  v8_int16 = {13319, 14304, -23912, 12593, -29392, 23176, -22282, 17202}, 
  v4_int32 = {872888288, -1567084239, -1926210936, -1460255950}, 
  v2_int64 = {3749026652749312305, -8273012972482837710}, 
  uint128 = 0x340737e0a29831318d305a88a8f64332
}

那么有人可以指导我如何解释数据吗?


SSE (XMM) 寄存器可以用各种不同的方式解释。寄存器本身不知道隐式数据表示,它只保存 128 位数据。 XMM 寄存器可以表示:

4 x 32 bit floats        __m128
2 x 64 bit doubles       __m128d
16 x 8 bit ints          __m128i
8 x 16 bit ints          __m128i
4 x 32 bit ints          __m128i
2 x 64 bit ints          __m128i
128 individual bits      __m128i

因此,当 gdb 显示 XMM 寄存器时,它会为您提供所有可能的解释,如上面的示例所示。

如果你想使用特定的解释(例如 16 x 8 位整数)显示寄存器,那么你可以这样做:

(gdb) p $xmm0.v16_int8
$1 = {0, 0, 0, 0, 0, 0, 0, 0, -113, -32, 32, -50, 0, 0, 0, 2}

至于字节顺序,gdb 按自然顺序显示寄存器内容,即从左到右,从 MS 到 LS。

因此,如果您有以下代码:

#include <stdio.h>
#include <stdint.h>

#include <xmmintrin.h>
int main(int argc, char *argv[])
{
    int8_t buff[16] __attribute__ ((aligned(16))) = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };

    __m128i v = _mm_load_si128((__m128i *)buff);

    printf("v = %vd\n", v);

    return 0;
}

如果您编译并运行它,您将看到:

v = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

但是,如果您单步执行 gdb 中的代码并检查v你会看见:

v16_int8 = {15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

解释GDB寄存器(SSE寄存器) 的相关文章

  • 在C语言中如何清屏? [复制]

    这个问题在这里已经有答案了 我想清除屏幕上的所有文字 我尝试过使用 include
  • sleep 0 有特殊含义吗?

    我看到很多用法sleep 0在我的一个客户项目中 代码看起来像这样 while true sleep 0 end 阅读一些像这样的答案this https stackoverflow com questions 3727420 signif
  • 在 OSX 和 GNU 中使用“find”删除带有数字的文件名

    我正在尝试搜索一个文件并删除名称中包含数字的类似文件 我的文件 txt from myfile 00 04 version txt myfile 00 txt find E iregex myfile 0 9 1 txt 删除 myfile
  • 这种没有推送寄存器的交换有多安全?

    我对汇编非常陌生 下面的代码应该通过两个不同的函数交换两个整数 首先使用swap c然后使用swap asm 但我怀疑 我是否需要push 我的意思是保存 汇编代码之前寄存器的每个值和pop稍后 就在返回之前 main 换句话说 如果我返回
  • tar 和 zip 有什么区别? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 tar 和 zip 有什么区别 每个的用例是什么 tar其本身只是将文件捆绑在一起 结果称为tarball 尽管zip也应用压缩 通常你使用gzip随
  • 如何模拟ARM处理器运行环境并加载Linux内核模块?

    我尝试加载我的vmlinux into gdb并使用 ARM 内核模拟器 但我不明白为什么我会得到Undefined target command sim 这是外壳输出 arm eabi gdb vmlinux GNU gdb GDB 7
  • UNIX/MacOS 上静态文件的“临时 Web 服务器”?

    是否有一个像小型网络服务器这样的东西 我可以从命令行调用它 只从本地文件系统获取文件并通过特定端口上的 HTTP 为它们提供服务 我希望能够做这样的事情 cd Sites mysite serve 10 0 1 1 8080 这应该会启动一
  • 了解多个进程的并发文件写入

    从这里 UNIX 中文件追加是原子的吗 https stackoverflow com questions 1154446 is file append atomic in unix 考虑多个进程打开同一个文件并向其追加内容的情况 O AP
  • 是否可以在Linux上将C转换为asm而不链接libc?

    测试平台为Linux 32位 但也欢迎 Windows 32 位上的某些解决方案 这是一个c代码片段 int a 0 printf d n a 如果我使用 gcc 生成汇编代码 gcc S test c 然后我会得到 movl 0 28 e
  • 如何执行“sudo nvm”?

    在我的 Mac 上 我想将一些需要 su 权限的包迁移到另一个节点版本 我使用 homebrew 安装 nvm 现在我需要执行 sudo nvm 或 reinstall packages将失败 me MacBook sudo nvm sud
  • 如何使用GDB修改内存内容?

    我知道我们可以使用几个命令来访问和读取内存 例如 print p x 但是如何更改任何特定位置的内存内容 在 GDB 中调试时 最简单的是设置程序变量 参见GDB 分配 http sourceware org gdb current onl
  • 避免 gcc 函数序言开销?

    我最近遇到了很多 gcc 在 x86 上生成非常糟糕的代码的函数 它们都符合以下模式 if some condition do something really simple and return else something comple
  • 汇编器8086将32位数字除以16位数字

    我尝试将 32 位数字除以 16 位数字 例如 10000000h 除以 2000h 根据我尝试做的设计除以 右 4 位数字除以除数 然后左 4 位数字除以除数 这是我的代码 DATA num dd 10000000h divisor dw
  • 使用valgrind进行GDB远程调试

    如果我使用远程调试gdb我连接到gdbserver using target remote host 2345 如果我使用 valgrind 和 gdb 调试内存错误 以中断无效内存访问 我会使用 target remote vgdb 启动
  • 无法识别的仿真模式:MinGW32 上的 elf_i386

    我正在尝试制作内核 但无法链接C与程序集一起输出 这ld 我收到错误 无法识别的仿真模式 elf i386 我正在使用 Windows 10 专业版以及 MinGW32 和 MSYS 我正在使用的代码 link ld link ld OUT
  • 将字段中的位扩展到掩码中所有(重叠+相邻)集位的最快方法?

    假设我有 2 个名为 IN 和 MASK 的二进制输入 实际字段大小可能是 32 到 256 位 具体取决于用于完成任务的指令集 每次调用时两个输入都会改变 Inputs IN 1100010010010100 MASK 000111101
  • 如何在 Bash 中给定超时后终止子进程?

    我有一个 bash 脚本 它启动一个子进程 该进程时不时地崩溃 实际上是挂起 而且没有明显的原因 闭源 所以我对此无能为力 因此 我希望能够在给定的时间内启动此进程 如果在给定的时间内没有成功返回 则将其终止 有没有simple and r
  • gdb 声称它不知道如何运行

    我在 Mac Pro 上的 Mac OS X 10 6 6 上使用 Xcode 3 2 3 来构建 GrowlTunes 的修订版 5fd480ef577f咆哮开发存储库 http growl info hg growl developme
  • 如何在unix中移动或复制“find”命令列出的文件?

    我有使用下面的命令看到的某些文件的列表 但是如何将列出的这些文件复制到另一个文件夹 例如 test 中 find mtime 1 exec du hc 添加到 Eric Jablow 的答案中 这是一个可能的解决方案 它对我有用 linux
  • CISC 机器 - 它们不只是将复杂指令转换为 RISC 吗?

    也许我在架构上存在误解 但如果机器有 比如说 乘法指令 该指令是否未转换为更小的指令 或者过于复杂以至于最终与等效的 RISC 指令具有相同的速度 乘法是一个不好的例子 它在两种体系结构中都是一条指令 将上面的 乘法 替换为 CISC 中更

随机推荐

  • 如何生成不同频率的连续音调?

    我想生成并播放具有随时间变化的特定频率和幅度的连续声音 我不想声音之间有延迟 我如何使用 Delphi 或 C Builder 来做到这一点 这个非常简单的示例应该可以帮助您入门 program Project1 APPTYPE CONSO
  • 创建数组时出现自动化错误 -2146232576 (80131700)

    我有一个在一台计算机上运行良好的宏 但是当我尝试在另一台计算机上运行它时 出现以下错误 运行时错误 2146232576 80131700 自动化错误 这是代码 Sub Kaivuri Dim i As Long Dim arvoKohta
  • 如果没有找到任何内容,请从 jquery ui 自动完成中删除 spinner

    我想从支持 jquery ui 自动完成的文本字段中删除微调器 显示它正在加载的图片 由于没有 源没有返回结果 的事件 因此无法触发此事件 q autocomplete source createLink mapping qsearch m
  • SpringMVC 控制器:如果发生表单验证错误,如何留在页面上

    我的下一个工作代码SpringMVC控制器 RequestMapping value register method RequestMethod GET public void registerForm Model model model
  • 无法升级 Xamarin.Android 的 nuget 包

    我在 Visual Studio 2015 update 2 中启动了空白的跨平台项目 Visual C gt 跨平台 gt 空白应用程序 Xamarin Forms 可移植 它在解决方案中创建了 6 个项目 然后我尝试更新所有这些的块包
  • 在 NDK 工具链文件夹中找不到带有前缀的 ABI 工具链:mips64el-linux-android [重复]

    这个问题在这里已经有答案了 谁能告诉我为什么会收到此错误 我已经从 GitHub 下载了 Udacity 课程的一系列项目 由于存储库中有大约 50 或 60 个项目 练习和解决方案 我认为这与每个项目本身都是一个单独的项目有关 当我分叉一
  • 在二叉搜索树中查找重复条目的策略

    我有一个 BST 其中有重复的条目 我正在尝试查找重复的条目 现在显然我可以编写一个遍历整棵树的愚蠢算法 这很容易 不过 我想写一个更高效的 这是我到目前为止所做的 所想的 假设有以下树 10 5 15 2 8 10 16 8 12 如果我
  • 如何提取 csv 文件的一列

    如果我有一个 csv 文件 是否有一种快速的 bash 方法可以仅打印任何单列的内容 可以安全地假设每行具有相同的列数 但每列的内容将具有不同的长度 您可以为此使用 awk 将 2 更改为所需的第 n 列 awk F print 2 tex
  • JS:不使用 jQuery 从字符串中提取文本

    我有这个字符串 var string
  • Oracle Java 类中 system.out.println 输出去了哪里?

    我已使用 loadjava 实用程序将 Java 类加载到 Oracle 中 这个类有一些系统输出打印文件消息 当我执行此类的方法时 我想查看系统输出消息 我在哪里可以找到这些消息 系统输出 and 系统错误写入当前跟踪文件 您可以启用 S
  • Python sys.stderr 刷新频率

    sys stderr 多久刷新一次缓冲区 这是不同环境中的标准吗 gt gt gt import sys gt gt gt sys stderr
  • 如何使用 React hooks 和 Redux 从 useEffect 执行 store.unsubscribe

    我有一个使用 redux 和 hooks 的 React 无状态组件 我需要显示页面加载时的项目数量 useEffect 并在每次添加或删除项目时更新它 store subscribe useEffect gt setState items
  • 编译sdk应该低于目标sdk

    对 SO 的压倒性建议是编译 SDK 通常应该与目标 SDK 匹配 https stackoverflow com a 27629181 360211 同样 建议将此 compileSdk 与您的目标 sdk 版本相匹配 https sta
  • 如何从不受支持的国家/地区销售付费应用程序[关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我想出售我开发的应用程序 但我的国家 罗马尼亚 不支持此服务 因此 我想请一位住在可以销售付费应用程序的国家 法国或美国 的朋友帮助我 现在我不知道该怎么告诉他这个过程 他身边需要什
  • 捕获地理位置错误 - 异步等待

    如何捕获特定于地理位置的错误以通知用户他们必须打开地理定位 catch 记录了一个名为位置误差正如 Mozilla 文档中所引用的 https developer mozilla org en US docs Web API Positio
  • 在 Android M 上请求麦克风权限

    我需要在 Android M 中使用麦克风 我尝试在清单中设置权限组 但无法使其正常工作 这是我在清单中得到的内容
  • 将 iPhone 应用程序与 Shibboleth 集成

    有人将 iPhone 应用程序与 Shibboleth 身份提供商集成吗 谷歌搜索没有得到任何结果 所以我直接询问大师 如果以前没有这样做过 这样做是否可行 两者的答案都是 是 我是一名 Java 人员 所以两周前被问到 学习 Object
  • 温莎城堡如何响应实现多个接口的类?

    例如 我有两个接口 ICustomerService 和 IOrderService 每个接口都有几个函数 例如 GetCustomer GetOrder 等 我想要一个类来实现这两个接口 Server 温莎城堡对此有何回应 首先有可能吗
  • 合并 XmlNodelist

    任何人都可以给我一个将 xmlNodelists 合并到单个列表的解决方案吗 我会使用 LINQ Concat方法 问题是XmlNodeList is IEnumerable相对于IEnumerable lt XmlNode gt 因此你必
  • 解释GDB寄存器(SSE寄存器)

    我已经使用 GDB 1 天了 我对它有了一定的了解 但是 当我使用 GDB 和打印寄存器在最后一个分号处设置断点时 我无法完全解释存储到 XMM 寄存器中的数据的含义 我不知道数据是否采用 MSB gt LSB 格式 反之亦然 m128i