Linux’s system-call #ABI differs from the standard #amd64 function-call ABI. “This means system-call wrapper functions can just set eax and run syscall instead of needing to do something like...” #asm
outline of #amd64 #ABI for #asm on Linux
on 02024-08-01#ARM’s #ARM64EC (or Microsoft’s?) is a new #ABI for #ARM64 designed to facilitate calling back and forth between native code and emulated code, so in particular emulated binaries can dynamically link to native-code system libraries (DLLs); each entry point into an aarch64 library has an amd64 “fast forward sequence” which the emulated code calls. The OS kernel, however, maintains a bitmap to keep track of which pages contain native code and which contain emulated code.
on 02024-03-24lengthy exegesis of #ARM #ABI in #asm as our hero fights with their compiler
on 02023-07-05EABI, the new Linux #ABI for #ARM, is actually the ARM APCS.
on 02023-07-05The 2011 #C++ standard required #GCC to break #ABI compatibility in GCC 5.1, although they did it in a backward-compatible way. But it’s not for some little-used feature; it’s for std::string.
DTrace hacker unhappy that the #amd64 #ABI doesn’t have frame pointers, resulting in inefficiency in unwinding the stack.
on 02016-07-24How stack unwinding works on the #amd64 #ABI, with .eh_frame and .debug_frame and whatnot.
on 02016-07-24128 bytes below %rsp on #amd64 is a “red zone” of scratch space, making the standard amd64 #abi unusable for code that has to handle interrupts.
on 02015-11-11