<?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%9F%D1%80%D0%BE%D0%B1%D0%BD%D0%B8_%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D0%B8_2022</id>
	<title>Системски софтвер/Пробни тестови 2022 - Историја измена</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%9F%D1%80%D0%BE%D0%B1%D0%BD%D0%B8_%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D0%B8_2022"/>
	<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%9F%D1%80%D0%BE%D0%B1%D0%BD%D0%B8_%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D0%B8_2022&amp;action=history"/>
	<updated>2026-06-04T03:20:19Z</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%9F%D1%80%D0%BE%D0%B1%D0%BD%D0%B8_%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D0%B8_2022&amp;diff=7419&amp;oldid=prev</id>
		<title>BogdanW3: Mala popravka odgovora za 5. zadatak</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%9F%D1%80%D0%BE%D0%B1%D0%BD%D0%B8_%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D0%B8_2022&amp;diff=7419&amp;oldid=prev"/>
		<updated>2024-03-12T07:28:54Z</updated>

		<summary type="html">&lt;p&gt;Mala popravka odgovora za 5. zadatak&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Старија измена&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Верзија на датум 12. март 2024. у 09:28&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l150&quot;&gt;Ред 150:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ред 150:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;Допунити следеће констатације уколико се посматра &amp;#039;&amp;#039;amd64&amp;#039;&amp;#039; архитектура и &amp;#039;&amp;#039;System V ABI&amp;#039;&amp;#039; конвенција, а &amp;lt;u&amp;gt;симбол&amp;lt;/u&amp;gt; &amp;lt;code&amp;gt;identifier&amp;lt;/code&amp;gt; има вредност &amp;lt;code&amp;gt;0x800000450A&amp;lt;/code&amp;gt;:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;Допунити следеће констатације уколико се посматра &amp;#039;&amp;#039;amd64&amp;#039;&amp;#039; архитектура и &amp;#039;&amp;#039;System V ABI&amp;#039;&amp;#039; конвенција, а &amp;lt;u&amp;gt;симбол&amp;lt;/u&amp;gt; &amp;lt;code&amp;gt;identifier&amp;lt;/code&amp;gt; има вредност &amp;lt;code&amp;gt;0x800000450A&amp;lt;/code&amp;gt;:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;* Наредба &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;printf(&amp;quot;%#lx&amp;quot;, identifier);&amp;lt;/syntaxhighlight&amp;gt; исписује &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;0x8000004502&amp;lt;/span&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;* Наредба &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;printf(&amp;quot;%#lx&amp;quot;, identifier);&amp;lt;/syntaxhighlight&amp;gt; исписује &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;0x8000004502&amp;lt;/span&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Наредба &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;printf(&amp;quot;%p&amp;quot;, a);&amp;lt;/syntaxhighlight&amp;gt; исписује 0x8000004502&amp;lt;/span&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;* Наредба &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;printf(&amp;quot;%p&amp;quot;, a);&amp;lt;/syntaxhighlight&amp;gt; исписује &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;&lt;/ins&gt;0x8000004502&amp;lt;/span&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;* Наредба &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;printf(&amp;quot;%#lx&amp;quot;, a[0]);&amp;lt;/syntaxhighlight&amp;gt; исписује &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;0x3333222222221111&amp;lt;/span&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;* Наредба &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;printf(&amp;quot;%#lx&amp;quot;, a[0]);&amp;lt;/syntaxhighlight&amp;gt; исписује &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;0x3333222222221111&amp;lt;/span&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;* Наредба &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;printf(&amp;quot;%#lx&amp;quot;, a[1]);&amp;lt;/syntaxhighlight&amp;gt; исписује &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;0x8000004502&amp;lt;/span&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;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;&quot;&gt;&lt;div&gt;* Наредба &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;printf(&amp;quot;%#lx&amp;quot;, a[1]);&amp;lt;/syntaxhighlight&amp;gt; исписује &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;0x8000004502&amp;lt;/span&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>BogdanW3</name></author>
	</entry>
	<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%9F%D1%80%D0%BE%D0%B1%D0%BD%D0%B8_%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D0%B8_2022&amp;diff=4214&amp;oldid=prev</id>
		<title>KockaAdmiralac: Probni testovi od ove godine</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%9F%D1%80%D0%BE%D0%B1%D0%BD%D0%B8_%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D0%B8_2022&amp;diff=4214&amp;oldid=prev"/>
		<updated>2022-03-28T20:53:19Z</updated>

		<summary type="html">&lt;p&gt;Probni testovi od ove godine&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Нова страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{tocright}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Пробни тестови 2022&amp;#039;&amp;#039;&amp;#039; били су дати на &amp;#039;&amp;#039;Moodle&amp;#039;&amp;#039; курсу предмета.&lt;br /&gt;
{{решења}}&lt;br /&gt;
&lt;br /&gt;
== К1 - теорија ==&lt;br /&gt;
=== 1. задатак ===&lt;br /&gt;
У наставку су дате дефиниције неких типова података &amp;lt;code&amp;gt;StructTypeA&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;StructTypeB&amp;lt;/code&amp;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;
  char  fA1;&lt;br /&gt;
  long  fA2;&lt;br /&gt;
  short fA3;&lt;br /&gt;
} StructTypeA;&lt;br /&gt;
&lt;br /&gt;
typedef struct&lt;br /&gt;
{&lt;br /&gt;
  int         fB1;&lt;br /&gt;
  int         fB2;&lt;br /&gt;
  short       fB3;&lt;br /&gt;
  StructTypeA fB4;&lt;br /&gt;
  char        fB5;&lt;br /&gt;
  short       fB6;&lt;br /&gt;
} StructTypeB;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Допунити следеће констатације уколико се посматра &amp;#039;&amp;#039;amd64&amp;#039;&amp;#039; архитектура и &amp;#039;&amp;#039;System V ABI&amp;#039;&amp;#039; конвенција:&lt;br /&gt;
* Величина структуре &amp;lt;code&amp;gt;StructTypeB&amp;lt;/code&amp;gt; изражено у бајтовима односно &amp;lt;code&amp;gt;sizeof(StructTypeB)&amp;lt;/code&amp;gt; износи &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;48&amp;lt;/span&amp;gt;.&lt;br /&gt;
* Померај до поља &amp;lt;code&amp;gt;fB4.fA1&amp;lt;/code&amp;gt; гледано од почетка структуре &amp;lt;code&amp;gt;StructTypeB&amp;lt;/code&amp;gt; износи &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;16&amp;lt;/span&amp;gt; изражено у броју адресибилних јединица (бајтова).&lt;br /&gt;
* Најдужи континуални низ неискоришћених односно &amp;#039;&amp;#039;padding&amp;#039;&amp;#039; бајтова у оквиру структуре &amp;lt;code&amp;gt;StructTypeB&amp;lt;/code&amp;gt; почиње на померају &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;17&amp;lt;/span&amp;gt; изражено у броју адресибилних јединица (бајтова) гледано од почетка структуре &amp;lt;code&amp;gt;StructTypeB&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Структура &amp;lt;code&amp;gt;StructTypeB&amp;lt;/code&amp;gt; садржи укупно &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;24&amp;lt;/span&amp;gt; неискоришћених односно &amp;#039;&amp;#039;padding&amp;#039;&amp;#039; бајтова.&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Напомене:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Све одговоре треба унети у &amp;lt;u&amp;gt;децималном формату&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== 2. задатак ===&lt;br /&gt;
У наставку је дата декларација функције &amp;lt;code&amp;gt;foo&amp;lt;/code&amp;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 f1;&lt;br /&gt;
  long f2;&lt;br /&gt;
  long f3;&lt;br /&gt;
} StructType;&lt;br /&gt;
&lt;br /&gt;
extern StructType foo(&lt;br /&gt;
    char       param0,&lt;br /&gt;
    double     param1,&lt;br /&gt;
    StructType param2,&lt;br /&gt;
    void *     param3,&lt;br /&gt;
    StructType param4,&lt;br /&gt;
    float      param5,&lt;br /&gt;
    long       param6);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Допунити следеће констатације уколико се посматра amd64 архитектура и System V ABI конвенција:&lt;br /&gt;
&amp;lt;div data-solution=&amp;quot;select&amp;quot; data-options=&amp;quot;rax,rdx,комбинација rax и rdx,xmm0,xmm1,комбинација xmm0 и xmm1,комбинација GP/SSE,меморијски простор алоциран од стране позиваоца,меморијски простор алоциран од стране позване функције&amp;quot;&amp;gt;&lt;br /&gt;
* Повратна вредност функције &amp;lt;code&amp;gt;foo&amp;lt;/code&amp;gt; прослеђује се као &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;меморијски простор алоциран од стране позиваоца&amp;lt;/span&amp;gt; назад до позиваоца.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div data-solution=&amp;quot;select&amp;quot; data-options=&amp;quot;rdi,rsi,rdx,rcx,r8,r9,xmm0,xmm1,xmm2,xmm3,xmm4,xmm5,xmm6,xmm7,комбинација GP,комбинација SSE,комбинација GP/SSE,stackPushI,stackPushII,stackPushIII,stackPushIV,stackPushV,stackPushVI,stackPushVII&amp;quot;&amp;gt;&lt;br /&gt;
* Параметар &amp;lt;code&amp;gt;param0&amp;lt;/code&amp;gt; прослеђује се као &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;rsi&amp;lt;/span&amp;gt; у функцију &amp;lt;code&amp;gt;foo&amp;lt;/code&amp;gt; приликом њеног позива.&lt;br /&gt;
* Параметар &amp;lt;code&amp;gt;param1&amp;lt;/code&amp;gt; прослеђује се као &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;xmm0&amp;lt;/span&amp;gt; у функцију &amp;lt;code&amp;gt;foo&amp;lt;/code&amp;gt; приликом њеног позива.&lt;br /&gt;
* Параметар &amp;lt;code&amp;gt;param2&amp;lt;/code&amp;gt; прослеђује се као &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;stackPushII&amp;lt;/span&amp;gt; у функцију &amp;lt;code&amp;gt;foo&amp;lt;/code&amp;gt; приликом њеног позива.&lt;br /&gt;
* Параметар &amp;lt;code&amp;gt;param3&amp;lt;/code&amp;gt; прослеђује се као &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;rdx&amp;lt;/span&amp;gt; у функцију &amp;lt;code&amp;gt;foo&amp;lt;/code&amp;gt; приликом њеног позива.&lt;br /&gt;
* Параметар &amp;lt;code&amp;gt;param4&amp;lt;/code&amp;gt; прослеђује се као &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;stackPushI&amp;lt;/span&amp;gt; у функцију &amp;lt;code&amp;gt;foo&amp;lt;/code&amp;gt; приликом њеног позива.&lt;br /&gt;
* Параметар &amp;lt;code&amp;gt;param5&amp;lt;/code&amp;gt; прослеђује се као &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;xmm1&amp;lt;/span&amp;gt; у функцију &amp;lt;code&amp;gt;foo&amp;lt;/code&amp;gt; приликом њеног позива.&lt;br /&gt;
* Параметар &amp;lt;code&amp;gt;param6&amp;lt;/code&amp;gt; прослеђује се као &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;rcx&amp;lt;/span&amp;gt; у функцију &amp;lt;code&amp;gt;foo&amp;lt;/code&amp;gt; приликом њеног позива.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Напомене:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Одговор &amp;lt;u&amp;gt;комбинација GP&amp;lt;/u&amp;gt; представља одређену комбинацију (више од једног) искључиво &amp;#039;&amp;#039;General Purpose&amp;#039;&amp;#039; регистара.&lt;br /&gt;
* Одговор &amp;lt;u&amp;gt;комбинација SSE&amp;lt;/u&amp;gt; представља одређену комбинацију (више од једног) искључиво &amp;#039;&amp;#039;Streaming SIMD Extension&amp;#039;&amp;#039; регистара.&lt;br /&gt;
* Одговор &amp;lt;u&amp;gt;комбинација GP/SSE&amp;lt;/u&amp;gt; представља одређену комбинацију (више од једног) &amp;#039;&amp;#039;General Purpose&amp;#039;&amp;#039; и &amp;#039;&amp;#039;Streaming SIMD Extension&amp;#039;&amp;#039; регистара.&lt;br /&gt;
* Одговор &amp;lt;u&amp;gt;stackPush&amp;#039;&amp;#039;&amp;amp;lt;roman-numeral&amp;gt;&amp;#039;&amp;#039;&amp;lt;/u&amp;gt;, где је &amp;#039;&amp;#039;&amp;lt;roman-numeral&amp;gt;&amp;#039;&amp;#039; римски број, представља аргумент који се прослеђује преко стека при чему римски број означава међусобни поредак &amp;#039;&amp;#039;push&amp;#039;&amp;#039; операција односно редослед стављања датог аргумента на врх стека у односу на друге аргументе који се такође прослеђују преко стека.&lt;br /&gt;
&lt;br /&gt;
=== 3. задатак ===&lt;br /&gt;
Да ли функција, која током свог извршавања позива друге функције, сме без претходне алокације да користи стек за чување локалних променљивих уколико се посматра &amp;#039;&amp;#039;amd64&amp;#039;&amp;#039; архитектура и &amp;#039;&amp;#039;System V ABI&amp;#039;&amp;#039; конвенција?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# Да, јер надаље позване функције неће мењати садржај меморије који одговара врху стека.&lt;br /&gt;
# Да, услед постојања имплицитне алокације стека приликом уласка у функцију.&lt;br /&gt;
# Да, због постојања &amp;quot;црвене зоне&amp;quot;.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Не.&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. задатак ===&lt;br /&gt;
У наставку је дат садржај датотеке &amp;#039;&amp;#039;syscall.s&amp;#039;&amp;#039; са изворним асемблерским кодом:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
.intel_syntax noprefix&lt;br /&gt;
&lt;br /&gt;
.data&lt;br /&gt;
message:&lt;br /&gt;
.asciz &amp;quot;Hello World!\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
.text&lt;br /&gt;
loop:&lt;br /&gt;
    jmp loop&lt;br /&gt;
entry:&lt;br /&gt;
    mov rax, 1&lt;br /&gt;
    mov rdi, 1&lt;br /&gt;
    mov rsi, offset message&lt;br /&gt;
    mov rdx, offset 13&lt;br /&gt;
    syscall&lt;br /&gt;
&lt;br /&gt;
    mov rax, 60&lt;br /&gt;
    mov rdi, 0&lt;br /&gt;
    syscall&lt;br /&gt;
.end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Посматра се &amp;#039;&amp;#039;amd64&amp;#039;&amp;#039; архитектура и &amp;#039;&amp;#039;System V ABI&amp;#039;&amp;#039; конвенција, а покренуте су следеће команде:&lt;br /&gt;
 as -o syscall.o syscall.s&lt;br /&gt;
 ld --entry=entry -o executable syscall.o&lt;br /&gt;
 ./executable&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# Није могуће добити извршну датотеку executable зато што у процес линковања нису укључене C runtime објектне датотеке.&lt;br /&gt;
# Није могуће добити извршну датотеку executable зато што у процес линковања није укључена стандардна C библиотека.&lt;br /&gt;
# Програм се регуларно извршава и исписује поруку Hello World! на стандардни излаз.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Програм се регуларно извршава, али неће исписати поруку Hello World! зато што се врти у бесконачној петљи.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Није могуће добити извршну датотеку executable зато што симбол који представља улазну тачку није видљив линкеру.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5. задатак ===&lt;br /&gt;
Посматра се програм описан садржајем дела меморије и сегментом изворног &amp;#039;&amp;#039;C&amp;#039;&amp;#039; кода.&lt;br /&gt;
&lt;br /&gt;
Иницијални садржај дела меморије (дат у &amp;quot;школском&amp;quot; формату приказаном на аудиторним вежбама):&lt;br /&gt;
     +7       +6       +5       +4       +3       +2       +1       +0&lt;br /&gt;
 &lt;br /&gt;
 |  0xAA  |  0xAA  |  0xAA  |  0xAA  |  0x99  |  0x99  |  0x99  |  0x99  | &amp;lt;--- 0x8000004500 + 0x20&lt;br /&gt;
 |  0x88  |  0x88  |  0x88  |  0x88  |  0x77  |  0x77  |  0x77  |  0x77  | &amp;lt;--- 0x8000004500 + 0x18&lt;br /&gt;
 |  0x66  |  0x66  |  0x66  |  0x66  |  0x55  |  0x55  |  0x00  |  0x00  | &amp;lt;--- 0x8000004500 + 0x10&lt;br /&gt;
 |  0x00  |  0x80  |  0x00  |  0x00  |  0x45  |  0x02  |  0x33  |  0x33  | &amp;lt;--- 0x8000004500 + 0x08&lt;br /&gt;
 |  0x22  |  0x22  |  0x22  |  0x22  |  0x11  |  0x11  |  0x11  |  0x11  | &amp;lt;--- 0x8000004500 + 0x00&lt;br /&gt;
Сегмент изворног &amp;#039;&amp;#039;C&amp;#039;&amp;#039; кода:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdint.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
extern uint64_t identifier;&lt;br /&gt;
&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
  printf(&amp;quot;%#lx&amp;quot;, identifier);&lt;br /&gt;
&lt;br /&gt;
  uint64_t *a = (uint64_t *)identifier;&lt;br /&gt;
  printf(&amp;quot;%p&amp;quot;, a);&lt;br /&gt;
  printf(&amp;quot;%#lx&amp;quot;, a[0]);&lt;br /&gt;
  printf(&amp;quot;%#lx&amp;quot;, a[1]);&lt;br /&gt;
&lt;br /&gt;
  uint64_t *b = (uint64_t *)&amp;amp;identifier;&lt;br /&gt;
  printf(&amp;quot;%p&amp;quot;, b);&lt;br /&gt;
  printf(&amp;quot;%#lx&amp;quot;, b[0]);&lt;br /&gt;
  printf(&amp;quot;%#lx&amp;quot;, b[1]);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Допунити следеће констатације уколико се посматра &amp;#039;&amp;#039;amd64&amp;#039;&amp;#039; архитектура и &amp;#039;&amp;#039;System V ABI&amp;#039;&amp;#039; конвенција, а &amp;lt;u&amp;gt;симбол&amp;lt;/u&amp;gt; &amp;lt;code&amp;gt;identifier&amp;lt;/code&amp;gt; има вредност &amp;lt;code&amp;gt;0x800000450A&amp;lt;/code&amp;gt;:&lt;br /&gt;
* Наредба &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;printf(&amp;quot;%#lx&amp;quot;, identifier);&amp;lt;/syntaxhighlight&amp;gt; исписује &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;0x8000004502&amp;lt;/span&amp;gt;.&lt;br /&gt;
* Наредба &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;printf(&amp;quot;%p&amp;quot;, a);&amp;lt;/syntaxhighlight&amp;gt; исписује 0x8000004502&amp;lt;/span&amp;gt;.&lt;br /&gt;
* Наредба &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;printf(&amp;quot;%#lx&amp;quot;, a[0]);&amp;lt;/syntaxhighlight&amp;gt; исписује &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;0x3333222222221111&amp;lt;/span&amp;gt;.&lt;br /&gt;
* Наредба &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;printf(&amp;quot;%#lx&amp;quot;, a[1]);&amp;lt;/syntaxhighlight&amp;gt; исписује &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;0x8000004502&amp;lt;/span&amp;gt;.&lt;br /&gt;
* Наредба &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;printf(&amp;quot;%p&amp;quot;, b);&amp;lt;/syntaxhighlight&amp;gt; исписује &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;0x800000450A&amp;lt;/span&amp;gt;.&lt;br /&gt;
* Наредба &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;printf(&amp;quot;%#lx&amp;quot;, b[0]);&amp;lt;/syntaxhighlight&amp;gt; исписује &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;0x8000004502&amp;lt;/span&amp;gt;.&lt;br /&gt;
* Наредба &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;printf(&amp;quot;%#lx&amp;quot;, b[1]);&amp;lt;/syntaxhighlight&amp;gt; исписује &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;0x7777666666665555&amp;lt;/span&amp;gt;.&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Напомене:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Уколико неку вредност није могуће одредити на основу датог садржаја дела меморије као одговор треба унети знак питања (?)&lt;br /&gt;
* Све одговоре за успешно одређене вредности треба унети у истом формату каквом их програм исписује.&lt;br /&gt;
* Формат &amp;lt;code&amp;gt;&amp;quot;%p&amp;quot;&amp;lt;/code&amp;gt; служи за испис вредности показивача у хексадецималном формату са префиксом &amp;lt;code&amp;gt;0x&amp;lt;/code&amp;gt; (након префикса не исписују се водеће нуле).&lt;br /&gt;
* Формат &amp;lt;code&amp;gt;&amp;quot;%#x&amp;quot;&amp;lt;/code&amp;gt; служи за испис неозначеног целог броја у хексадецималном формату са префиксом &amp;lt;code&amp;gt;0x&amp;lt;/code&amp;gt; (након префикса не исписују се водеће нуле).&lt;br /&gt;
&lt;br /&gt;
== К1 - задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
У наставку је дат сегмент изворног асемблерског кода написан за &amp;#039;&amp;#039;amd64&amp;#039;&amp;#039; архитектуру према &amp;#039;&amp;#039;System V ABI&amp;#039;&amp;#039; конвенцији:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
.intel_syntax noprefix&lt;br /&gt;
.extern bar&lt;br /&gt;
.text&lt;br /&gt;
.global foo&lt;br /&gt;
.type foo, @function&lt;br /&gt;
foo:&lt;br /&gt;
   endbr64&lt;br /&gt;
   sub rsp, 72&lt;br /&gt;
   mov rdi, rsp&lt;br /&gt;
   mov r8d, DWORD PTR 132[rsp]&lt;br /&gt;
   mov ecx, 9&lt;br /&gt;
   mov edx, DWORD PTR 96[rsp]&lt;br /&gt;
   mov esi, 2&lt;br /&gt;
   call bar&lt;br /&gt;
   mov eax, DWORD PTR 44[rsp]&lt;br /&gt;
   add eax, DWORD PTR 28[rsp]&lt;br /&gt;
   add rsp, 72&lt;br /&gt;
   ret&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Написати сегмент изворног C кода, који одговара наведеном сегменту изворног асемблерског кода, тако да садржи само следеће елементе:&lt;br /&gt;
* дефиниције потенцијално потребних типова података,&lt;br /&gt;
* &amp;lt;u&amp;gt;декларацију&amp;lt;/u&amp;gt; функције &amp;lt;code&amp;gt;bar&amp;lt;/code&amp;gt; и&lt;br /&gt;
* дефиницију функције &amp;lt;code&amp;gt;foo&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Напомене:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Уколико се текстуални едитор &amp;#039;&amp;#039;Ace&amp;#039;&amp;#039; не учита на исправан начин треба &amp;lt;u&amp;gt;освежити интернет страницу&amp;lt;/u&amp;gt; односно извршити &amp;#039;&amp;#039;refresh&amp;#039;&amp;#039; (претходно унети одговори на друга питања чувају се на серверу и неће бити изгубљени услед освежавања интернет странице).&lt;br /&gt;
* Кликом на дугме за проверу решења могуће је одмах, чак и пре предаје, испитати исправност решења. &amp;#039;&amp;#039;Penalty regime&amp;#039;&amp;#039; дефинише износ казне односно пенала за сваку проверу решења изражено у процентима максималног могућег броја поена за ово питање. У складу са вредношћу &amp;#039;&amp;#039;Penalty regime&amp;#039;&amp;#039; пенали за проверу решења редом износе 0%, 0%, 0%, 30%, 40%, 50% и 60%. Дакле, &amp;lt;strong class=&amp;quot;success&amp;quot;&amp;gt;само прве три провере решења не узрокују никакав пенал&amp;lt;/strong&amp;gt;, &amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;четврта провера решења узрокује пенал од 30%, пета пенал од 40%, шеста пенал од 50%, док свака провера решења почев од седме узрокује пенал од 60% (потпуно тачно решење које је проверавано седам или више пута биће оцењено са (100 - 60)% поена)&amp;lt;/span&amp;gt;.&lt;br /&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;
  int array[16];&lt;br /&gt;
} StructType;&lt;br /&gt;
&lt;br /&gt;
extern StructType bar(int a, int b, int c, int d);&lt;br /&gt;
&lt;br /&gt;
int foo(StructType param)&lt;br /&gt;
{&lt;br /&gt;
  StructType result = bar(2, param.array[4], 9, param.array[13]);&lt;br /&gt;
  return result.array[7] + result.array[11];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Системски софтвер]]&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
</feed>