Hello,
Inspired by zedd151 from the Masm Forum, here is a Poasm example using a C module to sort strings :
http://masm32.com/board/index.php?topic=13289.0
.386
.model flat,stdcall
option casemap:none
ExitProcess PROTO :DWORD
printf PROTO C :DWORD,:VARARG
BurstSortStrings PROTO C :DWORD,:DWORD,:DWORD
.data
s1 db 'lemon',0
s2 db 'apple',0
s3 db 'orange',0
s4 db 'banana',0
frmt db '%s',13,10,0
strtabl dd OFFSET s1,OFFSET s2,OFFSET s3,OFFSET s4
.code
start:
call main
invoke ExitProcess,0
main PROC USES esi ebx
invoke BurstSortStrings,ADDR strtabl,4,0
mov ebx,4
mov esi,OFFSET strtabl
@@:
invoke printf,ADDR frmt,DWORD PTR [esi]
add esi,4
dec ebx
jnz @b
ret
main ENDP
END start
Here is the 64-bit sample :
ExitProcess PROTO :QWORD
printf PROTO :QWORD,:VARARG
BurstSortStrings PROTO :QWORD,:QWORD,:QWORD
.data
s1 db 'lemon',0
s2 db 'apple',0
s3 db 'orange',0
s4 db 'banana',0
frmt db '%s',13,10,0
strtabl dq OFFSET s1,OFFSET s2,OFFSET s3,OFFSET s4
.code
start:
sub rsp,8+4*8
call main
invoke ExitProcess,0
main PROC USES rsi rbx PARMAREA=4*SIZEOF QWORD
invoke BurstSortStrings,ADDR strtabl,4,0
mov rbx,4
mov rsi,OFFSET strtabl
@@:
invoke printf,ADDR frmt,QWORD PTR [rsi]
add rsi,SIZEOF QWORD
dec rbx
jnz @b
ret
main ENDP
END start