It's difficult enough to get efficient code generated from C, let alone C#. Writing our own JIT may be prudent.
- It is possible to store and execute arbitrary machine instructions in C#. (Marshal.AllocHGlobal would need to be used for malloc on mono instead of the WinAPI).
- asmjit (x86/x64) C++ lib
- Fasm.NET (32-bit onlt) for fasm by author of MemorySharp. From lambda.
- GNU Lighting is specifically for runtime assembly and abstracting slightly over machine code
Given the breadth of any instruction set, it's likely easier to provide a string to an assembler than to wrap an API.