|
|
SJ2 - projekt č.1
Poslední modifikace zadání: 15.11.1999
Zadání
V JSI procesorů Intel s využitím matematického koprocesoru implementujte
funkci, která spočítá funkční hodnotu matematické funkce f pomocí
Taylorovy řady. Tato funkce bude vytvořena buď pomocí vložených instrukcí
(inline assembly) do zdrojového textu v jazyce C anebo ve zvláštním souboru
(.asm) a bude volána hlavním programem napsaným v jazyce C. Jako
hlavní program použijte přiložený soubor taylor.c, ve kterém přepíšete
exp(x) na funkci, kterou máte zadanou a doplníte do hlavičky
správné údaje o řešiteli a zadání.
Assemblerovský kód bude bohatě komentován (především stav registrů). Snažte
se psát co nejefektivnější a co nejrychlejší kód.
Funkční hodnota se spočítá s maximální možnou přesností, tj. skončíme,
až když se po přičtení dalšího členu nová funkční hodnota neliší od
předchozí. Výpočet se nesmí dostat do nekonečného cyklu, takže pokud algoritmus
nedospěje k řešení během 'rozumného' počtu iterací, měl by být náležitě ukončen.
Odevzdání
Odevzdává se upravený hlavní program (taylor.c), funkční makefile
a popřípadě i zdrojový soubor v JSI (.asm), je-li přítomen. Vše se zabalí
do souboru xlogin??.zip nebo xlogin??.arj. Do makefile
nepište absolutní cesty k souborům ani překladačům. Z adresáře
Q:\VYUKA\SJ2\PROJEKT1\ si do
svého pracovního adresáře zkopírujete dávku odevzdej1.bat. Tuto dávku
spustíte s parametrem, kterým je vámi vytvořený spakovaný soubor. Provedení
odevzdání si ověříte tak, že se podíváte na disk F:, který dávka
namapovala.
Pokud se rozhodnete odevzdat novější řešení, dejte mu odlišnou příponu
(např. .zi1, .zi2, ...; .ar1, .ar2, ...) aby bylo
jasně poznat, co je aktuální verze. Poslední termín odevzdání je 19.11.1999
(pátek).
Hodnocení
Projekt je hodnocen až 10 body. Pokud po rozbalení balíku a odeslání příkazu
make nedojde ke správnému přeložení, bude projekt hodnocen 0 body. Jako
vzorový makefile lze použít přiložený soubor makefile.
Přidělení funkcí
Každý student tohoto kursu pošle elektronickou poštou dopis na adresu
arnost@dcse.fee.vutbr.cz
a bude mu přiděleno zadání. Subjekt (věc)
dopisu by měl pro usnadnění zpracování obsahovat text "SJ2-PRJ1"
a v těle dopisu bude uvedeno celé jméno a login-name studenta. Nic víc
není potřeba.
Funkce budou přidělovány v pořadí příchodu dopisů. Není možné si nechat
přidělit nějaké konkrétní zadání. Studenti, kteří se nezaregistrují do
15. listopadu 22:00 (pondělí) budou hodnoceni 0 body.
Jméno |
Login |
Funkce |
Pokluda Jiří |
xpoklu00 |
(1) |
Pícha Dušan |
xpicha00 |
(2) |
Selinger Petr |
xselin00 |
(3) |
Bezděk Michal |
xbezde07 |
(4) |
Richter Ronald |
xricht04 |
(5) |
Nosek Lukáš |
xnosek01 |
(6) |
Skřivánek Petr |
xskriv05 |
(7) |
Tomeš Pavel |
xtomes01 |
(8) |
Schwarz Jan |
xschwa04 |
(9) |
Tomica Petr |
xtomic01 |
(10) |
Hladík Karel |
xhladi04 |
(11) |
Kalenda Martin |
xkalen02 |
(12) |
Helešic Vladimír |
xheles01 |
(13) |
Hrouzek Jan |
xhrouz01 |
(14) |
Hronec Michal |
xhrone01 |
(15) |
Škrkal Oto |
xskrka00 |
(16) |
Horák Josef |
xhorak14 |
(17) |
Hrabálek Jiří |
xhraba02 |
(18) |
Majerek Pavel |
xmajer01 |
(19) |
Mainda Petr |
xmaind00 |
(20) |
Konečný Marek |
xkonec16 |
(21) |
Javorek Martin |
xjavor03 |
(1) |
Pokorný Marek |
xpokor13 |
(2) |
Bohoněk Robert |
xbohon00 |
(3) |
Tupec Pavel |
xtupec00 |
(4) |
Novák Robert |
xnovak32 |
(5) |
Bartek Lukáš |
xbarte00 |
(6) |
Kašpárek Tomáš |
xkaspa06 |
(7) |
Bednář David |
xbedna07 |
(8) |
Neduchal Ondřej |
xneduc00 |
(9) |
Hromčík Petr |
xhromc00 |
(10) |
Masovský Jaroslav |
xmasov00 |
(11) |
Bohatý Radek |
xbohat02 |
(12) |
Was Alfred |
xwasal00 |
(13) |
Doupal Jan |
xdoupa00 |
(14) |
Bednařík Roman |
xbedna10 |
(15) |
Čaloud Libor |
xcalou01 |
(16) |
Kopřiva David |
xkopri00 |
(17) |
Cibula Martin |
xcibul02 |
(18) |
Matějů Martin |
xmatej12 |
(19) |
Kurka Marcel |
xkurka01 |
(20) |
Klozik Martin |
xklozi00 |
(21) |
Klíma Petr |
xklima08 |
(1) |
Bureš Jan |
xbures10 |
(2) |
Konig Michal |
xkonig01 |
(3) |
Nejezchleba Oldřich |
xnejez03 |
(4) |
Šimeček Tomáš |
xsimec02 |
(5) |
Štípal Luděk |
xstipa00 |
(6) |
Buriánek Pavel |
xburia08 |
(7) |
Zela Radek |
xzelar00 |
(8) |
Švec Martin |
xsvecm01 |
(9) |
Kmoníček Martin |
xkmoni00 |
(10) |
Snopek Josef |
xsnope00 |
(11) |
Diewok Petr |
xdiewo00 |
(12) |
Pečiva Jan |
xpeciv00 |
(13) |
Crha Luděk |
xcrhal00 |
(14) |
Floryán Marek |
xflory01 |
(15) |
Strach Michal |
xstrac01 |
(16) |
Spáčil Petr |
xspaci01 |
(17) |
Balas Milan |
xbalas03 |
(18) |
Rossler Jindřich |
xrossl00 |
(19) |
Brabec Tomáš |
xbrabe05 |
(20) |
Pokud jste se do dvou dní neobjevil v seznamu a chcete řešit projekt,
pošlete e-mail nebo se stavte do kanceláře č. 365, ing. Arnošt.
Definice funkcí
| (1) |
| (2) |
| (3) |
| (4) |
| (5) |
| (6) |
| (7) |
| (8) |
| (9) |
| (10) |
| (11) |
| (12) |
| (13) |
| (14) |
| (15) |
| (16) |
| (17) |
| (18) |
| (19) |
| (20) |
| (21) |
Pokud si nebudete jisti dalšími členy rozvoje,
odvoďte si je z Maclaurinova vzorce (22). |
| (22) |
FAQ
Q: |
Proč mi nejde v učebně BI-018 spustit můj program ani vzorový příklad
taylor.exe? |
A: |
Protože na počítačích v této učebně nejsou matematické koprocesory.
|
Q: |
math.h neobsahuje funkce arcsinh, arccosh, arctgh,
arccotgh. Co mám dělat? |
A: |
Tyto funkce lze spočítat pomocí funkce ln:
|
Q: |
V čem se vrací výsledek funkce typu double? |
A: |
V ST(0). Všechny ostatní registry ST(1), ST(2), ...
musí být prázdné.
|
Q: |
Který překladač JSI mám použít? |
A: |
Ten, který je na síti. Buď TASM 3.1
v Q:\BC\BIN\TASM.EXE nebo TASM 3.2
v Q:\BP\BIN\TASM.EXE. Rozdíly mezi
těmito verzemi by se neměly v tomto projektu projevit.
|
Q: |
Kdy mám použít instrukci finit? |
A: |
Na začátku programu, pokud jej píšete celý v JSI. Pokud píšete jen
funkci ve vyšším jazyce (Pascal, C), tak finit vůbec nepoužívejte, protože
knihovny příslušného jazyka již inicializaci provedly. Překladač by měl garantovat,
že na začátku provádění funkce je zásobník koprocesoru prázdný. Po návratu z funkce
by na zásobníku nemělo být nic jiného než výsledná hodnota.
|
Q: |
Jak nadeklarovat návěští v in-line assembleru překladače Borland C 3.1? |
A: |
Autoři překladače na tuto možnost zapomněli, takže je nutné blok asm {}
uzavřít a návěští nadeklarovat jako normální návěští v jazyce C a poté otevřít
další blok asm {}. Druhá možnost je použít direktivu asm na začátku
každého řádku a návěští psát na samostatné řádky nebo před asm. |
© Ústav informatiky a výpočetní techniky, Božetěchova 2, 612 66 Brno
Tel.: 54114 1144, 541212 219, Fax: 54114 1270
E-mail: uivt@fee.vutbr.cz,
Web: http://www.fee.vutbr.cz/UIVT/
Poslední změna:
15. November 1999
|
|