In compiler optimization, register allocation is the process of assigning a large number of target program variables onto a small number of CPU registers. Register allocation can happen over a basic block (local register allocation), over a whole function/procedure (global register allocation), or across function boundaries traversed via call-graph (interprocedural register allocation). When done per function/procedure the calling convention may require insertion of save/restore around each call-site.

Property Value
dbo:abstract
  • In compiler optimization, register allocation is the process of assigning a large number of target program variables onto a small number of CPU registers. Register allocation can happen over a basic block (local register allocation), over a whole function/procedure (global register allocation), or across function boundaries traversed via call-graph (interprocedural register allocation). When done per function/procedure the calling convention may require insertion of save/restore around each call-site. (en)
  • In der Programmoptimierung bezeichnet die Registerzuteilung (engl. Register Allocation) den Prozess der Zuteilung einer großen Anzahl von Programmvariablen auf eine kleine Anzahl von Registern im Hauptprozessor. Das NP-vollständige Problem der Registerzuteilung und Auslagerung kann auf das Problem des Graphfärbens reduziert werden, was 1982 von Gregory Chaitin gezeigt wurde. (de)
  • Dans un compilateur, l'allocation de registres est une étape importante de la génération de code. Elle vise à choisir judicieusement dans quel registre du processeur seront enregistrées les variables durant l'exécution du programme que l'on compile. Les registres sont des mémoires internes au processeur, généralement capables de contenir un mot machine. Les opérations sur des valeurs rangées dans des registres sont plus rapides que celles sur des valeurs en mémoire vive, quand ce ne sont pas les seules possibles. Mais un processeur compte rarement plus de quelques dizaines de registres, bien trop peu pour toutes les variables d'un programme. Il est donc crucial de choisir avec pertinence les variables qui doivent résider dans les registres à chaque étape de l'exécution. Cela étant difficile dans les premières étapes de la compilation, on commence par faire comme si l'on disposait d'un nombre illimité de registres, puis l'on attribue à ces registres virtuels des registres réels ou des emplacements en mémoire. (fr)
  • レジスタ割り付け(レジスタわりつけ、英: Register allocation)は、プログラム内の多数の変数を少数のCPUレジスタに多重化するコンパイラ最適化技法のひとつである。その目標は、プログラムの実行速度を最大化すべく、なるべく多くのオペランドをレジスタに保持するようにすることである。レジスタ割り付けは基本的なブロックについて行う場合(ローカルレジスタ割り付け)と関数やプロシージャ全体について行う場合(グローバルレジスタ割り付け)がある。レジスタ割り当てとも呼ぶ。 プログラムは、多数の様々なデータを処理することが多い。しかし、CPUの多くはデータを保持するのに使えるレジスタ数は限られている。機械語のオペランドとしてメモリを指定できる場合でも、なるべくレジスタを使った方が高速化される。従って、処理に必要なデータを RAMとレジスタの間で入れ替えてやる必要がある。この操作を spill(スピル、あふれ)と呼ぶ。 レジスタの spill は、マシンが持っているレジスタ数以上の変数が同時に必要とされる場合に発生する。一般にメモリはレジスタよりも遅いため、spill にはコストがかかる。 (ja)
  • Registerallocatie is een onderdeel van het compileren van de broncode van een computerprogramma. Tijdens de registerallocatie-fase bepaalt de compiler hoe de registers in het uiteindelijke programma gebruikt worden. Omdat voor een processor de toegang tot een register relatief snel is vergeleken met de toegang tot het geheugen heeft het de voorkeur om tijdens de uitvoering van een programma de gegevens waarmee gewerkt wordt zo veel mogelijk in registers te hebben in plaats van in het geheugen. Het aantal registers op een processor is echter beperkt (oudere processors hadden soms slechts 4 of 8 registers ter beschikking van een programma). Het doel van registerallocatie is om op basis van gegevens over het te compileren programma een zo efficiënt mogelijk gebruik van registers te realiseren in het gecompileerde programma. (nl)
  • Wyciek rejestrów – proces przydzielania dużej liczby zmiennych danego programu do małej liczby rejestrów procesora. (pl)
  • Распределением регистров в процессе компиляции называется отображение множества большого числа переменных фрагмента компьютерной программы (виртуальных регистров промежуточного представления) на, как правило, небольшое множество физических регистров микропроцессора. Распределение регистров может выполняться в отдельно взятом базовом блоке (локальное распределение регистров) или во всей процедуре (глобальное распределение регистров). Как правило компьютерным программам приходится работать с большим количеством данных, однако большинство микропроцессоров поддерживает операции только на фиксированном числе небольших «ячеек», называемых регистрами. Некоторые процессоры позволяют использовать операнды, хранящиеся в памяти, однако обращение к регистрам происходит намного быстрее, чем обращение в память (даже с учетом того, что указанная область памяти может быть помещена в кэш). (ru)
dbo:wikiPageExternalLink
dbo:wikiPageID
  • 485122 (xsd:integer)
dbo:wikiPageLength
  • 41303 (xsd:integer)
dbo:wikiPageRevisionID
  • 984682522 (xsd:integer)
dbo:wikiPageWikiLink
dbp:wikiPageUsesTemplate
dct:subject
rdf:type
rdfs:comment
  • In compiler optimization, register allocation is the process of assigning a large number of target program variables onto a small number of CPU registers. Register allocation can happen over a basic block (local register allocation), over a whole function/procedure (global register allocation), or across function boundaries traversed via call-graph (interprocedural register allocation). When done per function/procedure the calling convention may require insertion of save/restore around each call-site. (en)
  • In der Programmoptimierung bezeichnet die Registerzuteilung (engl. Register Allocation) den Prozess der Zuteilung einer großen Anzahl von Programmvariablen auf eine kleine Anzahl von Registern im Hauptprozessor. Das NP-vollständige Problem der Registerzuteilung und Auslagerung kann auf das Problem des Graphfärbens reduziert werden, was 1982 von Gregory Chaitin gezeigt wurde. (de)
  • レジスタ割り付け(レジスタわりつけ、英: Register allocation)は、プログラム内の多数の変数を少数のCPUレジスタに多重化するコンパイラ最適化技法のひとつである。その目標は、プログラムの実行速度を最大化すべく、なるべく多くのオペランドをレジスタに保持するようにすることである。レジスタ割り付けは基本的なブロックについて行う場合(ローカルレジスタ割り付け)と関数やプロシージャ全体について行う場合(グローバルレジスタ割り付け)がある。レジスタ割り当てとも呼ぶ。 プログラムは、多数の様々なデータを処理することが多い。しかし、CPUの多くはデータを保持するのに使えるレジスタ数は限られている。機械語のオペランドとしてメモリを指定できる場合でも、なるべくレジスタを使った方が高速化される。従って、処理に必要なデータを RAMとレジスタの間で入れ替えてやる必要がある。この操作を spill(スピル、あふれ)と呼ぶ。 レジスタの spill は、マシンが持っているレジスタ数以上の変数が同時に必要とされる場合に発生する。一般にメモリはレジスタよりも遅いため、spill にはコストがかかる。 (ja)
  • Wyciek rejestrów – proces przydzielania dużej liczby zmiennych danego programu do małej liczby rejestrów procesora. (pl)
  • Dans un compilateur, l'allocation de registres est une étape importante de la génération de code. Elle vise à choisir judicieusement dans quel registre du processeur seront enregistrées les variables durant l'exécution du programme que l'on compile. (fr)
  • Registerallocatie is een onderdeel van het compileren van de broncode van een computerprogramma. Tijdens de registerallocatie-fase bepaalt de compiler hoe de registers in het uiteindelijke programma gebruikt worden. Het doel van registerallocatie is om op basis van gegevens over het te compileren programma een zo efficiënt mogelijk gebruik van registers te realiseren in het gecompileerde programma. (nl)
  • Распределением регистров в процессе компиляции называется отображение множества большого числа переменных фрагмента компьютерной программы (виртуальных регистров промежуточного представления) на, как правило, небольшое множество физических регистров микропроцессора. Распределение регистров может выполняться в отдельно взятом базовом блоке (локальное распределение регистров) или во всей процедуре (глобальное распределение регистров). (ru)
rdfs:label
  • Registerzuteilung (de)
  • Register allocation (en)
  • Allocation de registres (fr)
  • レジスタ割り付け (ja)
  • Registerallocatie (nl)
  • Wyciek rejestrów (pl)
  • Распределение регистров (ru)
rdfs:seeAlso
owl:sameAs
prov:wasDerivedFrom
foaf:isPrimaryTopicOf
is dbo:wikiPageDisambiguates of
is dbo:wikiPageRedirects of
is dbo:wikiPageWikiLink of
is foaf:primaryTopic of