i386 与 AMD64 ABI 差异
在哪里可以找到 i386 和 i386 之间数据类型的所有差异。 AMD64 应用程序二进制接口 (ABI) ? 我知道 i386 ABI 中的 long 类型是 32 位的AMD64 中的 64…
使用 MonoTouch 创建自定义 UITextField 并覆盖方法
我创建了一个带有如下背景图像的 UITextField : _tf = new CustomTextField(new RectangleF(0,0 200, 200)) _tf.BorderStyle = UITextBorderStyle.No…
vararg 函数如何找出机器代码中的参数数量?
像 printf 这样的可变参数函数如何找出它们获得的参数数量? 参数的数量显然不会作为(隐藏)参数传递(请参阅 在此处的 asm 示例中调用 printf)。 …
可变参数在 mips 中工作
根据 mips abi,调用者将前几个参数放入 GPR 中以提高性能,并且不要将这些参数推送到堆栈帧中。 但是当我使用 varargs api(stdarg.h) 定义带有可…
x86_64 va_list 结构的格式是什么?
有人有关于 x86_64 ABI(Linux 上使用的)中 va_list 表示的参考吗?我正在尝试调试一些堆栈或参数似乎已损坏的代码,这确实有助于理解我应该看到的内…
在没有堆栈的 Linux 上进行系统调用
在 Linux i386 上,int $0x80 系统调用 ABI 使得无需有效的用户空间堆栈即可轻松执行系统调用。另一方面,vdso/vsyscall 接口需要访问堆栈。其他 Linu…
为什么布尔值的大小是 1 个字节而不是 1 位?
在 C++ 中, 为什么布尔值的大小是 1 个字节而不是 1 位? 为什么没有像 4 位或 2 位整数这样的类型? 在为 CPU 编写模拟器时,我遗漏了上述内容…
为什么 Windows64 使用与 x86-64 上所有其他操作系统不同的调用约定?
AMD 有一个 ABI 规范,描述了在 x86-64 上使用的调用约定。所有操作系统都遵循它,但 Windows 除外,它有自己的 x86-64 调用约定。为什么? 有谁知道…
命名空间嵌套函数的最佳实践和语义以及 extern“C”的使用
我正在创建一个带有 C-ABI 接口的 C++ 库。 这就是 GCC 在重整方面处理外部“C”限定符的方式: namespace x { extern "C" int monkey(int x) { retur…