Ergebnis 1 bis 3 von 3

Thema: Wie setzt der Prozessor ein "if" um?

  1. #1
    Kaiser(in)
    Registriert seit
    29.03.2009
    Ort
    1011 1111 1011 WorldWideWeb
    Beiträge
    2.439
    Danke
    2
    Bekam 6 mal "Danke" in 6 Postings

    Standard Wie setzt der Prozessor ein "if" um?

    Ich habe mich neulich mal gefragt, wie der Prozessor If´s regelt. Er kann ja einfach Impulse senen und auf diese weise rechnen und dinge veranlassen. Aber wer entscheidet, wenn im proramm steht "Du das NUR Wenn" ? Der Prozessor kann ja nicht "denken" sonder nur machen. Weiss evtl. jemand wie das funktioniert?
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!
    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.
    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  2. #2
    Jedi Ritter Avatar von Dodo
    Registriert seit
    26.04.2008
    Ort
    Wien
    Alter
    27
    Beiträge
    3.774
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard AW: Wie setzt der Prozessor ein "if" um?

    Der Prozessor verarbeitet Befehle im Sogenannten Intel-HEX-Code.
    Dieser Code ist mehr oder minder 1:1 zu Assembler umgesetzt.

    In Assembler gibt es den sogenannten GOTO-Befehl, bzw CALL-Befehl.
    Dabei springt die Verarbeitung an eine andere Position im Programmcode.

    Wenn in einer Hochsprache - wie zum Beispiel C++ - ein IF vorkommt, dann wandelt der Compiler (unter Windows) das ganze auf das Pendant in PE (Portable Executable) - das Dateiformat, der *.exe-Anwendungen um - Windows rechnet bei der Ausführung des Programm das ganze auf Assembler, bzw Maschinencode um.

    Anbei findest du ein Programm, das ich in der Schule schreiben musste.
    Es ist das "Betriebssystem" eines digitalen Voltmeters.

    Wenn du dir folgende Zeilen ansiehst...:
    Code:
    isteins10	movf	eins, w		; ist eins schon 10?
    		sublw	b'00001010'
    		btfsc	status, z
    		goto	eins10
    ... dann hast du Assembler-Code ;D

    Dieser Code überprüft, ob die Einerstelle der eingelesenen Spannung auf 10 ist. Also:
    Code:
    if(eins == 10)
    Die Erklärung zu dem Code:
    Code:
    isteins10	movf	eins, w		; ist eins schon 10?
    isteins10 ist ein sogenanntes label. es entspricht einer sprungadresse und man kann mit goto diesen code ausführen.
    movf heißt "Move File" und hier wird ein Byte auf eine bestimmte Speicheradresse geschoben.
    Die Parameter sind eins und w. Das heißt das Byte mit dem Namen eins (Befehl: EINS EQU 0x34) wird in das Arbeitsregister w geschoben.

    Code:
    		sublw	b'00001010'
    Nun wird die Bitmaske 00001010 (= 10) vom Arbeitsregister abgezogen.

    Code:
    		btfsc	status, z
    btfsc heißt "Bit Test File, Skip if Clear". Dieser Befehl prüft ein Bit auf den Inhalt. Wenn der Inhalt 0 ist, wird der nächste Befehl übersprungen.
    Die Parameter sind status und z. status steht für das Sogenannte Status-Register und z für das sogenannte Zerobit. Wenn der vorherige Befehl das Ergebnis 0 geliefert hat, wird dieses Bit auf 1 gesetzt.
    Das gesamte Gebilde heißt also: Wenn der vorherige Befehl nicht 0 Ergeben hat, wird der nächste Befehl übersprungen, oder Wenn die Subtraktion nicht 0 ergeben hat, wird übersprungen, oder eben Wenn eins nicht den Wert 10 hatte, wird der nächste Befehl übersprungen.

    Code:
    		goto	eins10
    goto ist der Sprungbefehl. Er springt hier auf den Code mit dem Label eins 10.

    Also mehr oder minder:
    Code:
    if(eins != 10)
    eins10();
    ---------------------------------------------------

    Jeder Assemblerbefehl und jeder Operand entspricht im Intel-HEX-Format einer Zahl.
    Diese Zahl wird nach dem Von-Neumann-Prinzip geladen.
    Jede Zahl entspricht wiederum einer Bitmaske.
    Jedes Bit besteht aus 0ern und/oder 1ern.
    Diese Bits entsprechen laut TTL (Transistor-Transistor-Logik) wiederum 0V oder 5V, also kein Strom oder Strom.

    Ein Transistor, arbeitet in der Standardvariante mit 0,7 Volt Minimum.
    Durch Widerstände, etc. benötigt man etwas mehr.
    Der Bereich für 1 ist dann etwa > 3,5V

    Wenn die Bitmasken, die aus dem ROM - dem Programmspeicher - gelesen werden dann bestimmte Werte haben, dann ergeben verschiedene Und-Gatter auf Transistorbasis verschiedene Ausgänge. (Deshalb sind auch so viele Transistoren notwendig)

    Je nach Ausgang wird die sogenannte ALU (Arithmetical and Logical Unit) angesteuert.
    Diese führt die Befehle aus und liefert sie zurück.
    Damit werden die Register beschrieben und der Befehl wurde ausgeführt.

    -------------------------------------------------------

    Alles klar? ;D
    Die letzten 5 Jahre HTL-Elektrotechnik/Informationstechnik haben doch etwas gebracht xD
    Angehängte Dateien Angehängte Dateien
    Geändert von Dodo (22.06.2010 um 04:15 Uhr)
    Something big is coming. And there will be pirates and ninjas and unicorns...

  3. #3
    Kaiser(in)
    Themenstarter

    Registriert seit
    29.03.2009
    Ort
    1011 1111 1011 WorldWideWeb
    Beiträge
    2.439
    Danke
    2
    Bekam 6 mal "Danke" in 6 Postings

    Standard AW: Wie setzt der Prozessor ein "if" um?

    Cool, vielen Dank! Besonders für die ausführliche erklärung
    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.
    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

Ähnliche Themen

  1. Wie erstelle ich ein Element "fixed" aber trotzdem mit "position: relative"?
    Von nilss im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 3
    Letzter Beitrag: 17.03.2010, 16:35
  2. Dürrenmatts "Der Besuch der alten Dame" und Sophokles' "Ödipus Tyrannos"
    Von Unregistriert im Forum Off Topic und Quasselbox
    Antworten: 3
    Letzter Beitrag: 21.01.2010, 22:22
  3. Border-Bottom: noch "zarter" als "1px dashed"?
    Von Mütze im Forum HTML & CSS Forum
    Antworten: 2
    Letzter Beitrag: 19.09.2008, 18:10
  4. php: "bitte warten" oder "login läuft"
    Von phore im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 3
    Letzter Beitrag: 05.04.2006, 18:18
  5. Text immer "unten" und "rechts" am Frame
    Von Valdyn im Forum HTML & CSS Forum
    Antworten: 5
    Letzter Beitrag: 25.05.2004, 19:14

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •