操作码中的汇编段

2024-01-14

我注意到在操作码中使用了汇编段。

Example:

MOV DWORD PTR SS:[EBP-30],30

我认为“PTR SS:”用于指定EBP-30来自堆栈? (SS:堆栈段) 我是对的还是完全错的? :) 而且,你能告诉我上面的例子和

MOV DWORD PTR[EBP-30],30

那么操作码中使用的 DS(数据段)又如何呢?


MOV DWORD PTR SS:[EBP-30],30

这里有两个单独的修饰符,DWORD PTR and SS:.

第一个告诉我们要在指向的地址存储一个字。当汇编器无法从指令的操作数中区分出这一点时,就需要这样做。这里30也可以是一个字节来存储。

The SS:是一个段前缀,表示我们要使用相对于堆栈段的地址。在这种情况下,并不是严格需要的,因为这是使用时的默认设置ESP or EBP寄存器。因此,该指令的第二个版本与第一个版本相同。

你用过吗EBX代替EBP会有区别的!

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

操作码中的汇编段 的相关文章

  • 当非特权用户运行 C/asm 程序时,会对 Linux 造成什么危害?

    我一直在考虑一种场景 让用户 可以是任何人 可能有恶意 提交在 Linux PC 我们称之为基准节点 上运行的代码 目标是为单线程例程创建一种自动化基准测试环境 假设一个网站向代理发布了一些代码 该代理将此代码交给基准节点 而基准节点仅与代
  • 为什么当设置为 TLS 选择器时,ES 和 DS 在 64 位内核上最终会归零?

    下面的 32 位程序调用set thread area 2 http linux die net man 2 set thread area在 GDT 中创建一个条目 该条目旨在用于 TLS 通常将结果选择器放入FS or GS并成功使用
  • x86 平台中的 KVM 影子页表处理

    据我了解 在没有硬件支持来宾虚拟到主机物理地址转换的处理器上 KVM 使用影子页表 当来宾操作系统修改其页表时 会构建和更新影子页表 硬件中有没有专门的指令 以x86为参考 来修改页表 除非有特殊说明 否则不会对VMM 造成陷阱 Linux
  • 左/右旋转进位的实际用途

    循环左进位和循环右进位指令有哪些实际用途 在我的汇编课上 我们无法想出一个有用的好例子 如果要将位从一个操作数移出并移入另一个操作数 SHL EAX 1 move sign bit of EAX RCL EDX into LSB of ED
  • DASM 汇编器中的 ASCII 到 C64 屏幕代码

    我正在通过 C64 模拟器学习 6502 micro 的汇编 目前正在尝试将字符串输出到屏幕 这是我的代码 processor 6502 org 1000 ldx 00 using x register as column counter
  • 装配中出现奇怪的字符?

    我写了以下代码 386 model small stack 100h data text db Paper 0 code start lea dx text mov ah 9h int 21h mov ah 4ch int 21h end
  • 为什么这个“std::atomic_thread_fence”起作用

    首先我想谈一下我对此的一些理解 如有错误请指正 a MFENCE在x86中可以保证全屏障 顺序一致性可防止 STORE STORE STORE LOAD LOAD STORE 和 LOAD LOAD 重新排序 这是根据维基百科 https
  • 在 REP MOVSW 之前 PUSH CS / POP DS 的目的是什么?

    为什么在下面的代码中我们压入代码段 PUSH CS 然后将其弹出到数据段 POP DS 我将这些行明确指定为 line1 和 line2 请告诉我 MOVSW 在这里是如何工作的 IF HIGHMEMORY PUSH DS MOV BX D
  • 一条指令可以同时处于两种寻址模式吗?

    我在书中读到了以下内容从头开始编程 处理器有多种不同的访问数据的方式 称为 寻址模式 最简单的模式是立即模式 其中 要访问的数据嵌入在指令本身中 例如 如果我们想将寄存器初始化为 0 而不是给出 计算机要从中读取 0 的地址 我们将指定立即
  • C++ 中的 CPUID 实现

    我想知道这里是否有人有一些可以从任何托管 net 语言引用的 C CPUID 实现的好示例 另外 如果情况并非如此 我是否应该注意 X86 和 X64 之间的某些实现差异 我想使用 CPUID 来获取运行我的软件的机器上的信息 崩溃报告等
  • AVX512 掩码寄存器(k1...k7)的 GNU C 内联 asm 输入约束?

    AVX512 为其算术命令引入了 opmask 功能 一个简单的例子 上帝螺栓 org https godbolt org z P7xWD8 include
  • 什么时候汇编比C更快? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的
  • 即使我确实为变量设置了初始值,数据段也没有被初始化

    我已经编写了一个代码 该代码应该生成某种数字列表 但是即使我为它们分配了初始值 我的数据段变量也没有被初始化 This is how DS 0000 looks when I run it 这是我的代码 但数据段只保留垃圾值 MODEL s
  • orpd等SSE2指令有什么意义?

    The orpd指令是 压缩双精度浮点值的按位逻辑或 这不是做完 全相同的事情吗por 按位逻辑或 如果是这样 拥有它还有什么意义呢 请记住 SSE1orps https www felixcloutier com x86 orps首先 实
  • 将两个 32 位整数向量相乘,生成 32 位结果元素向量

    将每个 32 位条目乘以 2 的最佳方法是什么 mm256i互相注册 mm256 mul epu32不是我正在寻找的 因为它产生 64 位输出 我想要每个 32 位输入元素都有一个 32 位结果 而且 我确信两个 32 位值的乘法不会溢出
  • 为什么 Solaris 汇编器生成的机器代码与 GNU 汇编器在这里不同?

    我为 amd64 编写了这个小汇编文件 对于这个问题来说 代码的作用并不重要 globl fib fib mov edi ecx xor eax eax jrcxz 1f lea 1 rax ebx 0 add rbx rax xchg r
  • 在 x86 Intel VT-X 非根模式下,是否可以在每个指令边界传递中断?

    除了不将中断传送到虚拟处理器的某些正常指定条件 cli if 0 等 之外 客户机中的所有指令实际上都是可中断的吗 也就是说 当传入的硬件中断先传递给 LAPIC 然后传递给处理器时 据说会发生一些内部魔法 将其转换为虚拟中断给来宾 使用虚
  • 为什么 Visual Studio 使用 xchg ax,ax

    我正在查看程序的反汇编 因为它崩溃了 并注意到很多 xchg ax ax 我用谷歌搜索了一下 发现它本质上是一个 nop 但是为什么 Visual Studio 会执行 xchg 而不是 noop 该应用程序是一个C NET3 5 64位应
  • 从汇编程序获取命令行参数

    通读 专业汇编语言书籍 似乎它提供了用于读取命令行参数的错误代码 我纠正了一点 现在它从段错误变成了读取参数计数 然后是段错误 这是完整的代码 data output1 asciz There are d params n output2
  • 汇编8086监听键盘中断

    我有与此完全相同的问题 边画边听键盘 https stackoverflow com questions 13970325 8086 listen to keyboard while drawing 但第一个答案 接受的答案 只听键盘一次

随机推荐

  • 使用字典的 Protobuf-net 对象引用反序列化:引用跟踪对象在反序列化期间更改了引用

    我在尝试使用 protobuf net 序列化 反序列化复杂对象图时遇到一些问题 我正在开发一个遗留应用程序 我们正在使用 Net Remoting 将 GUI 客户端连接到 C 服务 由于使用默认值的对象图的序列化大小 我们发现海外用户的
  • 上传1GB或以上的文件

    上传大于 1 GB 的文件的最佳方式是什么 当前情况 我们正在使用 Flask 来部署网络服务器 我们必须上传大于 1 GB 的文件 以前我们只上传了几MB的文件 所以 这不是问题 但现在对于大于 1 GB 的文件 旧的上传方法不再可行 服
  • Qt 中带有进度回调的 CopyFileEx

    有人能给我一个在 Qt 中使用 CopyFileEx 和进度回调的工作示例吗 我发现了一些划痕并尝试合并它但没有成功 我什至无法将 CopyProgressRoutine 函数作为 CopyFileEx 的参数传递 因为我无法声明指向该函数
  • 加载 data.table 对象后直接使用 get(data.table) 生成新变量

    我正在尝试在 data table 中生成一个新变量 我生成 保存并再次加载该变量 加载后 我通过 get 间接寻址 data table 只要我之前不直接寻址它以创建变量 这对于生成新变量就不起作用 可能是某种环境问题 Generate
  • CDI 注入在 Servlet 中不起作用

    我真的需要你的帮助 我现在正在研究这个问题几周或几个月 对于这么长的帖子 我深表歉意 但我想尽可能准确地解释问题和我的设置 我的 JAVA EE 6 Web 应用程序主要包含 3 个 Servlet javax faces webapp F
  • 如何从我的 Git 存储库中删除未引用的 blob

    我有一个 GitHub 存储库 有两个分支 master and release The release分支包含二进制分发文件 这些文件导致存储库大小非常大 超过 250 MB 因此我决定清理这些内容 首先我删除了远程发布分支 通过git
  • Hibernate 5 和类型化标准查询 (JPA2)

    问题 1 如果我从 Hibernate 4 x 升级到 Hibernate 5 x 我是否仍然可以使用 旧 条件查询 或者仅使用新的条件查询TypedJPA2 标准查询 旧的是否已被弃用 或者我可以同时使用两者吗 2 我是否正确理解新的类型
  • ASP.NET Core 中 IUrlHelper 的注入

    In RC1 IUrlHelper可以注入到服务中 用services AddMvc 在启动课程中 这不再适用于RC2 有谁知道怎么做RC2就像刚刚更新一个UrlHelper需要一个ActionContext目的 不知道如何将其置于控制器之
  • 无法通过 Apps 脚本 (JDBC) 连接到本地 MySQL 服务器

    请参阅下面的编辑 我留下原始问题以帮助其他人 我尝试通过 Apps 脚本和 JDBC 连接到本地 MySQL 服务器 但我不断收到两个错误之一 这段代码 function connectTest var conn Jdbc getConne
  • 如何打开屏幕?

    重复警告 此问题针对服务和前端 有一些类似的线程 但重点关注 GUI 方法 Problem 从任何状态开始 背景中播放音乐 屏幕打开 原文如此 屏幕关闭 手机锁定 手机解锁等等 我只想更改状态中的一件事 打开屏幕 其他什么都不应该改变 At
  • 在调查问卷样式 DataGridView 中仅从多个复选框列中选择一个复选框

    我创建了一个显示DataGridView带着一系列的问题 dgv 结构由一个用于问题文本的字符串列和三个用于答案的布尔 复选框列 是 否 N A 组成 每个问题都显示在自己的行中 我希望我的程序只允许用户在每一行上仅选择 是 否 或 不适用
  • PHP 7.4 检查属性是否真正初始化

    我想在 PHP 7 4 中检查属性是否真正初始化 将属性设置为 null 意味着它是用 null 初始化的 我不能使用isset因为即使设置为 null 它也会返回 false 我不能使用property exists因为即使未初始化它也会
  • 具有相同名称的 Jaxb 对象

    似乎可以解组两个不同的 jaxb具有相同的对象name 有一个Bar班级 public abstract Bar private XmlElement String val 有两个实现 构造函数等省略 XmlRootElement name
  • 使用okHttp上传图片

    我想使用上传图像okhttp但我无法找到用于发布图像的 MultipartBuilder 我可以用什么来代替这个 这是我的代码 public static JSONObject uploadImage File file try final
  • 传递地图坐标数组以在地图上快速绘制路线

    您好 我有一个像这样的坐标数据数组 它是从 API 调用中检索的 我使用 for 循环将数据附加到如下数组中 extension TripListViewController UITableViewDelegate func tableVi
  • 什么是 def ... else ... end 结构?

    我有这个代码 def with else puts we enter something funny if true puts yes return YES end return what else puts no return else
  • 如何将线性线添加到具有数据框的多个数据集的图中?

    我有以下数据框 expected observed group 1 0 5371429 0 0000 1 2 1 3428571 1 3736 1 3 2 6857143 2 4554 1 4 5 3714286 3 6403 1 5 0
  • Sitecore DateField 的 DateTime 属性显示错误的日期

    在我的 Sitecore 项目中我使用DateTime Sitecore 的类型 字段作为属性Item 我试图通过以下代码获取该值 var dateField DateField item Fields Date var itemDate
  • Drupal 6:提交时 form_state 值为空

    我正在尝试在 Drupal 6 中创建一个自定义表单 下面的代码似乎一切正常 包括提交时在数据库中创建一个新条目 但所有 form state 值都是空的 我缺少什么
  • 操作码中的汇编段

    我注意到在操作码中使用了汇编段 Example MOV DWORD PTR SS EBP 30 30 我认为 PTR SS 用于指定EBP 30来自堆栈 SS 堆栈段 我是对的还是完全错的 而且 你能告诉我上面的例子和 MOV DWORD