consolidate all repos to one for archive

This commit is contained in:
2025-01-28 13:46:42 +01:00
commit a6610fbc7a
5350 changed files with 2705721 additions and 0 deletions

View File

@@ -0,0 +1,18 @@
all: build run
debug: buildd run clean
zip:
zip naloga.zip main.c Makefile podatki.c podatki.h
build: main.c podatki.c podatki.h
gcc -m32 -O3 main.c podatki.c -o demo_podatki
buildd: main.c podatki.c podatki.h
gcc -g -m32 main.c podatki.c -o demo_podatki -fsanitize=address -fno-omit-frame-pointer
run:
time ./demo_podatki
clean:
rm -f demo_podatki

View File

@@ -0,0 +1,11 @@
#include <stdlib.h>
#include <stdio.h>
#include "podatki.h"
int main(){
void* pomnilnik = rezerviraj(sizeof(uint16_t)*6);
vstavi(pomnilnik);
izpis(pomnilnik);
brisi(pomnilnik);
return 0;
}

View File

@@ -0,0 +1,46 @@
#include <stdio.h>
#include <stdlib.h>
#include "podatki.h"
uint16_t* rezerviraj(int velikostZlogi){
uint16_t* ret = malloc(velikostZlogi);
for (size_t i = 0; i < velikostZlogi/sizeof(uint16_t); i++)
{
ret[i] = 26132;
}
return ret;
}
void brisi(uint16_t* pomnilnik){
free(pomnilnik);
}
uint16_t* vstavi(uint16_t* pomnilnik){
uint8_t* point = (uint8_t*)pomnilnik;
*(char*)point = 'X';
point++;
*(char*)point = 'P';
point++;
*(char*)point = 'O';
point++;
*(float*)point = (22.0/7.0);
point += 4;
*(uint32_t*)point = 26132;
point += 4;
*(char*)point = '!';
}
void izpis(uint16_t* pomnilnik){
uint8_t* point = (uint8_t*)pomnilnik;
printf("%c\n", *(char*)point);
point++;
printf("%c\n", *(char*)point);
point++;
printf("%c\n", *(char*)point);
point++;
printf("%f\n", *(float*)point);
point+=4;
printf("%d\n", *(uint32_t*)point);
point+=4;
printf("%c\n", *(char*)point);
}

View File

@@ -0,0 +1,14 @@
#ifndef PODATKI
#define PODATKI
#include <stdint.h>
uint16_t* rezerviraj(int velikostZlogi);
void brisi(uint16_t* pomnilnik);
uint16_t* vstavi(uint16_t* pomnilnik);
void izpis(uint16_t* pomnilnik);
#endif

View File

@@ -0,0 +1,18 @@
all: build run
debug: buildd run clean
zip:
zip naloga.zip main.c Makefile pretvori.c pretvori.h
build: main.c pretvori.c pretvori.h
gcc -m32 main.c pretvori.c -o demo_pretvori
buildd: main.c pretvori.c pretvori.h
gcc -g -m32 main.c pretvori.c -o demo_pretvori -fsanitize=address -fno-omit-frame-pointer
run:
./demo_pretvori 80
clean:
rm -f demo_pretvori

View File

@@ -0,0 +1,18 @@
#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>
#include "pretvori.h"
int main(int argc, char *argv[])
{
if(argc < 2) {
printf("Ni dovolj argumentov");
return -1;
}
int unicode = preberiVhod(argv);
int utf8 = pretvoriZnak(unicode);
izpisiZnak(utf8);
return 0;
}

View File

@@ -0,0 +1,90 @@
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#include "pretvori.h"
int preberiVhod(char* cmd[])
{
unsigned int ret = 0;
int len = strlen(cmd[1]);
uint8_t hex = 0;
for (size_t i = 0; i < len; i++)
{
if(cmd[1][i] >= '0' && cmd[1][i] <= '9')
{
hex = cmd[1][i] - '0';
}
else if (cmd[1][i] >= 'A' && cmd[1][i] <= 'F')
{
hex = cmd[1][i] - 'A' + 10;
}
ret = ret << 4;
ret = ret | hex;
}
return ret;
}
int pretvoriZnak(int znak)
{
int ret = 0;
if(znak <= 0x7F)
{
return znak;
}
if(znak <= 0x7FF)
{
//110xxxxx10xxxxxx
ret = 0b1100000010000000;
uint32_t mask1 = 0b111111;
ret = ret | (znak & mask1);
uint32_t mask2 = 0b1111100000000;
ret = ret | ((znak << 2) & mask2);
return ret;
}
//if((znak >> 13) == 0b110)
if(znak <= 0xFFFF)
{
//1110xxxx10xxxxxx10xxxxxx
ret = 0b111000001000000010000000;
uint32_t mask1 = 0b111111;
ret = ret | (znak & mask1);
uint32_t mask2 = 0b11111100000000;
ret = ret | ((znak << 2) & mask2);
uint32_t mask3 = 0b11110000000000000000;
ret = ret | ((znak << 4) & mask3);
return ret;
}
return ret;
}
void izpisiZnak(int znak)
{
printf("UTF-8 binarno: ");
int firstZero = 0;
if ( znak <= 0xFF ) firstZero = 7;
else if (znak <= 0xFFFF ) firstZero = 15;
else if (znak <= 0xFFFFFF ) firstZero = 23;
for (int i = firstZero; i >= 0; i--)
{
// Z bitshiftanjem pogledam ali je na mestu 1 ce je dobim neko stevilo vecje od 1 in zapisem 1
int j = znak & (1 << i);
printf("%d", (j>0)?1:0);
if(i % 4 == 0) printf(" ");
}
printf("\nUTF-8 hex: %X", znak);
printf("\n");
}

View File

@@ -0,0 +1,8 @@
#ifndef PODATKI
#define PODATKI
int preberiVhod(char* cmd[]);
int pretvoriZnak(int znak);
void izpisiZnak(int znak);
#endif