De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

2007-2008 PEMSY1http://www.voti.nl/hvu/PEMSY1 1  Herhaling nieuwe instructies van vorige week  nieuw: combineren van assembler en C  oefeningen: assembler.

Verwante presentaties


Presentatie over: "2007-2008 PEMSY1http://www.voti.nl/hvu/PEMSY1 1  Herhaling nieuwe instructies van vorige week  nieuw: combineren van assembler en C  oefeningen: assembler."— Transcript van de presentatie:

1 2007-2008 PEMSY1http://www.voti.nl/hvu/PEMSY1 1  Herhaling nieuwe instructies van vorige week  nieuw: combineren van assembler en C  oefeningen: assembler en C

2 2007-2008 PEMSY1http://www.voti.nl/hvu/PEMSY1 2 CMP R2, R1 R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 = SP R14 = LR R15 = PC registers 0000 0000 0001 0000 0002 0000 0003 0000 0004 0000 0005 0000 0006 0000 0007 0000 0008 0000 0009 ……. FFFF FFFB FFFF FFFC FFFF FFFD FFFF FFFE FFFF geheugen - flags

3 2007-2008 PEMSY1http://www.voti.nl/hvu/PEMSY1 3 CMN R1, #15 R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 = SP R14 = LR R15 = PC registers 0000 0000 0001 0000 0002 0000 0003 0000 0004 0000 0005 0000 0006 0000 0007 0000 0008 0000 0009 ……. FFFF FFFB FFFF FFFC FFFF FFFD FFFF FFFE FFFF geheugen - flags -

4 2007-2008 PEMSY1http://www.voti.nl/hvu/PEMSY1 4 Variaties op LDR R0, [ R1 ]: LDR R0, [ R1 ] @ word (32 bit) LDRH R0, [ R1 ] @ half-word (16 bit) LDRB R0, [ R1 ] @ byte (8 bit) - H of B komt achteraan, dus: LDREQB - Let op de alignment van het geheugen adres! - Kan net zo bij STR

5 2007-2008 PEMSY1http://www.voti.nl/hvu/PEMSY1 5 MOV R0, R1 ADD R0, R1, #2 SUBC R0, R1, R2, LSL #5 ADDS R1, R2, R3, ASR R4  boek p52..53 + 5.7

6 2007-2008 PEMSY1http://www.voti.nl/hvu/PEMSY1 6 Assembler en C

7 2007-2008 PEMSY1http://www.voti.nl/hvu/PEMSY1 7 C source file (.c) Assembler source file (.asm) Object file Assembler source file (.asm) Object file C compiler Assembler C source file (.c)

8 2007-2008 PEMSY1http://www.voti.nl/hvu/PEMSY1 8 Executable / image /.hex file Object file Linker Object file

9 2007-2008 PEMSY1http://www.voti.nl/hvu/PEMSY1 9 Assembler – interne en externe labels  Default is een label lokaal (alleen voor deze file zichtbaar).  Je kan een label totempaal globaal (voor het hele programma beschikbaar) maken met.global totempaal  Als je een label (naampje) gebruikt dat niet in je file gedefinieerd is neemt de assembler aan dat het een globaal label is (in een andere file gedefinieerd).

10 2007-2008 PEMSY1http://www.voti.nl/hvu/PEMSY1 10 C – interne en externe labels  Default is een naam die je definieert globaal (extern zichtbaar).  Als je een label (naampje) wilt gebruiken dat niet in je file gedefinieerd is dan moet je er een ‘externe definitie’ voor geven.

11 2007-2008 PEMSY1http://www.voti.nl/hvu/PEMSY1 11 Assembler – interne en externe labels.global asm_counter, subroutine.bss asm_counter:.skip 4 my_counter:.skip 4.code ldr r0, =asm_counter ldr r1, =my_counter ldr r2, =c_counter bl f subroutine:add r1, r0, r1 mov pc, lr

12 2007-2008 PEMSY1http://www.voti.nl/hvu/PEMSY1 12 C – interne en externe labels extern int asm_counter; extern int subroutine( int a, int b ); int c_counter; void f( void ){ int x; asm_counter++; c_counter++; x = subroutine( 6, 199 ); }

13 2007-2008 PEMSY1http://www.voti.nl/hvu/PEMSY1 13 Maak op basis van je uitwerking van de opdracht van les3 een nieuwe applicatie. De main moet je in C schrijven. Deze main roept een in assembler geschreven PRINT_STRING subroutine (of hoe die bij jou ook heette) aan, met als argument (het adres van) een string. In C kan je die aanroep simpelweg schrijven als PRINT_STRING( ”Hi there” ); Laat op deze manier een paar verschillende teksten zien, met een pauze van een paar seconden ertussen (je moet dus ook een van de wait subroutines aanroepen).

14 2007-2008 PEMSY1http://www.voti.nl/hvu/PEMSY1 14 Roep vanuit jouw assembler routine PRINT_STRING, tussen het ophalen en het printen van ieder character, een C functie aan, die dat character in een gewijzigde vorm weer teruggeeft. Bij voorbeeld: char next( char c ){ return c + 1; } Maar verzin zelf iets anders dat een wat meer herkenbaar resultaat oplevert!

15 2007-2008 PEMSY1http://www.voti.nl/hvu/PEMSY1 15 Assembler file C file void main( … ){.. PRINT_STRING(.. ); … } char func( char x ){ … } PRINT_STRING … bl func …

16 2007-2008 PEMSY1http://www.voti.nl/hvu/PEMSY1 16  Je moet iedere assembler functie die je uit C wil aanroepen in C definieren! Let op: wat moet je de assembler functie megeven? Dat worden de C argumenten.  Pas op dat je niet een C en een assembler file met de zelfde naam gebruikt, want die genereren de zelfde.o file…


Download ppt "2007-2008 PEMSY1http://www.voti.nl/hvu/PEMSY1 1  Herhaling nieuwe instructies van vorige week  nieuw: combineren van assembler en C  oefeningen: assembler."

Verwante presentaties


Ads door Google