Friday, 9 August 2013

C manually call function with stack and register

C manually call function with stack and register

i know this is the big deal to manipulate stack but i think it would be a
great lesson for me. im searched the internet, and i found calling
convention. I know how its working and why. I whant to simulate some of
"Callee clean-up stack" maybe stdcall, fastcall its doesnt matter,
important think is that who clean-up stack, then i will be have less work
do to :)
for example. i have function in C
double __fastcall Add(int a, int b) {
return a + b;
}
it will be Calee
and i have pointer to this function with type void*,
void* p = reinterpreted_cast<void*>(Add);
And i have function Caller
void Call(void* p, int a, int b) {
//some code about push and pop arg
//some code about save p into register
//some code about move 'p' into CPU to call this function manually
//some code about take of from stack/maybe register the output from
function
}
And thats it, its helpful when i use calling convention "Calle clean-up"
because i dont need
//some code about cleans-up this mess
I dont know how to do it, i know it can be done with assembler. but i
afraid about it, and i never 'touch' this language. i would be greatful to
simulate that calling with C, but when anyone can do it with ASM i will be
haapy :)
I told also what i whant to do with it, when i will be know how to
manually call function, i will be able to call function with several
parameters(if i know the number and size of it) and any type of function.
so i will be able to call any function in any language when that function
is in the right calling convention.
I'm using Windows OS x64 and MinGw

No comments:

Post a Comment