相关疑难解决方法(0)

关于[base + index*scale + disp]的几个问题

英特尔和AT&T语法中内存寻址的一般形式如下:

[base + index*scale + disp]
disp(base, index, scale)
Run Code Online (Sandbox Code Playgroud)

我的问题如下:

  • 可以baseindex任意注册?
  • 可以scale采用什么值,是1,2,4和8(默认值为1)?
  • indexdisp可互换的(唯一的区别index是寄存器disp是一个常数)?

x86 assembly att intel-syntax addressing-mode

7
推荐指数
1
解决办法
4915
查看次数

"mov(%ebx,%eax,4),%eax"如何工作?

一直在进行装配任务,而且大部分时间我都很了解装配.或者至少对这项任务来说已经足够了.但这个mov声明让我感到沮丧.如果有人能解释这个mov语句如何操作寄存器值,我真的很感激.

mov(%ebx,%eax,4),%eax

PS我无法通过基本搜索找到这种特定类型的mov语句,所以如果我错过了它并且正在提问,我会道歉.

assembly att addressing-mode

3
推荐指数
1
解决办法
6487
查看次数

x86指令含义

我现在在gdb上运行一些代码,我不知道这两个指令实际上是做什么的.如果有人能帮助我,我真的很感激.

add  -0x2c(%ebp, %ebx, 4), %eax
cmp  %eax, -0x28(%ebp, %ebx, 4)
Run Code Online (Sandbox Code Playgroud)

x86 assembly att addressing-mode

2
推荐指数
1
解决办法
906
查看次数

x86-64 汇编:括号中的两个寄存器?movsd (%rdx,%rsi,8),%xmm0

movsd   (%rdx,%rsi,8), %xmm0    ## xmm0 = mem[0],zero
Run Code Online (Sandbox Code Playgroud)

这条线有什么作用?特别是(%rdx,%rsi,8)? (x86-64架构计算机)我从C代码生成了一个汇编文件,该文件执行矩阵乘法,涉及3个循环。我找到了一堆手册,但没有任何真正可靠的信息,即使是看起来“官方”的手册。

我的 Mac OS X 是用 GAS 语法生成的,因此mov其变体的指令按以下顺序排列:

mov source dest

(%rdx,%rsi,8)但没有人解释当类似的东西突然加入队伍时会发生什么 。

请帮助我了解更多相关信息。谢谢。

下面的链接,幻灯片 7是我能找到的最相关的信息(但它可能采用英特尔语法,源和目标翻转) https://www.bowdoin.edu/~sbarker/teaching/courses/spring16/its/lectures /lec15.pdf

assembly x86-64 att

2
推荐指数
1
解决办法
1552
查看次数

标签 统计

assembly ×4

att ×4

addressing-mode ×3

x86 ×2

intel-syntax ×1

x86-64 ×1