opengl:cpu64
CPU 32bit/64bit の違いのメモ
Data Size
| OS (64bit) | 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 | – |
| Android 5.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 | – |
| OS (32bit) | 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 | x86 | 32 | ILP32 | 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 | ILP32 | 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 | ILP32 | 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 | ILP32 | 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 | ILP32 | 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 | ILP32 | 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 | – |
ISA
| ISA 64bit | cc/os | |
| AMD64/Intel64/EM64T | x64, x86_64 | |
| ARMv8-A AArch64 | arm64 | |
| PowerPC 64bit | ppc64 | |
| IA-64 | | Itanium |
| ISA 32bit | cc/os | |
| IA-32 | x86, i386, i686 | |
| ARMv5TE | armv5te | |
| ARMv6 | armv6 | |
| ARMv7-A | armv7, armv7s, armv7l | |
| MIPS32-R1 | mips | |
| PowerPC 32bit | | |
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 |
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 |
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
AArch32
| r9 (sb) |
| r10 (sl) |
| r11 (fp) |
| r12 (ip) |
| r13 (sp) |
| r14 (lr) |
| r15 (pc) |
opengl/cpu64.txt · 最終更新: by oga