Porting x86/64 Windows-programmer til Windows 8 ARM

Indlæg af Hanne Mølgaard Plasc

Problem



Denne artikel (fra Windows engineering team) siger: [1]



  WOA [[Windows On ARM]] understøtter ikke nogen form for virtualisering eller emulering,
  og vil ikke aktivere eksisterende x86/64 applikationer til at blive portet eller køre.



Betyr det, at jeg ikke engang kunne genkompilere en x86/64-applikation fra kilde til ARM?


Hvis ja, hvad forhindrer mig egentlig i at gøre det? Min forståelse er, at Win32 API er til stede på Windows 8 ARM. [2]


Hvis nej, hvad betyder de ved ikke at kunne porte x86/64 applikationer til ARM?

Bedste reference


Kun en delmængde af Win32 understøttes på Win8 for ARM:



  • http://msdn.microsoft.com/en-us/library/windows/apps/br205757.aspx



Hvis du forsøger at opbygge et program, der bruger et Win32 API, der ikke understøttes, vil det ikke blive bygget, fordi API'en ikke vil være i biblioteket. Hvis du forsøger at oprette dit eget bibliotek for at understøtte API'erne, er applikationen stadig vil ikke være anvendelig, fordi den eneste måde at distribuere apps til kunder vil være via MS App Store, som uden tvivl vil kontrollere API-overensstemmelse. [3]


Fra 'Bygge Windows til ARM processor arkitektur' artikel: [4]



  Forbrugerne får alle software, herunder enhedsdrivere, gennem Windows Store og Microsoft Update eller Windows Update.



Det kan være muligt at gøre det på din udviklingsmaskine (men måske ikke - jeg er virkelig ikke sikker på, om en sådan 'hack' vil være mulig, understøttet eller ej), men du vil bestemt ikke kunne distribuere det i nogen slags udbredt mode.


Kort sagt, vil enhver eksisterende Win32-applikation sandsynligvis have brug for betydeligt arbejde, der skal overføres til Win8 til ARM. Det venter ikke at genopbygge og rette eventuelle fejl, der ser ud til at få applikationen til at køre på ARM.

Andre referencer 1


Fra den Windows-artikel, du linker til, er det andet citatte afsnit morderen. Porting eksisterende apps er helt sikkert IKKE understøttet.



  Udviklere der ønsker at målrette WOA gør det ved at skrive ansøgninger til WinRT (Windows API'er til opbygning af Metro stil apps) ved hjælp af de nye Visual Studio 11 værktøjer på en række forskellige sprog, herunder C #/VB/XAML og Jscript/HTML5. Indbygging af native kode WinRT understøttes også ved hjælp af C og C ++ , som kan målrettes på tværs af arkitekturer og distribueres gennem Windows Store. WOA understøtter ikke at køre, emulere eller overføre eksisterende x86/64 desktop apps . Kode, der kun bruger system eller OS-tjenester fra WinRT, kan bruges i en app og distribueres via Windows Store til både WOA og x86/64. Forbrugerne får alle software, herunder enhedsdrivere, gennem Windows Store og Microsoft Update eller Windows Update.

  
   Hvis vi aktiverede den brede port af eksisterende kode, ville vi undlade at levere på vores forpligtelse til længere batterilevetid, forudsigelig ydeevne og især en pålidelig oplevelse over tid. Konventionerne, der bruges af dagens Windows-apps, betyder ikke nødvendigvis give dette, uanset om det er baggrundsprocesser, polling loops, timers, system kroge, opstartsprogrammer, registreringsændringer, kernel mode kode, admin rettigheder, usignerede drivere, tilføjelser eller en række andre fælles teknikker. Ved at undgå disse konstruktioner kan WOA levere et nyt niveau af kundetilfredshed: din WOA PC vil fortsætte med at fungere godt over tid, da apps er isoleret fra systemet og hinanden, og du vil forblive i kontrol med, hvilken ekstra software der kører på på vegne af dig selv, mens du lader evnen til forskellige hardware skinne igennem.


Andre referencer 2


De giver denne advarsel lidt længere i din citerede artikel:



  Derudover kan udviklere med eksisterende kode, enten i C, C ++, C #, Visual Basic eller JavaScript, inkorporere denne kode i deres apps, så længe den er målrettet mod WinRT API-sæt til Windows-tjenester.



De har fået version af Office og IE til rådighed, jeg er positiv til de ikke-genoprettede genimplementeringer.