프로그램이 32비트 또는 64비트라는 것은 무엇을 의미합니까?
이 질문:WORD는 32/64비트 OS에 각각 몇 개의 비트를 포함하고 있습니까?는 워드 사이즈는 프로세서 레지스터의 비트 크기를 의미합니다.이것은 컴퓨터 프로세서가 동작하는 비트 수, 즉 프로세서가 동작하는 최소의 '분할할할 수 없는' 비트 수를 의미합니다.
그것이 맞습니까?Word/Excel 등의 소프트웨어를 사용하여 32비트 또는 64비트 설치 옵션을 사용할 수 있습니다.뭐가 다른데?
컴퓨터 아키텍처는 고정되어 있기 때문에 32비트인 소프트웨어는 32비트 아키텍처를 가진 컴퓨터 아키텍처에 맞게 설계되어 있는 것처럼 보입니다.그리고 64비트 프로그램은 명령 집합을 64비트 워드 크기에 맞추려고 노력합니다.
그것이 맞습니까?
여기서도 매우 유사한 질문을 할 수 있습니다.프로그래밍의 관점에서 프로그램이 32비트 또는 64비트일 경우 어떤 의미가 있습니까?그리고 받아들여진 답변에서는 그 차이는 애플리케이션에 할당할 수 있는 메모리의 양이라고 언급하고 있습니다.32비트/64비트 소프트웨어가 32비트/64비트 워드프로세서 사이즈와 전혀 관련이 없는 경우를 제외하고, 이것은 너무 애매합니다.
단어 크기는 큰 차이이지만, 그것만이 아닙니다.CPU가 「등급」되는 비트수를 정의하는 경향이 있습니다만, 워드 사이즈와 전체적인 기능은 대략적으로 관련지어져 있을 뿐입니다.그리고 전체적인 능력이 중요합니다.
인텔 또는 AMD CPU에서 32비트/64비트 소프트웨어는 실제로 CPU 실행 시 CPU가 동작하는 모드를 말합니다.32비트 모드에서는 사용 가능한 레지스터와 명령의 수가 적거나 적습니다.그러나 가장 중요한 제한은 사용 가능한 메모리의 양입니다.32비트 소프트웨어는 일반적으로 2GB에서 4GB 미만의 메모리만 사용할 수 있습니다.
메모리의 각 바이트는 고유한 주소를 가지며, 이는 고유한 우편 주소를 가진 각 집과 크게 다르지 않습니다.메모리 주소는 일단 메모리에 데이터를 저장한 후 프로그램이 데이터를 다시 찾기 위해 사용할 수 있는 숫자일 뿐이며 메모리의 각 바이트에는 주소가 있어야 합니다.주소가 32비트인 경우는, 2^32 의 주소를 지정할 수 있습니다.즉, 2^32 의 주소 지정 가능한 메모리의 바이트를 의미합니다.현재의 인텔/AMD CPU에서는, 메모리 주소의 사이즈가 레지스터의 사이즈와 같게 되어 있습니다(다만, 이것이 항상 올바른 것은 아닙니다).
32비트 주소를 사용하면 4GB(2^32바이트)의 주소를 프로그램에서 지정할 수 있지만, 이 공간의 절반까지 OS가 예약합니다.사용 가능한 메모리 공간에 프로그램 코드, 데이터 및 액세스 중인 파일이 들어맞아야 합니다.오늘날 PC에서는 RAM이 수 기가바이트로 구성되어 있어 사용 가능한 메모리를 활용할 수 없습니다.이것이 64비트가 보급된 주된 이유입니다.64비트 CPU는 몇 년 동안 널리 사용되었습니다(일반적으로 32비트 모드).이후 2GB보다 큰 메모리 사이즈가 일반화되어 64비트 모드가 실제의 이점을 제공하기 시작했습니다.64비트의 메모리 주소 공간은 16엑사바이트의 주소 지정 가능 메모리(최대 18조 바이트)를 제공합니다.이는 현재 어떤 소프트웨어에서도 사용할 수 있는 용량보다 많은 수치입니다.이렇게 많은 RAM을 탑재한 PC는 없습니다.
64비트 모드라도 일반적인 애플리케이션에서 사용되는 데이터의 대부분은 64비트일 필요는 없기 때문에 대부분의 데이터는 여전히 32비트(또는 그보다 더 작은) 형식으로 저장됩니다.텍스트의 일반적인 ASCII 및 UTF-8 표현은 8비트 데이터 형식을 사용합니다.프로그램이 메모리의 한 장소에서 다른 곳으로 큰 텍스트 블록을 이동해야 할 경우 64비트를 동시에 수행하려고 할 수 있지만 텍스트를 해석해야 할 경우 8비트를 한 번에 수행할 수 있습니다.마찬가지로 32비트는 정수의 일반적인 크기입니다(최대 범위는 +/-2^31, 약 +/-21억).21억은 다용도 가능한 범위입니다.그래픽스 데이터는 일반적으로 픽셀 단위로 표시되며, 각 픽셀에는 최대 32비트의 데이터가 포함됩니다.
64비트 데이터를 불필요하게 사용하면 단점이 있습니다.64비트 데이터는 메모리에서 더 많은 공간을 차지하고 CPU 캐시에서 더 많은 공간을 차지합니다(단기 저장용으로 CPU에서 사용되는 매우 빠른 메모리).메모리는 최대 속도로만 데이터를 전송할 수 있으며 64비트 데이터는 2배 더 큽니다.이렇게 하면 낭비할 경우 성능이 저하될 수 있습니다.또한 32비트 버전과 64비트 버전의 소프트웨어를 모두 지원해야 하는 경우 가능한 경우 32비트 값을 사용하면 두 버전 간의 차이를 줄이고 개발을 쉽게 할 수 있습니다(단, 항상 그렇게 되는 것은 아닙니다).
32비트 이전에는 주소 및 워드 크기가 보통 달랐습니다(20비트 메모리 주소가 16비트인 경우 16비트 8086/88, 16비트 메모리 주소가 있는 경우 8비트 6502, 26비트 주소의 경우 32비트 ARM 등).어떤 프로그래머도 더 나은 레지스터를 무시한 적이 없지만, 메모리 공간은 대개 각 발전하는 기술 세대에게 진정한 원동력이었습니다.이는 대부분의 프로그래머가 레지스터로 직접 작업하는 경우는 거의 없지만 메모리로 직접 작업하기 때문입니다.메모리의 제한은 프로그래머, 32비트에서 64비트의 경우 사용자에게도 직접적인 불쾌감을 주기 때문입니다.
요약하자면, 다양한 비트사이즈에는 실질적이고 중요한 기술적 차이가 있지만, 32비트 또는 64비트(또는 16비트 또는 8비트)는 단순히 특정 기술세대의 CPU와 관련된 경향이 있는 기능의 집합 및/또는 이러한 기능을 활용하는 소프트웨어의 집합입니다.단어의 길이는 그것의 일부이지만, 유일한, 또는 반드시 가장 중요한 부분은 아니다.
출처: 이 모든 기술 시대에 프로그래머로 활동해 왔습니다.
참조하는 답변은 32비트에 비해 64비트의 이점에 대해 설명합니다.프로그램 자체의 실제 차이점은 사용자의 관점에 따라 다릅니다.
일반적으로 프로그램 소스 코드는 전혀 다를 필요가 없습니다.대부분의 프로그램은 컴파일러 또는 컴파일러 옵션을 적절히 선택하여 32비트 또는 64비트 프로그램처럼 완벽하게 컴파일할 수 있습니다.다만, 64비트를 대상으로 하는 (C) 컴파일러가 그 타입을 다르게 정의하는 것을 선택할 수 있기 때문에, 소스에 영향이 있는 경우가 있습니다.특히,long int
는 32비트 플랫폼에서는 일반적으로 32비트폭이지만 64비트 플랫폼에서는 64비트폭입니다.이러한 세부 사항에 대해 보증되지 않은 추측을 하는 코드의 버그의 원인이 될 수 있습니다.
주요 차이점은 모두 바이너리에 있습니다.64비트 프로그램은 64비트 타깃 CPU의 완전한 명령 세트를 사용합니다.이 명령어 세트에는 32비트 대응 CPU가 포함하지 않는 명령어가 반드시 포함되어 있습니다.32비트 대응 CPU에는 없는 레지스터를 사용합니다.타깃 CPU에 적합한 함수 호출 규칙을 사용합니다.이는 종종 32비트 프로그램보다 더 많은 인수를 레지스터에 전달하는 것을 의미합니다.64비트 CPU 의 이러한 기능이나 그 외의 기능을 사용하면, 메모리를 증설할 수 있는 기능이나 퍼포먼스의 향상등의 메리트를 얻을 수 있습니다.
프로그램은 프로세서에 의해 구현되는 특정 아키텍처(아키텍처, 즉 ISA) 위에서 실행됩니다.일반적으로 아키텍처는 "메인" 워드 크기를 정의합니다. 이 크기는 이러한 레지스터의 대부분의 레지스터와 연산이 실행되는 크기입니다(다만 다르게 작동하는 아키텍처를 설계할 수 있습니다).이것은 보통 "원어민" 워드 크기라고 불리지만 아키텍처에서는 다른 크기의 레지스터를 사용하여 작업을 수행할 수 있습니다.
또, 프로세서는 메모리를 사용하고 있기 때문에, 그 메모리를 어떻게든 처리할 필요가 있습니다.이것은, 이러한 주소로 동작하는 것을 의미합니다.따라서 일반적으로 주소는 다른 숫자와 마찬가지로 저장 및 조작할 수 있습니다.즉, 주소를 유지할 수 있는 레지스터가 있는 것을 의미합니다.이러한 레지스터가 워드 사이즈와 일치하거나 단일 레지스터에서 주소를 계산할 필요는 없지만, 일부 아키텍처에서는 이러한 경우가 있습니다.
역사를 통틀어, 다양한 단어 크기의 건축물이 많았는데, 심지어 이상한 것들도 있었다.오늘날에는 32비트 및 64비트뿐만 아니라 8비트 및 16비트(일반적으로 임베디드 기기)의 프로세서를 쉽게 찾을 수 있습니다.일반적인 데스크톱 시스템에서는 각각 32비트 및 64비트인 x86 또는 x64를 사용하고 있습니다.
따라서 프로그램이 32비트 또는 64비트라고 하면 특정 아키텍처를 의미합니다.일반적인 데스크톱 시나리오에서는 x86과 x64를 비교하고 있습니다.그 둘 사이의 차이점에 대해 논의하는 많은 질문, 기사, 책들이 있다.
마지막으로, 호환성의 이유로 x64 프로세서는 다양한 모드로 동작할 수 있습니다.그 중 하나는 x86의 32비트 코드를 실행할 수 있습니다.즉, 컴퓨터가 x64(대략)이고 운영체제가 이를 지원하는 경우(Windows 64비트 등)에도 x86용으로 컴파일된 프로그램을 실행할 수 있습니다.
Word/Excel 등의 소프트웨어를 사용하여 32비트 또는 64비트 설치 옵션을 사용할 수 있습니다.뭐가 다른데?
이는 사용되는 CPU에 따라 달라집니다.
SPARC CPU에서는 "32비트" 프로그램과 "64비트" 프로그램의 차이는 다음과 같습니다.
64비트 프로그램은 32비트 SPARC CPU에서 지원되지 않는 추가 작업을 사용합니다.한편 Solaris 또는 Linux 운영체제에서는 64비트 프로그램이 액세스하는 데이터는 64비트 명령을 통해서만 액세스할 수 있는 메모리 영역에 배치됩니다.즉, 64비트 프로그램에서도 32비트 CPU에서 지원되지 않는 명령을 사용해야 합니다.
x86 CPU의 경우 이는 다릅니다.
최신 x86 CPU는 동작 모드가 다르며 다양한 종류의 코드를 실행할 수 있습니다.다른 모드에서는 16비트, 32비트 또는 64비트 코드를 실행할 수 있습니다.
16비트, 32비트 및 64비트코드에서는 CPU는 바이트를 다르게 해석합니다.
바이트 수(16진수)b8 4e 61 bc 00 c3
다음과 같이 해석됩니다.
mov eax,0xbc614e
ret
...32비트 코드 및 다음과 같이 입력합니다.
mov ax,0x614e
mov sp,0xc300
... 16비트 코드.
「64비트 인스톨」과 「32비트 인스톨」의 EXE 파일의 바이트는, CPU에 의해서 다르게 해석될 필요가 있습니다.
그리고 64비트 프로그램은 명령 집합을 64비트 워드 크기에 맞추려고 노력합니다.
16비트 코드(상기 참조)는 CPU가 16비트 CPU가 아닌 경우 32비트 레지스터에 액세스할 수 있습니다.
따라서 "16비트 프로그램"은 32비트 또는 64비트 x86 CPU의 32비트 레지스터에 액세스할 수 있습니다.
워드 사이즈는 프로세서레지스터의 비트사이즈를 가리킨다고 합니다.
일반적으로 있음(일부 예외/복잡함도 있음)
- 컴퓨터 프로세서가 동작하는 비트의 수, 즉 프로세서가 동작하는 '분할할 수 없는' 비트의 최소량을 의미합니다.
아니요. 대부분의 프로세서 아키텍처는 네이티브 워드 크기보다 작은 값으로 작업할 수 있습니다.더 나은(완벽하지는 않지만) 정의는 프로세서가 (주 정수 데이터 경로를 통해) 단일 단위로 처리할 수 있는 가장 큰 데이터 조각입니다.
일반적으로 현대의 32비트 및 64비트 시스템에서 포인터는 워드 크기와 동일하지만 많은 64비트 시스템에서 해당 포인터의 모든 비트를 실제로 사용할 수 있는 것은 아닙니다.어드레스 가능한 메모리가 시스템의 네이티브 워드 크기보다 큰 메모리 모델을 가질 수 있으며, 8비트 및 16비트 시대에는 일반적으로 사용되었지만 32비트 CPU가 도입된 이후 널리 사용되지 않게 되었습니다.
컴퓨터 아키텍처가 고정되어 있기 때문에
물리 아키텍처는 물론 고정되어 있지만, 많은 프로세서는 프로그래머가 사용할 수 있는 명령과 레지스터가 다른 여러 동작 모드를 가지고 있습니다.64비트 모드에서는 CPU의 모든 기능을 사용할 수 있으며, 32비트 모드에서는 프로세서가 기능과 주소 공간을 제한하는 하위 호환 인터페이스를 제공합니다.모드는 충분히 다르기 때문에 특정 모드에 대해 코드를 컴파일해야 합니다.
일반적으로 64비트 모드로 실행되는 OS는 32비트 모드로 실행되는 애플리케이션을 지원할 수 있지만 그 반대는 지원하지 않습니다.
따라서 32비트 어플리케이션은 32비트 OS를 실행하는 32비트 프로세서, 32비트 OS를 실행하는 64비트 프로세서 또는 64비트 OS를 실행하는 64비트 프로세서에서 32비트 모드로 실행됩니다.
반면 64비트 애플리케이션은 보통 64비트 OS를 실행하는 64비트 프로세서에서만 실행됩니다.
당신이 가지고 있는 정보는 이 그림의 좋은 부분이지만 전부는 아닙니다.저는 프로세서 전문가가 아니기 때문에 답변이 누락될 수 있습니다.
32비트와 64비트는 프로세서 아키텍처와 관련되어 있습니다.단어 크기가 증가하면 다음과 같은 몇 가지 작업이 수행됩니다.
- 단어 크기가 클수록 더 많은 명령을 정의할 수 있습니다.예를 들어, 단일 로드 명령을 실행하는 8비트 프로세서는 총 256개의 명령만 가질 수 있으며, 워드 크기가 클수록 프로세서 마이크로 코드에서 더 많은 명령을 정의할 수 있습니다.분명히, 실제로 유용한 명령의 수에는 한계가 있습니다.
- 사용 가능한 비트가 더 많으므로 단일 명령 사이클로 더 많은 데이터를 처리할 수 있습니다.그러면 실행 속도가 빨라집니다.
- 말씀하신 것처럼, 복수의 주소 사이클이나 높은/낮은 데이터 워드를 다중화할 필요 없이, 대용량 메모리 공간에 액세스 할 수 있습니다.
프로세서 아키텍처가 32비트에서 64비트로 이행하면 칩 제조원은 이전 명령어 세트와의 호환성을 유지할 수 있기 때문에 이전에 개발된 소프트웨어는 모두 새로운 아키텍처에서 실행됩니다.64비트 아키텍처를 대상으로 하면 컴파일러는 데이터를 보다 효율적으로 처리하기 위한 새로운 명령과 메모리 주소 지정 방식을 사용할 수 있게 됩니다.
간단한 답변:이는 기본 데이터 버스의 폭만을 기반으로 하는 규칙입니다.
n비트 프로그램은 n비트 CPU용으로 최적화된 프로그램입니다.그렇지 않으면 64비트 프로그램은 64비트 CPU용으로 컴파일된 바이너리 프로그램입니다.64비트 CPU는 64비트 데이터 버스를 이용하여 CPU와 메모리 간에 데이터를 교환합니다.
이것은 매우 간단합니다만, 이하를 참조해 주세요.
이 정의는 실제로 32/64비트 CPU가 무엇인지, 32/64비트 운영체제가 무엇인지, 컴파일러가 특정 아키텍처에 대해 바이너리를 최적화하는 방법을 이해하는 것으로 수정됩니다.
여기서의 최적화에는 바이너리 자체의 형식이 포함됩니다.특정 OS(Windows 바이너리 등)의 32비트 바이너리와 64비트 바이너리는 형식이 다릅니다.단, Windows 64와 같은 특정 64비트 OS에서는 32비트 버전과 32비트 와이드 데이터 버스용으로 작성된 32비트 바이너리 파일을 읽고 실행할 수 있습니다.
32/64비트 CPU, 첫 번째 정의
CPU는 한 번의 명령으로 메모리에 특정 양의 데이터를 저장/호출할 수 있습니다.32비트 CPU는 4바이트(32비트)를 동시에 전송할 수 있으며 64비트 CPU는 8바이트(64비트)를 동시에 전송할 수 있습니다.따라서 "32/64비트" 프리픽스는 1회의 읽기/쓰기 사이클에서 전송되는 RAM의 양에서 유래합니다.
이 수량은 실행 시간에 영향을 미칩니다.필요한 전송 사이클이 적을수록 CPU가 메모리를 대기하는 시간이 줄어들어 프로그램 실행 속도가 빨라집니다.그것은 작은 양동이나 큰 양동이로 많은 양의 물을 나르는 것과 같다.
버킷의 크기(데이터 전송에 사용되는 비트 수)는 아키텍처가 얼마나 효율적인지를 나타내기 위해 사용됩니다.따라서 같은 CPU에서는 32비트어플리케이션은 64비트어플리케이션보다 효율이 떨어집니다.
32/64비트 CPU, 기술 정의
물론 RAM과 CPU는 모두 32/64비트 데이터 전송을 관리할 수 있어야 합니다.이것에 의해, CPU를 RAM(시스템 버스)에 접속하기 위해서 사용되는 와이어의 수가 결정됩니다.32/64 비트는 실제로는 데이터 버스(통상 「버스 폭」이라고 불립니다)를 구성하는 와이어/트랙의 수입니다.
(Wikipedia:시스템 버스 - 데이터 버스 폭에 따라 CPU, 프로그램, OS 등의 프리픽스 32/64비트가 결정됩니다.)
(다른 버스는 어드레스 버스입니다.보통 어드레스 버스 폭은 32비트 또는 64비트 CPU로 CPU를 명명할 때는 관계가 없습니다.이 주소 버스 폭은 CPU가 도달 가능한 RAM의 총 용량 또는 "주소 지정"을 결정합니다(예: 2GB 또는 32GB).제어버스는 데이터버스에 접속된 모든 것을 동기화하기 위해 사용되는 소형버스이며, 특히 데이터버스가 안정적이고 데이터전송동작에서 샘플링할 수 있는 상태가 되었을 때를 나타낸다.
CPU와 RAM 간에 비트가 전송되는 경우 데이터 버스의 다른 동선 트랙 상의 전압이 안정되어 있어야 합니다.그렇지 않으면 1개 이상의 비트 값이 잘못될 수 있습니다.64비트보다 8비트를 안정시키는 데 걸리는 시간이 적기 때문에 데이터 버스 폭을 늘리는 데 문제가 없는 것은 아닙니다.
32/64비트 프로그램:컴파일러 문제
프로그램은 항상 4바이트(32비트 데이터 버스) 또는 8바이트(64비트 데이터 버스)를 전송할 필요는 없으므로 성능상의 이유로 서로 다른 명령을 사용하여 1바이트, 2바이트, 4바이트 및 8비트를 읽습니다.
바이너리(네이티브어셈블리 언어 프로그램)는 32비트 아키텍처 또는 64비트 아키텍처 및 관련 명령 세트를 염두에 두고 작성됩니다.32/64비트 프로그램이라는 이름이군요.
타겟 아키텍처의 선택은 소스 프로그램을 바이너리로 변환할 때 사용하는 컴파일러/컴파일러 옵션에 따라 달라집니다.대부분의 컴파일러는 같은 소스 프로그램에서 32비트 또는 64바이너리를 생성할 수 있습니다.따라서 원하는 프로그램 또는 도구를 다운로드할 때 두 버전의 응용 프로그램을 모두 찾을 수 있습니다.
그러나 대부분의 프로그램은 다른 프로그래머가 작성한 기성 라이브러리에 의존합니다(예: 비디오 편집 프로그램은 FFmpeg 라이브러리를 사용할 수 있습니다).완전한 64비트 애플리케이션을 작성하려면 컴파일러(실제로는 링크 에디터이지만 단순하게 유지합시다)는 사용되는 라이브러리의 64비트 버전에 액세스해야 합니다.이것은 불가능할 수 있습니다.
OS는 개별 프로그램 및 라이브러리의 스위트일 뿐이기 때문에 이는 운영체제 자체에도 적용됩니다.그러나 OS 자체는 효율성과 보안상의 이유로 컴퓨터 하드웨어와 사용자 프로그램 사이의 게이트웨이 역할을 하는 사용자 프로그램의 일종의 큰 라이브러리입니다.OS가 기술되어 있기 때문에, 유저 프로그램은, 기반이 되는 CPU 아키텍쳐의 모든 가능성에 액세스 할 수 없습니다.
32비트 프로그램 64비트 CPU와의 호환성
64비트 운영체제는 64비트 아키텍처에서 32비트 바이너리를 실행할 수 있습니다.이는 64비트 CPU 명령 세트가 레트로 호환되기 때문입니다.단, 몇 가지 조정이 필요합니다.
데이터 버스 폭과 읽기/쓰기 명령 서브셋 외에도 32비트 CPU와 64비트 CPU에는 많은 다른 점이 있습니다(레지스터 동작, 메모리 캐시, 데이터 정렬/경계, 타이밍 등).
64비트 아키텍처에서 32비트 프로그램 실행:
- 오래된 32비트 아키텍처에서 실행하는 것보다 효율적입니다(대부분 32/64비트 세대 CPU에 비해 CPU 클럭 속도가 향상되었기 때문입니다).
- 는 64비트 아키텍처, 특히 64비트를 메모리 간에 한 번에 전송하는 기능을 활용하기 위해 64비트 바이너리로 컴파일된 동일한 애플리케이션을 실행하는 것보다 효율성이 떨어집니다.
소스를 32비트 바이너리로 컴파일 할 경우 컴파일러는 64비트 데이터 버스에서 사용할 수 있는 큰 버킷 대신 작은 버킷을 사용합니다.이는 큰 버킷을 사용하도록 컴파일된 동일한 응용 프로그램에 비해 실행 속도에 가장 큰 영향을 미칩니다.
참고로 16비트 Windows 바이너리로 컴파일된 응용 프로그램(16비트 데이터 버스가 있는 80-286 CPU에서 실행되는 이전 버전의 Windows)은 더 이상 완전히 지원되지 않습니다. 단, Windows 10에서는 여전히 NTVDM을 활성화할 수 있습니다.
의 케이스입니다.NET, Java 및 기타 해석된 "바이트 코드"
최근까지 컴파일러는 소스 프로그램(예를 들어 C++ 소스)을 기계어 프로그램으로 변환하는 데 사용되었지만, 이 방법은 현재 회귀되어 있습니다.
주요 문제는 일부 CPU의 기계어가 다른 CPU와 동일하지 않다는 것입니다(ARM 칩을 사용하는 스마트폰과 인텔 칩을 사용하는 서버의 차이를 생각해 보십시오).양쪽 하드웨어에서 같은 바이너리를 사용할 수 없고, 같은 언어를 사용할 수 없습니다.또, 이것이 가능해도, 동작의 큰 차이가 있기 때문에, 양쪽의 머신에서는 비효율적입니다.
현재 아이디어는 소스에서 파생된 명령의 중간 표현(IR)을 사용하는 것입니다.Java(Sun, 안타깝게도 지금은 Oracle)와 IL(Microsoft)은 중간 표현입니다.IR을 지원하는 모든 OS에서 동일한 IR 파일을 사용할 수 있습니다.
OS는 파일을 열면 프로그램을 실행하는 최종 아키텍처를 고려하여 실제 CPU가 인식하는 "로컬" 머신 언어로 최종 컴파일을 수행합니다.예를 들면, Microsoft 의 경우입니다.NET 유니버설버전은 최종 컴퓨터에 있는 CoreCLR 가상 머신에 의해 실행됩니다.일반적으로 이러한 중간 언어에서는 데이터 버스 폭의 개념이 없기 때문에 이 n비트 프리픽스를 갖는 애플리케이션은 점점 적어집니다.
그러나 실제 아키텍처를 잊을 수 없기 때문에 애플리케이션 자체가 IR 수준에서 특정 아키텍처에 최적화되어 있지 않더라도 CoreCLR용으로 32비트 및 64비트 버전이 생성되어 최종 코드를 최적화할 수 있습니다(다운로드 및 설치용 IR 버전은 1개뿐입니다.
언급URL : https://stackoverflow.com/questions/56186081/what-does-it-mean-for-a-program-to-be-32-or-64-bit
'programing' 카테고리의 다른 글
C에서 inline 키워드는 어떤 용도로 사용됩니까? (0) | 2022.07.31 |
---|---|
왜 같은 vue 디렉티브를 여러 번 사용하여 모든 vue 디렉티브에 대해 업데이트를 호출합니까? (0) | 2022.07.31 |
Waitpid는 타임아웃과 동등합니까? (0) | 2022.07.31 |
초기화되지 않은 로컬 변수가 가장 빠른 난수 생성기입니까? (0) | 2022.07.31 |
Vue/Vuex에 mapStateToProps와 같은 리액션/리듀스가 있습니까? (0) | 2022.07.31 |