SaaSHub helps you find the best software and product alternatives Learn more โ
Top 23 C x86-64 Projects
-
Unicorn Engine
Unicorn CPU emulator framework (ARM, AArch64, M68K, Mips, Sparc, PowerPC, RiscV, S390x, TriCore, X86)
If you find Capstone interesting, check out the Unicorn Engine.
https://github.com/unicorn-engine/unicorn
Also, if anyone is interested in an example of using capstone for basic disassembly and analysis, here is a link to my capstool project.
https://github.com/alexander-hanel/capstool
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
-
capstone
Capstone disassembly/disassembler framework for ARM, ARM64 (ARMv8), Alpha, BPF, Ethereum VM, HPPA, LoongArch, M68K, M680X, Mips, MOS65XX, PPC, RISC-V(rv32G/rv64G), SH, Sparc, SystemZ, TMS320C64X, TriCore, Webassembly, XCore and X86.
It just updated to the nearly latest LLVM, so that argument is void: https://github.com/capstone-engine/capstone/blob/next/docs/c...
-
You can visualize how instructions are encoded with zydisinfo. Pass in your architecture and the hex bytes of the instructions and itโll show all relevant info
https://github.com/zyantific/zydis/tree/master
https://www.hexacorn.com/blog/2023/09/27/zydisinfo-the-disas...
-
mir
A lightweight JIT compiler based on MIR (Medium Internal Representation) and C11 JIT compiler and interpreter based on MIR
-
Project mention: Limine: Legacy-free portable bootloader, supports both Linux and hobby kernels | news.ycombinator.com | 2024-07-15
-
-
-
-
-
cavOS
๐พ Amd64 operating system in C. Trying to make a full OS, with a simple and readable codebase!
-
Project mention: Show HN: Compiling C in the browser using WebAssembly | news.ycombinator.com | 2024-10-07
Check out https://github.com/tyfkda/xcc, I've only used the native backend, but it's small and fast.
-
-
SHA-Intrinsics
SHA-1, SHA-256 and SHA-512 compression functions using Intel, ARMv8 and Power8 SHA intrinsics
-
Project mention: Weird things I learned while writing an x86 emulator | news.ycombinator.com | 2024-07-10
Thanks for the pointer to QEMU's decoder! I actually never looked at it before.
So you coded all the tables manually in C -- interesting, that's quite some effort. I opted to autogenerate the tables (and keep them as data only => smaller memory footprint) [1,2]. That's doable, because x86 encodings are mostly fairly consistent. I can also generate an encoder from it (ok, you don't need that). Re 'custom size "xh"': AVX-512 also has fourth and eighth. Also interesting that you have a separate row for "66+F2". I special case these two (CRC32, MOVBE) instructions with a flag.
I think the prefix decoding is not quite right for x86-64: 26/2e/36/3e are ignored in 64-bit mode, except for 2e/3e as branch-not-taken/taken hints and 3e as notrack. (See SDM Vol. 1 3.3.7.1 "Other segment override prefixes (CS, DS, ES, and SS) are ignored.") Also, REX prefixes that don't immediately preceed the opcode (or VEX/EVEX prefix) are ignored. Anyhow, I need to take a closer look at the decoder with more time. :-)
> For EVEX my plan is to keep the raw bits until after the opcode has been read
I came to the same conclusion that this is necessary with APX. The map+prefix+opcode combination identifies how the other fields are to be interpreted. For AVX-512, storing the last byte was sufficient, but with APX, vvvv got a second meaning.
> Nevertheless there are several cases in which the manual is wrong or doesn't say the whole story.
Yes... especially for corner cases, getting real hardware is the only reliable way to find out, how the CPU behaves.
[1]: https://github.com/aengelke/fadec/blob/master/instrs.txt
-
-
Project mention: ExectOS โ brand new operating system which derives from NT architecture | news.ycombinator.com | 2024-06-19
-
-
-
-
-
-
-
C x86-64 discussion
C x86-64 related posts
-
Mlibc: A C Standard Library
-
Limine: Legacy-free portable bootloader, supports both Linux and hobby kernels
-
It's far from clear how grub package updates work on Ubuntu
-
Exploring x86-64 Instruction Encoding
-
Limine a dog with fleas just died
-
Problem loading GDT in a x86-64 kernel
-
Limine is an advanced, portable, multiprotocol bootloader
-
A note from our sponsor - SaaSHub
www.saashub.com | 14 Oct 2024
Index
What are some of the best open-source x86-64 projects in C? This list will help you:
Project | Stars | |
---|---|---|
1 | Unicorn Engine | 7,534 |
2 | capstone | 7,525 |
3 | zydis | 3,402 |
4 | mir | 2,294 |
5 | limine | 1,813 |
6 | mlibc | 839 |
7 | opensmalltalk-vm | 557 |
8 | MazuCC | 515 |
9 | Tina | 264 |
10 | cavOS | 247 |
11 | xcc | 239 |
12 | minias | 201 |
13 | SHA-Intrinsics | 199 |
14 | fadec | 162 |
15 | neatcc | 154 |
16 | exectos | 112 |
17 | JWasm | 107 |
18 | MoonOS | 101 |
19 | CSpydr | 84 |
20 | PBD | 62 |
21 | kcs | 49 |
22 | kush-os | 14 |
23 | turnstone | 4 |