This is so much more complicated than I imagined. I guess it stems from the maturity of what you are doing vs what I am doing. I am writing a toy program to execute toy programs on a thought experiment of a processor. This has all the warts of the real deal. Did you overload the ‘%’ and ‘^’ operators? Is it wise or prudent to ask?
One nagging question: you said that it is only one bundle, but I see data dependencies within the bundle. The call0 uses the result of the lea, no? Am I missing something? Is it that the logical belt state changes at the end of each phase? That’s going to change what I was doing.