Innehållsförteckning
hopsättning är ett språk på låg nivå vars funktion är att tillhandahålla alla nödvändiga element för att programmera arkitekturen för stationära eller bärbara datorer. Dess inlärningskurva är lite brant och väldigt få koncept kan tillämpas från språk på hög nivå som t.ex. Python, Ruby eller JavaDet är dock det mest kraftfulla språket för programmering av arkitekturer baserat på x64.Trots att det är ett komplext språk, lämnar det i sina senaste versioner åt sidan användningen av hexadecimaler och ersätter dem med namngivningskonventioner som är lättare att komma ihåg och läsa, förutom att de har högre egenskaper, till exempel användning av makron och inkludering användardefinierade datatyper.
När utvecklingsprocessen avslutas läses dessa kodrader av monteringsprogrammet och översätts sedan till maskinkod med en process som liknar den för kompilering på högnivåspråk men här kallas det Ansluta sig.
För denna handledning kommer vi i första hand att se hur kodningsprocessen är 32 bitar, eftersom det är ett grundläggande steg för att uppnå en större förståelse av språket och kodningsprocessen i tillämpningar av 64 bitar, detta genom att dela många egenskaper med arkitekturen x86 64-bitars.
Det finns många sätt att börja koda hopsättning för 32-bitars applikationer men ett av de enklaste och mest praktiska sätten att göra det är genom Visuell Studio eftersom det har något som heter monterad online där koden för hopsättning är inbäddad i C ++ normal och aktuell kan detta göras på en enda rad eller i kodblock med det reserverade ordet __asm.
ViktigNyckelordet __asm kan användas med en enda understrykning. Detta är ett gammalt direktiv som används för att säkerställa kompatibilitet i mindre moderna applikationer.
Efter att ha klargjort detta är det första vi måste göra att få Visuell Studio, för denna handledning använde vi versionen uttrycka men koden är giltig i båda versionerna av SDI. Vi laddar ner i följande länk vår SDI och vi kör i installationsprogrammet:
När installationsprocessen är klar kan vi börja koda in hopsättning, för detta kommer vi att göra ett litet exempel där vi kommer att visa hur vi kan bädda in koden för hopsättning i C ++ med det reserverade ordet __asm, där ett kodsegment bredvid detta ord kommer att behandlas som inbyggd kod från hopsättning av kompilatorn C ++.
Vi öppnar vår Visual Studio och skapar ett nytt projekt av typ Win32 -konsolprogram, trycker vi Okej och guiden för projektskapande visas, vilket frågar oss vilken typ av projekt vi vill ha och om vi vill ha ett tomt, rekommenderar vi att du lämnar alla standardalternativ och trycker på Avsluta:
FÖRSTORA
Guiden skapar en baskod för vårt projekt, som innehåller ett bibliotek och huvudmetoden, det ska se ut så här:#include "stdafx.h" int _tmain (int argc, _TCHAR * argv []) {return 0;}Med baskoden nu måste vi lägga till vår rad med hopsättning, dessutom måste vi lägga till biblioteket för att kunna skriva ut efter konsol och namnrymd så att allt fungerar korrekt, låt oss se den slutliga koden:
#include "stdafx.h" #include using namespace std; int _tmain (int argc, _TCHAR * argv []) {int x = 0; _asm mov x, 25 cout << "Värdet för x är:" <<>Det vi har gjort här är att definiera en variabel som heter x och sedan genom kod hopsättning vi tilldelar det värdet 25 för att slutligen skriva ut det med cout, som vi kan se, är det en ganska enkel process att bädda in Monteringskod, nu behöver vi bara köra vårt lilla program, för detta kan vi trycka Ctrl + F5 där vårt program kommer att sammanställas och köras, låt oss se hur den här operationen ser ut:
FÖRSTORA
Dessutom kan vi inkludera flera rader kod från hopsättning i vår kod C ++, vilket vi kan uppnå genom att placera det reserverade ordet __asm och öppna ett kodblock, låt oss se hur vi uppnår detta:float Sqrt (float f) {__asm {fld f // Lägg f på operationsstacken fsqrt // Beräkna sqrt}}Fördelar med inbyggd monteringDet finns många fördelar med att använda inline -montering istället för en inbyggd applikation av 32 bitar av hopsättning, till exempel skickas parametrarna till funktionerna helt av kompilatorn av C ++ och det kommer att injicera den exakta mängden maskinkod så att vi inte behöver oroa oss för ett minnesflöde eller något liknande.
Men precis som vi har fördelar, hittar vi också nackdelar med detta kodningssätt, en av dem är att utvecklaren tappar lite kontroll över applikationen, till exempel att manipulera stacken eller till och med definiera sina egna konventioner.
Online -montering erbjuder mycket flexibilitet och gör att vi kan komma in i denna värld snabbt och enkelt, men denna kodningsmetod hindrar utvecklare från att komma åt vissa monteringselement, därför är det vanligt att lägga till inbyggd och separat kod till vårt projekt.
För detta måste vi skapa våra filer separat och sedan inkludera de metoder vi behöver, för att uppnå vårt mål kommer vi att följa följande steg:
1- Först skapar vi ett nytt projekt, det kan vara ett projekt av typ C ++ eller från Windows -app, båda fungerar för att lägga till filerna från hopsättning.
2- Vi lägger till en fil C ++ till vårt projekt som vi kommer att ringa huvudman.cpp som kommer att ansvara för att anropa ett förfarande från vår fil hopsättning skicka den en rad numeriska värden och sedan skriva ut vad den här proceduren returnerar, låt oss se innehållet i vår fil huvudman.cpp:
#inkludera med namnrymd std; extern "C" int findMinorNum (int * i, int count); int main () {int arr [] = {4, 2, 6, 4, 5, 1, 8, 9, 5, -5}; cout << "Det minsta antalet är:" << findMinorNum (arr, 10) << endl; cin.get (); returnera 0;}3- Sedan högerklickar vi på vårt projekt, det finns på höger sida av vårt gränssnitt, i avsnittet av Lösningsutforskare. Vi väljer Skapa beroenden och senare Skapa anpassningar. Vi gör detta för att fastställa hur Visual Studio hanterar filer med tillägget .asmEftersom vi inte vill att C ++ - kompilatorn ska kompilera dessa filer, är vårt mål att VS ska tillhandahålla dessa filer till MER M så att jag monterar dem och sedan är dessa filer som är länkade till vår C ++ ansvariga för att bilda den slutliga körbara filen.
4- För att avsluta med beroenden väljer vi alternativet mer M. som vi kan se i följande bild:
FÖRSTORA
Det är viktigt att utföra detta steg innan du lägger till filer med Assembly -kod som Visuell Studio tilldelar vad en fil behöver göra när den skapas och inte när den byggs.5- Då måste vi lägga till en annan C ++ - fil, men den här gången med tillägget .asm, för denna handledning har jag kallat det assembler.asm. På samma sätt kan vi sätta vilket namn som helst utom main.asm eftersom kompilatorn kan ha problem med att hitta var din huvudsakliga metod är.
6- Vårt arkiv assembler.asm Det kommer att ansvara för att beräkna från en serie numeriska värden som är det minsta värdet bland dessa och sedan C ++ Det kommer att ta hand om att ta emot värdet för att bearbeta det genom cout, låt oss se innehållet i vår fil:
; assembler.asm.xmm.model flat, c.data.code findNumMenor proc exportmov edx, dword ptr [esp + 4]; mov ecx, dword ptr [esp + 8]; mov eax, 7fffffffh; cmp ecx, 0; jle Finished ; MainLoop: cmp dword ptr [edx], eax; cmovl eax, dword ptr [edx]; lägg till edx, 4; dec ecx; jnz MainLoop; Avslutad: ret; findNumMinor endpendDetta gör att vi kan separera våra filer såväl som vår logik. Förverkligandet av denna typ av procedurer baserat på 32 bitar används väldigt lite men det är viktigt att känna till alla dess konsekvenser, låt oss nu se hur vi ändrar vår kod för en applikation av 64 bitar liksom de steg vi måste vidta för att anpassa vår miljö Visuell Studio.
Visual Studio innehåller alla nödvändiga verktyg för att lägga till den inbyggda enheten till vårt projekt C ++, men att arbeta utifrån 64 bitar vi måste göra några ytterligare konfigurationer till vårt projekt, låt oss se:
1- Stegen för att genomföra denna typ av kodning liknar vårt tidigare exempel, men att anpassa sig MOT vi går till alternativet Bygga och vi väljer Konfigurationshanteraren:
2- I konfigurationshanterarens skärm kommer vi att välja alternativet Ny eller nytt i plattformskolumnen, som visar en andra skärm för att välja projektplattform, väljer vi x64 och i alternativet Kopieringsinställningar från vi lämnade valt alternativet Win32. Detta kommer att göra MOT ändra versionsvägar från 32 bitar av MER M till den av 64, så allt arbete kommer att utföras av IDE.
FÖRSTORA
3- När detta är gjort kan vi sammanställa vår kod och köra den, men vi måste ändra vår fil hopsättning eftersom vi arbetar med olika arkitekturer, låt oss se den nya koden för vår fil:; Listning: assembler.asm .code; int findMinorNum (int * arr, int count) FindSmallest proc; mov eax, 7fffffffh; cmp edx, 0; jle Avslutad; MainLoop: cmp dword ptr [rcx], eax; cmovl eax, dword ptr [rcx]; tillsätt rcx, 4; dec edx; jnz MainLoop; Avslutad: ret; FindSmallest endp; slutet;Med detta avslutar vi denna handledning, vi har redan tagit en första titt på programmering med hopsättning, det kan verka lite komplext till en början men med en ordentlig behärskning av C ++ och grundbegrepp om maskinspråk kan vi uppnå intressanta och användbara saker i vår utveckling.Gillade du och hjälpte denna handledning?Du kan belöna författaren genom att trycka på den här knappen för att ge honom en positiv poäng