Program routines normally requiring windowed register allocation using conventional assembly code generation in a compiler are examined for eligibility for a wrapper routine optimization procedure in which wrapper routine assembly code instructions are generated in response to the application of high level programming language instructions specifying routines. If not eligible, the compiler generates assembly code instructions in a conventional way, allocating windowed registers to each routine. If the routine is eligible for wrapper routine optimization, the routine is further examined to determine whether the routine includes tail routine calls only or calls within the body of the routine. If the former, the routine is examined to determine whether local stack usage is required. For a routine having tail routine calls only and a requirement of local stack usage, wrapper routine assembly code instructions of a first type are generated. If the routine includes tail calls only and no requirement for local storage, wrapper routine assembly code instructions of a second type are generated. If the routine incorporates one or more calls within the body thereof, the routine is further examined to determine whether a live register is required over any of the calls. If so, wrapper routine assembly code instructions of a third type are generated. If the routine incorporates calls within the body thereof and a live register is not required over any call, wrapper routine assembly code instructions of a fourth type are generated.

Οι ρουτίνες προγράμματος που απαιτούν κανονικά η κατανομή καταλόγων χρησιμοποιώντας τη συμβατική παραγωγή κώδικα συνελεύσεων σε έναν μεταγλωττιστή εξετάζονται για την επιλεξιμότητα για μια στερεότυπη διαδικασία βελτιστοποίησης περιτυλιγμάτων στην οποία οι στερεότυπες οδηγίες κώδικα συνελεύσεων περιτυλιγμάτων παράγονται σε απάντηση στην εφαρμογή των γλωσσικών οδηγιών προγραμματισμού υψηλού επιπέδου που διευκρινίζουν τις ρουτίνες. Εάν μη επιλέξιμος, ο μεταγλωττιστής παράγει τις οδηγίες κώδικα συνελεύσεων με έναν συμβατικό τρόπο, η διάθεση οι κατάλογοι σε κάθε ρουτίνα. Εάν η ρουτίνα είναι επιλέξιμη για τη στερεότυπη βελτιστοποίηση περιτυλιγμάτων, η ρουτίνα εξετάζεται περαιτέρω για να καθορίσει εάν η ρουτίνα περιλαμβάνει τις στερεότυπες κλήσεις ουρών μόνο ή τις κλήσεις μέσα στο σώμα της ρουτίνας. Εάν το πρώτο, η ρουτίνα εξετάζεται για να καθορίσει εάν η τοπική χρήση σωρών απαιτείται. Για έναν στερεότυπο έχοντας τις στερεότυπες κλήσεις ουρών μόνο και μια απαίτηση της τοπικής χρήσης σωρών, οι στερεότυπες οδηγίες κώδικα συνελεύσεων περιτυλιγμάτων ενός πρώτου τύπου παράγονται. Εάν η ρουτίνα δεν περιλαμβάνει την κλήση ουρών μόνο και καμία απαίτηση για την τοπική αποθήκευση, οι στερεότυπες οδηγίες κώδικα συνελεύσεων περιτυλιγμάτων ενός δεύτερου τύπου παράγονται. Εάν η ρουτίνα ενσωματώνει μια ή περισσότερες κλήσεις μέσα στο σώμα επ' αυτού, η ρουτίνα εξετάζεται περαιτέρω για να καθορίσει εάν ένας ζωντανός κατάλογος απαιτείται πέρα από οποιεσδήποτε από τις κλήσεις. Σε αυτή την περίπτωση, οι στερεότυπες οδηγίες κώδικα συνελεύσεων περιτυλιγμάτων ενός τρίτου τύπου παράγονται. Εάν η ρουτίνα ενσωματώνει τις κλήσεις μέσα στο σώμα επ' αυτού και ένας ζωντανός κατάλογος δεν απαιτείται πέρα από οποιαδήποτε κλήση, οι στερεότυπες οδηγίες κώδικα συνελεύσεων περιτυλιγμάτων ενός τέταρτου τύπου παράγονται.

 
Web www.patentalert.com

< (none)

< Software installation

> Automatic selection of a special mode of operation in multi-channel test equipment

> (none)

~ 00003