The invention describes a method for executing structured symbolic
machine code on a
microprocessor. Said structured symbolic
machine code contains a set of one or more regions, where each of said regions contains symbolic
machine code containing, in addition to the proper instructions, information about the symbolic variables, the symbolic constants, the
branch tree, pointers and functions arguments used within each of said regions. This information is fetched by the
microprocessor from the instruction cache and stored into dedicated memories before the proper instructions of each region are fetched and executed. Said information is used by the
microprocessor in order to improve the
degree of parallelism achieved during
instruction scheduling and execution. Among other purposes, said information allows the microprocessor to perform so-called speculative
branch prediction. Speculative
branch prediction does branch prediction along a branch path containing several dependent branches in the shortest time possible (in only a few
clock cycles) without having to wait for branches to resolve. This is a key issue which allows to apply region scheduling in practice, e.g. treegion scheduling, where
machine code must be fetched and speculatively executed from the trace having highest probability or confidence among several traces. This allows to use the computation resources (e.g. the FUs) of the microprocessor in the most efficient way. Finally, said information allows to re-execute instructions in the right order and to overwrite wrong data with the correct ones when miss-predictions occur.