<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sr">
	<id>https://siwiki.rs/w/index.php?action=history&amp;feed=atom&amp;title=%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%81%D0%BA%D0%B8_%D1%81%D0%BE%D1%84%D1%82%D0%B2%D0%B5%D1%80%2F%D0%9B%D0%B0%D0%B1%D0%9F_2020</id>
	<title>Системски софтвер/ЛабП 2020 - Историја измена</title>
	<link rel="self" type="application/atom+xml" href="https://siwiki.rs/w/index.php?action=history&amp;feed=atom&amp;title=%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%81%D0%BA%D0%B8_%D1%81%D0%BE%D1%84%D1%82%D0%B2%D0%B5%D1%80%2F%D0%9B%D0%B0%D0%B1%D0%9F_2020"/>
	<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%81%D0%BA%D0%B8_%D1%81%D0%BE%D1%84%D1%82%D0%B2%D0%B5%D1%80/%D0%9B%D0%B0%D0%B1%D0%9F_2020&amp;action=history"/>
	<updated>2026-06-04T02:18:45Z</updated>
	<subtitle>Историја измена ове странице на пројекту</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%81%D0%BA%D0%B8_%D1%81%D0%BE%D1%84%D1%82%D0%B2%D0%B5%D1%80/%D0%9B%D0%B0%D0%B1%D0%9F_2020&amp;diff=7894&amp;oldid=prev</id>
		<title>Miljan Đođević: Dodat rok koji sam pronasao na svom racnuaru s nekog starog drive-a</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%81%D0%BA%D0%B8_%D1%81%D0%BE%D1%84%D1%82%D0%B2%D0%B5%D1%80/%D0%9B%D0%B0%D0%B1%D0%9F_2020&amp;diff=7894&amp;oldid=prev"/>
		<updated>2025-04-16T04:00:19Z</updated>

		<summary type="html">&lt;p&gt;Dodat rok koji sam pronasao na svom racnuaru s nekog starog drive-a&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Нова страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{tocright}}&lt;br /&gt;
{{нерешено}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Поправна лаб вежба, јун 2020. године са РТИ смера&amp;#039;&amp;#039;&amp;#039; - Лаб вежба на РТИ смеру некада је обухватала само задатак са превођењем асемблерског кода у Ц код. &lt;br /&gt;
&lt;br /&gt;
== 1. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
За дати код у асемблеру дати како би могао изгледати Ц код чијим је превођењен добијен.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
.intel_syntax noprefix&lt;br /&gt;
.text&lt;br /&gt;
.global foo&lt;br /&gt;
.type foo, @function&lt;br /&gt;
foo:&lt;br /&gt;
    push rbp&lt;br /&gt;
    mov rbp, rsp&lt;br /&gt;
    mov QWORD PTR -24[rbp], rdi&lt;br /&gt;
    mov QWORD PTR -32[rbp], rsi&lt;br /&gt;
    mov DWORD PTR -36[rbp], edx&lt;br /&gt;
    mov rax, QWORD PTR -32[rbp]&lt;br /&gt;
    mov rdx, QWORD PTR [rax]&lt;br /&gt;
    mov rax, QWORD PTR -24[rbp]&lt;br /&gt;
    add rax, rdx&lt;br /&gt;
    mov QWORD PTR -8[rbp], rax&lt;br /&gt;
    mov rax, QWORD PTR -32[rbp]&lt;br /&gt;
    mov edx, DWORD PTR 8[rax]&lt;br /&gt;
    mov eax, DWORD PTR -36[rbp]&lt;br /&gt;
    add eax, edx&lt;br /&gt;
    mov DWORD PTR -12[rbp], eax&lt;br /&gt;
    mov eax, DWORD PTR -12[rbp]&lt;br /&gt;
    movsx rdx, eax&lt;br /&gt;
    mov rax, QWORD PTR -8[rbp]&lt;br /&gt;
    add rax, rdx&lt;br /&gt;
    pop rbp&lt;br /&gt;
    ret&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
typedef struct&lt;br /&gt;
{&lt;br /&gt;
    long a;&lt;br /&gt;
    int b&lt;br /&gt;
} A;&lt;br /&gt;
&lt;br /&gt;
long foo(long a, A *b, int c)&lt;br /&gt;
{&lt;br /&gt;
    // long l1 = a; A *l2 = b; int l3 = c; // use these instead of params?&lt;br /&gt;
    long d = a + b-&amp;gt;a;&lt;br /&gt;
    int e = c + b-&amp;gt;b;&lt;br /&gt;
    return d + e;&lt;br /&gt;
    // or just &amp;#039;return a + b-&amp;gt;a + c + b-&amp;gt;b;&amp;#039; ?&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Објашњење:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
.intel_syntax noprefix&lt;br /&gt;
.text&lt;br /&gt;
.global foo&lt;br /&gt;
.type foo, @function&lt;br /&gt;
foo:&lt;br /&gt;
    push rbp&lt;br /&gt;
    mov rbp, rsp # no need for repeated &amp;#039;sub rsp, 0x10&amp;#039; because of the red zone (no nested function calls)&lt;br /&gt;
    mov QWORD PTR -24[rbp], rdi # long a = rdi; (param1)&lt;br /&gt;
    mov QWORD PTR -32[rbp], rsi # struct *b = rsi; (struct: long a, int b) (param2)&lt;br /&gt;
    mov DWORD PTR -36[rbp], edx # int c = edx; (param3)&lt;br /&gt;
    mov rax, QWORD PTR -32[rbp] # rax = b;&lt;br /&gt;
    mov rdx, QWORD PTR [rax] # rdx = b-&amp;gt;a;&lt;br /&gt;
    mov rax, QWORD PTR -24[rbp] # rax = a;&lt;br /&gt;
    add rax, rdx # rax = a + b-&amp;gt;a;&lt;br /&gt;
    mov QWORD PTR -8[rbp], rax # long d = a + b-&amp;gt;a;&lt;br /&gt;
    mov rax, QWORD PTR -32[rbp] # rax = b;&lt;br /&gt;
    mov edx, DWORD PTR 8[rax] # edx = b-&amp;gt;b;&lt;br /&gt;
    mov eax, DWORD PTR -36[rbp] # eax = c;&lt;br /&gt;
    add eax, edx # eax = c + b-&amp;gt;b;&lt;br /&gt;
    mov DWORD PTR -12[rbp], eax # int e = c + b-&amp;gt;b;&lt;br /&gt;
    mov eax, DWORD PTR -12[rbp] # eax = e;&lt;br /&gt;
    movsx rdx, eax # rdx = (long) e;&lt;br /&gt;
    mov rax, QWORD PTR -8[rbp] # rax = d;&lt;br /&gt;
    add rax, rdx # rax = d + e; (return value)&lt;br /&gt;
    pop rbp # no need for &amp;#039;mov rsp, rbp&amp;#039; before this line (nor &amp;#039;leave&amp;#039; instead) as rsp hasn&amp;#039;t changed&lt;br /&gt;
    ret&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Системски софтвер]]&lt;/div&gt;</summary>
		<author><name>Miljan Đođević</name></author>
	</entry>
</feed>