A89: Re: Re: evaluating expressions


[Prev][Next][Index][Thread]

A89: Re: Re: evaluating expressions




> 
> Hi!
> 
> > how can I evaluate an expression (a variable of the var-link) 
> > in an asm program? (and how to display the result?)
> > ex: x contains 2
> > y contains X^2+3
> > how to get 7 for y?
> 
> It is explained in the documentation of TIGCCLIB release 1.5.
> Basically (using C syntax):
> 
> push_parse_text("X^2+3");
> NG_rationalESI(top_estack);
> 
> In ASM:
> 
> pea expr(pc)
> jsr tios::push_parse_text
> move.l tios::top_estack,-(sp)
> jsr tios::NG_rationalESI
> lea (sp,8),sp
> ...
> expr: .ascii "X^2+3"
> dc.b 0
> 
> Now, the result is on the top of the estack (read in TIGCCLIB
> what is estack). You can retrieve the result by peeking estack
> directly, or by using various TIOS functions. For example,
> if you know in advance that the result is an unsigned short 
> integer, you can use estack_to_ushort. Using C syntax:
> 
> estack_to_ushort(top_estack,&var);
> 
> Using ASM:
> 
> pea var(pc)
> move.l tios::top_estack,-(sp)
> jsr tios::estack_to_ushort
> lea (sp,8),sp
> move.w var,d0
> ...
> var:dc.w 0
> 
> After this, d0.w will contain the result.
> 
> Happy?
> 
> Zeljko Juric
> 
> 

Hehe, yes, happy :)
I think I'll have to read some documentation do understand that :)
Thanks a lot! (and thanks for having given the asm equivalent)






References: