#include "../include/Cache_OneLevel.h"

namespace environment {
namespace cache {
namespace cache_onelevel {

  Address Cache_OneLevel::translate_address (uint32_t address)
  {
    Address  address_translated;
    uint32_t shift;
    
    address_translated.offset  = (address & ((uint32_t)-1 >> (32-(size_address.offset          ))));
    address                   -= address_translated.offset;
    shift                      = size_address.offset;
    address_translated.familly = (address & ((uint32_t)-1 >> (32-(size_address.familly + shift))))>>shift;
    address                   -= address_translated.familly;
    shift                     += size_address.familly;
    address_translated.tag     = (address & ((uint32_t)-1 >> (32-(size_address.tag     + shift))))>>shift;
    
    return address_translated;
  }

};
};
};
