Selection from Susta:Computer System Structures & John Loomis: Computer organization & M.Mudawar:Computer Architecture & Assembly Language. Cvičení 1.

Podobné dokumenty
Architektura počítačů

Číselné soustavy v mikroprocesorové technice Mikroprocesorová technika a embedded systémy

Architektury počítačů

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY. Stručný úvod do programování v jazyce C 2.díl. České vysoké učení technické Fakulta elektrotechnická

Struktura a architektura počítačů (BI-SAP) 5

Ahoj mami. Uložení dat v počítači. Příklady kódování dat. IAJCE Přednáška č. 4

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické

Mikroprocesorová technika (BMPT)

Y36SAP. Osnova. Číselné soustavy a kódy, převody, aritmetické operace Y36SAP Poziční číselné soustavy a převody.

Architektura počítačů Logické obvody

Architektura počítačů Logické obvody

Základní principy zobrazení čísla Celá čísla s pevnou řádovou čárkou Zobrazení reálných čísel Aritmetika s binárními čísly

PJC Cvičení #2. Číselné soustavy a binární reprezentace proměnných

Struktura a architektura počítačů

Jazyk VHDL zápis čísel, znaků a řetězců. Jazyk VHDL základní datové typy a operátory. Kurz A0B38FPGA Aplikace hradlových polí

Algoritmizace a programování

Algoritmizace a programování

IUJCE 07/08 Přednáška č. 1

Digital Electronics. Jaroslav Bernkopf. 17 October 2008

SHIFTIN sclk, sdata, mode, (data{/ bits} {, data {/ bits},...}) SPIIN sclk, sdata, mode, (data{/ bits} {, data {/ bits},...})

Výrazy, operace, příkazy

Čísla, reprezentace, zjednodušené výpočty

Struktura a architektura počítačů

Číselné soustavy. Ve světě počítačů se využívají tři základní soustavy:

v aritmetické jednotce počíta

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

5 Přehled operátorů, příkazy, přetypování

C2115 Praktický úvod do superpočítání

Opakování programování

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

Principy počítačů I Reprezentace dat

Compression of a Dictionary

Čísla a číselné soustavy.

MQL4 COURSE. By Coders guru -4 Operace & Výrazy

Část I. Část 1 Základy programování v C. Přehled témat. Základy programování v C. Jazyk C

Algoritmizace a programování

Základy programování v C

ČÍSELNÉ SOUSTAVY PŘEVODY

Zobrazení dat Cíl kapitoly:

Jazyk C# a platforma.net

Úvod do programovacích jazyků (Java)

Semestrální práce z předmětu. Jan Bařtipán / A03043 bartipan@studentes.zcu.cz

3 Jednoduché datové typy Interpretace čísel v paměti počítače Problémy s matematickými operacemi 5

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu

Algoritmy a datové struktury

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Základní datové typy, proměnné - deklarujeme předem - C je case sensitive rozlišuje malá a velká písmena v názvech proměnných a funkcí

Reprezentace dat v informačních systémech. Jaroslav Šmarda

Základy programování v C

VÝRAZY výrazy = operandy prokládané operátory, vyhodnocované podle priority operátorů

Informatika Datové formáty

Architektura počítačů

Principy počítačů. Prof. RNDr. Peter Mikulecký, PhD.

- speciální symboly + - * / =., < > <> <= >= a další. Klíčová slova jsou chráněnými útvary, které nelze použít ve významu identifikátorů.

Číselné vyjádření hodnoty. Kolik váží hrouda zlata?

Číselné soustavy. Prvopočátky. Starověký Egypt a Mezopotámie. Již staří Římané

Čísla v počítači Výpočetní technika I

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty

Násobení. MI-AAK(Aritmetika a kódy)

Struktura a architektura počítačů (BI-SAP) 6

C++ Akademie SH. 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory. Michal Kvasni ka. 20. b ezna Za áte níci C++

Komunikační protokol snímače rel. vlhkosti SV-xxx-x

Zápis programu v jazyce C#

LOGOMANUÁL / LOGOMANUAL

Bitové operátory a bitová pole. Úvod do programování 2 Tomáš Kühr

Operátory, výrazy. Tomáš Pitner, upravil Marek Šabo

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

2. Entity, Architecture, Process

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty.

- tzv. standardní vstupní a výstupní proud (input / output stream)

LEKCE 6. Operátory. V této lekci najdete:

Přednáška 2: Čísla v počítači. Práce s počítačem. Číselné soustavy. Převody mezi soustavami. Aritmetické operace. Uložení čísel v paměti počítače

x86 assembler and inline assembler in GCC

Výrazy, operace, příkazy

Programovací jazyk C++ Hodina 1

Data, výrazy, příkazy

Pokročilá algoritmizace amortizovaná složitost, Fibonacciho halda, počítačová aritmetika

Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h>

Souhrn Apendixu A doporučení VHDL

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

Výrazy a operátory. Operátory Unární - unární a unární + Např.: a +b

Číselné soustavy. Binární číselná soustava

Principy cpypočítačůčů a operačních systémů

Čísla, reprezentace, zjednodušené výpočty

Java reprezentace dat, výrazy. A0B36PR1-Programování 1 Fakulta elektrotechnická České vysoké učení technické

Principy počítačů a operačních systémů

3. Aritmetika nad F p a F 2

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

IUJCE Přednáška č. 1. programování v C na vyšší úrovni základy objektově orientovaného programovaní v (C++, C#)

Vícebytová celočíselná aritmetika

Datové typy v Javě. Tomáš Pitner, upravil Marek Šabo

External ROM 128KB For Sinclair ZX Spectrum

BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky

Formátové specifikace formátovací řetězce

BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky

Algoritmizace a programování

A51 MACRO ASSEMBLER POKUSNY PROGRAM DATE 10/3/007 PAGE 1

Aritmetické operace a obvody pro jejich realizaci

Tabulka 1 Stav členské základny SK Praga Vysočany k roku 2015 Tabulka 2 Výše členských příspěvků v SK Praga Vysočany Tabulka 3 Přehled finanční

Evoluční algoritmy. Podmínka zastavení počet iterací kvalita nejlepšího jedince v populaci změna kvality nejlepšího jedince mezi iteracemi

Transkript:

Selection from Susta:Computer System Structures & John Loomis: Computer organization & M.Mudawar:Computer Architecture & Assembly Language Cvičení 1. Version: 1.1 ČVUT-FEL in Prague,

Byte, Nibble, Bit MSB - most significant bit or high-order bit LSB - least significant bit or right-most bit LSB - least significant byte 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 MSB - most significant byte high word * double word * high byte low word * high nibble low byte * Velikost slova "word" není standardem, ale vyjádřením přirozené jednotky architektury počítače; low nibble 2

Eng: Hexadecimal or Hex aka Base Sixteen cz: Hexadecimální čísla 4 bity se kódují jako 1 hex číslice pro stručný zápis binárních čísel 16 4 16 3 16 8 A F 8 2 16 A 1 16 F 0 Napište 11110000 jako hex a 0 F 0 1000 1010 1111 Přidána 0 pro zachování číselného typu h e x binary h e x binary 0 1 2 3 4 5 6 7 0000 0001 0010 0011 0100 0101 0110 0111 8 9 A B C D E F 1000 1001 1010 1011 1100 1101 1110 1111 4

Binary Encoded Unsigned Integers Každá pozice reprezentuje kvantitu; symbol na dané pozici udává přírůstek kvantity. Báze 10 (decimal) Báze 2 (binary) 10 4 10 3 10 2 2 4 2 3 2 2 5 2 3 10 1 10 0 1 0 1 2 1 2 0 O: Kolik? + = 4 + 1 = 5 a n 2 n 0 1 1 2 2 4 3 8 4 16 5 32 6 64 7 128 8 256 9 512 10 1,024 11 2,048 12 4,096 13 8,192 14 16,384 15 32,768 16 65,536 5

Desítkové číslo: 13 b) dělením 2 13/2 = 6 zbytek 1 6/2 = 3 zbytek 0 3/2 = 1 zbytek 1 1/2 = 1 zbytek 1 dělením 2 provádíme logický posun čísla doprava LSB MSB Převod čísel bez znaménka a) postupným odečítáním mocnin 2 postupně od největší k nejmenší 0 32 32 16 16 8 8 4 4 2 2 1 1 32=2 5 větší 0 0 16=2 4 32 16 8 4 2 1 větší 0 0 1 8=2 3 0 32 32 0 1 1 16 16 8 8 4 4 2 2 1 ok, 13-8=5 4=2 2 =8+4=12 ok, 5-4=1 0 0 1 1 2=2 1 0 0 1 1 0 1 1=2 0 32 16 8 4 2 1 =8+4+1=13 1-1=0 1 větší než 1 a 6

Specialní kódy Dec. Binary 8 4 2 1 Octal 421 Hex (VHDL syntax) BCD binary / hex 0 0000 00 x 0 0000 0000 = x"00" 1 0001 01 x 1 0000 0001 = x"01" 2 0010 02 x 2 0000 0010 = x"02" 3 0011 03 x 3 0000 0011 = x"03" 4 0100 04 x 4 0000 0100 = x"04" 5 0101 05 x 5 0000 0101 = x"05" 6 0110 06 x 6 0000 0110 = x"06" 7 0111 07 x 7 0000 0111 = x"07" 8 1000 10 x 8 0000 1000 = x"08" 9 1001 11 x 9 0000 1001 = x"09" 10 1010 12 x A 0001 0000 = x"10" 11 1011 13 x B 0001 0001 = x"11" 12 1100 14 x C 0001 0010 = x"12" 13 1101 15 x D 0001 0011 = x"13" 14 1110 16 x E 0001 0100 = x"14" 15 1111 17 x F 0001 0101 = x"15" 7

Převod binární na BCD BCD (Binary-coded decimal) - zjednodušuje číselné displeje 35 jako BCD = x"3 5" =0011 0101 0011 0101 35 binárně= x"23" = 10 0011 8

Reprezentace čísel bez znaménka Předpokládejme 4bitový počítač Unsigned 4-bit numbers - 4bitové číslo bez znaménka +12 +13 +14 1101 +15 +0 1111 0000 1110 0001 +1 0010 1100 0011 +2 +3 MSB 0 100 = + 4 +11 +10 1011 0100 1010 +9 1001 0110 1000 0111 +8 +7 0101 +6 Nepřehledné odčítání +5 +4 1 100 = 12 MSB [Seungryoul Maeng:Digital Systems] 9

Způsoby uložení vícebytových čísel v paměti Hex číslo: 1234567 Big Endian - downto 0x100 0x101 0x102 0x103 01 23 45 67 Little Endian - to 0x100 0x101 0x102 0x103 67 45 23 01 Little-Endien pochází z knihy Gulliverovy cesty, Jonathon Swift 1726, v níž označovalo jednu ze dvou znepřátelených frakcí Lilliputů. Její stoupenci jedli vajíčka od užšího konce k širšímu, zatímco Big Endien postupovali opačně. A válka nedala na sebe dlouho čekat Pamatujete si, jak válka skončila? 10

Reprezentace čísel se znaménkem Excess-K, offset binary or biased representation (cz: Aditivní kód, kód s posunutou nulou) 7-8 5 6 1101 1111 1110 0000 0001-7 0010-6 + 4 1100 0011-5 0 100 = - 4 3 1011 0100-4 1 100 = + 4 2 1010 1001 1 1000 0111 0110 0101-2 -3-0 -1 Jedna reprezentace 0, možno zvolit si ofset, a tím i počet záporných čísel - často užívaný při zpracování signálů Běžné aritmetické jednotky neumí s kódem počítat 11

Reprezentace čísel se znaménkem Znaménko a hodnota, tzv. přímý kód. "Sign and Magnitude Representation" -4-5 -6 1101 1100-7 1111 1110 +0 0000 0001 +1 0010 0011 +2 +3 + 0 100 = + 4-3 -2 1011 1010-1 1001 1000-0 0111 +7 Nevýhoda: při aritmetických se jinak pracuje se znaménkovým bitem a jinak s hodnotou. 2 různá vyjádření nuly. 0110 0100 0101 +6 +5 +4 1 100 = - 4 - [Seungryoul Maeng:Digital Systems] 12

Reprezentace čísel se znaménkem Ones Complement (cz: Jedničkový doplněk, inverzní kód) -3-2 -1 1101 1100-0 1111 1110 +0 0000 0001 +1 0010 0011 +2 +3 + 0 100 = + 4-4 -5 1011 1010-6 1001 1000-7 0111 +7 0110 0100 0101 +6 +5 Dvě reprezentace 0! Obtížnější sčítání +4 1 011 = - 4-13

Twos Complement (cz: Dvojkový doplněk, doplňkový kód) Reprezentace čísel -4-5 -3-6 -2 1101 1100 1011 1010-7 1111 1110 1001-1 1000-8 +0 0000 0001 0111 +7 0110 +1 0010 0011 0100 0101 +6 +2 +3 +4 +5 + 0 100 = + 4 1 100 = - 4 - Jedna reprezentace 0, stejná aritmetická jednotka jako pro čísla bez znaménka Záporných čísel máme o jedno více 14

Basic Steps of C Compiler stdio.h string.h code.c code.h C preprocessor modifies source code by substitutions code.tmp optional parts gcc C-compiler passes 1 to M optional parts metacode Compiler passes M to N: Optimization of metacode system libraries relative object module Linker Loader NIOS processor 15 15

C primitive types Size Java C C alternative Range 1 boolean any integer, true if!=0 BOOL (1 0 to!=0 8 byte char (2 signed char 128 to +127 8 unsigned char BYTE (1 0 to 255 16 short int signed short 32768 to +32767 16 unsigned short 0 to + 65535 32 int int signed int -2^31 to 2^31-1 32 unsigned int DWORD (1 0 to 2^32-1 64 long long long int -2^63 to 2^63-1 64 unsigned long LWORD (1 0 to 2^64-1 1) In many implementations, it is not a standard C datatype, but only common custom for user's "#define" macro definitions, see next slides 2) Default is signed but it is best to specify. 16

Definition of BYTE and BOOL // by substitution rule no ; and no type check #define BYTE unsigned char #define BOOL int // by introducing new type, ending ; is required typedef unsigned char BYTE; typedef int BOOL; C language has no strict type checking #define ~ typedef, but typedef is usually better integrated into compiler. 17

Defining a Parameterized Macro #define PRINT_MEM(a) print_mem((unsigned char*)&(a), sizeof(a)) Similar to a C function, preprocessor macros can be defined with a parameter list; parameters are without data types. Syntax: #define MACRONAME(parameter_list) text No white space before (. 18

Examples: #define MAXVAL(A,B) ((A) > (B))? (A) : (B) #define PRINT(e1,e2) printf( %c\t%d\n,(e1),(e2)); #define putchar(x) putc(x, stdout) #define PRINT_MEM(a) print_mem((unsigned char*)&(a), sizeof(a)) 19

Side-effects!!! Example: #define PROD1(A,B) A * B Wrong result: PROD1(1+3,2) 1+3 * 2 Improved example with () #define PROD2(A,B) (A) * (B) PROD2(1+3,2) (1+3) * (2) 20

Sign Extension Example in C short int x = 15213; int ix = (int) x; short int y = -15213; int iy = (int) y; Decimal Hex Binary x 15213 3B 6D 00111011 01101101 ix 15213 00 00 C4 92 00000000 00000000 00111011 01101101 y -15213 C4 93 11000100 10010011 iy -15213 FF FF C4 93 11111111 11111111 11000100 10010011 21

Bitwise Logic Instructions AND OR XOR left shift right shift NOT & ^ << >> ~ Examples: n = n & 0xF0; n = n 0xFF00; n = n ^ 0x80; n = 0xFF << 4; n = n >> 4 n = ~0xFF; In C, operator << usually behaves as logical for unsigned operand and as arithmetic shift for signed operands. 22

Pointer Operators & (address operator) Returns the address of its operand Example int y = 5; int *yptr; yptr = &y; yptr points to y // yptr gets address of y yptr yptr y 5 address of y is value of yptr 500000 600000 y 600000 5 23

Pointer Operators & (address operator) Returns the address of its operand * dereference address Get operand stored in address location * and & are inverses (though not always applicable) Cancel each other out *&myvar == myvar and &*yptr == yptr 24

Size of Pointer in C-kod int * ptri; char * ptrc; double * ptrd; ptri ptri+1 - *ptrx ptrx[0] *(ptrx+1) ptrx[1] *(ptrx+n) ptrx[n] *(ptrx-n) ptrx[-n] ptrc ptrc+1 ptrd nr1 = sizeof (double); nr2 = sizeof (double*); nr1!= nr2 ptrd+1 25 +