simulavr  1.1.0
ThreeLevelStack Class Reference

Implements a stack with 3 levels deep (used as returnstack by ATtiny15 an other) More...

#include <hwstack.h>

Inheritance diagram for ThreeLevelStack:

Public Member Functions

 ThreeLevelStack (AvrDevice *core)
 
 ~ThreeLevelStack ()
 
virtual void Push (unsigned char val)
 Pushs one byte to stack. More...
 
virtual unsigned char Pop ()
 Pops one byte from stack. More...
 
virtual void PushAddr (unsigned long addr)
 Pushs a address to stack. More...
 
virtual unsigned long PopAddr ()
 Pops a address from stack. More...
 
virtual void Reset ()
 Resets stack pointer and listener table. More...
 
- Public Member Functions inherited from HWStack
 HWStack (AvrDevice *core)
 Creates a stack instance. More...
 
virtual ~HWStack ()
 
unsigned long GetStackPointer () const
 Returns current stack pointer value. More...
 
void SetStackPointer (unsigned long val)
 Sets current stack pointer value (used by GDB interface) More...
 
void SetReturnPoint (unsigned long stackPointer, Funktor *listener)
 Subscribes a Listener for a return address. More...
 
void ResetLowestStackpointer (void)
 Sets lowest stack marker back to current stackpointer. More...
 
unsigned long GetLowestStackpointer (void)
 Gets back the lowest stack pointer (for measuring stack usage) More...
 
- Public Member Functions inherited from TraceValueRegister
 TraceValueRegister (TraceValueRegister *parent, const std::string &name)
 Create a TraceValueRegister, with a scope prefix built on parent scope + name. More...
 
 TraceValueRegister ()
 Create a TraceValueRegister, with a empty scope name, single device application. More...
 
virtual ~TraceValueRegister ()
 
const std::string GetTraceValuePrefix (void)
 Returns the scope prefix. More...
 
const std::string GetScopeName (void)
 Returns the scope name. More...
 
void RegisterTraceValue (TraceValue *t)
 Registers a TraceValue for this register. More...
 
void UnregisterTraceValue (TraceValue *t)
 Unregisters a TraceValue, remove it from register. More...
 
TraceValueRegisterGetScopeGroupByName (const std::string &name)
 Get a here registered TraceValueRegister by it's name. More...
 
virtual TraceValueGetTraceValueByName (const std::string &name)
 Get a here registered TraceValue by it's name. More...
 
TraceValueRegisterFindScopeGroupByName (const std::string &name)
 Seek for a TraceValueRegister by it's name. More...
 
TraceValueFindTraceValueByName (const std::string &name)
 Seek for a TraceValue by it's name. More...
 
TraceSetGetAllTraceValues (void)
 Get all here registered TraceValue's only (not with descending values) More...
 
TraceSetGetAllTraceValuesRecursive (void)
 Get all here registered TraceValue's with descending values. More...
 

Protected Attributes

unsigned long * stackArea
 
- Protected Attributes inherited from HWStack
AvrDevicecore
 Link to device. More...
 
uint32_t stackPointer
 current value of stack pointer More...
 
uint32_t lowestStackPointer
 marker: lowest stackpointer used by program More...
 
std::multimap< unsigned long, Funktor * > returnPointList
 Maps adresses to listeners for return addresses. More...
 

Additional Inherited Members

- Public Attributes inherited from HWStack
ThreadList m_ThreadList
 
- Protected Member Functions inherited from HWStack
void CheckReturnPoints ()
 Run functions registered for current stack address and delete them. More...
 
- Protected Member Functions inherited from TraceValueRegister
virtual size_t _tvr_getValuesCount (void)
 Get the count of all TraceValues, that are registered here and descending. More...
 
virtual void _tvr_insertTraceValuesToSet (TraceSet &t)
 Insert all TraceValues into TraceSet, that registered here and descending. More...
 

Detailed Description

Implements a stack with 3 levels deep (used as returnstack by ATtiny15 an other)

Definition at line 159 of file hwstack.h.

Constructor & Destructor Documentation

◆ ThreeLevelStack()

ThreeLevelStack::ThreeLevelStack ( AvrDevice core)

Definition at line 194 of file hwstack.cpp.

References avr_new, Reset(), stackArea, HWStack::stackPointer, and trace_direct().

◆ ~ThreeLevelStack()

ThreeLevelStack::~ThreeLevelStack ( )

Definition at line 202 of file hwstack.cpp.

References avr_free(), and stackArea.

Member Function Documentation

◆ Pop()

unsigned char ThreeLevelStack::Pop ( )
virtual

Pops one byte from stack.

Implements HWStack.

Definition at line 216 of file hwstack.cpp.

References avr_error.

◆ PopAddr()

unsigned long ThreeLevelStack::PopAddr ( )
virtual

Pops a address from stack.

Implements HWStack.

Definition at line 233 of file hwstack.cpp.

References avr_warning, stackArea, and HWStack::stackPointer.

◆ Push()

void ThreeLevelStack::Push ( unsigned char  val)
virtual

Pushs one byte to stack.

Implements HWStack.

Definition at line 212 of file hwstack.cpp.

References avr_error.

◆ PushAddr()

void ThreeLevelStack::PushAddr ( unsigned long  addr)
virtual

Pushs a address to stack.

Implements HWStack.

Definition at line 221 of file hwstack.cpp.

References avr_warning, HWStack::lowestStackPointer, stackArea, and HWStack::stackPointer.

◆ Reset()

void ThreeLevelStack::Reset ( void  )
virtual

Resets stack pointer and listener table.

Reimplemented from HWStack.

Definition at line 206 of file hwstack.cpp.

References HWStack::lowestStackPointer, HWStack::returnPointList, and HWStack::stackPointer.

Referenced by ThreeLevelStack().

Member Data Documentation

◆ stackArea

unsigned long* ThreeLevelStack::stackArea
protected

Definition at line 162 of file hwstack.h.

Referenced by PopAddr(), PushAddr(), ThreeLevelStack(), and ~ThreeLevelStack().


The documentation for this class was generated from the following files: