Difference between revisions of "LU-MOP-b13"
(→Saites) |
(→MD1) |
||
Line 129: | Line 129: | ||
===MD1=== |
===MD1=== |
||
Izveidot programmiņu |
Izveidot programmiņu asemblerā, kas aprēķina aritmētiskās progresijas summu no 1 līdz n ar soli 1. |
||
Skaitlis n tiek padots kā parametrs. |
Skaitlis n tiek padots kā parametrs. |
||
Jāizstrādā un jāiesniedz: |
|||
Jaizstrādā: |
|||
# Makefile - fails, kas ļauj kompilēt jūsu programmu |
# Makefile - fails, kas ļauj kompilēt jūsu programmu |
||
# md1.s - Programmu |
# md1.s - Programmu asemblerā, kas aprēķina aritmētiskās progresijas summu |
||
# md1_main.c - Programmu C valodā, kas izsauc |
# md1_main.c - Programmu C valodā, kas izsauc asamblera programmu un padod tai parametru '''n''' un saņem rezultātu, ko izdrukā uz ekrāna. |
||
Parametru n programma saņem kā komandu rindas parametru. |
|||
Testējot, parametrs '''n''' jāpadod no komandu rindas, līdzīgi kā praktisko darbu piemēros. |
|||
⚫ | |||
Tātad, jums būs jāizveido md1_main.c programma, kas saņem parametru caur argv[1], |
|||
pārveido to par "int", un šis veselais skaitlis jāpadod kā parametrs funkcijai asum(), kas realizēta |
|||
asemblera kodā, failā md1.s |
|||
Rezultāts jāsaņem atpakaļ C programmā un jāizdrukā, piemēram, ar printf() funkciju. Jāizdrukā tikai skaitlis un rindas beigu simbols '\n'. |
|||
Piemērs izsaukumam (tam, kā jūsu programma tiks testēta, tikai ar citiem skaitļiem): |
|||
leo@asm1:~/work/md1$> md1 10 |
|||
55 |
|||
⚫ | |||
Jautājumus un neskaidrības par MD lūdzu iesūtīt kursa google grupā. |
Jautājumus un neskaidrības par MD lūdzu iesūtīt kursa google grupā. |
Revision as of 12:33, 26 April 2013
Mašīnorientētā programmēšana (MOP)
LU DF bakalaura studiju kurss DatZ4017, meklēt eStudijās.
- Pasniedzējs: Leo Seļāvo (epasts: vards.uzvards @ gmail.com)
- Vēstkopa komunikācijai par kursa aktualitātēm, uzdevumiem, termiņiem un problēmām:
- Google grupa lu-mop-b@googlegroups.com Lai pieteiktos, sekot http://groups.google.lv/group/lu-mop-b un pieslēgties ar savu google kontu, vai arī sūtīt epastu pasniedzējam.
Kalendārs
Datums, nedēļa | Kursa saturs | Uzdevumi |
---|---|---|
04.02.2013. |
Ievads kursā. Kursa mērķi. Iegultās un mazo procesoru sistēmas. ARM arhitektūra. Mācību izstrādes vide. |
|
11.02.2013. |
Sešpadsmitnieku un citas skaitīšatas sistēmas datoriem. Pārveidojumi starp dažādām sistēmām, aritmētiskās darbības. Biti, baiti, vārdi, nibbles. |
|
18.02.2013. | Lekcija pārcelta. | |
25.02.2013. |
Procesora uzbūve. Operatīvā atmiņa. Procesora un atmiņas sadarbība. Adreses. Reģistri. Procesora režīmi. |
|
04.03.2013. |
Skaitļu attēlošana papildkodā. Programmu izstrādes vide. |
|
11.03.2013. |
Programmu izstrādes vide. "asm1" serveris praktiskajiem darbiem. |
|
18.03.2013. |
Komandu pieraksts, aritmētiskās un bitu operācijas. |
Notiek praktiskie darbi |
25.03.2013. |
Lieldienu brīvdienas |
|
01.04.2013. |
Lieldienu brīvdienas |
|
08.04.2013. |
Vadības maiņas komandas, testi, bitu operācijas. |
|
15.04.2013. |
Adresācijas režīmi, darbs ar atmiņu. |
Kontroldarbs MK3 |
22.04.2013. |
Apakašprogrammu izsaukumi, saskarne ar "C". Simboliskie dati, kodu tabulas. |
|
29.04.2013. |
Izteiksmes un makro valoda. |
|
06.05.2013. |
Iekļautais asemblers, programmatūras izstrādē lietoto rīku darbības principi. |
|
13.05.2013. |
Instrukciju izpildes laiki. |
|
20.05.2013. |
Sistēmas sāknēšana, priviliģētās operācijas. |
|
27.05.2013. |
Kursa vielas pārskats. |
|
xx.xx.2013. | Eksāmens |
|
Kontroldarbi
- MK1 - Skaitļu formāti un pārvediošana: decimālā, heksadecimālā, oktālā, binārā.
- MK2 - Skaitļi ar zīmi, divnieka papildkodā, to pārveidošana.
Mājas darbi
MD1
Izveidot programmiņu asemblerā, kas aprēķina aritmētiskās progresijas summu no 1 līdz n ar soli 1.
Skaitlis n tiek padots kā parametrs. Jāizstrādā un jāiesniedz:
- Makefile - fails, kas ļauj kompilēt jūsu programmu
- md1.s - Programmu asemblerā, kas aprēķina aritmētiskās progresijas summu
- md1_main.c - Programmu C valodā, kas izsauc asamblera programmu un padod tai parametru n un saņem rezultātu, ko izdrukā uz ekrāna.
Testējot, parametrs n jāpadod no komandu rindas, līdzīgi kā praktisko darbu piemēros.
Tātad, jums būs jāizveido md1_main.c programma, kas saņem parametru caur argv[1], pārveido to par "int", un šis veselais skaitlis jāpadod kā parametrs funkcijai asum(), kas realizēta asemblera kodā, failā md1.s
Rezultāts jāsaņem atpakaļ C programmā un jāizdrukā, piemēram, ar printf() funkciju. Jāizdrukā tikai skaitlis un rindas beigu simbols '\n'.
Piemērs izsaukumam (tam, kā jūsu programma tiks testēta, tikai ar citiem skaitļiem):
leo@asm1:~/work/md1$> md1 10 55
Risinājumam jābūt testētam, un jādarbojās uz asm1.linux.edu.lv servera (arm platformai, emulācijas režīmā).
Jautājumus un neskaidrības par MD lūdzu iesūtīt kursa google grupā.
Risinājumu jāiesūta elektroniski. Iesūtīšanas instrukcijas tiks paziņotas vēlāk, kā arī lekcijā.
Literatūra
Grāmatas un citi resursi
- ARM Architecture Reference Manual, ARM DDI 0100I, ARM Limited, 2005.
- Intel R XScaleTM Microarchitecture Assembly Language Quick Reference Card ARM Instruction Set, Intel Corporation, 2001
- Intel XScale R Core Developer’s Manual, ON: 273473-002, Intel Corporation, 2004
- Intel R IXP42X Product Line of Network Processors and IXC1100 Control Plane Processor Developer’s Manual, ON: 252480-006US, Intel Corporation, 2006
- Patterson and Hennessy, Computer Organization and Design, 4th Edition (@Amazon)
- "Building Embedded Linux Systems" O'Reilly Media, 2008, ISBN 0596529686
Saites
- Noderīgas UNIX komandas
- Easy 6502 assembly tutorial
- The ARM Architecture - slaidi no Arm.
- Kā uzstādīt arm-linux-gnueabi-gcc un qemu-arm Ubuntu vidē
- Kā lietot atkļūmotāju gdb ar qemu emulātoru.
Atziņas
- Teach yourself programming in 10 years by Peter Norvig