OpenCores
URL https://opencores.org/ocsvn/ssbcc/ssbcc/trunk

Subversion Repositories ssbcc

[/] [ssbcc/] [trunk/] [core/] [9x8/] [asmDef_9x8.py] - Diff between revs 12 and 13

Show entire file | Details | Blame | View Log

Rev 12 Rev 13
Line 55... Line 55...
    return name in self.symbols['list'];
    return name in self.symbols['list'];
 
 
  def SymbolDict(self):
  def SymbolDict(self):
    """
    """
    Return a dict object usable by the eval function with the currently defines
    Return a dict object usable by the eval function with the currently defines
    symbols for constants, variables, memory lengths, stack lengths, and signal
    symbols for constants, variables, memory and I/O signal lengths, variable
    lengths.
    lengths, and stack lengths.
    """
    """
    t = dict();
    t = dict();
 
    # Add constants and variable locations.
    for ixSymbol in range(len(self.symbols['list'])):
    for ixSymbol in range(len(self.symbols['list'])):
      name = self.symbols['list'][ixSymbol];
      name = self.symbols['list'][ixSymbol];
      stype = self.symbols['type'][ixSymbol];
      stype = self.symbols['type'][ixSymbol];
      if stype == 'constant':
      if stype == 'constant':
        t[name] = self.symbols['body'][ixSymbol][0];
        t[name] = self.symbols['body'][ixSymbol][0];
      elif stype == 'variable':
      elif stype == 'variable':
        t[name] = self.symbols['body'][ixSymbol]['start'];
        t[name] = self.symbols['body'][ixSymbol]['start'];
 
    # Construct and add dictionary of sizes.
    sizes=dict();
    sizes=dict();
 
    def AddSize(name,value):
 
      if name in sizes:
 
        raise Exception('Program Bug:  Symbol "%s" multiply defined');
 
      sizes[name] = value;
    for name in self.memoryLength:
    for name in self.memoryLength:
      sizes[name] = self.memoryLength[name];
      AddSize(name,self.memoryLength[name]);
 
    for ix in [ix for ix in range(len(self.symbols['type'])) if self.symbols['type'][ix] == 'variable']:
 
      AddSize(self.symbols['list'][ix],len(self.symbols['body'][ix]['value']));
    for name in self.stackLength:
    for name in self.stackLength:
      sizes[name] = self.stackLength[name];
      AddSize(name,self.stackLength[name]);
    t['size'] = sizes;
    t['size'] = sizes;
 
    # That's all.
    return t;
    return t;
 
 
  ################################################################################
  ################################################################################
  #
  #
  # Configure the class for identifying and processing macros.
  # Configure the class for identifying and processing macros.
Line 352... Line 361...
    self.memoryLength[name] = length;
    self.memoryLength[name] = length;
 
 
  def RegisterStackLength(self,name,length):
  def RegisterStackLength(self,name,length):
    """
    """
    Record the length of the specified stack.\n
    Record the length of the specified stack.\n
    Note:  This is used to evaluate "size[name]" in "${...}" expressions.
    Note:  This is used to evaluate "size[name]" in "${...}" expressions.\n
 
    Note:  This differs from RegisterMemoryLength() in that the stack lengths
 
           can be larger than 256.
    """
    """
    self.stackLength[name] = length;
    self.stackLength[name] = length;
 
 
  ################################################################################
  ################################################################################
  #
  #

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.