Цитата(SM @ Jun 14 2007, 05:51)

Беру и возвращаю структуру.
Т.е. Вам не надо задумываться о том, где эта структура лежит. Просто вернуть как будто по ссылке, а для С-компилера оно будет как-будто по значению. И волки сыты, и овцы целы.
Ну передача со структурой, также, как и с массивом, достаточно большой гемор, по-моему. В подпрограмме надо все адреса вычислять, получается много накладных расходов.
Цитата(Warlord @ Jun 14 2007, 04:46)

Вряд ли, ведь функция С может возвратить всего лишь одно значение.
Вот так я возвращаю ТРИ значения, см. фрагмент ниже
Код
; To call from C-program: pending=checkCan(int errors, int status)
_checkCan:
movl xar5,#CANAES
movl acc,xar5
mov *-sp[6],ah
mov *-sp[7],al
movl xar5,#CANARMP
movl acc,*xar5
Два аргумента, errors и status, возвращаются через стек, флаг - через асс. Причём, можно использовать где угодно внутри программы.
Одно пока непонятно, как автоматизировать вычисление положения аргументов в стеке, тогда можно было бы вызывать функции с разным числом аргументов.