---
# System prepended metadata

title: Lista 6
tags: [systemy komputerowe]

---

# Lista 6
###### tags: `systemy komputerowe`

### Zad 1
* 1. cpp czyli c preprocessor: tu: zaciągnięcie zainkludowanych bibliotek, poza tym: rozwijanie makr, conditional compilation; po wszystkim zostają usunięte wszystkie dyrektywy preprocesora
  2. polecenie gcc z flagą -S zatrzymuje się zaraz po skończeniu kompilowania, asembler "nie pracuje" nad kodem. Plikiem wyjściowym jest kod assemblerowy, z rozszerzeniem .s.
  3. assembler tłumaczy zawartość .s na kod maszynowy i tworzy plik obiektowy .o
  4. gcc kompiluje main.o i tworzy plik wykonywalny
* z biblioteki <stdio.h>
* zawiera kod asseblerowy

  global:
  
	.type	global, @object

	set_global:
    
	.type	set_global, @function

	main:
    
	.type	main, @function
* objdump -t main.o

		global: 0...04
		set_global: 0...013
* 	objdump -h main.o
 	
	objdump -h main

	main.o: text i data mają adres zero, ponieważ nie są załadowane nigdzie w pamięci
    
	main: text i data mają niezerowy adres, są załadowane do pamięci
    
    data: 0...0201000
    
    text: 0...0540
### Zad 2


| symbol   | adres | typ    | rozmiar | nazwa i numer sekcji |
| -------- | ----- |:------ |:------- |:-------------------- |
| swap.c   | 0     | local  | 0       | ABS                  |
| bufp1    | 0     | local  | 8       | [4] .bss             |
| incr     | 0     | local  | 22      | [1] .text            |
| count    | 8     | local  | 4       | [4] .bss             |
| bufp0    | 0     | global | 8       | [5] .data.rel        |
| buf      | 0     | global | 0       | UND                  |
| intvalue | 0     | global | 4       | [3]    .data         |
| swap     | 16    | global | 77      | [1] .text            |

.strtab - zawiera stringi 

.shstrtab - zawiera nazwy sekcji

opisy sekcji
https://refspecs.linuxbase.org/LSB_3.0.0/LSB-PDA/LSB-PDA/specialsections.html
### Zad 3
gcc -Og oof.c rab.c -o zad3

