[fpc-devel] Is there a way to make Register Allocation inside of Interrupt Service Routines more efficient when using inline-assembler?

Florian Klämpfl florian at freepascal.org
Mon Aug 22 21:52:37 CEST 2016


Am 21.08.2016 um 13:32 schrieb Michael Ring:
> Was getting high hopes for a moment...
> 
> @Charlie: the last point you mention, this optimization is already there. As long as I do not call a
> procedure and directly include inline assembler in the interrupt routine all is fine, only really
> used registers are in the list of registers that need to get saved and the interrupt handlers gets
> quite lean & efficient.
> 
> @Sergej: I just started wondering on usage of fp registers, when I call a routine that uses floating
> point I see that the fp registers are not marked as reserved by the compiler, what do you think?
> 
> The procedure below (test) uses $f0 and $f2 but they are not marked as allocated:
> 
>         # Register at,v0,v1,a0,a1,a2,a3,t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,ra allocated
>         jal     P$TEST_$$_TEST
>         nop
>         # Register at,v0,v1,a0,a1,a2,a3,t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,ra released
> 
> could this be a bug? (I have also modified tcpuparamanager.get_volatile_registers_fp to return [] so
> i'd expect to see $f0..$f19 pushed to stack but I see nothing)

Soft float activated?




More information about the fpc-devel mailing list