210 likes | 321 Views
Tutorium Tech II. Daniel Betz Wintersemester 2011/12. Der menschenlesbare Code wird in maschinenlesbaren Code übersetzt Befehle werden durch ihre „ID“ ersetzt Variablennamen werden durch ihre Speicheradressen ersetzt Konstanten werden durch ihre Werte ersetzt Ausgabe: Object -Datei.
E N D
Tutorium Tech II Daniel BetzWintersemester 2011/12
Der menschenlesbare Code wird in maschinenlesbaren Code übersetzt • Befehle werden durch ihre „ID“ ersetzt • Variablennamen werden durch ihre Speicheradressen ersetzt • Konstanten werden durch ihre Werte ersetzt • Ausgabe: Object-Datei Compilieren Daniel Betz • daniel.betz@daniel-betz.com
Zusammenführen mehrerer Objekt-Dateien • Zusätzlich wird ein Loader eingefügt • Startet die eigentliche Ausführung Linken Daniel Betz • daniel.betz@daniel-betz.com
Loader des Betriebssystem lädt das Programm in den Arbeitsspeicher • Die Anordnung im echten Speicher erfolgt zufällig • Der Speicherbereich muss nicht durchgängig sein • Der virtuelle Adressraum des Programms sieht „von innen“ immer gleich aus Starten in Betriebssystem Daniel Betz • daniel.betz@daniel-betz.com
Bei der Übertragung in den Speicher werden die Adressen einmalig ans Zielsystem angepasst • Die Anordnung im Zielsystem ändert sich nicht Starten auf Hardware Daniel Betz • daniel.betz@daniel-betz.com
Simulation • Extrem Langsam • In Circuit Emulator • Echte CPU • vom Programm unabhängige Schaltung • Monitor • Echte CPU • Programm sendet aktiv Informationen Debugging Daniel Betz • daniel.betz@daniel-betz.com
Aufgaben VHDL Daniel Betz • daniel.betz@daniel-betz.com
libraryieee;useieee.std_logic_1164.all; entity4_bit_reg isPort ( takt, load: INstd_logic;serin : INstd_logic;Q (3downto0) : OUT std_logic_vector);end; architecturehugoof4_bit_reg isbeginprocess(takt)signalserout : std_logic; variable temp : std_logic;begintemp <= serin;if (q = "0101") then Q <= Q + 1;elseserout <= temp;end process;endhugo; • 7 Fehler finden • Folgefehler sind egal FehlersucheWS08/09 Daniel Betz • daniel.betz@daniel-betz.com
Die Prozess-Synchronisation in VHDL kann erfolgen über eine … oder über …, aber nicht über beides gleichzeitig VHDL-WissenSS09 Daniel Betz • daniel.betz@daniel-betz.com
signalA, B : std_logic_vector(15downto0);beginprocessbegin A <= X"EF07";waitfor5ns; B <= A;B (7downto4) <= A (3downto0);B (9downto8) <= "ZZ";waitfor5ns;B(15downto12) <= B(11downto8);B(0) <= B(12);wait;endprocess; • Gefragt: Wert von B nach Ausführung VHDL-InterpretationSS09 Daniel Betz • daniel.betz@daniel-betz.com
entitybit8add isPort ( a, b : INstd_logic_vector(7downto0);summe : OUTstd_logic_vector(7downto0);uebertrag : OUT std_logic);end; • Gefragt: Vollständige Testbench für den Addierer • Alle möglichen Eingangskombinationen sollen getestet werden • Überprüfung der Ausgabe nicht nötig VHDL-TestbenchSS09 Daniel Betz • daniel.betz@daniel-betz.com
Gegeben: Prozesse, Signalverläufe A und B • Gefragt: Signalverläufe C, D und E A B Signalverläufe / VHDL "ausführen"SS09 Daniel Betz • daniel.betz@daniel-betz.com
Aufgaben Assembler Daniel Betz • daniel.betz@daniel-betz.com
Der C166 führt folgendes Programm aus:MOVR1,#-1ADDR1,#0xFFFF • Welchen Wert haben die Flags (C, V, N, Z) nach der Ausführung und warum? Flags nach AdditionSS07 Daniel Betz • daniel.betz@daniel-betz.com
Der C166 führt folgendes Programm aus:MOVR1,#-4711ADDR1,#0x4711 • Welchen Wert haben die Flags (C, V, N, Z) nach der Ausführung und warum? Flags nach AdditionWS07/08 Daniel Betz • daniel.betz@daniel-betz.com
Gegeben ist folgender ASM-Code für den C166:Offset EQU2Var32 DW4711, 128Tabelle DB4, 88, 125, 74, 66, 2, 0MOV R1,#Tabelle ;?1MOV R0,Var32 + Offset ;?2MOV RL2,[R1 + #Offset] ;?3MOV RH2,[R1+] ;?4MOV R3,[R1+] • Welche Adressierungsarten werden an den markierten Stellen benutzt? • Angenommen, die Adresse von Var32 sei 0x100. Was steht nach Programmende in R0 bis R3? In Hex! Adressierung und AusführungSS08 Daniel Betz • daniel.betz@daniel-betz.com
Der C166 führt folgendes Programm aus:MOVR1,#0xCFC7ADDR1,#45537 • Welchen Wert haben die Flags (C, V, N, Z) nach der Ausführung und warum? Flags nach AdditionSS08 Daniel Betz • daniel.betz@daniel-betz.com
Eine Variable liegt im vom Compiler erzeugten Datensegment auf Adresse 1000 • Beschreiben Sie (in Worten, keine Rechnung) die Schritte, durch die die Variable ihren endgültigen Platz im Speicher des Embedded System findet SpeicheranordnungSS08 Daniel Betz • daniel.betz@daniel-betz.com
Ein ausführbares Programm kann als .bin oder als .exe gespeichert sein • Erläutern Sie die Unterschiede und die Anwendungsfälle der beiden Formate Wissen ProgrammformateSS07 Daniel Betz • daniel.betz@daniel-betz.com
Danke für die Aufmerksamkeit Bis nächste Woche! Daniel Betz • daniel.betz@daniel-betz.com