8得票1回答
微软堆栈是否总是以16字节对齐?

在Kip Irvine所著的《Assembly Language, Seventh Edition for x86 Processors》一书中,第211页的5.53 The x86 Calling Convention关于Microsoft x64 Calling Convention提到:...

7得票1回答
汇编语言中的.quad指令是如何工作的?

我不太理解汇编语言中的.quad函数是如何工作的。 据我在网上查到的信息,它会为每个表达式生成一个64位的二进制补码值,并将其放入当前部分。我知道什么是二进制补码以及部分所指的是调用.quad的那一行代码。 通常情况下,在汇编语言中什么时候需要使用.quad呢?此外,为什么要使用.quad...

114得票3回答
如何从GCC/clang汇编输出中去除"噪音"?

我希望检查在我的代码中应用boost::variant后的汇编输出,以便查看哪些中间调用被优化掉了。当我使用GCC 5.3进行以下示例的编译(使用g++ -O3 -std=c++14 -S),似乎编译器将所有内容都优化掉并直接返回100: (...) main: .LFB9320: ...

9得票2回答
MIPS浮点数:swc1 vs. s.s

我正在进行一些涉及MIPS汇编的工作,我经常遇到这四个浮点数加载/存储伪指令:l.s,l.d,s.s和s.d。我在网上找到了一些文档,并弄清楚了似乎有四个“实际”的指令可以完成相同的操作:lwc1,ldc1,swc1和sdc1。 我的唯一问题是,它们之间有什么区别?据我所知,两组指令完全执行...

12得票1回答
汇编语言中的系统调用返回值是什么?

当我尝试研究内核系统调用的返回值时,我发现有一些表格描述了它们以及需要将什么放入不同的寄存器中才能让它们工作。然而,我没有找到任何文档说明从系统调用中获得的返回值是什么。我只在不同的地方找到了我将在EAX寄存器中接收到的内容。 TutorialsPoint: 通常结果存储在EAX寄存...

7得票3回答
GCC/objdump:生成可编译/可构建的汇编(与C/C++交替)源代码?

这与使用GCC生成可读性汇编代码?相似,但我的上下文是针对Atmel的avr-gcc(相应地,avr-objdump)(虽然我猜它适用于整个GCC)。 问题在于,我有一个由多个.c和.cpp文件组成的项目; 最终将编译为一个可执行文件,名称与“主” .cpp文件相同。 在此过程中,我可以通...

7得票2回答
在x86-64上,gcc参数寄存器溢出问题

我正在进行一些x86-64汇编的实验。编译了这个虚拟函数: long myfunc(long a, long b, long c, long d, long e, long f, long g, long h) { long xx = a * b * c * ...

37得票1回答
MMX 寄存器和 XMM 寄存器有什么区别?

我目前正在学习Intel x86处理器上的汇编编程。 请问有没有人能够解释一下,MMX寄存器和XMM寄存器之间的区别?我非常困惑它们各自的功能以及它们之间的异同。

23得票5回答
UEFI是如何工作的?

我在学习关于引导程序时,恰好遇到了UEFI这个术语。我了解一些关于UEFI的知识。但是,使用UEFI启动系统是在哪种模式(Real,Protected,Long)下进行的?如果普通的启动加载程序无法与UEFI配合工作,那么在处理UEFI时有什么替代的启动加载程序呢?除了汇编之外,我是否需要其他...

12得票2回答
为什么使用JLE而不是JL?

我写了以下的程序:#include <stdio.h> int main() { int i = 0; for (; i < 4; i++) { printf("%i",i); } return 0; } 我使用 ...