31Close
FarewellOn the 2012-06-28 at 08:58pm
Kevin Kofler (./31) :
Cela dit, l'utilisation prévue n'est en général pas avantageuse, cf. -fomit-frame-pointer

pencil
Kevin Kofler (./31) :
n'importe quelle fonction peut les modifier à n'importe quel moment

D'un autre côté, si on veut de l'encapsulation, il faut pas faire de l'assembleur. A moins de programmer de manière complètement fonctionnelle, mais autant faire du C à ce moment-là. On perd sinon tout le bénéfice de la puissance de l'asm.
Kevin Kofler (./31) :
les fonctions récursives n'ont qu'une seule copie des variables etc.

Rien n'empêche d'utiliser un stack frame local à ce moment.

Cf là, l'évaluateur d'expression de mon assembleur, récursif évidemment :
;==================================================================
;	Eval
;------------------------------------------------------------------
; 	Evaluate an operand, an operator and an expression
;
;	input	a0	*expression
;		d0.l	operand
;		d1.w	operator
;	output	d0.l	value
;		a0	*first char after the expression
;	destroy	std
;------------------------------------------------------------------
;	Algo
;
;IMM Eval( IMM, OP, EXPR )
;
;Decompose( EXPR )					Create IMM2, OP2, EXPR2
;
;If OP2 == 0						No operator ?
;	OP( IMM, IMM2 )					So its just an operation do to
;Else
;	If OP >= OP2					Else if priority( OP1 ) > Priority( OP2 )
;		IMM3 = OP( IMM, IMM2 )			First perform the OP stuff
;		Eval( IMM3, OP2, EXPR2* )		Then evaluate the end of the expression
;	Else
;		OP( IMM, Eval( IMM2, OP2, EXPR2* ))	Else evaluate first the end of the expression,
;							then perform the OP stuff
;==================================================================

rah poutée faut que je m'y remette lovelovelove