问题标签 [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 投票
1 回答
1979 浏览

assembly - cmp 0x4(%esi),%ebx 汇编指令中的 0x4 是什么意思?

0x4下面的流水线是什么意思?

当此比较返回相等并执行跳转时,寄存器具有以下值: %esi 0xe944d6d0 %ebx 0xe94ceccc

很抱歉问了这么简单的问题,但我很难用谷歌搜索这样的括号符号。在时间压力下花了半个多小时。

0 投票
2 回答
5512 浏览

assembly - 每个 AT&T 语法操作数访问内存或寄存器中的什么值?

假设以下值存储在指定的内存地址和寄存器中:

有人可以用外行的方式向我解释如何做到这一点。这不是 hmwk(这是某些阅读过程中的练习题,在本章末尾有答案),我只是不理解阅读内容。

0 投票
1 回答
7559 浏览

assembly - “mov (%ebx,%eax,4),%eax”是如何工作的?

一直在从事装配任务,并且在大多数情况下,我对装配非常了解。或者至少对于这项任务来说足够好。但是这个 mov 声明让我绊倒了。如果有人能解释一下这个 mov 语句是如何操纵寄存器值的,我将不胜感激。

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

PS 我无法通过基本搜索找到这种特定类型的 mov 语句,所以如果我错过了它并再次提出问题,我深表歉意。

0 投票
1 回答
1536 浏览

assembly - 了解 ATT 组装(立即)

假设我有以下装配线

我究竟将什么存储到 %edi/%edx 寄存器中。

基本上,如果我要将此代码转换为 C 程序,我是否会将一些变量初始化为 -1 和 1,因为这就是我的看法,这就是我认为我感到困惑的地方。

我理解立即 =“一些常数”,但这是什么意思?

0 投票
1 回答
472 浏览

assembly - ATT 汇编语言算术

我不断将 0x10C 作为目的地(这是正确的)。但是由于某种原因,当我乘以 10C * 16(源 * 目标)时,我得到 1708,这是不正确的。有人可以帮帮我吗?谢谢!

0 投票
2 回答
4664 浏览

assembly - ATT 汇编(算术和逻辑运算)

问题 1. 左移 =SALSHL. 我的书说它们具有相同的效果。那为什么会有两个班次操作呢?

例如:

我的书给出了一个答案

也是正确答案吗?

问题2:

SHR通俗地说和 和有什么区别SAR?我的书说一个是逻辑移位(用零填充),另一个是算术移位(用符号位的副本填充)。

用 0/符号位填充什么?

例如:

我如何知道使用以下装配说明使用哪一个?

书后有答案

请向我解释如果我们使用shrl.

感谢您帮助理解这一点!

0 投票
1 回答
412 浏览

c - 了解 ATT 汇编语言

C版:

同一程序的 ATT 汇编版本:

x 在 %ebp+8,y 在 %ebp+12,z 在 %ebp+16

除了左移之外,我了解它在程序的所有点上所做的一切。

我假设它会向左移动 4 次。这是为什么?

谢谢!

编辑:我也明白我感到困惑的部分等同于 C 版本的 z*48 部分。

我不明白的是如何向左移动 4 次等于 z*48。

0 投票
2 回答
1575 浏览

assembly - 请验证 AT&T 装配线的含义

这条线对我来说不是很清楚(我对大会很陌生):

我理解mov,但movsbl对我来说是新的。在一个使用foo而不是0xffffffff(%edx,%ebx,1)我理解的更简单的示例中(完全不确定这是正确的,只是搜索了一个相关主题):

我从来没有一行汇编引用-1(0xffffffff),输入的信息%eax究竟来自哪里?是否存储在:

0 投票
1 回答
942 浏览

c - 函数终止时的段错误

我有一个用 64 位 x86 程序集(gcc 和 GAS 的 AT&T 语法)编写的函数,它执行一些 SSE2 操作。我已经通过使用带有反汇编的 gdb 并查看寄存器值来检查结果,所以我知道它产生了正确的结果。在 retq 指令之后,我得到一个分段错误。由于我是汇编新手(并且从未上过任何课程),我猜我没有正确处理函数/主程序接口。该函数接受 2 个指针和一个 int,并预计返回一个浮点数。这就是我在汇编函数中处理输入/输出的方式:

这是似乎导致段错误的行(这是反汇编中 ret 之后的指令):

我不知道为什么它在执行我的函数后将 rax 的低位中的值添加回 rax,但它似乎正在崩溃。我是否不允许在我的汇编函数中使用 rax,即使它是通用的并且我声明它已被破坏?

我不确定您是否需要查看这部分,但这是 gcc 期望处理该功能的方式;我已经包含了调用我的函数的行的反汇编:

这就引出了我的第二个问题,为什么将 xmm0 中的值任意移动到两个位置?我是否应该让我的函数以 xmm0 的结果结束,或者这是否意味着我应该避免使用 xmm0?我很困惑,不胜感激。提前感谢任何花时间阅读我的菜鸟帖子的人:)

0 投票
1 回答
43065 浏览

assembly - x86 cmpl 和 jne

我正在跟踪一些 x86 代码以进行分配,我想知道“cmpl”究竟做了什么以及如何预测是否会满足“jne”。