On Wed, 20 Aug 2025 19:21:13 +0000, Schmitt, Michael <michael.schm...@dxc.com> wrote:
>So here we have a big difference between an optimizing compiler and >what an assembler program would do. Realize C and GO are inefficient despite being optimizing compilers. They are missing critical features, the least of which is good assembler integration. You can include assembler but it is very painful. Only Unix is written in C. IBM XL C is not a proper C because of IBM enhancements but is only somewhat more efficient. You don't have a robust OS like z/OS with C. MSVC is not a proper C and you do not have MS Windows without it because it has a decent assembler. int main() { int counter = 0; __asm { mov eax, counter // Move the value of counter into EAX inc eax // Increment EAX mov counter, eax // Store the incremented value back into counter } C and GO ignored critical optimizing logic despite Google GO fixing some minor C shortcomings. 1. Assembler code supported using the MSVC implementation. As an FYI, you can use offset, length and other C variable attributes. Using zArch MVC makes this a single optimized instruction. 2. No compile time support. Macros not supported by GO. C macros are not proper macros. CONSTEXPR is an abysmal attempt. Only HLASM has true macros. Simply put, the compiler cannot generate compile time code when the programmer does not have the ability a tool to provide that logic. Realize that x86-64 is the market CPU leading architecture. Linux uses between an estimated 20% to 40% of x86-64 instructions / capabilities. Linux fails to improve on x86-64. It's pops is 5,000 pages. zArch pops is only 2,000 pages but a far more robust instruction set. It's time for a new language that is an efficient hybrid of GO and assembler.