Pseudo memory

Double / Pseudo Memory Bat

Here are the RTL expression types for describing access to machine registers and to main memory.

(reg:m n)For small values of the integer n (those that are less than FIRST_PSEUDO_REGISTER), this stands for a reference to machine register number n: a hard register. For larger values of n, it stands for a temporary value or pseudo register. The compiler's strategy is to generate code assuming an unlimited number of such pseudo registers, and later convert them into hard registers or into memory references.

m is the machine mode of the reference. It is necessary because machines can generally refer to each register in more than one mode. For example, a register may contain a full word but there may be instructions to refer to it as a half word or as a single byte, as well as instructions to refer to it as a floating point number of various precisions.

Even for a register that the machine can access in only one mode, the mode must always be specified.

The symbol FIRST_PSEUDO_REGISTER is defined by the machine description, since the number of hard registers on the machine is an invariant characteristic of the machine. Note, however, that not all of the machine registers must be general registers. All the machine registers that can be used for storage of data are given hard register numbers, even those that can be used only in certain instructions or can hold only certain types of data.

A hard register may be accessed in various modes throughout one function, but each pseudo register is given a natural mode and is accessed only in that mode. When it is necessary to describe an access to a pseudo register using a nonnatural mode, a subreg expression is used.

A reg expression with a machine mode that specifies more than one word of data may actually stand for several consecutive registers. If in addition the register number specifies a hardware register, then it actually represents several consecutive hardware registers starting with the specified one.

Each pseudo register number used in a function's RTL code is represented by a unique reg expression.

Some pseudo register numbers, those within the range of FIRST_VIRTUAL_REGISTER to LAST_VIRTUAL_REGISTER only appear during the RTL generation phase and are eliminated before the optimization phases. These represent locations in the stack frame that cannot be determined until RTL generation for the function has been completed. The following virtual register numbers are defined:

VIRTUAL_INCOMING_ARGS_REGNUMThis points to the first word of the incoming arguments passed on the stack. Normally these arguments are placed there by the caller, but the callee may have pushed some arguments that were previously passed in registers.

When RTL generation is complete, this virtual register is replaced by the sum of the register given by ARG_POINTER_REGNUM and the value of FIRST_PARM_OFFSET.

VIRTUAL_STACK_VARS_REGNUMIf FRAME_GROWS_DOWNWARD is defined to a nonzero value, this points to immediately above the first variable on the stack. Otherwise, it points to the first variable on the stack.

You might also like

Take This Test and Experience How False Memories Are Made
Take This Test and Experience How False Memories Are Made
BREAKING: "Neuroscientists Plant False Memories Brain"
BREAKING: "Neuroscientists Plant False Memories Brain"
MIT News, Planting False Memories In The Brain
MIT News, Planting False Memories In The Brain
Scientists Plant False Memories In Sleeping Mice
Scientists Plant False Memories In Sleeping Mice

Q&A

avatar
What is the definition of memory in connection with psychology?

The definition of memory in connection with psychology is based upon recalling information. This is done when remembering things that are learned, information that was retained such as a phone number, recalling information, and also recognition (a song lyric for example).

Copyright © . All Rights Reserved