Download Pelles C here: http://www.pellesc.se
main:
00000000 4883EC28 sub rsp, 28h
00000004 488D0D00000000 lea rcx, [??_C@_05BKKKKIID@i?$DN?$CFd?6?$AA@]
0000000B BA65000000 mov edx, 65h
00000010 E800000000 call printf
00000015 488D0D00000000 lea rcx, [??_C@_07MJFEPNKA@sum?$DN?$CFd?6?$AA@]
0000001C BABA130000 mov edx, 13BAh
00000021 E800000000 call printf
00000026 31C0 xor eax, eax
00000028 4883C428 add rsp, 28h
0000002C C3 ret
As Vortex mentioned, this was missingmov edx, 65hQuote from: John Z on April 14, 2026, 04:43:36 PMHi ander_cc,Yes, It really embarrassed me at that time. I realized I had forgotten to turn off the optimization. Then I explained the reason to my students, and turned off optimization to test the code again, and used gcc -o2 to test the code again.
A good lesson there similar to a lawyers credo "In Court don't ask a question if you don't already know the answer" the corollary to teaching, esp programing, is "In classroom don't use an example you haven't tested"(half kidding you, no offense meant)
But seriously yes there have been, and are issues, with using the optimizations and extensive testing is always needed for these. I have many programs using optimizations successfully.
Perhaps Pelle can find the cause of this short program, meanwhile
Your program can use optimizations by using this 'fix':
volatile int i=1;
which, as I understand it inhibits the optimizer from making assumptions about i.
John Z
As an aside I would recommend not using any optimizations for teaching. Optimizing should be performed by the students learning programing.
Cheers,
Quote from: italofutura on April 14, 2026, 08:22:10 AMI do not have admin rights on this laptop.
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
int CALLBACK EnumFontFamProc(const LOGFONT *lpelf, const TEXTMETRIC *lpntm,
DWORD FontType, LPARAM lParam)
{
static int nCnt;
OutputDebugString(lpelf->lfFaceName);
if (!lstrcmp(lpelf->lfFaceName, (TCHAR*)lParam))
nCnt++;
return nCnt;
}
void __cdecl WinMainCRTStartup(void)
{
HDC hDC = GetDC(GetDesktopWindow());
//int nFont = EnumFontFamilies(hDC, TEXT("Consolas"), EnumFontFamProc, (LPARAM)TEXT("Consolas"));
int nFont = EnumFontFamilies(hDC, TEXT("Cascadia Mono"), EnumFontFamProc, (LPARAM)TEXT("Cascadia Mono"));
if (nFont) MessageBox(0, "font found", "Font", MB_OK);
else MessageBox(0, "font not found", "Font", MB_OK);
ExitProcess(0);
}
#include <stdio.h>
int main(void)
{
int i=1, sum=0;
while (i<=100)
{
//printf("i=%d\n",i);
sum=sum+i;
i++;
}
printf("i=%d\n",i);
printf("sum=%d\n",sum);
return 0;
}_text SEGMENT PARA 'CODE' ; section number 1
main PROC
sub rsp, 40 ; 0000 _ 48: 83. EC, 28
lea rcx, [@152] ; 0004 _ 48: 8D. 0D, 00000000(rel)
call printf ; 000B _ E8, 00000000(rel)
lea rcx, [@154] ; 0010 _ 48: 8D. 0D, 00000000(rel)
mov edx, 5050 ; 0017 _ BA, 000013BA
call printf ; 001C _ E8, 00000000(rel)
xor eax, eax ; 0021 _ 31. C0
add rsp, 40 ; 0023 _ 48: 83. C4, 28
ret ; 0027 _ C3
main ENDP
_text ENDS
.xdata SEGMENT ALIGN(8) 'CONST' ; section number 3
..?xdatasym1 label byte
db 01H, 04H, 01H, 00H, 04H, 42H, 00H, 00H ; 0000 _ .....B..
.xdata ENDS
.rdata SEGMENT PARA 'CONST' ; section number 4
@154 label byte
db 73H, 75H, 6DH, 3DH, 25H, 64H, 0AH, 00H ; 0000 _ sum=%d..
@152 label byte
db 69H, 3DH, 25H, 64H, 0AH, 00H ; 0008 _ i=%d..
.rdata ENDSPage created in 0.030 seconds with 15 queries.