Última atividade 1 month ago

Assembly Live 0 - "CODIGO"

assembly-live-0.s Bruto
1; A B C D = 8 bits
2; IP = Instruction Pointer = 16 bits = 65535
3; SP = Stack Pointer = 16 bits = 65535
4; | AX |
5; | A |
6; AX = 0000 0000 0000 0000
7; AX, BX, CX, DX = 16 bits
8; | EAX |
9; | AX |
10; | Ah | Al |
11; | A |
12; EAX = 0000 0000 0000 0000 0000 0000 0000 0000
13; EAX, EBX, ECX, EDX = 32 bits
14; EIP = Enhanced IP = 32 bits
15; ESP = Enhanced SP = 32 bits
16;
17; ----- PAE - Physical Address Extension ------
18;
19;
20; RAX, RBX, RCX, RDX = 64 bits
21; RIP = Register IP = 64 bits
22; RSP = Register SP = 64 bits
23
24
25mov EAX, EBX ; A = B
26mov EBX, EAX ; B = A
27add EAX, EBX ; A = A + B
28sub EAX, EBX ; A = A - B
29inc EAX ; A = A + 1
30inc AX
31inc A
32dec EBX ; B = B - 1
33
34; RAX = int64 = 64 bits = 1844674407370955161
35; 88 × 10 ^ 27 m
36; 5 × 10 ^ -5 m
37; /\ /\ /\
38; Mantissa Base Expoente
39; 1 sinal 57 bits mantissa - 1 sinal 5 bits de expoente
40; 88 25 ( -31 a 31 )
41; ponto flutuante decimal => a * 10 ^ b
42;
43;
44; 5 * 2 = 10 ; 0101 * 0000 0010 = 0000 1010
45; 5 * 4 = 20 ; 0101 * 0000 0100 = 0001 0100
46; 5 * 8 = 40 ; 0101 * 0000 1000 = 0010 1000
47; 5 * 16 = 80 ; 0101 * 0001 0000 = 0101 0000
48; 5 / 2 = 2 ; 0101 / 0000 0010 = 0000 0010
49
50; float = 32 bit
51; Base 2
52; ponto flutuante binario => a * 2 ^ b
53;
54;
55; Mantissa 8 bits = 1 bit sinal, 7 bits numero
56; -128 a 127
57; Expoente 4 bits = 1 bit sinal, 3 bits numero
58; -8 a 7
59; | Matissa | Expoente | Valor
60; |S| Numero |S|
61; 0 0000001 0 000 | 1 * 10 ^ 0 = 1
62; 0 | 12 * 10 ^ -2 = 0.12
63; 0 1 011 |128 * 10 ^ -3 = 0.128
64; | 13 * 10 ^ -2 = 0.13
65; 0 0101001 1 010 | 25 * 10 ^ -2 = 0.25
66; 0 1001011 1 010 | 75 * 10 ^ -2 = 0.75
67; 0 0000101 1 001 | 5 * 10 ^ -1 = 0.5
68; 0 0000010 0 000 | 2 * 10 ^ 0 = 2
69; a * 0.5 == a / 2
70; multiplicacoes em FLOAT = ~3
71; divisoes em FLOAT = ~7
72; ´
73
74; MMX, SSE, AVX, 3DNOW, NEON
75; XMM0 = 4 x 64 bits = 4 double
76; XMM0 = 8 x 32 bits = 8 float
77; XMM0 - XMM15 = 16 FUCKING REGISTRADORES DE 256 BITS
78;
79; XMM0 + XMM1 == 1 instrução
80;
81; XMM0[0], XMM0[1], XMM0[2], XMM0[3]
82; * XMM1[0], XMM1[1], XMM1[2], XMM1[3]
83; =
84; FMA = Fused-multiply-add
85; XMM0 * XMM1 + XMM2 =>> ONE FUCKING INSTRUCTION!!!
86; SIMD = Single Instruction Multiple Data