gtsocial-umbx

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

register.go (808B)


      1 package asm
      2 
      3 import (
      4 	"fmt"
      5 )
      6 
      7 // Register is the source or destination of most operations.
      8 type Register uint8
      9 
     10 // R0 contains return values.
     11 const R0 Register = 0
     12 
     13 // Registers for function arguments.
     14 const (
     15 	R1 Register = R0 + 1 + iota
     16 	R2
     17 	R3
     18 	R4
     19 	R5
     20 )
     21 
     22 // Callee saved registers preserved by function calls.
     23 const (
     24 	R6 Register = R5 + 1 + iota
     25 	R7
     26 	R8
     27 	R9
     28 )
     29 
     30 // Read-only frame pointer to access stack.
     31 const (
     32 	R10 Register = R9 + 1
     33 	RFP          = R10
     34 )
     35 
     36 // Pseudo registers used by 64bit loads and jumps
     37 const (
     38 	PseudoMapFD    = R1 // BPF_PSEUDO_MAP_FD
     39 	PseudoMapValue = R2 // BPF_PSEUDO_MAP_VALUE
     40 	PseudoCall     = R1 // BPF_PSEUDO_CALL
     41 	PseudoFunc     = R4 // BPF_PSEUDO_FUNC
     42 )
     43 
     44 func (r Register) String() string {
     45 	v := uint8(r)
     46 	if v == 10 {
     47 		return "rfp"
     48 	}
     49 	return fmt.Sprintf("r%d", v)
     50 }