问题标签 [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.
c - 使用 gcc(英特尔语法)创建“原始”汇编代码
我想用 gcc 创建一些汇编代码。当我使用时,gcc -masm=intel -S test.c
我得到了满满的汇编代码.def
和.cfi
无法组装的标签。有没有办法在没有这个标签的情况下创建汇编代码?
例如:一个简单的 c 代码,如:
编译为:
但我想要的是这样的:
我希望有办法做到这一点。先谢谢了。
c - 让 ASM 中的库在 C 中访问它?
我知道您可以使用ASM直接将 ASM 放入 C 中,但我想知道是否可以在 Assembly 中创建一个库,对其进行编译,然后从 C 访问您在该库中声明的函数?
所以我知道我应该使用预先编写的库,但这只是为了教育目的和娱乐!例如,假设我想使用 sys 调用打印到屏幕上,现在我编写了一些程序集来执行此操作并将函数命名为 print,然后将其编译为某种 lib 文件 .so/.lib/.a那时我会做什么来引用该库中的该函数?
我只是写出函数并在编译时链接它吗?
谢谢 :)
c - 汇编中的字符串复制
我在将字符串复制到 Assembly 中的空数组时遇到问题。
首先,我得到了一些我想复制的垃圾而不是字符串。
其次,该程序应该使用最多 100 个字符的字符串,但是当我声明一个包含 100 个字符的数组时,我在使用 gcc 编译后得到“ ***堆栈粉碎检测*** ”。
我是大会的新手,所以请帮助我。
先感谢您
c - 汇编中的 C 程序
我必须在汇编中编写一个简短的程序,但我的版本不起作用。它应该打印 ASCII 字符,然后通过 atoi 函数将其更改为整数值并打印出该值。重要的是使用 C 中的程序:puts() 和 atoi()。
我做错了什么?请尽可能清楚地为我解释。我正在使用 gcc,并且正在使用 intel_syntax 程序集编写代码。
这是我的代码:
先感谢您
c++ - 带有变量的 GCC 内联 ASM
我试图在我的 C++ 源代码中使用以下 ASM 内联代码,为 Visual Studio 提供:
其中 target 是一个 void* 指针。我不知道如何将其转换为与 GCC 兼容的代码。我知道 GCC 使用如下合成器:
但显然在这种情况下变量存在问题。那么,任何人都可以向我解释如何使用 GCC for Windows 使用带有内联 ASM 的指针?
谢谢你的帮助。
c - 使用英特尔语法中的内联汇编编译内核模块
我不想编写一个使用大量内联汇编的内核模块。因为我习惯了 Intel 语法,所以我想完全避免 AT&T 语法。以下最小示例显示了执行此操作的一种方法:
示例模块.c
生成文件
所以,每当我想内联汇编时,我都有两个 write .intel_syntax noprefix\n...\n.att_syntax noprefix\n
。还有其他方法可以做到这一点吗?使用 gcc 编译时,我过去只是将-masm=intel
参数传递给 gcc,这使我可以自由使用 Intel 语法。在这种情况下是否有类似的可能?
assembly - 关于 [base + index*scale + disp] 的几个问题
Intel 和 AT&T 语法中内存寻址的一般形式如下:
我的问题如下:
- 可以是任何寄存器吗
base
?index
- 可以取什么值
scale
,是 1、2、4 和 8(默认值为 1)? - 是否可以互换(唯一
index
的disp
区别index
是寄存器disp
是立即数)?
linux - 汇编语言和打印结果。斐波那契数列
我在 x86 Linux 上使用 Assembly,并带有 Intel 8086 的说明。我的程序有问题,它应该计算斐波那契数列的元素。
我使用 args 运行的这个程序,例如:
./fibb 1 2 3 ,
什么意思:序列的第一个元素是1,第二个元素是2,我们想得到第三个。该示例效果很好,但是当我尝试运行时:
./fibb 1 2 4 ,
然后我有一些垃圾。请帮我。我是Assembly的新手,所以请清楚地解释我做错了什么。这是我的代码:
assembly - NASM/Yasm 在评论以反斜杠结尾后放弃 CALL
我目前正在尝试构建自己的引导加载程序,并注意到一些奇怪的东西。
当下面的代码用 NASM 或 Yasm 组装而没有标记的 NOP 命令时,二进制文件中缺少以下 CALL。在包含 NOP 的情况下,CALL 已正确组装,但二进制文件中不存在操作码 0x90 (NOP)(由于 NOP 的性质,稍后可以理解)。
x86 - x86反汇编中“EC”的含义
我正在尝试拆卸十六进制“8B EC”。反汇编程序给了我mov ebp, esp
- “8B” -
MOV
指令; - “欧共体” - ???;
反汇编程序如何知道“EC”是ebp, esp
?