AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[ASM] Abhängigkeiten der Hardware

Ein Thema von SyntaxXx · begonnen am 9. Sep 2014 · letzter Beitrag vom 9. Sep 2014
Antwort Antwort
SyntaxXx

Registriert seit: 14. Dez 2008
328 Beiträge
 
Delphi XE4 Architect
 
#1

[ASM] Abhängigkeiten der Hardware

  Alt 9. Sep 2014, 08:27
Hallo zusammen,
ich habe eine Frage bezüglich ASM.

Ich habe mir hier diverse Tutorials durchgelesen, in denen ASM Code benutzt wurde.
Um diesen Code besser zu verstehen, wollte ich mich ein wenig in ASM einarbeiten.
Doch in allen Tutorials die ich lese, steht immer wieder, dass z.B. eine Intel CPU benötigt wird.
Mal abgesehen von den ganzen Compilern (TASM, NASM, MASM, ...), die offenbar wieder alle eine andere Syntax haben.

Jetzt stellt sich mir die Frage, ob es DAS ASM überhaupt gibt, oder ob es eher vergleichbar (abstrackt) mit C ist (C, C#, C++).
Denn ich bekomme z.B. diesen Code vorgesetzt:

Code:
  mov eax, .codestart
  mov edx, .codeend
  mov ecx, orginal entrypoint
  xor ss[eax], magic
  inc eax
  cmp eax, edx
  jne mainloop
  jmp ecx // springe zum EntryPoint
Gibt es da jetzt irgendwie eine Liste mit Befehlen, die alle gleich sind, oder auf welchen Compiler / hardware bezieht sich dieser Code?
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.798 Beiträge
 
Delphi 12 Athens
 
#2

AW: [ASM] Abhängigkeiten der Hardware

  Alt 9. Sep 2014, 08:39
Assembler ist vereinfacht gesagt Maschinensprache. Es gibt nur eine handvoll Befehle, dafür werden sie schnell ausgeführt, weil der jeweilige Prozessor sie direkt versteht. Darum gibt es für jede(n) Prozessor(familie) ein eigenes Assembler. Freilich hat man nicht für jeden Prozessor das Rad neu erfunden, und es gibt ähnliche bis gleiche Befehle, aber das wars dann auch schon. Ich habe mitte der 80er noch mit Assembler rumgespielt, mangels guter Alternativen. Heute würde ich sowas nie mehr machen. Viel zu umständlich für minimalen Performancegewinn erkauft mit maximaler Unwartbarkeit.

Und genau deshalb ist Assembler eben NICHT mit C oder irgendeiner anderen standardisierten (Hoch)Sprache vergleichbar.

http://de.wikipedia.org/wiki/Assembler_%28Informatik%29
http://de.wikipedia.org/wiki/Assemblersprache

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
WM_CLOSE

Registriert seit: 12. Mai 2010
Ort: königsbronn
398 Beiträge
 
RAD-Studio 2009 Pro
 
#3

AW: [ASM] Abhängigkeiten der Hardware

  Alt 9. Sep 2014, 08:44
Einige Prozesoren haben Spezialbefehle und -Register für verschiedene Zwecke, z.B. für die Ansteuerung des AES-Beschleunigers von Intel.

Trotzdem kannst du unter jedem Intel-x86-Kompatiblen (Ja, auch AMD) Prozessor die original 8086 Standardbefehle und -Register benutzen. lediglich wenn du auf eine andere Prozessorarchitektur (z.B. ARM) wechselst musst du grundsätzlich umdenken.
Hier ist mal ein Listing aller x86 Befehle.

Mal ganz davon abgesehen ist es meistens Unsinn etwas in ASM einzuhacken (wenn man die Spezialinstruktionen nicht braucht), weil ein moderner Compiler viel besser optimieren kann als ein duchschnittlicher Mensch.
Delphi programming
  Mit Zitat antworten Zitat
SyntaxXx

Registriert seit: 14. Dez 2008
328 Beiträge
 
Delphi XE4 Architect
 
#4

AW: [ASM] Abhängigkeiten der Hardware

  Alt 9. Sep 2014, 08:49
Der Vergleich mit ASM und C war auch nur so gemeint, das die Syntax zwischen C, C# und C++ sich teilweise ähneln.
Genauso wie du es ja auch gesagt hast

Ok, dann nehme ich einfach mal an, dass es sich bei den oben genannten Befehlen um genau diese in allen ASM "Sorten" vorhandenen handelt.
Dann werde ich mir diese einfach mal zu Gemühte führen.


Ich habe auch nicht vor, komplette Anwendungen in ASM zu schreiben, ich möchte nur halbwegs verstehen, was da gerade passiert.
Außerdem liebe ich Delphi viel zu seher ^^

Danke für deine Hilfe.


Edit:
Perfekt, dank euch.
Die Liste werde ich mir mal anschauen
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: [ASM] Abhängigkeiten der Hardware

  Alt 9. Sep 2014, 09:34
Ich denke mal mindestens 90% aller Assemblerbefehle die du jemals benutzen/lesen wirst werden sowohl auf AMD als auch auf Intel-Prozessoren funktionieren (vllt. sogar mehr).

Diese speziellen Befehle werden (würde ich mal sagen) in erster Linie vom Betriebssystem oder Treibern benutzt. Du musst dir also im Allgemeinen keine Sorgen darum machen.

TASM, NASM, MASM, etc sind andere Compiler die jeweils ggf. eine leicht unterschiedliche Syntax erwarten. Prinzipiell tun sie aber alle das gleiche und erzeugen auch den gleichen Maschinencode am Ende.

Also ja. Es gibt DAS ASM für eine spezielle Prozessorarchitektur. In dem Fall ist es x86 Assembler.
Und alle genannten Compiler erzeugen (wie gesagt) Code für diese Prozessoren.

Was die Syntax angeht: Such dir die aus die dir am besten gefällt
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
OlafSt

Registriert seit: 2. Mär 2007
Ort: Hamburg
284 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: [ASM] Abhängigkeiten der Hardware

  Alt 9. Sep 2014, 09:45
Tatsächlich ist es sogar so, das die genannten 90% der ASM-Befehle bis runter zum 80386 (dem ersten 32-Bit-Prozessor im PC) funktionieren.

Generell kann man sagen: Bleibst du in einer Prozessorfamilie, dann ist der ASM-Code auch nahezu identisch. Im PC-Sektor ist dies x86-Assembler, das von Intel mit dem 8088 aus den späten 70er Jahren eingeführt wurde und seither von Generation zu Generation weiterentwickelt wurde. Verzichtete man auf 32-Bit-Code, würden die 90% sogar noch auf dem 8088 laufen.

Wechselt man die Prozessorfamilie (Motorola, ARM, ATMEL, oder für die ganz alten Hasen, Zilog) wechselt natürlich auch die Assemblersprache.
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#7

AW: [ASM] Abhängigkeiten der Hardware

  Alt 9. Sep 2014, 10:02
Denn ich bekomme z.B. diesen Code vorgesetzt:

Code:
  mov eax, .codestart
  mov edx, .codeend
  mov ecx, orginal entrypoint
  xor ss[eax], magic
  inc eax
  cmp eax, edx
  jne mainloop
  jmp ecx // springe zum EntryPoint
Gibt es da jetzt irgendwie eine Liste mit Befehlen, die alle gleich sind, oder auf welchen Compiler / hardware bezieht sich dieser Code?
Man muss unterscheiden zwischen dem OP-Code und seiner Darstellung. Der OP-Code ist für alle X86-CPUs und alle Compiler der gleiche. Weil roher Maschinencode aber für einen Menschen schlecht lesbar ist, haben sich Mnemonics wie inc eax etabliert. Da gibt es verschiedene Standards, aber am häufigsten findet man die AT&T-Syntax (vor allem bei Unix) und Intel-Syntax (z.B. bei Delphi). Ich finde die Intel-Syntax deutlich besser lesbar.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz