Første trin med montering

Indholdsfortegnelse
montage er et sprog på lavt niveau, hvis funktion er at tilvejebringe alle de nødvendige elementer til programmering af arkitekturen på stationære pc'er eller bærbare computere. Dens indlæringskurve er lidt stejl, og meget få begreber kan anvendes fra sprog på højt niveau som f.eks Python, Ruby eller JavaDet er dog det mest kraftfulde sprog til programmering af arkitekturer baseret på x64.
På trods af at det er et komplekst sprog, efterlader det i dets mest aktuelle versioner brugen af ​​hexadecimale til side og erstatter dem med navngivningskonventioner, der er lettere at huske og læse, ud over at have højere egenskaber, såsom at tillade brug af makroer og inklusion brugerdefinerede datatyper.
Når udviklingsprocessen slutter, læses disse kodelinjer af samleprogrammet og oversættes derefter til maskinkode ved en proces, der ligner den samling på sprog på højt niveau, men her kaldes det tilslutte.
I forbindelse med denne vejledning ser vi i første omgang, hvordan kodningsprocessen er i 32 bit, da det er et grundlæggende trin for at opnå en større forståelse af sproget og kodningsprocessen i applikationer af 64 bit, dette ved at dele mange karakteristika med arkitekturen x86 64-bit.
Der er mange måder at starte kodning på montage til 32-bit applikationer, men en af ​​de nemmeste og mest praktiske måder at gøre det på er ved Visuelt studie da den har noget der hedder samlet online hvor koden til montage er indlejret i C ++ normal og aktuel, kan dette gøres i en enkelt linje eller i kodeblokke med det reserverede ord __asm.
VigtigSøgeordet __asm ​​kan bruges med en enkelt understregning. Dette er et gammelt direktiv, der bruges til at sikre kompatibilitet i mindre moderne applikationer.
Efter at have afklaret dette, er det første, vi skal gøre, at opnå Visuelt studie, til denne vejledning brugte vi versionen Express koden er dog gyldig i begge versioner af SDI. Vi downloader i følgende link vores SDI og vi kører i installationsprogrammet:

Når installationsprocessen er afsluttet, kan vi begynde at kode ind montage, til dette vil vi lave et lille eksempel, hvor vi vil demonstrere, hvordan vi kan integrere koden for montage i C ++ med det reserverede ord __asm, hvor ethvert kodesegment ved siden af ​​dette ord vil blive behandlet som indfødt kode fra montage af kompilatoren C ++.
Vi åbner vores Visual Studio og opretter et nyt projekt af typen Win32 -konsolprogram, vi skubber okay og guiden til oprettelse af projekt vises, hvilket vil spørge os om hvilken type projekt vi ønsker, og hvis vi vil have et tomt, anbefaler vi at forlade alle standardindstillingerne og trykke på Afslut:

FORSTØRRE

Guiden opretter en grundkode til vores projekt, som indeholder et bibliotek og hovedmetoden, den skal se sådan ud:
 #include "stdafx.h" int _tmain (int argc, _TCHAR * argv []) {return 0;}
Efter at have basiskoden nu skal vi tilføje vores linje med montage, derudover skal vi tilføje biblioteket for at kunne udskrive efter konsol og navnerum så alt fungerer korrekt, lad os se den sidste kode:
 #include "stdafx.h" #include using namespace std; int _tmain (int argc, _TCHAR * argv []) {int x = 0; _asm mov x, 25 cout << "Værdien for x er:" <<>
Hvad vi har gjort her er at definere en variabel kaldet x og derefter gennem kode montage vi tildeler den værdien 25, for endelig at printe den med cout, som vi kan se, er det en ret simpel proces at integrere Monteringskode, nu mangler vi kun at køre vores lille program, for dette kan vi trykke på Ctrl + F5 hvor vores program vil blive kompileret og eksekveret, lad os se hvordan denne operation ser ud:

FORSTØRRE

Derudover kan vi inkludere flere linjer med kode fra montage i vores kode C ++, som vi kan opnå ved at placere det reserverede ord __asm og åbner en kodeblok, lad os se, hvordan vi opnår dette:
 float Sqrt (float f) {__asm ​​{fld f // Sæt f på operationsstakken fsqrt // Beregn sqrt}}
Fordele ved inline samlingDer er mange fordele ved at bruge inline samling i stedet for en native applikation af 32 bit af montagef.eks. sendes parametre til funktionerne fuldstændigt af kompilatoren af C ++ og det vil injicere den nøjagtige mængde maskinkode, så vi ikke behøver at bekymre os om et hukommelsesoverløb eller lignende.
Men ligesom vi har fordele, finder vi også ulemper ved denne kodning, en af ​​dem er, at udvikleren mister lidt kontrol over applikationen, såsom at manipulere stakken eller endda definere deres egne konventioner.
Online samling giver en masse fleksibilitet og giver os mulighed for hurtigt og let at komme ind i denne verden, men denne kodningsmetode forhindrer udviklere i at få adgang til nogle forsamlingselementer, derfor er det almindeligt at tilføje native og separat kode til vores projekt.
Til dette skal vi oprette vores filer separat og derefter inkludere de metoder, vi har brug for, for at nå vores mål vil vi følge følgende trin:
1- Først opretter vi et nyt projekt, det kan være et projekt af typen C ++ eller fra windows app, begge arbejder med at tilføje filerne fra montage.
2- Vi tilføjer en fil C ++ til vores projekt, som vi vil kalde rektor.cpp som er ansvarlig for at kalde en procedure fra vores fil montage sender den en række numeriske værdier og derefter udskriver hvad denne procedure returnerer, lad os se indholdet af vores fil rektor.cpp:
 #include ved hjælp af navneområde std; ekstern "C" int findMinorNum (int * i, int count); int main () {int arr [] = {4, 2, 6, 4, 5, 1, 8, 9, 5, -5}; cout << "Det mindste tal er:" << findMinorNum (arr, 10) << endl; cin.get (); returnere 0;}
3- Så højreklikker vi på vores projekt, det findes i højre side af vores interface, i afsnittet af Solution Explorer. Vi vælger Byg afhængigheder og senere Byg tilpasninger. Vi gør dette for at fastslå, hvordan Visual Studio håndterer filer med udvidelsen .asmDa vi ikke ønsker, at C ++ - kompilatoren skal kompilere disse filer, er vores mål, at VS skal levere disse filer til MERE M så jeg samler dem, og derefter er disse filer, der er knyttet til vores C ++, ansvarlige for dannelsen af ​​den endelige eksekverbare.
4- For at afslutte med afhængighederne vælger vi muligheden for mere M. som vi kan se på følgende billede:

FORSTØRRE

Det er vigtigt at udføre dette trin, før du tilføjer filer med forsamlingskode som Visuelt studie tildeler, hvad en fil skal gøre, når den oprettes, og ikke når den er bygget.
5- Så skal vi tilføje en anden C ++ - fil, men denne gang med udvidelsen .asm, for denne vejledning har jeg kaldt det assembler.asm. På samme måde kan vi sætte et hvilket som helst navn undtagen main.asm, da kompilatoren kan have problemer med at lokalisere, hvor din hovedmetode er.
6- Vores arkiv assembler.asm Det vil stå for beregningen ud fra en række numeriske værdier, som er den mindste værdi blandt disse og derefter C ++ Det vil tage sig af at modtage værdien til at behandle den gennem cout, lad os se indholdet af vores fil:
; assembler.asm.xmm.model flad, c.data.code findNumMenor proc exportmov edx, dword ptr [esp + 4]; mov ecx, dword ptr [esp + 8]; mov eax, 7fffffffh; cmp ecx, 0; jle Færdig; MainLoop: cmp dword ptr [edx], eax; cmovl eax, dword ptr [edx]; tilføj edx, 4; dec ecx; jnz MainLoop; Færdig: ret; findNumMinor endpend
Dette giver os mulighed for at adskille vores filer såvel som vores logik. Realiseringen af ​​denne type procedurer baseret på 32 bit er meget lidt brugt, men det er vigtigt at kende alle dens konsekvenser, lad os nu se, hvordan vi ændrer vores kode til en anvendelse af 64 bit samt de skridt, vi skal tage for at tilpasse vores miljø til Visuelt studie.
Visual Studio indeholder alle de nødvendige værktøjer til at tilføje den native samling til vores projekt i C ++, men at arbejde ud fra 64 bit vi skal lave nogle yderligere konfigurationer til vores projekt, lad os se:
1- Trinnene til at udføre denne type kodning ligner vores tidligere eksempel, men at tilpasse sig VS vi går til indstillingen Byg og vi vælger Konfigurationsmanager:

2- I konfigurationsstyringsskærmen vælger vi indstillingen Ny eller nyt i platformkolonnen, som viser en anden skærm for at vælge projektplatformen, vælger vi x64 og i optionen Kopiindstillinger fra vi forlod valgt indstillingen af Win32. Dette vil gøre VS ændre version stier fra 32 bit af MERE M til det af 64, så alt arbejdet udføres af IDE.

FORSTØRRE

3- Når dette er gjort, kan vi kompilere vores kode og eksekvere den, men vi skal ændre vores fil montage da vi arbejder på forskellige arkitekturer, lad os se den nye kode til vores fil:
; Opslag: assembler.asm .code; int findMinorNum (int * arr, int count) FindSmallest proc; mov eax, 7fffffffh; cmp edx, 0; jle Færdig; MainLoop: cmp dword ptr [rcx], eax; cmovl eax, dword ptr [rcx]; tilsæt rcx, 4; dec edx; jnz MainLoop; Færdig: ret; FindSmestest endp; ende;
Med dette afslutter vi denne vejledning, vi har allerede taget et første kig på programmering med montage, det kan virke noget komplekst i starten, men med en ordentlig beherskelse af C ++ og grundlæggende forestillinger om maskinsprog kan vi opnå interessante og nyttige ting i vores udvikling.Kan du lide og hjælpe denne vejledning?Du kan belønne forfatteren ved at trykke på denne knap for at give ham et positivt punkt

Du vil bidrage til udviklingen af ​​hjemmesiden, at dele siden med dine venner

wave wave wave wave wave