News:

Download Pelles C here: http://www.pellesc.se

Main Menu

Recent posts

#11
Announcements / Re: Release Candidate #2 for v...
Last post by John Z - Yesterday at 12:46:25 PM
All looking good on my various programs, and other test files.

The only different thing I see is with a single C file that was 'OK' under V13 but is reported as having illegal character(s) under V14.  I could not find any bad character(s) and other text editors did not show or complain either.  Finally I just used TextPad to re-save the file as UTF-8, with BOM, then it was acceptable to V14, nothing looked different...

Perhaps a future enhancement could report the byte position of the 1st offending character so it would be easier to locate and correct.

All good.

John Z

#12
Announcements / Re: Release Candidate #2 for v...
Last post by TimoVJL - Yesterday at 11:14:14 AM
Thanks,
that i can still use my an old PC full of an old C-code for testing new version.
#13
ARM64 discussions / Not frustrated enough? Too muc...
Last post by Pelle - Yesterday at 10:09:19 AM
Well, why not try writing some ARM64 (RISC) assembly code?

Here is a small example for POASM, displaying a typical "Hello, world" message box:

NULL            equ     0
MB_OK           equ     0
EXIT_SUCCESS    equ     0

                area .rdata, data, readonly

message         dcb     "Hello, Windows on ARM64!", 0
title           dcb     "POASM test", 0

                area .text, code

                export main

                import __imp_ExitProcess
                import __imp_MessageBoxA

main            function

                stp     fp,lr,[sp,#-16]!
                mov     fp,sp

                mov     x0,NULL
                adrp    x1,message
                add     x1,x1,message
                adrp    x2,title
                add     x2,x2,title
                mov     w3,MB_OK
                adrp    x8,__imp_MessageBoxA
                ldr     x8,[x8,__imp_MessageBoxA]
                blr     x8

                mov     w0,EXIT_SUCCESS
                adrp    x8,__imp_ExitProcess
                ldr     x8,[x8,__imp_ExitProcess]
                blr     x8

                ldp     fp,lr,[sp],#16
                ret       

                endfunc

                end

The C version is just a tad shorter:

int main(void) {
  MessageBoxA(NULL, "Hello, Windows on ARM64!", "POASM test", MB_OK);
  ExitProcess(EXIT_SUCCESS);
}
#14
Announcements / Re: Release Candidate #2 for v...
Last post by Pelle - Yesterday at 10:03:26 AM
Thanks. Maybe not too many more rounds this time? We'll see...
#15
Bug reports / Re: TEXTEQU statement freezing...
Last post by Pelle - Yesterday at 09:57:27 AM
You're welcome...  :)
#16
Announcements / Re: Release Candidate #2 for v...
Last post by John Z - Yesterday at 12:24:28 AM
Thanks Pelle!

Testing round 2  :)

John Z
#17
Bug reports / Re: TEXTEQU statement freezing...
Last post by Vortex - March 29, 2026, 08:59:59 PM
Hi Pelle,

Many thanks for the fix in Poasm Version 14.00.1 released with Pelles C 14 RC2
#18
Announcements / Release Candidate #2 for versi...
Last post by Pelle - March 29, 2026, 06:10:50 PM
See https://www.pellesc.se/, Download (and Changes).

Changes from Release Candidate #1:
  • Stopped using instruction MOVBE for load/store with byte-swap in the X64 code generator. Ditto for the X86 code generator.
  • Fixed infinite recursion in POASM, from a construct like: MessageBoxA TEXTEQU <MessageBoxA>.
  • Stopped auto-installing buildver.dll in Bin\AddIns64 directory.
  • Minor revision to default manifest for IDE resource editor.
  • Minor documentation fix.
#19
Assembly discussions / Basic like put command
Last post by Vortex - March 28, 2026, 08:43:49 PM
Basic like put command sample :

include     OpenNewTxtForOutput.inc

.data

msg         db 'This is a test.',0
msg2        db 'Another test',0
file        db 'Test.txt',0

.data?

hFile       dd ?

.code

OpenNewTxtForOut PROC filename:DWORD

LOCAL mode:DWORD

    mov     mode,'w'
    invoke  fopen,filename,\
            ADDR mode
    ret

OpenNewTxtForOut ENDP

put PROC handle:DWORD,pMemory:DWORD
   
    invoke  lstrlen,pMemory
    invoke  fwrite,pMemory,1,\
            eax,handle
    ret

put ENDP
   
close PROC handle:DWORD

     invoke fclose,handle
     ret

close ENDP

start:

    invoke  OpenNewTxtForOut,ADDR file
    mov     hFile,eax
   
    invoke  put,eax,ADDR msg
    invoke  put,hFile,ADDR msg2
    invoke  close,hFile
   
    invoke  ExitProcess,0

END start

#20
Beginner questions / Re: same code pelles c and gcc...
Last post by Pelle - March 28, 2026, 12:34:09 PM
Quote from: John Z on March 28, 2026, 10:56:36 AMDownloaded n3220 working draft.

Problem is not your English - it is the inconsistency in the proposed spec.
Thanks for looking at this! Glad it's not just me, then...

Until there is a clearer picture, I will not change anything. The GCC distribution for Windows, that I have found in recent years (they seem to come and go), have been of somewhat dubious quality. I havn't seen this for LLVM yet. Microsoft may get to <stdbit.h> in 2035. Maybe.

For now, there are other functions doing the same job; for Windows: _BitScanForward(), _BitScanReverse(), _BitScanForward64(), and _BitScanReverse64(); more generic: _bit_scan_forward(), _bit_scan_forward64(), _bit_scan_reverse(), _bit_scan_reverse64(). No requirement on C23.