获取EAX寄存器的上半部分

2024-01-01

在x86汇编语言中,有没有办法获得上半部分EAX登记?我知道AX寄存器已经包含了下半部分EAX注册,但我还不知道有什么方法可以获得上半部分。

我知道mov bx, ax会移动下半部分eax into bx,但我想知道如何移动上半部分eax into bx以及。


If你想保留 EAX 和 EBX 的上半部分:

rol eax, 16
mov bx, ax
rol eax, 16

如果有可用的暂存寄存器,则效率更高(并且不会为后续读取 EAX 的指令引入额外的延迟):

mov ecx, eax
shr ecx, 16
mov  bx, cx

如果你不需要其中任何一个,mov ebx, eax / shr ebx, 16是显而易见的方法并避免任何部分寄存器停顿或错误依赖 https://stackoverflow.com/questions/41573502/why-doesnt-gcc-use-partial-registers.

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

获取EAX寄存器的上半部分 的相关文章

  • 嵌入式系统:使用汇编语言时的内存布局

    根据我的理解 嵌入式系统运行机器代码 有多种方法可以生成此代码 一种是用 C 等高级语言编写程序 然后使用编译器获得这样的代码 另一种方法是用汇编语言为该嵌入式系统编写指令 并使用汇编器将其转换为机器代码 现在我们得到了加载到系统并执行的机
  • x86 asm 图形设置的分辨率高于 640x480?

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

    无论如何 这可以做到吗 我使用过 objdump 但它不会产生我所知道的任何汇编器都可以接受的汇编输出 我希望能够更改可执行文件中的指令 然后对其进行测试 我认为没有任何可靠的方法可以做到这一点 机器代码格式非常复杂 比汇编文件还要复杂 实
  • x86 程序集 Pushl/popl 不适用于“错误:后缀或操作数无效”

    我是汇编编程的新手 正在努力解决编程基础 http savannah nongnu org projects pgubook 在带有 GNU 汇编器 v2 20 1 的 Ubuntu x86 64 桌面上 我已经能够汇编 链接执行我的代码
  • 将以下机器语言代码(0x2237FFF1)翻译成MIPS汇编

    到目前为止我已经翻译了这段代码 但我不明白的是如何计算 计算 16 位立即地址的数量 0x2237FFF1 转为二进制 0010 0010 0011 0111 1111 1111 1111 0001 现在我正在读取操作码 001000 并知
  • 在 qemu 中将扇区加载到 RAM

    我编写了一个简单的程序 将扇区 扇区编号 2 加载到 RAM 但什么也没打印 首先 我尝试了以下引导扇区代码 org 0x7c00 mov ax 0x1000 ES BX 1000 0000 mov es ax mov bx 0x00 Lo
  • 测试 xmm/ymm 寄存器是否为零的更快方法?

    It s fortunate that PTEST does not affect the carry flag but only sets the rather awkward ZF also affects both CF and ZF
  • 如何从程序内部获取指向程序的特定可执行文件部分的指针? (也许是诽谤)

    我在 Linux 环境中 需要编写一个程序来检索放置在其可执行文件的某个部分中的一些数据 那么 如何从程序内部获取指向程序某个部分 通过其名称 的指针呢 我知道可以使用elf getdata 将节的索引作为参数传递给 get 和Elf Da
  • INT 13h 无法读取超出特定扇区的数据

    我正在为我的操作系统编写内核 在将磁盘扇区加载到内存时遇到问题 以下是从磁盘加载扇区的函数代码部分 mov ax 0x3000 mov es ax mov ax 0x0201 mov bx word ptr bp 6 bx 0x000 0x
  • 如何在 AVX/AVX2 中递增向量

    我想使用内在函数来增加 SIMD 向量的元素 最简单的方法似乎是为每个元素加 1 如下所示 note vec inc之前已设置为1 vec mm256 add epi16 vec vec inc 但是是否有任何特殊指令来增加向量 类似于in
  • 如何在汇编中使用 ReadString?

    mov edx offset Prompt1 call WriteString mov ecx 32 mov edx offset String1 call ReadString 现在 我该如何访问String1 如何将其移入寄存器以便对其
  • 为什么 GCC 在堆栈上压入额外的返回地址?

    我目前正在学习汇编的基础知识 在查看 GCC 6 1 1 生成的指令时遇到了一些奇怪的情况 这是来源 include
  • 32位进程在64位操作系统上可以访问多少内存?

    在 Windows 上 正常情况下 32 位进程只能访问 2GB RAM 或通过 boot ini 文件中的特殊开关访问 3GB 在 64 位操作系统上运行 32 位进程时 有多少可用内存 是否有任何特殊的开关或设置可以改变这种情况 默认
  • 了解汇编语言中的 cmpb 和循环

    我有一个函数 string length 它具有以下汇编代码 0x08048e90 lt 0 gt push ebp 0x08048e91 lt 1 gt mov esp ebp 0x08048e93 lt 3 gt mov 0x8 ebp
  • 对齐与未对齐 x86 SIMD 指令之间的选择

    SIMD指令一般有两种类型 A 使用对齐的内存地址 如果地址未在操作数大小边界上对齐 则会引发一般保护 GP 异常 movaps xmm0 xmmword ptr rax vmovaps ymm0 ymmword ptr rax vmova
  • 为什么将 char 传递给函数会改变它在 c 中的值?

    我目前正在关注本作业簿 http www cs bham ac uk exr lectures opsys 10 11 lectures os dev pdf关于构建操作系统 我的目的是写一个64位内核 我已经在文本模式下加载 内核 代码并
  • X86 从 stdin 读取并写入 stdout,无需引用标准库

    我是 X86 汇编语言的初学者 我知道如何使用内置函数从标准输入读取数据并写入标准输出 但我不确定如何使用简单的汇编代码 即操作寄存器和利用系统调用 来做到这一点 include
  • /usr/bin/as:无法识别的选项“-EL”

    因此 在为我的1plus手机编译android内核时 经过3天的多次尝试 我放弃了并尝试在这里询问是否有人以前遇到过这个问题 这个错误对我来说有点模糊 但我觉得问题来自于我最近对 GNU Linux 发行版 Gentoo 的更改 它在不应该
  • x86 程序执行期间方向标志 (DF) 的默认状态

    在反汇编中 我经常看到使用字符串操作指令而不考虑方向标志 DF 的状态 如下所示 or ecx 0FFFFFFFFh xor eax eax mov edi ebp repne scasb CLD or STD自函数开始以来未找到指令 也未
  • 在 AT&T x86 程序集中查找转义字符

    问题一 我有以下汇编代码 其目的是循环输入字符串 并计算它遇到的转义字符 的数量 globl sprinter data escape string string num escape long 0 num characters long

随机推荐

  • 如何使用 Visual Studio 调试进程?

    如果应用程序 崩溃 我点击 调试 Visual Studio 是我当前注册的即时 JIT 调试器 Visual Studio 出现 但无法调试任何内容 我没有看到任何拆解 我没有看到任何寄存器 假设它在带有寄存器的 CPU 上运行 调用堆栈
  • 从 Type* 到 void* 是哪种类型的转换?

    在 C 中 对于任何数据类型 我可以执行以下操作 Type typedPointer obtain void voidPointer typedPointer 当我分配时执行哪个强制转换Type to void 这是否与 Type type
  • 在 Linux 内核中使用“sched_setaffinity()”

    网上有很多帖子sched setaffinity 但几乎没有人在内核空间中使用它 我使用的是内核 4 14 79 我尝试使用用户空间调用方法sched setaffinity形式为 cpu set t my set CPU ZERO my
  • Perl:从里到外展开列表不起作用?

    all this is some deeply nested text for you while all s f 1 seg sub f return split 0 print all 我希望 all 是一个 listref 其列表包含
  • 为什么我在尝试启动 Rails 控制台时收到 Readline 错误?

    更新 我在尝试其他地方找到的解决方案时可能弄乱了我的系统 我从头开始 顺利安装了 Ruby 1 9 3 现在尝试让 ree 1 8 7 一起玩得很好 我正在尝试在 Kubuntu 上使用 RVM 安装 Ruby 1 9 3 我相信是 11
  • 如何删除默认的 CRA React 图标?

    我已经删除了 head 标签中的链接 但图标仍然被渲染 是否可以删除或更改 您的图标位于 project root gt public gt favicon ico 中 public favicon ico 删除它很困难 因为如果浏览器找不
  • 在 GKE 上使用 nginx 入口控制器时负载均衡器的节点不健康

    我已经设置了 nginx 入口控制器如下本指南 https github com kubernetes ingress nginx blob master deploy README md 入口运行良好 我能够访问defaultbacken
  • 找不到 png.h 文件 - Linux

    我正在尝试跑步this http cvlab epfl ch cms site cvlab2 lang en software pom index php在 linux ubuntu 中 当我输入 make 时 它 会说 rgb image
  • 尝试使用 jQuery 隐藏 html 表的列

    function func id document ready function toggle click function td nth child id gt div toggle return false 我试图隐藏与单击的按钮对应的
  • 使用 select、group by 和 count 时如何获得非空结果集?

    这是当前的查询 SELECT status ct reconcile status IFNULL COUNT status ct reconcile status 0 AS sch change status num FROM db cre
  • 我可以使用WebRTC接收标准RTP视频流吗?

    我有两台计算机在同一网络上 其中一个使用 RTP 协议传输电影 H264 是否可以创建一个简单的 JavaScript 应用程序来在第二台计算机上接收此流并显示在视频标签中 到目前为止 我对WebRTC的印象是它被设计为在浏览器之间使用 都
  • 一直运行的 iOS GPS 跟踪应用程序

    我正在尝试制作一个应用程序来始终跟踪用户的 GPS 该应用程序是一种汽车 GPS 跟踪器 用于始终获取驾驶员的位置并将其发送到服务器 我尝试将 位置更新 添加到 后台模式 但进入后台时应用程序将在 10 分钟后自动暂停 有没有办法让这个应用
  • 在另一个单元格中输入数据并按 Enter 选项后转到特定单元格

    我有一个 Excel 工作表 我正在 A2 B2 和 C2 中输入数据 按 Enter 键后 我希望光标选择下一行 以便我可以输入 A3 B3 和 C3 等信息 我找到了这个信息 Private Sub Worksheet Change B
  • 确定点是否在 3D 三角形内部

    我正在寻求对我对确定点是否位于 3D 三角形内部的方法的看法的认可 给定一条 R t e td 形式的射线和一组三个点 T V0 V1 V2 它们在三维空间中形成一个三角形 我知道如何找到该平面的参数方程三点形成以及如何确定射线是否与该平面
  • Android - InstrumentationTestRunner

    我是 Android 新手 并且来自 NET 背景 对 Java 有点生疏 我正在为 Android 上运行的移动应用程序开发一些测试自动化 目前 我只是使用 Android 调试桥通过命令行启动测试 但当我尝试运行任何测试时遇到错误 首先
  • 从 SQL 查询中获取参数名称

    后端是PostgreSQL服务器9 1 我正在尝试构建 AdHoc XML 报告 报告文件将包含 SQL 查询 所有查询都必须以 SELECT 语句开头 SQL 查询将带有参数 根据关联列的数据类型 这些参数将相应地呈现给用户以提供值 一个
  • Traceview最大记录时间?

    我正在使用 Debug startMethodTracing 和 Debug stopMethodTracing 来优化一段需要大约 30 秒执行的代码 但是当我使用跟踪视图打开跟踪文件时 它只显示大约 6 5 秒的跟踪数据 有什么线索吗
  • Java 中的 方法是什么?它可以被覆盖吗? [复制]

    这个问题在这里已经有答案了
  • 陷入 Matlab 的用于匹配 vlfeat 图像点的子图机制

    我正在 Matlab 中做 vlfeat 我正在关注这个问题here https stackoverflow com questions 1500498 how to use sift algorithm to compute how si
  • 获取EAX寄存器的上半部分

    在x86汇编语言中 有没有办法获得上半部分EAX登记 我知道AX寄存器已经包含了下半部分EAX注册 但我还不知道有什么方法可以获得上半部分 我知道mov bx ax会移动下半部分eax into bx 但我想知道如何移动上半部分eax in