See https://www.pellesc.se/ (https://www.pellesc.se/), Download and Changes.
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);
}
Hi Pelle,
Thanks for the new release. Poide is crashing on Windows 7 Sp1.
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...
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 :(
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