2010-08-19 24 views
16

Ich beginne die Universität in ein paar Wochen (Software-Engineering-Abschluss) und weiß, dass eines der Module, die ich im ersten Jahr studieren werde, "Grundlagen der Architektur" oder etwas Ähnliches ist; im Grunde lernt es, in Assembly zu programmieren.Assemblersprache - Mehr als ein Typ?

Ich möchte etwas Hintergrundlernen machen, also bin ich darauf vorbereitet (ich habe dasselbe bei einigen anderen Einheiten gemacht), aber ich weiß nicht, ob es mehr als eine 'Assemblersprache' gibt. Wie viele sind es? Ist es eine pro Hersteller, eine 32-Bit- und 64-Bit-Sprache oder nur ein Standard?

Wenn es mehr als einen Typ gibt, welcher ist der "beliebteste" oder wird er wahrscheinlich auf Universitätsniveau unterrichtet?

+1

Wenn Sie einen Vorsprung haben wollen, würde ich empfehlen, jemanden an der Universität (der Prof oder Abteilung Sekretärin) zu kontaktieren, um herauszufinden, welche Assemblersprache verwendet wird. Einige Universitäten verwenden nicht einmal eine "echte" Assemblersprache, sondern ziehen es vor, eine synthetische Assemblersprache zu schaffen, mit der Studenten lernen können. –

+0

@Blair Das ist eine gute Idee, ich werde das tun. Ich hoffe wirklich, dass ich am Ende keine synthetische Sprache verwende - das wäre so enttäuschend. –

+2

Meine Universität lehrte den äquivalenten Kurs mit MIPS, einer relativ einfachen Assemblersprache für RISC (reduzierter Befehlssatz). Es ist sehr wahrscheinlich, dass sie nicht x86 (die 32-Bit-Assembler-Sprache von Intel und wahrscheinlich die am häufigsten für Compiler ausgerichtete Sprache) lehren, weil es im x86-Satz so viele arkane Anweisungen gibt, die sich im Laufe der Zeit weiterentwickelt haben, um verschiedene Optimierungen zu ermöglichen. Hier sind ein paar Infos zu MIPS: http://en.wikipedia.org/wiki/MIPS_architecture –

Antwort

25

Es gibt viele, viele Arten von Assemblersprachen. Die derzeit beliebtesten sind ARM, MIPS und x86. ARM wird auf vielen Handys und vielen eingebetteten Systemen verwendet. MIPS ist auf IBM-CPUs beliebt und wird auf Systemen wie Macs, einigen Videospielkonsolen und einigen, die ich vermisse, gefunden. Der x86-Assembler wird auf Intel-PCs verwendet. Jeder Geschmack hat verschiedene Versionen, die den Gammut von 16-Bit- bis 64-Bit-Anweisungen umfassen. Die Sache mit der Assemblierung ist, dass alte Architekturen eher sterben und neue entstehen, aber die fundamentalen Dinge, die RISC-Stilsysteme tun, sind im Wesentlichen die gleichen. Es geht nur darum, die Mnemotechniken zwischen den Systemen zu lernen. Move, Mov, Load usw. laden alle ein Register mit einem Wert. Es ist wirklich wie jede andere Sprache. Sobald Sie einen erlernen, ist es ziemlich einfach, neuere auszuwählen. Einige ältere, denen Sie begegnen könnten, sind Z80, 68000, 6502 und 6510 - je nachdem, wie weit Sie zurück in die Richtung gehen, die Sie gehen möchten.

Hoffe, dass hilft.

+2

Sie verwechseln MIPS (nicht mit Motorola verwandt) mit IBMs PowerPC (von alten Macs, Xbox 360, PS3, Gamecube/Wii/WiiU). – rmmh

+0

Der Opcode eines Befehls ist 6 Bits in MIPS. Jeder Befehl hat immer 32 Bits. –

6

wissen aber nicht, wenn es mehr als eine ist ‚Assemblersprache‘

Verschiedene Montierer (z GNUs und Microsoft) für die gleiche CPU können verschiedene Assemblersprache Syntax haben; Der Unterschied ist jedoch trivial, da beide auf dieselbe CPU abzielen und es eine 1: 1-Zuordnung zwischen Assemblerbefehlen und CPU-Opcodes gibt (wenn Sie Makros ignorieren).

Der größere Unterschied besteht zwischen verschiedenen Arten von CPU.

Manchmal unterstützen verschiedene CPUs die gleichen Opcodes (und können daher von denselben Assemblern angesprochen werden), da sie so konzipiert sind, dass sie mit derselben Maschinensprache kompatibel sind oder gegeneinander konkurrieren.

Aber manchmal sind sie anders: siehe List of Instruction Set Architectures.