[an error occurred while processing this directive]
|
В общем то в вопросе не ясно для какого процика - поэтому с примером придется повременить :)
Сутьже такая - как Вы вызываете asm функцию из Цэ? - все правильно - растолкали данные по регистрам, стекам как того требует рантайм энвиронмент и вызов - результат возвращается тоже в оговоренном Цэ месте. И ваша программа на Цэ да же и не подозревает что вызывала asm функцию.
А теперь обратно asm вызывает Цэ - все то же самое! - только ваша asm процедура должна растолкать параметры функции по рагистрам и стеку и вызвать Цэ функцию. Цэ функция получив параметря там где ожидает - выполнит свою рабоу и откуда ей знать кто ее вызвал asm или Цэ функция?
Как именно расталкивать параметры по егистрам и стеку - смотрите в описании конкретного Цэ компилятора - например для техасовских 54xx и 55xx - это совершенно разные способы расталкиваня.
При этом в описании компилятора вполне четко описано - какие регистры должна сохпянять вызывающая функция, а какие вызываемая.
Вот кратко и все.
E-mail: info@telesys.ru