fix: Кодировка
This commit is contained in:
368
Labv14.cpp
368
Labv14.cpp
@ -1,184 +1,184 @@
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ୠ<EFBFBD> ࠡ<><E0A0A1><EFBFBD> 14
|
||||
<EFBFBD><EFBFBD>ꥤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><>ࠫ<EFBFBD><E0A0AB><EFBFBD>쭮<EFBFBD><ECADAE> <20>믮<EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
(<EFBFBD><EFBFBD>⨬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0AEA2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <conio.h>
|
||||
void NullProc(void){}
|
||||
void ExTime(void (*PP)(void))
|
||||
{
|
||||
long far* pTime = (long*)0x46C; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>稪 ⨪<><E2A8AA>
|
||||
long Time0, Time1, Time2, i;
|
||||
|
||||
void (*NP)(void);
|
||||
NP = NullProc;
|
||||
Time0 = *pTime;
|
||||
for (i = 1; i<1000000L; i++)
|
||||
{
|
||||
NP();
|
||||
NP();
|
||||
NP();
|
||||
NP();
|
||||
NP();
|
||||
NP();
|
||||
NP();
|
||||
NP();
|
||||
NP();
|
||||
NP();
|
||||
}
|
||||
Time1 = *pTime;
|
||||
for (i = 1; i<1000000L; i++)
|
||||
{
|
||||
PP();
|
||||
PP();
|
||||
PP();
|
||||
PP();
|
||||
PP();
|
||||
PP();
|
||||
PP();
|
||||
PP();
|
||||
PP();
|
||||
PP();
|
||||
}
|
||||
Time2 = *pTime;
|
||||
Time2 = (((Time2 - Time1) - (Time1 - Time0))*(6553500L/1193180L));
|
||||
printf("%ld <EFBFBD><EFBFBD>\n",Time2);
|
||||
}
|
||||
void P1(void) //ॣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ᨬ<EFBFBD><E1A8AC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
asm{
|
||||
mov ax,bx
|
||||
mov dx,ax
|
||||
stc
|
||||
adc bx,cx
|
||||
stc
|
||||
sbb dx,ax
|
||||
|
||||
add ax,bx
|
||||
mov cx,ax
|
||||
sub dx,bx
|
||||
mov bx,dx
|
||||
}
|
||||
}
|
||||
void P2(void) //ॣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ᨬ<EFBFBD><E1A8AC><EFBFBD><EFBFBD> <20><><EFBFBD>࠭<EFBFBD><E0A0AD><EFBFBD>
|
||||
{
|
||||
asm{
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
void P3(void) //<EFBFBD><EFBFBD>㣨<EFBFBD> <20><><EFBFBD>稭<EFBFBD> <20><>ᯠ७<E1AFA0><E0A5AD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
asm{
|
||||
mov cl,3 //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>।<EFBFBD>⢥<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>࠭<EFBFBD>
|
||||
inc bx
|
||||
mov cl,3
|
||||
dec bx
|
||||
mov cl,3
|
||||
inc bx
|
||||
mov cl,3
|
||||
dec bx
|
||||
|
||||
inc bx //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᤢ<><E1A4A2><EFBFBD> <20> cl <20> <20><><EFBFBD><EFBFBD><EFBFBD>⢥ <20><><EFBFBD><EFBFBD>稪<EFBFBD>
|
||||
ror ax,cl
|
||||
dec bx
|
||||
rol ax,cl
|
||||
|
||||
inc dx //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>䨪ᠬ<E4A8AA> <20>. <EFBFBD>. <EFBFBD> U - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
mov ax,ds:[bx]
|
||||
mov ax,ss:[bx]
|
||||
mov ax,es:[bx]
|
||||
mov ax,cs:[bx]
|
||||
mov cl,3
|
||||
mov cl,3
|
||||
mov cl,3
|
||||
dec dx
|
||||
|
||||
inc dx //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᤢ<><E1A4A2><EFBFBD> <20>. <EFBFBD>. <EFBFBD> U - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
ror ax,1
|
||||
rol ax,1
|
||||
dec dx
|
||||
}
|
||||
}
|
||||
void P4(void) //<EFBFBD><EFBFBD><EFBFBD>稭<EFBFBD> <20><>ᯠ७<E1AFA0><E0A5AD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>࠭<EFBFBD><E0A0AD><EFBFBD>
|
||||
{
|
||||
asm{
|
||||
|
||||
}
|
||||
}
|
||||
void main(void)
|
||||
{
|
||||
clrscr();
|
||||
printf("Program1 - ॣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ᨬ<EFBFBD><E1A8AC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
|
||||
ExTime(P1);
|
||||
printf("Program2 - ॣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ᨬ<EFBFBD><E1A8AC><EFBFBD><EFBFBD> <20><><EFBFBD>࠭<EFBFBD><E0A0AD><EFBFBD>\n");
|
||||
ExTime(P2);
|
||||
printf("Program3 - <EFBFBD><EFBFBD>㣨<EFBFBD> <20><><EFBFBD>稭<EFBFBD> <20><>ᯠ७<E1AFA0><E0A5AD><EFBFBD><EFBFBD><EFBFBD>\n");
|
||||
ExTime(P3);
|
||||
printf("Program4 - <EFBFBD><EFBFBD><EFBFBD>稭<EFBFBD> <20><>ᯠ७<E1AFA0><E0A5AD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>࠭<EFBFBD><E0A0AD><EFBFBD>\n");
|
||||
ExTime(P4);
|
||||
getch();
|
||||
}
|
||||
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// 1. <EFBFBD><EFBFBD><EFBFBD>࠭<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>稭<EFBFBD> <20><>ᯠ७<E1AFA0><E0A5AD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
// 2. <EFBFBD><EFBFBD>।<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>᭨<EFBFBD><E1ADA8> <20>६<EFBFBD> <20>믮<EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ࠣ<EFBFBD><E0A0A3><EFBFBD>⮢ <20>ணࠬ<E0AEA3>.
|
||||
//
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Pentium <20><><EFBFBD><EFBFBD><EFBFBD> <20>믮<EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
⠪<EFBFBD><EFBFBD>. <20><><EFBFBD> <20>믮<EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>६<EFBFBD><E0A5AC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 㤮<><E3A4AE><EFBFBD>⢮<EFBFBD><E2A2AE><EFBFBD><EFBFBD> <><E1ABA5><EFBFBD>騬 <20><EFBFBD><E1ABAE><EFBFBD><EFBFBD>:
|
||||
|
||||
-<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><>易<EFBFBD><EFA7A0> <20><><EFBFBD><EFBFBD> <<3C><><EFBFBD><EFBFBD><EFBFBD>묨> <20> <20><><EFBFBD>, <20><>।<EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
||||
-<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ॣ<><E0A5A3><EFBFBD><EFBFBD><E0AEA2> <20><><EFBFBD><EFBFBD>ᨬ<EFBFBD><E1A8AC>⥩ ⨯<> <20>⥭<EFBFBD><E2A5AD>- <20><>-
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (read-after-write or write-after-wnte) ,
|
||||
-<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> ᮤ<>ঠ<EFBFBD><E0A6A0> ᬥ饭<E1ACA5><E9A5AD> (displacement) <EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>।<EFBFBD>⢥<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>࠭<EFBFBD>;
|
||||
-<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>䨪ᠬ<E4A8AA> (<28><> <20>᪫<EFBFBD>祭<EFBFBD><E7A5AD><EFBFBD> OF <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>室<EFBFBD> JCC)
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ⮫쪮 <20> U-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>묨 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><>ࠢ<EFBFBD><E0A0A2><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD>믮<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⢫<EFBFBD><E2A2AB><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⭮, <20><><EFBFBD> <20>ᯮ<EFBFBD>짮<EFBFBD><ECA7AE><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD>ப<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ॠ<><E0A5A0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> ⠪<>. <20>᪫<EFBFBD>祭<EFBFBD><E7A5AD><EFBFBD> <><EFA2AB><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ALU mem, reg <EFBFBD> ALU reg, mem, <EFBFBD>ॡ<EFBFBD><EFBFBD>騥 <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> ⠪⮢ <20><><EFBFBD>
|
||||
<EFBFBD>믮<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᮮ⢥<E1AEAE><E2A2A5>⢥<EFBFBD><E2A2A5><EFBFBD>. <20><><EFBFBD>樠<EFBFBD><E6A8A0><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>।<EFBFBD>⢠
|
||||
<EFBFBD>ᯮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20>믮<EFBFBD><EBAFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>騥
|
||||
楫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ᬠ<EFBFBD>ਢ<EFBFBD><E0A8A2><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>⢥ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
ᯠ७<EFBFBD>:
|
||||
-mov reg, reg/mem/imnl
|
||||
-mov mem, reg/imm (<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>।<EFBFBD><E0A5A4><EFBFBD>) ;
|
||||
-alu reg, reg/mero/imm (<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>䬥<EFBFBD><E4ACA5><EFBFBD><EFBFBD>᪨<EFBFBD>
|
||||
- alu meln , reg/ imm <EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>᪨<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>権) ;
|
||||
- inc reg/mem (<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>६<EFBFBD><E0A5AC><EFBFBD><EFBFBD>,
|
||||
- dec reg/mem (<EFBFBD><EFBFBD><EFBFBD>६<EFBFBD><EFBFBD><EFBFBD><EFBFBD>) ;
|
||||
-push reg/mem (<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>饭<EFBFBD><E9A5AD>
|
||||
- pop reg (<EFBFBD> <20>⥪<EFBFBD><E2A5AA><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) ;
|
||||
-lea reg,mem (<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>㧪<EFBFBD> ᥣ<><E1A5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ॣ<><E0A5A3><EFBFBD>) ;
|
||||
-jmp/call/jcc near (<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>।<EFBFBD><E0A5A4><EFBFBD> <20><>ࠢ<EFBFBD><E0A0A2><EFBFBD><EFBFBD><EFBFBD>) ;
|
||||
-n<EFBFBD><EFBFBD> (<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) .
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E1ABAE><EFBFBD><EFBFBD> <20> <20><EFBFBD><E1ABAE><EFBFBD><EFBFBD> <20><>।<EFBFBD><E0A5A4> <20><>ࠢ<EFBFBD><E0A0A2><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD>6쥤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>, <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>⢥ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>.
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ᯠ७<E1AFA0> <20><> <><E1ABA5><EFBFBD>饩 <20><><EFBFBD><E1ABA5><EFBFBD><EFBFBD>⥫쭮<E2A5AB> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SHIFT/ROT <EFBFBD><EFBFBD> ᤢ<><E1A4A2><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> ࠧ<><E0A0A7><EFBFBD> <20> SHIFT <20><> <20>ந<EFBFBD><E0AEA8><EFBFBD><EFBFBD>쭮<EFBFBD>
|
||||
<EFBFBD><EFBFBD> ࠧ<>冷<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> ᯠਢ<E1AFA0><E0A8A2><EFBFBD><EFBFBD><EFBFBD> ⮫쪮 <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ( <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>).
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ᨬ<EFBFBD><E1A8AC><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ᨬ<EFBFBD><E1A8AC><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>騥 ᯠਢ<E1AFA0><E0A8A2><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ᨬ<EFBFBD><E1A8AC><EFBFBD><EFBFBD> <20><>१ ॣ<><E0A5A3><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> 䫠<><E4ABA0>, <20><> 㪠<><E3AAA0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ᨬ<EFBFBD><E1A8AC>⥩ <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0AEA2><EFBFBD> <20><>
|
||||
⨯<EFBFBD> <20><><EFBFBD><EFBFBD>樠権: RAR - "<22>⥭<EFBFBD><E2A5AD> <20><> <20>⥭<EFBFBD><E2A5AD>", WAR - "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>⥭<EFBFBD><E2A5AD>" <EFBFBD>
|
||||
WAW - "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", RAW - "<22>⥭<EFBFBD><E2A5AD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>". <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᨬ<EFBFBD><EFBFBD>⥩ <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>࠭<EFBFBD><E0A0AD><EFBFBD>. RAR, <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>,
|
||||
ᮮ⢥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⢨<EFBFBD> <20><><EFBFBD><EFBFBD>ᨬ<EFBFBD><E1A8AC>⥩, <20><><EFBFBD><E1AAAE><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>砥 <20><><EFBFBD>冷<EFBFBD>
|
||||
<EFBFBD>믮<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>祭<EFBFBD><E7A5AD>. <20><><EFBFBD><EFBFBD>⢨⥫쭮<E2A5AB> <20><><EFBFBD><EFBFBD>ᨬ<EFBFBD><E1A8AC><EFBFBD><EFBFBD><EFBFBD> <><EFA2AB><EFBFBD><EFBFBD><EFBFBD>
|
||||
⮫쪮 "<22>⥭<EFBFBD><E2A5AD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" (RAW), ⠪ <20><><EFBFBD> <20><><EFBFBD><EFBFBD>室<EFBFBD><E5AEA4><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD>।<EFBFBD><EFBFBD><EFBFBD><EFBFBD>⥫쭮 <20><><EFBFBD><EFBFBD>ᠭ<EFBFBD><E1A0AD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
<EFBFBD><EFBFBD>譨<EFBFBD> <20><><EFBFBD><EFBFBD>ᨬ<EFBFBD><E1A8AC><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFA2AB><EFBFBD><EFBFBD><EFBFBD> <20> १<><E0A5A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
<EFBFBD>⥭<EFBFBD><EFBFBD>" (WAR) <EFBFBD> "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" (WAW). <20><><EFBFBD><EFBFBD>ᨬ<EFBFBD><E1A8AC><EFBFBD><EFBFBD> WAR <20><><EFBFBD>⮨<EFBFBD> <20>
|
||||
⮬, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>祭<EFBFBD><E7A5AD> <20> <20>祩<EFBFBD><E7A5A9> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> ॣ<><E0A5A3><EFBFBD><EFBFBD>,
|
||||
<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ந<EFBFBD><E0AEA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>⥭<EFBFBD><E2A5AD>. <20><>譨<EFBFBD> <20><><EFBFBD><EFBFBD>ᨬ<EFBFBD><E1A8AC><EFBFBD><EFBFBD> <20><><EFBFBD><EFA2AB><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD> <20><><EFBFBD>쪨<EFBFBD> <20><><EFBFBD>稭<EFBFBD><E7A8AD>: <20><> <20><>⨬<EFBFBD><E2A8AC><EFBFBD><EFBFBD><E0AEA2><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC><EFBFBD><EFBFBD> <20><><EFBFBD>, <20><>࠭<EFBFBD>祭<EFBFBD><E7A5AD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⢠ ॣ<><E0A5A3><EFBFBD>, <20><>६<EFBFBD><E0A5AC><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>稥 <20>ணࠬ<E0AEA3><E0A0AC><EFBFBD><EFBFBD>
|
||||
横<EFBFBD><EFBFBD><EFBFBD>.
|
||||
|
||||
*/
|
||||
/* Лабораторная работа 14
|
||||
Объединение команд для их параллельного выполнения
|
||||
(оптимизация уровня команд)
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <conio.h>
|
||||
void NullProc(void){}
|
||||
void ExTime(void (*PP)(void))
|
||||
{
|
||||
long far* pTime = (long*)0x46C; //счетчик тиков
|
||||
long Time0, Time1, Time2, i;
|
||||
|
||||
void (*NP)(void);
|
||||
NP = NullProc;
|
||||
Time0 = *pTime;
|
||||
for (i = 1; i<1000000L; i++)
|
||||
{
|
||||
NP();
|
||||
NP();
|
||||
NP();
|
||||
NP();
|
||||
NP();
|
||||
NP();
|
||||
NP();
|
||||
NP();
|
||||
NP();
|
||||
NP();
|
||||
}
|
||||
Time1 = *pTime;
|
||||
for (i = 1; i<1000000L; i++)
|
||||
{
|
||||
PP();
|
||||
PP();
|
||||
PP();
|
||||
PP();
|
||||
PP();
|
||||
PP();
|
||||
PP();
|
||||
PP();
|
||||
PP();
|
||||
PP();
|
||||
}
|
||||
Time2 = *pTime;
|
||||
Time2 = (((Time2 - Time1) - (Time1 - Time0))*(6553500L/1193180L));
|
||||
printf("%ld нс\n",Time2);
|
||||
}
|
||||
void P1(void) //регистровые зависимости имеются
|
||||
{
|
||||
asm{
|
||||
mov ax,bx
|
||||
mov dx,ax
|
||||
stc
|
||||
adc bx,cx
|
||||
stc
|
||||
sbb dx,ax
|
||||
|
||||
add ax,bx
|
||||
mov cx,ax
|
||||
sub dx,bx
|
||||
mov bx,dx
|
||||
}
|
||||
}
|
||||
void P2(void) //регистровые зависимости устранены
|
||||
{
|
||||
asm{
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
void P3(void) //другие причины неспаренности
|
||||
{
|
||||
asm{
|
||||
mov cl,3 //непосредственный операнд
|
||||
inc bx
|
||||
mov cl,3
|
||||
dec bx
|
||||
mov cl,3
|
||||
inc bx
|
||||
mov cl,3
|
||||
dec bx
|
||||
|
||||
inc bx //команды сдвига с cl в качестве счетчика
|
||||
ror ax,cl
|
||||
dec bx
|
||||
rol ax,cl
|
||||
|
||||
inc dx //команды с префиксами м. б. в U - конвейере
|
||||
mov ax,ds:[bx]
|
||||
mov ax,ss:[bx]
|
||||
mov ax,es:[bx]
|
||||
mov ax,cs:[bx]
|
||||
mov cl,3
|
||||
mov cl,3
|
||||
mov cl,3
|
||||
dec dx
|
||||
|
||||
inc dx //команды сдвига м. б. в U - конвейере
|
||||
ror ax,1
|
||||
rol ax,1
|
||||
dec dx
|
||||
}
|
||||
}
|
||||
void P4(void) //причины неспаренности устранены
|
||||
{
|
||||
asm{
|
||||
|
||||
}
|
||||
}
|
||||
void main(void)
|
||||
{
|
||||
clrscr();
|
||||
printf("Program1 - регистровые зависимости имеются\n");
|
||||
ExTime(P1);
|
||||
printf("Program2 - регистровые зависимости устранены\n");
|
||||
ExTime(P2);
|
||||
printf("Program3 - другие причины неспаренности\n");
|
||||
ExTime(P3);
|
||||
printf("Program4 - причины неспаренности устранены\n");
|
||||
ExTime(P4);
|
||||
getch();
|
||||
}
|
||||
|
||||
//Задание
|
||||
// 1. Устраните причины неспаренности команд.
|
||||
// 2. Определите и объясните время выполнения фрагментов программ.
|
||||
//
|
||||
/* ПРАВИЛА ОБЪЕДИНЕНИЯ КОМАНД
|
||||
Процессор Pentium может выполнять одну или две команды в каждом
|
||||
такте. Для выполнения в процессоре одновременно двух команд они
|
||||
должны удовлетворять следующим условиям:
|
||||
|
||||
-обе команды в паре обязаны быть <простыми> в смысле, определенном
|
||||
ниже;
|
||||
-между ними не должно быть регистровых зависимостей типа чтение- после-
|
||||
записи или запись-после-записи (read-after-write or write-after-wnte) ,
|
||||
-ни одна из команд не может содержать смещение (displacement) и
|
||||
непосредственный операнд;
|
||||
-команды с префиксами (за исключением OF в командах перехода JCC)
|
||||
могут встречаться только в U-конвейере.
|
||||
Под простыми командами понимаются команды, управление
|
||||
выполнением которых осуществляется аппаратно, без использования
|
||||
микрокоманд, и которые реализуются за один такт. Исключением являются
|
||||
команды ALU mem, reg и ALU reg, mem, требующие трех и двух тактов для
|
||||
выполнения соответственно. Специальные аппаратные средства
|
||||
используются для их выполнения как простых команд. Следующие
|
||||
целочисленные команды рассматриваются в качестве простых и могут быть
|
||||
спарены:
|
||||
-mov reg, reg/mem/imnl
|
||||
-mov mem, reg/imm (команды передачи) ;
|
||||
-alu reg, reg/mero/imm (команды арифметических
|
||||
- alu meln , reg/ imm и логических операций) ;
|
||||
- inc reg/mem (команды инкремента,
|
||||
- dec reg/mem (декремента) ;
|
||||
-push reg/mem (команды обращения
|
||||
- pop reg (к стековой памяти) ;
|
||||
-lea reg,mem (команды загрузки сегментных регистров) ;
|
||||
-jmp/call/jcc near (команды передачи управления) ;
|
||||
-nор (пустая команда) .
|
||||
Команды безусловной и условной передач управления могут
|
||||
о6ьединяться в пары, если они встречаются в качестве вторых команд в паре.
|
||||
Они не могут быть спарены со следующей последовательной командой. Также
|
||||
команды SHIFT/ROT со сдвигом на один разряд и SHIFT на произвольное
|
||||
число разрядов могут спариваться только как первые ( команды в паре).
|
||||
Регистровые зависимости
|
||||
Регистровые зависимости, запрещающие спаривание команд, включают
|
||||
неявные зависимости через регистры или флаги, не указанные в команде.
|
||||
Все виды зависимостей по данным могут быть классифицированы по
|
||||
типу ассоциаций: RAR - "чтение после чтения", WAR - "запись после чтения" и
|
||||
WAW - "запись после записи", RAW - "чтение после записи". Некоторые из
|
||||
зависимостей по данным могут быть устранены. RAR, по сути дела,
|
||||
соответствует отсутствию зависимостей, поскольку в данном случае порядок
|
||||
выполнения команд не имеет значения. Действительной зависимостью является
|
||||
только "чтение после записи" (RAW), так как необходимо прочитать
|
||||
предварительно записанные новые данные, а не старые.
|
||||
Лишние зависимости по данным появляются в результате "записи после
|
||||
чтения" (WAR) и "записи после записи" (WAW). Зависимость WAR состоит в
|
||||
том, что команда должна записать новое значение в ячейку памяти или регистр,
|
||||
из которых должно быть произведено чтение. Лишние зависимости появляются
|
||||
по нескольким причинам: не оптимизированный программный код, ограничение
|
||||
количества регистров, стремление к экономии памяти, наличие программных
|
||||
циклов.
|
||||
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user