LRDE Tiger Compiler
1.34a $Id: 7fef12e1f5fa43449d667a0eec1d837c40fc1202 $
|
Describes MIPS's registers. More...
#include <cpu.hh>
Public Member Functions | |
virtual size_t | word_size_get () const override |
The byte size of a memory's word. | |
virtual const temp::Temp & | fp_reg () const override |
Frame pointer. | |
virtual const temp::Temp & | sp_reg () const |
Stack pointer. | |
virtual const temp::Temp & | result_reg () const override |
Result register. | |
virtual const temp::Temp & | return_reg () const |
Return address. | |
const temp::Temp & | zero_reg () const |
Special register containing constant 0. | |
std::ostream & | dump (std::ostream &ostr) const |
Describing a CPU. | |
Ctor & dtor. | |
Cpu (const CpuLimits &limits) | |
Construct a Cpu. | |
Descriptors of this architecture. | |
virtual size_t | nb_regs () const |
The number of registers. | |
virtual const temp::TempMap & | tempmap_get () const |
Mapping from tc pseudos to hard registers. | |
virtual const temp::temp_list_type & | argument_regs () const |
Arguments-dedicated registers. | |
virtual const temp::temp_set_type & | caller_save_regs () const |
Caller save registers. | |
virtual const temp::temp_set_type & | callee_save_regs () const |
Callee save registers. | |
virtual const temp::temp_set_type & | special_regs () const |
Special registers (e.g., $fp, $sp, $zero etc.). | |
virtual temp::temp_set_type | registers_get () const |
The whole register set. |
Protected Member Functions | |
Register registers. | |
virtual void | argument_reg (const std::string &name) |
Argument dedicated register. | |
virtual void | caller_save_reg (const std::string &name) |
Caller save register. | |
virtual void | callee_save_reg (const std::string &name) |
Callee save register. | |
virtual void | special_reg (const temp::Temp &t) |
Special registers, unavailable for register allocaction. |
Protected Attributes | |
Register classes. | |
temp::temp_set_type | callee_save_registers_ |
Callee save registers. | |
temp::temp_set_type | caller_save_registers_ |
Caller save registers. | |
temp::temp_list_type | argument_registers_ |
Argument registers. | |
temp::temp_set_type | special_registers_ |
Remaining registers. | |
std::unique_ptr< temp::TempMap > | tempmap_ |
Mapping from pseudos to hard registers. |
Describes MIPS's registers.
target::mips::Cpu::Cpu | ( | const CpuLimits & | limits | ) |
Construct a Cpu.
Construct a Cpu (default).
A TempMap that adjusts the output to Nolimips: t42 -> $x42.
References target::CpuLimits::argument_max, target::Cpu::argument_reg(), target::CpuLimits::callee_save_max, target::Cpu::callee_save_reg(), target::CpuLimits::caller_save_max, target::Cpu::caller_save_reg(), astclone::clone(), misc::find(), fp_reg(), temp::Identifier< Traits_ >::prefix_get(), result_reg(), sp_reg(), target::Cpu::special_reg(), target::Cpu::tempmap_, temp::Identifier< Traits_ >::value_get(), and zero_reg().
|
protectedvirtualinherited |
|
virtualinherited |
Arguments-dedicated registers.
References target::Cpu::argument_registers_.
|
protectedvirtualinherited |
|
virtualinherited |
Callee save registers.
References target::Cpu::callee_save_registers_.
|
protectedvirtualinherited |
Caller save register.
References target::Cpu::caller_save_registers_.
Referenced by target::ia32::Cpu::Cpu(), and Cpu().
|
virtualinherited |
Caller save registers.
References target::Cpu::caller_save_registers_.
|
inherited |
Describing a CPU.
References target::Cpu::argument_registers_, target::Cpu::callee_save_registers_, target::Cpu::caller_save_registers_, misc::decendl(), misc::incendl(), target::Cpu::nb_regs(), REGS_PRINT, target::Cpu::special_registers_, and target::Cpu::tempmap_.
Referenced by target::operator<<().
|
overridevirtual |
|
virtualinherited |
The number of registers.
References target::Cpu::argument_registers_, target::Cpu::callee_save_registers_, target::Cpu::caller_save_registers_, and target::Cpu::special_registers_.
Referenced by target::Cpu::dump().
|
virtualinherited |
The whole register set.
References target::Cpu::argument_registers_, target::Cpu::callee_save_registers_, target::Cpu::caller_save_registers_, and target::Cpu::special_registers_.
|
overridevirtual |
|
virtual |
Return address.
|
virtual |
Stack pointer.
Referenced by Cpu().
|
protectedvirtualinherited |
Special registers, unavailable for register allocaction.
References target::Cpu::special_registers_.
Referenced by target::ia32::Cpu::Cpu(), and Cpu().
|
virtualinherited |
Special registers (e.g., $fp, $sp, $zero etc.).
References target::Cpu::special_registers_.
|
virtualinherited |
Mapping from tc pseudos to hard registers.
References target::Cpu::tempmap_.
|
overridevirtual |
The byte size of a memory's word.
Implements target::Cpu.
const temp::Temp & target::mips::Cpu::zero_reg | ( | ) | const |
Special register containing constant 0.
Referenced by Cpu().
|
protectedinherited |
Argument registers.
Referenced by target::Cpu::argument_reg(), target::Cpu::argument_regs(), target::Cpu::dump(), target::Cpu::nb_regs(), and target::Cpu::registers_get().
|
protectedinherited |
Callee save registers.
Referenced by target::Cpu::callee_save_reg(), target::Cpu::callee_save_regs(), target::Cpu::dump(), target::Cpu::nb_regs(), and target::Cpu::registers_get().
|
protectedinherited |
Caller save registers.
Referenced by target::Cpu::caller_save_reg(), target::Cpu::caller_save_regs(), target::Cpu::dump(), target::Cpu::nb_regs(), and target::Cpu::registers_get().
|
protectedinherited |
Remaining registers.
Referenced by target::Cpu::dump(), target::Cpu::nb_regs(), target::Cpu::registers_get(), target::Cpu::special_reg(), and target::Cpu::special_regs().
|
protectedinherited |
Mapping from pseudos to hard registers.
Referenced by Cpu(), target::Cpu::dump(), and target::Cpu::tempmap_get().