Unterschiede zwischen Prozessoren

Hallöchen,

ich habe mal eine Frage bei ich nicht weiß wie ich sie in einer Suchmaschine formulieren soll.

Ich habe ein Buch das c Code disassembliert. Der Autor macht das ganze auf intel Prozessoren, ich habe einen AMD verbaut. Ich habe das Programm abgeschrieben, kompiliert und mit gdb auseinander genommen. Dabei hab ich gesehen, dass das Programm in assembler anders aufgebaut ist, aber die gleiche Funktion hat.

Wie kommt das? Wird ein Programm auf anderen Architekturen anders aufgebaut? Welchen Sinn hat das?

Ich kann es leider nicht gegenprüfen, da ich keinen intel zur Verfügung hab. Das Programm erzeugt einfach nur eine Schleife und schreibt x mal in die console. Bei Fragen kann ich das Programm und den disassemblierten code auch hoch laden.

Gruß,
explode
 
Wenn von Intel-Prozessoren die Rede ist, sind zumeist x86-Architekturen/Prozessoren gemeint. Unterschiede bei der Disassemblierung können durchaus auch in der Version des eingesetzten Compilers, des Debuggers oder schlicht des Betriebssystems und der darin vorhandenen Systembibliotheken liegen.
 
Ich habe ein Buch das c Code disassembliert. Der Autor macht das ganze auf intel Prozessoren, ich habe einen AMD verbaut. Ich habe das Programm abgeschrieben, kompiliert und mit gdb auseinander genommen. Dabei hab ich gesehen, dass das Programm in assembler anders aufgebaut ist, aber die gleiche Funktion hat.

Die Standard Assembler-"Befehle" sind weitestgehend identisch. Die CPUs unterscheiden sich bei den Befehlssätzen durch sog. "Extensions". Das Problem solcher Extensions ist natürlich die Portierbarkeit und deswegen meidet man das idR.

Wie kommt das? Wird ein Programm auf anderen Architekturen anders aufgebaut? Welchen Sinn hat das?
Wie bit sagte, wird es vermutlich am Compiler, bzw. Debugger liegen.
Du könntest mal den C Code in den Assembler übersetzen und mit dem vergleichen, was der Debugger produziert.

Aber unterm Schnitt ist es nicht ungewöhnlich dass du bei diesen Büchern abweichende Codes hast. So lernt man es ohnehin besser ;)
 
Es kann nicht nur an einem anderen Compiler liegen. Es reichen sogar schon andere Aufruf-Paremeter oder eine andere Version des Compilers als die vom Autor genutzte.

Lg
 
Zurück
Oben