问题标签 [att]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
58911 浏览

assembly - movq 汇编函数

我正在阅读一些代码,但不确定这一行的作用:

0 投票
4 回答
2737 浏览

assembly - 关于 AT&T x86 语法设计的问题

  1. 谁能向我解释为什么 AT&T 语法中的每个常量前面都有一个“$”?
  2. 为什么所有寄存器都有一个'%'?
  3. 这只是让我做很多蹩脚打字的另一种尝试吗?
  4. 另外,我是唯一一个发现:16(%esp)与 相比真的违反直觉[esp+16]吗?
  5. 我知道它编译成同样的东西,但为什么有人想要输入很多'$'和'%'而不需要呢?- 为什么 GNU 选择这种语法作为默认语法?
  6. 另一件事,为什么 at&t 语法中的每条指令前面都有一个:l?- 我确实知道它的操作数大小,但是为什么不让汇编器弄清楚呢?(我会想对不是那么大的操作数做一个 movl 吗?)
  7. 最后一件事:为什么 mov 参数倒置了?

是不是合乎逻辑:

at&t 是:

注意:我不是要拖钓。我只是不明白他们所做的设计选择,我试图了解他们为什么要这样做。

0 投票
1 回答
572 浏览

c - 英特尔与。寻址 xmm 和浮动指令时的 AT&T 语法

大家好,我正在编写一个汇编程序,我想在开始处理 xmm 和 fp 时了解 AT&T 和 Intel 语法的外观之前获得一些知识。我知道在常规指令中,当一个字节上的函数在 AT&T 中是“pushb”而在 Intel 中是“push byte”时,推送。任何人都可以提供与使用 xmm 或 fp 时类似的比较吗?总之,我想知道如何处理 xmm 操作数提前谢谢

0 投票
1 回答
1552 浏览

assembly - Acessing struct fields within an assembly X64 function

Is it possible to access directly struct fields within an assembly function? And how can I access via assembly an global variable?

In inline assembly on intel syntax I can do this:

How do I do this in a assembly x64 function (not inline), with ATT syntax (gcc), if it's not possible how do I do this in an inline function?

0 投票
1 回答
14826 浏览

assembly - 将指针传递给汇编函数

我对汇编编程很陌生。我正在使用带有 GCC (Linux) 的 x86 平台。

我有一个我想从 C 调用的函数:

该函数将获取 s1 和 s2 内存位置并比较它们,然后递增和比较等,同时进行一些处理。这有点像 memcmp,但我做得更多。

我的问题:如果我将指针传递给汇编函数?然后我怎么说“给我存储在这个内存地址的值”?

这是我到目前为止所拥有的:

为了从堆栈中取出第一个函数 arg ("s1"),我这样做(someaddress 是一个 32 位整数,我正在使用 32 位处理器):

如果我放入somevar( %eaxor%ebx等) 然后用 printf 它%p,我看到它的地址和s1我传递的 unsigned char 指针 "" 的地址是相同的。但我怀疑我实际上所做的是获取内存地址,将其转换为整数,然后将该整数放入某个地址。

例如,如果我这样做:

我得到“错误:`cmp' 的内存引用过多”。我不完全确定这意味着什么,除了“你搞砸了”;-)

所以...

  • 如何传递一个指针并将其保留为指针?
  • 如何在汇编中使用所述指针的值?(例如,就像*ptr在 C 中一样)

我要查看 LEA 操作数吗?

我使用 Richard Blum 的“Professional Assembly Programming”作为我的指南,但 Blum 似乎没有涵盖这种情况。

更新

非常感谢您的学习回复!

不幸的是,我仍然无法取消引用。

这是一个简化的例子。汇编函数接受一个指针并且应该回显它。相反,我得到:

C程序:

组装程序:

0 投票
2 回答
1204 浏览

assembly - g++ 使用哪种 ASM 风格

我想知道 g++ 使用哪种 ASM 风格(AT&T 或英特尔)。我正在处理一项要求我为各种 ASM 指令提供定义的任务。我看到了以下内容:

英特尔风格表示上述内容等同于:

但是将基指针移动到堆栈指针中是没有意义的,这让我想知道 g++ 是否使用 AT&T ASM 样式。

这是我用来生成 ASM(和平台信息)的命令:

我的问题:有没有明确的判断 g++ 正在产生哪种风格?有没有什么开关。

请纠正我哪里错了。提前致谢!

0 投票
1 回答
538 浏览

assembly - mov 0, %eax 上带有 x86 程序集的 Segfault

我正在尝试组装一小段 x86 代码。我在一台 32 位机器上,我编写了以下代码。它应该只是将值添加到 eax 然后返回。我意识到不会有任何输出。当我使用

gcc main.S -o main

它编译没有错误。但是当我运行它时会出现段错误(gdb 声称它在第一条 movl 指令上出现段错误)。main.S 中包含以下代码。我究竟做错了什么?

0 投票
1 回答
18665 浏览

assembly - x86汇编中的mov指令

根据我所读到的mov,它将第二个参数复制到第一个参数中。那么,这有什么作用呢?

它将 edx 中的任何内容复制到函数的第一个参数(因为 +8 的偏移量ebp是一个参数)?

我觉得这真正意味着将第一个参数移动到edx寄存器中,但我在维基百科上读到它是相反的?

0 投票
4 回答
61812 浏览

assembly - cltq 在汇编中做了什么?

事实上,我的程序很简单:

但是汇编输出很长:

我不明白的是这个块:

0 投票
4 回答
33601 浏览

assembly - `movl (%eax), %eax` 中的括号是什么意思?

我已经用谷歌搜索了足够多的东西,但无法弄清楚括号是什么()意思。另外,我看到一些语法为movl 8(%ebp), %eax

有人可以建议我一些好的参考吗?我无法在 Google 的前 20 个结果中找到任何结果。