https://mera400.pl/index.php?title=EMAWP&feed=atom&action=history
EMAWP - Historia wersji
2024-03-28T19:43:26Z
Historia wersji tej strony wiki
MediaWiki 1.41.0
https://mera400.pl/index.php?title=EMAWP&diff=2227&oldid=prev
Amo: /* Flagi i błędy */
2016-01-09T19:22:30Z
<p><span dir="auto"><span class="autocomment">Flagi i błędy</span></span></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="pl">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← poprzednia wersja</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Wersja z 19:22, 9 sty 2016</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l65">Linia 65:</td>
<td colspan="2" class="diff-lineno">Linia 65:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* C - przeniesienie</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* C - przeniesienie</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* V - przepełnienie</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* V - przepełnienie</div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">Na przykład:</ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"> > emawp -d 0.0000000000000000000000001 1000000000000000000000000000000000000000</ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"> in1: OK ---- 0x7bcb 0x43d7 0x69ad <- 0.000000000000000000000000100000000000000004</ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"> in2: OVFLOW ---- 0x5e0a 0x1fd2 0x7182 <- 999999999999999939709166371603178586112.000</ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"> div: OK ---- 0x543f 0xf513 0xd22c -> 11579208923712.00000000000000000000000000000</ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"> > emawp -s 1 1</ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"> in1: OK ---- 0x4000 0x0000 0x0001 <- 1.000000000000000000000000000000000000000000</ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"> in2: OK ---- 0x4000 0x0000 0x0001 <- 1.000000000000000000000000000000000000000000</ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"> sub: OK Z--- 0x0000 0x0000 0x0000 -> 0.000000000000000000000000000000000000000000</ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"> > emawp -d 0.0000000000000000000000000000000000000001 100000000000000000000000000000000000</ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"> in1: UDFLOW ---- 0x45b0 0x989d 0xdd7c <- 0.000000000000000000000000000000000000000100</ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"> in2: OK ---- 0x4d09 0x85cb 0x1d75 <- 99999999999999996863366107917975552.0000000</ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"> div: OK ---- 0x73ca 0xc65c 0x3907 -> 115.7920892371330410242080688476562500000000</ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"> > emawp -a -- -1.0 1</ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"> in1: OK -M-- 0x8000 0x0000 0x0000 <- -1.000000000000000000000000000000000000000000</ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"> in2: OK ---- 0x4000 0x0000 0x0001 <- 1.000000000000000000000000000000000000000000</ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"> add: OK Z--- 0x0000 0x0000 0x0000 -> 0.000000000000000000000000000000000000000000</ins></div></td></tr>
</table>
Amo
https://mera400.pl/index.php?title=EMAWP&diff=2226&oldid=prev
Amo o 19:19, 9 sty 2016
2016-01-09T19:19:21Z
<p></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="pl">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← poprzednia wersja</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Wersja z 19:19, 9 sty 2016</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l1">Linia 1:</td>
<td colspan="2" class="diff-lineno">Linia 1:</td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">__NOTOC__</ins></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>EMAWP to biblioteka i narzędzia pozwalające operować na liczbach długich i zmiennoprzecinkowych w taki sam sposób, w jaki robi to [[Arytmometr Wielokrotnej Precyzji]]. Biblioteka używana jest przez emulator [[EM400]] do realizowania funkcjonalności AWP, oraz przez assembler [[EMAS]] i deassembler [[EMDAS]] do konwersji liczb zmiennoprzecinkowych między konwencją zapisu MERY-400 a formatem systemu, na którym narzędzia działają.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>EMAWP to biblioteka i narzędzia pozwalające operować na liczbach długich i zmiennoprzecinkowych w taki sam sposób, w jaki robi to [[Arytmometr Wielokrotnej Precyzji]]. Biblioteka używana jest przez emulator [[EM400]] do realizowania funkcjonalności AWP, oraz przez assembler [[EMAS]] i deassembler [[EMDAS]] do konwersji liczb zmiennoprzecinkowych między konwencją zapisu MERY-400 a formatem systemu, na którym narzędzia działają.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br></td></tr>
</table>
Amo
https://mera400.pl/index.php?title=EMAWP&diff=2225&oldid=prev
Amo: Utworzono nową stronę "EMAWP to biblioteka i narzędzia pozwalające operować na liczbach długich i zmiennoprzecinkowych w taki sam sposób, w jaki robi to Arytmometr Wielokrotnej Precyzji..."
2016-01-09T19:19:02Z
<p>Utworzono nową stronę "EMAWP to biblioteka i narzędzia pozwalające operować na liczbach długich i zmiennoprzecinkowych w taki sam sposób, w jaki robi to Arytmometr Wielokrotnej Precyzji..."</p>
<p><b>Nowa strona</b></p><div>EMAWP to biblioteka i narzędzia pozwalające operować na liczbach długich i zmiennoprzecinkowych w taki sam sposób, w jaki robi to [[Arytmometr Wielokrotnej Precyzji]]. Biblioteka używana jest przez emulator [[EM400]] do realizowania funkcjonalności AWP, oraz przez assembler [[EMAS]] i deassembler [[EMDAS]] do konwersji liczb zmiennoprzecinkowych między konwencją zapisu MERY-400 a formatem systemu, na którym narzędzia działają.<br />
<br />
Repozytorium źródeł EMAWP: https://github.com/jakubfi/emawp<br />
<br />
Z biblioteką dostarczane jest narzędzie ''emawp'' pozwalające wykonywać operacje AWP na liczbach zmiennoprzecinkowych w linii poleceń. Jego wywołanie ma jedną z postaci:<br />
<br />
emawp [-v] <argumrnt><br />
emawp [-v] -n <argument><br />
emawp [-v] -a|-s|-m|-d <argument> <argument><br />
emawp -h<br />
<br />
gdzie:<br />
<br />
* '''argument''' - liczba zmiennoprzecinkowa (np. 1.4512) lub trzy 16-bit liczby hexadecymalne (np. 0x4234 0xe3fa 0x0001)<br />
* '''-n''' - normalizacji argumentu<br />
* '''-a''' - wykonanie operacji dodawania argumentów<br />
* '''-s''' - wykonanie operacji odejmowania argumentów<br />
* '''-m''' - wykonanie operacji mnożenia argumentów<br />
* '''-d''' - wykonanie operacji dzielenia argumentów<br />
* '''-v''' - włączenie trybu gadatliwego<br />
* '''-h''' - wyświetlenie pomocy.<br />
<br />
= Przykłady użycia =<br />
<br />
== Normalizacja ==<br />
<br />
Liczba zmiennoprzecinkowa zapisana w postaci używanej przez AWP jako 0x2f00 0x0000 0x0002 ma wartość 1.46875, ale jest zdenormalizowana. Znormalizować ją można następująco:<br />
<br />
> emawp -n 0x2f00 0x0000 0x0002<br />
in1: DENORM ---- 0x2f00 0x0000 0x0002 -> 1.468750000000000000000000000000000000000000<br />
norm: OK ---- 0x5e00 0x0000 0x0001 -> 1.468750000000000000000000000000000000000000<br />
<br />
== Operacje arytmetyczne ==<br />
<br />
Wykonanie dodawania liczby 0.5 i 1.5 w postaci używanej przez AWP ma postać:<br />
<br />
> emawp -a 0x4000 0x0000 0x0000 0x6000 0x0000 0x0001<br />
in1: OK ---- 0x4000 0x0000 0x0000 -> 0.500000000000000000000000000000000000000000<br />
in2: OK ---- 0x6000 0x0000 0x0001 -> 1.500000000000000000000000000000000000000000<br />
add: OK ---- 0x4000 0x0000 0x0002 -> 2.000000000000000000000000000000000000000000<br />
<br />
I jest ono równoznaczne wykonaniu tej samej operacji z użyciem zapisu z kropką:<br />
<br />
> emawp -a 0.5 1.5<br />
in1: OK ---- 0x4000 0x0000 0x0000 <- 0.500000000000000000000000000000000000000000<br />
in2: OK ---- 0x6000 0x0000 0x0001 <- 1.500000000000000000000000000000000000000000<br />
add: OK ---- 0x4000 0x0000 0x0002 -> 2.000000000000000000000000000000000000000000<br />
<br />
Typy argumentów można również mieszać.<br />
<br />
== Flagi i błędy ==<br />
<br />
Zgodnie z zachowaniem AWP, ''emawp'' prezentuje flagi i błędy operacji. Druga kolumna wyjścia opisuje stan operacji:<br />
<br />
* OK - poprawny<br />
* UDFLOW - podmiar dzielenia zmiennoprzecinkowego<br />
* OVFLOW - nadmiar dzielenia zmiennoprzecinkowego<br />
* DENORM - argument zdenormalizowany<br />
<br />
Kolumna trzecia zawiera flagi, które ustawiła operacja arytmetyczna. Na czterech kolejnych pozycjach zapalić się mogą kolejno:<br />
<br />
* Z - zero<br />
* M - minus<br />
* C - przeniesienie<br />
* V - przepełnienie</div>
Amo