Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «ГСнСрация высококачСствСнного ΠΊΠΎΠ΄Π° для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, написанных Π½Π° БИ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 3

Автор Π€ΠΈΠ»ΠΈΠΏΠΏ Π₯ислСй

Β¦ j5 = j5 + 1; dec AX inc j5 Β¦

Β¦ i5 = (k5 * 3) / mov k5,AX mov AX,j5 Β¦

Β¦ (j5 * constant5); mov AX,j5 mov SI,AX Β¦

Β¦} while (k5 > 0); inc AX sal SI,2 Β¦

Β¦ mov j5,AX add SI,AX Β¦

Β¦ mov AX,k5 mov AX,k5 Β¦

Β¦ imul AX,AX,3 mov DX,AX Β¦

Β¦ push AX add DX,DX Β¦

Β¦ mov AX,j5 add DX,AX Β¦

Β¦ imul AX,AX,5 xchg AX,DX Β¦

Β¦ mov BX,AX cwd Β¦

Β¦ pop AX idiv SI Β¦

Β¦ cwd mov I5,AX Β¦

Β¦ idiv BX cmp k5,0 Β¦

Β¦ mov i5,AX jnle L00e3 Β¦

Β¦ cmp k5,0 Β¦

Β¦ jg @10 Β¦

+-------------------------------------------------------------+

Β¦ MICROSOFT WATCOM Β¦

Β¦ C 5.0 C 6.0 Β¦

Β¦ (46) (91) Β¦

+-------------------------------------------------------------+

Β¦ mov j5,10000 mov j5,0 Β¦

Β¦ mov k5,0 mov DI,10000 Β¦

Β¦ mov CX,30000 L4 dec DI Β¦

Β¦ sub SI,SI imul AX,DI,3 Β¦

Β¦ $0265: inc j5 Β¦

Β¦ sub CX,3 imul BX,j5,5 Β¦

Β¦ add SI,5 cwd Β¦

Β¦ mov AX,CX idiv BX Β¦

Β¦ cwd mov i5,AX Β¦

Β¦ idiv SI test DI,DI Β¦

Β¦ mov DI,AX jg L4 Β¦

Β¦ or CX,CX Β¦

Β¦ jg $0265 Β¦

Β¦ mov i5,DI Β¦

+-------------------------------------------------------------+

Β¦ ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Microsoft C 5.0 Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ» сниТСниС мощности Π½Π° Β¦

Β¦ константном Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΈ размСстил Π² рСгистрах всС Β¦

Β¦ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ простого Ρ†ΠΈΠΊΠ»Π°, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ вычисляСмоС Β¦

Β¦ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ i5. Высокая ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° Ρ†ΠΈΠΊΠ»Π° Β¦

Β¦ дСмонстрируСтся Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ состояния k5 ΠΈ j5 Β¦

Β¦ Π±Ρ‹Π»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π·Π°Ρ€Π°Π½Π΅Π΅ компилятором, Π° Π½Π΅ ΠΏΠΎΠ·ΠΆΠ΅, Π²ΠΎ Β¦

Β¦ врСмя выполнСния. Β¦

L--------------------------------------------------------------

"ВынСсСниС ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΠΎΠ³ΠΎ (Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰Π΅Π³ΠΎΡΡ) ΠΊΠΎΠ΄Π°" - ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡƒΡ‚Π΅ΠΉ ускорСния Ρ†ΠΈΠΊΠ»ΠΎΠ², Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉΡΡ Π² вынСсСнии Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Ρ†ΠΈΠΊΠ»Π°, Ссли значСния, ΠΈΠΌΠΈ вычисляСмыС, ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Π²ΠΎ врСмя выполнСния Ρ†ΠΈΠΊΠ»Π°. Если ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ выносится ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ»Π°:

unsigned char i,j,k,v,x;

for( i = 0; i < v; i++)

x = i * (j+k);

Π΅Π³ΠΎ логичСский эквивалСнт Π±ΡƒΠ΄Π΅Ρ‚:

T1 = j + k;

for(i = 0; i < v; i++)

x = i * T1;

 

--------------------------------------------------------------Β¬

¦РИБУНОК 3: ВынСсСниС ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° - Microsofr C 5.0 Β¦

+-------------------------------------------------------------+

Β¦Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ тСкст Π½Π° Π‘ΠΈ MICROSOFT COMPUTER INNOVATIONS Β¦

Β¦ C 5.0 C86Plus 1.10 Β¦

+-------------------------------------------------------------+

Β¦for(i4=0;i4<=2;i4++) sub SI,SI mov i4,0 Β¦

Β¦ ivector2[i4] =j*k; mov AX,j jmp [email protected] Β¦

Β¦ imul k [email protected]: Β¦

Β¦ mov [BP-4],AL mov AX,j Β¦

Β¦ $L20007: imul k Β¦

Β¦ mov AL,[BP-4] mov SI,i4 Β¦

Β¦ mov ivector2[SI],AL Β¦

¦ inc SI mov ivector2[SI],AL¦

Β¦ cmp SI,2 inc i4 Β¦

Β¦ jle $L20007 [email protected]: Β¦

Β¦ mov i4,SI cmp i4,2 Β¦

Β¦ jle [email protected] Β¦

+-------------------------------------------------------------+

Β¦ ВынСсСниС ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ врСмя выполнСния Β¦

Β¦ Ρ†ΠΈΠΊΠ»Π° ΠΏΡƒΡ‚Π΅ΠΌ вынСсСния Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΡ…ΡΡ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ· Ρ‚Π΅Π»Π° Β¦

Β¦ Ρ†ΠΈΠΊΠ»Π°. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Computer Innovations C86Plus 1.10, Β¦

Β¦ компилятор Microsoft C 5.0 ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ выносит Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ j * h Β¦

Β¦ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Ρ†ΠΈΠΊΠ»Π°, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ выполняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, Β¦

Β¦ вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π°. Β¦

L--------------------------------------------------------------

Рис. 3 дСмонстрируСт вынСсСниС ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° компилятором Microsoft C 5.0.

Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ i, индСкса Ρ†ΠΈΠΊΠ»Π°, измСняСтся нСпосрСдствСнно с ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ. ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ присваиваниС i, извСстной ΠΊΠ°ΠΊ "пСрСмСнная ΠΈΠ½Π΄ΡƒΠΊΡ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π°", ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½ΠΎ:

T1 = j + k;

for(x = 0; x< T1 * v; x += T1);

i = v;

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ использованиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… - индСксов Ρ†ΠΈΠΊΠ»Π° Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… выраТСниях Ρ†ΠΈΠΊΠ»Π° ΠΎΠ±Ρ‰Π΅ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ½Π΄ΡƒΠΊΡ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° вмСстС со связанными с Π½ΠΈΠΌΠΈ "сниТСниями мощности", ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ исполнСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Рис. 4 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ удалСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ½Π΄ΡƒΠΊΡ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π°.

--------------------------------------------------------------Β¬

¦РИБУНОК 4: Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ½Π΄ΡƒΠΊΡ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° Β¦

+-------------------------------------------------------------+

Β¦Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ тСкст Π½Π° Π‘ΠΈ MICROSOFT DATALIGHT Β¦

Β¦ C 5.0 Optimum-C 3.14 Β¦

+-------------------------------------------------------------+

Β¦for(i=0;i<100;i++) mov AX,0 Β¦

Β¦ ivector5[i*2+3]=5; mov i,100 mov i,AX Β¦

Β¦ mov SI,OFFSET ivector5+6 cmp AX,100 Β¦

Β¦ $L20006: jge L134 Β¦

Β¦ mov [SI],5 L11B: Β¦

Β¦ add SI,4 mov BX,i Β¦

Β¦ cmp SI,OFFSET ivector5+406 shl BX,1 Β¦

Β¦ jb $L20006 shl BX,1 Β¦

Β¦ mov ivector+6[BX],5 Β¦

Β¦ inc i Β¦

Β¦ cmp i,100 Β¦

Β¦ jl L11B Β¦

Β¦ L134: Β¦

+-------------------------------------------------------------+

Β¦ Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ½Π΄ΡƒΠΊΡ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Β¦

Β¦ врСмя, ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π°, ΠΏΡƒΡ‚Π΅ΠΌ вынСсСния Β¦

Β¦ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… Ρ†ΠΈΠΊΠ» ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… (ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ½Π΄ΡƒΠΊΡ†ΠΈΠΈ) ΠΈΠ· Β¦

Β¦ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°. Π’ Ρ‚ΠΎ врСмя, ΠΊΠ°ΠΊ компилятор Datalight Optimum-C Β¦

Β¦ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΈΠ½Π΄ΡƒΠΊΡ†ΠΈΠΈ i для индСксации массива Β¦

Β¦ ivector5, компилятор Microsoft C 5.0 удаляСт Π΅Π΅ благодаря Β¦

Β¦ накоплСнию смСщСния для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта массива ΠΈ Β¦

Β¦ добавлСнию Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΊ Π±Π°Π·ΠΎΠ²ΠΎΠΌΡƒ адрСсу массива. Β¦

L--------------------------------------------------------------

"БлияниС Ρ†ΠΈΠΊΠ»ΠΎΠ²" ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΏΡƒΡ‚Π΅ΠΌ сращивания ΠΊΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»ΠΎΠ², ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ, Π² ΠΎΠ΄ΠΈΠ½ Ρ†ΠΈΠΊΠ». Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°, Π΄Π²Π° простых Ρ†ΠΈΠΊΠ»Π°

for(i = 0; i < 10; i++)

a = b + c;

for(i = 0; i < 10; i++)

d = e + f;

ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Ρ‹ Π² ΠΎΠ΄ΠΈΠ½ Ρ†ΠΈΠΊΠ»

for(i = 0; i < 10; i++) {

a = b + c;

d = e + f;

}

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ слияния Ρ†ΠΈΠΊΠ»ΠΎΠ² трСбуСтся процСдурная оптимизация, Π² ΠΎΠ±Ρ‰Π΅ΠΌ случаС это дСйствиС Π½Π΅ выполняСтся. Ни ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… Π² ΠΎΠ±Π·ΠΎΡ€ компиляторов этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ примСняСт.

НСпосрСдствСнно связано со слияниСм Ρ†ΠΈΠΊΠ»ΠΎΠ² "Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»ΠΎΠ²", ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ количСство ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· Ρ†ΠΈΠΊΠ» ΠΏΡƒΡ‚Π΅ΠΌ увСличСния числа ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, выполняСмых Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ. Π¦ΠΈΠΊΠ» ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ массива

int a[3];

int i;

for(i = 0; i < 3; i++)

a[i] = 0;

странслированный компилятором Π±Π΅Π· ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ эквивалСнт Π² языкС ассСмблСра:

mov i,0

LOOP:

mov BX,i

shl BX,1

mov a[BX],0

inc i

cmp i,3

jl LOOP

Π’ Ρ‚ΠΎΠΌ ΠΆΠ΅ ΠΊΠΎΠ΄Π΅, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ разворачивания Ρ†ΠΈΠΊΠ»Π°, удаляСтся Ρ†ΠΈΠΊΠ» ΠΏΡƒΡ‚Π΅ΠΌ замСщСния Π΅Π³ΠΎ трСмя инструкциями присваивания:

mov a,0

mov a+2,0

mov a+4,0

Π₯отя Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· компиляторов, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… Π² ΠΎΠ±Π·ΠΎΡ€, Π½Π΅ выполняСт Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»ΠΎΠ², Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ… ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ Ρ†ΠΈΠΊΠ» ΠΏΡƒΡ‚Π΅ΠΌ использования "спСциализированных инструкций прцСссора". МногиС процСссоры ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ спСциализированныС инструкции для управлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ΠΌ Π±Π»ΠΎΠΊΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ памяти ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‰ΠΈΡ…ΡΡ ситуаций управлСния Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, строковыС инструкции с прСфиксом повторСния (Π² сСмСйствС процСссоров 80x86), Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠ΅ΡΡ быстрСС, Ρ‡Π΅ΠΌ ΠΏΠΎΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² Ρ†ΠΈΠΊΠ»Π΅. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ компилятор ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚, ΠΊΠΎΠ³Π΄Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, инструкции процСссора для управлСния ситуациями Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… случаях. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ спСциализированных инструкций процСссора ΠΊ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΉ вСрсии ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° разворачивания Ρ†ΠΈΠΊΠ»ΠΎΠ²

int a[10000];

int i;

for(i = 0; i < 10000; i++)

a[i] = 0;

Π΄Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅ ассСмблСрный ΠΊΠΎΠ΄ процСссора 80x86. Он Π³ΠΎΡ€Π°Π·Π΄ΠΎ быстрСС, Ρ‡Π΅ΠΌ Π΅Π³ΠΎ Π°Π½Π°Π»ΠΎΠ³, записанный Π² Π²ΠΈΠ΄Π΅ Ρ†ΠΈΠΊΠ»Π° ΠΈΠ»ΠΈ Π½Π°Π±ΠΎΡ€Π° инструкций нСпосрСдствСнной засылки Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ, ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π³ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ:

mov CX,10000

mov i,CX

sub AX,AX

mov DI,offset a

push DS

pop ES

cld

rep stosw

"ΠœΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ" ΠΌΠΎΠΆΠ΅Ρ‚ сущСствСнно ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ врСмя выполнСния Π² структурированной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π² стСкС, находящСмся Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти. Набор инструкций Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… процСссоров содСрТит инструкции, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ потрСбности Π‘ΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… структурированных языков высокого уровня Π² установкС адрСсации Ρ„Ρ€Π΅ΠΉΠΌΠ° стСка ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ΄Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ восстановлСнии стСкового Ρ„Ρ€Π΅ΠΉΠΌΠ° ΠΏΠ΅Ρ€Π΅Π΄ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ΠΌ.