Method and system for register allocation

   
   

A method, system, and apparatus for inserting spill code optimized for a complex instruction set computing (CISC) two-address machine, such as a machine utilizing an 80x86 processor is described. The spill code is generated in a single pass. Copy propagation and dead-code elimination are performed to remove unnecessary loads and stores from the stack. Instructions contained within the code block are processed in reverse order. Temporary variables are not extended to the point that they may become spilled by a register allocation procedure. A store to a stack location is inserted if the stack location is not dead, saving the use of a register. Memory operands are substituted when possible in place of load and store instructions on CISC machines. As the instructions are being processed, the number of occurrences and location of a temporary variable associated with a spilled variable within the instructions is maintained. The number of occurrences of the temporary variable is checked before a load is inserted into the new instructions as well as before a temporary variable is removed from use. If the variable has only occurred once then the memory operand of the temporary is used in place of the load of the temporary variable saving a load instruction. If the temporary variable is about to be removed from use and the temporary variable has only occurred one time then the variable is not stored saving a store instruction within the spill code.

Een methode, een systeem, en een apparaat om morserijcode op te nemen die voor complexe instructiereeks gegevensverwerkings (CISC) wordt geoptimaliseerd worden een twee-adres machine, zoals een machine die een bewerker 80x86 gebruikt beschreven. De morserijcode wordt geproduceerd in één enkele pas. De propagatie van het exemplaar en de dood-codeverwijdering worden uitgevoerd om onnodige ladingen en opslag uit de stapel te verwijderen. De instructies bevat binnen het codeblok worden verwerkt in omgekeerde orde. De tijdelijke variabelen worden niet uitgebreid tot het punt dat zij gemorst kunnen worden door een procedure van de registertoewijzing. Een opslag aan een stapelplaats wordt opgenomen als de stapelplaats niet dood is, bewarend het gebruik van een register. De operands van het geheugen worden gesubstitueerd wanneer mogelijk in plaats van lading en opslaginstructies op machines CISC. Aangezien de instructies worden verwerkt, wordt het aantal voorkomen en plaats van een tijdelijke variabele verbonden aan een gemorste variabele binnen de instructies gehandhaafd. Het aantal voorkomen van de tijdelijke variabele wordt gecontroleerd alvorens een lading in de nieuwe instructies wordt opgenomen evenals alvorens een tijdelijke variabele wordt verwijderd uit gebruik. Als de variabele slechts is voorgekomen zodra dan de geheugenoperand van de tijdelijke werkkracht in plaats van de lading van de tijdelijke variabele gebruikt wordt die een ladingsinstructie bewaart. Als de tijdelijke variabele uit gebruik op het punt staat worden verwijderd en de tijdelijke variabele slechts één keer toen is voorgekomen wordt de variabele niet opgeslagen bewarend een opslaginstructie binnen de morserijcode.

 
Web www.patentalert.com

< Operating system resource protection

< Media organization for distributed sending of media data

> Control object and user interface for controlling networked devices

> Priority mechanism for distributed sending of media data

~ 00143