问题标签 [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 回答
11884 浏览

assembly - mov %eax,(%esp)

以下陈述之间有什么区别?

我正在扩散一个二元炸弹,并且在程序集的早期 遇到了一些movand命令的问题。leal

0 投票
1 回答
4257 浏览

assembly - 汇编 (,%eax,4)

如果我的命令行之一说:

这意味着什么?我特别问是因为第一个逗号之前没有任何值,而且我不确定地址之前的 * 到底是什么意思。

0 投票
1 回答
1275 浏览

assembly - 组装中的蛇游戏

我正在尝试制作一个小型 IA32 游戏(AT&T),我目前面临的问题是我不知道如何/在哪里存储蛇的身体和“苹果”以便能够检查碰撞。蛇的大小不断增加,所以容器应该动态分配?

在高级语言中,我会使用二维向量/数组/链表或类似的东西来存储坐标,然后在移动后进行比较。

欢迎任何建议。

(查看了类似的问题,但没有回答我的问题)

0 投票
1 回答
1607 浏览

assembly - 如何将 AT&T 样式汇编代码移至 Visual Studio 和 Intel 样式语法?

我有一个非常专业的文件,用 x86-64 程序集为 Linux 编写,在 GCC 下编译。我需要将该代码移到 Visual Studio 项目中,并且 mll64.exe 希望程序集文件采用 Intel 格式。

我试图构建一个跨平台的 DLL,但它不起作用:

15:47:19 cpudiag2 > gcc -shared -o my.dll my.o

/usr/bin/ld: my.o: 重定位 R_X86_64_32S 反对 `a local symbol' 在制作共享对象时不能使用;使用 -fPIC my.o 重新编译:无法读取符号:错误值 collect2:ld 返回 1 退出状态

15:47:19 cpudiag2 > gcc -fPIC my.S

/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/crt1.o:在函数`_start'中:(.text+0x20):未定义的引用to `main' collect2: ld 返回 1 退出状态

因此,我尝试让 GCC 从目标文件反编译为 Intel 语法,但这也不起作用。以下两个命令都会产生 AT&T 语法中的反编译汇编代码。为什么?

objdump -d -M=intel my.o

gcc -S -masm=intel my.o

0 投票
5 回答
219676 浏览

assembly - 测试点 %eax %eax

可能重复:
x86 程序集 - 针对 eax 的“testl”eax?

我对汇编语言编程非常陌生,我目前正在尝试读取从二进制文件生成的汇编语言。我跑过

或者test %rdi, %rdi,等等等等。我很困惑这是做什么的。价值观不%eax, %eax一样吗?它在测试什么?我在某处读到它正在执行AND操作.....但由于它们的值相同,它不会只是返回%eax吗?

以下只是我发现这种用法的一个实例:

我认为je如果被比较的两个值相等就会跳转......好吧,因为 %eax很好,它本身,在什么情况下我们不会跳转?

我是一般编程的初学者,所以如果有人可以向我解释这一点,我将非常感激。谢谢!

0 投票
2 回答
10153 浏览

assembly - 如何解释这个地址 -0x80(%rbp,%rax,4)

我目前正在尝试通过分析简单的 C 代码片段来学习汇编语言(以及不同编译器选项的效果)。现在我偶然发现了以下说明:

我不明白的是目标地址的表达式-0x80(%rbp,%rax,4)。该指令在循环中为本地数组赋值。

0 投票
1 回答
1434 浏览

assembly - Gnu AS 相当于 NASM 中的 ORG

NASM 中的 ORG(起源)指令在 GAS 中的等效指令是什么?

编辑:对所有人的警告:.org不是 origin 指令,它似乎反而用00指定的地址填充组装文件。

0 投票
1 回答
13208 浏览

assembly - 装配 leal 和 movl 的区别

正如我从我的计算机系统书籍中阅读的那样,如果假设 $eax 包含 x 值并且 %ecx 包含 y,那么上面的意思是,x+4y 放入 %edx。

那么如果是

,那么上面的表情不就是同一个吗?

据我所知, leal 创建可以引用的地址,而不是像 movl 那样自己引用,但是

当我看到leal(%eax,%ecx,4), %edx将等于放入x+4y寄存器edx时,t it mean that it 'referenced'%eax and%ecx` 并提取值 x 和 y 用于计算?

  • 不是“()”表示“引用”吗?
0 投票
1 回答
1924 浏览

assembly - 装配 at&t 从用户那里获得 2 个不同的 int 并打印它们似乎无法正常工作。插入它打印第二个数字的两倍

示例输入输出:

这是带注释的代码!

0 投票
2 回答
2416 浏览

bison - 使用 yacc 将 while 语句从 c 转换为程序集

我正在尝试为一个程序编写一个 yacc 源文件,它将一个简单的 while 语句从 C 语言(比如说 ANSI 89)转换为汇编 at&t。以下是我的语法,yacc 文件的核心部分。

我的问题是:我应该使用哪种函数来连接最终字符串的值?或者我应该使用哪种数据类型、结构、联合等?提前感谢您的答案。