Gast
#1344508
.MACRO PUSHER push ZL push ZH rcall pu pu: pop ZH;l pop ZL;h rjmp @0 .ENDMACRO .MACRO POPER rcall po po: pop ZH;l pop ZL;h rjmp @0 pop ZH pop ZL .ENDMACRO meinelieblingspushfunktion1: push meinlieblingsregister1 push meinlieblingsregister2 push meinlieblingsregister3 ;etc ;Muss hier immer stehen: ;----------------------- adiw ZL,3 push ZL push ZH ret meinelieblingspopfunktion1: pop meinlieblingsregister3 pop meinlieblingsregister2 pop meinlieblingsregister1 ;etc ;Muss hier immer stehen: ;----------------------- adiw ZL,3 push ZL push ZH ret Aufruf dann in einer Funktion: Funktion: PUSHER meinelieblingspushfunktion1: ;Code POPER meinelieblingspopfunktion1: ret Sinn macht es natuerlich nur, wenn man mehr als 6 Register weglegen will. Bei weniger ist der Overhead zu groß, zumindest muß man aber nicht so viel schreiben. Bei sehr großen Programmen, die vielleicht schon Speicherplatzprobleme haben, könnten diese Makros vielleicht wieder einige Bytes einsparen.