Coverage for /Syzygy/assm/register.h

CoverageLines executed / instrumented / missingexe / inst / missLanguageGroup
0.0%0037.C++source

Line-by-line coverage:

   1    :  // Copyright 2012 Google Inc. All Rights Reserved.
   2    :  //
   3    :  // Licensed under the Apache License, Version 2.0 (the "License");
   4    :  // you may not use this file except in compliance with the License.
   5    :  // You may obtain a copy of the License at
   6    :  //
   7    :  //     http://www.apache.org/licenses/LICENSE-2.0
   8    :  //
   9    :  // Unless required by applicable law or agreed to in writing, software
  10    :  // distributed under the License is distributed on an "AS IS" BASIS,
  11    :  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12    :  // See the License for the specific language governing permissions and
  13    :  // limitations under the License.
  14    :  //
  15    :  // This file declares utility constants for dealing with registers. Clients of
  16    :  // assembler and BB assembler shouldn't need to look beyond here. If you are
  17    :  // implementing a transform or analysis that cares about the details of
  18    :  // registers then you can find more details in register_internal.h.
  19    :  
  20    :  #ifndef SYZYGY_ASSM_REGISTER_H_
  21    :  #define SYZYGY_ASSM_REGISTER_H_
  22    :  
  23    :  #include "syzygy/assm/register_internal.h"
  24    :  
  25  m :  namespace assm {
  26    :  
  27    :  // Some utility constants.
  28  m :  static const size_t kRegister8Count = kRegister8Max - kRegister8Min;
  29  m :  static const size_t kRegister16Count = kRegister16Max - kRegister16Min;
  30  m :  static const size_t kRegister32Count = kRegister32Max - kRegister32Min;
  31  m :  static const size_t kRegisterCount = kRegisterMax - kRegisterMin;
  32    :  
  33    :  // An array of all registers, sorted by their RegisterId.
  34  m :  extern const Register kRegisters[kRegisterCount];
  35    :  
  36    :  // Slices of kRegisters, by register size. These actually refer to the same
  37    :  // underlying data.
  38  m :  extern const Register8 (&kRegisters8)[kRegister8Count];
  39  m :  extern const Register16 (&kRegisters16)[kRegister16Count];
  40  m :  extern const Register32 (&kRegisters32)[kRegister32Count];
  41    :  
  42    :  // Convenience constants for the 8-bit x86 registers.
  43  m :  extern const Register8& al;
  44  m :  extern const Register8& cl;
  45  m :  extern const Register8& dl;
  46  m :  extern const Register8& bl;
  47  m :  extern const Register8& ah;
  48  m :  extern const Register8& ch;
  49  m :  extern const Register8& dh;
  50  m :  extern const Register8& bh;
  51    :  
  52    :  // Convenience constants for the 16-bit x86 registers.
  53  m :  extern const Register16& ax;
  54  m :  extern const Register16& cx;
  55  m :  extern const Register16& dx;
  56  m :  extern const Register16& bx;
  57  m :  extern const Register16& sp;
  58  m :  extern const Register16& bp;
  59  m :  extern const Register16& si;
  60  m :  extern const Register16& di;
  61    :  
  62    :  // Convenience constants for the 32-bit x86 registers.
  63  m :  extern const Register32& eax;
  64  m :  extern const Register32& ecx;
  65  m :  extern const Register32& edx;
  66  m :  extern const Register32& ebx;
  67  m :  extern const Register32& esp;
  68  m :  extern const Register32& ebp;
  69  m :  extern const Register32& esi;
  70  m :  extern const Register32& edi;
  71    :  
  72    :  // Utility functions for casting between registers at differing precisions. This
  73    :  // is only safe to call if the object is of the requested derived type.
  74    :  // @returns true if the conversion is possible, false otherwise.
  75  m :  const Register8& CastAsRegister8(const Register& reg);
  76  m :  const Register16& CastAsRegister16(const Register& reg);
  77  m :  const Register32& CastAsRegister32(const Register& reg);
  78    :  
  79  m :  }  // namespace assm
  80    :  
  81    :  #endif  // SYZYGY_ASSM_REGISTER_H_

Coverage information generated Fri Jul 29 11:00:21 2016.