-
Notifications
You must be signed in to change notification settings - Fork 1
Register allocation/reservation system #39
Copy link
Copy link
Open
Labels
compilerAnything about the compilerAnything about the compilerenhancementNew feature or requestNew feature or requestidea
Description
In C, register keyword can be used to hint to the compiler that the variable is used very heavily and should be stored in a register instead of local memory for optimization reasons. Same can be done in Corth. Instead of using a local memory, some heavily used variables can be directly stored in register. However, this requires several rewrites as there is currently no way of reserving or allocating registers.
Possible syntax:
// This is a very typical 'for-like' loop in Corth.
0 while dup len @64 < do let i in
i src array64.get i dst array64.set
i end inc end drop
// Changing i into a register would optimize the program a lot.
register i int in
0 set i
while get i len @64 < do
get i src array64.get get i dst array64.set
get i inc set i end
// It is very easy to detect 'get i inc set i' pattern and replace it with register increment instruction which would simplify
// it to only 1 CPU cycle.
end
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
compilerAnything about the compilerAnything about the compilerenhancementNew feature or requestNew feature or requestidea