HolyCC stands for HolyC Compiler. Written from scratch in C, it compiles HolyC source code directly into raw x86-64 machine opcodes and SSE2 instructions in executable memory buffers with zero external assemblers, zero linkers, and zero intermediate bloat.
| Architecture | x86-64 Linux / SysV ABI + Hardware SSE2 Scalar/Vector FP |
| Code Generation | Direct in-memory opcode emission (U0, U8*, I32, I64, F64, pointers, bitwise, NaN) |
| Source Repository | [GitHub Coming Soon] - cleaning source tree before public release |
This compiler is built in deep respect and tribute to Terry A. Davis (1969–2018), the lone creator of TempleOS and HolyC. Terry demonstrated that a single programmer with complete mastery of the machine can build an entire 64-bit operating system and native compiler without modern abstraction layers.
HolyCC honors his engineering ethos: keep the toolchain small, emit machine instructions directly, and respect the hardware.
Beyond core systems programming, HolyCC is evolving into a bare-metal Data Science and Numerical Computing package. Mainstream data tools pay a heavy tax in interpreter overhead; HolyCC compiles numerical loops straight into native SSE2 opcodes.
As shown in TestFloatStats below, the compiler already emits hardware IEEE-754 NaN checks (UCOMISD + SETP), fast in-place imputation, SQRTSD, and contiguous F64* / I64* arena allocations, laying the foundation for high-speed statistical modeling and survival analysis in HolyC.
/*✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞*/
/* full_showcase.HC */
/* by: msb */
/*✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞*/
//u0 void function, pointer aliasing and bit shifts
U0 TestPointersAndBits(I32 *out_ptr, I32 seed) {
I32 local_val = seed;
I32 *alias = &local_val;
*alias = (*alias << 3) + 4;
*alias = *alias >> 1;
I32 flag = 0;
if (!flag) {
I32 neg = -(*alias);
*out_ptr = -neg;
}
}
//heap buffers, 64-bit integer math and modulo loop
I32 TestBytesAndI64() {
U8 *str = MAlloc(8);
str[0] = 'H';
str[1] = 'o';
str[2] = 'l';
str[3] = 'y';
str[4] = 'C';
str[5] = '\0';
I64 *big_arr = CAlloc(2 * 8);
big_arr[0] = 5000000000;
big_arr[1] = big_arr[0] * 3 + 7;
Print(" [u8* & i64*] str = %s, first char = %d, big_arr[1] = %lld\n",
str, *str, big_arr[1]);
I32 odd_sum = 0;
I32 k = 10;
while (k > 0) {
if (k % 2 != 0) {
odd_sum = odd_sum + k;
}
k--;
}
Free(str);
Free(big_arr);
return odd_sum;
}
//f64 sse2 array, nan replacement and sqrt
I32 TestFloatStats(I32 count) {
F64 *vals = CAlloc(count * 8);
vals[0] = 10.5;
vals[1] = NaN;
vals[2] = 20.5;
vals[3] = 30.0;
F64 sum = 0.0;
I32 valid = 0;
for (I32 i = 0; i < count; i++) {
if (IsNaN(vals[i])) {
vals[i] = 19.0;
}
sum = sum + vals[i];
valid++;
}
F64 mean = sum / ToF64(valid);
F64 root = Sqrt(mean * 5.0);
if (mean >= 20.0) {
Print(" [f64 sse2] mean = %.2f, sqrt(mean*5) = %.2f\n", mean, root);
} else {
Print(" [f64 sse2] mean below threshold: %.2f\n", mean);
}
Free(vals);
return ToI32(mean + root);
}
//main entry point combining all results
I32 Main() {
"--- [running full_showcase.HC: testing all compiler features] ---\n";
I32 box = 0;
TestPointersAndBits(&box, 10);
Print(" [ptr & bits] box updated via &box and *ptr to: %d\n", box);
I32 odds = TestBytesAndI64();
Print(" [while & %%] sum of odds (1..9) = %d\n", odds);
I32 f_res = TestFloatStats(4);
Print(" [float->int] ToI32(mean + root) = %d\n", f_res);
return box + odds + f_res;
}
✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞
- ✞✞✞ HolyC Compiler ✞✞✞ -
✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞✞
/* ✞ disassembly of TestPointersAndBits (183 bytes @ 0x7fa1c106600a) ✞ */
0x7fa1c106600a (+0000): 55 PUSH RBP
0x7fa1c106600b (+0001): 48 89 E5 MOV RBP, RSP
0x7fa1c106600e (+0004): 48 81 EC 80 00 00 00 SUB RSP, 128
0x7fa1c1066015 (+0011): 48 89 BD F8 FF FF FF MOV [RBP-8], RDI
0x7fa1c106601c (+0018): 89 B5 F0 FF FF FF MOV [RBP-16], ESI
0x7fa1c1066022 (+0024): 8B 85 F0 FF FF FF MOV EAX, [RBP-16]
0x7fa1c1066028 (+0030): 89 85 E8 FF FF FF MOV [RBP-24], EAX
0x7fa1c106602e (+0036): 48 8D 85 E8 FF FF FF LEA RAX, [RBP-24]
0x7fa1c1066035 (+0043): 48 89 85 E0 FF FF FF MOV [RBP-32], RAX
0x7fa1c106603c (+0050): 48 8B 85 E0 FF FF FF MOV RAX, [RBP-32]
0x7fa1c1066043 (+0057): 48 89 C1 MOV RCX, RAX
0x7fa1c1066046 (+0060): 8B 01 MOV EAX, [RCX]
0x7fa1c1066048 (+0062): C1 E0 03 SHL EAX, 3
0x7fa1c106604b (+0065): 50 PUSH RAX
0x7fa1c106604c (+0066): B8 04 00 00 00 MOV EAX, 4
0x7fa1c1066051 (+0071): 89 C1 MOV ECX, EAX
0x7fa1c1066053 (+0073): 58 POP RAX
0x7fa1c1066054 (+0074): 01 C8 ADD EAX, ECX
0x7fa1c1066056 (+0076): 48 8B 8D E0 FF FF FF MOV RCX, [RBP-32]
0x7fa1c106605d (+0083): 89 01 MOV [RCX], EAX
0x7fa1c106605f (+0085): 48 8B 85 E0 FF FF FF MOV RAX, [RBP-32]
0x7fa1c1066066 (+0092): 48 89 C1 MOV RCX, RAX
0x7fa1c1066069 (+0095): 8B 01 MOV EAX, [RCX]
0x7fa1c106606b (+0097): C1 E8 01 SHR EAX, 1
0x7fa1c106606e (+0100): 48 8B 8D E0 FF FF FF MOV RCX, [RBP-32]
0x7fa1c1066075 (+0107): 89 01 MOV [RCX], EAX
0x7fa1c1066077 (+0109): B8 00 00 00 00 MOV EAX, 0
0x7fa1c106607c (+0114): 89 85 D8 FF FF FF MOV [RBP-40], EAX
0x7fa1c1066082 (+0120): 8B 85 D8 FF FF FF MOV EAX, [RBP-40]
0x7fa1c1066088 (+0126): 85 C0 TEST EAX, EAX
0x7fa1c106608a (+0128): 0F 94 C0 SETE AL
0x7fa1c106608d (+0131): 0F B6 C0 MOVZX EAX, AL
0x7fa1c1066090 (+0134): 85 C0 TEST EAX, EAX
0x7fa1c1066092 (+0136): 0F 84 25 00 00 00 JZ 0x7fa1c10660bd (offset +37)
0x7fa1c1066098 (+0142): 48 8B 85 E0 FF FF FF MOV RAX, [RBP-32]
0x7fa1c106609f (+0149): 48 89 C1 MOV RCX, RAX
0x7fa1c10660a2 (+0152): 8B 01 MOV EAX, [RCX]
0x7fa1c10660a4 (+0154): F7 D8 NEG EAX
0x7fa1c10660a6 (+0156): 89 85 D0 FF FF FF MOV [RBP-48], EAX
0x7fa1c10660ac (+0162): 8B 85 D0 FF FF FF MOV EAX, [RBP-48]
0x7fa1c10660b2 (+0168): F7 D8 NEG EAX
0x7fa1c10660b4 (+0170): 48 8B 8D F8 FF FF FF MOV RCX, [RBP-8]
0x7fa1c10660bb (+0177): 89 01 MOV [RCX], EAX
0x7fa1c10660bd (+0179): 31 DB 0x31
0x7fa1c10660be (+0180): C0 DB 0xC0
0x7fa1c10660bf (+0181): C9 LEAVE
0x7fa1c10660c0 (+0182): C3 RET
/* ✞ disassembly of TestBytesAndI64 (604 bytes @ 0x7fa1c10660c1) ✞ */
0x7fa1c10660c1 (+0000): 55 PUSH RBP
0x7fa1c10660c2 (+0001): 48 89 E5 MOV RBP, RSP
0x7fa1c10660c5 (+0004): 48 81 EC 80 00 00 00 SUB RSP, 128
0x7fa1c10660cc (+0011): B8 08 00 00 00 MOV EAX, 8
0x7fa1c10660d1 (+0016): 48 98 CDQE
0x7fa1c10660d3 (+0018): 48 89 C7 MOV RDI, RAX
0x7fa1c10660d6 (+0021): 48 B8 60 C8 0C C1 A1 7F 00 00 MOV RAX, 0x7FA1C10CC860
0x7fa1c10660e0 (+0031): FF D0 CALL RAX
0x7fa1c10660e2 (+0033): 48 89 85 F8 FF FF FF MOV [RBP-8], RAX
0x7fa1c10660e9 (+0040): B8 00 00 00 00 MOV EAX, 0
0x7fa1c10660ee (+0045): 48 98 CDQE
0x7fa1c10660f0 (+0047): 50 PUSH RAX
0x7fa1c10660f1 (+0048): B8 48 00 00 00 MOV EAX, 72
0x7fa1c10660f6 (+0053): 5A POP RDX
0x7fa1c10660f7 (+0054): 48 8B 8D F8 FF FF FF MOV RCX, [RBP-8]
0x7fa1c10660fe (+0061): 88 04 11 MOV BYTE [RCX+RDX*1], AL
0x7fa1c1066101 (+0064): B8 01 00 00 00 MOV EAX, 1
0x7fa1c1066106 (+0069): 48 98 CDQE
0x7fa1c1066108 (+0071): 50 PUSH RAX
0x7fa1c1066109 (+0072): B8 6F 00 00 00 MOV EAX, 111
0x7fa1c106610e (+0077): 5A POP RDX
0x7fa1c106610f (+0078): 48 8B 8D F8 FF FF FF MOV RCX, [RBP-8]
0x7fa1c1066116 (+0085): 88 04 11 MOV BYTE [RCX+RDX*1], AL
0x7fa1c1066119 (+0088): B8 02 00 00 00 MOV EAX, 2
0x7fa1c106611e (+0093): 48 98 CDQE
0x7fa1c1066120 (+0095): 50 PUSH RAX
0x7fa1c1066121 (+0096): B8 6C 00 00 00 MOV EAX, 108
0x7fa1c1066126 (+0101): 5A POP RDX
0x7fa1c1066127 (+0102): 48 8B 8D F8 FF FF FF MOV RCX, [RBP-8]
0x7fa1c106612e (+0109): 88 04 11 MOV BYTE [RCX+RDX*1], AL
0x7fa1c1066131 (+0112): B8 03 00 00 00 MOV EAX, 3
0x7fa1c1066136 (+0117): 48 98 CDQE
0x7fa1c1066138 (+0119): 50 PUSH RAX
0x7fa1c1066139 (+0120): B8 79 00 00 00 MOV EAX, 121
0x7fa1c106613e (+0125): 5A POP RDX
0x7fa1c106613f (+0126): 48 8B 8D F8 FF FF FF MOV RCX, [RBP-8]
0x7fa1c1066146 (+0133): 88 04 11 MOV BYTE [RCX+RDX*1], AL
0x7fa1c1066149 (+0136): B8 04 00 00 00 MOV EAX, 4
0x7fa1c106614e (+0141): 48 98 CDQE
0x7fa1c1066150 (+0143): 50 PUSH RAX
0x7fa1c1066151 (+0144): B8 43 00 00 00 MOV EAX, 67
0x7fa1c1066156 (+0149): 5A POP RDX
0x7fa1c1066157 (+0150): 48 8B 8D F8 FF FF FF MOV RCX, [RBP-8]
0x7fa1c106615e (+0157): 88 04 11 MOV BYTE [RCX+RDX*1], AL
0x7fa1c1066161 (+0160): B8 05 00 00 00 MOV EAX, 5
0x7fa1c1066166 (+0165): 48 98 CDQE
0x7fa1c1066168 (+0167): 50 PUSH RAX
0x7fa1c1066169 (+0168): B8 00 00 00 00 MOV EAX, 0
0x7fa1c106616e (+0173): 5A POP RDX
0x7fa1c106616f (+0174): 48 8B 8D F8 FF FF FF MOV RCX, [RBP-8]
0x7fa1c1066176 (+0181): 88 04 11 MOV BYTE [RCX+RDX*1], AL
0x7fa1c1066179 (+0184): B8 02 00 00 00 MOV EAX, 2
0x7fa1c106617e (+0189): 50 PUSH RAX
0x7fa1c106617f (+0190): B8 08 00 00 00 MOV EAX, 8
0x7fa1c1066184 (+0195): 89 C1 MOV ECX, EAX
0x7fa1c1066186 (+0197): 58 POP RAX
0x7fa1c1066187 (+0198): 0F AF C1 IMUL EAX, ECX
0x7fa1c106618a (+0201): 48 98 CDQE
0x7fa1c106618c (+0203): 48 89 C6 MOV RSI, RAX
0x7fa1c106618f (+0206): BF 01 00 00 00 MOV EDI, 1
0x7fa1c1066194 (+0211): 48 B8 C0 73 09 C1 A1 7F 00 00 MOV RAX, 0x7FA1C10973C0
0x7fa1c106619e (+0221): FF D0 CALL RAX
0x7fa1c10661a0 (+0223): 48 89 85 F0 FF FF FF MOV [RBP-16], RAX
0x7fa1c10661a7 (+0230): B8 00 00 00 00 MOV EAX, 0
0x7fa1c10661ac (+0235): 48 98 CDQE
0x7fa1c10661ae (+0237): 50 PUSH RAX
0x7fa1c10661af (+0238): 48 B8 00 F2 05 2A 01 00 00 00 MOV RAX, 0x12A05F200
0x7fa1c10661b9 (+0248): 5A POP RDX
0x7fa1c10661ba (+0249): 48 8B 8D F0 FF FF FF MOV RCX, [RBP-16]
0x7fa1c10661c1 (+0256): 48 89 04 D1 MOV [RCX+RDX*8], RAX
0x7fa1c10661c5 (+0260): B8 01 00 00 00 MOV EAX, 1
0x7fa1c10661ca (+0265): 48 98 CDQE
0x7fa1c10661cc (+0267): 50 PUSH RAX
0x7fa1c10661cd (+0268): 48 8B 85 F0 FF FF FF MOV RAX, [RBP-16]
0x7fa1c10661d4 (+0275): 50 PUSH RAX
0x7fa1c10661d5 (+0276): B8 00 00 00 00 MOV EAX, 0
0x7fa1c10661da (+0281): 59 POP RCX
0x7fa1c10661db (+0282): 48 98 CDQE
0x7fa1c10661dd (+0284): 48 8B 04 C1 MOV RAX, [RCX+RAX*8]
0x7fa1c10661e1 (+0288): 50 PUSH RAX
0x7fa1c10661e2 (+0289): B8 03 00 00 00 MOV EAX, 3
0x7fa1c10661e7 (+0294): 48 89 C1 MOV RCX, RAX
0x7fa1c10661ea (+0297): 58 POP RAX
0x7fa1c10661eb (+0298): 48 0F AF C1 IMUL RAX, RCX
0x7fa1c10661ef (+0302): 50 PUSH RAX
0x7fa1c10661f0 (+0303): B8 07 00 00 00 MOV EAX, 7
0x7fa1c10661f5 (+0308): 48 98 CDQE
0x7fa1c10661f7 (+0310): 48 89 C1 MOV RCX, RAX
0x7fa1c10661fa (+0313): 58 POP RAX
0x7fa1c10661fb (+0314): 48 01 C8 ADD RAX, RCX
0x7fa1c10661fe (+0317): 5A POP RDX
0x7fa1c10661ff (+0318): 48 8B 8D F0 FF FF FF MOV RCX, [RBP-16]
0x7fa1c1066206 (+0325): 48 89 04 D1 MOV [RCX+RDX*8], RAX
0x7fa1c106620a (+0329): 48 8B 85 F8 FF FF FF MOV RAX, [RBP-8]
0x7fa1c1066211 (+0336): 50 PUSH RAX
0x7fa1c1066212 (+0337): 48 8B 85 F8 FF FF FF MOV RAX, [RBP-8]
0x7fa1c1066219 (+0344): 48 89 C1 MOV RCX, RAX
0x7fa1c106621c (+0347): 0F B6 01 MOVZX EAX, BYTE [RCX]
0x7fa1c106621f (+0350): 50 PUSH RAX
0x7fa1c1066220 (+0351): 48 8B 85 F0 FF FF FF MOV RAX, [RBP-16]
0x7fa1c1066227 (+0358): 50 PUSH RAX
0x7fa1c1066228 (+0359): B8 01 00 00 00 MOV EAX, 1
0x7fa1c106622d (+0364): 59 POP RCX
0x7fa1c106622e (+0365): 48 98 CDQE
0x7fa1c1066230 (+0367): 48 8B 04 C1 MOV RAX, [RCX+RAX*8]
0x7fa1c1066234 (+0371): 50 PUSH RAX
0x7fa1c1066235 (+0372): 59 POP RCX
0x7fa1c1066236 (+0373): 5A POP RDX
0x7fa1c1066237 (+0374): 5E POP RSI
0x7fa1c1066238 (+0375): 48 BF 7C D3 FE FF FD 7F 00 00 MOV RDI, 0x7FFDFFFED37C
0x7fa1c1066242 (+0385): 48 BB 70 EF 0E C1 A1 7F 00 00 MOV RBX, 0x7FA1C10EEF70
0x7fa1c106624c (+0395): B8 00 00 00 00 MOV EAX, 0
0x7fa1c1066251 (+0400): FF D3 CALL RBX
0x7fa1c1066253 (+0402): B8 00 00 00 00 MOV EAX, 0
0x7fa1c1066258 (+0407): 89 85 E8 FF FF FF MOV [RBP-24], EAX
0x7fa1c106625e (+0413): B8 0A 00 00 00 MOV EAX, 10
0x7fa1c1066263 (+0418): 89 85 E0 FF FF FF MOV [RBP-32], EAX
0x7fa1c1066269 (+0424): 8B 85 E0 FF FF FF MOV EAX, [RBP-32]
0x7fa1c106626f (+0430): 50 PUSH RAX
0x7fa1c1066270 (+0431): B8 00 00 00 00 MOV EAX, 0
0x7fa1c1066275 (+0436): 89 C1 MOV ECX, EAX
0x7fa1c1066277 (+0438): 58 POP RAX
0x7fa1c1066278 (+0439): 39 C8 CMP EAX, ECX
0x7fa1c106627a (+0441): 0F 9F C0 SETG AL
0x7fa1c106627d (+0444): 0F B6 C0 MOVZX EAX, AL
0x7fa1c1066280 (+0447): 85 C0 TEST EAX, EAX
0x7fa1c1066282 (+0449): 0F 84 5D 00 00 00 JZ 0x7fa1c10662e5 (offset +93)
0x7fa1c1066288 (+0455): 8B 85 E0 FF FF FF MOV EAX, [RBP-32]
0x7fa1c106628e (+0461): 50 PUSH RAX
0x7fa1c106628f (+0462): B8 02 00 00 00 MOV EAX, 2
0x7fa1c1066294 (+0467): 89 C1 MOV ECX, EAX
0x7fa1c1066296 (+0469): 58 POP RAX
0x7fa1c1066297 (+0470): 99 CDQ
0x7fa1c1066298 (+0471): F7 F9 IDIV ECX
0x7fa1c106629a (+0473): 89 D0 MOV EAX, EDX
0x7fa1c106629c (+0475): 50 PUSH RAX
0x7fa1c106629d (+0476): B8 00 00 00 00 MOV EAX, 0
0x7fa1c10662a2 (+0481): 89 C1 MOV ECX, EAX
0x7fa1c10662a4 (+0483): 58 POP RAX
0x7fa1c10662a5 (+0484): 39 C8 CMP EAX, ECX
0x7fa1c10662a7 (+0486): 0F 95 C0 SETNE AL
0x7fa1c10662aa (+0489): 0F B6 C0 MOVZX EAX, AL
0x7fa1c10662ad (+0492): 85 C0 TEST EAX, EAX
0x7fa1c10662af (+0494): 0F 84 18 00 00 00 JZ 0x7fa1c10662cd (offset +24)
0x7fa1c10662b5 (+0500): 8B 85 E8 FF FF FF MOV EAX, [RBP-24]
0x7fa1c10662bb (+0506): 50 PUSH RAX
0x7fa1c10662bc (+0507): 8B 85 E0 FF FF FF MOV EAX, [RBP-32]
0x7fa1c10662c2 (+0513): 89 C1 MOV ECX, EAX
0x7fa1c10662c4 (+0515): 58 POP RAX
0x7fa1c10662c5 (+0516): 01 C8 ADD EAX, ECX
0x7fa1c10662c7 (+0518): 89 85 E8 FF FF FF MOV [RBP-24], EAX
0x7fa1c10662cd (+0524): 8B 85 E0 FF FF FF MOV EAX, [RBP-32]
0x7fa1c10662d3 (+0530): B9 01 00 00 00 MOV ECX, 1
0x7fa1c10662d8 (+0535): 29 C8 SUB EAX, ECX
0x7fa1c10662da (+0537): 89 85 E0 FF FF FF MOV [RBP-32], EAX
0x7fa1c10662e0 (+0543): E9 84 FF FF FF JMP 0x7fa1c1066269 (offset -124)
0x7fa1c10662e5 (+0548): 48 8B 85 F8 FF FF FF MOV RAX, [RBP-8]
0x7fa1c10662ec (+0555): 48 89 C7 MOV RDI, RAX
0x7fa1c10662ef (+0558): 48 B8 40 C8 0C C1 A1 7F 00 00 MOV RAX, 0x7FA1C10CC840
0x7fa1c10662f9 (+0568): FF D0 CALL RAX
0x7fa1c10662fb (+0570): 48 8B 85 F0 FF FF FF MOV RAX, [RBP-16]
0x7fa1c1066302 (+0577): 48 89 C7 MOV RDI, RAX
0x7fa1c1066305 (+0580): 48 B8 40 C8 0C C1 A1 7F 00 00 MOV RAX, 0x7FA1C10CC840
0x7fa1c106630f (+0590): FF D0 CALL RAX
0x7fa1c1066311 (+0592): 8B 85 E8 FF FF FF MOV EAX, [RBP-24]
0x7fa1c1066317 (+0598): C9 LEAVE
0x7fa1c1066318 (+0599): C3 RET
0x7fa1c1066319 (+0600): 31 DB 0x31
0x7fa1c106631a (+0601): C0 DB 0xC0
0x7fa1c106631b (+0602): C9 LEAVE
0x7fa1c106631c (+0603): C3 RET
/* ✞ disassembly of TestFloatStats (856 bytes @ 0x7fa1c106631d) ✞ */
0x7fa1c106631d (+0000): 55 PUSH RBP
0x7fa1c106631e (+0001): 48 89 E5 MOV RBP, RSP
0x7fa1c1066321 (+0004): 48 81 EC 80 00 00 00 SUB RSP, 128
0x7fa1c1066328 (+0011): 89 BD F8 FF FF FF MOV [RBP-8], EDI
0x7fa1c106632e (+0017): 8B 85 F8 FF FF FF MOV EAX, [RBP-8]
0x7fa1c1066334 (+0023): 50 PUSH RAX
0x7fa1c1066335 (+0024): B8 08 00 00 00 MOV EAX, 8
0x7fa1c106633a (+0029): 89 C1 MOV ECX, EAX
0x7fa1c106633c (+0031): 58 POP RAX
0x7fa1c106633d (+0032): 0F AF C1 IMUL EAX, ECX
0x7fa1c1066340 (+0035): 48 98 CDQE
0x7fa1c1066342 (+0037): 48 89 C6 MOV RSI, RAX
0x7fa1c1066345 (+0040): BF 01 00 00 00 MOV EDI, 1
0x7fa1c106634a (+0045): 48 B8 C0 73 09 C1 A1 7F 00 00 MOV RAX, 0x7FA1C10973C0
0x7fa1c1066354 (+0055): FF D0 CALL RAX
0x7fa1c1066356 (+0057): 48 89 85 F0 FF FF FF MOV [RBP-16], RAX
0x7fa1c106635d (+0064): B8 00 00 00 00 MOV EAX, 0
0x7fa1c1066362 (+0069): 48 98 CDQE
0x7fa1c1066364 (+0071): 50 PUSH RAX
0x7fa1c1066365 (+0072): 48 B8 00 00 00 00 00 00 25 40 MOV RAX, 0x4025000000000000
0x7fa1c106636f (+0082): 66 48 0F 6E C0 MOVQ XMM0, RAX
0x7fa1c1066374 (+0087): 5A POP RDX
0x7fa1c1066375 (+0088): 48 8B 8D F0 FF FF FF MOV RCX, [RBP-16]
0x7fa1c106637c (+0095): F2 0F 11 04 D1 MOVSD [RCX+RDX*8], XMM0
0x7fa1c1066381 (+0100): B8 01 00 00 00 MOV EAX, 1
0x7fa1c1066386 (+0105): 48 98 CDQE
0x7fa1c1066388 (+0107): 50 PUSH RAX
0x7fa1c1066389 (+0108): 48 B8 00 00 00 00 00 00 F8 7F MOV RAX, 0x7FF8000000000000
0x7fa1c1066393 (+0118): 66 48 0F 6E C0 MOVQ XMM0, RAX
0x7fa1c1066398 (+0123): 5A POP RDX
0x7fa1c1066399 (+0124): 48 8B 8D F0 FF FF FF MOV RCX, [RBP-16]
0x7fa1c10663a0 (+0131): F2 0F 11 04 D1 MOVSD [RCX+RDX*8], XMM0
0x7fa1c10663a5 (+0136): B8 02 00 00 00 MOV EAX, 2
0x7fa1c10663aa (+0141): 48 98 CDQE
0x7fa1c10663ac (+0143): 50 PUSH RAX
0x7fa1c10663ad (+0144): 48 B8 00 00 00 00 00 80 34 40 MOV RAX, 0x4034800000000000
0x7fa1c10663b7 (+0154): 66 48 0F 6E C0 MOVQ XMM0, RAX
0x7fa1c10663bc (+0159): 5A POP RDX
0x7fa1c10663bd (+0160): 48 8B 8D F0 FF FF FF MOV RCX, [RBP-16]
0x7fa1c10663c4 (+0167): F2 0F 11 04 D1 MOVSD [RCX+RDX*8], XMM0
0x7fa1c10663c9 (+0172): B8 03 00 00 00 MOV EAX, 3
0x7fa1c10663ce (+0177): 48 98 CDQE
0x7fa1c10663d0 (+0179): 50 PUSH RAX
0x7fa1c10663d1 (+0180): 48 B8 00 00 00 00 00 00 3E 40 MOV RAX, 0x403E000000000000
0x7fa1c10663db (+0190): 66 48 0F 6E C0 MOVQ XMM0, RAX
0x7fa1c10663e0 (+0195): 5A POP RDX
0x7fa1c10663e1 (+0196): 48 8B 8D F0 FF FF FF MOV RCX, [RBP-16]
0x7fa1c10663e8 (+0203): F2 0F 11 04 D1 MOVSD [RCX+RDX*8], XMM0
0x7fa1c10663ed (+0208): 48 B8 00 00 00 00 00 00 00 00 MOV RAX, 0x0
0x7fa1c10663f7 (+0218): 66 48 0F 6E C0 MOVQ XMM0, RAX
0x7fa1c10663fc (+0223): F2 0F 11 85 E8 FF FF FF MOVSD [RBP-24], XMM0
0x7fa1c1066404 (+0231): B8 00 00 00 00 MOV EAX, 0
0x7fa1c1066409 (+0236): 89 85 E0 FF FF FF MOV [RBP-32], EAX
0x7fa1c106640f (+0242): B8 00 00 00 00 MOV EAX, 0
0x7fa1c1066414 (+0247): 89 85 D8 FF FF FF MOV [RBP-40], EAX
0x7fa1c106641a (+0253): 8B 85 D8 FF FF FF MOV EAX, [RBP-40]
0x7fa1c1066420 (+0259): 50 PUSH RAX
0x7fa1c1066421 (+0260): 8B 85 F8 FF FF FF MOV EAX, [RBP-8]
0x7fa1c1066427 (+0266): 89 C1 MOV ECX, EAX
0x7fa1c1066429 (+0268): 58 POP RAX
0x7fa1c106642a (+0269): 39 C8 CMP EAX, ECX
0x7fa1c106642c (+0271): 0F 9C C0 SETL AL
0x7fa1c106642f (+0274): 0F B6 C0 MOVZX EAX, AL
0x7fa1c1066432 (+0277): 85 C0 TEST EAX, EAX
0x7fa1c1066434 (+0279): 0F 84 B8 00 00 00 JZ 0x7fa1c10664f2 (offset +184)
0x7fa1c106643a (+0285): 48 8B 85 F0 FF FF FF MOV RAX, [RBP-16]
0x7fa1c1066441 (+0292): 50 PUSH RAX
0x7fa1c1066442 (+0293): 8B 85 D8 FF FF FF MOV EAX, [RBP-40]
0x7fa1c1066448 (+0299): 59 POP RCX
0x7fa1c1066449 (+0300): 48 98 CDQE
0x7fa1c106644b (+0302): F2 0F 10 04 C1 MOVSD XMM0, [RCX+RAX*8]
0x7fa1c1066450 (+0307): 66 0F 2E C0 UCOMISD XMM0, XMM0
0x7fa1c1066454 (+0311): 0F 9A C0 SETP AL
0x7fa1c1066457 (+0314): 0F B6 C0 MOVZX EAX, AL
0x7fa1c106645a (+0317): 85 C0 TEST EAX, EAX
0x7fa1c106645c (+0319): 0F 84 25 00 00 00 JZ 0x7fa1c1066487 (offset +37)
0x7fa1c1066462 (+0325): 8B 85 D8 FF FF FF MOV EAX, [RBP-40]
0x7fa1c1066468 (+0331): 48 98 CDQE
0x7fa1c106646a (+0333): 50 PUSH RAX
0x7fa1c106646b (+0334): 48 B8 00 00 00 00 00 00 33 40 MOV RAX, 0x4033000000000000
0x7fa1c1066475 (+0344): 66 48 0F 6E C0 MOVQ XMM0, RAX
0x7fa1c106647a (+0349): 5A POP RDX
0x7fa1c106647b (+0350): 48 8B 8D F0 FF FF FF MOV RCX, [RBP-16]
0x7fa1c1066482 (+0357): F2 0F 11 04 D1 MOVSD [RCX+RDX*8], XMM0
0x7fa1c1066487 (+0362): F2 0F 10 85 E8 FF FF FF MOVSD XMM0, [RBP-24]
0x7fa1c106648f (+0370): 48 83 EC 08 SUB RSP, 8
0x7fa1c1066493 (+0374): F2 0F 11 04 24 MOVSD [RSP], XMM0
0x7fa1c1066498 (+0379): 48 8B 85 F0 FF FF FF MOV RAX, [RBP-16]
0x7fa1c106649f (+0386): 50 PUSH RAX
0x7fa1c10664a0 (+0387): 8B 85 D8 FF FF FF MOV EAX, [RBP-40]
0x7fa1c10664a6 (+0393): 59 POP RCX
0x7fa1c10664a7 (+0394): 48 98 CDQE
0x7fa1c10664a9 (+0396): F2 0F 10 04 C1 MOVSD XMM0, [RCX+RAX*8]
0x7fa1c10664ae (+0401): F2 0F 10 C8 MOVSD XMM1, XMM0
0x7fa1c10664b2 (+0405): F2 0F 10 04 24 MOVSD XMM0, [RSP]
0x7fa1c10664b7 (+0410): 48 83 C4 08 ADD RSP, 8
0x7fa1c10664bb (+0414): F2 0F 58 C1 ADDSD XMM0, XMM1
0x7fa1c10664bf (+0418): F2 0F 11 85 E8 FF FF FF MOVSD [RBP-24], XMM0
0x7fa1c10664c7 (+0426): 8B 85 E0 FF FF FF MOV EAX, [RBP-32]
0x7fa1c10664cd (+0432): B9 01 00 00 00 MOV ECX, 1
0x7fa1c10664d2 (+0437): 01 C8 ADD EAX, ECX
0x7fa1c10664d4 (+0439): 89 85 E0 FF FF FF MOV [RBP-32], EAX
0x7fa1c10664da (+0445): 8B 85 D8 FF FF FF MOV EAX, [RBP-40]
0x7fa1c10664e0 (+0451): B9 01 00 00 00 MOV ECX, 1
0x7fa1c10664e5 (+0456): 01 C8 ADD EAX, ECX
0x7fa1c10664e7 (+0458): 89 85 D8 FF FF FF MOV [RBP-40], EAX
0x7fa1c10664ed (+0464): E9 28 FF FF FF JMP 0x7fa1c106641a (offset -216)
0x7fa1c10664f2 (+0469): F2 0F 10 85 E8 FF FF FF MOVSD XMM0, [RBP-24]
0x7fa1c10664fa (+0477): 48 83 EC 08 SUB RSP, 8
0x7fa1c10664fe (+0481): F2 0F 11 04 24 MOVSD [RSP], XMM0
0x7fa1c1066503 (+0486): 8B 85 E0 FF FF FF MOV EAX, [RBP-32]
0x7fa1c1066509 (+0492): F2 0F 2A C0 CVTSI2SD XMM0, EAX
0x7fa1c106650d (+0496): F2 0F 10 C8 MOVSD XMM1, XMM0
0x7fa1c1066511 (+0500): F2 0F 10 04 24 MOVSD XMM0, [RSP]
0x7fa1c1066516 (+0505): 48 83 C4 08 ADD RSP, 8
0x7fa1c106651a (+0509): F2 0F 5E C1 DIVSD XMM0, XMM1
0x7fa1c106651e (+0513): F2 0F 11 85 D0 FF FF FF MOVSD [RBP-48], XMM0
0x7fa1c1066526 (+0521): F2 0F 10 85 D0 FF FF FF MOVSD XMM0, [RBP-48]
0x7fa1c106652e (+0529): 48 83 EC 08 SUB RSP, 8
0x7fa1c1066532 (+0533): F2 0F 11 04 24 MOVSD [RSP], XMM0
0x7fa1c1066537 (+0538): 48 B8 00 00 00 00 00 00 14 40 MOV RAX, 0x4014000000000000
0x7fa1c1066541 (+0548): 66 48 0F 6E C0 MOVQ XMM0, RAX
0x7fa1c1066546 (+0553): F2 0F 10 C8 MOVSD XMM1, XMM0
0x7fa1c106654a (+0557): F2 0F 10 04 24 MOVSD XMM0, [RSP]
0x7fa1c106654f (+0562): 48 83 C4 08 ADD RSP, 8
0x7fa1c1066553 (+0566): F2 0F 59 C1 MULSD XMM0, XMM1
0x7fa1c1066557 (+0570): F2 0F 51 C0 SQRTSD XMM0, XMM0
0x7fa1c106655b (+0574): F2 0F 11 85 C8 FF FF FF MOVSD [RBP-56], XMM0
0x7fa1c1066563 (+0582): F2 0F 10 85 D0 FF FF FF MOVSD XMM0, [RBP-48]
0x7fa1c106656b (+0590): 48 83 EC 08 SUB RSP, 8
0x7fa1c106656f (+0594): F2 0F 11 04 24 MOVSD [RSP], XMM0
0x7fa1c1066574 (+0599): 48 B8 00 00 00 00 00 00 34 40 MOV RAX, 0x4034000000000000
0x7fa1c106657e (+0609): 66 48 0F 6E C0 MOVQ XMM0, RAX
0x7fa1c1066583 (+0614): F2 0F 10 C8 MOVSD XMM1, XMM0
0x7fa1c1066587 (+0618): F2 0F 10 04 24 MOVSD XMM0, [RSP]
0x7fa1c106658c (+0623): 48 83 C4 08 ADD RSP, 8
0x7fa1c1066590 (+0627): 66 0F 2E C1 UCOMISD XMM0, XMM1
0x7fa1c1066594 (+0631): 0F 93 C0 SETAE AL
0x7fa1c1066597 (+0634): 0F B6 C0 MOVZX EAX, AL
0x7fa1c106659a (+0637): 85 C0 TEST EAX, EAX
0x7fa1c106659c (+0639): 0F 84 54 00 00 00 JZ 0x7fa1c10665f6 (offset +84)
0x7fa1c10665a2 (+0645): F2 0F 10 85 D0 FF FF FF MOVSD XMM0, [RBP-48]
0x7fa1c10665aa (+0653): 48 83 EC 08 SUB RSP, 8
0x7fa1c10665ae (+0657): F2 0F 11 04 24 MOVSD [RSP], XMM0
0x7fa1c10665b3 (+0662): F2 0F 10 85 C8 FF FF FF MOVSD XMM0, [RBP-56]
0x7fa1c10665bb (+0670): 48 83 EC 08 SUB RSP, 8
0x7fa1c10665bf (+0674): F2 0F 11 04 24 MOVSD [RSP], XMM0
0x7fa1c10665c4 (+0679): F2 0F 10 0C 24 MOVSD XMM1, [RSP]
0x7fa1c10665c9 (+0684): 48 83 C4 08 ADD RSP, 8
0x7fa1c10665cd (+0688): F2 0F 10 04 24 MOVSD XMM0, [RSP]
0x7fa1c10665d2 (+0693): 48 83 C4 08 ADD RSP, 8
0x7fa1c10665d6 (+0697): 48 BF B9 D3 FE FF FD 7F 00 00 MOV RDI, 0x7FFDFFFED3B9
0x7fa1c10665e0 (+0707): 48 BB 70 EF 0E C1 A1 7F 00 00 MOV RBX, 0x7FA1C10EEF70
0x7fa1c10665ea (+0717): B8 02 00 00 00 MOV EAX, 2
0x7fa1c10665ef (+0722): FF D3 CALL RBX
0x7fa1c10665f1 (+0724): E9 35 00 00 00 JMP 0x7fa1c106662b (offset +53)
0x7fa1c10665f6 (+0729): F2 0F 10 85 D0 FF FF FF MOVSD XMM0, [RBP-48]
0x7fa1c10665fe (+0737): 48 83 EC 08 SUB RSP, 8
0x7fa1c1066602 (+0741): F2 0F 11 04 24 MOVSD [RSP], XMM0
0x7fa1c1066607 (+0746): F2 0F 10 04 24 MOVSD XMM0, [RSP]
0x7fa1c106660c (+0751): 48 83 C4 08 ADD RSP, 8
0x7fa1c1066610 (+0755): 48 BF EA D3 FE FF FD 7F 00 00 MOV RDI, 0x7FFDFFFED3EA
0x7fa1c106661a (+0765): 48 BB 70 EF 0E C1 A1 7F 00 00 MOV RBX, 0x7FA1C10EEF70
0x7fa1c1066624 (+0775): B8 01 00 00 00 MOV EAX, 1
0x7fa1c1066629 (+0780): FF D3 CALL RBX
0x7fa1c106662b (+0782): 48 8B 85 F0 FF FF FF MOV RAX, [RBP-16]
0x7fa1c1066632 (+0789): 48 89 C7 MOV RDI, RAX
0x7fa1c1066635 (+0792): 48 B8 40 C8 0C C1 A1 7F 00 00 MOV RAX, 0x7FA1C10CC840
0x7fa1c106663f (+0802): FF D0 CALL RAX
0x7fa1c1066641 (+0804): F2 0F 10 85 D0 FF FF FF MOVSD XMM0, [RBP-48]
0x7fa1c1066649 (+0812): 48 83 EC 08 SUB RSP, 8
0x7fa1c106664d (+0816): F2 0F 11 04 24 MOVSD [RSP], XMM0
0x7fa1c1066652 (+0821): F2 0F 10 85 C8 FF FF FF MOVSD XMM0, [RBP-56]
0x7fa1c106665a (+0829): F2 0F 10 C8 MOVSD XMM1, XMM0
0x7fa1c106665e (+0833): F2 0F 10 04 24 MOVSD XMM0, [RSP]
0x7fa1c1066663 (+0838): 48 83 C4 08 ADD RSP, 8
0x7fa1c1066667 (+0842): F2 0F 58 C1 ADDSD XMM0, XMM1
0x7fa1c106666b (+0846): F2 0F 2C C0 CVTTSD2SI EAX, XMM0
0x7fa1c106666f (+0850): C9 LEAVE
0x7fa1c1066670 (+0851): C3 RET
0x7fa1c1066671 (+0852): 31 DB 0x31
0x7fa1c1066672 (+0853): C0 DB 0xC0
0x7fa1c1066673 (+0854): C9 LEAVE
0x7fa1c1066674 (+0855): C3 RET
/* ✞ disassembly of Main (261 bytes @ 0x7fa1c1066675) ✞ */
0x7fa1c1066675 (+0000): 55 PUSH RBP
0x7fa1c1066676 (+0001): 48 89 E5 MOV RBP, RSP
0x7fa1c1066679 (+0004): 48 81 EC 80 00 00 00 SUB RSP, 128
0x7fa1c1066680 (+0011): 48 BF 15 D4 FE FF FD 7F 00 00 MOV RDI, 0x7FFDFFFED415
0x7fa1c106668a (+0021): 48 BB 70 EF 0E C1 A1 7F 00 00 MOV RBX, 0x7FA1C10EEF70
0x7fa1c1066694 (+0031): B8 00 00 00 00 MOV EAX, 0
0x7fa1c1066699 (+0036): FF D3 CALL RBX
0x7fa1c106669b (+0038): B8 00 00 00 00 MOV EAX, 0
0x7fa1c10666a0 (+0043): 89 85 F8 FF FF FF MOV [RBP-8], EAX
0x7fa1c10666a6 (+0049): 48 8D 85 F8 FF FF FF LEA RAX, [RBP-8]
0x7fa1c10666ad (+0056): 50 PUSH RAX
0x7fa1c10666ae (+0057): B8 0A 00 00 00 MOV EAX, 10
0x7fa1c10666b3 (+0062): 50 PUSH RAX
0x7fa1c10666b4 (+0063): 5E POP RSI
0x7fa1c10666b5 (+0064): 5F POP RDI
0x7fa1c10666b6 (+0065): 48 B8 0A 60 06 C1 A1 7F 00 00 MOV RAX, 0x7FA1C106600A
0x7fa1c10666c0 (+0075): FF D0 CALL RAX
0x7fa1c10666c2 (+0077): 8B 85 F8 FF FF FF MOV EAX, [RBP-8]
0x7fa1c10666c8 (+0083): 50 PUSH RAX
0x7fa1c10666c9 (+0084): 5E POP RSI
0x7fa1c10666ca (+0085): 48 BF 58 D4 FE FF FD 7F 00 00 MOV RDI, 0x7FFDFFFED458
0x7fa1c10666d4 (+0095): 48 BB 70 EF 0E C1 A1 7F 00 00 MOV RBX, 0x7FA1C10EEF70
0x7fa1c10666de (+0105): B8 00 00 00 00 MOV EAX, 0
0x7fa1c10666e3 (+0110): FF D3 CALL RBX
0x7fa1c10666e5 (+0112): 48 B8 C1 60 06 C1 A1 7F 00 00 MOV RAX, 0x7FA1C10660C1
0x7fa1c10666ef (+0122): FF D0 CALL RAX
0x7fa1c10666f1 (+0124): 89 85 F0 FF FF FF MOV [RBP-16], EAX
0x7fa1c10666f7 (+0130): 8B 85 F0 FF FF FF MOV EAX, [RBP-16]
0x7fa1c10666fd (+0136): 50 PUSH RAX
0x7fa1c10666fe (+0137): 5E POP RSI
0x7fa1c10666ff (+0138): 48 BF 8D D4 FE FF FD 7F 00 00 MOV RDI, 0x7FFDFFFED48D
0x7fa1c1066709 (+0148): 48 BB 70 EF 0E C1 A1 7F 00 00 MOV RBX, 0x7FA1C10EEF70
0x7fa1c1066713 (+0158): B8 00 00 00 00 MOV EAX, 0
0x7fa1c1066718 (+0163): FF D3 CALL RBX
0x7fa1c106671a (+0165): B8 04 00 00 00 MOV EAX, 4
0x7fa1c106671f (+0170): 50 PUSH RAX
0x7fa1c1066720 (+0171): 5F POP RDI
0x7fa1c1066721 (+0172): 48 B8 1D 63 06 C1 A1 7F 00 00 MOV RAX, 0x7FA1C106631D
0x7fa1c106672b (+0182): FF D0 CALL RAX
0x7fa1c106672d (+0184): 89 85 E8 FF FF FF MOV [RBP-24], EAX
0x7fa1c1066733 (+0190): 8B 85 E8 FF FF FF MOV EAX, [RBP-24]
0x7fa1c1066739 (+0196): 50 PUSH RAX
0x7fa1c106673a (+0197): 5E POP RSI
0x7fa1c106673b (+0198): 48 BF C3 D4 FE FF FD 7F 00 00 MOV RDI, 0x7FFDFFFED4C3
0x7fa1c1066745 (+0208): 48 BB 70 EF 0E C1 A1 7F 00 00 MOV RBX, 0x7FA1C10EEF70
0x7fa1c106674f (+0218): B8 00 00 00 00 MOV EAX, 0
0x7fa1c1066754 (+0223): FF D3 CALL RBX
0x7fa1c1066756 (+0225): 8B 85 F8 FF FF FF MOV EAX, [RBP-8]
0x7fa1c106675c (+0231): 50 PUSH RAX
0x7fa1c106675d (+0232): 8B 85 F0 FF FF FF MOV EAX, [RBP-16]
0x7fa1c1066763 (+0238): 89 C1 MOV ECX, EAX
0x7fa1c1066765 (+0240): 58 POP RAX
0x7fa1c1066766 (+0241): 01 C8 ADD EAX, ECX
0x7fa1c1066768 (+0243): 50 PUSH RAX
0x7fa1c1066769 (+0244): 8B 85 E8 FF FF FF MOV EAX, [RBP-24]
0x7fa1c106676f (+0250): 89 C1 MOV ECX, EAX
0x7fa1c1066771 (+0252): 58 POP RAX
0x7fa1c1066772 (+0253): 01 C8 ADD EAX, ECX
0x7fa1c1066774 (+0255): C9 LEAVE
0x7fa1c1066775 (+0256): C3 RET
0x7fa1c1066776 (+0257): 31 DB 0x31
0x7fa1c1066777 (+0258): C0 DB 0xC0
0x7fa1c1066778 (+0259): C9 LEAVE
0x7fa1c1066779 (+0260): C3 RET
--- [running full_showcase.HC: testing all compiler features] ---
[ptr & bits] box updated via &box and *ptr to: 42
[u8* & i64*] str = HolyC, first char = 72, big_arr[1] = 15000000007
[while & %] sum of odds (1..9) = 25
[f64 sse2] mean = 20.00, sqrt(mean*5) = 10.00
[float->int] ToI32(mean + root) = 30
--- [Main() returned 97] ---