Before including POASM in yet another Release Candidate, can you please check this version:
www.smorgasbordet.com/pellesc/1300/poasm_13_00_1.zip
www.smorgasbordet.com/pellesc/1300/poasm_13_00_5.zip
www.smorgasbordet.com/pellesc/1300/poasm_13_00_11.zip
http://www.smorgasbordet.com/pellesc/1300/poasm_13_00_12.zip
http://www.smorgasbordet.com/pellesc/1300/poasm_13_00_47.zip
http://www.smorgasbordet.com/pellesc/1300/poasm_13_00_49.zip 2025-04-25
- Does it fix your bug reports?
- Does it still work with your other sources?
Building DynDlgTest6x64.obj.
C:\code\PellesC\v13\POAsm\DynDlgTest6x64.asm(66): error: Wrong type for condition operand 1.
C:\code\PellesC\v13\POAsm\DynDlgTest6x64.asm(68): error: Wrong type for condition operand 1.
C:\code\PellesC\v13\POAsm\DynDlgTest6x64.asm(70): error: Wrong type for condition operand 1.
fixed
Hi Pelle,
Thanks for the new release of Poasm. Here is my report :
- Extra leading underscore issue with ALIAS is fixed.
- The .IF conditional issue is fixed.
- The assembler assigns the correct values after the EQU statements. ( https://forum.pellesc.de/index.php?topic=11124.0 )
- Tested the replacements of RIPs with WRT RIP :
This syntax is obsolete :
mov hInstance+rip,rax
Tested the new syntax below :
mov hInstance WRT RIP,rax
I will continue to test V13.00.5 with my soure code.
Having two ways of specifying rip-relative addressing wasn't a big deal before, but now it has a higher cost. Better to choose one mode, and I think WRT is more readable.
This silly example still needs -largeaddressaware:no
also union thing is still a problem
second example don't need -largeaddressaware:no
Hi Timo,
Thanks, I rebuilt your first project as a Windows application with some minor modifications.
The poide with poasm is a great tool for learning assembler programming.
So we need to support it in developing times.
Personally i am not an assembler fan at all, but i want to learn some of basic assembler programming rules.
My simple examples are just for basic elements, that i might need later.
MS ml64.exe is just a horrible tool with too many weaknesses.
AFAIK, with the (more or less) required RIP-relative addressing on Windows X64, ADDR32 relocations are mostly unwanted and /LARGEADDRESSWARE:NO is moot.
code like this:
mov tdc.pszMainInstruction WRT RIP, offset sText1
must be written like this:
lea RAX,sText1 WRT RIP
mov tdc.pszMainInstruction WRT RIP, RAX
This an old silly example works with current poasm.exe :)
A bad example, but was a test material some time ago just for learning x64.
Hi Timo,
Not a bad example. It demonstrates the formation of binary resources in memory.
New version at the top (13.00.12), with new diagnostic for unterminated string.
This test project works after making needed changes.
New version at the top (13.00.47).
The predefined macros @CatStr(), @SubStr(), @InStr(), @SizeStr() are no longer thin wrappers around the CATSTR, SUBSTR, INSTR, and SIZESTR dicrectives but rather internal "operations". This indirectly affect other parts of POASM, so best to test everything again...
Testing Vortex examples:SAPISample64.asm(12): error: Must be a constant integer expression.
SAPISample64.asm(18): error: Stack parameter area can only hold 0 entries: increase value of PARMAREA.
Hi Timo,
You need to modify one line in the Speech API sample ( 64-bit ) :
This one :
entry_point PROC PARMAREA=5*QWORD
to this :
entry_point PROC PARMAREA=5* SIZEOF QWORD
Pelle's explanation :
https://forum.pellesc.de/index.php?msg=40863
New version at the top (13.00.49).