github.com/comwrg/go/src@v0.0.0-20220319063731-c238d0440370/runtime/time_windows_amd64.s (about) 1 // Copyright 2011 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 //go:build !faketime 6 // +build !faketime 7 8 #include "go_asm.h" 9 #include "textflag.h" 10 #include "time_windows.h" 11 12 TEXT time·now(SB),NOSPLIT,$0-24 13 CMPB runtime·useQPCTime(SB), $0 14 JNE useQPC 15 16 MOVQ $_INTERRUPT_TIME, DI 17 MOVQ time_lo(DI), AX 18 IMULQ $100, AX 19 MOVQ AX, mono+16(FP) 20 21 MOVQ $_SYSTEM_TIME, DI 22 MOVQ time_lo(DI), AX 23 MOVQ $116444736000000000, DI 24 SUBQ DI, AX 25 IMULQ $100, AX 26 27 // generated code for 28 // func f(x uint64) (uint64, uint64) { return x/1000000000, x%1000000000 } 29 // adapted to reduce duplication 30 MOVQ AX, CX 31 MOVQ $1360296554856532783, AX 32 MULQ CX 33 ADDQ CX, DX 34 RCRQ $1, DX 35 SHRQ $29, DX 36 MOVQ DX, sec+0(FP) 37 IMULQ $1000000000, DX 38 SUBQ DX, CX 39 MOVL CX, nsec+8(FP) 40 RET 41 useQPC: 42 JMP runtime·nowQPC(SB) 43 RET