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

macos - 对于带有 intel_syntax 的符号,无法从 GNU 汇编器获得正确的立即模式

我正在尝试在 MAC OS 中使用 GNU 汇编器(as)编写一个简单的汇编程序。部分程序如下所示:

汇编链接后,在调试器中查看的可执行代码为:

movq $0x14, %rdx但我真正想要的是movq 0x14, %rdx

我试图将部分放在.data部分之前,.text但仍然得到相同的结果。

如何使用 intel 语法获得正确的立即模式?

0 投票
1 回答
91 浏览

assembly - 我可以用 OR 操作代替 MOV 操作吗?

首先,我想说我是 ASM 新手,如果这是一个愚蠢的问题,请原谅。

我在Agner Fog 的微架构手册中阅读了有关部分寄存器停顿的信息(这似乎有点高级,但我很好奇为什么 64 位模式下的 32 位指令将寄存器的上半部分归零)。例 6.13 给出了如何避免寄存器停顿的解决方案。我对此仍然有些困惑,为什么不使用 OR 操作而不是 MOV,如下所示:

我觉得效果是一样的。它们每秒都使用相同数量的周期吗?一个比另一个更有效吗?有没有什么“幕后”让我更喜欢其中一个?

0 投票
1 回答
72 浏览

assembly - 有没有办法为 x 命令输出指定语法?

我想知道是否可以更改以下命令输出的语法:

现在它给出了这样的输出。我想这是 AT&T 语法,如果我错了,请纠正我(新手):

我想要的是-F以下命令中的标志之类的东西disassemble -n main -F intel。有什么办法可以做到这一点。我既没有使用help x也没有通过谷歌搜索找到任何东西。提前致谢!

注意:我lldb用作调试器。

0 投票
0 回答
530 浏览

x86 - clang 不使用英特尔汇编语法

我正在尝试在 clang (Windows) 中编译内联汇编代码。所以,我有以下代码:

我尝试使用它编译它,clang++ -masm=intel main.cpp但它抱怨助记符操作数大小main.cpp:4:7: error: unknown use of instruction mnemonic without a size suffix,因为它仍在使用 AT&T 语法。
我试过使用

但它抱怨使用 .intel_syntaxmain.cpp:3:7: error: unknown token in expression asm(".intel_syntax;")

0 投票
1 回答
295 浏览

assembly - GCC 内联汇编无法将局部变量的地址加载到 x64 Intel 格式的寄存器中?

我很习惯 Intel 格式的内联汇编。有谁知道如何在下面的代码中将两条 AT&T 行转换为 Intel 格式?它基本上是将局部变量的地址加载到寄存器中。

mov eax, [var_a]具体来说,在 32 位模式下编译时允许使用加载堆栈上的局部变量。例如,

它编译得很好:

但是,在 64 位模式下编译时不允许使用相同的语法:

它不编译:

那么有什么方法可以在不使用的情况下完成这项工作,因为可以通过或不破坏其他寄存器input:output:clobber直接访问简单的局部变量或函数参数?mov rax, [rsp+##]mov rax, [rbp+##]

0 投票
1 回答
360 浏览

assembly - 告诉 GAS 在 Intel 语法模式下使用分号作为注释

我可以在 GAS 中使用分号作为注释字符吗?

我正在使用带有 Intel 语法的 GAS 2.30,如下所示。

这很好用,只是我必须使用“#”作为注释字符而不是“;”。

重要的主要原因是我拥有的编辑器(SublimeText 3.2.2,build 3211)只有 ARM 或 NASM 汇编语法的语法高亮显示,它们都不理解“#”的注释,因为我正在关注主要的材料使用英特尔语法,这是我想与我正在阅读的内容保持一致的内容。

我查看了英特尔手册,5000 多页的 PDF 文档,除非我以某种方式错过它,否则它没有说明任何评论,尽管英特尔的介绍性页面使用分号进行评论。

我的问题是,在这种情况下,是否有可能让 GAS 使用分号而不是井号,或者这可能是简单习惯的小差异之一?

我知道 GAS 也将接受 /、// 和 /* */ 但 SublimeText 不理解这些。

有趣的是,告诉 SublimeText 使用 Bash 语法突出显示是一个很好的解决方案,如下面的屏幕截图所示,但也许还有一种方法可以将 GAS 配置为也使用分号?谢谢。

SublimeText 中的 GAS 汇编语法高亮显示

0 投票
1 回答
426 浏览

assembly - 汇编语言之间的差异

我对汇编语言很陌生,我知道有很多很多类型的汇编语言。比如ARMMIPS等等x86。所以我有问题。

以下是更多信息

ARM 中的 Hello World

NASM 中的 Hello World

GAS 语法中的 Hello World

MIPS 汇编中的 Hello World

我在互联网上搜索了很多关于这些的信息。

所以我找到了这个信息。

  • Gas 和 Intel Assembly 是一样的。但是语法不同
  • 语法仅出于版权原因而有所不同
  • ARM 有自己的语法类型

我有问题要问你?

  1. 汇编语言虽然变了,但代码编写顺序是不是不一样了?
  2. 汇编语言之间的唯一区别是它们使用的语法?

更多信息

0 投票
1 回答
346 浏览

assembly - 英特尔语法汇编中的 EXTRN 是什么?

x86 CPU:MSVC(2010)

在下面的代码中是什么EXTRN _printf:PROC意思,为什么在“ :”之后我们使用一些“ PROC”指令而不是“ near”或“ far”?

0 投票
1 回答
51 浏览

c - 如何使用程序集插入运行 C 代码

我有带有汇编插入的 C 程序。这是代码:main.c:

我已经找到了如何编译这段代码(gcc -std=c11 -S main.c -o main),但是当我运行它时(./main) - 这是终端中的一个问题: bash: ./main: Permission否认。

当我尝试在没有 -S 标志的情况下编译它时,会出现许多不合理的错误:

错误是什么?如何修复它以正确运行我的代码?谢谢!:)

0 投票
0 回答
193 浏览

assembly - 使用 CPUID 指令了解 C 的编译器 mov [mem]、reg 指令

我一直在学校学习汇编,我正在尝试将其应用于实际情况。我有一个不再受支持的产品,我想看看使用 CPUID 执行多项检查的部分代码是如何工作的。我只研究过 MIPS 架构,所以我使用 x86 指令和寄存器的参考来理解。拆解如下:

这是它编译成的 C 代码

我不明白的是_DAT_00af1128,当程序集将地址移入寄存器时,值是如何存储的,而不是相反。我本以为应该是MOV EBX, dword ptr [DAT_00af1124]