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  :(  Of course that neglects about 1 billion device in phones . . . .
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
Title: Re: Release Candidate #1 for version 14.00 now available
Post by: TimoVJL on March 17, 2026, 12:37:16 PM
Hopefully users test new version and don't wait release version.
I try to test Windows 7 with new version, but every PC's CPUs are problem.
Windows 10 and 11 test PCs should not having any problems.
Pelles C support testing other versions with -x -xml poide commandline options.

Title: Re: Release Candidate #1 for version 14.00 now available
Post by: John Z on March 17, 2026, 08:59:06 PM
Tested on Window 7 Pro, DELL 64 bit (still get security updates)

Install seemed ok, however poide would not start even enough to show a window.
Didn't see it running in the background either.
poview worked.

DEL optiplex 780 Intel Core Duo E8400 release date 2008

John Z

Update: Tested on Win 11 Home 24H2 HP, was successful, installed and built vcardz_i program fine.
Title: Re: Release Candidate #1 for version 14.00 now available
Post by: Vortex on March 17, 2026, 09:37:26 PM
I think processors dating back to 2012\2013 are supporting the movbe instruction.
Title: Re: Release Candidate #1 for version 14.00 now available
Post by: TimoVJL on March 17, 2026, 11:12:41 PM
https://uops.info/html-instr/MOVBE_R32_M32.html (https://uops.info/html-instr/MOVBE_R32_M32.html)
Long history.

Intel Bonnel 2008 - 2013
Silvermont 2013 -
Airmont 2015 -
AMD Zen+ 2018 -


EDIT: Check_MOVBE2 show Vendor and Brand too.
Title: Re: Release Candidate #1 for version 14.00 now available
Post by: John Z on March 18, 2026, 04:04:09 PM
Nice work Timo - results on two Windows 7 systems -

DELL windows 7 Pro
GenuineIntel
Intel(R) Core(TM) Duo CPU  E8400 @ 3.00Ghz

MOVBE not supported


Sony Laptop windows 7 Home
GenuineIntel
Intel(R) Core(TM) Duo CPU  T6600 @ 2.20Ghz

MOVBE not supported


👍

John Z
Title: Re: Release Candidate #1 for version 14.00 now available
Post by: Vortex on March 18, 2026, 07:05:24 PM
Hi Timo,

Thanks for the new tool. My result :

MOVBE not supported
Title: Re: Release Candidate #1 for version 14.00 now available
Post by: TimoVJL on March 25, 2026, 01:58:10 PM
I wish that users test this release candidate and don't wait release version, as happened before.

It is possible to install release candidate to own folder and after that use it with -x -xml commandline.
After that, remove registry setting before using an older Pelles C poide.

Also useful to make a zip of Pelles C folder for testing it in different PCs.

Title: Re: Release Candidate #1 for version 14.00 now available
Post by: John Z on March 26, 2026, 10:50:20 AM
Testing many programs now, but a question -

Will each program compiled in V14_RC1 on a 'modern' CPU then need to be run/tested on a Windows 7 system and/or with an older CPU not supporting the MOVBE op code?

Essentially will programs completed with V14 possibly include the MOVBE op code in the exe?

GDIpTest program fails under V14, but OK under V13. Not sure why yet no error during creation but crashes on opening file to display. Sources , picture and exe files included.  The picture is what makes the upload so large but wanted to include exact test case.  Can be deleted later to release space.  Didn't find MOVBE in the exe btw


John Z

Seems you can use a HEX Editor and search for HEX 0F38F1 (found in several places poide.exe) or 0F38F0
Title: Re: Release Candidate #1 for version 14.00 now available
Post by: Vortex on March 26, 2026, 02:11:03 PM
Hi John,

You can also disassemble the MS COFF object module files produced by Pelles C with Agner Fog's objconv tool :

https://github.com/gitGNU/objconv
Title: Re: Release Candidate #1 for version 14.00 now available
Post by: John Z on March 26, 2026, 03:33:23 PM
Weirdness

On a rather large 64 bit program V14 keeps popping up a message box "The main.rc has been changed outside of the editor. Do you want to reload it?"  Even if clicking Yes and Save All, next build/run it pops up again.  Needless to say. but I will, nothing I am doing is changing the .rc file. It happens immediately after starting the program within the IDE environment.  Checking the .rc file date-time, it is changed to the time the program was started.  When I run the program outside of the IDE in the same directory, the .rc file does not change date-time.

Same program V14 complains about an invalid character in file.c which is 1252 ANSI Latin-1 and will not open it in the editor.  The file shows no invalid characters in TextPad editor. Even though V14 says invalid character and won't open it, it compiles without complaint and the final exe is created.  Also clicking on the + to display file.c procedures works, just can't get it into the editor no matter which proc is clicked. Related to issue 1 maybe I don't know.

Verified under V13 neither of these issues exist.  However bug? or code? I don't know for sure.


It is a big program (vcardz_i) with a lot of features to test so possibly more issues.

Unfortunately I think I'm not going to be able to develop a minimum program to demo.

I've tested about 20 small programs w/o issue running in Windows 11 with a MOVBE capable processor.  I haven't tried the resulting programs in Win 7 with a MOVBE incapable processor.

John Z
Title: Re: Release Candidate #1 for version 14.00 now available
Post by: Michele on March 27, 2026, 09:12:40 AM
Quote from: John Z on March 26, 2026, 03:33:23 PMWeirdness

On a rather large 64 bit program V14 keeps popping up a message box "The main.rc has been changed outside of the editor. Do you want to reload it?"  Even if clicking Yes and Save All, next build/run it pops up again.  Needless to say. but I will, nothing I am doing is changing the .rc file. It happens immediately after starting the program within the IDE environment.  Checking the .rc file date-time, it is changed to the time the program was started.  When I run the program outside of the IDE in the same directory, the .rc file does not change date-time.
I had a similar problem, the cause was an addin that increments the build number at each compilation.
Title: Re: Release Candidate #1 for version 14.00 now available
Post by: TimoVJL on March 27, 2026, 10:39:41 AM
Quote from: John Z on March 26, 2026, 10:50:20 AMTesting many programs now, but a question -

Will each program compiled in V14_RC1 on a 'modern' CPU then need to be run/tested on a Windows 7 system and/or with an older CPU not supporting the MOVBE op code?

Essentially will programs completed with V14 possibly include the MOVBE op code in the exe?

GDIpTest program fails under V14, but OK under V13. Not sure why yet no error during creation but crashes on opening file to display. Sources , picture and exe files included.  The picture is what makes the upload so large but wanted to include exact test case.  Can be deleted later to release space.  Didn't find MOVBE in the exe btw


John Z

Seems you can use a HEX Editor and search for HEX 0F38F1 (found in several places poide.exe) or 0F38F0
If project build as stdcall, it didn't crash.
Title: Re: Release Candidate #1 for version 14.00 now available
Post by: John Z on March 27, 2026, 11:34:39 AM
Thanks Michele

Quote from: Michele on March 27, 2026, 09:12:40 AMI had a similar problem, the cause was an addin that increments the build number at each compilation.

You nailed it in one!  Seems the V14_RC1 did not include Timo's update for that Add-In.
Disabling it fix that issue.

Thanks,
John Z
Title: Re: Release Candidate #1 for version 14.00 now available
Post by: John Z on March 27, 2026, 11:37:20 AM
Thanks Timo,

Quote from: TimoVJL on March 27, 2026, 10:39:41 AMIf project build as stdcall, it didn't crash.

So the problem/issue or bug is with _fastcall in V14 acting differently from V13.

Appreciation,

John Z
Title: Re: Release Candidate #1 for version 14.00 now available
Post by: Vortex on March 27, 2026, 12:33:03 PM
Attached is a simple GUI built with Pelles C V14 RC1. Can be Useful to test the movbe issue.
Title: Re: Release Candidate #1 for version 14.00 now available
Post by: Pelle on March 27, 2026, 05:02:16 PM
Thank you all!

( I got side-tracked hunting down an elusive ARM64 bug )

The MOVBE support isn't essential. I can' live without it. Seems like less hassle to simple comment out the eight code generator rules producing this instruction.

I will rebuild everything (as usual) for Release Candidate #2. I need a few days for this.