.NET에서 Windows 응용 프로그램을 컴파일 할 때 "Platform Target"을 x86 또는 x64로 설정할 수 있습니다. 이렇게하면 코드를 프로세서의 특정 아키텍처로 최적화하고 IL을 벗어날 수 있습니다. Windows Mobile 응용 프로그램에서 동일한 결과를 얻을 수있는 것이 있다면 누구에게 알리십니까? ARM 아키텍처에서 응용 프로그램을 실행하는 데만 관심이 있습니다..NET 컴파일러로 ARM 아키텍처 대상 지정
답변
Mono의 Ahead-of-Time (AOT) 편집을 사용하십시오. 그래서 그들은 ARM 플랫폼 인 iPhone에 UNITY 스크립팅을 제공합니다. afaik 이후 아무도 그 특정 플랫폼 포트를 아직 만들지 않았지만 컴파일러 등은 이미 거기에 있어야하기 때문에 Windows Mobile에서 실행하고 실행하려면 약간의 노동력이 필요할 것입니다.
Miguel de Icaza의 프레젠테이션은 MS PDC here에서 볼 수 있습니다.
플랫폼 대상을 지정한다고 생각하지 않습니다. 주어진 아키텍처에 대해 생성 된 IL을 최적화합니까? 대신, "특정 아키텍처에서만 실행됩니다. 왜냐하면 해당 아키텍처에 특정한 P/Invoke 호출이 포함되어 있기 때문입니다." 적어도, 그것은 그것의 나의 이해입니다. 즉, x64 컴퓨터에서 실행될 때 실행 파일은 호환성을 위해 32 비트 버전의 CLR에서 실행될 수 있습니다.
이 방법은 컴팩트 한 프레임 워크 (실제 플렛폼이라고 생각합니까?)에 맞는지 확실하지 않습니다.
x86 또는 x64는 IL을 최적화하지 않습니다. 이는 배포 된 시스템에서 실행되는 JITter의 작업입니다. x86 또는 x64 만 marks a bitness flag입니다.
물론 데스크톱 프레임 워크에서 MSIL을 특정 CPU로 NGEN 할 수 있습니다.하지만 IIRC이지만 네이티브 이미지가 부족하면 JIT 컴파일로 되돌아갑니다. 그 외에도, NGEN이 .NET CF에 사용 가능하다고는 생각하지 않습니다.
는 잘 모르겠어요 당신이 프로세서를 ARM을 제한해야 할 것,하지만 P는/그 안에 프로세서 유형으로 SYSTEM_INFO 구조를 반환합니다 GetSystemInfo에 호출 이유. 그렇게하면 앱이 계속 실행되지 않을 수 있습니다. ARM은 실행되지만 실제로 실행되지는 않습니다.
편집 :이 질문을 다시 읽으면 C# 및 .NET 태그 외에도 관리 솔루션 만 필요하다는 것을 알 수 있습니다. 관리하지 않으려면 ARM으로 컴파일하면됩니다.
Windows Mobile 기반 장치에서 ARM 기반 응용 프로그램을 만들려면 .NET Compact Framework를 설치하십시오. VS에 새로운 "스마트 장치"프로젝트 유형이 있습니다.
다른 ARM 플랫폼 WM에 JIT가 있는지 나도 몰라. .NET Micro Framework도 있지만 그 점에 관해서는 말할 수 없지만 아마도 이것이 당신의 질문을 해결할 것입니까?
나는 그것이 사실이라고 생각하지 않습니다. x64 응용 프로그램으로 Windows/웹 응용 프로그램을 컴파일했습니다. 기호를 사용할 수 있고 디버거를 여러 번 연결해도 디버거가 변수의 값을 가져올 수 없다는 메시지가 나타납니다. 코드는 다음과 같습니다. 최적화. –
http://social.microsoft.com/Forums/en-US/netfxbcl/thread/0705a4a3-49bf-4295-8932-ac6466172f8b –
음 ... 나는 그것을 믿을 수 있는지 잘 모르겠습니다. C# 컴파일러가 아닌 현재 아키텍처를 최적화하는 것이 JIT의 임무입니다. 생성 된 IL을 변경하여 보여줄 수 있다면 당신의 주장은 매우 설득력이 있습니다. –