Das Video kommt von YouTube: erst beim Abspielen verbindet sich die Seite mit YouTube (Google).
Assembler Crashkurs in 12 Minuten
Das Wichtigste aus dem Video
Tipp auf eine Zeit – das Video springt genau dorthin.
Transkriptautomatisch erstellt · 82 Zeilen
- so ich bin zwar kein experte in der us sammler programmierung aber ich kann euch trotzdem ein bisschen etwas darüber erzählen und zwar werde ich nicht über
- eine spezielle sammler sprache von bestimmten prozessor werden weil dann kommt man immer gleich in die details von der prozessorarchitektur oder von
- dem system über das man da gerade spricht sondern ich versuche das thema ein bisschen abstrakter anzugehen und gleichen disclaimer vorab ich bin kein
- experte in der sampler programmierung ich habe es eher mit den high level sprachen aber ich habe ein bisschen damit rumgespielt und ein bisschen
- recherchiert und ich bin mir sicher ich kann euch ein bisschen etwas darüber erzählen man kann nicht über assembler und
- maschinencode sprechen ohne nicht zu mindestens die von neumann architektur kurz zu erwähnen die seht ihr hier auszüge aufgezeichnet es geht aber um
- ein eingabegerät und ein ausgabegerät und dazwischen müssen im prinzip unseres cpu und arbeitsspeicher und die arithmetische logische einheit
- also die alu der prozessor teil der eben die tatsächlichen berechnungen durchführt bei heutigen prozessoren gehört das alles zusammen und es ist
- einfach ein eine prozessoreinheit und dann kann man eben mit dem arbeitsspeicher kommunizieren und aus dem arbeitsspeicher lesen und schreiben
- das ist so die ganz typische computer architektur von der wir jetzt ausgehen werden und das ganze sieht dann im detail etwa
- so aus auf dem prozessor befinden sich einige register zum beispiel der programm kauter das ist ein zeiger auf die aktuelle stelle speicher wo der code
- ausgeführt wird oder der stack pointer der eben auf die stelle im speicher zeigt wo gerade der stack inhalt das ist so eine temporäre speicherstelle die
- verwendet wird wenn man zum beispiel in eine funktion reingeht dann wird auf dem stack pointer der rückstand punkt für diese funktion abgelegt und so weiß man
- dann wo man zurück springen muss dann gibt es noch den akkumulator das ist das bekannteste
- general purpose register mit dem man arbeiten kann also wo man die berechnung funktionen einladen kann der ist direkt verbundenen regel mit der ago damit man
- eben damit rechnen kann und dann gibt es meistens noch fleck register oder andere general purpose krieg ist aber dass es dann abhängig von der systemarchitektur
- schauen wir uns mal die ganz typisch und assembler befehle an allen voran gibt es meist eine abgefallene operation der auch ein zyklus auf den meisten cpu es
- verbraucht und damit recht unspektakulär ist damit weist hier im prinzip den systemen an einen zyklus lang nichts zu tun warum sollte man das machen kann
- timing gründer haben es kann gründe geben warum man andere sachen überschreiben will oder na ja ganz viele möglichkeiten auf jeden fall gibt es
- diesen operation geschichte wo dann einfach nichts passiert dann haben wir in krefeld und dokument operationen dh man kann ein register oder irgendwo im
- stelle im speicher in kommentieren und dementieren manchmal auch um einen gewissen wert nicht nur um 1 oder sowas je nachdem was für befehlssatz man eben
- bekommt dann gibt es noch die möglichkeit daten herum zu schieben direkt das ist auch von architektur zur architektur ist der
- befehl lautet vielleicht ein bisschen anders und dass ich ein bisschen anders aus oder manchmal gibt es auch keinen direkten befehl sondern man muss dann
- vielleicht über einen register gehen wenn man daten herum kopieren möchte daneben daten in ein register laden ist auch eine ganz typische tätigkeit lot
- wäre hier das männern meistens kann man dann aus dem speicher das auslesen ein register laden und warum macht man das neue weil man
- eben die rechenoperation nur auf den registern vor durchführen kann und nicht im arbeitsspeicher direkt hier zum beispiel kann man noch
- arithmetische fraktionen sehen also das wäre ein typischer befehl und dinge zu addieren oder subtrahieren bestimmte register manchmal kriegt man auch
- multiplikation noch dazu oder sogar division auf neueren befehls setzen dann natürlich mit weise logische operationen durchführen auch das ist üblicherweise
- teile der der maschinen sprache und dementsprechend des assembler befehlssatz und vergleiche durchführen das ist auch
- eine ganz wichtige geschichte nur wenn ich zwei werte habt dann muss sich die irgendwie miteinander vergleichen können um dann im anschluss daraufhin
- entscheidungen treffen zu können und das wird eben über die flex im prozessor in den prozessor registern erledigt zum beispiel dass sie befleckt würde gesetzt
- werden hier bei seinem compare ja dann gibt es noch sprünge die sind natürlich wichtig um den dem programm
- fluss zu verzweigen das heißt man kann bedingt durch sprünge haben zum beispiel wenn man ein ergebnis hat das jetzt 0 ist dann kann man dann springen weil das
- zero fleck gesetzt wurde das ist ein ganz typisches beispiel dann gibt es noch eine möglichkeit so bot ihnen aufzurufen in den meisten us
- sender sprachen das heißt man kann dann ganz genau wie bei einer high level sprache auch in der funktion praktisch reinspringen und mit einem return
- statement dann wieder zurückkehren nur gibt es halt keine funktion signaturen wie bei klassischen high level sprachen sondern man ist eben selbst dafür
- verantwortlich wie man zum beispiel die parameter übergabe organisiert oder wie man die sache auf dem stick organisiert zum beispiel auch
- ja was kann man jetzt damit machen ja man kann mit assembler alles machen was ein computer machen können klar auch selber kann man eins zu eins auf
- maschinencode meppen im prinzip und dann kann man damit alles machen was der computer kann also die ganzen hochsprache und so weiter ja die sind
- alle am ende führen die maschinencode aus und maschinencode kann man als zu eins in assembler übersetzen und das heißt am ende ist alles was hier so
- passiert auf unseren computern wenn man so möchte kann man das als assembler code lesen man kriegt also die sogar die typischen techniken von strukturierten
- programmieren man kann also programme aufrufen eins nach dem anderen kann also eine sequenz darstellen es gibt bedingte sprünge das heißt man kann die selektion
- durchführen und literaturen durchführen wir können daten herum schieben wir können beliebige berechnungen durchführen natürlich sind
- manche ein bisschen schwieriger weil wir uns da die operatoren erst zusammen bauen müssen prinzipiell geht das und dann ist natürlich noch die frage gut
- werden wir jetzt tolle berechnungen anstellen können mit irgendwelchen zahlen schön und gut aber wie kann ich denn jetzt was einlesen vom keyboard zum
- beispiel oder maus oder jpeg je nach dem auf was für ein system ich bin und wie kriege ich was auf dem bildschirm dargestellt und die antwort darauf
- lautet ganz einfach das ist abhängig von dem system auf dem ihr euch gerade befindet wenn ihr ein nds hat zum beispiel dann läuft das auslesen halt
- eben anders als auf dem c64 und meistens gibt es da auch gute dokumentation dazu wo er nachlesen könnt wie das ganze funktioniert
- häufig funktioniert das entweder über sogenannte betriebssystem kommt das heißt ihr kriegt wie ein funktions aufruf vom betriebssystem den ihr
- irgendwie anleihen könnte und dann passiert irgendwas zum beispiel wird nun zeichnungen auf dem bildschirm geplättet oder andere alternative die auch häufig
- verwendet wird sind sogenannte memory map devices das heißt irgendwo im speicher gibt es sogenannte magische adressen oder ja da könnt ihr drei lesen
- und schreiben und das ist halt tatsächlich keine speicher adresse sondern dahinter steckt und ein gerät und das könnt ihr mit einem bestimmten
- protokolls ansprechen keine ahnung wenn er zum beispiel das erste bild auf einsätze dann aktiviert ihr irgendeine funktion
- genau das ist die idee dahinter so gehen wir noch auf ein konkretes beispiel ein für den sexy foto dass der prozessor der zum beispiel in nds oder
- im c64 steckt das ist ein kleines beispiel das so auch auf beiden systemen laufen sollte wir haben hier label made und memory die speicher adressen
- bezeichnen die würden jetzt einfach so sequenziell nacheinander durchnummeriert werden die einzelnen zeilen je nachdem wie viel zeit die
- jeweilige anweisung so kostet das ist eine architektur die meisten befehle kosten 2 bereits und die register sind auch alle
- acht rose habe ich wird oder weit gesagt 8 1 bald genau der akkumulator zum beispiel fast eben ein bald jetzt auf dem c64 wenn wir
- jetzt mal davon kurz ausgehen ich könnte jetzt hier mit lga den wert 10 also den dezibel wert 10 das wäre 06 in den akkumulator laden dann lade ich den wert
- 5 in das register iks das sind also zwei general purpose register es gibt auf dem c64 xy wir benutzen hier zwei davon haben
- also dann 10 a 5 in nix drin stehen und dann rufen wir unsere soutine auf das ist jetzt schon der erste unterschied zu den pseudo anweisungen die ich vorhin
- erklärt habe statt call lautet der befehl für den sprung in einer so proteine auf dem 62 vorzugeben usa das steht für jumps putin und wir springen
- jetzt eben zur soutine namens ad und das heißt die ausführung geht an der stelle jetzt weiter dort kommt so eine kleine besonderheit von sticks sind wir tun das
- ist jetzt nicht die klügste umsetzung vielleicht wie man so eine addition machen würde das ist auch nur ein beispiel und zwar können wir nur rechnen
- mit dem akkumulator und es gibt auch nur befehle zum addieren von dingen aus dem speicher mit dem akkumulator das heißt ich kann jetzt nicht einfach nix und a
- miteinander agieren deswegen muss ich den wert aus aix erst in den speicher schreiben und dann kann ich den wert aus dem speicher mit meinem wert im
- akkumulator zusammen addieren und das ergebnis landet dann im akkumulator dann springe ich zurück aus der so proteine return von putin rts und die ausführung
- geht oben in der methode weiter oder ist keine methode ist ein label im speicher mehr oder weniger auf jeden fall dort geht die ausführung weiter und ihr seht
- da nicht jetzt nachdem nachdem ich zurückgekommen bin von der sub routine davon aus ich habe im akkumulator das ergebnis und in diesem
- beispiel will ich das ergebnis von zehn +5 einfach an die speicher adresse 0 206 schreiben ja genau dann kann ich eigentlich zum exit springt die man
- jetzt hier nicht mehr sieht ist ja nur ein kleines beispiel assemblée ist wie ich schon mehrfach erwähnt habe in der regel abhängig von
- der von dem system auf dem ihr euch befindet deswegen gibt es ganz viele verschiedene formen davon mit verschiedenen syntax und semantik regeln
- da muss man sich dann immer ein bisschen rein fuchsen genau es gibt aber viele maschinen die die selbe secure haben und
- deswegen auch das gleiche befehlston der dz 80 war zum beispiel bei retro computern sehr beliebt er sei locker 80 und der sechsfache tour natürlich
- es gibt auch coole spiele da werde ich später mal noch drauf eingehen die assembler programmieren die haben dabei unterstützen das zu lernen dazu
- programmieren und das macht ziemlich viel spaß gibt später nochmal video setze heutzutage braucht man das natürlich
- nicht in der regel wenn man irgendwas normales programmieren möchte es sei denn man ist im reverse engineering bereich unterwegs oder man möchte auf
- merkwürdige alter hardware programmieren dann was ich natürlich gerne machen genau und noch ein prototyp falls ihr euch wirklich langfristig damit
- auseinander wollten eine große sammler projekt schreiben wollt dann schaut euch high level wieder makros tembler an um sich eben mit denen kann man sich eigene
- abstraktionen zusammenbauen und funktionen so dass man wieder in derzeitigen umgebung arbeiten kann mit nicht alles ganz furchtbar arbeit und
- beziehung schieben ist genau das war es auch schon für heute ich wünsche euch noch einen schönen tag wenn möchte das video gefallen hat wie immer lasst mir
- leichter und tipps bleibt danke euch