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/amd64 | 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 | 32/32 |
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 | 32/32 |
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 | armv7l | 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 | – |
Android 4.4 | armeabi-v7a | 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/8 | – |
iOS 7.1 | 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 | 8/8 | 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 |
Saved register
r19-r29, sp | v8-v15 |
AArch32
r9 (sb) |
r10 (sl) |
r11 (fp) |
r12 (ip) |
r13 (sp) |
r14 (lr) |
r15 (pc) |
opengl/cpu64.1397378077.txt.gz · 最終更新: 2014/04/13 17:34 by oga