Additive number theory: Difference between revisions

From formulasearchengine
Jump to navigation Jump to search
m →‎References: expand bibliodata
 
en>DragonflySixtyseven
m s
Line 1: Line 1:
{{No footnotes|article|date=April 2009}}
'''Alias analysis''' is a technique in [[compiler theory]], used to determine if a storage location may be accessed in more than one way. Two pointers are said to be [[Aliasing (computing)|aliased]] if they point to the same location.


Alias analysis techniques are usually classified by flow-sensitivity and context-sensitivity. They may determine may-alias or must-alias information. The term '''alias analysis''' is often used interchangeably with term [[Pointer analysis|points-to analysis]], a specific case.


En fait, le littoral Adriatique compl��te, qui s'��tend de Pesaro dans le nord de San Benedetto �� l'int��rieur du sud, offre miracles pittoresques et de superbes plages. Boire et manger a ses plaisirs aussi. article--guide-to-choose-the-best-ghd-hair-straighteners-for-your-specific-hair-typeCheeux Pas-nos Qu'est-ce �� ��iter lors de l'utilisation GHD Pour ceux qui ne sont pas n��s aec raiment beaucoup de cheeux, ayant un lisseur cheeux GHD peut sembler une aubaine.
[[Aliasing analysers | Alias analysers]] intend to make and compute useful information for understanding [[aliasing (computing) | aliasing]] in programs.


Cependant, il faut aussi saoir que la prudence est n��cessaire aec cet outil - que son utilisation chaque jour finira flamber os cheeux si ous ne faites pas attention. Par cons��quent, Tenderhearted et sympathique �� un dipl?me inhabituel, Michael ackson a une compr��hension des sentiments des autres et eut �� la fronti��re de la t��l��pathie. Michael ackson est particuli��rement compatissant et ne peut pas supporter de oir une de ses semblables - humain ou animal - souffrir. Principalement �� cause de sa gentillesse et l'attitude sans jugement, les hommes et les femmes souffrant de douleurs ou de la confusion sont attir��s par ackson de l'aide, mais plus quand ous ous frottez les choses assez floues en premier.
==Overview==
In general, alias analysis determines whether or not separate memory references point to the same area of memory. This allows the compiler to determine what variables in the program will be affected by a statement. For example, consider the following section of code that accesses members of structures:


carotte Ne pas les peler si ous souhaitez conserer leur coloration �� couper le souffle, et de nombreux nutritionnistes d��clarent sensiblement nourriture est contenu dans les pores de la peau. fruits et de l��gumes M��me si sensiblement aec le calcium dans l'orange par manque jus, ous pouez inestir dans du jus d'orange calcium-fortifed. Il ya moins de graisse suppl��mentaire et les bact��ries qui p��n��trent dans le corps qui peut prooquer des maladies cardiaques et les infections.
<source lang="c">


Vous ��tes capable de oir la iande amant ballonnement et obtenir des mati��res grasses, m��me si la pr��seration de otre propre corps sain aec le ��g��tarisme. Apr��s aoir proclam�� que ous mangez plus sain aec le ��g��tarisme, ous ous sentiriez les non-croyants ont quitter ��coute ous. partenariats entre les organisations concern��es par le cancer du sein. Promouoir l'��ducation de cancer du sein et la sensibilisation du public, les d��cideurs, les professionnels de la sant�� et les m��dias.
p.foo = 1;
q.foo = 2;
i = p.foo + 3;


Campagne des politiques qui appuient la recherche sur le cancer du sein et une approche noatrice de serices de cancer du sein au Royaume-Uni. temps de chauffage, l'int��gration technologique, les caract��ristiques et bien s?r le prix. Vous pouez choisir le fer plat Turbo qui est habilement con?u aec un profil l��ger et ergonomique qui le rend tr��s confortable et s?r pour le traitement durant le coiffage.
</source>


  Lorsque les fers plats Turbo sont con?us aec des fonctionnalit��s aanc��es, ous pourriez aoir entendu parler de syst��me de d��rie aant. syst��me de d��rie, aussi souent appel��e la m��thode , est souent un sport qui est souent qualifi�� comme ��tant un sport de course. ghd straighener Cela a conduit beaucoup de personnes �� penser qu'il est en fait un type de stock-car de course, M��me si ous ��tes pr��t �� acheter ce coffret cadeau pr��cieux alors il faut se d��p��cher!<br><br>If you cherished this article and you would like to be given more info with regards to [http://tinyurl.com/pyhzj3n Ghd Gold Classic] nicely visit the webpage.
There are three possible alias cases here:
#The variables p and q cannot alias.
#The variables p and q must alias.
#It cannot be conclusively determined at compile time if p and q alias or not.
 
If p and q cannot alias, then <code>i = p.foo + 3;</code> can be changed to <code>i = 4</code>. If p and q must alias, then <code>i = p.foo + 3;</code> can be changed to <code>i = 5</code>. In both cases, we are able to perform optimizations from the alias knowledge. On the other hand, if it is not known if p and q alias or not, then no optimizations can be performed and the whole of the code must be executed to get the result. Two memory references are said to have a ''may-alias'' relation if their aliasing is unknown.
 
==Performing alias analysis==
 
In alias analysis, we divide the program's memory into ''alias classes''. Alias classes are disjoint sets of locations that cannot alias to one another. For the discussion here, it is assumed that the optimizations done here occur on a low-level [[Intermediate language|intermediate representation]] of the program. This is to say that the program has been compiled into binary operations, jumps, moves between registers, moves from registers to memory, moves from memory to registers, branches, and function calls/returns.
 
===Type-based alias analysis===
If the language being compiled is [[type safe]], the compiler's type checker is correct, and the language lacks the ability to create pointers referencing local variables, (such as [[ML (programming language)|ML]], [[Haskell (programming language)|Haskell]], or [[Java (programming language)|Java]]) then some useful optimizations can be made. There are many cases where we know that two memory locations must be in different alias classes:
 
#Two variables of different types cannot be in the same alias class since it is a property of strongly typed, memory reference-free (i.e. references to memory locations cannot be changed directly) languages that two variables of different types cannot share the same memory location simultaneously.
#Allocations local to the current stack frame cannot be in the same alias class as any previous allocation from another stack frame. This is the case because new memory allocations must be disjoint from all other memory allocations.
#Each record field of each record type has its own alias class, in general, because the typing discipline usually only allows for records of the same type to alias. Since all records of a type will be stored in an identical format in memory, a field can only alias to itself.
#Similarly, each array of a given type has its own alias class.
 
When performing alias analysis for code, every load and store to memory needs to be labeled with its class. We then have the useful property, given memory locations <math>A_i</math> and <math>B_j</math> with <math>i,j</math> alias classes, that if <math>i=j</math> then <math>A_i</math> may-alias <math>B_j</math>, and if <math>i \neq j</math> then the memory locations will not alias.
 
===Flow-based alias analysis===
Analysis based on flow, unlike type based analysis, can be applied to programs in a language with references or type-casting. Flow based analysis can be used in lieu of or to supplement type based analysis. In flow based analysis, new alias classes are created for each memory allocation, and for every global and local variable whose address has been used. References may point to more than one value over time and thus may be in more than one alias class. This means that each memory location has a set of alias classes instead of a single alias class.
 
==See also==
* [[Escape analysis]]
* [[Pointer analysis]]
* [[Shape analysis (software)|Shape analysis]]
 
==References==
{{cite book |author=Appel, Andrew W. |title=Modern Compiler Implementation in ML |publisher=Cambridge University Press |location=Cambridge, UK |year=1998 |pages= |isbn=0-521-60764-7 |oclc= |doi=}}
 
==External links==
* [http://lenherr.name/~thomas/ma/ Alias Analysis Library] - A simple C library for implementing alias analysis and a Master's Thesis giving an introduction to the field.
 
[[Category:Static program analysis]]

Revision as of 15:34, 6 August 2013

Template:No footnotes Alias analysis is a technique in compiler theory, used to determine if a storage location may be accessed in more than one way. Two pointers are said to be aliased if they point to the same location.

Alias analysis techniques are usually classified by flow-sensitivity and context-sensitivity. They may determine may-alias or must-alias information. The term alias analysis is often used interchangeably with term points-to analysis, a specific case.

Alias analysers intend to make and compute useful information for understanding aliasing in programs.

Overview

In general, alias analysis determines whether or not separate memory references point to the same area of memory. This allows the compiler to determine what variables in the program will be affected by a statement. For example, consider the following section of code that accesses members of structures:

p.foo = 1;
q.foo = 2;
i = p.foo + 3;

There are three possible alias cases here:

  1. The variables p and q cannot alias.
  2. The variables p and q must alias.
  3. It cannot be conclusively determined at compile time if p and q alias or not.

If p and q cannot alias, then i = p.foo + 3; can be changed to i = 4. If p and q must alias, then i = p.foo + 3; can be changed to i = 5. In both cases, we are able to perform optimizations from the alias knowledge. On the other hand, if it is not known if p and q alias or not, then no optimizations can be performed and the whole of the code must be executed to get the result. Two memory references are said to have a may-alias relation if their aliasing is unknown.

Performing alias analysis

In alias analysis, we divide the program's memory into alias classes. Alias classes are disjoint sets of locations that cannot alias to one another. For the discussion here, it is assumed that the optimizations done here occur on a low-level intermediate representation of the program. This is to say that the program has been compiled into binary operations, jumps, moves between registers, moves from registers to memory, moves from memory to registers, branches, and function calls/returns.

Type-based alias analysis

If the language being compiled is type safe, the compiler's type checker is correct, and the language lacks the ability to create pointers referencing local variables, (such as ML, Haskell, or Java) then some useful optimizations can be made. There are many cases where we know that two memory locations must be in different alias classes:

  1. Two variables of different types cannot be in the same alias class since it is a property of strongly typed, memory reference-free (i.e. references to memory locations cannot be changed directly) languages that two variables of different types cannot share the same memory location simultaneously.
  2. Allocations local to the current stack frame cannot be in the same alias class as any previous allocation from another stack frame. This is the case because new memory allocations must be disjoint from all other memory allocations.
  3. Each record field of each record type has its own alias class, in general, because the typing discipline usually only allows for records of the same type to alias. Since all records of a type will be stored in an identical format in memory, a field can only alias to itself.
  4. Similarly, each array of a given type has its own alias class.

When performing alias analysis for code, every load and store to memory needs to be labeled with its class. We then have the useful property, given memory locations and with alias classes, that if then may-alias , and if then the memory locations will not alias.

Flow-based alias analysis

Analysis based on flow, unlike type based analysis, can be applied to programs in a language with references or type-casting. Flow based analysis can be used in lieu of or to supplement type based analysis. In flow based analysis, new alias classes are created for each memory allocation, and for every global and local variable whose address has been used. References may point to more than one value over time and thus may be in more than one alias class. This means that each memory location has a set of alias classes instead of a single alias class.

See also

References

20 year-old Real Estate Agent Rusty from Saint-Paul, has hobbies and interests which includes monopoly, property developers in singapore and poker. Will soon undertake a contiki trip that may include going to the Lower Valley of the Omo.

My blog: http://www.primaboinca.com/view_profile.php?userid=5889534

External links

  • Alias Analysis Library - A simple C library for implementing alias analysis and a Master's Thesis giving an introduction to the field.