8得票2回答
在GCC中调用汇编代码?

#include <stdlib.h> static inline uint xchg(volatile unsigned int *addr, unsigned int newval) { uint result; asm volatile("lock; xchgl...

12得票2回答
在x86_64 Linux中如何从内联汇编中调用Syscall?

为什么这个程序打印垃圾而不是优雅地退出?我在BSD上使用系统调用的方式,想知道在Linux中需要做什么才能使其工作。int main(int argc, char **argv) { __asm ("movq $1,%rax; movq $0,%rdi; syscall"); /* e...

18得票4回答
GNU汇编中的.byte汇编指令有什么用途?

在查看一些内嵌汇编的C代码时,我遇到了一个以点号开头的 .byte 指令。 通过在网上查找汇编参考文献,我发现它用于在内存中保留一个字节。 但是在代码中,该语句之前没有标签。所以我想知道未标记的 .byte 指令或任何其他数据存储指令的用途。 例如,如果我编写 .byte 0x0a,我该...

35得票8回答
在C#中使用x86/x64 CPUID

与我的另一个问题相关,请帮我调试“System.AccessViolationException类型的未处理异常出现在未知模块中。其他信息:尝试读取或写入受保护的内存。这通常是其他内存损坏的迹象。”。通过代码步进,一切正常直到实际调用del()并且在那一行失败。 该代码基于这篇文章的示例和这...

13得票7回答
在C语言中是否可以访问32位寄存器?

在C中是否可以访问32位寄存器?如果可以,应该如何访问?如果不能,那么有没有办法将汇编代码嵌入到C中?顺便提一下,我正在使用MinGW编译器。

30得票5回答
我该如何在iPhone上使用内联汇编进行编程?

如何完成?我需要采取哪些步骤,需要考虑哪些陷阱和意外情况?

8得票3回答
使用条件标志作为GNU C内联汇编输出

我正在处理一些代码,其中将条件标志从内联汇编块中输出并将其用作在调用C代码中进行分支的条件非常理想。我不想存储标志(这将是无用且低效的;已经有更有效的方法来实现结果),而是直接使用标志。是否有任何方法可以使用GNU C内联汇编约束来实现此目的?我对适用于多个指令集体系结构的方法感兴趣,旨在将其...

17得票2回答
Retq指令,它返回到哪里?

我不明白汇编指令retq返回到哪里。 我知道当我的普通代码执行时,它会返回堆栈中指定的地址。但它如何知道返回地址在堆栈中的位置? 简而言之,它是使用rbp还是esp来查找堆栈中的地址?

7得票3回答
使用内联汇编循环遍历数组

当使用内联汇编循环遍历数组时,我应该使用寄存器修饰符“r”还是内存修饰符“m”? 让我们考虑一个例子,它将两个浮点数数组x和y相加,并将结果写入z。通常我会像这样使用内置函数来完成此操作: for(int i=0; i<n/4; i++) { __m128 x4 = _mm_...

17得票2回答
在GNU C的inline asm中,针对单个操作数的xmm/ymm/zmm有哪些大小覆盖修饰符?

在尝试回答使用内嵌广播和汇编的嵌入式广播时,我尝试做类似于这样的事情: __m512 mul_bcast(__m512 a, float b) { asm( "vbroadcastss %k[scalar], %q[scalar]\n\t" // want vb...