(loeng3-ohtlikud_koodiloigud)

Seotud dokumendid
HAJUSSÜSTEEMID HAJUSSÜSTEEMID Kaugprotseduurid IDL kompileerimine ONCIDLnäide CORBAIDLnäide MIDLnäide DCERPCmuidomadusi XML-RPC JSON-RPC REST document

OPERATSIOONISÜSTEEMIDE EHITUS Ülevaade Protsessi mõiste Protsesside planeerimine Operatsioonid protsessidega Protsessihaldus Protsesside koostöö Prots

I Generaatori mõiste (Java) 1. Variantide läbivaatamine Generaator (ehk generaator-klass) on klass, milles leidub (vähemalt) isendimeetod next(). Kons

AWK Aho Weinberger Kernighan struktuurse teksti töötlemise keel rikkalikult tekstitöötlusvahendeid omal alal suhteliselt lihtne ja kiiresti realiseeri

Funktsionaalne Programmeerimine

Failiotsing: find paljude võimalustega otsingukäsk find kataloog tingimused kataloog - otsitakse sellest kataloogist ja tema alamkataloogidest tingimu

Peafail3_2.dvi

Scala ülevaade 1 Meetodid, muutujad ja väärtused. Süntaks 2 Lihtsad tüübid ja väärtused. 3 OOP, case-klassid ja mustrisobitus. 4 Puhta Scala väärtusta

untitled

loeng2

Automaatjuhtimise alused Automaatjuhtimissüsteemi kirjeldamine Loeng 2

PowerPointi esitlus

MTAT Operatsioonisüsteemid - Turvalisus

Infix Operaatorid I Infix operaatorid (näiteks +) ja tüübid (näiteks ->) kirjutatakse argumentide vahele, mitte argumentide ette. Näiteks: 5 + 2, 2*pi

Matemaatilised meetodid loodusteadustes. I Kontrolltöö I järeltöö I variant 1. On antud neli vektorit: a = (2; 1; 0), b = ( 2; 1; 2), c = (1; 0; 2), d

Neurovõrgud. Praktikum aprill a. 1 Stohhastilised võrgud Selles praktikumis vaatleme põhilisi stohhastilisi võrke ning nende rakendust k

PowerPointi esitlus

PowerPoint Presentation

Lexus_pricelist_03_2015_EE

Andmeturve

Häälestusutiliit Kasutusjuhend

Kerala State Haj Committee HAJ 2014 Flight Manifest FLIGHT NO. SV-5731 DATE: 14/09/2014 TIME: 16:35 RETURN FLIGHT NO: SV-5764 DATE: Cov No

Operatsioonisüsteemide ehitus

CPA4164 USB 2.0 kõrgekvaliteediline videoadapter KASUTUSJUHEND 1. PEATÜKK - Ülevaade 1.1 Tutvustus CPA4164 USB 2.0 videoadapter võimaldab teil arvutis

PHP

Microsoft Word - essee_CVE ___KASVANDIK_MARKKO.docx

X Window System tuntud kui: X11 X X-Windows akendussüsteem/akendesüsteem rastergraafikat toetavatele ekraanidele UNIX-maailmas väga levinud mitmesugus

MTAT Operatsioonisüsteemid - Turvalisus

Algoritmid ja andmestruktuurid

Loeng05

Microsoft Word - ref - Romet Piho - Tutorial D.doc

Microsoft PowerPoint - Joogivesi Tartu regioonis nov08

Microsoft Word - Referaat.docx

Tallinna Ülikool Digitehnoloogiate instituut JavaFX rakenduste kujundamine CSS abil Seminaritöö Autor: Hendrik Spiegelberg Juhendaja: Jaagup Kippar Au

Estonian_TBW-106UB(V1).cdr

DNS teenus teoorias ja praktikas Autor Siim Adamson ITK Autor: Siim Adamson ITK

Print\A4\RaceLandscape.pmt

MINIMED 640G JA NIGHTSCOUT 640G pumbaga Nightscouti kasutamiseks on vaja: 1. Telefoni, mis töötaks info kogujana. Telefonil peab olema USB OTG ühendus

PÄRNU TÄISKASVANUTE GÜMNAASIUM ESITLUSE KOOSTAMISE JUHEND Pärnu 2019

SQL

Mining Meaningful Patterns

Sissejuhatus GRADE metoodikasse

DJI GOGGLES Kiirjuhend V1.0

EST_QIG_TEW-424UB(V3.1.1).cdr

Pealkiri

DIGITAALTEHNIKA DIGITAALTEHNIKA Arvusüsteemid Kümnendsüsteem Kahendsüsteem Kaheksandsüsteem Kuueteistkü

Microsoft PowerPoint - IRZ0020_praktikum4.pptx

TARTU ÜLIKOOL Arvutiteaduse instituut Informaatika õppekava Mirjam Iher Nõrgima eeltingimuse staatiline analüüs pinukeeltele Bakalaureusetöö (9 EAP) J

MOOCi „Programmeerimise alused“ ülesannete lahenduste analüüs

Praks 1

Kuidas hoida tervist töökohal?

Praks 1

Loeng05

VL1_praks2_2009s

Control no:

lcs05-l3.dvi

Tiia Salm 2011 Online kirjastus CALAMÉO Calameo kujutab endast on-line kirjastust, mis võimaldab oma dokumente avaldada e-raamatuna tasuta. Failid (Pd

(Tõrked ja töökindlus \(2\))

SAF 7 demo paigaldus. 1.Eeldused SAF 7 demo vajab 32- või 64-bitist Windows 7, Window 8, Windows 10, Windows Server 2008 R2, Windows Server 2012, Wind

EE7093 Notebook PC kasutusjuhend Veebruar 2012

Remote Desktop Redirected Printer Doc

Automaadid, keeled, translaatorid

SQL

Slide 1

1 Keskkonnamõju analüüs Koostajad: Koostamise aeg: metsaparandusspetsialist Madi Nõmm algus: bioloogilise mitmekesisuse spetsialist Toomas

Microsoft Word - polkaudio 2010 hinnakiri

Welcome to the Nordic Festival 2011

E-arvete juhend

SPORTident Air+

Tehniline andmeleht Sadulventiilid (PN 16) VRG 2 2-tee ventiil, väliskeermega VRG 3 3-tee ventiil, väliskeermega Kirjeldus Ventiilid on kasutatavad ko

JABRA STYLE Kasutusjuhend jabra.com/style

Lenovo IdeaPad Kasutusjuhend Tutvuge enne arvuti kasutamist oluliste ohutus- ning kasutusjuhistega.

X Window System tuntud kui: X11, X, X-Windows akendussüsteem/akendesüsteem rastergraafikat toetavatele ekraanidele UNIX-maailmas väga levinud mitmesug

Microsoft Word - Iseseisev töö nr 1 õppeaines.doc

(Microsoft PowerPoint - Kas minna \374heskoos v\365i j\344\344da \374ksi - \334histegevuse arendamise t\344nane tegelikkus Rando V\344rni

Võistlusporgrammeerimise õpik on loodud Tartu Ülikooli teaduskooli ja arvutiteaduse instituudi koostöös.. Õpiku loomine sai alguse soovist pakkuda kõi

Euroopa Liidu Nõukogu Brüssel, 20. juuli 2015 (OR. en) 10173/15 ADD 1 PV/CONS 36 ECOFIN 531 PROTOKOLLI KAVAND Teema: Euroopa Liidu Nõukogu istun

Funktsionaalne Programmeerimine

Tarvikud _ Puhurid ja vaakumpumbad INW külgkanaliga Air and Vacuum Components in-eco.co.ee

Print\A4\RaceLandscape.pmt

Microsoft Word - Errata_Andmebaaside_projekteerimine_2013_06

VRG 2, VRG 3

Andmed arvuti mälus Bitid ja baidid

Müük (Microsoft Dynamics AX (Axapta) tarkvara) Paigaldusjuhend bifree.ee qlik.com

Programmeerimiskeel APL Raivo Laanemets 17. mai a.

Lenvo ideapad IKB

REQUEST FOR AN ASSIGNMENT OF LEI (fond) LEI KOODI MÄÄRAMISE TAOTLUS (fond) 1. FUND DATA / FONDI ANDMED: Legal Name / Ametlik nimi: Other Fund Names /

Directo ja Omniva arvekeskuse (endine EAK ehk Eesti E-arvete Keskus) liidestamine

IMO 2000 Eesti võistkonna valikvõistlus Tartus, aprillil a. Ülesannete lahendused Esimene päev 1. Olgu vaadeldavad arvud a 1, a 2, a 3,

Väljavõte:

#include <stdio.h> int main (void) uint8_t arr[] = 0x11, 0x22 uint16_t *ptr; ptr = (uint16_t*)&arr[0]; printf ("arr: 0x%02x, 0x%02x\n", arr[0], arr[1]); printf ("ptr: 0x%04x\n", *ptr); /* vigane pointeri tüübi muutmine */ ptr = (uint16_t*)&arr[1]; printf ("ptr: 0x%04x\n", *ptr); /* väljund */ arr: 0x11, 0x22 ptr: 0x1122 ptr: 0x2200

/* maksimaalne i väärtus on 2^16 */ uint16_t i; for (i = 0; i < 0xffff; i++) if (PORTA & (1 << PA3)) else if (PORTB & (1 << PB4)) /*... veel mingi kood... */ if (i == 0xffff) puts ("ei olnud aktiivsust"); /* maksimaalne i väärtus on 2^16 */ uint16_t i; for (i = 0; i <= 0xffff; i++) if (PORTA & (1 << PA3)) else if (PORTB & (1 << PB4)) /*... veel mingi kood... */ if (i == 0xffff) puts ("ei olnud aktiivsust");

/* lõplik thread */ while (1) if (PORTA & (1 << PA3)) else if (PORTB & (1 << PB4)) /* mitteaktiivne 10 ajaühikut */ SLEEP (10); /*... veel mingi kood... */ puts ("PA3 või PB4 oli aktiivne"); /* lõputu thread */ while (1) /* mitteaktiivne 10 ajaühikut */ SLEEP (10); if (!(PORTA & (1 << PA3))) continue; else if (!(PORTB & (1 << PB4))) continue; puts ("PA3 ja PB4 olid aktiivsed"); /*... veel mingi kood... */ #include <stdio.h> #include <stdlib.h> typedef struct fp_struct uint8_t num; uint8_t (*func) (uint8_t *p1); struct fp_struct *next; } FP_STRUCT; uint8_t fn_1 (uint8_t *p1) printf ("fn_1\t[p1 == %u]\t", *p1); return (*p1) + 1; uint8_t fn_2 (uint8_t *p1) printf ("fn_2\t[p1 == %u]\t", *p1); return (*p1) + 10; int main (void) uint8_t i, rc; FP_STRUCT *fn, *fn_last, *fn_first; fn = malloc (sizeof (FP_STRUCT)*2); fn_first = fn; fn->func = fn_1; fn->num = 0; fn_last = fn; fn++; fn_last->next = fn; fn->func = fn_2; fn->num = 1; fn->next = fn_first; for (i = 0; i < 5; i++) rc = fn->func (&i); printf ("fn: %u; rc: %u\n", fn->num, rc); fn = fn->next; free (fn_first); /* väljund */ fn_2 [p1 == 0] fn = 1; rc = 10 fn_1 [p1 == 1] fn = 0; rc = 2 fn_2 [p1 == 2] fn = 1; rc = 12 fn_1 [p1 == 3] fn = 0; rc = 4 fn_2 [p1 == 4] fn = 1; rc = 14

#include <stdio.h> #include <stdlib.h> static void f1 (void); int main (void) uint8_t i; uint8_t j; void *label_2 = &f1; for (i = 0, j = 0; i < 7; i++) printf ("i = %u, j = %u\n",i,j); if (i == 2) goto label_1; if (i == 5) goto *label_2; j++; continue; label_1: puts ("label_1"); static void f1 (void) puts ("function f1"); exit (0); /*************************************/ Programmi väljund i = 0, j = 0 i = 1, j = 1 i = 2, j = 2 label_1 i = 3, j = 2 i = 4, j = 3 i = 5, j = 4 function f1

#include <stdio.h> #include <sys/time.h> #define LOOP_MAX_VAL 0xfffffff static uint8_t val; static long int get_tdiff (struct timeval t1, struct timeval t2); int main (void) struct timeval start; struct timeval end; uint32_t i; static long int get_tdiff (struct timeval t1, struct timeval t2) long int v1 = (t1.tv_sec * 1000000 + t1.tv_usec); long int v2 = (t2.tv_sec * 1000000 + t2.tv_usec); return (v2 - v1); gettimeofday (&start, NULL); /* intuitiivne variant */ for (i = 0; i < LOOP_MAX_VAL; i++); gettimeofday (&end, NULL); printf ("%ld us\n", get_tdiff (start,end)); gettimeofday (&start, NULL); /* korrektne variant */ for (i = 0; i < LOOP_MAX_VAL; i++) asm volatile ("nop"); gettimeofday (&end, NULL); printf ("%ld us\n", get_tdiff (start,end)); val = (uint8_t)(0xff & end.tv_sec); /* Optimeerimistasemega O0 kompileeritud * programm */ 9440907 us 4414831 us /* Optimeerimistasemega O3 kompileeritud * programm */ 0 us 712646 us #include <stdio.h> #include <sys/time.h> #define LOOP_MAX_VAL 0xfffffff static uint8_t val; static long int get_tdiff (struct timeval t1, struct timeval t2); int main (void) struct timeval start; struct timeval end; volatile uint32_t iv; uint32_t i; gettimeofday (&start, NULL); /* intuitiivne variant */ for (iv = 0; iv < LOOP_MAX_VAL; iv++); gettimeofday (&end, NULL); printf ("%ld us\n", get_tdiff (start,end)); gettimeofday (&start, NULL); /* korrektne variant */ for (i = 0; i < LOOP_MAX_VAL; i++) asm volatile ("nop"); gettimeofday (&end, NULL); printf ("%ld us\n", get_tdiff (start,end)); val = (uint8_t)(0xff & end.tv_sec); /* Optimeerimistasemega O0 kompileeritud * programm */ 9703093 us 4418082 us /* Optimeerimistasemega O3 kompileeritud * programm */ 2361333 us 594329 us

/* alternatiiv variant */ uint8_t val = PORTB; for (i = 0; i < LOOP_MAX_VAL; i++) if (val!= PORTB)

/* mitteoptimaalne */ uint32_t crc32_update (uint32_t crc, const uint8_t data) uint8_t i; crc = crc ^ data; for (i = 0; i < 8; i++) if (crc & 0x01) crc = (crc >> 1) ^ 0xEDB88320; else crc = crc >> 1; return crc; /* optimaalne */ uint32_t crc32_update (uint32_t crc, const uint8_t data) uint8_t i = 8; crc = crc ^ data; for (; i; i--) if ((uint8_t)crc & 0x01) crc = (crc >> 1) ^ 0xEDB88320; else crc = crc >> 1; return crc;

uint8_t test_switch (uint8_t a) switch (a) case 'A': case 'B': return 1; default: return 255; /* if/else lausetega sama funktsioon */ uint8_t test_if (uint8_t a) if (a == 'A') else if (a == 'B') return 1; else return 255;