Programare in limbaj de asamblare - PowerPoint PPT Presentation

About This Presentation
Title:

Programare in limbaj de asamblare

Description:

Programare in limbaj de asamblare Instructiuni MMX Tehnologia MMX MMX Multi-Media eXtension Obiectiv: cresterea vitezei de prelucrare a informatiilor audio, video ... – PowerPoint PPT presentation

Number of Views:53
Avg rating:3.0/5.0
Slides: 26
Provided by: gyuszi
Category:

less

Transcript and Presenter's Notes

Title: Programare in limbaj de asamblare


1
Programare in limbaj de asamblare
  • Instructiuni MMX

2
Tehnologia MMX
  • MMX Multi-Media eXtension
  • Obiectiv
  • cresterea vitezei de prelucrare a informatiilor
    audio, video, grafica, etc.
  • Achizitia, prelucrarea si generarea in timp-real
    a informatiilor multimedia
  • Dezvoltarea de aplicatii multimedia la care
    timpul de executie (reactie) este critic
  • Componente MMX
  • Registre MMX (8), MM0 .. MM7 64biti/registru
  • Instructiuni MMX (57)
  • Tipuri de date impachetate
  • Unitate de executie MMX

3
Tehnologia MMX caracteristici generale
  • Ideea de baza
  • Executia in paralel a unei instructiuni pe un set
    de date
  • Paralelism de tip SIMD Single Instruction
    Multiple Data
    (simulare)
  • Tehnologia MMX este eficienta daca
  • Datele au o structura de tip vector, matrice, sau
    o alta structura cu grad ridicat de regularitate
  • Aceeasi secventa de operatii se aplica in mod
    identic pe fiecare element al structurii
  • Aceeasi secventa de prelucrare se executa de un
    numar foarte mare de ori (ex pe un milion de
    pixeli ai unei imagini)
  • Timpul de executie este critic

4
Tipuri de date MMX
Octeti impachetati (Packed byte) 8 octeti, 64
biti

63
8 7 0
Cuvinte impachetate (Packed word) 4 cuvinte, 64
biti
Dublu-cuvinte impachetate (Packed dword) 2
dcuvinte, 64 biti
Cuadruplu-cuvant (Quadword) 1 qcuvant, 64 biti
5
Sintaxa instructiunilor MMX
  • ltinstructiunegt ltmnemonicagt
    ltdestinatiegt,ltsursagt
  • ltmnemonicagtPltoperatiegtltsufixegt
  • ltsufixegt USSSSBWDQBWDQ
  • Sufixele indica tipul datelor si modul de
    efectuare a a operatiilor aritmetice
  • US unsigned, saturation
  • S, SS signed, saturation (in lipsa
    wrapearound)
  • B, W, D, sau Q byte, word, dword, qword daca
    apar 2 litere atunci sursa este de tipul primei
    litere iar destinatia de tipul celei de a doua
    litere
  • Exemplu
  • paddusw MM4, mem1
  • psubusb MM4, mem1

6
Operatii aritmetice cu Saturare si cu Intoarcere
(wraparound)
  • Tehnici de solutionare a depasirilor de
    capacitate (superioara sau inferioara)
  • Prin intoarcere
  • Prin saturare
  • Exemplul 1 operatii cu numere fara semn
    (octeti)
  • Intoarcere Saturare
  • F0h20h 10h F0h20h FFh
  • 80h -A0h 20h 80h -A0h00h
  • Exemplul 2 operatii cu numere cu semn (octeti)
  • 1271 - 127 1271 127
  • - 128 1 127 - 128 1 -128
  • (simulare)

7
Operatii aritmetice cu saturare
  • Exemplul 3 paddsw
  • 7f381707 7fff - saturare
  • Exemplul 4 paddusw
  • 7f381707 963f - nu este saturare

7 f 3 8

1 7 0 7
7 f f f
Cu semn
Fara semn
9 6 3 f
8
Instructiunile MMX
  • EMMS
  • Adunare si scadere
  • Instructiuni de deplasare (shift)
  • Instructiuni logice
  • Instructiuni de multiplicare
  • Instructiuni de comparare
  • Instructiuni de impachetare/despachetare
  • Instructiuni de transfer

9
Instructiuni MMX
  • Instructiunea EMMS
  • Se foloseste dupa o secventa de instructiuni MMX
    si inainte de o instructiune in virgula flotanta
    pentru a evita generarea unei exceptii sau a unui
    rezultat incorect pt. operatii in virgula
    flotanta
  • Problema
  • starea modulului MMX este o copie a starii
    unitatii flotante
  • dupa instructiuni MMX registrul tag al
    coprocesorului este alterat poate genera o
    exceptie de tip stiva invalida
  • EMMS sterge starea MMX si astfel valideaza
    registrul tag (toate intrarile in stiva flotanta
    sunt validate)

10
Instructiuni de adunare si scadere
Instructiune b w d q
padd X X X
padds X X
paddus X X
psub X X X
psubs X X
psubus X X
paddxx ltdestinatiegt, ltsursagt ltdestinatiegt
MMi ltsursagtMMi ltvariabilagt
11
Adunare si scadere - exemple
  • paddb MM3,MM4
  • paddd MM2, MM1

MM3
8 0 7 F 0 1 0 1 8 0 F F 7 F 8
0

F F 1 7 3 8 F F 8 0 F F 7 F 7 F
MM4
MM3
7 F 9 6 3 9 0 0 0 0 F E F E F F
8 0 7 F 0 1 0 1 8 0 F F 7 F
8 0
MM2
F F 1 7 3 8 F F 8 0 F F 7 F 7
F
MM1
7 F 9 6 3 A 0 0 0 1 F E F E F F
MM2
12
Instructiuni de deplasare (shift)
Instructiune b w d q
psll X X X
psra X X
psrl X X X
Shift left logic
Shift right arithmetic
Shift right logic
psllx psrax psrl ltdestinatiegt,
ltnumargt Elementele destinatiei se deplaseaza la
stanga sau la dreapta cu un ltnumargt de pozitii
binare
13
Instructiuni de deplasare - exemple
psllw MM4, 3

1010111111111111
1010000000001111
1000000000000001
1000000000000001
0111111111111000
0000000001111000
0000000000001000
0000000000001000
psllq MM4, 3
1010111111111111
1010000000001111
1000000000000001
1000000000000001
0111111111111101
0000000001111100
0000000000001100
0000000000001000
14
Instructiuni logice
Instructiune 64 biti
pand X
pandn X
por X
pxor X
XX AND Y
X(NOT X) AND Y
XX OR Y
XX XOR Y
pand pandn por pxor ltdestinatiegt,
ltsursagt Operatia logica se executa bit cu bit
15
Instructiuni logice - exemplu

pand MM4, MM3
1010111111111111
1010000000001111
1000000000000001
1000000000000001
0111111111111101
0000000001111100
0000000000001100
0000000000001000
0010111111111101
0000000000001100
0000000000000000
0000000000000000
16
Instructiuni de multiplicare
Instructiuni b w d q
pmadd
pmulh X
pmull X
multiply and add
multiply and keep high
multiply and keep low
pmadd multiply and add X31-0
X15-0Y15-0X31-16Y31-16 X63-32
X47-32Y47-32X63-48Y63-48
17
Instructiuni de multiplicare
pmadd MM3,MM4
MM3






MM4
MM3
18
Instructiuni de multiplicare
pmulh MM3,MM4

MM3
7 1 C 7 8 D 9 4 8 0 0 0 7
1 C 7
MM4
8 0 0 0 C F C B F F F F 0 4
0 0
C71C8000 158BF05C 00008000 01C71C00
MM3
C 7 1 C 1 5 8 B 0 0 0 0 0
1 C 7
pmull MM3,MM4
MM3
8 0 0 0 F 0 5 C 8 0 0 0 1
C 0 0
19
Instructiuni de comparare
Instructiuni b w d q
pcmpeq X X X
pcmpgt X X X
compare equal
compare greater (intregi cu semn)
Exemplu pcmpeqw MM3,MM4
MM3
0 0 0 0 1 2 3 4 F F F F
0 0 C B
MM4
0 5 6 0 1 2 3 4 1 3 F F
0 0 C B
MM3
0 0 0 0 F F F F 0 0 0 0
F F F F
20
Instructiuni de impachetare/despachetare
Instructiuni b w d q
packss
packus
punpckh
punpckl
pack signed, saturation
pack signed to unsigned
unpack high
unpack low
Impachetare copierea unei structuri mai mari
(ex word) intr-o structura mai mica (ex byte)
cu saturare in caz de nevoie Despachetare
interclasarea elementelor celor doi operanzi se
foloseste pentru extinderea reprezentarii
21
Instructiuni de impachetare/despachetareExemplu
de impachetare

packss MM3,MM4
MM3
8 0 B 1 0 0 6 C F F C 9 7
F 3 9
MM4
F F 8 0 F F 0 0 8 0 1 2
7 F C 1
MM3
8 0 8 0 8 0 7 F 8 0 6 C
C 9 7 F
ns s s s s
ns ns s
ns nesaturat s - saturat
7F39 32569 gt 7F00 32.512 gt sat. FFC9 -
37 gt 8000 -32.512 gt nsat. 1111.1111.1100.1
001 gt 1100.1001
22
Instructiuni de impachetare/despachetareExemplu
de despachetare
punpckhwd MM3,MM4 cuvant -gtdublu-cuvant

MM3
8 0 B 1 0 0 6 C F F C 9 7
F 3 9
MM4
F F 8 0 F F 0 0 8 0 1 2
7 F C 1
MM3
F F 8 0 8 0 B 1 F F 0 0 0
0 6 C
23
Instructiuni de transfer
Instructiune 32biti 64 biti
movd X
movq X
move dword (32 biti)
move qwordword (64 biti)
movd movq ltdestinatiegt, ltsursagt ltdestinatiegt
MMi ltvariabila_memgt ltregistru_x86gt ltsursagt
MMi ltvariabila_memgt ltregistru_x86gt exemple
movd MM2, var_32 se extinde cu
0 movd var_32, MM3 se copiaza partea
low movq var_64, MM5
24
Exemple de proceduri MMXProdusul scalar a doi
vectori ? a(i)b(i)
et movq MM0, adr_v_a movq MM1,
adr_v_b pmaddwd MM0, MM1 paddd
MM2, MM0 add adr_v_a, 8 add
adr_v_b, 8 sub contor jnz et
movq MM0, MM2 psrlq MM2, 32
paddd MM2, MM0 movd rez, MM2

a7
a6
a5
a4
a1
a2
a3
a0
MM0
b7
b6
b5
b4
b1
b2
b3
b0
MM1
a1
a2
a3
a0
b1
b2
b3
b0

a3b3a2b2
a1b1a0b0


? ciclu anterior
? ciclu anterior
25
Exemple de programe MMXSuprapunerea selectiva a
imaginilor
  • 1. pcmpeqb MM1, MM3
  • 2. pand MM4, MM1
  • 3. pandn MM1, MM3
  • 4. por MM4, MM1

1.
2.
3.
4.
Write a Comment
User Comments (0)
About PowerShow.com