我可以从堆栈中 POP 一个值,但将其放在 NASM Assembly 中的任何地方吗?

2023-11-24

NASM 程序集,Ubuntu,32 位程序。

通常,当从堆栈中弹出一个值时,我会这样做

POP somewhere

进入寄存器或变量。但有时,我只是不想把它放在任何地方 - 我只想删除堆栈中的下一个元素。正在做

POP

就这样不行。

我的一个解决方法是创建一个我根本不使用的 4 字节变量并转储POP进去。有更好的方法来实现这一目标吗?


将堆栈指针调整四个字节(或其他数量),忽略顶部的任何值:

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

我可以从堆栈中 POP 一个值,但将其放在 NASM Assembly 中的任何地方吗? 的相关文章

  • 不要在异常堆栈中显示 Python raise-line

    当我在 Python 库中引发自己的异常时 异常堆栈将引发行本身显示为堆栈的最后一项 这显然不是一个错误 在概念上是正确的 但是当您在外部使用代码 例如作为模块 时 它会将重点放在对调试无用的东西上 有没有办法避免这种情况并强制 Pytho
  • 打印堆栈指针的值

    如何在 Linux Debian 和 Ubuntu 中用 C 打印堆栈指针的当前值 我尝试谷歌但没有找到结果 一个技巧是简单地将本地地址作为指针打印出来 但它不可移植 甚至无法保证有效 void print stack pointer vo
  • 为什么 SSE 对齐读取 + 随机播放在某些 CPU 上比未对齐读取慢,而在其他 CPU 上则不然?

    在尝试优化有限差分代码所需的未对齐读取时 我更改了未对齐的负载 如下所示 m128 pm1 mm loadu ps H k 1 进入这个对齐的读取 随机播放代码 m128 p0 mm load ps H k m128 pm4 mm load
  • 为什么不能执行 mov [eax], [ebx] [重复]

    这个问题在这里已经有答案了 我可以做这个 mov eax ebx 和这个 mov eax ebx 甚至这个 mov eax ebx 但不是这个 错误C2415 mov eax ebx 只是wtf 为什么 它与 ptr1 ptr2 相同 为什
  • 如何在汇编语言中换行打印多个字符串

    我试图在汇编中的不同行上打印多个字符串 但使用我的代码 它只打印最后一个字符串 我对汇编语言非常陌生 所以请耐心等待 section text global start start mov edx len mov edx len1 mov
  • 奇怪的 MSC 8.0 错误:“ESP 的值未在函数调用中正确保存...”

    我们最近尝试将一些 Visual Studio 项目分解为库 并且在测试项目中一切似乎都编译和构建得很好 其中一个库项目作为依赖项 然而 尝试运行该应用程序给我们带来了以下令人讨厌的运行时错误消息 运行时检查失败 0 ESP 的值未在函数调
  • 每个进程是否都存在内核堆栈?

    每个用户空间进程是否都存在一个内核堆栈和一个用户空间堆栈 如果两个堆栈都存在 那么每个用户空间进程应该有 2 个堆栈指针 对吗 在 Linux 中 每个任务 用户空间或内核线程 都有一个 8kb 或 4kb 的内核堆栈 具体取决于内核配置
  • Intel 64 和 IA-32 上的 MESI 有何意义

    MESI 的要点是保留共享内存系统的概念 然而 对于存储缓冲区 事情就变得复杂了 一旦数据到达 MESI 实现的缓存 下游内存就会保持一致 然而 在此之前 每个核心可能对内存位置 X 中的内容存在分歧 具体取决于每个核心的本地存储缓冲区中的
  • 为什么Python有最大递归深度?

    Python有最大递归深度 但没有最大迭代深度 为什么递归受到限制 把递归当成迭代来对待 而不限制递归调用的次数不是更自然吗 我只想说这个问题的根源来自于尝试实现流 参见这个问题 https stackoverflow com questi
  • 如何知道寄存器是否是“通用寄存器”?

    我试图了解寄存器必须具备什么标准才能被称为 通用寄存器 我相信通用寄存器是一个可以用于任何用途的寄存器 用于计算 将数据移入 移出等 并且是一个没有特殊用途的寄存器 现在我读到了ESP寄存器是通用寄存器 我猜是ESP寄存器可以用于任何事情
  • 弹出 x86 堆栈以访问函数 arg 时出现分段错误

    我正在尝试链接 x86 程序集和 C 我的C程序 extern int plus 10 int include
  • 保存和恢复陷阱状态?管理多个陷阱处理程序的简单方法?

    有什么好的方法可以覆盖bash陷阱处理程序不会永久破坏可能已设置或尚未设置的现有处理程序 动态管理任意陷阱例程链怎么样 有没有办法保存陷阱处理程序的当前状态 以便以后可以恢复 在 Bash 中保存和恢复陷阱处理程序状态 我将提交以下堆栈实现
  • linux x86 汇编语言 sys_read 调用的第一个参数应为 0 (stdin)

    我正在编写一个简单的汇编程序来从标准输入读取 如 scanf 这是我的代码 section bss num resb 5 section txt global start start mov eax 3 sys read mov ebx 0
  • 是否可以在VM内使用VMX CPU指令?

    VM guest 内部的进程是否有可能使用 VMX AMD V VT x CPU 指令 然后由外部 VMM 处理而不是直接在 CPU 上处理 Edit 假设外部VM使用VMX本身来管理其虚拟客户机 即它在Ring 1中运行 如果可能的话 是
  • 在 x86 程序集中存储大量布尔值的最佳方法是什么?

    最近我一直在处理充满布尔值的大型数组 目前 我将它们存储在 bss部分有一个 space指令 它允许我创建字节数组 但是 由于我只需要存储布尔值 因此我希望从数组中逐位读取和写入数据 目前 我能想到的最好方法是有一个 space指令所需存储
  • 是否可以在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
  • 在 x86 汇编中将 64 位常量移至内存

    我正在使用 Intel x64 程序集 NASM 编译器 尝试将 0x4000000000000000 常量移至内存 该常量在 ieee 754 标准双精度中应等于 2 0 我正在使用的代码是 define two 0x4000000000
  • 为什么X86中没有NAND、NOR和XNOR指令?

    它们是您可以在计算机上执行的最简单的 指令 之一 它们是我亲自实施的第一个指令 执行 NOT AND x y 会使执行时间和依赖链长度和代码大小加倍 BMI1 引入了 andnot 这是一个有意义的补充 是一个独特的操作 为什么不是这个问题
  • Grub 和进入实模式(低级汇编语言编程)

    我一直在开发一个玩具操作系统 并一直使用 grub 作为我的引导加载程序 最近尝试使用 VGA 时 我发现无法使用硬件中断 我发现这是因为我被 grub 置于保护模式 有人知道如何在不删除 grub 的情况下回到实模式吗 如果您使用 GRU
  • 将字段中的位扩展到掩码中所有(重叠+相邻)集位的最快方法?

    假设我有 2 个名为 IN 和 MASK 的二进制输入 实际字段大小可能是 32 到 256 位 具体取决于用于完成任务的指令集 每次调用时两个输入都会改变 Inputs IN 1100010010010100 MASK 000111101

随机推荐

  • VBA 中作为类成员的类对象数组

    我正在用 VBA 编写一个 Excel 宏 向图书馆顾客发送电子邮件 提醒他们逾期的资料 数据来自电子表格 其中包含以下数据 UserID Name Email Title Author Barcode Call Number Borrow
  • 有没有办法使用 doxygen 记录 cuda 的“.cu”文件

    由于cuda的 cu 文件基本上是c 有没有办法我们可以使用doxygen为 cu 文件生成文档 我注意到 NVIDIA 使用 doxygen 来生成 cuda 的文档 但是 当我使用 doxygen 时 cu 文件将被忽略 如果其他人也遇
  • 对多个字段中的值进行计数

    我正在尝试计算一组具有多个字段的对象的不同值 e g 对象文章有很多标签对象字段 一篇文章有 标签 tag1 tag2 另一篇文章有 标签 tag2 tag3 我想找出一些可以返回以下内容的东西 标签1 1 标签2 2 标签3 1 我以为我
  • NUnit 与 Assert.AreEqual 不能很好地配合

    我对单元测试尤其是 NIt 很陌生 我只是从书中输入一些涉及 Java 和 JUnit 的示例 但我改用 C 问题是 我有一个带有重写方法的类 例如Equals and GetHashCode 但是当我尝试将此类的两个对象与Assert A
  • 为 Mac 安装 ext-zip

    我正在尝试跑步composer update我收到以下错误 Problem 1 The requested PHP extension ext zip is missing from your system Install or enabl
  • 如何阻止 R 加载包?

    我正在使用 R 中的多核包来并行化我的代码 但是 如果加载了 tcltk 包 则使用多核包分叉进程将导致 R 无限期挂起 所以我想阻止 tcltk 加载 如果任何包尝试将其作为依赖项加载 我希望立即出现错误 这可能吗 或者 我可以unloa
  • 为 jinja2 中未定义的属性引发异常

    我需要以下内容来引发异常 jinja2 Template Hello a x render a Jinja2 默默地返回一个空字符串a x 所以这呈现为 Hello 如何让 jinja2 对未定义的属性引发异常 from jinja2 im
  • 在 Javascript 中进行长时间运行的计算时如何避免冻结浏览器

    我有一个网页 其中函数中的 JavaScript 计算需要花费大量时间才能完成 并使页面冻结 当计算在后台进行时 我应该使用什么技术来确保 javascript 不会冻结浏览器 如果您只需要进行计算并且不需要在长时间运行的计算过程中访问 D
  • 如何在平面索引数组中复制值? (将所有元素按顺序追加到数组末尾)

    假设我有这段代码 x array a b c d e 有没有我可以在创建后调用的函数来复制值 所以在上面的示例中 x会成为 array a b c d e a b c d e 我想了类似下面的东西 但它不起作用 x x x x array
  • LINQ to Entities - 动态选择指定列

    我可以创建一个选择查询 仅检索 LINQ to 实体的特定列 代码中的静态 from Example in new Enities Table select new Example Column1 Example Column2 但我不知道
  • 在数据库中存储十六进制和十六进制字符的最佳数据类型

    我正在使用以太坊 API 我想将来自 api 的信息存储到 mysql 表中 地址数据如下所示 0x3f5ce5fbfe3e9af3971dd833d26ba9b5c936f0be 0x1d80982502f3bb75654df13aa32
  • Redis 复制和客户端输出缓冲区限制

    我遇到了 redis 复制问题 我无法弄清楚 Master 不断达到客户端输出缓冲区限制 主控配置 redis cli p 6380 config get client output buffer limit 1 client output
  • Microsoft Office 互操作程序集参考

    我有一个在 Visual Studio 2005 中开发的应用程序 我正在使用 ClickOnce 进行部署 我的解决方案包含两个项目 用 VB 编码的用户界面层和用 C 编码的类库 我的 C 类库有一些使用 Outlook 和 Excel
  • 我可以从 Firefox 缓存中删除特定文件吗?

    我正在开发一个 ASP net 应用程序 我必须经常更新我的 CSS 文件 我不想更新 from 中的文档频率设置about config在火狐浏览器中 我想让它默认 我使用 Firefox 作为理想的浏览器 如果我只是更新 CSS 文件
  • Mac OS X 10.8.4 上的 nc (netcat) 卡住

    我在 Mac OS X 上使用 nc 实用程序时遇到了一个小问题 我经常使用该实用程序作为快速但肮脏的解决方案来检查端口是否打开以及守护程序正在运行的版本 前几天我们部署了一组新计算机 我想验证它们正在运行什么版本的 sshd 而无需离开我
  • 创建变换以从一个矩形映射到另一个矩形?

    最简单的创建方法是什么AffineTransform它将坐标从一个矩形映射到另一个矩形 给出了浮点 双精度矩形 UPDATE 1 矩形可以完全不同 例如 0 0 1 1 和 150 14 1000 14 1 而且改造要统一改造 例如 矩形角
  • Google Cloud Pub/Sub 重试计数

    我们正在从不稳定的消息队列服务迁移到 Node JS 中的 Google Pub Sub 它似乎运行良好 但我们希望包括错误处理 我们希望限制特定消息的重试次数 例如在测试环境中重试 10 次 在生产环境中重试 100 次 现在 如果一条消
  • 如何在 Ember.js 中的控制器之间进行通信

    我想创建一个页面 其中左侧有固定视图 一些过滤器 这些视图应用于右侧的结果 例如 左侧是按流派 标题 创作年份过滤电影的过滤器 右侧是不同的图表和表格 它们根据所选的过滤器进行更新 所以我想在左边有一个固定的视图 然后在右边有一个会根据路线
  • 使用 node-mysql 中的 SSH 隧道连接到 MySQL

    当使用node mysqlnpm 包 是否可以使用 SSH 密钥而不是密码连接到 MySQL 服务器 您可以完全独立地完成 SSH 隧道组件 然后使用通过 SSH 建立隧道的 TCP 将 node mysql 或任何其他 sql 客户端 指
  • 我可以从堆栈中 POP 一个值,但将其放在 NASM Assembly 中的任何地方吗?

    NASM 程序集 Ubuntu 32 位程序 通常 当从堆栈中弹出一个值时 我会这样做 POP somewhere 进入寄存器或变量 但有时 我只是不想把它放在任何地方 我只想删除堆栈中的下一个元素 正在做 POP 就这样不行 我的一个解决