github.com/Rookout/GoSDK@v0.1.48/pkg/services/collection/registers/registers.go (about)

     1  // The MIT License (MIT)
     2  
     3  // Copyright (c) 2014 Derek Parker
     4  
     5  // Permission is hereby granted, free of charge, to any person obtaining a copy of
     6  // this software and associated documentation files (the "Software"), to deal in
     7  // the Software without restriction, including without limitation the rights to
     8  // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
     9  // the Software, and to permit persons to whom the Software is furnished to do so,
    10  // subject to the following conditions:
    11  
    12  // The above copyright notice and this permission notice shall be included in all
    13  // copies or substantial portions of the Software.
    14  
    15  // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    16  // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
    17  // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
    18  // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
    19  // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
    20  // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    21  
    22  package registers
    23  
    24  import "github.com/Rookout/GoSDK/pkg/services/instrumentation/dwarf/op"
    25  
    26  
    27  
    28  
    29  
    30  type Registers interface {
    31  	PC() uint64
    32  	SP() uint64
    33  	BP() uint64
    34  	TLS() uint64
    35  	
    36  	GAddr() (uint64, bool)
    37  	Get(int) (uint64, error)
    38  	Slice(floatingPoint bool) ([]Register, error)
    39  	
    40  	
    41  	Copy() (Registers, error)
    42  }
    43  
    44  
    45  type Register struct {
    46  	Name string
    47  	Reg  *op.DwarfRegister
    48  }
    49  
    50  
    51  
    52  func AppendUint64Register(regs []Register, name string, value uint64) []Register {
    53  	return append(regs, Register{name, op.DwarfRegisterFromUint64(value)})
    54  }
    55  
    56  
    57  
    58  func AppendBytesRegister(regs []Register, name string, value []byte) []Register {
    59  	return append(regs, Register{name, op.DwarfRegisterFromBytes(value)})
    60  }