Assembly Language for Beginners
1.28. 64-BIT VALUES IN 32-BIT ENVIRONMENT ; $v1 - low part of result f_sub: ; $a0 - high part of a ; $a1 - low part of a ; $a2 - ...
1.28. 64-BIT VALUES IN 32-BIT ENVIRONMENT return a % b; }; x86 Listing 1.377: Optimizing MSVC 2013 /Ob1 _a$ = 8 ; size = 8 _b$ = ...
1.28. 64-BIT VALUES IN 32-BIT ENVIRONMENT push ebx mov edx, DWORD PTR [esp+8] mov eax, DWORD PTR [esp+16] mov ebx, DWORD PTR [es ...
1.28. 64-BIT VALUES IN 32-BIT ENVIRONMENT Keil for ARM mode, on the other hand, is able to produce 64-bit multiplication code: L ...
1.28. 64-BIT VALUES IN 32-BIT ENVIRONMENT var_10 = -0x10 var_4 = -4 lui $gp, (__gnu_local_gp >> 16) addiu $sp, -0x20 la $g ...
1.28. 64-BIT VALUES IN 32-BIT ENVIRONMENT Listing 1.384: Optimizing Keil 6/2013 (ARM mode) ||f|| PROC LSR r0,r0,#7 ORR r0,r0,r1, ...
1.29 SIMD. ARM Listing 1.388: Optimizing Keil 6/2013 (ARM mode) ||f|| PROC ASR r1,r0,#31 BX lr ENDP Keil for ARM is different: i ...
1.29. SIMD Bitslice DES^177 —is the idea of processing groups of blocks and keys simultaneously. Let’s say, variable of typeunsi ...
1.29. SIMD sz = dword ptr 4 ar1 = dword ptr 8 ar2 = dword ptr 0Ch ar3 = dword ptr 10h push edi push esi push ebx push esi mov ed ...
1.29. SIMD jbe short loc_D6 mov ebx, [esp+10h+ar2] mov [esp+10h+var_10], ecx mov ecx, [esp+10h+ar1] xor esi, esi loc_C1: ; CODE ...
1.29. SIMD mov ebx, [esi+ecx*4] add ebx, [edi+ecx*4] mov [eax+ecx*4], ebx inc ecx cmp ecx, edx jb short loc_14D loc_15B: ; CODE ...
1.29. SIMD var_10 = dword ptr -10h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push eb ...
1.29. SIMD mov [ebp+var_18], ecx mov ecx, [ebp+var_14] xor eax, eax xor edx, edx nop loc_8048520: ; CODE XREF: f(int,int ,int ,i ...
1.29. SIMD Listing 1.390: Optimizing GCC 4.9.1 x64 my_memcpy: ; RDI = destination address ; RSI = source address ; RDX = size of ...
1.29. SIMD je .L25 movzx eax, BYTE PTR [rsi+11] cmp rcx, 12 mov BYTE PTR [rdi+11], al je .L26 movzx eax, BYTE PTR [rsi+12] cmp r ...
1.29. SIMD lea rcx, [rax+6] cmp rdx, rcx jbe .L1 movzx ecx, BYTE PTR [rsi+6+rax] mov BYTE PTR [rdi+6+rax], cl lea rcx, [rax+7] c ...
1.29. SIMD jmp .L4 .L18: mov eax, 4 jmp .L4 .L19: mov eax, 5 jmp .L4 .L20: mov eax, 6 jmp .L4 .L21: mov eax, 7 jmp .L4 .L22: mov ...
1.29. SIMD break; } s += sizeof(__m128i); len += sizeof(__m128i); }; return len; } Let’s compile it in MSVC 2010 with/Oxoption: ...
1.29. SIMD First, we check if thestrpointer is aligned on a 16-byte boundary. If not, we call the genericstrlen() implementation ...
1.30 64 bits. pmovmskb eax, xmm1 This instruction sets firstEAXbit to 1 if the most significant bit of the first byte inXMM1is 1 ...
«
17
18
19
20
21
22
23
24
25
26
»
Free download pdf