2012-03-22 3 views
0

x86 및 x64 용 .net CLR이 다른가요?x86 및 x64 용 .net CLR이 다른가요?

decimal i = 89; 
i=i++; 

위의 코드는 x86, x64에서 CLR에 의해 생성 된 고유 코드가 다른가요?

UPDATE : 예 경우 내가 기계 비트의 독립적 CLR 버전을 모두 설치됩니다 내 컴퓨터에서 Visual Studio를 설치할 때? 공연으로 무언가를 할 수 있습니까?

답변

3

예, 32 비트 및 64 비트 특정 JITter가 있습니다. 어떤 코드가 실행되는지는 CLR을로드 한 호스트 환경/프로세스와 어셈블리 자체에 따라 다릅니다.

어셈블리를 빌드 할 때 x86, x64 또는 "AnyCPU"를 대상으로할지 여부를 선택할 수 있습니다.

  • AnyCPU는 64 비트에서 32 비트 및 64 비트에서 32 비트로 실행됩니다.
  • 32 비트는 32 비트에서 32 비트로 실행되며 64 비트에서는 WOW64에서 실행됩니다.
  • 64 비트는 32 비트에서 실행되지 않지만 64 비트에서는 64 비트로 실행됩니다.

이 기능을 도입하기 전에 만들어진 '레거시'어셈블리의 경우도 있습니다. 나는 그들이 32 비트 것들과 똑같이 행동한다고 ​​믿는다.

어셈블리에 32 비트 네이티브 종속성이있는 경우이를 32 비트로 표시해야합니다. 그렇지 않으면 64 비트 환경에서 64 비트로로드되고 종속성이로드되지 않습니다.

는 업데이트 된 질문에 대답하려면 :

64 비트 시스템은 32 비트 설치 64 비트 CLR을 모두해야합니다. 32 비트는 WOW64에서 32 비트 어셈블리를 실행하는 데 필요합니다. (예 : Visual Studio는 32 비트 임)

포인터가 더 작기 때문에 32 비트가 더 빨리 실행될 수 있으므로 낭비되는 캐쉬/메모리가 적습니다. 반면에 64 비트 모드에서는 JITter가 사용할 수있는 레지스터가 더 많이 있습니다. 그것은 코드의 특성에 달려 있습니다.

+0

내 컴퓨터에 Visual Studio를 설치하면 컴퓨터 비트와 상관없이 CLR 버전이 모두 설치됩니까? 공연으로 무언가를 할 수 있습니까? – Dhananjay

+1

@dnkulkarni : 질문에 대한 답변을 업데이트했습니다. – porges

+0

정말 좋은 답변입니다. 고마워. 몇 가지 질문이 제기되었습니다.> 1. "64 비트 컴퓨터에는 32 비트 및 64 비트 CLR이 모두 설치됩니다." Qst - 언제 그리고 누가 설치합니까? 좋은 정보 출처 링크가 있어야합니다 ... 공유하십시오. – Dhananjay

관련 문제