Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Timmyew

Treue Seele

  • »Timmyew« ist der Autor dieses Themas

Beiträge: 128

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

1

09.08.2014, 18:40

Ist Assembler lernen möglich ?

Hallo alle zusammen ^^

Ich wollte mal fragen wie man es auf die reihe bekommt die so zu sagen "Maschinensprache" Assembler zu lernen , ich weiss es gibt verschiedene arten von Assembler sprachen da nicht jeder Prozesor gleich aufgebaut ist aber wie und mit welchen mitteln kann ich Assembler lernen und herausfinden welche art von Assembler meinem Computer entspricht . Und meine grösste frage ist , wie funktioniert das wenn ich "ich nenne es mal so" Assembler programm "ich weiss jedes programm ist auf Maschinensprache übersetzt ^^" zum laufen bekomme und unter windows starte ?

Und wenn etwas nicht Richtig sein sollte da ich schon gar keine Ahnung im bereich Assembler habe sagt es einfach ...

idontknow

unregistriert

2

09.08.2014, 18:47

Schnapp dir nen kleinen Mikrokontroller, steck irgendwelche lustige Sachen dran und leg los. Unter Windows weiß ich nicht wie/ob es überhaupt funktioniert und ob man da sinnvolle Sachen machen kann..

PS: Die Frage ist bescheuert.

Timmyew

Treue Seele

  • »Timmyew« ist der Autor dieses Themas

Beiträge: 128

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

3

09.08.2014, 18:50

Mir sagte mal jemand , es gibt keine dummen fragen sondern nur dumme antworten :b
War kein Angriff , ich will es einfach wissen da es mich interessiert ...
Ich bin auch nur ein Mensch und kann nicht alles wissen , deshalb frage ich -.-
Und da ich weiss das in diesem Forum viele Kluge köpfe sind die es sicher wissen frage ich ja

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

4

09.08.2014, 19:02

Zitat

Unter Windows weiß ich nicht wie/ob es überhaupt funktioniert und ob man da sinnvolle Sachen machen kann..

Natürlich funktioniert das! Warum sollte es nicht funktionieren?
Es ist die grundlegendste Programmiersprache überhaupt. Manche Libraries haben in Assembler optimierte Routinen.

Wichtig ist zu wissen, dass Assembler keine einheitliche Sprache ist. Es gibt verschiedene Assembler die sich im Syntax aber leicht unterscheiden. Prinzipiell gibt es auf der x86/x64 Plattform den klassischen Intel-Syntax und den AT&T-Syntax. Allerdings unterscheiden sich weitere Mechanismen wie zum Beispiel Makros und so weiter wieder zwischen den einzelnen Assemblern. Es gibt das MASM von Microsoft. Weiterhin NASM, YASM, FASM, ... , den GNU Assembler der auch für Inline Assembler im GCC verwendet wird.

Für mein Betriebssystemexperimente habe ich GCC mit Inline Asm und NASM verwendet.
NASM ist ein sehr kleines Paket. Außerdem verwende ich NASM zum Beispiel für das direkte Einbinden von Ressourcen direkt in den Anwendung. (Shadercode zum Beispiel) Man kann die Daten dann direkt als Extern-Char-Array in C(++) verfügbar machen, ohne auf Windows spezifische Dinge wie dessen Ressourcenverwaltung zurückgreifen zu müssen oder kranke Verbiegungen wie die Daten aufzublasen und in C Code umzuwandeln.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

5

09.08.2014, 19:13

Mir sagte mal jemand , es gibt keine dummen fragen sondern nur dumme antworten
Mir sagte mal jemand es gäbe weder dumme Fragen, noch dumme Antworten, sondern nur dumme Menschen ;)
Klar kann man Assembler lernen. Ist auch nicht sonderlich schwer.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

idontknow

unregistriert

6

09.08.2014, 19:41

Natürlich funktioniert das! Warum sollte es nicht funktionieren?
Es ist die grundlegendste Programmiersprache überhaupt. Manche Libraries haben in Assembler optimierte Routinen.

Okey schlecht formuliert: dass man ein paar Assembler Befehle reinhauen kann ist mir bewusst, aber kann ich ein reines Assembler File unter WIndows ausführen? Unter optimierte Routinen kenne ich nur Assembler-Segmente eingebettet in bspw. C++ Code und dann mittels Compiler als C++ Programm kompiliert zu einer Exe, aber das ist kein selbständiges Assembler Programm. Und ob man mit Assembler sinnvolle Dinge abseits von Optimierung machen kann weiß ich immernoch nicht.
Auf einem Mikrokontroller konn ich wenigstens eine Anzeige dranstecken oder einen Summer oder irgendeinen anderen lustigen Kram..

Mir sagte mal jemand , es gibt keine dummen fragen sondern nur dumme antworten :b

Ja, aber deine Frage impliziert irgendwo, dass manche Menschen aus irgendwelchen Gründen (psychisch/körperlich oder was auch immer) scheinbar nicht in der Lage wären Assembler programmieren zu können / zu lernen. Diese Annahme is so bescheuert, dass sie deine Frage aus meiner Sicht als "dumme Frage" klassifiziert!

Stazer

Alter Hase

Beiträge: 468

Wohnort: Berlin

Beruf: Student

  • Private Nachricht senden

7

09.08.2014, 19:52

Wenn du Lust hast und Englisch kannst, kannst du dich ja mal mit dem Netwide Assembler ( http://www.nasm.us/ ) beschäftigen.
Laut Entwickler wurde Rollercoaster Tycoon ( http://de.wikipedia.org/wiki/RollerCoaster_Tycoon unter Entwicklung ) zu 99% in Assembler geschrieben.

Freundliche Grüße
Stazer

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

8

09.08.2014, 20:00

Irgendjemand hat letztes diesen Link hier gepostet. Ich fands interessant und deine Frage wird dort auch teilweise entwickelt. Hier geht es nicht nur um Assembler, aber darum wie ein Computer funktioniert, wie er aufgebaut ist und wie man ihn dann programmieren kann. Dabei halt, wie man das mit Assembler machen kann und auch, wie man dann eine höhere Sprache/Betriebssystem etc dafür bastelt. Ansonsten, wie schon gesagt, nimm dir einen Befehlssatz und spiel damit einfach rum. Wir haben in der Uni MIPS benutzt. In der Schule hatten wir das auch mal angeschnitten, da haben wir auch mit MIPS gearbeitet.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

9

09.08.2014, 20:19

Schnapp dir nen kleinen Mikrokontroller, steck irgendwelche lustige Sachen dran und leg los. .

Der Vorschlag ist ziemlich gut. Die Dinger gibt es schon recht günstig, auch mit LED Anzeige und und und. Ein ziemlich guter Weg, Assembler zu lernen. Habe ich im ersten Semester auch gemacht!
WIP Website: kevinheese.de

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

10

09.08.2014, 20:19

Zitat von »idontknow«

aber kann ich ein reines Assembler File unter WIndows ausführen?

Ja, man kann. ;-)
WinAPI ist eine C API und auch sehr gut unter Assember zugreifbar.

Zitat von »idontknow«

Und ob man mit Assembler sinnvolle Dinge abseits von Optimierung machen kann weiß ich immernoch nicht.

Joa, hält sich natürlich in Grenzen im Normalfall.
Wenn man Low Levelige Sache macht. Mit Betriebssystementwicklung oder Treiberentwicklung herumexperimentiert, ist es ab und zu notwendig ein bisschen Assember zu verwenden. Einfach weil man Befehle. braucht die in Hochsprachen wie C nicht zugänglich sind. ("LGDT" und so Sachen...) In dem Bereich kann man auch Mikrocontroller zählen, obwohl gerade die zum Teil sehr gute Anbindung an eine Hochsprache(in der Regel C) haben. Ansonsten ist Assembler für Reverse Engineering wichtig interessant und zum Erweitern von Software die nicht mit Quellcode vorliegt. Und Assembler ist nützlich für Optimierungen zum Maximum auf Maschinenlevel. Entweder indirekt in dem man nur die Compilerausgabe analysiert und entsprechend den Code umschreibt oder durch direkte Verwendung von Assembler. Assembler ist außerdem gut für das Grundlagenverständnis.

In der normalen (miodernen ;) ) Softwareentwicklung gibt es natürlich so gut wie keinen Verwendungsfall von Assembler.

Zitat von »idontknow«

Auf einem Mikrokontroller konnte ich wenigstens eine Anzeige dranstecken oder einen Summer oder irgendeinen anderen lustigen Kram..

Naja am PC ist die Anzeige und Summer in der Regel schon drangesteckt. Assembler unter Windows verwendet man halt ganz normal die WinAPI. Oder im OS-Dev halt direkt die Hardware. Das erste was mein OS machte war eine ASCII Game of Live Simulation am Bildschirm und piepsen mit dem "PC-Piepser". Also hat man praktisch etwas des selbe wie am µC. ;)

Werbeanzeige