Intrinsic functions for special instructions are provided by most compilers and C-function wrappers for arbitrary system calls are available on every Unix platform.
The MSVC form of an embedded domain-specific language provides ease of writing, but it requires the compiler itself to know about opcode names and their clobbering properties, demanding extra attention in maintenance and porting.
[9][10] The D programming language uses a DSL similar to the MSVC extension officially for x86_64,[11] but the LLVM-based LDC also provides the GCC-style syntax on every architecture.
[5] The Rust language has since migrated to a syntax abstracting away inline assembly options further than the LLVM (GCC-style) version.
This is rarely a feature in a higher-level language, and so wrapper functions for system calls are written using inline assembler.
[4] This example of inline assembly from the D programming language shows code that computes the tangent of x using the x86's FPU (x87) instructions.