Forum: PC-Programmierung ASM: AT&T oder Intel Syntax lernen?


von Fragling (Gast)


Lesenswert?

Hallo alle zusammen,

bin Technischer-Info Student im 2. Semester und möchte gerne später im 
embedded (Linux) Bereich arbeiten. Meine Frage: Sollte ich eher 
Assembler mit AT&T Syntax lernen? Oder lieber Intel Syntax?  Habe hier 
mehrere Bücher zur Auswahl z. B. das von Richard Blum, der in seinem 
Buch strickt AT&T verwendet.

Was meint ihr?

Liebe Grüße

von Peter II (Gast)


Lesenswert?

Fragling schrieb:
> arbeiten. Meine Frage: Sollte ich eher
> Assembler mit AT&T Syntax lernen? Oder lieber Intel Syntax?  Habe hier
> mehrere Bücher zur Auswahl z. B. das von Richard Blum, der in seinem
> Buch strickt AT&T verwendet.

weder noch. du musst das ASM passend zur einer CPU lernen. Was hilft dir 
der Intel Syntax wenn du später einen Atmel programmieren willst?

von Davis (Gast)


Lesenswert?

Hallo alle zusammen,

bin angehender Fahrlehrer im 2. Semester und möchte gerne später im
PKW-Bereich arbeiten. Meine Frage: Sollte ich eher Opel fahren lernen? 
Oder lieber VW?  Habe hier mehrere Bücher zur Auswahl z. B. das von 
Henry Ford, der in seinem Buch sich strickt auf Tin-Lizzy bezieht.

Was meint ihr?

Liebe Grüße

von Reinhard Kern (Gast)


Lesenswert?

Fragling schrieb:
> Habe hier
> mehrere Bücher zur Auswahl z. B. das von Richard Blum

Das ist, so wie du das betrachtest, das ungeeignetste von allen, denn 
dass du ein Pentium-System programmieren musst ist eher 
unwahrscheinlich.

Allerdings musst du dir drüber klar werden, dass du noch oft im Beruf 
(sofern du soweit kommst) eine neue Assemblersprache für eine neue CPU 
lernen musst, ich habe schon so zwischen 10 und 20 verwendet. Ich halte 
es auch für fraglich, ob du dich ausschliesslich auf Linux beschränken 
kannst. Insofern ist es dann egal, womit du anfängst, Pentium ist so gut 
wie Arm oder auch 8051.

Also nicht so schmalspurig denken, Embedded Linux auf Pentium ist nur 
ein kleiner Teil der Embedded Welt.

Gruss Reinhard

von King George (Gast)


Lesenswert?

Es schadet nicht AT&T zu verstehen. In der Praxis kannst du ihre 
Vorteile aber nicht ausnutzen, denn sie ist komplex und redundant, 
schwierig zu schreiben und zu lesen. Die Intel Syntax ist wesentlicher 
komfortabler und zeiteffizienter aber in Linux nicht immer anzutreffen. 
Nutze die Intel-Synatx, wo immer du kannst!

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

King George schrieb:
> aber in Linux nicht immer anzutreffen

Naja, eher andersrum: Unixe arbeiten praktisch alle mit AT&T-Syntax.
Wenn man in einem Unix Assembler programmieren will, nützen einem also
die von dir behaupteten Vorteile der Intel-Syntax rein gar nichts, und
es ist pure Zeitverschwendung, sich groß damit zu befassen.

Andererseits ist es völlig wurscht, wenn man i386 & Co. wirklich in
Assembler programmieren will/muss, darf man ruhig beide verstehen, so
krass unterschiedlich sind sie nun auch nicht.  Zum Anderen wird auch
im Embedded-Bereich nur minimal in Assembler geschrieben, das
beschränkt sich am Ende auf sehr prozessorspezifische Anpassungen im
kleinen Bereich.  Wichtiger ist es, sauber und ordentlich C zu
beherrschen.

Sobald man die i386-Schiene verlässt, dann hat man sowieso wieder eine
ganz andere Assembler-Syntax, die in der Regel dann auch beim
GNU-Assembler der des Herstellers entspricht.

von Rolf Magnus (Gast)


Lesenswert?

Jörg Wunsch schrieb:
> King George schrieb:
>> aber in Linux nicht immer anzutreffen
>
> Naja, eher andersrum: Unixe arbeiten praktisch alle mit AT&T-Syntax.
> Wenn man in einem Unix Assembler programmieren will, nützen einem also
> die von dir behaupteten Vorteile der Intel-Syntax rein gar nichts, und
> es ist pure Zeitverschwendung, sich groß damit zu befassen.

Insbesondere erwartet auch der GNU-Assembler selbst für x86-Systeme per 
default die AT&T-Syntax, versteht aber alternativ auch die von Intel.

> Zum Anderen wird auch im Embedded-Bereich nur minimal in Assembler
> geschrieben, das beschränkt sich am Ende auf sehr prozessorspezifische
> Anpassungen im kleinen Bereich.

Vor allem auch, wenn man Linux-Programmierung machen will.

von ing² (Gast)


Lesenswert?

Lerne erstmal programmieren mit einer Hochsprache (C) und lerne dann 
Assembler. Ob du dann AT&T-Syntax oder Intel-Syntax lernst, ist ziemlich 
egal, wenn du programmieren kannst.

Wird bei uns auf der Uni im entsprechenden Kurs für die (technischen) 
Informatiker auch so gemacht (allerdings wird der TOY-Computer von der 
Princeton Uni verwendet): Zunächst wird vom Algorithmus eine 
Modellbildung gemacht (Pseudocode bzw. C-Code), dieser Algorithmus wird 
dann in Assembler programmiert.
Ich empfehle dir daher vllt mal TOY anzusehen: 
http://introcs.cs.princeton.edu/java/50machine/

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.