0x8($rsp) 的含义

2023-12-11

我第一次学习汇编语言。这是(gdb)反汇编的一部分:

mov    $0x131,%eax
cmp    0x8(%rsp),%eax  //Question here, what is the value of 0x8(%rsp)?




(gdb)i r
rax            0x131    305
rbx            0x7fffffffe578   140737488348536
rcx            0x20     32
rdx            0x7fffffffe478   140737488348280
rsi            0x0      0
rdi            0x1999999999999999       1844674407370955161
rbp            0x0      0x0
rsp            0x7fffffffe470   0x7fffffffe470
r8             0x37ed3bb080     240203313280
r9             0x0      0
r10            0x1e     30
r11            0x0      0
r12            0x400cb0 4197552
r13            0x7fffffffe570   140737488348528
r14            0x0      0
r15            0x0      0
rip            0x400fd9 0x400fd9 <phase_3+129>
eflags         0x212    [ AF IF ]
cs             0x33     51
ss             0x2b     43
ds             0x0      0
es             0x0      0
fs             0x0      0

我很难弄清楚它有什么可比较的。的价值是什么0x8(%rsp).

(我知道这个问题听起来很愚蠢)

提前致谢

=-==========

最后我解决了

(gdb) p /x *(int *)($rsp+0x8)

在这篇文章的帮助下如何在gdb中打印-0x4(%rbp)?

Zack 的答案应该是正确的,但它不起作用,因为我使用的是 64 位操作系统。


括号通常意味着取消引用。0x8(%rsp)意思是“获取堆栈上距堆栈指针8个字节的位置%rsp,然后获取该地址处的值。”

它移动了0x131 into %eax,然后将其与该位置的数据进行比较。 cmp 设置eflags根据该比较进行寄存器(如操作数相等时的零标志等)

要使用 GDB 查看该地址上的内容,请输入

(gdb) x/1dw 0x8($esp)

这个命令x检查记忆力。

  • 1 表示检查指定的任何单位的 1。

  • d表示以十进制表示法输出(而不是十六进制)。我不知道你要比较什么类型的数据,所以你可能会使用c得到一个字符,或者x得到一个十六进制,或者s对于字符串,或者其他什么。

  • w提供单位,在本例中是一个字,即 4 个字节。

所以这个命令查看给定地址的 4 个字节,0x8(%rsp),并以十进制格式打印任何内容。

注意访问寄存器内容包括使用$代替%.

要了解有关使用 GDB 查看内存如何变化的更多信息,请参考用户文档中的§10.6.

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

0x8($rsp) 的含义 的相关文章

  • x86 asm 图形设置的分辨率高于 640x480?

    我刚刚开始使用汇编语言 感觉像学习新东西 并且遇到了一些问题 到目前为止 我一直在浏览的所有教程都没有回答 或者太旧而无法知道 1 我尝试了一些搜索 也许我只是不知道正确的关键字 但我找不到用于更改屏幕分辨率等的图形模式的更新列表 我发现的
  • SMP 上如何处理中断?

    SMP 对称多处理器 多核 机器上如何处理中断 内存管理单元是只有一个还是多个 假设两个线程 A 和 B 运行在不同的内核上 同时 访问页表中不存在的内存页面 在这种情况下 将会出现页面错误 并从内存中引入新页面 将会发生的事件的顺序是什么
  • 如何让 UIAutomation、模拟器和 Xcode 调试器同时运行?

    谁能向我指出有关如何使 Instruments 运行 UIAutomation 脚本并使用在模拟器中运行的调试器启动 iPhone 应用程序的文档 限制条件 我只有 iPhone 3g 硬件来测试和调试 而 UIAutomation 无法可
  • 在 Linux 上,在 Eclipse CDT 中使用 gdb 调试 C++ 应用程序,如何向 stdin 输入内容?

    在 Linux 上 我尝试在 Eclipse CDT 中使用 gdb 调试 C 应用程序 例如应用程序applic exe接受一些命令行参数arg1 and arg2它期望一些数据stdin 比如说 取自文件input txt 通常 要在控
  • 错误:无法识别的指令 [ORG]

    我试图编写一个引导加载程序以在 dos box 中使用 我写了下面的代码 BITS 16 tell the assembler that its a 16 bit code ORG 0x7C00 Origin tell the assemb
  • 如何恢复 x86-64 寄存器保存约定

    fibonacci cmpq 1 rdi ja recursive movl 1 eax ret recursive push rbp push r10 movq rdi r10 leaq 2 rdi rdi call fibonacci
  • 如何使 gcc 为 -fpatchable-function-entry 发出多字节 NOP?

    gcc确实有能力使用多字节用于对齐循环和函数的 NOP 然而当我尝试 fpatchable function entry option https gcc gnu org onlinedocs gcc Instrumentation Opt
  • 为什么 GCC 在堆栈上压入额外的返回地址?

    我目前正在学习汇编的基础知识 在查看 GCC 6 1 1 生成的指令时遇到了一些奇怪的情况 这是来源 include
  • GDB命令了解程序是否正在运行或停止

    我正在尝试自动化 GDB 调试会话 我想知道 GDB 中是否有任何命令或任何其他方式可以帮助我知道程序是否正在运行或停止 Use gdb selected inferior threads 0 is running 来自 GDB Pytho
  • Linux Shellcode“你好,世界!”

    我有以下可用的 NASM 代码 global start section text start mov eax 0x4 mov ebx 0x1 mov ecx message mov edx 0xF int 0x80 mov eax 0x1
  • 直接写入 ARM Cortex A8 分支预测器中的全局历史缓冲区 (GHB) 或 BTB?

    我有兴趣直接修改 Cortex A8 上的 BTB 分支目标缓冲区 和 GHB 的内容 ARM 手册上有这样的内容 要在指令端 GHB 数组中写入一项 例如 LDR R0 0x3333AAAA MCR p15 0 R0 c15 c1 0 M
  • 优化算术编码器

    我正在优化名为的 C 库的编码步骤PackJPG http www elektronik htw aalen de packjpg 我使用 Intel VTune 对代码进行了分析 发现当前的瓶颈是 PackJPG 使用的算术编码器中的以下
  • ARM 汇编:从 STDIN 获取字符串

    我目前正在学习 CS 课程 我们刚刚开始在 Raspberry Pi 上使用 ARM Assembly 事实证明这相当困难 想知道是否有人可以提供帮助 我当前的任务是从 stdin 获取一个字符串 使用 scanf 并计算其中的字符数 然后
  • /usr/bin/as:无法识别的选项“-EL”

    因此 在为我的1plus手机编译android内核时 经过3天的多次尝试 我放弃了并尝试在这里询问是否有人以前遇到过这个问题 这个错误对我来说有点模糊 但我觉得问题来自于我最近对 GNU Linux 发行版 Gentoo 的更改 它在不应该
  • 将 2 个数字与汇编进行比较[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我有以下代码 我想完成汇编代码 如下
  • GCC 内联 asm NOP 循环在编译时未展开

    走出我通常的 VC 领域 进入 GCC 的世界 通过 MINGW32 尝试创建一个主要由 NOP 组成的 Windows PE ala for i 0 i lt 1000 i asm nop 但要么我使用了错误的语法 要么编译器正在通过它们
  • 了解带有 pc 偏移的 Cortex-M 组件 LDR

    我正在查看这段 C 代码的反汇编代码 define GPIO PORTF DATA R volatile unsigned long 0x400253FC int main void Initialization code while 1
  • 使用 Intel xHC 执行启用插槽命令后,如何确定 USB 设备连接在哪个根集线器端口上?

    我正在一个使用 UEFI 启动的小型业余爱好操作系统中为英特尔 xHC 编写一个小型驱动程序 重置所有根集线器端口后 我收到 2 个端口状态更改事件 这是因为我要求 QEMU 在命令行中模拟 USB 键盘和 USB 鼠标 每个设备的一个端口
  • 如何在 x86 汇编中编写自修改代码

    我正在考虑为我最近开发的一个业余爱好虚拟机编写一个 JIT 编译器 我了解一些汇编语言 我主要是一名 C 程序员 我可以阅读大多数汇编语言并参考我不理解的操作码 并编写一些简单的程序 但是我很难理解这几个示例我在网上找到的自我修改代码 这是
  • 0 和双字 0 有什么区别?

    正如问题所述 有什么区别 例如 mov eax 0 and mov eax dword 0 我一直在使用 cmp 语句 但我无法理解其中的区别 一个是地址 另一个是数值 如前所述 MOV 指令没有区别 对于 CMP 您将有以下区别 qwor

随机推荐

  • 如何使用 jquery if else 语句切换类?

    我想使用 jquery If Else 语句针对指定条件切换类 我的 Html 带有默认 cssclass horizontal div class my item horizontal div 现在我怎样才能在之间洗牌我的CSS类hori
  • Phonegap:安装适用于 iOS 的 BarcodeScanner 时出错

    当我尝试安装 iOS 版 BarcodeScanner 插件时 plugman install platform ios project Users amarruffo Documents Projects phonegap barcode
  • 如何在ggplot中标记堆叠直方图

    我正在尝试将相应的标签添加到直方图中条形图中的颜色 这是一个可重现的代码 ggplot aes displ data mpg geom histogram aes fill class binwidth 1 col black 此代码给出了
  • 无法使用“-”破折号访问 JSON 属性 [重复]

    这个问题在这里已经有答案了 当字符串具有破折号字符时 我无法从 json 对象检索值 profile id 1234 user id 6789 如果我尝试引用解析的jsonObj profile id它返回ReferenceError id
  • ASP.Net Core 3 远程证书在 MacO 上无效

    当我尝试使用 Identityserver4 调用 API 方法时 我之前在 Windows 上尝试过 但它仅在 Mac OS 中工作正常 我遇到了这个问题 我不知道发生了什么以及如何解决它 我可以访问 https localhost 60
  • C 中布尔表达式的返回值

    由于不值得一提的原因 我想知道布尔表达式是否有标准定义值 例如 int foo return bar gt 5 背景是我担心我们的团队将 TRUE 定义为与 1 不同的东西 并且我担心有人可能会这样做 if foo TRUE do stuf
  • ggplot2根据数据值填充颜色

    我希望能够根据数据框中存储的值设置 ggplot 填充颜色 下面的代码 几乎 是我想要做的 除了我不只是使用 fill MyColor 我希望代码实际使用 MyColor 字段中的 RRGGBB 十六进制值 df data frame An
  • 模拟器错误 UnparseableJsonResponse(“找不到字段。”)

    我已在 DialogFlow 控制台中使用 webhook 成功测试了应用程序的前几个意图 但在模拟器中进行测试时出现以下错误 UnparseableJsonResponse API 版本 2 无法解析 JSON 响应 带有 INVALID
  • 使用 CMake 在同一解决方案中创建 C# 和 C++/CLR 项目(CMake 面向 Visual Studio)

    我想使用 CMake 在 MSVC 中创建一个解决方案 该解决方案具有两个项目 在 CMake 词汇中 一个 C 执行程序和一个 C CLR 库 我怎样才能做到这一点 我发现的所有示例都是关于 CMake 中的一种类型的项目 全部为 C 或
  • 检查哪些程序正在播放音频?

    我正在制作一个程序 我想找到正在播放音频的程序并将其静音 这样您听到的都是我的 这是程序的一个选项 没有恶意 我查了一下 似乎找不到一种方法来检查哪些程序正在播放音频 就像 Windows 一样 我没有任何尝试此操作的代码示例 因为 id
  • file_get_contents() 给我 403 Forbidden

    我有一个合作伙伴创建了一些内容供我抓取 我可以使用浏览器访问该页面 但是当尝试使用file get contents 我得到一个403 forbidden 我尝试过使用stream context create 但这没有帮助 可能是因为我不
  • onUpdate() intilized 变量在 widget 类的 onReceive 中为 null

    我在 onUpdate 方法中初始化一个变量 然后调用 onReceive 函数 该函数运行良好 但无法访问 onUpdate 方法中设置的变量 这是为什么 这些变量是字符串变量并且被声明为公共的 我错过了什么吗 public class
  • MySQL 5.6 中 json_extract 不可用时,如何从 JSON 字段中进行选择?

    如果我的行有一个varchar具有以下值 1 2 3 如果我需要该值包含其中一个数字 2 或 3 我该如何选择整行 正如你所说 你使用的是 MySQL 5 6 所以JSON EXTRACT 功能不可用 我推荐的唯一选择是 升级到 MySQL
  • 如何查看包含 git 暂存更改的文件

    git diff staged 允许您查看 HEAD 和暂存更改之间的更改 如果我要提交暂存的更改 如何查看 HEAD 中存在的完整文件 如何查看其中的特定行子集 您可以使用以下命令查看文件的暂存版本 git cat file p FILE
  • 当我重写 equals() 方法时,为什么要重写 hashCode() ?

    好的 我从很多地方和来源听说 每当我重写 equals 方法时 我也需要重写 hashCode 方法 但考虑下面的代码 package test public class MyCustomObject int intVal1 int int
  • 如何在 matplotlib pandas 中将两个文件的两个条形图合并到一个图表中

    我有两个具有相同列但内容不同的数据框 我已经策划了dffinal data frame 现在我想绘制另一个数据框dffinal no在同一张图上进行比较 例如其中的一个条形图blue colour 以及具有另一种颜色的相同条形图differ
  • Viewpager、光标和片段

    我是 viewpager 的新手 想知道是否有人可以向我指出使用带有片段和数据库的 viewpager 的项目的教程或源代码 我看过 PagerAdapter 的示例 但我只是不明白它们是如何一起工作的 光标 片段和 PagerAdapte
  • 为什么 next 会引发 'StopIteration',但 'for' 会正常返回?

    在这段代码中 为什么使用for结果没有StopIteration或者是for循环捕获所有异常然后默默退出 在这种情况下 为什么我们会有无关的return 或者是raise StopIteration造成的 return None usr b
  • >>> 运算符是什么? [复制]

    这个问题在这里已经有答案了 In filter我在 Mozilla 网站上看到了文档页面 gt gt gt 操作员 var t Object this len t length gt gt gt 0 here res thisp i val
  • 0x8($rsp) 的含义

    我第一次学习汇编语言 这是 gdb 反汇编的一部分 mov 0x131 eax cmp 0x8 rsp eax Question here what is the value of 0x8 rsp gdb i r rax 0x131 305