Search found 29 matches

by ar18
02 Sep 2018 03:26
Forum: Questions and answers
Topic: Invoke with SIMD operands
Replies: 11
Views: 51559

Re: Invoke with SIMD operands

That is incorrect code. The registers are never put on the shadow space stack by the caller, but always by the callee. Seems I remember someone telling me to RTFM, in this case it should be the Win64 ABI manual :) . This is one of the problems with the WinAPI macro in 64-bit mode. It is the functio...
by ar18
01 Sep 2018 02:15
Forum: Questions and answers
Topic: Invoke
Replies: 10
Views: 48066

Re: Invoke

I would like to suggest that for Win64 support in €ASM, could you provide a fastcall, cdecl, stdcall, and vector directive/macro for the calling convention, or at least make it possible so that a macro could be written by users to do this? I think any convention is already possible at macro level. ...
by ar18
31 Aug 2018 18:27
Forum: Questions and answers
Topic: Invoke
Replies: 10
Views: 48066

Re: Invoke

It is a very stupid thing to save parameters to a register, only to move them onto the stack. That wastes cycles and memory...Either save parameters to the registers (like a fastcall does) or move them to the stack (like cdecl does) but don't do both at the same time My 64-bit paint program has 86 ...
by ar18
31 Aug 2018 17:41
Forum: Questions and answers
Topic: Invoke
Replies: 10
Views: 48066

Re: Invoke

After the call is made to the function, per the Win64 ABI it must then copy rcx,rdx,r8, and r9 into the SHADOW SPACE at the start of that function. I didn't know that. Agner Fog in book 5, page 19, says ad 64 bit Windows: Since the shadow space is owned by the called function, it is safe to use the...
by ar18
31 Aug 2018 16:18
Forum: Questions and answers
Topic: Invoke with SIMD operands
Replies: 11
Views: 51559

Re: Invoke with SIMD operands

Actually it's not €ASM's job to support various ABI invokations (Win64, SystemV, Delphi etc), they are implemented as external macros, totally in the hands of €ASM users. So let's make them more compliant. Don't call the macro "WinAPI" then for 64-bit code, since that is a misnomer. Call ...
by ar18
31 Aug 2018 15:05
Forum: Questions and answers
Topic: No License?
Replies: 2
Views: 19004

Re: No License?

vitsoft wrote: 30 Aug 2018 21:27 RTFM, it's even indexed :P
https://euroassembler.eu/eadoc/index.htm#Licence
I tried, but you misspelled license so my search returned nothing :lol: .

Note to self: Remember, licence is a noun, license is a verb.

And invokation is spelled invocation.
by ar18
30 Aug 2018 20:39
Forum: Questions and answers
Topic: No License?
Replies: 2
Views: 19004

No License?

I can't find the license for €ASM. What is the license?

RE: https://choosealicense.com/no-permission/
by ar18
30 Aug 2018 18:34
Forum: Questions and answers
Topic: Invoke with SIMD operands
Replies: 11
Views: 51559

Re: Invoke with SIMD operands

What if the operand is provided as an immediate number, e.g. Function 0x8040 , how should the poor assembler know whether it is integer number 32832 or real4 number 4.0? That is the purpose of having a PROTO in the vast majority of all other assemblers. Personally I don't like protos. They make the...
by ar18
30 Aug 2018 14:58
Forum: Questions and answers
Topic: Invoke
Replies: 10
Views: 48066

Re: Invoke

I am experienced, having written a few full fledged 64-bit programs like a Paint program written completely with GoAsm, so I'm very familiar with how it works and it works like this: invoke fnTest,p1,p2,p3,p4,p5,,,p10 push p10 ; Put operands on stack, begin with the last. . . . push p5 ; = any valu...
by ar18
30 Aug 2018 00:34
Forum: Questions and answers
Topic: Invoke with SIMD operands
Replies: 11
Views: 51559

Re: Invoke with SIMD operands

Sometimes a bit of pseudocode will help better than any explanation ... api %MACRO Function, Argument1, Argument2,,,Lib= ____ %i %SETA %# ____ j %FOR %i..1 ________ %IF %i=4 ____________ %IF TYPE# %j = 'real4' ________________ movss xmm3,%j ____________ %ELSEIF TYPE# %j = 'real8' ________________ m...