PC Assembly Language Paul Carter This is a very good tutorial about 32 bit protected mode assembly, using NASM. It includes not only how to program in assembler but also how to interact with C/C++ programs. Calling conventions on the x86 platform Aug, 2004 - Andreas Jönsson This article shows how MSVC++ and MinGW g++ implements the different calling conventions. Especially interesting for those who write assembly routines that interact with C++. x64 Software Conventions Explains calling conventions on AMD 64bit processors as implemented by MSVC. x64 ABI vs. x86 ABI (aka Calling Conventions for AMD64 & EM64T)
Thunking in Win32: Simplifying callbacks to non-static member functions Dec, 2006 - Einar Otto Stangvik Shows how to build a thunk that allows you to pass a class member pointer to a callback that expects a global function pointer. The code is highly platform dependent though. Mac OS X ABI Function Call Guide Nov, 2006 - Apple This is the official guide to the Mac OS X ABI. It covers both 32bit and 64bit PowerPC, as well as 32bit IA-32 (x86). DynCall library Daniel Adler, Tassilo Philipp This library implements support for dynamically calling C/C++ functions and methods, by pushing arguments on a virtual stack and then invoking the function. It is similar to how AngelScript internally calls C/C++ functions and methods. System V Application Binary Interface, AMD64 Architecture Processor Supplement Sep, 2010 - Michael Matz, Jan Hubicka, Andreas Jaeger, Mark Mitchell This document gives detailed specification for the AMD64 ABI commonly used by the gnuc compiler on platforms like Linux and Mac OS X. Calling conventions for different C++ compilers and operating systems Jun, 2011 - Agner Fog This document explains how calling conventions is implement on different compilers and platforms. It also describes the algorithm used for the name mangling. The Component Object Model Mar, 2002 This article gives a good overview on COM and its specification. iOS ABI Function Call Guide This article describes the ABI used by Apple for iOS on all different CPUs that iOS is available for, including ARMv6, ARMv7, and ARM64. libffi A Portable Foreign Function Interface Library |