github.com/megatontech/mynoteforgo@v0.0.0-20200507084910-5d0c6ea6e890/源码/runtime/sys_wasm.s (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 #include "textflag.h" 6 7 TEXT runtime·wasmMove(SB), NOSPLIT, $0-0 8 loop: 9 Loop 10 // *dst = *src 11 Get R0 12 Get R1 13 I64Load $0 14 I64Store $0 15 16 // n-- 17 Get R2 18 I32Const $1 19 I32Sub 20 Set R2 21 22 // n == 0 23 Get R2 24 I32Eqz 25 If 26 Return 27 End 28 29 // dst += 8 30 Get R0 31 I32Const $8 32 I32Add 33 Set R0 34 35 // src += 8 36 Get R1 37 I32Const $8 38 I32Add 39 Set R1 40 41 Br loop 42 End 43 UNDEF 44 45 TEXT runtime·wasmZero(SB), NOSPLIT, $0-0 46 loop: 47 Loop 48 // *dst = 0 49 Get R0 50 I64Const $0 51 I64Store $0 52 53 // n-- 54 Get R1 55 I32Const $1 56 I32Sub 57 Set R1 58 59 // n == 0 60 Get R1 61 I32Eqz 62 If 63 Return 64 End 65 66 // dst += 8 67 Get R0 68 I32Const $8 69 I32Add 70 Set R0 71 72 Br loop 73 End 74 UNDEF 75 76 TEXT runtime·wasmDiv(SB), NOSPLIT, $0-0 77 Get R0 78 I64Const $-0x8000000000000000 79 I64Eq 80 If 81 Get R1 82 I64Const $-1 83 I64Eq 84 If 85 I64Const $-0x8000000000000000 86 Return 87 End 88 End 89 Get R0 90 Get R1 91 I64DivS 92 Return 93 94 TEXT runtime·wasmTruncS(SB), NOSPLIT, $0-0 95 Get R0 96 Get R0 97 F64Ne // NaN 98 If 99 I64Const $0x8000000000000000 100 Return 101 End 102 103 Get R0 104 F64Const $9223372036854775807. 105 F64Gt 106 If 107 I64Const $0x8000000000000000 108 Return 109 End 110 111 Get R0 112 F64Const $-9223372036854775808. 113 F64Lt 114 If 115 I64Const $0x8000000000000000 116 Return 117 End 118 119 Get R0 120 I64TruncSF64 121 Return 122 123 TEXT runtime·wasmTruncU(SB), NOSPLIT, $0-0 124 Get R0 125 Get R0 126 F64Ne // NaN 127 If 128 I64Const $0x8000000000000000 129 Return 130 End 131 132 Get R0 133 F64Const $18446744073709551615. 134 F64Gt 135 If 136 I64Const $0x8000000000000000 137 Return 138 End 139 140 Get R0 141 F64Const $0. 142 F64Lt 143 If 144 I64Const $0x8000000000000000 145 Return 146 End 147 148 Get R0 149 I64TruncUF64 150 Return 151 152 TEXT runtime·exitThread(SB), NOSPLIT, $0-0 153 UNDEF 154 155 TEXT runtime·osyield(SB), NOSPLIT, $0-0 156 UNDEF 157 158 TEXT runtime·usleep(SB), NOSPLIT, $0-0 159 RET // TODO(neelance): implement usleep 160 161 TEXT runtime·currentMemory(SB), NOSPLIT, $0 162 Get SP 163 CurrentMemory 164 I32Store ret+0(FP) 165 RET 166 167 TEXT runtime·growMemory(SB), NOSPLIT, $0 168 Get SP 169 I32Load pages+0(FP) 170 GrowMemory 171 I32Store ret+8(FP) 172 RET 173 174 TEXT ·wasmExit(SB), NOSPLIT, $0 175 CallImport 176 RET 177 178 TEXT ·wasmWrite(SB), NOSPLIT, $0 179 CallImport 180 RET 181 182 TEXT ·nanotime(SB), NOSPLIT, $0 183 CallImport 184 RET 185 186 TEXT ·walltime(SB), NOSPLIT, $0 187 CallImport 188 RET 189 190 TEXT ·scheduleTimeoutEvent(SB), NOSPLIT, $0 191 CallImport 192 RET 193 194 TEXT ·clearTimeoutEvent(SB), NOSPLIT, $0 195 CallImport 196 RET 197 198 TEXT ·getRandomData(SB), NOSPLIT, $0 199 CallImport 200 RET