在 x86-64 AT&T 汇编中,地址前面的星号 * 意味着什么?

2023-12-11

下面这行是什么意思:

...
401147: ff 24 c5 80 26 40 00    jmpq   *0x402680(,%rax,8)
...

内存地址前面的星号是什么意思? 另外,当内存访问方法缺少第一个寄存器值时,这意味着什么?

通常它类似于 ("%register", %rax, 8),但在这种情况下它没有第一个寄存器。

有小费吗?


它是 AT&T 汇编语法:

  • 来源先于目的地
  • 助记符后缀表示操作数的大小(q用于四轮车等)
  • 寄存器前缀为%和立即值$
  • 有效地址的形式为DISP(BASE, INDEX, SCALE)(显示 + 基数 + 索引 * 比例)
  • 间接跳转/调用操作数用*(与直接相对)。

所以,你有一个jmpq用于跳转到存储在的绝对地址%rax * 8 + 0x402680,并且是一个四字长。


AT&T 语法需要一种方法来区分 RIP = foo (jmp foo) from RIP = 从某个符号地址加载 (jmp *foo)。请记住movl $1, foo是存储到绝对地址foo.

对于其他寻址模式,您正在执行的跳转/调用类型之间没有歧义,除了裸标签之外的任何内容都必须是间接的。 (GAS 将推断这一点并警告间接跳跃,而无需*如果你这样做jmp %rax or jmp 24(%rax)或除裸符号名称之外的任何名称。)

(在 64 位模式下,您通常会实际使用jmp *foo(%rip)将全局变量加载到 RIP 中,不要使用 32 位绝对地址,例如jmp *foo。但这种可能性是存在的,在 x86-64 之前,当 AT&T 语法设计时,这是正常的处理方式。)

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

在 x86-64 AT&T 汇编中,地址前面的星号 * 意味着什么? 的相关文章

随机推荐

  • %40 在 Jmeter 中没有被解码为 @

    我正在尝试使用 Jmeter 工具进行负载测试 其中我通过 csv 文件提供数据 该文件包含用于登录请求的所有电子邮件和密码 但是在传递参数时 Jmeter 用 40 对 符号进行编码 如果我在 csv 中用 40 代替 它不会在 Jmet
  • c、gets()、fgets()

    char s1 100 char s2 100 gets s1 fgets s2 sizeof s2 stdin printf d d n strlen s1 strlen s2 运行后 我输入 abcd 两次 我得到的结果是 4 5这是为
  • EF 建立自我关系

    这次我有一个简单的问题 我有一张表 与他自己相关 Id IdParent NodeName Where IdParent可以有 0 个或多个Id 问题是 我如何使用 Fluent Api 或数据注释来配置这种关系 这种关系的结果是一棵树 有
  • IIS7 无法通过进程启动启动我的 Exe 文件

    我读过很多文章 但据我所知 我已经完成了所有工作 在本地计算机 VS2010 上一切正常 仅当在 IIS7 服务器上工作时才会出现该问题 我想启动一个 exe 文件 如果我从 Windows 资源管理器手动启动它 它在服务器上运行得很好 D
  • 有没有办法测试Excel中的图表是否有其系列堆叠

    据我了解 Chars 有ChartType as XlChartType属性 但那是一长串枚举值 有没有办法测试图表是否使用堆叠系列而不列出全部 我试图避免以下情况 Select ActiveChart ChartType Case xlA
  • POST 抛出 HttpRequestMessage 不包含 Form 的定义

    我正在尝试在 C 中获取 POST 数据 我读过的所有内容都说要使用 Request Form parameterNameHere 我正在尝试这样做 但我收到一条错误消息 System Net Http HttpRequestMessage
  • Flowtype - 制作密封的空物体

    Flow 的文档说 When you create an object without any properties you create an unsealed object type in Flow 是否可以创建一个没有属性的密封对象
  • PDO 和 php - 调用非对象上的成员函数prepare()

    我开始学习 PDO 但我仍然是一个 PHP 新手 我正在做一个项目来增加我的知识 但我陷入了第一个障碍 我收到此错误 在该代码的第 37 行调用非对象上的成员函数prepare 这是来自database class php
  • C 结构体不定义类型?

    我刚刚开始学习 C 具有专业的 Java 背景和一些 如果没有太多的话 C 知识 我很惊讶这在 C 中不起作用 struct Point int x int y Point p p x 0 p y 0 看来我必须声明一下p using st
  • 位置管理器 didUpdateLocations 未被调用

    因为某些原因didUpdateLocations即使我将委托设置为视图控制器 也不会被调用 在info plist我设置了钥匙Privacy Location When In Use Usage Description到描述 所以我不确定我
  • rake sunspot:重建索引 rake 中止! RSolr::Error::Http - 404 未找到

    我无法再重新索引 也无法解决此问题 花几个小时在网上挖掘这个问题 关于生产环境 发展一切顺利 如何解决这个问题 rake sunspot reindex rake aborted RSolr Error Http 404 Not Found
  • CSS 仅显示隐藏

    我网站的设计与他们公司融为一体 基本上他们正在用我的信息和徽标重新命名他们的网站 他们想要额外的钱来更改任何 HTML 文件 我只能访问样式表 css 文件和图像 我可以用 css 显示 隐藏吗h3下面的示例中列出 我想隐藏每个下面的内容h
  • 为什么我们需要在 case 语句之后break?

    为什么编译器不自动在 switch 中的每个代码块后面放置break语句 是因为历史原因吗 你什么时候想要执行多个代码块 有时 将多个案例与同一代码块相关联会很有帮助 例如 case A case B case C doSomething
  • 实体框架正在急切加载单个实体

    我的 WebApi 控制器的精简版本如下 HttpGet Route public async Task
  • 允许在 HTML5 Phonegapped Android 应用程序中打开本地文件

    我有一个 HTML5 应用程序 在浏览器中运行良好 当打包成 iOS 应用程序时就很好了 但是 当我为 Android 构建时 通过 adb 调试时收到以下消息 XMLHttpRequest cannot load file android
  • 将动态数字格式插入内插字符串中

    C 6 0 带来了这个漂亮的新格式化操作 由 而不是这样做 String lastName Doena String firstName DJ Console WriteLine String Format 1 0 lastName fir
  • 如何调用iCarte SDK方法扫描RFID

    我有 iCarte Sdk 用于读取 RFID 标签值 但我不知道如何开始使用该 sdk 我已经根据 iCarte Sdk 的要求设置了我的项目 并且我能够使用 iCarte Sdk 中提供的一些方法获取硬件详细信息 但我不知道如何启动扫描
  • 日期格式不起作用?

    String selectedDate 2012 createdMonth createdDay SimpleDateFormat dateFormat new SimpleDateFormat yyyy MM dd try created
  • 在适用于 tvOS 12 的 TVUIKit 中使用 TVPosterImage

    tvOS 12 有一个新框架TVUIKit 它引入了锁定视图 我感兴趣的课程是电视海报视图 基本上是这样设计的 斯威夫特 4 2 open class TVPosterView TVLockupView One may use UICont
  • 在 x86-64 AT&T 汇编中,地址前面的星号 * 意味着什么?

    下面这行是什么意思 401147 ff 24 c5 80 26 40 00 jmpq 0x402680 rax 8 内存地址前面的星号是什么意思 另外 当内存访问方法缺少第一个寄存器值时 这意味着什么 通常它类似于 register rax