汇编 (,%eax,4)

2023-12-05

如果我的命令行之一显示:

jmp   *0x804a180(,%eax,4)

这意味着什么?我特别询问是因为第一个逗号之前没有值,而且我不确定地址之前的 * 到底是什么意思。


该指令跳转到其值位于计算得出的地址处的位置%eax * 4 + 0x804a180.

The *在 AT&T 语法中用于指示间接跳转和调用。它的基本意思是“跳转到 this 指向的位置,而不是 this 的值”。区分以下指令很有用:

jmp myAddress  # Jumps to the location myAddress
jmp *myPointer # Jumps to the location contained at myPointer

对于空值,则视为0。 AT&T 寻址的完整形式为offset(%base, %index, multiplier),但任何这些值都可以省略。除乘数(默认为 1)外,每个值的默认值都是 0。大多数时候,您可以将它们省略,但如果您有索引并且没有基数,则需要在那里使用逗号,以便汇编器可以区分哪个这是。

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

汇编 (,%eax,4) 的相关文章

  • 为什么如果内存组织为字,则程序计数器加 1;如果内存组织为字节,则程序计数器加 2?

    如果在计算机中一条指令是 16 位 并且如果存储器被组织为 16 位字 则通过在当前指令的地址中加 1 来计算下一条指令的地址 如果内存是按字节组织的 可以单独寻址 那么我们需要在当前指令地址上加二 得到顺序执行的下一条指令的地址 为什么会
  • X86 预取优化:“计算 goto”线程代码

    我有一个相当重要的问题 我的计算图有循环和多个 计算路径 我没有制作一个调度程序循环 其中每个顶点将被一一调用 而是将所有预先分配的 框架对象 放置在堆中 代码 数据 这有点类似于线程代码 甚至更好 CPS 只是在堆中跳转 执行代码 每个代
  • 如何编译GCC生成的asm?

    我正在玩一些汇编代码 有些事情困扰着我 我编译这个 include
  • 为什么 clang 使用 -O0 生成低效的 asm(对于这个简单的浮点和)?

    我正在 llvm clang Apple LLVM 版本 8 0 0 clang 800 0 42 1 上反汇编此代码 int main float a 0 151234 float b 0 2 float c a b printf f c
  • 如何仅使用单个数组在 JavaScript 中模拟调用堆栈

    我正在看维基百科页面 https en wikipedia org wiki Call stack在调用堆栈上 并尝试理解这个图像 据我所知 哈哈 const memory memory 0 3 top of stack pointer m
  • GCC的sqrt()编译后如何工作?使用哪种root方法?牛顿-拉夫森?

    只是对标准感到好奇sqrt 来自 GCC 上的 math h 我自己编码的sqrt 使用牛顿拉夫森来做到这一点 是的 我知道 fsqrt 但CPU是如何做到这一点的呢 我无法调试硬件 现代 CPU 中的典型 div sqrt 硬件使用 2
  • 在 x86 程序集中存储大量布尔值的最佳方法是什么?

    最近我一直在处理充满布尔值的大型数组 目前 我将它们存储在 bss部分有一个 space指令 它允许我创建字节数组 但是 由于我只需要存储布尔值 因此我希望从数组中逐位读取和写入数据 目前 我能想到的最好方法是有一个 space指令所需存储
  • 从类模板参数为 asm 生成唯一的字符串文字

    我有一个非常特殊的情况 我需要为类模板中声明的变量生成唯一的汇编程序名称 我需要该名称对于类模板的每个实例都是唯一的 并且我需要将其传递给asm关键字 see here https gcc gnu org onlinedocs gcc 12
  • 何时可以重用avx指令中的源寄存器

    在 avx 指令中用作源的寄存器何时可以在指令开始处理后重用 例如 我想使用vgatherdps该指令消耗两个 ymm 寄存器 其中之一是位移索引 我意识到vgatherdps由于数据的局部性较差 因此需要花费大量时间来收集 位移索引寄存器
  • 一个地址有多少字节? [复制]

    这个问题在这里已经有答案了 在64位机器上 我们知道一个地址是8个字节 然而 我并不完全清楚一个地址中有多少字节的信息 虚拟内存中的每个字节都有一个地址吗 或者内存中的每 64 位都有一个地址 还是取决于架构 如果这取决于架构 那么我应该如
  • 学习 (N)ASM 的最佳资源是什么? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想学习汇编已经有一段时间了 尽管我之前尝试过几次 但我还没有真正能够超越 Hello world 有
  • 在 x86 程序集中打印寄存器值的简单方法

    我需要在 8086 Assembly 中编写一个程序 接收来自用户的数据 进行一些数学计算并在屏幕上打印答案 我已经编写了程序的所有部分并且一切正常 但我不知道如何打印号码显示到屏幕上 在我所有计算结束时 答案是 AX 它被视为无符号 16
  • 比“add esp, 4”更小的指令

    又是我 我的程序中有很多 add esp 4 我正在尝试减小它的大小 是否有任何更小的指令可以替代 add esp 4 pop edx 或者您不介意破坏的任何其他整数寄存器 这就是现代编译器实际上所做的 https stackoverflo
  • intfmt: db "%d", 10, 0 在汇编中的含义

    我最近在我的一个汇编文件的顶部看到了这个 并意识到我在打印整数的过程中花了很长时间使用它 而没有真正意识到它最初来自哪里 在我的基本汇编模板中使用 或 10 0 是什么结尾的意思是 section data intfmt db d 10 0
  • 如何将 asm 着色器编译为 fxo 文件?

    我有一个已编译的 fxo 着色器 我正在尝试对其进行稍微编辑 仅调整一些常量 使用 fxdis https code google com archive p fxdis d3d1x https code google com archiv
  • 如何在 AVX/AVX2 中递增向量

    我想使用内在函数来增加 SIMD 向量的元素 最简单的方法似乎是为每个元素加 1 如下所示 note vec inc之前已设置为1 vec mm256 add epi16 vec vec inc 但是是否有任何特殊指令来增加向量 类似于in
  • 在现代 x86-64 上计算 64 位整数的整数 Log10 的最快方法是什么?

    标题 我找到了大量 32 位示例 但没有找到完整的 64 位示例 使用这个帖子 https codegolf stackexchange com questions 47290 fastest way to compute order of
  • 为什么 GCC 在堆栈上压入额外的返回地址?

    我目前正在学习汇编的基础知识 在查看 GCC 6 1 1 生成的指令时遇到了一些奇怪的情况 这是来源 include
  • 将代码保存在 L1 缓存中

    我一直在阅读维基百科关于 K 编程语言的文章 http en wikipedia org wiki K programming language Performance characteristics这就是我所看到的 解释器的小尺寸和语言的
  • 为什么这个函数在额外读取内存时运行速度如此之快?

    我目前正在尝试了解 x86 64 上某些循环的性能属性 特别是我的 Intel R Core TM i3 8145U CPU 2 10GHz 处理器 具体来说 在循环体内添加一条额外的指令来读取内存几乎可以使性能提高一倍 而细节并不是特别重

随机推荐

  • 使用 WCF 数据服务进行分页

    我的问题是关于如何使用 WCF 数据服务处理分页 我想要使 用它的方式是执行查询 传递页面大小和当前页面 并返回该查询的结果以及分页信息 例如总页数 当前页码和页面大小 客户端 这是另一个将结果转换为 JSON 供使用该结果的移动应用程序使
  • 连接向量中的相邻字符串

    Given qz lt quantile c 1 2 3 4 5 6 7 8 9 10 c 0 0 0 2 0 4 0 6 0 8 1 0 我想从分位数创建一个标签向量 目前 我这样做 zlab lt c paste paste sprin
  • 从另一个 2D 数组的元素中过滤 2D 数组

    我有两组数字元素存储为二维数组 使用以下方法从列中获取值 getValues 一个是完整列表 另一个是部分列表 我想要一个返回完整列表减去部分列表的函数 The partialListArr可能包含重复项 这fullListArr做 不是
  • Backbone:视图内的视图列表

    让我先展示我需要什么 以便您能够理解我的问题 我有一个联系人视图 例如 ContactView Backbone View extend template template Name E mail Phones render functio
  • R 语言的基本等值线州地图

    我很抱歉 因为我很确定这是一个基本问题 我想做的就是使用maps包在R中创建一个非常简单的等值线地图 这是我第一次尝试在 R 中映射任何数据 我所在的地区是美国本土 48 个州 包括华盛顿特区 这是我想要绘制的数据集的前几行 gt head
  • 调试密钥和签名密钥之间的区别

    您好 我正在尝试获取我的签名证书的签名密钥 MD5 指纹 有人可以告诉我签名密钥和调试密钥之间的区别吗 我能够指纹调试密钥 但为了获取签名密钥指纹 我很困惑 keytool list alias alias name keystore my
  • 如何从VB.Net中的DataGridView获取单元格值?

    我有一个问题 如何从 datagridview 的单元格中获取值 id p w post 1 1234 A 2 4567 S 3 6789 A 我想在文本框中输入3 该怎
  • 三元运算符的语法错误[重复]

    这个问题在这里已经有答案了 我是Python新手 我正在尝试使用具有这种格式的三元运算符 我认为是这样 value true if
  • 加特林如何在两个场景之间传递价值?

    我的脚本中有两个场景 我想将 CreateId 的值传递给第二个场景 我在第一个场景中保存了 CreateId 错误说 未定义名为 CreateId 的属性 jsonPath id find 0 exists 什么也没找到 场景 1 val
  • WinForms 中具有 alpha 通道透明度/不透明度的启动屏幕

    如何在 WinForms 中使用具有 alpha 通道透明度 不透明度的图像来实现启动屏幕 看一眼C 中的每像素 Alpha 混合
  • 文化特定数据注释

    我正在尝试获取特定于文化的数据注释 DisplayFormat DataFormatString 0 d public DateTime Date get set 我认为这会起作用 因此 在美国 它会显示 DD MM yyyy 在欧洲 它会
  • Snow Leopard、Django 和 PIL 的问题

    自从升级到 Snow Leopard 以来 我在让 Django 和 PIL 正常工作时遇到了一些问题 我已经安装了 freetype libjpeg 和 PIL 它告诉我 TKINTER support ok JPEG support o
  • 在 kotlin lambda 内部返回时“此处不允许返回”

    我使用 lambda 来处理异步调用的回调 我想在调用方法之外定义回调以避免使用庞大的方法 但我似乎无法在 lambda 中使用早期返回 这使得代码不必要地难以阅读 我尝试将 lambda 定义为变量 但 return 在 lambda 内
  • Promise 的动态顺序执行

    我有需要按顺序运行的动态数量的承诺 我了解如何按顺序运行承诺 但我无法成功地使其与许多可能变化的承诺保持动态 这是我发现静态执行此操作的一种方法如何兑现一个又一个的承诺 function waitFor timeout return new
  • Python实时绘制ROS数据

    我正在尝试使用 python 绘制传入计算机的实时数据 数据来自 ROS 主题 我使用 rospy 订阅该主题以获取数据 这是我写的代码 import rospy from sensor msgs msg import ChannelFlo
  • 如何使我的所有网址都无扩展名,且不带尾部斜杠。并将 .php 和尾部斜杠重定向为无?

    我想让我的所有网址统一干净 这意味着我所有的 URL 都没有扩展名 也没有尾部斜线 并且如果一个人确实输入了 php或尾部斜杠 它只会将用户重定向到干净的 URL Example example com blog file php and
  • 如何对 UTF-8 字符使用 String 方法?

    如何对 UTF 8 字符使用 String 方法 例如 我有一个带有西里尔字符的字符串 所以当我使用string upcase它不起作用 Ruby 仅支持字母的大小写转换A Z and a z 原因很简单 其他字母的大小写转换没有明确定义
  • Resteasy 客户端的自定义 Jackson 序列化器

    是否可以为 Resteasy 客户端注册自定义 Jackson JSON 序列化器 我尝试过做类似的事情 ResteasyClient client new ResteasyClientBuilder register new Custom
  • 为什么没有更多的迭代器随机访问?

    我正在尝试了解有关 C 中的 STL 迭代器的更多信息 我理解不同的数据结构如何具有不同的迭代器 但我不明白为什么有些迭代器不是随机访问 例如 为什么 LinkedList 迭代器不是随机访问迭代器 我知道 LinkedList 本身并不是
  • 汇编 (,%eax,4)

    如果我的命令行之一显示 jmp 0x804a180 eax 4 这意味着什么 我特别询问是因为第一个逗号之前没有值 而且我不确定地址之前的 到底是什么意思 该指令跳转到其值位于计算得出的地址处的位置 eax 4 0x804a180 The