Dann will ich auch mal hier aufmachen!

Black Dove
Jaaa. Nachdem ich schon das Java-Forum enjungfert habe will ich mal hier ran.... (man gönnt sich ja sonst nix)

Meine Frage, an Euch da draußen: Braucht man als normal sterblicher noch Assembler? Ich meine, wenn ich nicht gerade mit SoftIce das heiss geliebte Shareware-Programm "kaufen" will..

Aber im realen Leben.. Hmpf... Was meint's?

Ach ja. Ein Kumpel arbeitet in einer Firma, die BS und allgemeine Software für Handys codet. Der programmiert noch stellenweise in ASM.

Auf der anderen Seite, nen weiterer Bekannter, der für elektronische Bremssysteme (z.B. für Autos) entwickelt braucht nur noch reines C.

Langsam gewinne ich den Eindruck, ASM ist tot und C zu können bedeutet etwa so viel, wie vor 5 Jahren ASM zu können...

Hat einer von euch Erfahrung was sowas angeht?
ThiefMaster
Wenn man irgendwelche selbstgebauten Schaltungen an den USB anschließen will, braucht man ASM um den Microcontroller zu programmieren...
Saemon
nö, Assembler braucht man heute (fast) nicht mehr.
mindz
Zitat:
Original von ThiefMaster
Wenn man irgendwelche selbstgebauten Schaltungen an den USB anschließen will, braucht man ASM um den Microcontroller zu programmieren...


ich steuere damit meine kaffeemaschine ...

ne aber mal im ernst asm? wies oben schon steht ... kaum mehr Augenzwinkern
MMB
Doch, ich denk mal schon, dass es wichtig ist. So nach Delphi und C(++) und vielleicht auch Java die wichtigste Programmiersprache.
Wenn du ein Programm hast und es decomplierst und ASM kannst, dann kannst du den Code wieder herstellen (nur bei eigenen Programmen zu empfehlen).
ASM kannst du sogut wie in jede andere Programmiersprache einbinden und es ist der Ursprung aller Programmiersprachen.
mib16
Ich denk schon das man ASM noch braucht.
um einen µProzessor zu programmieren ist das immernoch die beste lösung,
sicher es gibt scho einige C-Compiler (CC5X) die dir die arbeit der lästigen bittestbefehle usw. abnimmt. aber auch hier sind die grundlagen des µP bzw. ASM gefagt um das programm auch richtig schreiben zu können.

also wenn wer seine kaffeemaschiene per fernbedinung ein und ausschalten will und sich da hardware (IR-Led + beschaltung, ...) selber baut wird ohne ASM nicht weit kommen.

und außedem macht es spaß mit ASM ein bissal zu spielen.
habt ihr gewusst man kann auch die spiele für den TI92 in asm programmieren
Saemon
aber wer braucht das alles?

einfache Tools/Spiele kann man mit VB oder Delphi, komplexere mit C++ coden.

Und man kann natürlich auch Java nehmen.

Das einzige was Assembler heute noch bringt, ist, dass man Cracks für Programme schreiben kann und dass man irgendwelche Geräte programmieren kann.

Wofür steht eigentlich die Abkürzung ASM?
mib16
ASM = Assembler großes Grinsen

ASM ist dazu gedacht spiele zu programmieren odersoftware für den PC zu entwickeln dazu ist das viel zu primitiv.

stell dir mal ein auto vor: da ist massenweis software drinn
ABS, ASR, ESP, ... die ganzen daten werden alle von µProzessoren ausgewertet, und die programme dazu sind in ASM geschrieben.
XbytE
Also ich denke das Assembler immer noch eine große bedeutung hat.
Bsp:
Um einen kleinen Controler beizubringen eingang a und eingang b zu addieren könnte ich dies mit Assembler kentnissen und ein paar tasten machen. wen ich dies mit c machen will brauche ich ein PC mit der passenden software. Da lioegt meistens schon das problem, die passende Software. Da setzt man sich dan also hin und proggt erstmal ne software, die sich mit dem controler unterhält, damit ich ihm einige wenige Zeilen Code einfüge.
Desweiteren sind Programme die in C etc. geschreieben werden meist viel zu groß.
Ein Programm in Assembler kleiner 1k hat unter c++ fast 4k.


Meine Meinung:
Um komplexe anwendungen zu erstellen kommt man um die höheren Progsprachen nicht herrum.
Für kleine Aufgaben bei denen es auf die Größe und die geschwindigkeit ankommt Assembler.

PS: auch heute werden bei Spielen noch einige Teile in Assembler geschreiben. (Grafik Engines)
BusTaR
*ups* sehr intessant ... is mir vollkommen neu
bin ja nurn primitiver PHP-CoDer...

aber wenn noch jemand solche ausführungen posten kann...
also ich lese mir sowas gerne durch
*LOB* echt intessant...

mfg
Hanfling
ASM kann ganz hilfreich sein, zb. wenn man etwas programmiert wo es vorallem auf Geschwindigkeit ankommt, z.B. ne 3D Engine. Da die sin/cos/tan Funktionen aus C/C++ sehr lamgsam sind lohnt es sich jenachdem was man macht oder wofür man sie braucht und vorallem wie häufig, sie selber in ASM zu implementieren.
Black Dove
Nach langer Abstinenz will ich auch noch mal meinen Senf dazu geben.

Was µProzessoren angeht ist mir z.B. bekannt, dass ein grosser Bremsen und -zubehör Hersteller z.B. ABS ASR und Co auf C entwickelt.

Auch was die Geschwindigkeitsoptiemierung anbelangt sehe ich den Vorteil von ASM nicht mehr zwingend. Ich kenne niemanden, der besser optimiert, als mein Compiler; von dem kann ich noch was lernen Augenzwinkern

@mib16: Was wäre mein TI89 ohne Command & Conquer? Im Ernst!

@Hanfling: Was die Games angeht, so hat z.B. openGL doch seinen Teil getan. Auf der Seite der direkten Programmierung bleibt da nicht mehr soooo viel Augenzwinkern Aber recht Du hast. Besonders schnell sind die trigonometrischen Funktionen wirklich nicht.
Ich erinnere mich noch an die guten alten Zeiten... Da hat man für Graphik-Demos (unter DOS) noch sinus- und Cosinus-Tabellen geladen. Dadurch entfällt die Berechnung, man muss nurnoch einen Pointer an die richtige Stelle schieben und auslesen...

Aber gut.

Das einzige, wo ich ASM noch nicht ersetzt sehe, und das wird es wohl nie, sind BS-(nahe) programmierung.

Ergo: Man kann ASM noch brauchen, muss aber nicht. Es sei denn, Ok, man hat sich irgendeine kleine, kleine Niesche ausgeschaut.

Damit einverstanden?

mfg
Hanfling
Zitat:
Original von Black Dove
Damit einverstanden?

smile
Zitat:
Original von Black Dove
Auch was die Geschwindigkeitsoptiemierung anbelangt sehe ich den Vorteil von ASM nicht mehr zwingend. Ich kenne niemanden, der besser optimiert, als mein Compiler; von dem kann ich noch was lernen Augenzwinkern


Nein Compiler optimieren nicht so sauber. Sie arbeiten nach fasten Mustern und verschiedene Situationen passt der Compiler nicht ideal an, man kann das sauberer von Hand machen. Evtl. kriegt man zB. durch ne eigentlich "unsaubere" Art und Weise wie man es macht den Code schneller.
KingOfParachutez
Apropo Geschwindigkeitsoptimerung...

Die Frage ist ob man a) möglichst wenig Source haben/schreiben will oder b) es wirklich nur auf Geschwindigkeit ankommt. Hier mal ein Beispiel anhand von nem Loop:

kürzere Variante a)
"mov cx,3"
"Label:"
"inc [bx]"
"inc bx"
"loop Label"

schnellere Variante b)
"inc [bx]"
"inc bx"
"inc [bx]"
"inc bx"
"inc [bx]"
"inc bx"

Variante b) bewirkt nen guten Geschwindigkeitsvorteil, lässt sich aber bei großen Schleifen mit bedingten Sprüngen nur sehr schwer durchführen!

(Info von ByTeGeiZ)
Xenon
Assembler ist nciht tot, wird allerdings normalerweise nciht mehr wirklich gebracuht, da fast alles in höheren sprachen geschrieben wird...

(fast) unabdingbar ist assembler bei der hardwareentwicklung: wie willst du sonst SSE2 oder ähnliches ansprechen - zwar dürfte es dafür inzwischen auch höhere funktionen geben, aber am anfang steht da immer ASM
logisch ist auch, dass bei der ENTWICKLUNG von compilern assembler benötigt wird...

über grosse stellen wird sicherlich c verwendet, aber ganz verdrängen wird man ASM wohl nie...
Flamesword
ASM ist auch gut um Betriebssysteme zu proggen. Z.B. MenuetOS
ciruZ
Wer Assembler braucht? Ich z.B.!

Wenn es auf Größe ankommt, kommt für mich nur Assembler in Frage, C und C++ können da nicht mithalten.
Wenn es auf Geschwindigkeit ankommt ebenso.
Ein Betriebssystem, dass komplett in Assembler geschrieben ist, ist 10 - 40% schneller als Linux!
Und wie viel schneller es als Windows ist könnt ihr euch dann ja ausrechnen Augenzwinkern

Außerdem gibt es VIELE SACHEN, die man in C / C++ NICHT machen kann!
Guckt euch mal den Linux Kernel an, wie oft wird da inline Assembler verwendet? (sieht man an dem __asm__ !)
Black Dove
Oooo-kay!

Seit ich in letzter Zeit wieder aktiv Assembler gelesen & programmiert habe stelle ich fest: Jupp. Ich habt ja alle so recht Augenzwinkern

Folgende Erkenntnisse konnte ich dabei für mich verbuchen:
a) Man braucht Assembler, wenn man gewisse Software verstehen will -> Stichwort: Reverse Engeneering (z.B. mit IDA Pro, SoftIce und Konsorten). Ohne ASM ist man da verloren ;-)

b) Exploits bzw. Shellcode. Wenn man Shellcode entwickeln will (jaja, wer will das schon ;-)), dann kommt man hier auch nicht um ASM 'rum. Wer hat schon für 10KB platz in der Payload, wenn es auch mit 123 Byte (e.g.) geht ... Selbst wenn man Shellocde (oder andere) klaut kann man ohne ASM-Basiswissen Exploits nicht verstehen. Stichwort: Was'n EIP?

Fazit: Es hängt absolut vom Blickwinkel ab. Je näher man ans System kommt, umso wichtiger wird Assembler.

Mal von Spezialfällen wie BS-Entwicklung und µProzessoren abgesehen... In einer "normalen" Entwicklung (meine Definition: Software für den (End-)Anwender) wird ASM nur noch sehr vereinzelt eingesetzt.

Jetzt kommt der Knackpunkt: Das Wissen um Assembler ist dennoch nicht zu verachten. Wenn man sich manchmal Code anschaut, der von irgendnem Info-Student gebaut wurde, der vielleicht mal an nem ASM-Skript vorbeigelaufen ist gekommt man unter Umständen schon mal das Grausen. Spätestens dann weiss man, warum immer wieder Fehler (->Buffer Overflows) in Software entdeckt wurden.
Ergo: Jmd., der Ahnung von ASM und damit dem Speichermanagement (Stichwort: Was'n der Stack/Heap?) hat macht solche Fehler nicht.

So. Genug schwadroniert. schlafen
ciruZ
Du brauchst es auch beim Endanwender.
3D Rendering, aufwendige 3D Spiele, etc.
Die brauchen so viel Leistung, da ist Assembler nötig Augenzwinkern
Und bevor man irgend ne andere Sprache lernt sollte man meiner Meinung nach eh erst Assembler lernen. smile
Sonst weiß man gar nicht wie das ganze funktioniert mit den Stacks, Registern usw.
Black Dove
Servus!

Zitat:
Original von ciruZ
Du brauchst es auch beim Endanwender.
3D Rendering, aufwendige 3D Spiele, etc.
Die brauchen so viel Leistung, da ist Assembler nötig Augenzwinkern


Jein. Halbe Zustimmung ;-) Wenn man mal von der Demo-Programmierung absieht (seien wir ehrlich: meine letzte Demo lief unter Dos4GW großes Grinsen ) glaube ich, Assembler wird kaum noch verwendet. Ich weiss(!) es natürlich nicht, da ich niemanden kenne, der Games entwirft, habe aber selbst schon mit OpenGL programmiert und dazu genau und nur C verwendet. Die meiste Rechenpower wird ohnehin auf die Graka geschoben. Schätze mal, bei Demos, die unter Win (DirectX) laufen ist das ähnlich.
IMHO ist es einfach nicht _rentabel_, das ganze Geraffel noch in ASM coden zu lassen. Aber das werden wir wohl genau nie erfahren ;-)

Auf der anderen Seite.. Jetzt denke ich gerade an die von Dir erwähnte Rendering-Soft: man stelle sich mal einen vollendeten Radiosity - Algo vor... sehr nett.. oder besser noch: photon mapping... Da geht nix über die Graka... Allerdings käme mir da wieder mein Argument von irgendwo ziemlich am Anfang des Threads entgegen, wo ich behaupte, ein gescheiter C++-Compiler optimiert verflucht gut... Da stehe ich noch immer zu smile

Zitat:
Und bevor man irgend ne andere Sprache lernt sollte man meiner Meinung nach eh erst Assembler lernen. smile
Sonst weiß man gar nicht wie das ganze funktioniert mit den Stacks, Registern usw

Meine Rede. Mit einer Ausmahme, die das ganze ad-absurdum führt: Java. Ich denke, es gibt gute Java-Entwickler (gerade J2EE), die eigentlich keine Ahnung haben, was der Prozessor mit ihrem Code macht. Brauchen sie auch nicht. Da reicht es, wenn man weiss, was die VM mit dem Bytecode macht.

Aber lassen wir das... Irgendwie ufert das ein bisschen in einen Religionskrieg aus Blinklicht