95Fermer97
Pen^2Le 28/10/2007 à 15:00
et avec du code auto modifié dans ce genre ?


	xdef _ti89
	xdef _nostub
		
	

; ---------------------------------
	
BSRS	MACRO ; func,retFunc
	move.b	#(\@suiteDuCode-\2-2),\2+1
	bra.s	\1
\@suiteDuCode:
	ENDM

RTSS	MACRO ; retFunc
\1	bra.s	*
	ENDM




BSRW	MACRO ; func,retFunc
	move.w	#(\@suiteDuCode-\2-2),\2+2
	bra.w	\1
\@suiteDuCode:
	ENDM
	

RTSW	MACRO ; retFunc
\1	bra.w	*+$FFE	; pour contrer l'optim forcée de bra.w * vers bra.s * avec les switchs par défaut #grrrr#
	ENDM
	
	
; ---------------------------------
	
	
	
	
_ti89:
_nostub:
;	bra.s	*
	BSRS func1,retFunc1
	BSRW func2,retFunc2
	rts





	ds.l	10
func1:
	move.l	#-1,($4c00+50*30+8).w
	RTSS	retFunc1




	ds.b	300
func2:
	move.l	#$FF00FF00,($4c00+49*30+8).w
	move.l	#$00FF00FF,($4c00+50*30+8).w
	move.l	#$FF00FF00,($4c00+51*30+8).w
	RTSW	retFunc2



END



Ça ne bouffe pas de registre du tout, et ça se contente d'un accès mémoire en écriture, ça devrait être mieux qu'un bsr+rts non ? confus
(à priori ça fonctionne, mais vu mes souvenirs, ça demande à être vérifié grin)



PS : par contre ça modifie les flags à cause du move, alors que bsr ne modifie rien...