2007-2008 PEMSY1http://www.voti.nl/hvu/PEMSY1 1  Herhaling ARM assembler instructies  branch instructie  conditionele instructies en de flags  oefening.

Slides:



Advertisements
Verwante presentaties
Hoe werkt een rekenmachine?
Advertisements

Global e-Society Complex België - Regio Vlaanderen e-Regio Provincie Limburg Stad Hasselt Percelen.
ADOBE PRESENTER Willem vanden Berg Dienst Onderwijsondersteuning en –ontwikkeling KaHo Sint-Lieven 1.
Par. 3.1 Computers zijn overal
Jerry van den Heuvel Pim van der Lee
Ronde (Sport & Spel) Quiz Night !
1/1/ /e/e eindhoven university of technology 5JJ20:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 2(1): Inleiding InstructieSetArchitectuur.
Basisgeheugenschakelingen
Auteursomgeving voor Digitale Componenten
PowerPC Practicum. Introductie Doel practicum = Computers begrijpen Leer de werking van een computer door een emulator te bouwen.
1/1/ /e/e eindhoven university of technology 5JJ20:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 2(2): Instructieformaten adressering assembleertalen.
F. Rubben NI Lookout 1 06/RIS/05 - NI Lookout VTI Brugge F. Rubben, ing.
C programma int main(){ } Compilatie met devc++ in file main.c Gecompileerd programma in file FirstProgram.exe Mov R1, 120 Mov R2, 160 ADD R1, R2.
De processor.
1Ben Bruidegom Hoe werkt een rekenmachine? Ben Bruidegom AMSTEL Instituut Universiteit van Amsterdam.
1Ben Bruidegom 1 Hoe werkt een “loopje” nu precies? Recapitulatie rekenmachines week 1 Van rekenmachine naar rekenmachine met “loopjes”
1Ben Bruidegom A Harvard Machine Calculator Calculator  Computer.
Auteursomgeving voor Digitale Componenten
1Ben Bruidegom A Harvard Machine Recapitulatie Calculator Calculator  Calculator met “loopjes” Calculator met “loopjes”  Processor.
Een echte re stack-machine nMemory nRegisters R0 R1 R2 R3 R4 PC SP MP nMemory uProgram uStack uMemory nRegisters uProgr.counter uStack pointer uMark pointer.
Werken aan Intergenerationele Samenwerking en Expertise.
User management voor ondernemingen en organisaties
2009 Tevredenheidsenquête Resultaten Opleidingsinstellingen.
Hoe werkt een rekenmachine?
Talstelsels, rekenen en rekenschakelingen
1Ben Bruidegom 1 De Harvard Machine Van rekenmachine met “loopjes” naar processor.
1 Van Harvard naar MIPS. 2 3 Van Harvard naar MIPS Microprocessor without Interlocked Pipeline Stages Verschillen met de Harvard machine: - 32 Registers.
PLAYBOY Kalender 2006 Dit is wat mannen boeit!.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 1 Les 3 - onderwerpen Het.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag Het ARM bord met wat library functies.
PEMSY1http:// 1  Herhaling: combineren van assembler en C  Herhaling: subroutine  geen nieuwe opgave Voorbeeld tentamen:
PEMSY1http:// 1  Herhaling: - ACPS - set status, conditioneel uitvoeren - indexed addressing  Nieuw: - CMP, CMN - half-word.
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  herhaling ARM assembler instructies.
VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp:// Hogeschool Utrecht / Electrical Engineering & Design 1 Hogeschool van Utrecht.
1/1/ eindhoven university of technology / faculty of Computer Science 2IC20:Computersystemen Week 4: Inleiding InstructieSetArchitectuur (ISA) datatypen.
ECHT ONGELOOFLIJK. Lees alle getallen. langzaam en rij voor rij
Samenwerking tussen processor, registers en RAMgeheugen
17/08/2014 | pag. 1 Fractale en Wavelet Beeldcompressie Les 5.
17/08/2014 | pag. 1 Fractale en Wavelet Beeldcompressie Les 3.
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  herhaling ARM assembler instructies.
De financiële functie: Integrale bedrijfsanalyse©
Logistics: a driver for innovation Low costs High value Flexibility now and later Superior technology Timwood - T > No transport - I > No Inventory - M.
1 Zie ook identiteit.pdf willen denkenvoelen 5 Zie ook identiteit.pdf.
Inleiding computersystemen en netwerken deel 3 Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 3.1 Peter Kramer Mail:
ZijActief Koningslust
Deltion College Engels B1 Lezen [no. 001] can-do : 2 products compared.
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 Les 3 - onderwerpen  DB036 printjes subroutines.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  herhaling ARM assembler instructies  assembler.
PEMSY1http:// 1  Herhaling: combineren van assembler en C  Herhaling: subroutine  Oefening: melodie Klas EV2B: week.
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  programma draaien vanuit ROM.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 1 Les 6 - onderwerpen Uitleg.
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 Les 2 - onderwerpen  Helaas nog geen printjes.
1 XSLT processing & control Datamodellering 2006.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 1 Les 2 - onderwerpen MPLAB.
© imec 2000 © imec 2001 MAX+PLUS II Installatieprocedure.
VPEMSY1, D3ECPT2 : ARM Assembler 1 Hogeschool Utrecht / Electrical Engineering & Design 1  Herhaling: CMP, CMN,
PEMSY1http:// 1  Herhaling nieuwe instructies van vorige week  nieuw: combineren van assembler en C  oefeningen: assembler.
AWK A Pattern scanning and processing language made by Aho Weinberger Kernighan and explained by Albert Montijn.
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Wouter van Ooijen Mail:
Deltion College Engels B2 Schrijven [Edu/005] thema: Writing a hand-out can-do: kan een begrijpelijke samenvatting schrijven © Anne Beeker Alle rechten.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag Een embedded systeem: ARM bord.
VPEMSY1, D3ECPT2 : ARM Assembler Hogeschool Utrecht / Electrical Engineering & Design 1  Herhaling B/BL, conditions,
Key Process Indicator Sonja de Bruin
Digitale Methoden Onderdeel van vak Computer Systemen
Wat gaan we doen? Herhaling ARM assembler instructies
Wat gaan we doen? Herhaling: ACPS; indexed addressing; half-word/byte
Transcript van de presentatie:

PEMSY1http:// 1  Herhaling ARM assembler instructies  branch instructie  conditionele instructies en de flags  oefening (simulator)  brach and link instructie  gebruik van de stack  oefening (bordje)

PEMSY1http:// 2 R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 = SP R14 = LR R15 = PC registers ……. FFFF FFFB FFFF FFFC FFFF FFFD FFFF FFFE FFFF geheugen ARM processor LPC2106 chip

PEMSY1http:// 3 LDR R0, =value R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 = SP R14 = LR R15 = PC registers ……. FFFF FFFB FFFF FFFC FFFF FFFD FFFF FFFE FFFF geheugen

PEMSY1http:// 4 MOV R0, R1 R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 = SP R14 = LR R15 = PC registers ……. FFFF FFFB FFFF FFFC FFFF FFFD FFFF FFFE FFFF geheugen

PEMSY1http:// 5 LDR R0, [ R1 ] R0 R R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 = SP R14 = LR R15 = PC registers ……. FFFF FFFB FFFF FFFC FFFF FFFD FFFF FFFE FFFF geheugen

PEMSY1http:// 6 STR R0, [ R1 ] R0 R1FFFF FFFC R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 = SP R14 = LR R15 = PC registers ……. FFFF FFFB FFFF FFFC FFFF FFFD FFFF FFFE FFFF geheugen

PEMSY1http:// 7 ADD R3, R1, R2 R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 = SP R14 = LR R15 = PC registers ……. FFFF FFFB FFFF FFFC FFFF FFFD FFFF FFFE FFFF geheugen +

PEMSY1http:// 8 Branch instructions Cond L Offset Condition field Link bit 0 = Branch 1 = Branch with link Branch : B{ } label Branch with Link : BL{ } sub_routine_label

PEMSY1http:// 9 B label R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 = SP R14 = LR R15 = PC registers ……. FFFF FFFB FFFF FFFC FFFF FFFD FFFF FFFE FFFF geheugen

PEMSY1http:// 10 All instructions are conditionally executed! iedere instructie is conditioneel Bijna alle instructies kunnen de conditie flags zetten

PEMSY1http:// 11 Conditions

PEMSY1http:// 12 Zet de flags of laat ze ongewijzigd Gewoon een S achter de instructie –ANDr0, r1, laat de flags ongewijzigd –ANDSr0, r1, zet de flags

PEMSY1http:// 13 Drie getallen optellen – domme manier.global main getal_1 :.word 11 getal_2 :.word 22 getal_3 :.word 33 som :.word main: ldr r0, =0 ldr r1, =getal_1 ldr r2, [ r1 ] addr0, r0, r2 ldr r1, =getal_2 ldr r2, [ r1 ] addr0, r0, r2 ldr r1, =getal_3 ldr r2, [ r1 ] add r0, r0, r2 ldr r1, =som str r0, [ r1] done: b done

PEMSY1http:// 14 Drie getallen optellen – iets minder domme manier.global main getal_1 :.word 11 getal_2 :.word 22 getal_3 :.word 33 som :.word main: ldr r0, =0 ldr r1, =getal_1 ldr r2, [ r1 ] addr0, r0, r2 add r1, r1, #4 ldr r2, [ r1 ] addr0, r0, r2 add r1, r1, #4 ldr r2, [ r1 ] add r0, r0, r2 ldr r1, =som str r0, [ r1] done: b done

PEMSY1http:// 15 Voorbeeld loop LET OP CPSR.global main initialisatie ldr r2, =100 loop body subs r2, r2, #1 op zero vlag!!! done: b done

PEMSY1http:// 16 Drie getallen optellen in een loop.global main getal_1 :.word 11 getal_2 :.word 22 getal_3 :.word 33 som :.word main: ldr r0, initialisatie loop body subs r2, r2, #1 bneloop ldr r1, =som str r0, [ r1] done: b done Zelf afmaken

PEMSY1http:// 17 Maak nu zelf het ‘loop’ optel programma af en test het in de simulator.

PEMSY1http:// 18 Branch instructions Cond L Offset Condition field Link bit 0 = Branch 1 = Branch with link Branch : B{ } label Branch with Link : BL{ } sub_routine_label

PEMSY1http:// 19 BL = branch and link R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 = SP R14 = LR R15 = PC registers ……. FFFF FFFB FFFF FFFC FFFF FFFD FFFF FFFE FFFF geheugen

PEMSY1http:// 20 Een subroutine gebruiken om op te tellen (1).global main getal_1 :.word 11 getal_2 :.word 22 getal_3 :.word 33 som :.word add: ldr r2, [ r1 ] addr0, r0, r2 movPC, LR main: ldr r0, =0 ldr r1, =getal_1 bladd ldr r1, =getal_2 bladd ldr r1, =getal_3 bladd ldr r1, =som str r0, [ r1] done: b done

PEMSY1http:// 21 Een subroutine gebruiken om op te tellen (2).global main getal_1 :.word 11 getal_2 :.word 22 getal_3 :.word 33 som :.word add: ldr r2, [ r1 ] add r1, r1, #4 addr0, r0, r2 movPC, LR main: ldr r0, =0 ldr r1, =getal_1 bladd ldr r1, =som str r0, [ r1] done: b done

PEMSY1http:// 22 Wat gaat hier mis?.global main getal_1 :.word 11 getal_2 :.word 22 getal_3 :.word 33 som :.word add_r0_r2: add r0, r0, r2 movPC, LR add1: ldr r2, [ r1 ] bladd_r0_r2 add r1, r1, #4 movpc, lr main: ldr r0, =0 ldr r1, =getal_1 bladd ldr r1, =som str r0, [ r1] …..

PEMSY1http:// 23 Stack A stack is an area of memory which grows as new data is “pushed” onto the “top” of it, and shrinks as data is “popped” off the top. stack pointer used to point the current “top” of the stack. empty ascending / empty decending / full ascending / full decending SP PUSH {1,2,3} POP 1 2 Result of pop = 3 SP

PEMSY1http:// 24 Stack Operations Traditionally, a stack grows down in memory, with the last “pushed” value at the lowest address. The ARM also supports ascending stacks, where the stack structure grows up through memory. The value of the stack pointer can either: –Point to the last occupied address (Full stack) and so needs pre-decrementing (ie before the push) –Point to the next occupied address (Empty stack) and so needs post-decrementing (ie after the push) The stack type to be used is given by the postfix to the instruction: –STMFD / LDMFD : Full Descending stack –STMFA / LDMFA : Full Ascending stack. –STMED / LDMED : Empty Descending stack –STMEA / LDMEA : Empty Ascending stack Note: ARM Compiler will always use a Full descending stack.

PEMSY1http:// 25 assembler instructie formaat : multiple words van en naar geheugen (block transfer instructies) STMFD SP!, { R1-R9, R12 } LDMFD SP!, { R1-R9, R12 }

PEMSY1http:// 26 Block Data Transfer instructie code The Load and Store Multiple instructions (LDM / STM) allow betweeen 1 and 16 registers to be transferred to or from memory. The transferred registers can be either: –Any subset of the current bank of registers (default). ^ –Any subset of the user mode bank of registers when in a priviledged mode (postfix instruction with a ‘^’). Cond P U S W L Rn Register list Condition field Base register Load/Store bit 0 = Store to memory 1 = Load from memory Write- back bit 0 = no write-back 1 = write address into base PSR and force user bit 0 = don’t load PSR or force user mode 1 = load PSR or force user mode Up/Down bit 0 = Down; subtract offset from base 1 = Up ; add offset to base Pre/Post indexing bit 0 = Post; add offset after transfer, 1 = Pre ; add offset before transfer Each bit corresponds to a particular register. For example: Bit 0 set causes r0 to be transferred. Bit 0 unset causes r0 not to be transferred. At least one register must be transferred as the list cannot be empty.

PEMSY1http:// 27 Gebruik de stack.global main getal_1 :.word 11 getal_2 :.word 22 getal_3 :.word 33 som :.word add_r0_r2: stmfdsp!, { lr } add r0, r0, r2 ldmfdsp!, { pc } add1: stmfdsp!, { r2, lr } ldr r2, [ r1 ] bladd_r0_r2 add r1, r1, #4 ldmfdsp!, { r2, pc } main: ldr r0, =0 ldr r1, =getal_1 bladd ldr r1, =som str r0, [ r1] …..

PEMSY1http:// 28  sluit een bordje aan (parallel + USB)  installeer de files uit blink.zip  in een lege directory  let op: geen spaties in de pathname   dubbel-klik op de.ppr file  build  start debugger

PEMSY1http:// 29 zet onder file > target settings:  Target = Remote/TCP  Hostname =  Port = 8888 (als je netjes afsluit blijft zou dit moeten blijven staan)

PEMSY1http:// 30 Als je dit krijgt moet je onder control panel > system > hardware > device manager (select view > show hidden devices) > non plug-and- pray devices > MAC_MOT > driver instellen op status = started, type = automatic

PEMSY1http:// 31 Als je dit krijgt heb je debugger/loader niet afgesloten Als het echt niet werkt: de USB aansluiting er even uithalen om het bordje te resetten.

PEMSY1http:// 32 doen Het bestaande ‘blink’ programma uitproberen en begrijpen Laat de LEDs anders knipperen: iedere 2 seconden even (bv 200ms) aan Laat de LEDs ‘kitt’-style heen-en-weer aan gaan. Lezen pag 39 tot 42 “the IO system”

PEMSY1http:// 33 Blink.global main configureer de hardware om de LEDs te gebruiken blLEDs_init loop: ldr r0, =0x0F blLEDs_write ldrr0, =( 500 * 1000 ) blWAIT_uS ldrr0, =0xF0 blLEDs_write ldrr0, =( 500 * 1000 ) blWAIT_uS b loop