best approach to move around registers bigger than word width?

Jonah B Graham ws@mars.drw.net
Tue Mar 26 05:26:00 GMT 2002


Hi.

I am working on porting GCC to a processor that has 16-bit data registers and 32-bit address registers. The address registers can only be saved and restored through the data registers. ALU operations can be performed on any 16-bit register.

To load an address register, you assign it a pair of data registers, and to save an address register, you save into a pair of data registers.

The overall question is, how do I explain that to GCC?

What I have tried is in (define_expand "movhi" ...) is to split the moves into lower and upper halves of the move, and then output two qi moves. The problem is that I cannot split somethings (like SYMBOL_REFS) into subregs (or rather I don't know how, gen_lowpart aborts when passed SYMBOL_REFS).

Any help would be highly appreciated.

Jonah
ws@mars.drw.net




More information about the Gcc mailing list