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 )