기본 콘텐츠로 건너뛰기

MS Windows x64가 LLP64인 까닭

Why did the Win64 team choose the LLP64 model?

Linux/UNIX는 64bit에서 long형이 64bit를 가지지만, Windows는 64bit에서 long형이 32bit를 유지한다. 이유는 호환성 때문이다. Windows에 많이 쓰이는 데이터 타입인 DWORD가 long형이고, 이것을 각종 구조체에서 마음껏 썼기 때문이다. 그래도 하위호환성을 위한 합리적인 선택이라 볼 수 있다. 무턱대고 데이터형 바꾸면 서드파티가 혼란을 겪을 것이고, 숨겨진 새로운 버그를 만들어낼 수도 있기 때문이다.

개인적으로 DWORD랄지, WORD랄지 이런 애매모호한 타입이 마음에 안 들었는데, 나름 쌤통이랄까... 후훗!

참고로 C99표준(stdint.h)에 데이터 크기별로 정수형을 명시적으로 재정의한 타입이 있다. intxx_t과 uintxx_t이다. xx부분에는 데이터 크기가 비트 단위로 들어간다. 예를 들어 8바이트(=64bit) 부호가 없는 정수형은 uint64_t 이다. 이러한 것은 시스템이 1,024bit로 가더라도 그대로 쓸 수 있다.

더불어 intptr_t은 32bit 시스템에서 32bit, 64bit 시스템에서 64bit로 동작한다. = _=) 당연한거지만...


기타 64bit 시스템으로 넘어갈 때 고려해야할 점을 잘 설명한 블로그도 참고로... : http://minjang.egloos.com/2157032

댓글

이 블로그의 인기 게시물

버즈 라이브 배터리 교체

나는 버즈 라이브(SM-R180)가 좋은데, 평가가 별루였는지, 해당 스타일로 버즈를 더 이상 만들지 않고 있다. 아무튼, 오래 쓴 버즈 라이브 배터리가 슬슬 맛이 가기 시작해서, 블로그 를 참조하면서 분해 및 교체를 하였다. (진짜 쉬움) 요로코롬 위아래를 살짝 눌러주면 뚜껑이 벌어진다. 안쪽 플라스틱은 오른쪽은 분홍색, 왼쪽은 회색이다. 리본 케이블 살짝 들어내고, 기판을 떼어내면, 작은 나사가 있다. 나사를 풀고, 플라스틱을 걷어내면, 검은 양면 테이프로 고정된 CR1254 배터리가 보인다. 잘 쑤셔서(?) 꺼낸다. 새로운 CR1254 배터리를 넣는다. 음극이 아래로 가도록 하고, 분해의 역순으로 조립하면 된다. 조립할 때, 아까 풀었던 나사는 잊지 말고 꼭 조여준다. (까먹고 조립해서 다시 뜯고 조립함) 충전도 잘 되고, 소리도 잘 나는거 보면, 조립도 잘 된 것 같다. 이렇게 버즈 라이브의 수명을 강제로 늘렸다. 나중에 본체 배터리도 갈아야겠다.

Windows 에서 절전을 깨우는 장치 찾기

참조:  https://www.reddit.com/r/computer/comments/wquswv/windows_11_pc_wakes_up_every_time_i_move_usb/ powercfg /devicequery wake_armed powercfg /deviceenablewake "[DEVICE]" # $PROFILE function Get-WakeArmedDevices { $devices = powercfg -devicequery wake_armed if ($devices) { $devices | ForEach-Object { $_.Trim() } } else { Write-Host "No devices are currently armed for wake events." } } function Set-EnableWakeOnDevice { param( [string]$deviceName ) sudo powercfg -deviceenablewake $deviceName } function Set-DisableWakeOnDevice { param( [string]$deviceName ) sudo powercfg -devicedisablewake $deviceName }