问题标签 [gnu-assembler]

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 回答
3864 浏览

assembly - MIPS 程序集不支持“.set noat”吗?

目前,我正在学习 GNU as,并在“info as”中找到了很多有用的信息。

我发现在 MIPS 指定代码中使用了“.set noat”,但是在“info as”中搜索该指令时,我在节点“alpha 指令”中找到了它的解释,但在“MIPS Dependent Features”中没有。为什么?我错过了手册中的内容吗?

TIA

0 投票
3 回答
1496 浏览

assembly - 汇编程序函数中的错误返回 (x86)

我使用 Intel x86 进行汇编程序编程。我有两个变量(int),我希望汇编函数返回最大的。我用 C 程序调用汇编程序函数,我在 main()、函数(1,5) 中有这个。

这是汇编代码:

最大的数字将在 %eax (movl var2, %eax) 中。问题是该函数总是返回 %eax 中的初始数字。例如,function(1,5) 返回“1”而不是“5”。

我不明白为什么结果是错误的。

编辑:感谢您的回复,感谢您的建议,我修改了程序:

要回来function(),我使用jmp,是否正确?它工作正常。

另外,我该如何改进这段代码?我使用变量是因为目标是获得三个数字并找到中位数。

0 投票
1 回答
1634 浏览

string - 字符串和 asm x86

我是 asm 的新手并使用字符串。

1/我有一个字符串,我想返回第一个字符的地址。(我在 C main 中调用 asm 函数)。

我试过了 :

据我说,它返回字符串。

movl $(str), %eax它返回字符串第一个字符的地址?如果我想返回字符串中第二个字符的地址,我不明白如何在 asm.xml 中做到这一点。

我在 C 程序中显示结果是这样的:

它返回给我“字符串:编程,地址:134520852”我认为“134520852”不是地址,有些东西我不明白。

2/我已经看到字符串有%edi,%esi和函数,但我找不到使用它的好的(简单)教程。我刚刚明白 %edi 用于索引源,%esi 用于索引目标......你知道一些关于它的链接吗?

提前致谢 !:-)

0 投票
1 回答
1968 浏览

xcode - 如何 32 或 64 字节对齐 ARM 汇编代码以用于 Xcode/gcc?

我有一些汇编代码需要对齐到 32 或最好是 64 字节的边界。

我有两种情况:对齐函数的开头,或者让汇编器自动插入无操作以对齐循环的开头。

这些可能吗?

非常感谢。

0 投票
2 回答
2592 浏览

assembly - asm程序中的递归

我有一个关于返回分段错误的 asm (x86 / GAS) 程序的问题。关于斐波那契:我认为算法没问题:(伪代码)

我不明白为什么会出现错误。AC 程序调用 asm 函数。

这是代码:

你能帮我找出段错误在哪里吗?

谢谢 !

PS:这里是 ret :

0 投票
1 回答
402 浏览

arm - ARM-GAS:如何加载在某些 c 文件中定义的静态数组的地址(PIC 和常规代码)

我在 c 文件(const int data_input[1024];)中定义了一些简单的静态数组,我需要从我的汇编代码中访问它。正确的方法是什么?

到目前为止,我一直在这样做:

AFAIK,adr 是 ldr r1、=data_input_ptr 或类似的伪操作。

对我来说,我这样做的方式似乎不是很正确:首先,如果在链接时检测到可能的情况,adr r1, data_input 可能会直接使用 pc 相对寻址。另一个问题是关于 PIC:如果代码必须与位置无关怎么办。如果 data_input_ptr 的值必须由加载器初始化,它是如何工作的(我对此是否正确?)

0 投票
1 回答
1682 浏览

assembly - 汇编中的多个参数

像这样的多个参数在 x86 程序集中有什么作用。例如这两条指令:

mov -0x4(%edi,%esi,4),%eax

lea (%edi,%esi,4),%ebx

我不愿意发布所有的汇编代码,因为这是一个大学项目,我的老师可能不希望我在网上发布这个。任何帮助表示赞赏。

0 投票
4 回答
21422 浏览

c - 如何从 ARM 程序集调用 C 函数?

我正在 Android 设备上编写针对 ARM Cortex-A 的代码(使用 GNU 汇编器和编译器),并且我正在尝试在 Assembly 和 C 之间进行接口。特别是,我对从 Assembly 调用用 C 编写的函数感兴趣。我尝试了很多东西,包括.extern指令、用asm等声明 C 函数__asm__,但它们都不起作用,所以我正在寻找一个最小的例子。对此类示例的引用同样受欢迎。

0 投票
2 回答
1559 浏览

gcc - 内联汇编——访问本地 char* 变量——gcc

我正在尝试编写一个简单的程序来打印出一个 C 字符串,而不使用其中一个 linux 系统调用或标准 C 库函数。这仅用于学习目的,我永远不会在生产中这样做(除非我真的很擅长它=))。

首先我的系统信息:

接下来是代码:

使用以下 makefile 编译:

事情编译得很好,我只是无法正确使用语法来让事情正常工作。非常感谢您的更正,但如果您也可以指出您是如何获得解决方案的,那就太好了。我正在尝试更好地使用手册页等。


添加通过gdb 运行可执行文件我可以看到 ecx 没有指向正确的地址:

0 投票
1 回答
1483 浏览

64-bit - 64 位 GAS 教程

有谁知道 GAS 的教程,我可以在其中找到有关在 64 位系统上使用 AT&T-Syntax 编译和链接代码的信息?我大学需要这个,所以我不能用 nasm 代替。我能找到的所有 tuts 要么适用于 nasm 或类似的东西,要么只适用于 32 位。即使是我们教授展示的简约示例也适用于我的 32 位系统,但不适用于 64 位。