Pelles C forum

Pelles C => Announcements => Topic started by: Pelle on March 15, 2026, 06:39:56 PM

Title: Release Candidate #1 for version 14.00 now available
Post by: Pelle on March 15, 2026, 06:39:56 PM
See https://www.pellesc.se/ (https://www.pellesc.se/), Download and Changes.
Title: Re: Release Candidate #1 for version 14.00 now available
Post by: TimoVJL on March 15, 2026, 09:57:54 PM
Thanks for new version for testing.

Windows 7 SP1 with an old AMD CPU without MOVBE:

poide crash
ModLoad: 00000001`3f7c0000 00000001`3fb5c000   poide.exe
...
ModLoad: 000007fe`e2bc0000 000007fe`e2bec000   C:\code\PellesC14rc1\Bin\Wizards64\wininst.dll
(8964.84dc): Illegal instruction - code c000001d (first chance)
(8964.84dc): Unknown exception - code c000041d (!!! second chance !!!)
*** WARNING: Unable to verify checksum for poide.exe
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for poide.exe -
poide!WizScanForDependenciesA+0xe2846:
00000001`3f293d46 660f38f1442430  movbe   word ptr [rsp+30h],ax ss:00000000`009eebd0=0000

polink crash
ModLoad: 00000001`3f8f0000 00000001`3f935000   image00000001`3f8f0000

...
(8958.8a30): Illegal instruction - code c000001d (first chance)
(8958.8a30): Illegal instruction - code c000001d (!!! second chance !!!)
*** WARNING: Unable to verify checksum for image00000001`3f8f0000
*** ERROR: Module load completed but symbols could not be loaded for image00000001`3f8f0000
image00000001_3f8f0000+0x1984:
00000001`3f8f1984 0f38f14608      movbe   dword ptr [rsi+8],eax ds:00000000`00222220=baadf00d
polib fail
Building zlib.lib.
POLIB: fatal error: An internal error occurred.

https://uops.info/html-instr/MOVBE_R32_M32.html (https://uops.info/html-instr/MOVBE_R32_M32.html)

Incompatible CPU
AMD Athlon(tm) II X2 220 Processor
Intel Core i5-2450M CPU


https://en.wikipedia.org/wiki/Jaguar_(microarchitecture) (https://en.wikipedia.org/wiki/Jaguar_(microarchitecture))

Not sure, if this detect MOVBE
#include <intrin.h>

void __cdecl exit(int status);
int printf(const char * restrict format, ...);

#pragma comment(lib, "msvcrt.lib")
//#pragma comment(linker,"/subsystem:console,5.1")
void __cdecl mainCRTStartup(void)
{
    int __cdecl main(void);
    void __cdecl exit(int status);
    exit(main());
}

// CPUID.(EAX=01H, ECX=0H):ECX.MOVBE[bit 22]
// EAX, EBX, ECX and EDX
//  0,   1,   2,      3
int GetCPUFeature(void)
{
    int r[4];    // EAX, EBX, ECX and EDX
    int rc = 0;
    _cpuid(r, 0);    // Highest Function Parameter and Manufacturer ID
    if (r[0] != 0x500) {    //
        _cpuid(r, 1);    // Processor Info and Feature Bits
        rc = _bittest((const long int *)&r[2], 22);

    }

    return rc;
}

int main(void)
{
    printf("CPU options: %d\n", GetCPUFeature());
    exit(0);
}
Title: Re: Release Candidate #1 for version 14.00 now available
Post by: Vortex on March 15, 2026, 10:08:07 PM
Hi Pelle,

Thanks for the new release. Poide is crashing on Windows 7 Sp1.
Title: Re: Release Candidate #1 for version 14.00 now available
Post by: Pelle on March 16, 2026, 10:07:35 AM
Well, the movbe instruction is rather old. Hard to find the complete history and origin, but possibly from ~2013.
I have hold back some progress for years, due to certain old processors, but I'm getting fed up with that. In a perfect world I rather drop X86/X64 and move permanently to ARM64. Or better yet: find another project to waste time on. We'll see...
Title: Re: Release Candidate #1 for version 14.00 now available
Post by: John Z on March 16, 2026, 12:57:35 PM
Quote from: Pelle on March 15, 2026, 06:39:56 PMSee https://www.pellesc.se/ (https://www.pellesc.se/), Download and Changes.


Thanks very much!

John Z

P.S. ARM64 will be a good challenge as will finding testers. I think currently a general population of users is a few percent, for high end systems it is reportedly approaching 10% mainly due to high performance snapdragon systems.  AI supplied numbers  :(
Title: Re: Release Candidate #1 for version 14.00 now available
Post by: Vortex on March 16, 2026, 01:22:18 PM
To check if your processor supports MOVBE, run Coreinfo on the command prompt :

Coreinfo64.exe -f
Check the output of the tool to see if MOVBE is supported :

MOVBE           *       Supports MOVBE instruction
https://learn.microsoft.com/en-us/sysinternals/downloads/coreinfo