Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
System V 中 x86_64 的 C 浮点值调用约定是什么?
我目前正在深入研究汇编领域 主要是从 x86 64 C 和 System V AMD64 的角度 通常针对 Linux 通过按顺序使用以下寄存器 整数 以及隐含的指针 值的调用约定非常简单 RDI RSI RDX RCX R8 R9 XMM
c
Assembly
x8664
callingconvention
ABI
为什么Assembly x86_64系统调用参数不像i386那样按字母顺序排列
有一个问题困扰着我 那么 为什么在x86 32 the 参数在我认为在的寄存器中传递按字母顺序 eax ecx edx esi and ranked order esi edi ebp syscall arg0 arg1 arg2 arg3
Assembly
x86
x8664
cpuregisters
callingconvention
C 调用约定和传递参数
在 Linux 或 OS X 中进行函数调用时 被调用者可以修改堆栈上参数的值吗 我的假设是 由于调用者是清理它们的人 因此它们在函数调用后应该包含相同的值 但是我发现带有 O2 的 GCC 正在修改在堆栈上传递给它的参数 我还查找了包括
Linux
x86
callingconvention
cygwin 上的 gcc 输出使用堆栈帧外部的堆栈空间
我正在查看 objdump S 的汇编输出 并注意到一些奇怪的事情 这是在 Windows 10 上使用 gcc 9 3 0 的 cygwin x86 64 v 3 1 5 上 这是特定函数的汇编输出 该函数没有用 只是说明问题 u int
Assembly
gcc
Cygwin
x8664
callingconvention
从 C 语言在 64 位汇编函数中传递参数。哪个寄存器接收这些参数?
我想将参数从 C 传递给汇编函数 在类 UNIX 系统上 前六个参数为 rdi rsi rdx rcx r8 和 r9 在 Windows 上 前四个参数为 rcx rdx r8 和 r9 现在 我的问题是 在 BIOS 或 DOS 编程级
c
Assembly
x8664
callingconvention
为什么 Microsoft 选择 stdcall 作为他们的 API 约定?
有充分的理由吗 它们的内部函数 未导出 也是 stdcall 约定吗 它是对 32 位代码的 pascal 调用约定的改编 Pascal 是 OS 2 和 Windows 3 等 16 位操作系统的调用约定 为什么选择 pascal 有点猜
Windows
WINAPI
callingconvention
stdcall
栈中的返回地址是如何指定的?
这是我通过反汇编看到的声明function 1 2 3 movl 0x3 0x8 esp movl 0x2 0x4 esp movl 0x1 esp call 0x4012d0 lt Z8functioniii gt 看来转发地址根本没有压
Assembly
x86
stack
callingconvention
__stdcall的含义和用法是什么?
我遇到过 stdcall这些天很多 MSDN 没有非常清楚地解释它的真正含义 何时以及为什么应该使用它 如果有的话 如果有人能提供解释 最好是举一两个例子 我将不胜感激 这个答案涵盖了 32 位模式 Windows x64 仅使用 2 个约
c
Windows
callingconvention
CLR/Fastcall:大值类型如何在内部传递给被调用函数?
只是出于好奇 值类型通常是复制的 并且 JIT 编译器在调用方法时似乎使用 Microsoft 的 Fastcall 调用约定 这会将前几个参数放入寄存器中 以便快速访问 但是大值类型 即大于寄存器的大小或堆栈的宽度 如何传递给被调用的函数
clr
callingconvention
C++ 当从函数返回结构体时,汇编中实际发生了什么?
我试图弄清楚如果从函数中按值返回结构 而不是返回指向该结构的指针 那么在 C 中实际会发生什么 如果函数只能返回适合寄存器的值 那么当按值发送结构时 如何进行通信 我在某处读到过 我尝试在 Godbolt 上测试它 看看它在做什么 但我不了
c
Assembly
x8664
callingconvention
ABI
如何将指向成员函数的指针传递给 C 函数? [复制]
这个问题在这里已经有答案了 可能的重复 使用 C 类成员函数作为 C 回调函数 我正在使用 C 库 winpcap 编写一个面向对象的库 我需要传递网络数据包到达时调用的回调函数作为函数指针 我想将成员函数指针传递给 winpcap 以保持
c
functionpointers
Winpcap
callingconvention
x86-64 在寄存器中传递参数的顺序
我对 x86 64 环境中的参数传递过程感到好奇 因此我编写了一段代码 a c extern int shared int main int a 100 swap a shared b c int shared 1 void swap in
c
Assembly
parameters
x8664
callingconvention
了解堆栈对齐
我正在阅读英特尔手册关于堆栈帧 值得注意的是 输入参数区域的末尾应按 16 对齐 32 如果 m256在堆栈上传递 字节边界 我不太明白这是什么意思 是不是意味着rsp应该指向始终与16对齐的地址吗 我尝试尝试并编写了非常简单的程序 sec
Assembly
x8664
memoryalignment
callingconvention
ABI
x64 调用约定(堆栈)和可变参数
我读了微软的文档 但是这个方案太尴尬了 我想我应该仔细检查以确保我正确理解它 我的理解是传递参数的通用方法是这样的 bottom of stack return address shadow space for arg 1 shadow s
Windows
64bit
callingconvention
win64
«
1
2
3