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

gcc - 为什么objdump的汇编编码不一样?

我正在阅读这篇关于位置无关代码的文章,我遇到了这个函数的汇编列表。

但是,在我的机器(gcc-7.3.0,Ubuntu 18.04 x86_64)上,我得到的结果略有不同:

我发现的主要区别在于mov指令的语义。在上面的列表中,mov ebp,esp实际上移动espebp,而在下面的列表中,mov %esp,%ebp做同样的事情,但操作数的顺序不同。

这很令人困惑,即使我必须编写手写程序集。总而言之,我的问题是(1)为什么我对相同的指令有不同的汇编表示,以及(2)在编写汇编代码时我应该使用哪一个(例如 with __asm(:::);

0 投票
0 回答
1255 浏览

gcc - 在 dev-C++ 中使用 scanf_s 会出现错误:“scanf_s”未在此范围内声明

我是新来的,对编程了解不多。我们在大学使用这种类型的编程。我们在主体之前添加这个 /*#include ,#pragma warning(disable:4996)

0 投票
0 回答
321 浏览

assembly - 汇编和标准输出中的 fprintf

为了fprintf从汇编代码中调用,我编写了以下内容

它工作得很好。

但是,我希望我需要编写push dword stdout,因为 stdout 已经是一个指针 ( FILE*)。这样做会给我“错误的 stdio 句柄错误”。这是为什么?

0 投票
1 回答
812 浏览

macos - 如何更新objdump?得到:未知的命令行参数 -M

阅读乔恩·埃里克森 (Jon Erickson) 的关于黑客的书。他使用英特尔格式的汇编代码。他提供了以下片段:

我收到此错误:

我需要做什么来更新 objdump?

0 投票
1 回答
188 浏览

c++ - 当我尝试运行 C++/MASM 程序时出现错误 A2022 和 MSB3721

我运行这段代码,它是从一个只接受整数 num1 和 num2 的输入并将它们传递给 sum.asm 的 C++ 程序调用的。我得到错误: A2022:指令操作数在 sum.asm 第 5 行 MSB3721 中的大小必须相同:命令 "mI64.exe/c/nologo /Zi/Fo "x64\Debug\sum.obj" /W3 /errorReport: prompt /Ta" ......\OneDrive\Documents\sum.asm"" exited with code 1. in masm.targets line 70

我尝试更改 mov rax, eax 为, movq rax, [eax] 因为我看到这就像我的另一个问题的答案之一,但它给了我另一个错误,说它不是正确的语法

主.cpp:

总和.asm:

0 投票
1 回答
295 浏览

c - 在 Xcode 10.3 中编写 Intel 语法

我正在 Xcode 中编写一个 C 项目,我想链接一个单独的程序集文件以与项目一起编译。但是我需要用 Intel 语法编写程序集,因为我发现 AT&T 语法绝对怪诞。

不幸的是,Apple 的默认 Clang 编译器不喜欢我在 Intel 中编写汇编代码,而更喜欢 AT&T。是否可以更改设置以允许以 Intel 语法编写单独的程序集文件?

例如,这组装:

但这不会组装

编译器会在后一个示例中引发错误。

_func 正在从 C 代码中调用。

澄清一下,我不是在写内联汇编。

0 投票
2 回答
292 浏览

assembly - 消除 Intel 语法中寄存器名称的歧义

我想知道如何在英特尔语法的某些指令中区分标签名称和寄存器名称。例如,call rdx通常意味着间接跳转,但如果我们rdx在同一个汇编文件中有标签怎么办?我相信它可以解释为直接跳转到rdx. 是否有任何符号告诉汇编程序哪个是哪个?

0 投票
1 回答
106 浏览

gcc - 内联汇编寻址模式

我正在尝试lidt使用 -masm=intel 和 32 位(-m32)在 gcc 中的内联汇编中编写指令。所以我定义了以下结构:

如果我使用 nasm,我将使用lidt [desc]. 但我正在使用内联汇编并将其包含在一个函数中:

这给了我“错误:不支持的指令‘lidt’”。生成的程序集如下所示:

据我所知,大括号在气体英特尔语法中是可选的。所以这里的问题是指令中qword ptr不可接受的,因为它需要一个操作数。我怎样才能告诉 gcc 使用它?即,放下并使用. lidtm16&32qword ptrdesc

0 投票
2 回答
515 浏览

assembly - 如何让`mov rdx,symbol`在clang intel-syntax中移动符号值而不是符号地址的值?

我有以下在 macOS 上与 clang 一起使用的代码:

虽然它看起来应该打印“Hello World”并退出,但它实际上是段错误。事实证明,这是因为mov rdx, hello_len实际上试图移动位于 addresshello_len的值,而不是hello_len自身的值。

如果我使用 AT&T 语法,则该行将movq $hello_len, %rdx正常工作。clang 版本的 GAS 英特尔语法中的等价物是什么?

0 投票
1 回答
589 浏览

gcc - 如何使用英特尔语法将参数传递给内联 GCC/Clang 程序集?

所有文档都使用 AT&T 语法。

如何使用 Intel 语法重写它?

不起作用: