tinycc-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Tinycc-devel] sqlite on windows


From: Christian Jullien
Subject: Re: [Tinycc-devel] sqlite on windows
Date: Mon, 21 Jun 2021 11:55:01 +0200

Hello I confirm that it is implemented by “lock orl $0,($rsp)” and I also vote to include this intrinsic. Below here are asm and objdump results

 

C:>type foo.c && cl -nologo -Ox -Fa -c foo.c && type foo.asm && objdump -d foo.obj

void

foo() {

        __faststorefence();

}

foo.c

; Listing generated by Microsoft (R) Optimizing Compiler Version 19.29.30038.1

 

include listing.inc

 

INCLUDELIB LIBCMT

INCLUDELIB OLDNAMES

 

PUBLIC  foo

voltbl  SEGMENT

_volmd  DDSymXIndex:    FLAT:foo

        DD      00H

voltbl  ENDS

; Function compile flags: /Ogtpy

_TEXT   SEGMENT

foo     PROC

; File c:\usr\jullien\foo.c

; Line 3

        lock or DWORD PTR [rsp], 0

; Line 4

        ret     0

foo     ENDP

_TEXT   ENDS

END

 

foo.obj:     file format pe-x86-64

 

 

Disassembly of section .text$mn:

 

0000000000000000 <foo>:

   0:   f0 83 0c 24 00          lock orl $0x0,(%rsp)

   5:   c3                      ret

 

-----Original Message-----
From: Tinycc-devel [mailto:tinycc-devel-bounces+eligis=orange.fr@nongnu.org] On Behalf Of Elijah Stone
Sent: Sunday, June 20, 2021 21:56
To: tinycc-devel@nongnu.org
Subject: Re: [Tinycc-devel] sqlite on windows

 

On Sun, 20 Jun 2021, Tyge Løvset wrote:

 

> on win64 I get an undefined intrinsic symbol   __faststorefence().  It

> can be implemented as an mfence instruction, but I think microsoft

> implements it with xchgl or similar

 

It appears to be implemented as  lock or $0,(%rsp).

I would guess the reasoning that or with 0 is special-cased by the processor as a no-op, so it doesn't actually perform a write, but the lock still takes effect?

Regardless, I think it's a good idea to implement such intrinsics.

 

  -E


reply via email to

[Prev in Thread] Current Thread [Next in Thread]