问题标签 [intel-syntax]

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

assembly - 汇编翻译

我正在尝试将以下 C 代码转换为程序集:

我在换档操作中不断出错。我看过书中的一些例子,但我不明白有什么问题。我认为这可能是因为我想要转移的数量是一个变量。我想知道实现这一目标的正确方法是什么?

这是我尝试过的:

错误说:错误的操作数类型。错误代码:C2415

0 投票
1 回答
380 浏览

assembly - 过去在 2007 年工作的英特尔语法代码上的 GNU 汇编器错误

我终于回到了我的 colorforth 项目,几年前我放弃了这个项目,当时对 binutils 的更新破坏了我所有的资源。这是正在发生的事情的一个例子:

第一个非指令行来自手册中的示例:https ://sourceware.org/binutils/docs/as/i386_002dMemory.html#i386_002dMemory ,其余来自 objdump 反汇编--disassembler-options=intel。每一个都无法组装:

我整个晚上都在谷歌上搜索,没有运气。我确定我做错了什么,但该死的,如果我能弄清楚它是什么。我有apt-get source binutils,但不知道从哪里开始寻找。

那么gas再次烹饪的魔法咒语是什么?

0 投票
1 回答
6273 浏览

macos - 后端错误:64 位模式不支持 32 位绝对寻址

嗨,我正在使用 gcc 在 Mac 上处理 ASM intel_syntax noprefix,由于某种原因,我在后端不断收到此错误:64 位模式不支持 32 位绝对寻址 这是否与变量有关,在时刻是在 ASM 内联上使用的吗?

这是我的代码:

0 投票
1 回答
6628 浏览

assembly - 使用“.intel_syntax noprefix”如何获取标签的内存地址?

我正在学习如何创建组装和链接的实模式程序:

  • GCC 汇编器版本 2.25
  • Binutils 2.25 版
  • GCC 版本 5.2.0

我使用没有指定前缀的 Intel 语法.intel_syntax noprefix

我想将字符串的地址加载到SI寄存器中。我知道,如何在NASM中引用内存位置,但是当我在 GNU 汇编器代码中执行相同操作时,它只会将字符串的 WORD 移动到寄存器中,而不是标签的地址。

我的代码是:

当我使用 GCC 编译它时,我可以在调试器中看到处理器执行的操作:

但我希望将字符串的地址移入寄存器,而不是它指向的数据。

我还尝试在名称周围加上方括号,如下所示:

这没什么区别。

NASM我知道这个汇编代码有效:

NASM将生成将地址name移入寄存器SI的指令。

我的问题:有没有办法强制GCC使用无前缀的英特尔语法将符号的地址加载到寄存器中?

0 投票
0 回答
214 浏览

assembly - 使用 AT&T 语法时 argc 错误

我正在阅读这个汇编教程并且我得到了这个例子,所以我决定尝试改进它。一旦我这样做了,它就停止工作了,所以我尝试将它转换为 AT&T 语法,这样我就可以用 gcc 编译它并获取调试信息(因为我在 OS X 上,而 nasm 不会为 Mach 生成调试信息- O 格式)。

我试图转换可以工作的原始程序,但在我使用 AT&T 语法编写后它停止工作。我使用 gdb 调试它,发现%rsp我希望包含 argc 的 包含 value 0x93b2e5ad。intel 语法版本没有发生这种情况。

所以我的问题是,为什么%rsp在 AT&T 版本中 argc 的值不正确,而在 Intel 版本中却没有?

这是原始的 Intel 语法版本(我在教程中稍微修改了版本):

这是我将其转换为 AT&T 语法后的代码:

我像这样编译了英特尔版本:

我编译了这样的 AT&T 版本:

0 投票
2 回答
5264 浏览

gcc - 如何将 gcc 设置为永久使用 intel 语法?

我有以下代码,可以使用 gcc 命令编译gcc ./example.c。程序本身调用函数“add_two”,它只是将两个整数相加。要在扩展汇编指令中使用 intel 语法,我首先需要切换到 intel,然后再切换回 AT&T。根据 gcc 文档,可以使用gcc -masm=intel ./exmaple.

每当我尝试用开关编译它时,-masm=intel它都不会编译,我不明白为什么?我已经尝试删除该指令.intel_syntax,但它仍然无法编译。

通过编译上述程序的错误消息gcc -masm=intel ./example.c是:

0 投票
0 回答
79 浏览

assembly - 使用 NASM 编译器编译时出现奇怪的错误

我被正式难住了......我在编译这个.ASM文件时遇到了最奇怪的错误......出于某种原因,该行mov bx, word [w1]导致编译器说以下内容:error: invalid effective address. 但是,它前面的行mov ax, word [w0]编译得很好。我想可能是我定义 w1 的方式有问题,所以我回头看,发现我定义的 w0 和 w1 都是完全相同的,减去标签:w0 dw 0w1 dw 0。我完全不知道是什么原因造成的!所以,如果你想尝试自己编译,这里是源代码......

无论如何,我的问题是,是什么原因造成的,我将如何解决这个问题?

编辑:完整的代码可以在这里找到:http: //pastebin.com/NFqcDnhZ

0 投票
1 回答
1624 浏览

assembly - 将 GNU 中的内存与常量区别为 .intel_syntax

我有一条用 Intel 语法编写的指令(使用 gas 作为我的汇编程序),如下所示:

但是正如我所期望的那样,该 mov 指令正在组装为mov 0xe,%rdx,而不是。mov $0xe,%rdx我应该如何编写第一条指令(或 的定义msg_size)以获得预期的行为?

0 投票
0 回答
88 浏览

assembly - 在 8086 程序集中,为什么以及何时需要在 mov 命令中使用偏移量?

mov ax, offset new我想知道“ ”和“ mov ax, new”有什么区别

实际的偏移量是多少,它加起来的值是多少?

0 投票
1 回答
1849 浏览

c - 汇编循环遍历字符串以计算字符

我尝试制作一个汇编代码来计算字符串中有多少个字符,但出现错误。

代码,我使用 gcc 和 intel_syntax

我得到了错误:

最后我想制作一个程序,它搜索正则表达式模式([pq][^a]+a)并打印它的起始位置和长度。我用 C 编写它,但我必须让它在汇编中工作: 我的 C 代码: