Difference between revisions of "LU-MOP-MD1"

From DiLab
Jump to: navigation, search
(MD1)
 
(10 intermediate revisions by the same user not shown)
Line 5: Line 5:


Izveidot programmiņu asemblerā, kas aprēķina aritmētiskās progresijas summu no 1 līdz ''n'' ar soli 1.
Izveidot programmiņu asemblerā, kas aprēķina aritmētiskās progresijas summu no 1 līdz ''n'' ar soli 1.
* Parametrs, un atgriežamie skaitļi ir bez zīmes, tātad, pozitīvi.
* Kļūdas vai nepareizu ievaddatu gadījumā jāatgriež 0.
** Kļūdu analīzi veic asemblera programma, un C programma drukā visu, ko atgriež asemblers, tai skaitā kļūdu kodus.


Skaitlis ''n'' tiek padots kā parametrs.
Skaitlis ''n'' tiek padots kā parametrs.
Jāizstrādā un jāiesniedz:
Jāizstrādā un jāiesniedz:
# '''Makefile''' - fails, kas ļauj kompilēt jūsu programmu
# '''Makefile''' - fails, kas ļauj kompilēt jūsu programmu
# '''md1.h''' - [[#md1.h | pirmkoda fails ar funkcijas prototipu (dots zemāk)]], ko iekļaus gan C gan asemblera faili.
# '''md1.h''' - [[#md1.h | pirmkoda fails ar funkcijas prototipu (dots zemāk)]], ko iekļaus C, un realizēs asemblera pirmkods.
# '''md1.s''' - programmu asemblerā, kas aprēķina aritmētiskās progresijas summu.
# '''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.
# '''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.
Line 15: Line 18:
Testējot, parametrs '''n''' jāpadod no komandu rindas, līdzīgi kā praktisko darbu piemēros.
Testējot, parametrs '''n''' jāpadod no komandu rindas, līdzīgi kā praktisko darbu piemēros.


Tātad, jums failā '''md1.main.c''' būs jāizveido programma ''main()'', kas saņem parametru caur ''argv[1]'',
Tātad, jums failā '''md1_main.c''' būs jāizveido programma ''main()'', kas saņem parametru caur ''argv[1]'',
pārveido to par ''int'' tipa veselu skaitli. Šis skaitlis jāpadod kā parametrs funkcijai ''asum()'', kas realizēta
pārveido to par ''int'' tipa veselu skaitli. Šis skaitlis jāpadod kā parametrs funkcijai ''asum()'', kas realizēta
asemblera kodā, failā '''md1.s'''
asemblera kodā, failā '''md1.s'''
Line 21: Line 24:
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'.
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):
Piemērs izsaukumam (tam, kā jūsu programma tiks testēta, tikai ar citiem skaitļiem).


leo@asm1:~/work/md1$> qemu-arm ./md1 10
leo@asm1:~/md1$> qemu-arm ./md1 10
55
55

Vajadzības gadījumā var pievienot lietojamās bibliotēkas ar -L parametru:
leo@asm1:~/md1$> qemu-arm -L /usr/arm-linux-gnueabi ./md1 10



Risinājums '''nedrīkst izmantot reizināšanas''' instrukcijas!
Risinājums '''nedrīkst izmantot reizināšanas''' instrukcijas!


Risinājumam jābūt testētam, un jādarbojās uz asm1.linux.edu.lv servera (arm platformai, emulācijas režīmā).
Risinājumam '''jābūt testētam''', un jādarbojās uz asm1.linux.edu.lv servera (arm platformai, emulācijas režīmā).

== Iesniegšana==


Risinājumu jāiesūta elektroniski, sekojošā veidā.
Risinājumu jāiesūta elektroniski, sekojošā veidā.
Risinājumam ar visiem failiem jābūt uz servera <code>asm1.linux.edu.lv</code> jūsu konta direktorijā "md1":
Risinājumam ar visiem failiem jābūt uz servera <code>asm1.linux.edu.lv</code> jūsu konta direktorijā "'''md1'''":


~/md1/
~/md1/
Line 41: Line 50:
md1.h ir "hedera fails", kurā jāiekļauj ''asum()'' funkcijas prototips, šādi:
md1.h ir "hedera fails", kurā jāiekļauj ''asum()'' funkcijas prototips, šādi:


int asum( int n );
unsigned int asum( unsigned int n );


Ir būtiski pieturēties pie šāda funkcijas prototipa, lai tas būtu vienots ar saskarni, kā to lietos testēšanas programmas.
Ir būtiski pieturēties pie šāda funkcijas prototipa, lai tas būtu vienots ar saskarni, kā to lietos testēšanas programmas.



----
----


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 diskusiju forumā (eStudijās).

* (Atpakaļ uz) [[LU-MOP-b | kursa MOP wiki]].

Latest revision as of 21:27, 14 October 2021

LU MOP kursa mājas darbs MD1.

MD1

Izveidot programmiņu asemblerā, kas aprēķina aritmētiskās progresijas summu no 1 līdz n ar soli 1.

  • Parametrs, un atgriežamie skaitļi ir bez zīmes, tātad, pozitīvi.
  • Kļūdas vai nepareizu ievaddatu gadījumā jāatgriež 0.
    • Kļūdu analīzi veic asemblera programma, un C programma drukā visu, ko atgriež asemblers, tai skaitā kļūdu kodus.

Skaitlis n tiek padots kā parametrs. Jāizstrādā un jāiesniedz:

  1. Makefile - fails, kas ļauj kompilēt jūsu programmu
  2. md1.h - pirmkoda fails ar funkcijas prototipu (dots zemāk), ko iekļaus C, un realizēs asemblera pirmkods.
  3. md1.s - programmu asemblerā, kas aprēķina aritmētiskās progresijas summu.
  4. 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 failā md1_main.c būs jāizveido programma main(), kas saņem parametru caur argv[1], pārveido to par int tipa veselu skaitli. Šis 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:~/md1$>  qemu-arm ./md1 10
55

Vajadzības gadījumā var pievienot lietojamās bibliotēkas ar -L parametru:

leo@asm1:~/md1$>  qemu-arm  -L /usr/arm-linux-gnueabi  ./md1 10


Risinājums nedrīkst izmantot reizināšanas instrukcijas!

Risinājumam jābūt testētam, un jādarbojās uz asm1.linux.edu.lv servera (arm platformai, emulācijas režīmā).

Iesniegšana

Risinājumu jāiesūta elektroniski, sekojošā veidā. Risinājumam ar visiem failiem jābūt uz servera asm1.linux.edu.lv jūsu konta direktorijā "md1":

~/md1/

Uzskaitītie faili tiks izkopēti no minētas direktorijas MD termiņa beigās. Šajā pašā direktorijā tiks iesūtīts jūsu darba vērtējums.

md1.h

md1.h ir "hedera fails", kurā jāiekļauj asum() funkcijas prototips, šādi:

unsigned int asum( unsigned int n );

Ir būtiski pieturēties pie šāda funkcijas prototipa, lai tas būtu vienots ar saskarni, kā to lietos testēšanas programmas.



Jautājumus un neskaidrības par MD lūdzu iesūtīt kursa diskusiju forumā (eStudijās).