libera/#sicl - IRC Chatlog
Search
2:04:11
hayley
A few questions about code organisation of sorts: Which package should register locations be defined in? What package should helper functions for creating instructions (such as LOAD-FROM-STACK-INSTRUCTION) be in? Is there a nicer way to write out address offsets for loading and storing slots of objects?
2:05:26
hayley
I am thinking the first two should be moved to SICL-IR or a x86-64 specific package. SBCL has constants defined somewhere for object tags and slot offsets for the third.
2:11:17
hayley
(With respects to the first, they were first in MIR-to-LIR but now that package depends on SICL-REGISTER-ALLOCATION, creating a circular dependency. And it doesn't sound like it should be in any conversion pass anyway. Hence why it would be a better fit for another IR definitions package.)
3:06:31
beach
Registers are specific to an architecture, so I think MIR-to-LIR is probably the best package for those.
3:07:25
hayley
Functions that create specific instructions, such as loading from and storing to a stack slot.
3:08:48
hayley
Though I'd have to do something with the systems, as currently we would have a circular dependency between register allocation and MIR to LIR.
3:10:38
beach
Since the register-allocation system is also specific to an architecture, you could define the registers there.
3:11:13
beach
Or, you could eliminate the register-allocation package and put everything in MIR-to-LIR. I don't think it matters much.
3:11:43
hayley
The solution I had in mind was to create another system with register location definitions and helper functions, in order to break the dependency cycle and to have somewhere more natural for such definitions.
3:14:50
hayley
And then other information on the use of registers (such as the calling convention for example) would be removed from either system, so that it would be less of a hassle to make it portable with other target instruction sets.