Assembler - Programm auf einen anderen PC übertragen?

Hallo,
ich fasse mein Problem ganz kurz:
Wenn ich einen Prozessor der x86-Familie benutze und dafür ein Programm assembliere - und das als .exe, kann ich die dann auch ohne Bedenken auf einen anderen PC übertragen, ohne dass ich weiß, was für ein Prozessor dort in Betrieb ist, oder gibt es da Probleme, die irgendwas durcheinander bringen oder gar der Hardware schaden können?
 
Solange Du keine prozessorspezifischen Features (SSE,3DNOW usw) nutzt und der andere PC auch 0x86 ist, sollte es keinerlei Probleme geben. Letzendlich unterscheidet sich Deine Exe von anderen nur insofertt, dass Du den (nachher assemblierten) Code mit der Hand geschrieben hast, während bei den meisten anderen dieser vom Compilerbackend generiert wurde ;)
 
Okay, danke dir ;)

Nicht, dass ich da jetzt aber was falsch verstehe:
Ein Code, den ich in C/C++ schreibe, wird auch zu Assemblercode, und läuft dann hinterher auch nur auf einem 0x86?
Wenn das so ist, wird mir einiges mehr klar (naja.. analytisches Denken ist bei mir wohl nicht so)...
 
Ein Code, den ich in C/C++ schreibe, wird auch zu Assemblercode, und läuft dann hinterher auch nur auf einem 0x86?
Praktisch gesehen, ja. Wenn der Compiler etwas anderes als 0x86 kennt, kann man das auchfür gewöhnlich einstellen und Code für die entsprechende Plattform generieren (ohne das Programm unzuschreiben ;) ).

Da es aber noch nicht wirklich verwirrend war ;) :
Es sollte noch erwähnt werden, dass es auch Zwischencode-Compiler gibt. Diese generieren Code für einen (fiktiven) Processor - ein entsprechendes Programm emuliert dann diesen Prozessor (Bsp: .NET,Java-Virtual Machine). Es gibt auch Interpretoren (zumindest für C) - da wird dann gar nichts generiert.
 
Vergiss nicht zu erwaehnen das es nach dem Assemblercode auch noch Maschienencode und Mirkocode gibt.
damit wie ihn vollends verwirren.;)
 
Maschienencode und Mikrocode habe ich schonmal gehört/gelesen ;)
Verwirrung ist vielleicht mal nicht schlecht, dann steigt die Motivation, sich in die Materie einzuarbeiten :)
 
Eine x86er CPU ist doch abwärts kompatibel.
Es kommt auch darauf an was für ein Programm das ist: Ein Spiel, ein tool usw.
Vista hat da seine eigenarten in der Sicherheit.

C++ hat ja einen Compiler, der den Code in Assembler umwandelt, wo letztendlich der Assembler, den Assembler Code in Binärcode assembliert, da die Chips ja nur 0 oder 1 verstehen, an oder aus. Durch de Milliarden"Lichtschalter" in nur einer CPU gibt es viele verschieden Kombinationen.

Also: 101010001010101010101.

Dein Programm wird von RAM speicher in die CPU durch den Daten/Adressbus gefahren wo sehnsüchtig andere prozessoren wie z.B. die GPU (GFX Karte) darauf warten, das sie nebenbei mal was anderes zu tun bekommen.

Assembler ist unheimlich Faszinierend, weil man der Hardware auf den Grund geht, und es gibt ja auch die verscheidensten Prozessoren die sich untereinander unterscheiden.

Es gibt auch ein Chip Computer, oder Pic prozessoren für z.B. Robotersteuerrung. In Autos sind ja auch prozessoren drin.

Naja, ich schweife vor begeisterrung ab. hehe

Ein programm sind ähnlich Menschliche Gedanken. Du kannst ja auch niemanden nur durch Gedanken töten. :D
 
Original von Alchemy[...] Assembler ist unheimlich Faszinierend, weil man der Hardware auf den Grund geht [...]
Komisch das lese ich immer wieder, aber als ich n halbes Jahr intensiv Assembler programmiert habe, habe ich nichts besonderes ueber meine Hardware gelernt, gut ich hab nun eine gewisse Vorstellung davon, wie sich ein paar Dinge in der CPU bewegen, aber ich wuesste nicht, wie ich ein Software fuer meine Hardware schreiben sollte.

Assembler ist eine Programmiersprache wie jede andere auch, und es gibt nur eine Hand voll Dinge, die ich mit Assembler machen kann, aber nicht mit C...
 
Zurück
Oben