github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/cmd/internal/obj/wasm/a.out.go (about)

     1  // Copyright 2018 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package wasm
     6  
     7  import "github.com/shogo82148/std/cmd/internal/obj"
     8  
     9  const (
    10  	/* mark flags */
    11  	DONE          = 1 << iota
    12  	PRESERVEFLAGS
    13  )
    14  
    15  /*
    16   *	wasm
    17   */
    18  const (
    19  	AGet = obj.ABaseWasm + obj.A_ARCHSPECIFIC + iota
    20  	ASet
    21  	ATee
    22  	ANot
    23  
    24  	AUnreachable
    25  	ANop
    26  	ABlock
    27  	ALoop
    28  	AIf
    29  	AElse
    30  
    31  	AEnd
    32  	ABr
    33  	ABrIf
    34  	ABrTable
    35  	// ACall and AReturn are WebAssembly instructions. obj.ACALL and obj.ARET are higher level instructions
    36  	// with Go semantics, e.g. they manipulate the Go stack on the linear memory.
    37  	AReturn
    38  	ACall
    39  	ACallIndirect
    40  
    41  	ADrop
    42  	ASelect
    43  
    44  	ALocalGet
    45  	ALocalSet
    46  	ALocalTee
    47  	AGlobalGet
    48  	AGlobalSet
    49  
    50  	AI32Load
    51  	AI64Load
    52  	AF32Load
    53  	AF64Load
    54  	AI32Load8S
    55  	AI32Load8U
    56  	AI32Load16S
    57  	AI32Load16U
    58  	AI64Load8S
    59  	AI64Load8U
    60  	AI64Load16S
    61  	AI64Load16U
    62  	AI64Load32S
    63  	AI64Load32U
    64  	AI32Store
    65  	AI64Store
    66  	AF32Store
    67  	AF64Store
    68  	AI32Store8
    69  	AI32Store16
    70  	AI64Store8
    71  	AI64Store16
    72  	AI64Store32
    73  	ACurrentMemory
    74  	AGrowMemory
    75  
    76  	AI32Const
    77  	AI64Const
    78  	AF32Const
    79  	AF64Const
    80  
    81  	AI32Eqz
    82  	AI32Eq
    83  	AI32Ne
    84  	AI32LtS
    85  	AI32LtU
    86  	AI32GtS
    87  	AI32GtU
    88  	AI32LeS
    89  	AI32LeU
    90  	AI32GeS
    91  	AI32GeU
    92  
    93  	AI64Eqz
    94  	AI64Eq
    95  	AI64Ne
    96  	AI64LtS
    97  	AI64LtU
    98  	AI64GtS
    99  	AI64GtU
   100  	AI64LeS
   101  	AI64LeU
   102  	AI64GeS
   103  	AI64GeU
   104  
   105  	AF32Eq
   106  	AF32Ne
   107  	AF32Lt
   108  	AF32Gt
   109  	AF32Le
   110  	AF32Ge
   111  
   112  	AF64Eq
   113  	AF64Ne
   114  	AF64Lt
   115  	AF64Gt
   116  	AF64Le
   117  	AF64Ge
   118  
   119  	AI32Clz
   120  	AI32Ctz
   121  	AI32Popcnt
   122  	AI32Add
   123  	AI32Sub
   124  	AI32Mul
   125  	AI32DivS
   126  	AI32DivU
   127  	AI32RemS
   128  	AI32RemU
   129  	AI32And
   130  	AI32Or
   131  	AI32Xor
   132  	AI32Shl
   133  	AI32ShrS
   134  	AI32ShrU
   135  	AI32Rotl
   136  	AI32Rotr
   137  
   138  	AI64Clz
   139  	AI64Ctz
   140  	AI64Popcnt
   141  	AI64Add
   142  	AI64Sub
   143  	AI64Mul
   144  	AI64DivS
   145  	AI64DivU
   146  	AI64RemS
   147  	AI64RemU
   148  	AI64And
   149  	AI64Or
   150  	AI64Xor
   151  	AI64Shl
   152  	AI64ShrS
   153  	AI64ShrU
   154  	AI64Rotl
   155  	AI64Rotr
   156  
   157  	AF32Abs
   158  	AF32Neg
   159  	AF32Ceil
   160  	AF32Floor
   161  	AF32Trunc
   162  	AF32Nearest
   163  	AF32Sqrt
   164  	AF32Add
   165  	AF32Sub
   166  	AF32Mul
   167  	AF32Div
   168  	AF32Min
   169  	AF32Max
   170  	AF32Copysign
   171  
   172  	AF64Abs
   173  	AF64Neg
   174  	AF64Ceil
   175  	AF64Floor
   176  	AF64Trunc
   177  	AF64Nearest
   178  	AF64Sqrt
   179  	AF64Add
   180  	AF64Sub
   181  	AF64Mul
   182  	AF64Div
   183  	AF64Min
   184  	AF64Max
   185  	AF64Copysign
   186  
   187  	AI32WrapI64
   188  	AI32TruncF32S
   189  	AI32TruncF32U
   190  	AI32TruncF64S
   191  	AI32TruncF64U
   192  	AI64ExtendI32S
   193  	AI64ExtendI32U
   194  	AI64TruncF32S
   195  	AI64TruncF32U
   196  	AI64TruncF64S
   197  	AI64TruncF64U
   198  	AF32ConvertI32S
   199  	AF32ConvertI32U
   200  	AF32ConvertI64S
   201  	AF32ConvertI64U
   202  	AF32DemoteF64
   203  	AF64ConvertI32S
   204  	AF64ConvertI32U
   205  	AF64ConvertI64S
   206  	AF64ConvertI64U
   207  	AF64PromoteF32
   208  	AI32ReinterpretF32
   209  	AI64ReinterpretF64
   210  	AF32ReinterpretI32
   211  	AF64ReinterpretI64
   212  	AI32Extend8S
   213  	AI32Extend16S
   214  	AI64Extend8S
   215  	AI64Extend16S
   216  	AI64Extend32S
   217  
   218  	AI32TruncSatF32S
   219  	AI32TruncSatF32U
   220  	AI32TruncSatF64S
   221  	AI32TruncSatF64U
   222  	AI64TruncSatF32S
   223  	AI64TruncSatF32U
   224  	AI64TruncSatF64S
   225  	AI64TruncSatF64U
   226  
   227  	AMemoryInit
   228  	ADataDrop
   229  	AMemoryCopy
   230  	AMemoryFill
   231  	ATableInit
   232  	AElemDrop
   233  	ATableCopy
   234  	ATableGrow
   235  	ATableSize
   236  	ATableFill
   237  
   238  	ALast
   239  
   240  	ARESUMEPOINT
   241  	// ACALLNORESUME is a call which is not followed by a resume point.
   242  	// It is allowed inside of WebAssembly blocks, whereas obj.ACALL is not.
   243  	// However, it is not allowed to switch goroutines while inside of an ACALLNORESUME call.
   244  	ACALLNORESUME
   245  
   246  	ARETUNWIND
   247  
   248  	AMOVB
   249  	AMOVH
   250  	AMOVW
   251  	AMOVD
   252  
   253  	AWORD
   254  	ALAST
   255  )
   256  
   257  const (
   258  	REG_NONE = 0
   259  )
   260  
   261  const (
   262  	// globals
   263  	REG_SP = obj.RBaseWasm + iota
   264  	REG_CTXT
   265  	REG_g
   266  	// RET* are used by runtime.return0 and runtime.reflectcall. These functions pass return values in registers.
   267  	REG_RET0
   268  	REG_RET1
   269  	REG_RET2
   270  	REG_RET3
   271  	REG_PAUSE
   272  
   273  	// i32 locals
   274  	REG_R0
   275  	REG_R1
   276  	REG_R2
   277  	REG_R3
   278  	REG_R4
   279  	REG_R5
   280  	REG_R6
   281  	REG_R7
   282  	REG_R8
   283  	REG_R9
   284  	REG_R10
   285  	REG_R11
   286  	REG_R12
   287  	REG_R13
   288  	REG_R14
   289  	REG_R15
   290  
   291  	// f32 locals
   292  	REG_F0
   293  	REG_F1
   294  	REG_F2
   295  	REG_F3
   296  	REG_F4
   297  	REG_F5
   298  	REG_F6
   299  	REG_F7
   300  	REG_F8
   301  	REG_F9
   302  	REG_F10
   303  	REG_F11
   304  	REG_F12
   305  	REG_F13
   306  	REG_F14
   307  	REG_F15
   308  
   309  	// f64 locals
   310  	REG_F16
   311  	REG_F17
   312  	REG_F18
   313  	REG_F19
   314  	REG_F20
   315  	REG_F21
   316  	REG_F22
   317  	REG_F23
   318  	REG_F24
   319  	REG_F25
   320  	REG_F26
   321  	REG_F27
   322  	REG_F28
   323  	REG_F29
   324  	REG_F30
   325  	REG_F31
   326  
   327  	REG_PC_B
   328  
   329  	MAXREG
   330  
   331  	MINREG  = REG_SP
   332  	REGSP   = REG_SP
   333  	REGCTXT = REG_CTXT
   334  	REGG    = REG_g
   335  )