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 PEMSY1http://www.voti.nl/hvu/PEMSY1 1  Herhaling nieuwe instructies van vorige week  nieuw: combineren van assembler en C  oefeningen: assembler en C

2 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 ……. FFFF FFFB FFFF FFFC FFFF FFFD FFFF FFFE FFFF geheugen - flags

3 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 ……. FFFF FFFB FFFF FFFC FFFF FFFD FFFF FFFE FFFF geheugen - flags -

4 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 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 p

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

7 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 PEMSY1http://www.voti.nl/hvu/PEMSY1 8 Executable / image /.hex file Object file Linker Object file

9 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 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 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 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 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 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 PEMSY1http://www.voti.nl/hvu/PEMSY1 15 Assembler file C file void main( … ){.. PRINT_STRING(.. ); … } char func( char x ){ … } PRINT_STRING … bl func …

16 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