Latest POASM for testing...

Started by Pelle, April 09, 2025, 08:59:05 AM

Previous topic - Next topic

Pelle

/Pelle

TimoVJL

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
May the source be with you

Vortex

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.
Code it... That's all...

Pelle

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.
/Pelle

TimoVJL

#4
This silly example still needs -largeaddressaware:no
also union thing is still a problem
second example don't need -largeaddressaware:no
May the source be with you

Vortex

Hi Timo,

Thanks, I rebuilt your first project as a Windows application with some minor modifications.
Code it... That's all...

TimoVJL

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.
May the source be with you

Pelle

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 sText1must be written like this:
lea RAX,sText1 WRT RIP
mov tdc.pszMainInstruction WRT RIP, RAX


/Pelle

TimoVJL

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.
May the source be with you

Vortex

Hi Timo,

Not a bad example. It demonstrates the formation of binary resources in memory.
Code it... That's all...

Pelle

New version at the top (13.00.12), with new diagnostic for unterminated string.
/Pelle

TimoVJL

This test project works after making needed changes.
May the source be with you

Pelle

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...
/Pelle

TimoVJL

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.
May the source be with you

Vortex

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

Code it... That's all...