大会(,%eax中,4) [英] Assembly (,%eax,4)

查看:1086
本文介绍了大会(,%eax中,4)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果我的命令行的人说:

If one of my command lines says:

jmp   *0x804a180(,%eax,4)

这是什么意思?我专门请教因为第一个逗号之前没有价值,我不知道到底是什么地址之前,*表示。

what does that mean? I ask specifically because there is no value before the first comma and I'm not sure exactly what the * before the address means.

推荐答案

该指令跳转到它的值位于为%EAX * 4 + 0x804a180 。

This instruction jumps to the location whose value is located at the address calculated as %eax * 4 + 0x804a180.

* 在AT&放大器使用; T语法指示间接跳转和调用。它基本上是指跳到指向的位置由此,代替这个值。它区分以下说明是非常有用的:

The * is used in AT&T syntax to indicate indirect jumps and calls. It basically means "jump to the location pointed to by this, instead of the value of this". It is useful to differentiate the following instructions:

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

对于空值,它将被视为0 AT&放的完整形式;吨寻址偏移(%的基础上,%指数乘数),但任何这些数值可以被排除在外。默认为每,除了乘数(默认为1)为0。大多数时候,你可以离开他们了,但如果你有一个索引,没有基本需要逗号那里,以便汇编可以告诉我们是的。

As for the empty value, it is treated as 0. The full form of AT&T addressing is offset(%base, %index, multiplier), but any of these values can be left out. The default for each, except the multiplier (defaults to 1), is 0. Most of the time, you can just leave them out, but if you have an index and no base you need the comma there so that the assembler can tell which it is.

这篇关于大会(,%eax中,4)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆