Hvordan kjøre et program i 64-bits modus

Datamaskinen din kjører tross alt på en 64-biters versjon av Windows. Hvis du åpner "Watch Manager", vil du se at de fleste programmene på systemet ditt er 32-bit. Er dette virkelig et problem?

Det er mange alternativer mellom 64-biters og 32-biters versjoner av Windows. 64-bitsversjoner av Windows kan konverteres til 32-biters versjoner sikkerhetsprogramvare 32-biters versjoner av Windows kan imidlertid ikke få tilgang til 64-biters programvare.

Hvordan finne ut om kapasiteten til programmer?

La oss sjekke med ekspeditøren for å se hvilke programmer som er 64-bit og hvilke som er 32-bit. Høyreklikk på oppgavepanelet og velg "Oppgavebehandling" eller trykk på tastekombinasjonen Ctrl+Shift+Esc for å åpne den.

Forundre deg over alle prosessnavnene. Hvis du bruker 64-bitsversjonen av Windows 8.1 eller 8, vil du legge til ordet "(32-bit)" etter navnet på 32-biters versjonen av programmet. Hvis du bruker 64-biters versjonen av Windows 7, vil du se "*32".

32-biters programmer er installert i mappen C:\Program Files (x86)\ på 64-biters Windows-versjoner, på det tidspunktet er 64-biters programmer installert i C: Program Files-mappen.
Det er bare en regel. Det er unødvendig å si at det ikke er noen annen regel som forbyr installasjon av 64-biters programmer i mappen C: Program Files (x86). For eksempel er Steam et 32-bitsprogram, så det er installert i "C: Program Files (x86)" for installasjon. Spill som du installerer på Steam er installert i mappen C: Program Files (x86) Steam for installasjon, inkl. Last ned 64-biters versjoner av spill.

Hvis du sammenligner to forskjellige Program Files-mapper, vil du finne at de fleste av programmene dine sannsynligvis er installert i mappen C:\Program Files (x86). Jeg, selv med større programmer, er 32-bit.


Kjører 32-biters programvare på et 64-biters operativsystem

Ved første øyekast virker det grådig at flere av dine Windows-program Ikke gå på akkord med 64-bits arkitekturen til operativsystemet. Du tror kanskje at det er en produktivitetsstraff for å kjøre 32-biters programmer på et 64-bits operativsystem, men det er ikke tilfelle.

Windows konverterer 32-biters programmer gjennom WoW64-allsidigheten på 64-biters versjoner av Windows. Imidlertid 64-bit Intel-prosessorer Og AMD back er gal og kan enkelt konvertere 32-bits programvare. Alle 32-biters Windows-programmene fungerer på samme måte som på en 32-biters versjon av Windows. Dermed er det mange harde koder å bytte til å installere mange programmer på 64-bit operativsystem.

Men hvis skin-programmet du bruker fortsatt er 32-bit, vil du dra nytte av at operativsystemet selv kjører i 64-bits modus. Og 64-biters versjonen av Windows er sikker.

64-bits programmer og 32-biters programmer: hva er bedre?

32-biters programmer kjører uten problemer på 64-biters versjoner av Windows-operativsystemer. Ville det vært bedre om alle programmene dine var 64-biters?

Det er absolutt fordeler med 64-bits programmer. 32-bits programmer kan bruke så lite som 2 GB minne, mens 64-bits programmer kan bruke mye mer. Fordi programmet, som var det beste for alt, ble ødelagt av angrepet, tilleggsfunksjoner Du kan hjelpe hvis du trenger å ta vare på hvordan du installerer 64-biters programmer. Google Chrome For øyeblikket er et 32-bits tillegg tilgjengelig på 64-biters versjoner av Windows, men en 64-biters versjon av dette programmet har allerede dukket opp. Og Google lover at 64-bitsversjonen av Chrome vil være raskere, sikrere og mer stabil.


Alle programmer har 64-biters versjoner. For eksempel: Photoshop, iTunes, Microsoft Office, og handlinger fra de mest populære programmene for Windows, og alle er tilgjengelige i en 64-biters visning. Resten av spillene De er også ofte 64-bit, slik at de kan bruke mer enn 2 GB minne.


Mange programmer har ikke gjort overgangen til 64-bit, og de fleste vil ikke bli spart. Du kan fortsatt kjøre de fleste av dagens 32-biters Windows-programmer, inkludert de som ble utgitt for ti år siden, på en 64-biters versjon av Windows, selv om leverandørene deres allerede er oppdatert.

En forhandler som ønsker å tilby en 64-biters versjon av programmene sine, kan laste ned en lang rekke tilleggsverktøy. Du må sørge for at den originale koden kompileres og kjører riktig som et 64-bits sikkerhetsprogram. Du er ansvarlig for å sikre og støtte to forskjellige versjoner av programmet, ettersom Windows-brukere som kjører 32-biters versjonen av Windows ikke kan kjøre 64-biters versjonen.

La oss ta Evernote-programmet som et eksempel for skrivebordsversjon Windows. Tilsynelatende, hvis de hadde gitt ut en 64-biters versjon av Evernote, ville utviklerne mest sannsynlig ikke ha lagt merke til forskjellen. Et 32-biters program kan kjøre helt fint på en 64-biters versjon av Windows, og selv om det ikke er noen vesentlige fordeler, er det ingen forskjell i 64-biters versjonen.

Hvordan finne 64-biters programmer

Som regel vil du ikke velge mellom 32-biters og 64-biters versjoner av programvare. For eksempel, når du installerer iTunes for Windows, leder Apples nettsted deg automatisk til 32-biters eller 64-biters versjoner av installasjonsprogrammet sammen med versjonen av Windows. Når du installerer Photoshop for Windows, sørg for at både 32-biters og 64-biters filer er installert. Photoshop velger automatisk їх. Noen ganger kan du legge til mer informasjon for å laste ned 32-biters og 64-biters versjoner av programmer, men ikke så mye mer.

Det er viktig å ikke søke etter 64-bits programmer, men å finne ut hvilke programmer som fungerer best for deg. For de fleste programmer spiller det ingen rolle om det er en 64-bit eller en 32-bit versjon.


Det er enkelt å levere strøm, og det er derfor det er så mange tilleggsprogrammer fortsatt 32-bit, hvis du åpner oppgavebehandlingen. Det er egentlig ikke noe stort problem, det er derfor. For de fleste programmer får ikke noe ved å bytte til 64-bits utgaver av programversjonen. Men siden utviklerne har gjort alt arbeidet og gitt ut 64-biters versjoner av alle de små skrivebordsprogrammene og verktøyene du bruker på Windows, vil du ikke kunne se forskjellen for de fleste av dem.

Da 64-biters Windows dukket opp, knirket strømmen. Støtte for 32-biters programmer, drivere og alt annet som støttes av x86-arkitektur. Installasjon og spesifisitet av vikoristannya-programmer. Introduserte grenser for 32-biters programmer. Støtte til gamle regimer og mye mer. All prisen kunne ikke tapes på siden. Til og med laget med 32-bits degradering er for stort, og i 64-biters mellomting er det i det minste lite som kan erstattes.

Denne artikkelen ser på Windows-undersystemet på Windows 64 (WOW64) og metodene som lar Windows støtte 32-biters programmer på et 64-bitssystem.

Merk: Det første forsøket på å introdusere 64-bits systemer var en fiasko, og det var tegn på reell suksess. På den tiden var det vanskelig å finne drivere for 64-bits systemer. Uten engang å snakke om programmer, ville det være en merkbar forskjell. Oppgradering til 3GB RAM, Vanvittig, i dag er fordelen sterk, men i det øyeblikket var det mer som et glorete slagord.

Enheter som støtter 32-biters programmer på 64-biters Windows

Windows 32 til Windows 64 (WOW64)

WOW64 støtter 32-bits Windows

I Windows 64 er 32-biters programmer installert i et emulert 32-bits operativsystem, kalt Windows 32 på Windows 64, eller WOW64 for kort. Hovedoppgavene til WOW64 er omorganisering og behandling av alle systemklikk fra 32-biters programmer.

For tverrfunksjonell systembehandling oppretter WOW64 en 64-bits systemrespons, og konverterer 32-biters datastrukturer til 64-biters eksterne. Deretter sendes 64-biters systemklikk til operativsystemkjernen for behandling. Alle utdata fra et 64-biters klikk vil bli behandlet og overført i formatet som programmet er lisensiert for. Med andre ord kan du faktisk slå opp systemkjernen til å være 64-bit. WOW64-delsystemet fungerer bare som et mellomledd, og skjuler data i eksterne formater.

Som med 32-bits programmer er WOW64 oppkalt etter brukernavnet, slik at fordelene som kan mottas ved omorganisering av systemklikk vil mottas på samme nivå som brukeren. Og ikke rot med 64-biters operativsystemkjernen.

Det faktum at WOW64, som et 32-bitsprogram, er installert i klientmodus, forklarer årsaken til mangelen på støtte for 32-biters drivere. Med andre ord, for å kjøre riktig, krever drivere kjernemodus, noe WOW64 ikke kan tilby. Fordi du har 64-biters Windows, må alle drivere være 64-biters.

WOW64-emulatoren er bygget på de nyeste 64-bits bibliotekene:

Merk: Dette er de eneste 64-bits bibliotekene som er inkludert i 32-bits prosessen

  • Wow64.dll er kjerneinfrastrukturen til emuleringssystemet. Kobler anrop til Ntoskrnl.exe-inngangspunkter
  • Wow64Win.dll - kobler klikk til Win32k.sys inngangspunkter
  • Wow64Cpu.dll - bytter prosessoren mellom 32-biters og 64-biters modus
  • Ntdll.dll – 64-biters versjon av Wow64.

Wow64.dll laster ned 32-bitsversjonen (x86) av Ntdll.dll og alle nødvendige 32-bits biblioteker, som stort sett er borte uten endringer. Noen av disse 32-bits bibliotekene har imidlertid fortsatt blitt endret for å passe inn i WOW64. Som regel ble slike endringer gjort gjennom de som forstyrrer RAM-en til 64-biters systemkomponenter.

Utføre filer og justere registret i WOW64

I tillegg til funksjonen med å gjenoppta og behandle systemanrop, sørger WOW64-grensesnittet også for at filer og registerinnstillinger for 32-biters programmer lagres sammen med filer og registernøkler for 64-biters programmer. For å nå dette målet bruker WOW64 to mekanismer. Omdirigering av filer til registeret, samt duplisering av registernøkler. Omdirigering oppmuntrer til en logisk presentasjon av data og viser det som om programmet kjørte på 32-bits Windows. Duplisering av registernøklene sikrer at endringer i en rekke parametere, som ikke avhenger av kapasiteten, vil være tilgjengelige for både 32-biters og 64-biters tillegg.

Filomadressering

Filomadressering sikrer at filer og kataloger for 32- og 64-biters programmer holdes atskilt og ikke påvirkes av hverandre.

Filer med 32-biters programmer er installert i:

  • C:\Program Files(x86)

32-biters systemfiler er installert i:

  • C:\WINDOWS\SysWOW64

For 64-biters programmer er filer installert i:

  • C:\Program Files
  • C:WINDOWSSYSTEM32

WOW64-omdirigeringsmekanismen sikrer at 32-bits tillegg til "C:Program Files" og "C:WINDOWS\SYSTEM32"-katalogene blir omdirigert til de riktige katalogene for 32-bitsversjoner.

Det er imidlertid ett problem med filomdirigeringer. Etterforskere og etterforskere må være klar over denne spesielle egenskapen.

Mange 64-biters programmer bruker fortsatt 32-biters modus og prosedyrer. І ikke ta forsikring hvis installatøren brukes. For å sikre at programmet er riktig installert. tobto. I "C: Program Files" må installasjonsprogrammet gi en systemmelding til operativsystemet slik at systemet undertrykker Wow64-filomdirigeringsmekanismen. Og etter installasjonen oppretter du et nytt systemklikk for å aktivere omdirigeringen igjen. Hvis du installerer uten å omdirigere, vil programmet bli installert i "C:\Program Files (x86)". Klassisk rumpe Denne nedlastingen er en 64-biters versjon av FireFox 3.5 med kodenavnet "Shiretoko", som er installert i "C: Program Files (x86) Shiretoko". Selvfølgelig vil Firefox fungere normalt som før. Det eneste du ikke kan tjene er bare å endre programikonet.

Merk: Det er mulig at Shiretoko allerede har rettet dette problemet i tidlige versjoner var på samme måte.

Registeromdirigering

Registernøkler spesifikke for 32-bits tillegg vil bli omdirigert fra:

  • HKEY_LOCAL_MACHINE\Software
  • HKEY_LOCAL_MACHINE\Software\WOW6432Node

Slik kan du opprette en registeroppføring i en annen fil (men ikke nødvendigvis):

  • HKEY_CURRENT_USER\Software\WOW6432Node

Denne tilnærmingen lar 32- og 64-biters tillegg lese normalt, uten problemer med å overskrive, sette opp hverandre.

Duplikatregister

Enhver omdirigering av nøkler og registerverdier må dupliseres. Dette betyr at hvis et 32-bitsprogram gjør endringer i en omdirigert del av registeret, må endringene også gjøres for 64-bits tillegg. I dette tilfellet gjelder prinsippet "den som er venstre har rett". For eksempel, hvis du installerer tre tillegg som binder deg til samme filtype, så er assosiasjonen til den utvidede filen skylden for det gjenværende tillegget.

  1. Installer et 32-bitsprogram som knytter seg til XYZ-utvidelsene
  2. Installer 64-biters versjonen av programmet, som er knyttet til den utvidede filen XYZ
  3. Installer et annet 32-bitsprogram som er knyttet til XYZ-utvidelsen

Som et resultat av disse handlingene, ved å klikke på filen med XYZ-utvidelsen, kan Windows Utforsker åpne programmet som ble installert på 3. trinn. Aje assosierte seg selv med utvidelsen.

Alt dette er mulig for 32-bits tillegg i Wow64, som automatisk laster ned filen og dupliserer nødvendige parametere og registernøkler. Med andre ord kan 32-biters programmer konverteres til standardversjonen, og gjøre de nødvendige endringene for dem ved hjelp av Wow64.

Det er en lav grense for WOW64-delsystemet

Noen, men ikke alle, 64-biters funksjoner er tilgjengelige for 32-biters programmer

Wow64 lar 32-bits applikasjoner dra nytte av funksjonaliteten og egenskapene til 64-bits systemer. For eksempel når riktig innstilt, kan slike programmer bruke opptil 4 GB RAM. Tilgang til andre sammenkoblingsfunksjoner gjennom enhetsfunksjonene til 64-bits systemer. For eksempel støtter 64-biters Windows 64-biters logiske operasjoner. Tim ikke mindre, 32-biters programmer kan ikke få tilgang til dem, de kan forstyrre 32-biters logiske operasjoner.

Merk: Hovedårsaken til forskjellen er forskjellen i datainnsending mellom 32- og 64-bits tillegg. Et 32-bits tillegg dekker ganske enkelt ikke 64-biters datatyper.

Det er ikke mulig å blande kode (Code Injection) av 32-biters og 64-biters tillegg

På et 64-bits Windows OS kan du ikke kjøre 32-bits kode på en 64-bits prosess, akkurat som du ikke kan kjøre 64-bits kode på en 32-bits prosess. Programmer som bruker kodeinjeksjon for å legge til funksjonalitet til andre programmer vil vanligvis oppleve feil.

Dette faktum forklarer hvorfor de fleste 32-bits Windows-shell-utvidelser ikke kjører under 64-biters Windows. De fleste av disse utvidelsene bruker Code Injection for installasjon i Windows Utforsker.

WOW64 støtter ikke 16-bits installasjonsprogram

WOW64 vil gi støtte for 16-biters Microsoft-installatører ved å erstatte installasjonsprogrammet med en full 32-biters versjon. Denne støtten gjelder ikke for andre produkter. Så hvis du trenger å revidere et gammelt program, så, best av alt, må du finne en emulator eller en bærbar versjon.


Ytterligere alternativer for å kjøre 32-biters programmer på Windows 64

Windows Virtual PC

Windows Virtual PC er en gratis programvare som lar deg kjøre flere operativsystemer på én datamaskin. Virtual PC gir en spesiell mellomvare som støtter eldre programvare som ikke er installert eller lansert i Windows 7. Alle operativsystemer som kjører under Virtual PC er installert i den virtuelle maskinen. Dette betyr at operativsystemene som kjører ikke vet om de som kjører på et annet system.

Systemegenskaper og funksjonalitet varierer sterkt mellom versjoner av Virtual PC og versjoner av Windows. Så før du begynner å bruke Virtual PC, må du sørge for at programmet støtter både operativsystemet og operativsystemet som skal kjøres på det. En av de gjenværende versjonene støtter for eksempel ikke lenger versjoner av Windows lavere enn Windows XP SP3.

Windows XP-modus (XPM)

Windows XP-modus begrenser ikke spesifikt implementeringen av Windows Virtual PC, som følger med den forhåndsinstallerte en kopi av Windows XP Professional SP3. Denne tilgangsmodusen er ikke tilgjengelig i Enterprise-, Ultimate- og Professional-versjonene av Windows 7 64-bit.

Uavhengig av mulighetene som dette regimet kan gjøre seg skyldig i, er alle som har vunnet XPM fast bestemt på å vikoristere dette regimet bare som en selvfølge. Sammenlignet med andre virtualiseringsprodukter er produktiviteten imponerende, og standardkonfigurasjonen krever en rekke strømforsyninger.

Merk: Inntil for veldig lenge siden kan justeringer av galskapsmodus reverseres. Mer detaljert informasjon finner du i anmeldelsen Hvordan kjøre gamle programmer på Windows 7 / Vista? (Div. Microsoft Application Compatibility Toolkit).

Multi-Vantage Windows

Du kan installere mer enn én versjon av Windows på én datamaskin ved hjelp av multi-nedlasting. For eksempel må du installere 32-biters og 64-biters versjoner av Windows én etter én. Skin-operativsystemet er installert på den tilstøtende diskpartisjonen, og inntektsbehandleren er installert på standardpartisjonen. Installasjonsbehandlingen lar deg velge og starte operativsystemet du vil bruke umiddelbart.

Selv om du ikke kan bruke mer enn ett operativsystem samtidig, er denne funksjonaliteten kjedelig. Sammenlignet med virtuelle maskiner forårsaker ikke denne metoden de vanlige problemene på grunn av inkonsekvens, og slike systemer er mye enklere å sette opp og vedlikeholde. I tillegg, ved å installere 32-bitsversjonen av programmet fra 64-bitsversjonen, vil du spare muligheten til å kjøre 16-biters programmer.

Det er mye å si om støtte for 32-bit på 64-bit Windows

De fleste 32-biters programmer vil fungere helt fint i Windows 64. Hovedproblemene vil være:

  1. 32-bits enhetsdrivere
  2. Programmer som ikke kan fungere uten 32-bits enhetsdrivere er vikorist. Gode ​​eksempler inkluderer antivirus og andre sikkerhetsprogrammer.
  3. Utvidelser som kodeinjeksjon. For eksempel skjell for Windows Utforsker

Alle programmer kan startes med begrensninger. Det finnes også avinstalleringsprogrammer, registerrensere og innstillingsprogrammer, slik at de bare kan få tilgang til den delen av registret som Wow64 viser.

Hvis du ikke kan kjøre et 32-bitsprogram, så se på muligheten for virtualisering eller multiplayer av flere operativsystemer.

Hvilke programmer er tilgjengelige for 32-bit eller 64-bit?

Denne maten må høres ofte. Ale, det er ingenting zagal regel Det er en multiplikasjonsfaktor, slik at de resterende delene forblir i innstillingene og funksjonene til prosessoren.

Hvis du sammenligner 32- og 64-biters programmer i de opprinnelige systemene dine, har 32-bits tillegget vanligvis mindre minne enn det tilsvarende 64-bits tillegget. Dette skyldes det faktum at 64-biters versjoner av vikoristen har 64-bits datastrukturer, som tar mer plass. Den ekstra størrelsen legges umiddelbart til timen for start og lukking av programmer, samt andre typer operasjoner knyttet til tilgang til diskstasjoner. Dette betyr at 32-biters programmer vil bli skrevet ut raskere. Tim ikke mindre, bruken av 64-biters programmer med funksjonene til en 64-bits prosessor gjør det mulig å redusere programmer med 25 % mindre enn 32-biters programmer.

I tillegg er det nødvendig å huske at å kjøre et 32-bitsprogram på 64-bits Windows betyr å kjøre Wow64, så ytelsesanalyse på en 32-bits prosessor kan inkluderes. Å kjøre Wow64 betyr ikke bare å bruke penger på klikkkonvertering, men også en rekke omdirigerings- og dupliseringsmekanismer, som krever ikke bare prosessortimer, men også RAM. Derfor er det mulig at et 32-bits tillegg vil koste mindre enn et 64-bit, men det vil definitivt koste mer enn når det kjøres tilsvarende på en 32-bits prosessor.

Vurdering 5,00 (2 stemmer)



Begynn å mestre 64-bits systemer ved å følge spørsmålet "Må vi velge prosjektet vårt på nytt for et 64-bitssystem?" På dette tidspunktet må du være sikker på kunnskapen din, i stedet for å skynde deg og tenke. På den ene siden kan du skille deg ut fra konkurrentene dine uten noen gang å markedsføre 64-bits løsninger. Ellers kan du kaste bort en time gratis på et 64-bits tillegg, som ikke vil gi deg de nødvendige konkurransefortrinnene.
Vi vil gjennomgå hovedfaktorene som vil hjelpe deg å ta et valg.

2.1. Trivialiteten i livssyklusen til tillegg

Ikke åpne 64-biters versjonen av programmet med en kort Livssyklus. For alle WOW64-delsystemer kan eldre 32-biters programmer fungere godt på 64-biters Windows-systemer Og så må du jobbe med et 64-bitsprogram, for etter 2 dager slutter du å se, uten tvil. I tillegg har praksis vist at overgangen til 64-biters versjoner av Windows vil ta lang tid, og kanskje vil de fleste av kundene dine på kort sikt velge 32-bitsversjonen av programvareløsningen din.
Ettersom vi planlegger å gjennomgå omfattende utvikling og støtte for programvareproduktet, begynner vi å jobbe med 64-bitsversjonen av løsningen din. Du kan jobbe sakte, men vær forsiktig med at jo lenger du ikke har en fullverdig 64-biters versjon, desto vanskeligere må du kanskje ty til å bruke tilleggsprogrammer som er installert på 64-biters versjoner av Windows.

2.2. Ressursintensiteten til programmene

Rekompilering av programmer for et 64-bitssystem vil tillate dem å bruke mer RAM, og også øke hastigheten på arbeidet med 5-15%. En akselerasjon på 5-10 % vil bli oppnådd for beregning av de arkitektoniske egenskapene til en 64-bits prosessor, for eksempel stor kvantitet registrerer Ytterligere 1%-5% økning i hastighet skyldes bruken av WOW64, som overfører API-klikk mellom 32-bits applikasjoner og et 64-bits operativsystem.
Hvis programmet ditt ikke fungerer med store datamengder (mer enn 2 GB) og hastigheten på arbeidet ikke er kritisk, er det ikke særlig relevant å bytte til et 64-bitssystem i nær fremtid.
Før du snakker, kan enkle 32-biters programmer ha nytte av å kjøre dem i et 64-biters miljø. Du vet at et program installert med /LARGEADDRESSAWARE:YES-tasten kan se opptil 3 gigabyte minne, siden 32-biters Windows-operativsystemet startes med /3gb-tasten. Dette er et 32-bit program som kjører på et 64-bit system, du kan se minst 4 GB minne (i praksis nær 3,5 GB).

2.3. Utvikling av bibliotek

Hvis du utvikler biblioteker, komponenter eller andre elementer ved å bruke tredjeparts programvareleverandører for å lage sin egen programvare, må du sørge for effektivitet når du oppretter en 64-biters versjon av produktene deres. Ellers vil kundene dine som sitter fast med 64-biters versjoner være nølende med å se etter alternative løsninger. For eksempel ble utviklere av programvare- og maskinvarebeskyttelse overrasket over den store forsinkelsen i utseendet til 64-biters programmer, noe som gjorde det vanskelig for mange klienter å bruke andre verktøy for å beskytte programmene sine.
En ekstra fordel med utgivelsen av en 64-bit versjon av biblioteket er at du kan selge det som et eget produkt. Derfor vil kundene dine som ønsker å kjøre både 32-biters og 64-biters programmer bli pålagt å kjøpe 2 forskjellige lisenser. For eksempel er denne policyen vedtatt av Spatial Corporation for salg av Spatial ACIS-biblioteket.

2.4. Produktets relevans for tredjepartsbiblioteker

Før du planlegger å jobbe med 64-bitsversjonen av produktet, vennligst avklar hvilke 64-biters versjoner av bibliotekene og komponentene som vurderes. Finn også ut hva prispolitikken er for 64-bitsversjonen av biblioteket. Du kan finne ut alt ved å gå inn på bibliotekets nettsider. Mens du støtter denne dagen, se etter alternative løsninger som støtter 64-bits systemer.

2.5. Tilgjengelighet av 16-bits programmer

Hvis løsningene dine fortsatt har 16-bits moduler, vil tiden deres vekkes. 16-biters programmer støttes ikke på 64-biters versjoner av Windows.
Her bør vi avklare ett punkt knyttet til bruken av 16-bits installatører. Du må fortsatt bruke en wiki for å installere visse 32-biters programmer. En spesiell mekanisme er laget som erstatter de mest populære 16-bits installatørene på den nye versjonen. Du kan ta feil når du tror at 16-biters programmer fortsatt kjører på en 64-bits mellomvare. Husk hva som er galt.

2.6. Tilgjengelighet av monteringskode

Ikke glem at bruk av mye monteringskode kan forbedre tilgjengeligheten til en 64-biters versjon av programmet betraktelig.
Etter å ha tatt i betraktning alle de oppførte faktaene, alle fordeler og ulemper, berømmer vi beslutningen om at du planlegger å overføre prosjektet til 64-bits systemer. Og hvis det er tilfelle, la oss gå videre.

3. Krok tredje. Verktøysett

Hvis du har bestemt deg for å utvikle en 64-bit versjon av produktet ditt og er villig til å bruke en time, garanterer ikke dette suksess. Sannheten er at du er ansvarlig for alle nødvendige verktøy og det kan være uakseptable hendelser.
På sitt enkleste, eller til og med uomtvistelige, kan det være et problem med tilgjengeligheten til en 64-bits kompilator. Denne artikkelen ble skrevet i 2009, men det er ikke lenger en 64-bits C++ Builder-kompilator fra Codegear. Utgivelsen vil ikke være tilgjengelig før på slutten av dagen. Det er ingen vei utenom et problem som dette med mindre du må skrive om hele prosjektet, for eksempel i Visual Studio. Selv om alt har blitt klarere på grunn av tilgjengeligheten av en 64-bits kompilator, kan andre lignende problemer virke mer subtile og dukke opp allerede på arbeidsstadiet etter overføring av prosjektet til en ny arkitektur. Jeg vil gjerne be deg om å foreta ytterligere undersøkelser, noe som er klart nødvendige komponenter, hva som kreves for å implementere 64-bitsversjonen av produktet ditt. Du kan få noen ubehagelige overraskelser.
Selvfølgelig er det umulig å gå gjennom alt som kan være nødvendig for et prosjekt, men jeg vil fortsatt gi en liste som vil hjelpe deg å finne ut av andre ting som er nødvendige for implementeringen av 64-biters prosjekt:

3.1. Tilgjengelighet av en 64-bits kompilator

Det er vanskelig å si om viktigheten av tilgjengeligheten til en 64-bits kompilator. Det gjør bare vondt.
Har du tenkt å utvikle 64-biters programmer fra wikier? gjenværende versjon(i skrivende stund) Visual Studio 2008, tabell N2 er tilgjengelig for å hjelpe deg med å finne ut hvilken utgave av Visual Studio du trenger.



Tabell nr. 2. Mulighet for ulike utgaver av Visual Studio 2008

3.2. Tilgjengelighet av 64-biters datamaskiner som kjører 64-biters operativsystemer

Du kan være vikorist først virtuelle maskinerå kjøre 64-bits tillegg på 32-bits maskinvare, men det er ekstremt tungvint og gir ikke det nødvendige testnivået. Det er viktig at maskinene har minst 4-8 gigabyte RAM installert.

3.3. Tilgjengelighet av 64-biters versjoner av alle biblioteker

Siden bibliotekene er presentert i utgangskodene, kan prosjektet ha en 64-bits konfigurasjon. Å oppdatere biblioteket på egen hånd for installasjon på et 64-bitssystem kan være frustrerende og vanskelig, og resultatet kan være upålitelig og risikabelt. Du kan også ødelegge den lisensierte eiendommen. Hvis du ser på biblioteker som binære moduler, må du også være klar over at det finnes 64-bits moduler. Du kan ikke kapre 32-biters DLL-er midt i et 64-bits program. Du kan lage en spesiell binding gjennom COM, men vi vil krone den med en flott, sammenleggbar oppgave. Vær også oppmerksom på at å legge til en 64-biters versjon av biblioteket kan koste deg ekstra kroner.

3.4. Antall genererte assemblerkode

Visual C++ støtter ikke 64-bit assembler. Du må enten bruke gjeldende 64-bits assembler (for eksempel MASM) eller implementere samme funksjonalitet som C/C++.

3.5. Modernisering av testmetodikk

Grundig omarbeiding av testmetodikk, modernisering av enhetstester, innføring av nye instrumentelle funksjoner. Rapporten om dette vil bli diskutert nedenfor, men ikke glem å inkludere den på stadiet for å estimere tiden brukt på migrering av programmer til nytt system.

3.6. Nye data for testing

Hvis du distribuerer ressurskrevende tillegg som bidrar til stor bruk av RAM, må du oppdatere databasen med testinndata. På navantazhuvalny testuvanny 64-bits tillegg forventes å gå utover de 4 gigabytene med minne som er lagret. Det kan være mange benådninger for slike hoder.

3.7. Tilgjengelighet av 64-bits systemer

Sikkerhetssystemet som vinner er ansvarlig for å støtte 64-bits systemer på alle måter du trenger. For eksempel ga Aladdin-selskapet raskt ut 64-biters drivere for å støtte Hasp maskinvarenøkler. I lang tid har det vært et system for automatisk beskyttelse av 64-bits binære filer (Hasp Envelop-programmet). På denne måten måtte beskyttelsesmekanismen implementeres uavhengig i midten. programkode Det var flere foldeoppgaver som ville kreve kvalifikasjoner og tid. Ikke glem slike øyeblikk relatert til sikkerheten til systemet og oppdateringssystemet.

3.8. Installatør

Det er nødvendig å ha et nytt installasjonsprogram som fullt ut kan installere 64-bits programmer. Jeg vil umiddelbart her nevne en tradisjonell velsignelse. Opprettelsen av 64-biters installasjonsprogram for installasjon av 32/64-bits programvareprodukter. Når du forbereder en 64-biters versjon av et program, ønsker utviklere ofte å bringe "64-bitsheten" til det absolutte nivået. Og de lager et 64-bits installasjonsprogram, og glemmer at de med et 32-biters operativsystem rett og slett ikke kan kjøre en slik installasjonspakke. Jeg beklager å si at det ikke er 32-bit-tillegget til distribusjonen som ikke starter i forhold til 64-bit, men selve installasjonsprogrammet. Selv om distribusjonen er et 64-bits tillegg, vil det være umulig å kjøre på et 32-bits operativsystem. Det viktigste er at koristuvach aldri vil kunne gjette hva som skjer. Du kan ganske enkelt laste ned installasjonspakken som du ikke kan kjøre.

4. Croc kvartaler. Sette opp prosjektet i Visual Studio 2005/2008

Å lage en 64-bits konfigurasjon for et Visual Studio 2005/2008-prosjekt virker ganske enkelt. Mapper vil være der for å se deg når du oppretter en ny konfigurasjon og ser etter eventuelle problemer i den. For å lage en 64-bits konfigurasjon trenger du bare å angi 4 nøkler:
Vi starter konfigurasjonsbehandlingen, som vist i lille N1:



Figur 1. Starte konfigurasjonsbehandlingen

I konfigurasjonsbehandlingen velger du støtten for den nye plattformen (Figur N2):



Malyunok 2. Oppretting av en ny konfigurasjon

Vi velger en 64-bits plattform (x64), og som grunnlag velger vi en 32-bits versjon (Figur N3). De parameterne som påvirker innsamlingsmodusen konfigureres av Visual Studio selv.



Figur 3. Vi velger x64 som plattform og tar Win32-konfigurasjonen som grunnlag

Tillegget av en ny konfigurasjon er fullført, og vi kan velge 64-bits konfigurasjonsalternativet og fortsette å kompilere 64-bits tillegget. Velg en 64-bits konfigurasjon for å legge til avlesninger til N4 babyen.



Figur 4. 32-biters og 64-biters konfigurasjoner er nå tilgjengelige

For å være snill mot deg vil det ikke være nødvendig å fikse 64-bits prosjektet ytterligere. Det er imidlertid mye forsinkelser i prosjektet, dets kompleksitet og antallet biblioteker som vinner. Det eneste du kan endre umiddelbart er størrelsen på stabelen. Hvis prosjektet ditt har en stabelstørrelse på 1 megabyte, bør du sette den til 2 megabyte for 64-bitsversjonen. Det er ikke for komplisert, men det er bedre å forsikre seg på forhånd. Hvis du har en stabelstørrelse som er forskjellig fra stabelstørrelsen, betyr det at å lage den for 64-bitsversjonen er 2 ganger større. For dette formålet, i prosjektinnstillingene, finn og endre parameterne Stack Reserve Size og Stack Commit Size.

5. Crook of fifths. Programsamling

Her ville det være greit å vite om typiske problemer som oppstår på kompileringsstadiet av en 64-bits konfigurasjon. Finn ut hvilke problemer som er forårsaket av tredjepartsbiblioteker, og finn ut at kompilatoren for kode relatert til WInAPI-funksjoner ikke lenger vil tillate at indikatoren plasseres i LONG-typen, og du må oppdatere koden din og endre LONG_PTG-typen . Og mye annet. Det er synd at det er så mange og så varierte endringer at det ikke er mulighet for publisering innenfor rammen av én artikkel og kanskje en bok. Du vil ha en sjanse til å se på alle endringene selv, for eksempel kompilatoren og nye fremskritt, som ikke var der før, og du vil kunne forstå hvordan du moderniserer koden.
For å gjøre livet enklere, kan du sende en samling av ressurser dedikert til utvikling av 64-biters programmer: http://www.viva64.com/links/64-bit-development/. Samlingen vokser stadig og forfatteren vil være svært takknemlig overfor leserne hvis de kan sende deg meldinger om ressurser som etter hennes mening fortjener respekt.
Vi fokuserer her hovedsakelig på typene som kan bli av interesse for utviklere under migrering av tillegg. Disse typene er presentert i tabell N3. De fleste kompilasjonsskader er forbundet med samme type feil.
Type Typestørrelse på plattform x32 / x64 Merk
int 32 / 32 Grunnleggende type. På 64-biters systemer vil du miste 32-biters.
lang 32 / 32 Grunnleggende type. På 64-biters Windows-systemer vil du miste den 32-biters. Faen hva 64-biter har Linux-systemer Denne typen er utvidet til 64-bit. Ikke glem at du bryter ned koden som må kompileres for Windows- og Linux-systemer.
størrelse_t 32 / 64 Grunnleggende usignert type. Størrelsen på typen er valgt slik at den kan tas opp maksimal størrelse teoretisk mozhlivy massivet. Size_t-typen kan brukes til å plassere indikatorer trygt (for å plassere indikatorer på funksjonen til klasser, men ikke på en spesiell måte).
ptrdiff_t 32 / 64 Ligner på size_t-typen bortsett fra signert. Resultatet ligner det for typen ptrdiff_t.
Pokazchik 32 / 64 Størrelsen på skjermen avhenger av kapasiteten til plattformen. Vær forsiktig når du konverterer pekere til andre typer.
__int64 64 / 64 Signatur 64-bits type.
DWORD 32 / 32 32-bits usignert type. WinDef.h yak:typedef usignert lang DWORD;
DWORDLONG 64 / 64 64-bits usignert type. Standard i WinNT.h som: typedef ULONGLONG DWORDLONG;
DWORD_PTR 32 / 64 En usignert type som kan plasseres i en indikator. Voided BaseTsd.h yak:typedef ULONG_PTR DWORD_PTR;
DWORD32 32 / 32 32-bits usignert type. Voided BaseTsd.h yak:typedef usignert int DWORD32;
DWORD64 64 / 64 64-bits usignert type. Voided BaseTsd.h yak:typedef usignert __int64 DWORD64;
HALF_PTR 16 / 32 En halv vagabond. Basetsd.h yak:#ifdef _WIN64 typedef int HALF_PTR;#else typedef kort HALF_PTR;#endif
INT_PTR 32 / 64 En symbolsk type som kan plasseres som et skilt. BaseTsd.h blir bedøvet som:#if definert(_WIN64) typedef __int64 INT_PTR; #else typedef int INT_PTR;#endif
LANG 32 / 32 Skilttype, som har mistet 32-bit. Derfor bør du i mange tilfeller vikorisere LONG_PTR. WinNT.h yak:typedef lang LANG;
LONG_PTR 32 / 64 En symbolsk type som kan plasseres som et skilt. BaseTsd.h blir bedøvet som:#if definert(_WIN64) typedef __int64 LONG_PTR; #else typedef long LONG_PTR;#endif
LPARAM 32 / 64 Parameter for overveldende varsling. Standard i WinNT.h som: typedef LONG_PTR LPARAM;
SIZE_T 32 / 64 Analogt med size_t-typen. Voided BaseTsd.h yak:typedef ULONG_PTR SIZE_T;
SSIZE_T 32 / 64 Analogt med ptrdiff_t-typen. Voided BaseTsd.h yak:typedef LONG_PTR SSIZE_T;
ULONG_PTR 32 / 64 En usignert type som kan plasseres i en indikator. BaseTsd.h er blank som:#if definert(_WIN64) typedef unsigned __int64 ULONG_PTR;#else typedef unsigned long ULONG_PTR;#endif
ORD 16 / 16 Usignert 16-bits type. Standard i WinDef.h som: typedef unsigned short WORD;
WPARAM 32 / 64 Parameter for overveldende varsling. WinDef.h yak:typedef UINT_PTR WPARAM;

Tabell nr. 3. Disse typene er av interesse når du overfører 32-biters programmer til 64-biters Windows-systemer.

6. Diagnose av mottatt benådning

Hvis du tror at etter å ha korrigert alle kompilasjonsfeilene, vil det langleste 64-bits programmet bli fjernet, vil du bli skuffet. Den mest sammenleggbare er foran. På kompileringsstadiet vil du rette opp eksplisitte feil som kompilatoren kan oppdage, som hovedsakelig skyldes manglende evne til implisitt type casting. Ale er toppen av isfjellet. De fleste benådningene er samlet inn. Fra utsiden av det abstrakte språket til C++ ser disse uttrykkene trygge ut og forkledd av åpenbare typereduksjoner. Det er ofte flere slike fordeler, færre enn antallet fordeler som ble identifisert på sammenstillingsstadiet.
Det er ingen spor av håp på /Wp64-tasten. Denne nøkkelen blir ofte presentert som et mirakel på jakt etter 64-bits rettelser. Faktisk lar /Wp64-tasten deg ikke lenger fjerne trinn fra forsiden når du kompilerer 32-biters kode, men i 64-biters modus vil disse trinnene i koden ikke være korrekte. Ved kompilering av 64-bits kode vil disse uansett bli sett på forhånd av kompilatoren. Dessuten, når du kompilerer et 64-bitsprogram, ignoreres /Wp64-nøkkelen. Og denne nøkkelen vil ikke lenger hjelpe i søket etter benådninger.
La oss ta en titt på de håndfulle bakene av mottatte benådninger.

6.1. Eksplisitt typecasting

Den enkleste, men slett ikke letteste å identifisere, klassen av forbindelser med eksplisitte typer, der omskjæring er nødvendig. betydelige biter.
Det mest avanserte programmet er å vise indikatorer på opptil 32-bits typer når de overføres til en funksjon som SendMessage:
MyObj* pObj = ... ::SendMessage(hwnd, msg, (WORD)x, (DWORD)pObj);

Her er typereduksjonen tydelig brukt til å konvertere indikatoren til en numerisk type. For en 32-bits arkitektur er målrettingen riktig, siden den gjenværende parameteren til SendMessage-funksjonen er av typen LPARAM, som på en 32-bits arkitektur unngås som DWORD. For en 64-bits arkitektur vil DWORD-variabelen bli erstattet av LPARAM. LPARAM-typen er egnet for arkitekturer som varierer i størrelse fra 32 til 64 biter.
Dette er en enkel feil, men ofte ser typecastingen mer åpenbar ut og det er umulig å avsløre kompilatorens fremskritt, eller det er umulig å søke i teksten i programmet. Eksplisitt typecasting brukes til kompilatordiagnostikk, resultater og indikasjoner for å fortelle kompilatoren at typecasting er korrekt og programmet tar ansvar for kodesikkerhet. Et åpenbart søk hjelper heller ikke. Typer har kanskje ikke standardnavn (angitt av programmereren via typedef), men det er også mange måter å lage eksplisitte typecasts på. For pålitelig diagnose av slike defekter er det nødvendig å bruke spesialverktøy, for eksempel Viva64 eller PC-Lint-analysatorer.

6.2. Implisitt type induksjon

Det neste trinnet er assosiert med en implisitt cast-type, som også innebærer å kaste bort betydelige biter. Fread-funksjonskoden fungerer når du leser en fil, men er feil når du prøver å lese mer enn 2 gigabyte med data på et 64-bits system.
size_t __fread(void * __restrict buf, size_t size, size_t count, FILE * __restrict fp); size_t fread(void * __restrict buf, size_t size, size_t count, FILE * __restrict fp) ( int ret; FLOCKFILE(fp); ret = __fread(buf, størrelse, count, fp); FUNLOCKFILE(fp); return (ret) ;)

__fread-funksjonen reverserer size_t-typen, og i stedet for å lagre antall leste byte, reverseres int-typen. Som et resultat, under ekstreme omstendigheter, kan funksjonen rotere feil antall byte som faktisk vil bli lest.
Du kan se at dette er analfabet kode fra begynnelsen, slik at kompilatoren er informert om slik type induksjon og så er slik kode lett å gjenkjenne og korrigere. Dette er teoretisk. Og praktisk talt inn det virkelige liv h flotte prosjekter alt kan være annerledes. Dette eksemplet er hentet fra FreeBSD-utgangskoden. Benådningen ble rettet i 2008! Dette til tross for at den første (eksperimentelle) 64-biters versjonen av FreeBSD ble utgitt tilbake i 2003.
Akseutgangskode før korreksjon:
http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/stdio/fread.c?rev=1.14
Og korrigeringsaksen er et alternativ (bryst 2008) til Roku:
http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/stdio/fread.c?rev=1.15

6.3. Robot med biter, ødelagt

Det er lett å gjøre feil i kode som fungerer med faste biter. Den offensive typen melking er assosiert med ZSUVU-operasjoner. La oss ta en titt på baken:
ptrdiff_t SetBitN(ptrdiff_t verdi, usignert bitNum) ( ptrdiff_t maske = 1<< bitNum; return value | mask; }

Pekekoden er egnet for 32-bits arkitektur og lar biter nummerert 0 til 31 plasseres som én. Etter overføring av programmer til en 64-bits plattform, er det ikke nødvendig å sette biter nummerert 0 til 63. Ellers vil ikke koden sette biter nummerert 32-63. For å animere respekt, SÅ "1" KAN skrive INT I når Blagly 32 POSSER Perespovnnya, Yak vises til Malyunka 5. Ozhamamo i resultatet (Figur 5-B) Abo 1 (Figur 5-C) Legg VID Realizati Comp ungdommen.



Malyunok 5. A - Korrekt installasjon av 31. bit i en 32-bit kode; B, C - Retting av installasjonen av 32. bit på et 64-bit system (to atferdsalternativer)

For å korrigere koden må du lage en konstant "1" av samme type som maske:

ptrdiff_t maske = ptrdiff_t(1)<< bitNum;

Vær også oppmerksom på at hvis koden ikke blir rettet, vil det føre til enda en feil. Når 31 bits er satt på et 64-bit system, vil resultatet av robotfunksjonen være verdien 0xffffffff80000000 (div. Figur 6). Resultatet er virus 1<< 31 является отрицательное число -2147483648. Это число представляется в 64-битной целой переменной как 0xffffffff80000000.



Malyunok 6. Fikse installasjonen av den trettiførste biten på et 64-bitssystem

6.4. Magiske tall

Mange inkonsekvenser kan skapes ved å sette magiske konstanter, for eksempel tall, som også bidrar til å bestemme størrelsen på en bestemt type. Den riktige løsningen er å bruke sizeof()-operatorene til slike formål, ellers kan det store programmet miste den gamle kodebiten fullstendig, der det ble fastslått at størrelsen på indikatoren er 4 byte, og size_t-typen alltid er 32 biter. Ring disse tjenestene for å se slik ut:
size_t ArraySize = N * 4; size_t *Array = (size_t *)malloc(ArraySize);

Hovednumrene som bør plasseres med forsiktighet ved overgang til en 64-bits plattform finnes i tabell N4.



Tabell nr. 4. Grunnleggende magiske verdier som ikke er trygge når du overfører tillegg fra en 32-biters til en 64-biters plattform

6.5. Fullføring av 32-bits variabler som indekser

Programmer som samler inn store mengder data kan oppleve problemer knyttet til indeksering av store volumer eller kan oppleve evige sykluser. Den angripende baken vil ta to hevner på en gang:
const size_t size = ...; char *array = ...; char * end = matrise + størrelse; for (ufortegn i = 0; i != størrelse; ++i) (konst int en = 1; end[-i - en] = 0; )

Det første problemet er at hvis størrelsen på dataene overstiger 4 gigabyte (0xFFFFFFFF), så er det mulig at den evige syklusen vil bli utløst, siden endringen "i" er av typen "usignert" og aldri vil nå verdien 0xFFFFFFFF . Jeg skriver spesifikt at skyldfølelse er mulig, for at det ikke skal bli for smertefullt. Dette avhenger av hvilken kode kompilatoren produserer. For eksempel, i feilsøkingsmodusen vil den evige sløyfen være til stede, men i utgivelseskoden vil det være en løkke, så kompilatoren bestemte seg for å optimalisere koden, slik at et 64-bits register og sløyfen var korrekt. Alt dette skaper forvirring, og koden du har jobbet med vil uunngåelig slutte å virke den kommende dagen.
Et annet kutt er assosiert med passasjen av massivet fra enden til kolben, for hvilke negative indeksverdier bestemmes. Koden er ment å fungere i 32-bits modus, men hvis den kjøres på en 64-bits maskin på den første iterasjonen av syklusen, vil tilgang utover arrayet tillates og programmet vil krasje. La oss se på årsaken til denne oppførselen.

Derfor, i henhold til regelen for språket C++ på et 32-bitssystem, beregnes "-i - one" typen som neste rangering (på det første trinnet i = 0):

  1. "-i"-typen er usignert og verdien er 0x00000000u.
  2. Verdien "one" vil utvides fra type "int" til type usignert og oppdatert 0x00000001u. Merk: Int-typen utvides (av C++-standarden) til "unsigned"-typen fordi den tar del i en operasjon der det andre argumentet er av usignert type.
  3. Følgende operasjon utføres, som involverer to verdier av typen usignert og resultatet av den endelige operasjonen er 0x00000000u - 0x00000001u = 0xFFFFFFFFu. Vær oppmerksom på at resultatet er en usignert type.
  4. På et 32-bits system tilsvarer oppskalering til matrisen bak indeksen 0xFFFFFFFFu den vikoristiske indeksen -1. Da er slutten analog med slutten[-1]. Som et resultat er array-elementet riktig dannet.
På et 64-bits system vil bildet være et helt annet. Den usignerte typen vil bli utvidet til fortegnet ptrdiff_t og array-indeksen vil være 0x00000000FFFFFFFFi64. Som et resultat vil du gå utover grensene til arrayet.
For å korrigere koden må du endre typer som ptrdiff_t og size_t.

6.6. Utmattelse knyttet til endringer i typer seirende funksjoner

Det finnes benådninger, der, til tross for alt, ingen er skyldige, men de slutter aldri å være benådninger. Det er klart at for lenge siden i en fjern galakse (i Visual Studio 6.0) ble et prosjekt delt inn i en av den nåværende klassen CSampleApp, som er en etterkommer av CWinApp. Basisklassen har en virtuell funksjon kalt WinHelp. Verktøyet blokkerer denne funksjonen og eliminerer nødvendige handlinger. Visuelt er dette representert av baby 7.



Figur 7. Original korrekt kode laget av Visual Studio 6.0

Deretter overføres prosjektet til Visual Studio 2005, hvor prototypen til WinHelp-funksjonen er endret, men ingenting er notert, siden DWORD- og DWORD_PTR-typene lagres i 32-biters modus og programmet fortsetter å kjøre riktig (fig. leksjon 8) ).



Malyunok 8. Ikke riktig, men original 32-bits kode

Programmet sjekker for å vise at på et 64-bits system er størrelsen på DWORD- og DWORD_PTR-typene forskjellig (Figur 9). Det viser seg at i 64-bits modus er det to forskjellige funksjoner til WinHelp, noe som naturligvis er feil. Vær oppmerksom på at lignende pastaer kan finnes ikke bare i MFC, men noen funksjoner har endret typen argumenter, men også i koden til programmene og tredjepartsbibliotekene dine.



Malyunok 9. Benådningen vises i 64-biters kode

6.7. Diagnose av mottatt benådning

Lignende 64-biters programmer kan brukes og brukes. Tim, som er hekta på slike irritasjonsmomenter og gjerne vil vite mer om dem, vil sitere artikkelen "20 pastaer med portert C++-kode til 64-biters plattform."
Som du ser, stadiet med å søke etter mottatte tjenester og ikke-trivielle oppgaver, vil de fleste av dem dukke opp uregelmessig eller bare på de store innspillsforpliktelsene til disse. For å diagnostisere slike defekter er statiske kodeanalysatorer best egnet fordi de kan verifisere all programkode, uavhengig av inngangsdata og frekvensen av dens utførelse i ekte sinn. Det er nyttig å bruke statisk analyse både ved overføring av tillegget til 64-bits plattformer for å finne flere fordeler i startfasen, og i videreutviklingen av 64-bits løsninger. I forkant av statisk analyse kan programmet begynne å bedre forstå særegenhetene ved problemene knyttet til 64-bits arkitektur og skrive mer effektiv kode. Forfatteren av denne artikkelen er utvikleren av en av disse spesialiserte kodeanalysatorene, kalt Viva64. Du kan lære mer om verktøyet i detalj og laste ned en demoversjon fra nettstedet til selskapet LLC "Software Verification Systems".
Det er rimelig å si at slike kodeanalysatorer som Gimpel PC-Lint og Parasoft C++Test har sett med regler for diagnostisering av 64-biters defekter. Først av alt, selv om analysatorene er av juridisk betydning og reglene for diagnostisering av 64-biters feil er dårlig representert. På den annen side er de mer orientert mot LP64-datamodellen, som brukes i Linux-familien av operativsystemer, noe som reduserer kostnadene for Windows-programmer som bruker LLP64-datamodellen.

7. Krok somiy. Modernisering av testprosessen

Beskrivelser i forrige del av søket etter endringer i programkoden er nødvendig, men ikke tilstrekkelig. Den samme metoden, inkludert statisk kodeanalyse, gir ikke en fullstendig garanti for å identifisere alle feil og det beste resultatet kan kun oppnås ved å kombinere forskjellige teknikker.
Hvis 64-biters programmet ditt behandler mer data enn 32-biters versjonen, må du utvide testene til å omfatte behandling av mer enn 4 gigabyte med data. Dette er grensen utover som de begynner å vise seg mange 64-biters fordeler. Noen ganger kan slike tester ta mye lengre tid, og vi forbereder dem til de kreves senere. Be om at testene skal skrives på en slik måte at de samler et lite antall elementer fra hudtesten og dermed lar alle interne enhetstester bestå, for eksempel? i noen minutter, og automatiske tester (for eksempel ved hjelp av AutomatedQA TestComplete) i noen år. Sorteringsfunksjonen på et 32-bits system, som sorterer 100 elementer, vil garantert fungere riktig på 100 000 elementer. Imidlertid kan selve funksjonen på et 64-bits system mislykkes i å behandle 5 milliarder elementer når den prøves. Ytelsen til en enhetstest kan reduseres med millioner av ganger. Ikke glem å sjekke tilpasningstestene for timen for mestring av 64-bits systemer. En av løsningene er å kjøre enhetstester på svenske enheter (som jobber med en liten mengde minne) og større som samler gigabyte og lanseres for eksempel om morgenen. Automatisert testing av ressurskrevende 64-bits programmer kan utføres på grunnlag av divisjonsberegninger.

Tagger:

Legg til merkelapper
Del med venner eller spar selv:

Vantaged...