ユーザ用ツール

サイト用ツール


opengl:cpu64

文書の過去の版を表示しています。


CPU 32bit/64bit の違いのメモ

Data Size

OS CPU arch bool char short int long long long float double void* intptr_t size_t off_t wchar_t virtual simd64 simd128 simd256
Windows 7/8 x64 64 LLP64 1/1 1/1 2/2 4/4 4/4 8/8 4/4 8/8 8/8 8/8 8/8 4/4 2/2 8/8 8/8 16/16
MacOS X 10.8 x86_64 64 LP64 1/1 1/1 2/2 4/4 8/8 8/8 4/4 8/8 8/8 8/8 8/8 8/8 4/4 8/8 8/8 16/16 32/32
Ubuntu 13.04 x86_64 64 LP64 1/1 1/1 2/2 4/4 8/8 8/8 4/4 8/8 8/8 8/8 8/8 8/8 4/4 8/8 8/8 16/16
iOS 7.0 arm64 64 LP64 1/1 1/1 2/2 4/4 8/8 8/8 4/4 8/8 8/8 8/8 8/8 8/8 4/4 8/8 8/8 16/16
Windows 7/8 x86 32 LL64 1/1 1/1 2/2 4/4 4/4 8/8 4/4 8/8 4/4 4/4 4/4 4/4 2/2 4/4 8/8 16/16
MacOS X 10.8 i386 32 LL64 1/1 1/1 2/2 4/4 4/4 8/8 4/4 8/8 4/4 4/4 4/4 8/8 4/4 4/4 8/8 16/16 32/32
Ubuntu 13.04 i686 32 LL64 1/1 1/1 2/2 4/4 4/4 8/8 4/4 8/8 4/4 4/4 4/4 4/4 4/4 4/4 8/8 16/16
Ubuntu 13.04 armv7 32 LL64 1/1 1/1 2/2 4/4 4/4 8/8 4/4 8/8 4/4 4/4 4/4 4/4 4/4 4/4 8/8 16/16
  • sizeof(type) / alignof(type)
  • virtual= sizeof( struct { virtual void a(){} } )

Function Calling convention

Windows x64

Parameter

int 64bit float 128bit
rcx (r2) xmm0
rdx (r3) xmm1
r8 xmm2
r9 xmm3

Return

int 64bit float 128bit
rax (r0) xmm0
  • 非POD や 64bit を超える戻り値は参照渡しに変換される

Saved register

rbx (r1)
rsi (r4)
rdi (r5)
rbp (r6)
rsp (r7)
r12
r13
r14
r15
xmm6-xmm15

Linux x64 (System V AMD64 ABI)

Parameter

int 64bit float 128bit
rdi (r5) xmm0
rsi (r4) xmm1
rdx (r3) xmm2
rcx (r2) xmm3
r8 xmm4
r9 xmm5
xmm6
xmm7

Return

int 64bit float 128bit
rax (r0) xmm0
rdx (r3) xmm1
  • 非POD の戻り値は参照渡しに変換される。rdi → rax

Saved register

rbx (r1)
rsp (r6)
rbp (r7)
r12
r13
r14
r15

ARM64 ARMv8 AArch64

Parameter

int 64bit float 128bit
r0 v0
r1 v1
r2 v2
r3 v3
r4 v4
r5 v5
r6 v6
r7 v7

Return

int 64bit float 128bit
r0 v0
r19-r29, sp v8-v15
opengl/cpu64.1388693003.txt.gz · 最終更新: 2014/01/03 05:03 by oga

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki