Lab 4 Εισαγωγή στον προγραμματισμό Assembly ARM

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Ancient Greek for Everyone: A New Digital Resource for Beginning Greek Unit 4: Conjunctions 2013 edition Wilfred E. Major
Advertisements

Handling Local Variables General Purpose Registers
O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) Σχεδίαση datapath 4 κατηγορίες εντολών: Αριθμητικές-λογικές.
Ανίχνευση κίνδυνου Επίλυση με προώθηση. Μπλέ: Εξαρτήσεις. Εξαρτήσεις προς προηγούμενα CC είναι κίνδυνοι δεδομένων Kόκκινο: Προώθηση IF/ID ID/EX EX/MEM.
NIKOΛΑΟΣ ΝΤΙΡΛΗΣ 5ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΙΘΟΥΣΑ Β4 1.  Ένα thread έχει: ID, program counter, register set, stack  Μοιράζεται με τα άλλα threads της ίδιας διεργασίας.
1 Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Τέταρτο Pipelining –
1 Οργάνωση και Αρχιτεκτονική Υπολογιστών Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Οργάνωση και Αρχιτεκτονική.
National Technical University of AthensΤεχνολογίες Διαδικτύου Σύνοψη 1Αρχές διαδικτύου 1.1 Αναδρομή – εισαγωγή 1.2 Πρωτόκολλα TCP/IP Διαστρωμάτωση.
Οργάνωση Υπολογιστών 5 “συστατικά” στοιχεία -Επεξεργαστής:
1 Κλήσεις συναρτήσεων και προγραμματισμός με μηχανές καταστάσεων.
Translation Tips LG New Testament Greek Fall 2012.
HY150Ξενοφών Ζαμπούλης HY150 Ε π ι π λέον στοιχεία της C.
6/15/2015HY220: Ιάκωβος Μαυροειδής1 HY220 Static Random Access Memory.
ΗΥ Παπαευσταθίου Γιάννης1 Clock generation.
ΗΥ Καλοκαιρινός Γιώργος1 PCI Bus Pin List. ΗΥ Καλοκαιρινός Γιώργος2 Initiator Target.
Τεχνολογία ΛογισμικούSlide 1 Εκτέλεση σε Πραγματικό Χρόνο Τεχνολογία Λογισμικού Slide 25.
ΗΥ Καλοκαιρινός Γιώργος1 Bus. ΗΥ Καλοκαιρινός Γιώργος2 MCS51.
6/26/2015HY220: Ιάκωβος Μαυροειδής1 HY220 Asynchronous Circuits.
Translation Lookaside Buffers Φροντιστήριο του μαθήματος “Προηγμένοι Μικροεπεξεργαστές”
Προσομοίωση Δικτύων 2n Άσκηση Δημιουργία, διαμόρφωση μελέτη επικοινωνιακών ζεύξεων.
Week 11 Quiz Sentence #2. The sentence. λαλο ῦ μεν ε ἰ δότες ὅ τι ὁ ἐ γείρας τ ὸ ν κύριον Ἰ ησο ῦ ν κα ὶ ἡ μ ᾶ ς σ ὺ ν Ἰ ησο ῦ ἐ γερε ῖ κα ὶ παραστήσει.
WRITING B LYCEUM Teacher Eleni Rossidou ©Υπουργείο Παιδείας και Πολιτισμού.
COURSE CODE: DES-102 COURSE TITLE: DECORATION DRAWING TUTOR: DOMENICA RENKO SEMESTER: FALL 2010 PROJECT: 2 | hand-out: week 10 – hand-in: week 11 | duration:
Προσομοίωση Δικτύων 4η Άσκηση Σύνθετες τοπολογίες, διακοπή συνδέσεων, δυναμική δρομολόγηση.
Προσομοίωση Δικτύων 3η Άσκηση Δημιουργία, διαμόρφωση μελέτη σύνθετων τοπολογιών.
Αριθμητική Επίλυση Διαφορικών Εξισώσεων 1. Συνήθης Δ.Ε. 1 ανεξάρτητη μεταβλητή x 1 εξαρτημένη μεταβλητή y Καθώς και παράγωγοι της y μέχρι n τάξης, στη.
ΕΙΣΑΓΩΓΉ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΉ ΝΊΚΟΣ ΠΑΠΑΔΆΚΗΣ Αρχιτεκτονική Υπολογιστών.
Lab 3 Εξοικείωση με μετάφραση C σε Assembly Πρώτη γνωριμία με εντολές Assembly.
ERASMUS+ - ΒΔ 1 Σχολική Εκ π αίδευση – Εκ π αίδευση Ενηλίκων Ημερίδα Παροχής Πληροφοριών για τη Διαχείριση και Υλοποίηση των Εγκεκριμένων Σχεδίων (Πρόσκληση.
Διαχείριση Διαδικτυακής Φήμης! Do the Online Reputation Check! «Ημέρα Ασφαλούς Διαδικτύου 2015» Ε. Κοντοπίδη, ΠΕ19.
OFDM system characteristics. Effect of wireless channel Intersymbol interference in single carrier systems due to multipath propagation with channel delay.
Chapter 16 Control Unit Implemntation. A Basic Computer Model.
Μαθαίνω με “υπότιτλους”
Αντισταθμιστική ανάλυση
Καθηγητής Σταύρος Α. Κουμπιάς
O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) 4 κατηγορίες εντολών: Αριθμητικές-λογικές εντολές (add, sub, slt κλπ) –R Type.
Αντικειμενοστραφής Προγραμματισμός ΙΙ
Τ.Ε.Ι. Κρήτης Τμ. Μηχανικών Πληροφορικής Αρχιτεκτονική Υπολογιστών
Αντικειμενοστραφής Προγραμματισμός ΙΙ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Matrix Analytic Techniques
INSTRUCTIONS LANGUAGE OF THE MACHINE
Single-cyle υλοποίηση:
ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΓΛΩΣΣΑ C
Αλγόριθμοι Ταξινόμησης – Μέρος 3
MIPS: Σύνολο εντολών, γλώσσα μηχανής & μεθοδολογία σχεδίασης
Κεντρική Μονάδα Επεξεργασίας
Pipeline: Ένα παράδειγμα από ….τη καθημερινή ζωή
O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) 4 κατηγορίες εντολών: Αριθμητικές-λογικές εντολές (add, sub, slt κλπ) –R Type.
Μουσενίκας Δημήτριος Βλάχος Χριστόδουλος
Single-cyle υλοποίηση:
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ Ι
Find: φ σ3 = 400 [lb/ft2] CD test Δσ = 1,000 [lb/ft2] Sand 34˚ 36˚ 38˚
Εισαγωγή στην Τεχνολογία
aka Mathematical Models and Applications
GLY 326 Structural Geology
ΕΝΣΤΑΣΕΙΣ ΠΟΙΟΣ? Όμως ναι.... Ένα σκάφος
Find: minimum B [ft] γcon=150 [lb/ft3] γT=120 [lb/ft3] Q φ=36˚
Single-cyle υλοποίηση:
O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) 4 κατηγορίες εντολών: Αριθμητικές-λογικές εντολές (add, sub, slt κλπ) –R Type.
Single-cyle υλοποίηση:
Single-cyle υλοποίηση:
Lower Bound for Partial Sums
Find: ρc [in] from load (4 layers)
O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) 4 κατηγορίες εντολών: Αριθμητικές-λογικές εντολές (add, sub, slt κλπ) –R Type.
CPSC-608 Database Systems
O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) 4 κατηγορίες εντολών: Αριθμητικές-λογικές εντολές (add, sub, slt κλπ) –R Type.
ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΓΛΩΣΣΑ C
Baggy Bounds checking by Akritidis, Costa, Castro, and Hand
Μανίκη Γαβριέλλα Μήτσης Σταύρος
Μεταγράφημα παρουσίασης:

Lab 4 Εισαγωγή στον προγραμματισμό Assembly ARM Εντολές Μεταφορές Δεδομένων Διευθυνσιοδοτήσεις Βασικές διακλαδώσεις

Data processing Instructions Largest family of ARM instructions, all sharing the same instruction format. Contains: Arithmetic operations Comparisons (no results ‐just set condition codes) Logical operations Data movement between registers Remember, this is a load / store architecture These instruction only work on registers, NOT memory. They each perform a specific operation on one or two operands. First operand always a register ‐Rn Second operand sent to the ALU via barrel shifter. We will examine the barrel shifter shortly. BIC bit clear ORR bit set AND bit mask EOR bit invert Comparisons produce no results - just set condition codes. CMP like SUB CMN like ADD (subtract of a negative number is the same as add) TST like AND TEQ like EOR (eor of identical numbers gives result of zero) Generally single-cycle execution (except write to PC and register-controlled shift). Mention ARM NOP & Thumb NOP. Explain RSB and RSC which do subtract in other order (e.g. y-x not x-y) Does not include multiply (separate instr format). No divide - compiler uses run-time library or barrel shifter to perform division. Can combine “S” bit with conditional execution, e.g. ADDEQS r0, r1, r2

Load and Store Word or Byte: Base Register The memory location to be accessed is held in a base register STR r0, [r1] ; Store contents of r0 to location pointed to ; by contents of r1. LDR r2, [r1] ; Load r2 with contents of memory location ; pointed to by contents of r1. Instruction cycle timing: STR LDR 7TDMI 2 cycles 3 cycles 9TDMI 1 cycle 1 cycle - interlock if used in next cycle StrongARM1 1 cycle 1 cycle - interlock if used in next cycle Xscale 1 cycle 1 cycle - interlock if used in next 2 cycles Note size specifier comes after condition code. Link: <address> explained on next slide. Note that load/store instructions never set condition codes.

Single register data transfer LDR STR Word LDRB STRB Byte LDRH STRH Halfword LDRSB Signed byte load LDRSH Signed halfword load Memory system must support all access sizes Syntax: LDR{<cond>}{<size>} Rd, <address> STR{<cond>}{<size>} Rd, <address> e.g. LDREQB Instruction cycle timing: STR LDR 7TDMI 2 cycles 3 cycles 9TDMI 1 cycle 1 cycle - interlock if used in next cycle StrongARM1 1 cycle 1 cycle - interlock if used in next cycle Xscale 1 cycle 1 cycle - interlock if used in next 2 cycles Note size specifier comes after condition code. Link: <address> explained on next slide. Note that load/store instructions never set condition codes.

Load/Store Word or Byte: Pre‐indexed Addressing Instruction cycle timing: STR LDR 7TDMI 2 cycles 3 cycles 9TDMI 1 cycle 1 cycle - interlock if used in next cycle StrongARM1 1 cycle 1 cycle - interlock if used in next cycle Xscale 1 cycle 1 cycle - interlock if used in next 2 cycles Note size specifier comes after condition code. Link: <address> explained on next slide. Note that load/store instructions never set condition codes.

Load and Store Word or Byte: Post‐indexed Addressing Instruction cycle timing: STR LDR 7TDMI 2 cycles 3 cycles 9TDMI 1 cycle 1 cycle - interlock if used in next cycle StrongARM1 1 cycle 1 cycle - interlock if used in next cycle Xscale 1 cycle 1 cycle - interlock if used in next 2 cycles Note size specifier comes after condition code. Link: <address> explained on next slide. Note that load/store instructions never set condition codes.

Load/Store Exercise Assume an array of 25 words. A compiler associates y with r1. Assume that the base address for the array is located in r2. Translate this C statement/assignment using just three instructions: array[10] = array[5] + y;

Load/Store Exercise Solution array[10] = array[5] + y; LDR r3, [r2, #5] ; r3 = array[5] ADD r3, r3, r1 ; r3 = array[5] + y STR r3, [r2, #10] ; array[5] + y = array[10]

Load and Store Multiples Syntax: <LDM|STM>{<cond>}<addressing_mode> Rb{!}, <register list> 4 addressing modes: LDMIA / STMIA increment after LDMIB / STMIB increment before LDMDA / STMDA decrement after LDMDB / STMDB decrement before IA IB DA DB Several aliases for stack usage are allowed for instance: LDMFD -> LDMIA STDFD -> STMDB LDMxx r10, {r0,r1,r4} STMxx r10, {r0,r1,r4} r4 r4 r1 r1 r0 Increasing Address Base Register (Rb) r10 r0 r4 r1 r4 r0 r1 r0

Branch instructions ± 32 Mbyte range How to perform longer branches? Branch : B{<cond>} label Branch with Link : BL{<cond>} subroutine_label The processor core shifts the offset field left by 2 positions, sign-extends it and adds it to the PC ± 32 Mbyte range How to perform longer branches? 31 28 27 25 24 23 Cond 1 0 1 L Offset Link bit 0 = Branch 1 = Branch with link Condition field PC-relative to allow position independent code, and allows restricted branch range to jump to nearby addresses. How to access full 32-bit address space? Can set up LR manually if needed, then load into PC MOV lr, pc LDR pc, =dest ADS linker will automatically generate long branch veneers for branches beyond 32Mb range.

ARM Branches and Subroutines B <label> PC relative. ±32 Mbyte range. BL <subroutine> Stores return address in LR Returning implemented by restoring the PC from LR For non-leaf functions, LR will have to be stacked func1 func2 : BL func1 STMFD sp!,{regs,lr} : BL func2 LDMFD sp!,{regs,pc} : MOV pc, lr This slide shows the way that ARM branch instructions work It also shows the need to stack the LR (using STM/LDM instructions) when making subroutine calls within subroutines.

Memory Fill Ξεκινώντας από την διεύθυνση __heap_base «γεμίστε» τις δέκα επόμενες byte θέσεις με τα νούμερα 1,2,3,…..,Α Εντολές που θα χρειαστείτε movs strb adds cmp B(condition)

Κώδικας Άσκησης Κατεβάστε το project  Lecture 4 από το eclass Διαμορφώστε το περιβάλλον ώστε να χρησιμοποιήσετε τον Simulator του περιβάλλοντος Κάθε κίνηση/βήμα του εργαστηρίου θα επαληθεύεται μέσω παρακολούθησης της μνήμης (memory window)

Addressing modes Αποθηκεύσατε το νούμερο FF στο 5ο byte μετά τη __heap_base address Μεταφέρατε όλες τις τιμές που «γεμίσατε» σε περιοχή μνήμης που ξεκινάει 20 byte μετά την __heap_base address Χρησιμοποιείστε Load and Store Multiples LDMIA Προσοχή στον writeback χαρακτήρα “!” Προσοχή στο «εύρος» των δεδομένων που λαμβάνονται

Min – Max Γράψτε κώδικα ο οποίος να βρίσκει την μέγιστη τιμή εκ των τιμών των 10 πρώτων θέσεων ξεκινώντας από __heap_base Γράψτε κώδικα ο οποίος να βρίσκει την ελάχιστη τιμή εκ των τιμών των 10 πρώτων θέσεων ξεκινώντας από __heap_base Σχεδιάστε κατάλληλο διάγραμμα ροής κώδικα