Work in progress on fastcall...
This commit is contained in:
parent
b6bbe0de4e
commit
0878f63422
@ -43,6 +43,69 @@ extern void append_instruction_t1 (int t1);
|
||||
extern void append_instruction_t4 (int t4, int w, int d, int r);
|
||||
extern void append_instruction_t6 (int t6, int w, int d, int r, int s, int i);
|
||||
|
||||
/*
|
||||
-- THIS WILL BE REMOVED, HELPER COMMENT FOR ME...
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
fast procedure XXX
|
||||
in u32 AAA
|
||||
in u32 BBB
|
||||
begin
|
||||
{ IMPL }
|
||||
end procedure
|
||||
|
||||
----------------------------------------
|
||||
|
||||
XXX:
|
||||
-- POSTPONE THOSE ARGUMENTS, IMPORTANT...
|
||||
-- BEGIN
|
||||
{ IMPL }
|
||||
-- END
|
||||
ret
|
||||
...
|
||||
XXX_AAA: dd 0 -- NOW WE DEFINE THOSE ARGUMENTS
|
||||
XXX_BBB: dd 0 -- NOW WE DEFINE THOSE ARGUMENTS
|
||||
|
||||
----------------------------------------
|
||||
|
||||
ASMDIRREL [?] -- IDENTIFIER FOR XXX
|
||||
{ IMPL } -- USAGE OF OTHER 'append_<>' FUNCTIONS...
|
||||
RETN
|
||||
...
|
||||
ASMDIRREL [?] ASMDIRIMM D32 0 -- IDENTIFIER FOR XXX_AAA
|
||||
ASMDIRREL [?] ASMDIRIMM D32 0 -- IDENTIFIER FOR XXX_BBB
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
fastcall XXX A B
|
||||
|
||||
----------------------------------------
|
||||
|
||||
mov [XXX_AAA], A
|
||||
mov [XXX_BBB], B
|
||||
call XXX
|
||||
-- mov [XXX_AAA], rax -- OKAY
|
||||
-- mov [XXX_AAA], 24 -- OKAY
|
||||
-- mov [XXX_AAA], MY_REL -- OKAY
|
||||
-- mov [XXX_AAA], [MY_MEM] -- NOT OKAY
|
||||
-- FIX
|
||||
-- mov rax, [MY_MEM]
|
||||
-- mov [XXX_AAA], rax -- NOW OKAY
|
||||
-- NOW FAST PROCEDURE XXX DOES THE WORK...
|
||||
|
||||
----------------------------------------
|
||||
|
||||
MOV D?? MEM [XXX_AAA] REG/MEM/IMM/REL [?]
|
||||
MOV D?? MEM [XXX_BBB] REG/MEM/IMM/REL [?]
|
||||
CALL D32 REL XXX
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
extern void append_fastcall (void); // TODO
|
||||
extern void append_fastcall_arguments (void); // TODO
|
||||
|
||||
extern void issue_warning(const char * format, ...);
|
||||
extern void issue_error(const char * format, ...);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user