??? 06/09/06 07:29 Read: times |
#118074 - SDCC assembly interfacing |
Hello,
I want to interface existing routines written in assembly language from SDCC. My problem is that parameter passing between SDCC and the routines is not compatible so I need to write a wrapper which will call the functions correctly. The asm routines I want to call generally have the same structure: - known jump point - parameter input via Acc / or result output via Acc Now SDCC does not use the accumulator to pass parameters. Is there a simple way to make the following work? /* C function which passes a parameter to my routine */ void routine_a(unsigned char c) { _asm ; how can I access my variable c from here to put it into the acc ljmp MY_ASSEMBLYROUTINE _endasm; } /* reverse one - getting a result back */ void routine_b() { _asm ljmp MY_ASSEMBLYROUTINE_WITH_RESULT ; how can I achieve the same as return(...); with the contents of Acc after my routine? _endasm; } I tried a few things but SDCC always complained about "unused function parameters" or missing return() statements. I do not want to let SDCC create the asm code and hack that as I want to make sure it will still work if parameter passing changes one day. thanks, Matthias |
Topic | Author | Date |
SDCC assembly interfacing | 01/01/70 00:00 | |
read the manual | 01/01/70 00:00 | |
I did (ofcourse) | 01/01/70 00:00 | |
whichever tools the easy way is to .. | 01/01/70 00:00 | |
_naked | 01/01/70 00:00 | |
well....![]() | 01/01/70 00:00 |