<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Assembly on grzenow</title><link>http://www.grzenow.com/pl/tags/assembly/</link><description>Recent content in Assembly on grzenow</description><generator>Hugo</generator><language>pl</language><lastBuildDate>Sun, 21 Jan 2024 00:00:00 +0000</lastBuildDate><atom:link href="http://www.grzenow.com/pl/tags/assembly/index.xml" rel="self" type="application/rss+xml"/><item><title>Kompilator Latte</title><link>http://www.grzenow.com/pl/projects/latte-compiler/</link><pubDate>Sun, 21 Jan 2024 00:00:00 +0000</pubDate><guid>http://www.grzenow.com/pl/projects/latte-compiler/</guid><description>&lt;p&gt;Jednym z większych projektów na pierwszym roku studiów magisterskich było stworzenie kompilatora dla języka &lt;a href="https://www.mimuw.edu.pl/~ben/Zajecia/Mrj2022/Latte/" class="external-link" target="_blank" rel="noopener"&gt;Latte&lt;/a&gt;, rozszerzonego o takie funkcjonalności jak tablice, struktury oraz obiekty z pojedynczym dziedziczeniem. Kod w języku Latte jest parsowany przy użyciu narzędzia &lt;a href="https://hackage.haskell.org/package/BNFC" class="external-link" target="_blank" rel="noopener"&gt;BNFC&lt;/a&gt; i kompilowany do architektury x86 asemblera.&lt;/p&gt;&#10;&lt;p&gt;Kompilator reprezentuje monada &lt;code&gt;Reader-Writer-State&lt;/code&gt;:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-haskell" data-lang="haskell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;data&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;Reader&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;Rd&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; { func &lt;span style="color:#ff7b72;font-weight:bold"&gt;::&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;Map&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#ff7b72"&gt;Map&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;String&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;TType&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; , clss &lt;span style="color:#ff7b72;font-weight:bold"&gt;::&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;Map&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#ff7b72"&gt;Map&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;String&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;ClassEnv&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;type&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;Writer&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt; [&lt;span style="color:#ff7b72"&gt;AsmInstr&lt;/span&gt;]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;data&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;State&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;St&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; { nextlab &lt;span style="color:#ff7b72;font-weight:bold"&gt;::&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;Int&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; , newloc &lt;span style="color:#ff7b72;font-weight:bold"&gt;::&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;Int&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; , env &lt;span style="color:#ff7b72;font-weight:bold"&gt;::&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;Map&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#ff7b72"&gt;Map&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;String&lt;/span&gt; (&lt;span style="color:#ff7b72"&gt;TType&lt;/span&gt;, &lt;span style="color:#ff7b72"&gt;String&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; , rodata &lt;span style="color:#ff7b72;font-weight:bold"&gt;::&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;Map&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#ff7b72"&gt;Map&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;String&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;String&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; , rspOff &lt;span style="color:#ff7b72;font-weight:bold"&gt;::&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;Int&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;gdzie&lt;/p&gt;</description></item><item><title>Polynomial degree</title><link>http://www.grzenow.com/pl/projects/polynomial-degree/</link><pubDate>Tue, 10 May 2022 00:00:00 +0000</pubDate><guid>http://www.grzenow.com/pl/projects/polynomial-degree/</guid><description>&lt;p&gt;&lt;strong&gt;Polynomial degree&lt;/strong&gt; to projekt napisany w czystym asemblerze. Polega on na zaimplementowaniu funckji&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;int&lt;/span&gt; &lt;span style="color:#d2a8ff;font-weight:bold"&gt;polynomial_degree&lt;/span&gt;(&lt;span style="color:#ff7b72"&gt;int&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;const&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;*&lt;/span&gt;y, &lt;span style="color:#ff7b72"&gt;size_t&lt;/span&gt; n);&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Argumentami funkcji są wskaźnik &lt;code&gt;y&lt;/code&gt; na tablicę liczb całkowitych $y_0,y_1,\ldots,y_{n-1}$ i &lt;code&gt;n&lt;/code&gt; zawierający długość tej tablicy. Wynikiem funkcji jest najmniejszy stopień wielomianu $w(x)$ jednej zmiennej o współczynnikach rzeczywistych, takiego że&#10;$w(x+k\cdot r)=y_k$&#10;dla pewnej liczby rzeczywistej $x$, pewnej niezerowej liczby rzeczywistej $r$ oraz $k=0,1,\ldots,n-1$.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Przykłady:&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Dla $y=[-3,0,3]$, wynikiem będzie wielomian stopnia 1.&lt;/li&gt;&#10;&lt;li&gt;Dla $y=[1,4,9,16]$, wynikiem będzie wielomian stopnia 2.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/grzenow4/polynomial-degree" class="external-link" target="_blank" rel="noopener"&gt;Kod źródłowy&lt;/a&gt;&lt;/p&gt;</description></item></channel></rss>