F4: Assemblerprogrammering

Relevanta dokument
Digital- och datorteknik

Digital- och datorteknik

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

7) Beskriv tre sätt att överföra parametrar mellan huvudprogram och subrutin.

Tentamen Datorteknik Y, TSEA28 Datum

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

Digital- och datorteknik

Tentamen. Datorteknik Y, TSEA28

Programexempel för FLEX

Tentamen (Exempel) Datorteknik Y, TSEA28

Tentamen Datorteknik Y, TSEA28 Datum TER2, TER4, TERE Tid 14-18

Tentamen. Datorteknik Y, TSEA28

Tentamen (Exempel) Datorteknik Y, TSEA28

Tentamen (Exempel) Datorteknik Y, TSEA28

Tentamen (Exempel) Datorteknik Y, TSEA28

Assemblerprogrammering för ARM del 2

Lösningsförslag till Tenta i Mikrodator

Digital- och datorteknik

F5: Högnivåprogrammering

F5: Högnivåprogrammering

Styrenheten styrsignalsekvenser programflödeskontroll

Övningsuppgifter i Mikrodatorteknik 4p/5p

Digital och Datorteknik EDA /2010. EDA Digital och Datorteknik

F8: Undantagshantering

Reducerad INSTRUKTIONSLISTA för FLIS-processorn

Mål. Datorteknik. Innehåll. Innehåll (forts) Hur ser ett program ut? Hur skapas maskinkoden?

TSEA28 Datorteknik Y (och U)

F2: Motorola Arkitektur. Assembler vs. Maskinkod Exekvering av instruktioner i Instruktionsformat MOVE instruktionen

Institutionen för elektro- och informationsteknologi, LTH

Datorteknik. Föreläsning 3. Assembler, stack och subrutiner, programmeringskonventionen. Institutionen för elektro- och informationsteknologi, LTH

Stack och subrutiner Programmeringskonventionen

TSEA28 Datorteknik Y (och U)

Villkorliga hopp: 9/26/2011. Dagens mål: Du ska kunna.. Villrorliga (Relativa) hopp - forts Arb s 140. LV5 Fo12. LV5 Fo12. Aktivera Kursens mål:

Ext-13 (Ver ) Exempel på RTN-beskrivning av FLEX-instruktioner

Lösningsförslag till Tenta i Mikrodator

Omtentamen i CDT204 - Datorarkitektur

3. Mikroprogrammering II

Konstruera en dator mha grindar och programmera denna Använda en modern microcontroller

Ext-13 (Ver ) Exempel på RTN-beskrivning av FLEX-instruktioner

CE_O1. Nios II. Enkla assembler-instruktioner.

Lösningar till tentamen i EIT070 Datorteknik

TSEA28 Datorteknik Y (och U)

Extrauppgifter för CPU12

Digital- och datorteknik

Tentamen Datorteknik D del 2, TSEA49

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler

Tentamen Datorteknik Y, TSEA28 Datum TER2 och TER3 Tid 14-18

Tentamen Datorteknik Y, TSEA28 Datum

Institutionen för elektro- och informationsteknologi, LTH

Datorteknik. Föreläsning 2. Programmering i C och assembler MIPS instruktionsarkitektur. Institutionen för elektro- och informationsteknologi, LTH

Lösningar till tentamen i EIT070 Datorteknik

Datorsystemteknik DVGA03 Föreläsning 8

Dataminne I/O Stack 0x005D 0x3D SP low byte 0x005E 0x3E SP high byte

Fö 5+6 TSEA81. Real-time kernel + Real-time OS

Mål. Datorteknik. Innehåll. Vad händer med en add-instruktion? Vad händer med en add-instruktion. Instruktioner som bitmönster i minnet

Kontrollskrivning Mikrodatorteknik CDT S2-704

FLEX Instruktionslista

Assemblerprogrammering del 3

Assemblerprogrammering för HCS12

Assemblerprogrammets. struktur; exempel

Datorteknik. Föreläsning 6. Processorns uppbyggnad, pipelining. Institutionen för elektro- och informationsteknologi, LTH. Mål

Assemblerprogrammets struktur; exempel

Maskinorienterad Programmering 2010/11

Assemblerprogrammering - fördjupning

Extra lab. Nu på fredag kl 8-12 Frivillig Enbart hjälp med projektuppgiften Ingen examination

Programmering av Motorola TSIU02 Datorteknik

Laboration 2 i Datorteknik- Assemblerprogrammering II

Tentamen Datorteknik Y, TSEA28 Datum TER1 och TER2 Tid 14-18

Digital- och datorteknik

Institutionen för datavetenskap 2014/15

Datorteknik ERIK LARSSON

Övningsuppgifterna i kapitel F avser FLIS-processorn, vars instruktioner och motsvarande koder definieras i INSTRUKTIONSLISTA FÖR FLISP.

Lösningar till tentamen i EIT070 Datorteknik

Digitala System: Datorteknik ERIK LARSSON

Assemblerprogrammering, ARM-Cortex M4 del 3

Programräknaren visar alltid på nästa instruktion som skall utföras. Så fort en instruktion har hämtats så visar programräknaren på nästa instruktion.

EDA215 Digital- och datorteknik för Z

General Purpose registers ALU I T H S V N Z C SREG. Antag att vi behöver skriva in talet 25 till register R18

TSEA28 Datorteknik Y (och U)

Föreläsningsanteckningar 2. Mikroprogrammering I

Bilda styrsignalerna till datavägen RESET FETCH EXECUTE NF NF NF. Digital och Datorteknik EDA /2011. Digital och Datorteknik EDA /2011

DatorsystemteknikDAVA14 Föreläsning 9

Lågnivåprogrammering. Föreläsning 2 Lågnivåprogrammering. Binära tal. En enkel modell av datorns inre

CE_O2. Nios II. Subrutiner med mera.

Datorarkitekturer med operativsystem ERIK LARSSON

Tenta i Digitalteknik

Datorarkitekturer med operativsystem ERIK LARSSON

LABORATION. Datorteknik Y Datorkonstruktion D

LABORATION. Datorteknik Y

Per Holm Lågnivåprogrammering 2014/15 24 / 177. int och double = = 2, 147, 483, 647

INSTRUKTIONSLISTA för FLEX-processorn

Datorteknik Hyfsa kod

Lars-Eric Arebrink. Av institutionen utgiven. vid flera tillfällen. Betyg 4: 36 poäng Betyg 5: 48 poäng

Tentamen i EIT070 Datorteknik

Transkript:

F4: Assemblerprogrammering Hoppinstruktioner Branch Jump Med vilkor IF satser Loopar while-loopar do-while- loopar for-loopar Stackhantering Underprogram 1

BRA rel_adr Branch Always Relativadressering Hoppinstruktioner rel_adr + <PC> -> <PC> Bcc rel_adr Branch on condition Relativadressering rel_adr + <PC> -> <PC> JMP abs_adr Jump Absolutadressering abs_adr -> <PC> 2

Absolutadress <PC> 4000 4002 4004 4006 ADD D1,D2 JMP $4006 MOVE D2,D7 JMP $4000 4006->PC <PC> 4000 4002 4004 4006 ADD D1,D2 CLR D1 MOVE D2,D7 JMP $4000 <PC> 4000 4002 4004 4006 ADD D1,D2 CLR D1 MOVE D2,D7 JMP $4000 4000->PC <PC> 4000 4002 4004 4006 ADD D1,D2 CLR D1 MOVE D2,D7 JMP $4000 3

Relativadress <PC> 4000 4002 4004 4006 ADD D1,D2 BRA.W $02 MOVE D2,D7 JMP $4000 PC+02+2->PC <PC> 4000 4002 4004 4006 ADD D1,D2 CLR D1 MOVE D2,D7 JMP $4000 BRA finns med 8-bits eller 16 bits offset dvs BRA.B eller BRA.W Relativa hopp ger kod som enkelt kan flyttas till annan plats i minnet Relokerbar kod 4

Compare-instruktionen CMP.B <ea>, Dn W L Subtrahera källoperanden från destinationsoperanden. Resultatet av subtraktionen sparas EJ till destinationen. Alla flaggor i CCR utom Extend-flaggan sätts enligt resultatet för subtraktionen. Compareinstruktionen används i kombination med villkorliga hopp. 5

Villkorliga hopp Bcc <label> Exempel på villkor: Instruktion Semantik Logiskt uttryck BEQ branch on equal BCC branch on carry clear Z C Signed format BGE Branch on greater than N.V+N.V or equal Unsigned BHS Branch on higher than C or same I kombination med compare så syftar semantiken alltid på destinationen. Ex. destinationen är större eller lika med källoperanden 6

IF satsen If(cond) { a } else { b } JIF cond, L1 b JMP L2 L1: a L2: evaluate condition => flags Bcc L1 b BRA L2 L1: a L2: 7

WHILE loop while( cond ) { } L1: JIF not cond, L2 JMP L1 L2: L1: Eval cond => flags Bcc L2 BRA L1 L2: Antal exekveringar av loopen >= 0 8

While-do do { } while( cond ) L1: JIF cond, L1 L1: eval cond => Flags Bcc L1 Antal exekveringar av loopen >= 1 9

Ersätt i med ex. D0 Koden i loopen oberoende av i:s ordning FOR loop for( int i = 0; i<n; i++) { } Koden i loopen beroende av i:s ordning FOR_1: MOVE.W #N,D0 SUB.W #1,D0 JIF D0!=0, FOR_1 FOR: L2: MOVE.W #0D0 JIF D0 N, L2 ADD.W #1,D0 JMP FOR FOR_1: MOVE.W #N,D0 SUB.W #1,D0 BNE FOR_1 FOR_1: L2: MOVE.W #0,D0 CMP #N,D0 BGE L2 ADD.W #1,D0 BRA FOR_1 Antal exekveringar av loopen = N 10

Minnesstack, 1(3) Dynamiskt temporärt minne Växer mot lägre adresser SP är adressregister 7 (A7) (A7) 11

Stack, 2(3) Lägg till data på stacken (PUSH) Ex. MOVE D0,-(A7) Hämta tillbaka data från stack (POP) Ex. MOVE (A7)+,D0 Låga adresser MOVE.W D0,-(A7) MOVE.W (A7)+,D0 7 0 7 0 7 0 A7 A7 03 F2 A7 03 F2 Höga adresser 12

Stack, 3(3) Stacken kan benämnas på flera olika sätt Specifik benämning USP = User Stack Pointer Stackpekare som används i användarmod SSP = Supervisor Stack Pointer Stackpekare som används i systemmod Generell A7 SP Systemmod A7/SP = SSP Användarmod A7/SP = USP 13

Vad är en subrutin? Subrutin? Ett underprogram som kan anropas i från ett annat program. Dvs. fungerar som en funktion i C/C++, men utan parameteröverföring. Återanvändning av kod... Ger strukturerade program Programflöde Huvudprogram Anrop Återhopp Subrutin start Slutsubrutin Subrutin 1 Subrutin 2 Subrutin 3 S 21 S 22 S 23 14

BSR/JSR RTS Subrutin, hur? Hoppar till den adress som finns i argumentet och sparar adressen för nästa instruktion på stacken. Hämtar adressen från stacken och hoppar till den adressen. BSR KALLE MOVE (A0), D4 Spar adressen till nästa instruktion på stacken Laddar PC med värdet på stacken KALLE:... RTS 15

Subrutinen och Stacken Ett exempel Huvudprogram Sub-program Stacken Låga adresser 1 3 ORG $4000 BSR.W MySub MySub: 2 RTS 2 1 3 SP SP SP 00 00 40 04 Höga adresser BSR.W PC -(SP) PC+d PC RTS (SP)+ PC 16