| Server IP : 189.126.111.107 / Your IP : 216.73.217.69 Web Server : Apache System : Linux www.gadotticar.com.br 5.4.0-135-generic #152-Ubuntu SMP Wed Nov 23 20:19:22 UTC 2022 x86_64 User : gadotticar ( 1000) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/lib/go/src/runtime/ |
Upload File : |
// Copyright 2013 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. #include "textflag.h" // This could use MOVSQ, but we use MOVSL so that if an object ends in // a 4 byte pointer, we copy it as a unit instead of byte by byte. // func memmove(to, from unsafe.Pointer, n uintptr) TEXT runtime·memmove(SB), NOSPLIT, $0-12 MOVL to+0(FP), DI MOVL from+4(FP), SI MOVL n+8(FP), BX CMPL SI, DI JLS back forward: MOVL BX, CX SHRL $2, CX ANDL $3, BX REP; MOVSL MOVL BX, CX REP; MOVSB RET back: MOVL SI, CX ADDL BX, CX CMPL CX, DI JLS forward ADDL BX, DI ADDL BX, SI STD MOVL BX, CX SHRL $2, CX ANDL $3, BX SUBL $4, DI SUBL $4, SI REP; MOVSL ADDL $3, DI ADDL $3, SI MOVL BX, CX REP; MOVSB CLD // Note: we copy only 4 bytes at a time so that the tail is at most // 3 bytes. That guarantees that we aren't copying pointers with MOVSB. // See issue 13160. RET