问题标签 [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.
assembly - mov %eax,(%esp)
以下陈述之间有什么区别?
我正在扩散一个二元炸弹,并且在程序集的早期 遇到了一些mov
and命令的问题。leal
assembly - 汇编 (,%eax,4)
如果我的命令行之一说:
这意味着什么?我特别问是因为第一个逗号之前没有任何值,而且我不确定地址之前的 * 到底是什么意思。
assembly - 组装中的蛇游戏
我正在尝试制作一个小型 IA32 游戏(AT&T),我目前面临的问题是我不知道如何/在哪里存储蛇的身体和“苹果”以便能够检查碰撞。蛇的大小不断增加,所以容器应该动态分配?
在高级语言中,我会使用二维向量/数组/链表或类似的东西来存储坐标,然后在移动后进行比较。
欢迎任何建议。
(查看了类似的问题,但没有回答我的问题)
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
assembly - 测试点 %eax %eax
我对汇编语言编程非常陌生,我目前正在尝试读取从二进制文件生成的汇编语言。我跑过
或者test %rdi, %rdi
,等等等等。我很困惑这是做什么的。价值观不%eax, %eax
一样吗?它在测试什么?我在某处读到它正在执行AND
操作.....但由于它们的值相同,它不会只是返回%eax
吗?
以下只是我发现这种用法的一个实例:
我认为je
如果被比较的两个值相等就会跳转......好吧,因为 %eax
很好,它本身,在什么情况下我们不会跳转?
我是一般编程的初学者,所以如果有人可以向我解释这一点,我将非常感激。谢谢!
assembly - 如何解释这个地址 -0x80(%rbp,%rax,4)
我目前正在尝试通过分析简单的 C 代码片段来学习汇编语言(以及不同编译器选项的效果)。现在我偶然发现了以下说明:
我不明白的是目标地址的表达式-0x80(%rbp,%rax,4)
。该指令在循环中为本地数组赋值。
assembly - Gnu AS 相当于 NASM 中的 ORG
NASM 中的 ORG(起源)指令在 GAS 中的等效指令是什么?
编辑:对所有人的警告:.org
不是 origin 指令,它似乎反而用00
指定的地址填充组装文件。
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 用于计算?
- 不是“()”表示“引用”吗?
assembly - 装配 at&t 从用户那里获得 2 个不同的 int 并打印它们似乎无法正常工作。插入它打印第二个数字的两倍
示例输入输出:
这是带注释的代码!
bison - 使用 yacc 将 while 语句从 c 转换为程序集
我正在尝试为一个程序编写一个 yacc 源文件,它将一个简单的 while 语句从 C 语言(比如说 ANSI 89)转换为汇编 at&t。以下是我的语法,yacc 文件的核心部分。
我的问题是:我应该使用哪种函数来连接最终字符串的值?或者我应该使用哪种数据类型、结构、联合等?提前感谢您的答案。