185 lines
5.4 KiB
C++
Executable File
185 lines
5.4 KiB
C++
Executable File
/* ‹ ¡®à â®à ï à ¡®â 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. Ž¯à¥¤¥«¨â¥ ¨ ®¡êïá¨â¥ ¢à¥¬ï ¢ë¯®«¥¨ï äà £¬¥â®¢ ¯à®£à ¬¬.
|
||
//
|
||
/* <20><>€‚ˆ‹€ Ž<>š…„ˆ<E2809E>…<EFBFBD>ˆŸ ŠŽŒ€<C592>„
|
||
<EFBFBD>à®æ¥áá®à Pentium ¬®¦¥â ¢ë¯®«ïâì ®¤ã ¨«¨ ¤¢¥ ª®¬ ¤ë ¢ ª ¦¤®¬
|
||
â ªâ¥. „«ï ¢ë¯®«¥¨ï ¢ ¯à®æ¥áá®à¥ ®¤®¢à¥¬¥® ¤¢ãå ª®¬ ¤ ®¨
|
||
¤®«¦ë 㤮¢«¥â¢®àïâì á«¥¤ãî騬 ãá«®¢¨ï¬:
|
||
|
||
-®¡¥ ª®¬ ¤ë ¢ ¯ ॠ®¡ï§ ë ¡ëâì <¯à®áâ묨> ¢ á¬ëá«¥, ®¯à¥¤¥«¥®¬
|
||
¨¦¥;
|
||
-¬¥¦¤ã ¨¬¨ ¥ ¤®«¦® ¡ëâì ॣ¨áâ஢ëå § ¢¨á¨¬®á⥩ ⨯ ç⥨¥- ¯®á«¥-
|
||
§ ¯¨á¨ ¨«¨ § ¯¨áì-¯®á«¥-§ ¯¨á¨ (read-after-write or write-after-wnte) ,
|
||
-¨ ®¤ ¨§ ª®¬ ¤ ¥ ¬®¦¥â ᮤ¥à¦ âì ᬥ饨¥ (displacement) ¨
|
||
¥¯®á।áâ¢¥ë© ®¯¥à ¤;
|
||
-ª®¬ ¤ë á ¯à¥ä¨ªá ¬¨ (§ ¨áª«î票¥¬ OF ¢ ª®¬ ¤ å ¯¥à¥å®¤ JCC)
|
||
¬®£ãâ ¢áâà¥ç âìáï ⮫쪮 ¢ U-ª®¢¥©¥à¥.
|
||
<20>®¤ ¯à®áâ묨 ª®¬ ¤ ¬¨ ¯®¨¬ îâáï ª®¬ ¤ë, ã¯à ¢«¥¨¥
|
||
¢ë¯®«¥¨¥¬ ª®â®àëå ®áãé¥á⢫ï¥âáï ¯¯ à â®, ¡¥§ ¨á¯®«ì§®¢ ¨ï
|
||
¬¨ªà®ª®¬ ¤, ¨ ª®â®àë¥ à¥ «¨§ãîâáï § ®¤¨ â ªâ. ˆáª«î票¥¬ ïîâáï
|
||
ª®¬ ¤ë 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 ¯à®¨§¢®«ì®¥
|
||
ç¨á«® à §à冷¢ ¬®£ãâ ᯠਢ âìáï ⮫쪮 ª ª ¯¥à¢ë¥ ( ª®¬ ¤ë ¢ ¯ à¥).
|
||
<20>¥£¨áâà®¢ë¥ § ¢¨á¨¬®áâ¨
|
||
<20>¥£¨áâà®¢ë¥ § ¢¨á¨¬®áâ¨, § ¯à¥é î騥 ᯠਢ ¨¥ ª®¬ ¤, ¢ª«îç îâ
|
||
¥ï¢ë¥ § ¢¨á¨¬®á⨠ç¥à¥§ ॣ¨áâàë ¨«¨ ä« £¨, ¥ 㪠§ ë¥ ¢ ª®¬ ¤¥.
|
||
‚ᥠ¢¨¤ë § ¢¨á¨¬®á⥩ ¯® ¤ ë¬ ¬®£ãâ ¡ëâì ª« áá¨ä¨æ¨à®¢ ë ¯®
|
||
⨯ã áá®æ¨ 権: RAR - "ç⥨¥ ¯®á«¥ ç⥨ï", WAR - "§ ¯¨áì ¯®á«¥ ç⥨ï" ¨
|
||
WAW - "§ ¯¨áì ¯®á«¥ § ¯¨á¨", RAW - "ç⥨¥ ¯®á«¥ § ¯¨á¨". <20>¥ª®â®àë¥ ¨§
|
||
§ ¢¨á¨¬®á⥩ ¯® ¤ ë¬ ¬®£ãâ ¡ëâì ãáâà ¥ë. RAR, ¯® áã⨠¤¥« ,
|
||
ᮮ⢥âáâ¢ã¥â ®âáãâáâ¢¨î § ¢¨á¨¬®á⥩, ¯®áª®«ìªã ¢ ¤ ®¬ á«ãç ¥ ¯®à冷ª
|
||
¢ë¯®«¥¨ï ª®¬ ¤ ¥ ¨¬¥¥â § 票ï. „¥©á⢨⥫쮩 § ¢¨á¨¬®áâìî ï¥âáï
|
||
⮫쪮 "ç⥨¥ ¯®á«¥ § ¯¨á¨" (RAW), â ª ª ª ¥®¡å®¤¨¬® ¯à®ç¨â âì
|
||
¯à¥¤¢ à¨â¥«ì® § ¯¨á ë¥ ®¢ë¥ ¤ ë¥, ¥ áâ àë¥.
|
||
‹¨è¨¥ § ¢¨á¨¬®á⨠¯® ¤ ë¬ ¯®ï¢«ïîâáï ¢ १ã«ìâ ⥠"§ ¯¨á¨ ¯®á«¥
|
||
ç⥨ï" (WAR) ¨ "§ ¯¨á¨ ¯®á«¥ § ¯¨á¨" (WAW). ‡ ¢¨á¨¬®áâì WAR á®á⮨⠢
|
||
⮬, çâ® ª®¬ ¤ ¤®«¦ § ¯¨á âì ®¢®¥ § 票¥ ¢ ï祩ªã ¯ ¬ï⨠¨«¨ ॣ¨áâà,
|
||
¨§ ª®â®àëå ¤®«¦® ¡ëâì ¯à®¨§¢¥¤¥® ç⥨¥. ‹¨è¨¥ § ¢¨á¨¬®á⨠¯®ï¢«ïîâáï
|
||
¯® ¥áª®«ìª¨¬ ¯à¨ç¨ ¬: ¥ ®¯â¨¬¨§¨à®¢ ë© ¯à®£à ¬¬ë© ª®¤, ®£à ¨ç¥¨¥
|
||
ª®«¨ç¥á⢠ॣ¨áâ஢, áâ६«¥¨¥ ª íª®®¬¨¨ ¯ ¬ïâ¨, «¨ç¨¥ ¯à®£à ¬¬ëå
|
||
横«®¢.
|
||
|
||
*/
|