Hello,
thanks for PoASM v5.0! Good to see this tool is still being developed. I will use this event to report some bugs
).
I just fed it with some code and noticed:
1. PoASM complains about
.386
.data
flatsel dd 0
.code
....
mov ds,[flatsel]
saying "invalid combination of opcode and operands"
thus forcing me to change the last line to "mov ds, word ptr [flatsel]"
That's bad. The move to/from segment registers can have both a word and dword memory reference.
2. PoASM assembles without error this code:
.386
.model flat
WIN386_Emulator proto
...
but the linker complains about unresolved external "_WIN386_Emulator". Obviously PoASM decorates the name with an "_" prefix. But please note that there is no calling convention behind the ".model" directive, that is, PoASM should NOT decorate such symbol names.
3. PoASM apparently wants to help the programmer. Good, but asm coders are a bit cautious if it comes to "helpful" assemblers. See this little piece of code:
VDWORDOUT proc C public
push eax
shr eax,16
call VWORDOUT
pop eax
VDWORDOUT endp
VWORDOUT proc C public
push eax
mov al,ah
call VBYTEOUT
pop eax
VWORDOUT endp
VBYTEOUT proc C public
pushfd
push eax
....
There are several PROCs and some lack the RET at the end ... deliberately! But PoASM includes this missing RET silently, which is not appreciated here. MASM doesn't do such things.
btw, POLINK still has problems and reports "duplicate symbols" if ASM code contains a "DllMain" function.
Regards
Japheth