锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
銆銆瀹炵幇鏂規硶錛氬湪PHP璁懼畾(configure)鏃跺姞鍏ュ涓嬮夐」銆?
--enable-shmop --enable-sysvsem
銆銆榪欐牱灝變嬌寰椾綘鐨凱HP緋葷粺鍙互澶勭悊鐩稿叧鐨処PC鍑芥暟浜嗐?
銆銆IPC鏄粈涔堬紵
銆銆IPC (Inter-process communication) 鏄竴涓猆nix鏍囧噯閫氳鏈哄埗錛屽畠鎻愪緵浜嗕嬌寰楀湪鍚屼竴鍙頒富鏈轟笉鍚岃繘紼嬩箣闂村彲浠ヤ簰鐩擱氳鐨勬柟娉曘傚熀鏈殑IPC澶勭悊鏈哄埗鏈?縐嶏細瀹冧滑鍒嗗埆鏄叡浜唴瀛樸佷俊鍙烽噺鍜屾秷鎭槦鍒椼傛湰鏂囦腑鎴戜滑涓昏璁ㄨ鍏變韓鍐呭瓨鍜屼俊鍙烽噺鐨勪嬌鐢ㄣ傚叧浜庢秷鎭槦鍒楋紝絎旇呭湪涓嶄箙鐨勫皢鏉ヨ繕浼氫笓闂ㄤ粙緇嶃?
銆銆鍦≒HP涓嬌鐢ㄥ叡浜唴瀛樻
銆銆鍦ㄤ笉鍚岀殑澶勭悊榪涚▼涔嬮棿浣跨敤鍏變韓鍐呭瓨鏄竴涓疄鐜頒笉鍚岃繘紼嬩箣闂寸浉浜掗氳鐨勫ソ鏂規硶銆傚鏋滀綘鍦ㄤ竴涓繘紼嬩腑鍚戞墍鍏變韓鐨勫唴瀛樺啓鍏ヤ竴孌典俊鎭紝閭d箞鎵鏈夊叾浠栫殑榪涚▼涔熷彲浠ョ湅鍒拌繖孌佃鍐欏叆鐨勬暟鎹傞潪甯告柟渚褲傚湪PHP涓湁浜嗗叡浜唴瀛樼殑甯姪錛屼綘鍙互瀹炵幇涓嶅悓榪涚▼鍦ㄨ繍琛屽悓涓孌礟HP鑴氭湰鏃惰繑鍥炰笉鍚岀殑緇撴灉銆傛垨瀹炵幇瀵筆HP鍚屾椂榪愯鏁伴噺鐨勫疄鏃舵煡璇㈢瓑絳夈?
銆銆鍏變韓鍐呭瓨鍏佽涓や釜鎴栬呭涓繘紼嬪叡浜竴緇欏畾鐨勫瓨鍌ㄥ尯銆傚洜涓烘暟鎹笉闇瑕佸湪瀹㈡埛鏈哄拰鏈嶅姟鍣ㄤ箣闂村鍒訛紝鎵浠ヨ繖鏄渶蹇殑涓縐岻PC銆備嬌鐢ㄥ叡浜唴瀛樼殑鍞竴紿嶉棬鏄涓繘紼嬪涓緇欏畾瀛樺偍鍖虹殑鍚屾瀛樺彇銆?
銆銆濡備綍寤虹珛涓涓叡浜唴瀛樻鍛紵涓嬮潰鐨勪唬鐮佸彲浠ュ府浣犲緩绔嬪叡浜唴瀛樸?nbsp;
$shm_id = shmop_open($key, $mode, $perm, $size);
銆銆娉ㄦ剰錛屾瘡涓叡浜唴瀛樻閮芥湁涓涓敮涓鐨処D, 鍦≒HP涓紝shmop_open浼氭妸寤虹珛濂界殑鍏變韓鍐呭瓨孌電殑ID榪斿洖錛岃繖閲屾垜浠敤$shm_id璁板綍瀹冦傝?key鏄竴涓垜浠昏緫涓婅〃紺哄叡浜唴瀛樻鐨凨ey鍊箋備笉鍚岃繘紼嬪彧瑕侀夋嫨鍚屼竴涓狵ey id灝卞彲浠ュ叡浜悓涓孌靛瓨鍌ㄦ銆備範鎯笂鎴戜滑鐢ㄤ竴涓覆錛堢被浼兼枃浠跺悕涓鏍風殑涓滆タ錛夌殑鏁e垪鍊間綔涓簁ey id. $mode鎸囨槑浜嗗叡浜唴瀛樻鐨勪嬌鐢ㄦ柟寮忋傝繖閲岀敱浜庢槸鏂板緩錛屽洜姝ゅ間負’c’ –鍙朿reate涔嬫剰銆傚鏋滀綘鏄闂凡緇忓緩绔嬭繃鐨勫叡浜唴瀛橀偅涔堣鐢?#8217;a’,-- 鍙朅ccess涔嬫剰銆?perm鍙傛暟瀹氫箟浜嗚闂殑鏉冮檺錛?榪涘埗錛屽叧浜庢潈闄愬畾涔夎鐪婾NIX鏂囦歡緋葷粺甯姪銆?size瀹氫箟浜嗗叡浜唴瀛樼殑澶у皬銆傚敖綆℃湁鐐硅薄fopen(鏂囦歡澶勭悊)浣犲彲涓嶈褰撳畠鍚屾枃浠跺鐞嗕竴鏍楓傚悗闈㈢殑鎻忚堪浣犲皢鐪嬪埌鐫涓鐐廣?
銆銆渚嬪錛?
$shm_id = shmop_open(0xff3, "c", 0644, 100);
銆銆榪欓噷鎴戜滑鎵撳紑浜嗕竴涓叡浜唴瀛樻 閿?xff3 –rw-r鈥攔鈥旀牸寮忥紝澶у皬涓?00瀛楄妭銆?
銆銆濡傛灉闇瑕佽闂凡鏈夌殑鍏變韓鍐呭瓨孌碉紝浣犲繀欏誨湪璋冪敤shmop_open涓絎?銆?涓弬鏁頒負0銆?
銆銆IPC宸ヤ綔鐘舵佺殑鏌ヨ
銆銆鍦║nix涓嬶紝浣犲彲浠ョ敤涓涓懡浠よ紼嬪簭ipcs鏌ヨ緋葷粺鎵鏈夌殑IPC璧勬簮鐘舵併備笉榪囨湁浜涚郴緇熻姹傞渶瑕佽秴綰х敤鎴鋒柟鑳芥墽琛屻備笅鍥炬槸涓孌礽pcs鐨勮繍琛岀粨鏋溿?/p>

銆銆涓婂浘涓郴緇熸樉紺轟簡4涓叡浜唴瀛樻錛屾敞鎰忓叾涓4涓敭鍊間負0x00000ff3鐨勫氨鏄垜浠垰鍒氳繍琛岃繃鐨凱HP紼嬪簭鎵鍒涘緩鐨勩傚叧浜巌pcs鐨勭敤娉曡鍙傝僓NIX鐢ㄦ埛鎵嬪唽銆?
銆銆濡備綍閲婃斁鍏變韓鍐呭瓨鍛?
銆銆閲婃斁鍏變韓鍐呭瓨鐨勫姙娉曟槸璋冪敤PHP鎸囦護:shmop_delete($id)
shmop_delete($id);
銆銆$id 灝辨槸浣犺皟鐢╯hmop_open鎵瀛樼殑shmop_op鐨勮繑鍥炲箋傝繕鏈変竴涓姙娉曞氨鏄敤UNIX鐨勭鐞嗘寚浠?
銆銆ipcrm id, id灝辨槸浣犵敤ipcs鐪嬪埌鐨処D.鍜屼綘紼嬪簭涓殑$id涓嶄竴鏍楓備笉榪囪灝忓績錛屽鏋滀綘鐢╥pcrm鐩存帴鍒犻櫎鍏變韓鍐呭瓨孌甸偅涔堟湁鍙兘瀵艱嚧鍏朵粬涓嶇煡閬撹繖涓鎯呭喌鐨勮繘紼嬪湪寮曠敤榪欎釜宸茬粡涓嶅瀛樺湪鐨勫叡浜唴瀛樺櫒鏃跺嚭鐜頒竴浜涗笉鍙嫻嬬殑閿欒(寰寰緇撴灉涓嶅)銆?
銆銆濡備綍浣跨敤(璇誨啓)鍏變韓鍐呭瓨鍛?
銆銆浣跨敤濡備笅鎵紺哄嚱鏁板悜鍏變韓鍐呭瓨鍐欏叆鏁版嵁
int shmop_write (int shmid, string data, int offset)
銆銆鍏朵腑shmid鏄敤shmop_open榪斿洖鐨勫彞鏌勩?Data鍙橀噺瀛樻斁浜嗚瀛樻斁鐨勬暟鎹?offset鎻忚堪浜嗗啓鍏ヤ粠鍏變韓鍐呭瓨鐨勫紑濮嬬涓涓瓧鑺傜殑浣嶇疆錛堜互0寮濮嬶級銆?
銆銆璇誨彇鎿嶄綔鏄細
string shmop_read (int shmid, int start, int count)
銆銆鍚屾牱錛屾寚鏄?shmid,寮濮嬪亸縐婚噺錛堜互0寮濮嬶級銆佹昏鍙栨暟閲忋傝繑鍥炵粨鏋滀覆銆傝繖鏍鳳紝浣犲氨鍙互鎶婂叡浜唴瀛樻褰撲綔鏄竴涓瓧鑺傛暟緇勩傝鍑犱釜鍐嶅啓鍑犱釜錛屾兂騫插槢灝卞共鍢涳紝鍗佸垎鏂逛究銆?
銆銆澶氳繘紼嬮棶棰樼殑鑰冭檻
銆銆鐜板湪錛屽湪鍗曠嫭鐨勪竴涓狿HP榪涚▼涓鍐欍佸垱寤恒佸垹闄ゅ叡浜唴瀛樻柟闈笂浣犲簲璇ユ病鏈夐棶棰樹簡銆備絾鏄紝鏄劇劧瀹為檯榪愯涓笉鍙兘鍙槸涓涓狿HP榪涚▼鍦ㄨ繍琛屼腑銆傚鏋滃湪澶氫釜榪涚▼鐨勬儏鍐典笅浣犺繕鏄部鐢ㄥ崟涓繘紼嬬殑澶勭悊鏂規硶錛屼綘涓瀹氫細紕板埌闂 ---- 钁楀悕鐨勫茍琛屽拰浜掓枼闂銆傛瘮濡傝鏈?涓繘紼嬪悓鏃墮渶瑕佸鍚屼竴孌靛唴瀛樿繘琛岃鍐欍傚綋涓や釜榪涚▼鍚屾椂鎵ц鍐欏叆鎿嶄綔鏃訛紝浣犲皢寰楀埌涓涓敊璇殑鏁版嵁錛屽洜涓鴻孌靛唴瀛樺皢涔嬪彲鑳芥槸鏈鍚庢墽琛岀殑榪涚▼鐨勫唴瀹癸紝鐢氳嚦鏄敱2涓繘紼嬪啓鍏ョ殑鏁版嵁杞祦闅忔満鍑虹幇鐨勪竴孌墊販鍚堢殑鍥涗笉璞°傝繖鏄劇劧鏄笉鑳芥帴鍙楃殑銆備負浜嗚В鍐寵繖涓棶棰橈紝鎴戜滑蹇呴』寮曞叆浜掓枼鏈哄埗銆備簰鏂ユ満鍒跺湪寰堝鎿嶄綔緋葷粺鐨勬暀鏉愪笂閮芥湁涓撻棬璁茶堪錛岃繖閲屼笉澶氶噸澶嶃傚疄鐜頒簰鏂ユ満鍒剁殑鏈綆鍗曞姙娉曞氨鏄嬌鐢ㄤ俊鍙風伅銆備俊鍙烽噺鏄彟澶栦竴縐嶈繘紼嬮棿閫氳(IPC)鐨勬柟寮忥紝瀹冨悓鍏朵粬IPC鏈烘瀯(綆¢亾銆丗IFO銆佹秷鎭槦鍒?涓嶅悓銆傚畠鏄竴涓鏁板櫒錛岀敤浜庢帶鍒跺榪涚▼瀵瑰叡浜暟鎹殑瀛樺偍銆傚悓鏍風殑鏄綘鍙互鐢╥pcs鍜宨pcrm瀹炵幇瀵逛俊鍙風伅浣跨敤鐘舵佺殑鏌ヨ鍜屽鍏跺疄鐜板垹闄ゆ搷浣溿傚湪PHP涓綘鍙互鐢ㄤ笅鍒楀嚱鏁板垱寤轟竴涓柊鐨勪俊鍙烽噺騫惰繑鍥炴搷浣滆淇″彿閲忕殑鍙ユ焺銆傚鏋滆key鎸囧悜鐨勪俊鍙烽噺宸茬粡瀛樺湪錛宻em_get鐩存帴榪斿洖鎿嶄綔璇ヤ俊鍙烽噺鐨勫彞鏌勩?
int sem_get (int key [, int max_acquire [, int perm]])
銆銆$max_acquire 鎸囨槑鍚屾椂鏈澶氬彲浠ョ敤鍑犱釜榪涚▼榪涘叆璇ヤ俊鍙瘋屼笉蹇呯瓑寰呰淇″彿琚噴鏀撅紙涔熷氨鏄渶澶у悓鏃跺鐞嗘煇涓璧勬簮鐨勮繘紼嬫暟鐩?涓鑸鍊煎潎涓轟竴錛夈?perm鎸囨槑浜嗚闂潈闄愩?
銆銆涓鏃︿綘鎴愬姛鐨勬嫢鏈変簡涓涓俊鍙烽噺錛屼綘瀵瑰畠鎵鑳藉仛鐨勫彧鏈?縐嶏細璇鋒眰銆侀噴鏀俱傚綋浣犳墽琛岄噴鏀炬搷浣滄椂, 緋葷粺灝嗘妸璇ヤ俊鍙峰煎噺涓銆傚鏋滃皬浜?閭e氨榪樿涓?銆傝屽綋浣犳墽琛岃姹傛搷浣滄椂錛岀郴緇熷皢鎶婅淇″彿鍊煎姞涓錛屽鏋滆鍊煎ぇ浜庤瀹氱殑鏈澶у奸偅涔堢郴緇熷皢鎸傝搗浣犵殑澶勭悊榪涚▼鐩村埌鍏朵粬榪涚▼閲婃斁鍒板皬浜庢渶澶у間負姝€備竴鑸儏鍐典笅鏈澶у艱涓?,榪欐牱涓鏉ュ綋涓涓繘紼嬭幏寰楄姹傛椂鍏朵粬鍚庨潰鐨勮繘紼嬪彧鑳界瓑寰呭畠閫鍑轟簰鏂ュ尯鍚庨噴鏀句俊鍙烽噺鎵嶈兘榪涘叆璇ヤ簰鏂ュ尯騫跺悓鏃惰涓虹嫭鍗犳柟寮忋傝繖鏍風殑淇″彿閲忓父縐頒負鍙屾佷俊鍙烽噺銆傚綋鐒訛紝濡傛灉鍒濆兼槸浠繪剰涓涓鏁板氨琛ㄦ槑鏈夊灝戜釜鍏變韓璧勬簮鍗曚綅鍙緵鍏變韓搴旂敤銆?
銆銆鐢寵銆侀噴鏀炬搷浣滅殑PHP鏍煎紡濡備笅錛?
int sem_acquire (int sem_identifier)
鐢寵
int sem_release (int sem_identifier)
閲婃斁
鍏朵腑sem_identifier鏄皟鐢╯em_get鐨勮繑鍥炲鹼紙鍙ユ焺錛夈?nbsp;
涓涓畝鍗曠殑浜掓枼鍗忚渚嬪瓙
涓嬮潰鏄竴孌靛緢綆鍗曠殑浜掓枼鎿嶄綔瑙勭▼銆?
$semid=sem_get(0xee3,1,0666);
$shm_id = shmop_open(0xff3, "c", 0644, 100);
sem_acquire($semid);顥ヮ棩顥ヮ棩顥?nbsp;//鐢寵
/* 榪涘叆涓寸晫鍖?/span>*/
/*榪欓噷錛屽鍏變韓鍐呭瓨榪涜澶勭悊 */
sem_release($semid); 顥ヮ棩顥ヮ棩顥?/span>//閲婃斁
銆銆姝e浣犳墍鐪嬪埌鐨勶紝浜掓枼鐨勫疄鐜板緢綆鍗曪細鐢寵榪涘叆涓寸晫鍖猴紝瀵逛復鐣屽尯璧勬簮榪涜鎿嶄綔錛堟瘮濡備慨鏀瑰叡浜唴瀛橈級閫鍑轟復鐣屽尯騫墮噴鏀句俊鍙楓傝繖鏍蜂竴鏉ュ氨鍙互淇濊瘉鍦ㄥ悓涓涓椂闂寸墖涓笉鍙兘鏈夊悓鏃?涓繘紼嬪鍚屼竴孌靛叡浜唴瀛樿繘琛屾搷浣溿傚洜涓轟俊鍙烽噺鏈哄埗淇濊瘉涓涓椂闂寸墖鍙兘鐢變竴涓繘紼嬭繘鍏ワ紝鍏朵粬榪涚▼蹇呴』絳夊緟褰撳墠澶勭悊鐨勮繘紼嬪畬鎴愬悗鏂硅兘榪涘叆銆?
銆銆涓寸晫鍖轟竴鑸槸鎸囬偅浜涗笉鍏佽鍚屾椂鏈夊涓繘紼嬪茍鍙戝鐞嗙殑浠g爜孌點?
銆銆瑕佹敞鎰忕殑鏄?鍦≒HP涓繀欏葷敱鍚屼竴涓繘紼嬮噴鏀懼畠鎵鍗犵敤鐨勪俊鍙烽噺銆傚湪涓鑸郴緇熶腑鍏佽榪涚▼閲婃斁鍒殑榪涚▼鍗犵敤鐨勪俊鍙楓傚湪緙栧啓涓寸晫鍖轟唬鐮佷竴瀹氳灝忓績璁捐璧勬簮鐨勫垎閰嶏紝閬垮厤A絳塀錛孊絳堿鐨勬閿佹儏鍐靛彂鐢熴?nbsp;
銆銆榪愵棩鐢?/strong>
銆銆IPC鐨勮繍鐢ㄦ槸鍗佸垎騫挎硾鐨勩傛瘮濡傦紝鍦ㄤ笉鍚岃繘紼嬮棿淇濆瓨涓涓В閲婅繃鐨勫鏉傜殑閰嶇疆鏂囦歡銆佹垨鍏蜂綋璁劇疆鐨勭敤鎴風瓑錛屼互閬垮厤閲嶅澶勭悊銆傛垜涔熸浘緇忕敤鍏變韓鍐呭瓨鐨勬妧鏈妸涓澶ф壒PHP鑴氭湰蹇呴』寮曠敤鐨勪竴涓緢澶х殑鏂囦歡鏀懼叆鍏變韓鍐呭瓨錛屽茍鐢辨鏄捐憲鎻愬崌浜哤eb鏈嶅姟鐨勯熷害銆佹秷闄や簡閮ㄥ垎鐡墮銆傚叧浜庡畠鐨勪嬌鐢ㄨ繕鏈夎亰澶╁錛屽璺箍鎾瓑絳夈侷PC鐨勫▉鍔涘彇鍐充簬浣犵殑鎯寵薄鍔涚殑澶у皬銆傚鏋滄湰鏂囧浣犳湁涓鐐圭偣鍚彂錛岄偅鎴戜笉鑳滆崳騫搞傛効鎰忓緢浣犺璁鴻繖浠や漢鍏ヨ糠鐨勭數鑴戞妧鏈侲mail: qwyaxm@163.net
function smarty_modifier_truncate_cn($string, $length = 80, $code = 'UTF-8', $etc = '
')
{
if ($length == 0)
return '';
if($code == 'UTF-8'){
$pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/";
}
else{
$pa = "/[\x01-\x7f]|[\xa1-\xff][\xa1-\xff]/";
}
preg_match_all($pa, $string, $t_string);
if(count($t_string[0]) > $length)
return join('', array_slice($t_string[0], 0, $length)).$etc;
return join('', array_slice($t_string[0], 0, $length));
}
<html>
<head>
<title>Truncate 嫻嬭瘯</title>
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
</head>
<body>
{{$string}}<br>
{{$string|truncate_cn:15:"":""}}<br>
</body>
</html>
<html>
<head>
<title>Truncate 嫻嬭瘯</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
{{$string}}<br>
{{$string|truncate_cn:15:"UTF-8":"
"}}<br>
</body>
</html>浼樺寲鏄竴浠墮潪甯擱噸瑕佺殑浜嬫儏銆備綔涓轟竴涓▼搴忚璁¤咃紝浣犺偗瀹氬笇鏈涜嚜宸辯殑紼嬪簭鏃㈠皬鍙堝揩銆侱OS鏃朵唬鐨勮澶氫功涓兘鎻愬埌錛屸滄煇鏌愮紪璇戝櫒鑳藉鐢熸垚闈炲父绱у噾鐨勪唬鐮佲濓紝鎹㈣█涔嬶紝緙栬瘧鍣ㄤ細涓轟綘鎶婁唬鐮佸敖鍙兘鍦扮緝鍑忥紝濡傛灉浣犺兘澶熸紜湴浣跨敤瀹冩彁渚涚殑鍔熻兘鐨勮瘽銆傜洰鍓嶏紝Intel x86浣撶郴涓婃祦琛岀殑C/C++緙栬瘧鍣紝鍖呮嫭Intel C/C++ Compiler, GNU C/C++ Compiler錛屼互鍙婃渶鏂扮殑Microsoft鍜孊orland緙栬瘧鍣紝閮借兘澶熸彁渚涢潪甯哥揣鍑戠殑浠g爜銆傛紜湴浣跨敤榪欎簺緙栬瘧鍣紝鍒欏彲浠ュ緱鍒版ц兘瓚沖濂界殑浠g爜銆?/p>
浣嗘槸錛屾満鍣ㄧ洰鍓嶈繕涓嶈兘鍍忎漢閭f牱鍋氬瘜浜庡垱閫犳х殑浜嬫儏銆傚洜鑰岋紝鏈変簺鏃跺欐垜浠彲鑳戒細涓嶅緱涓嶆墜宸ユ潵鍋氫竴浜涗簨鎯呫?/p>
浣跨敤姹囩紪璇█浼樺寲浠g爜鏄竴浠跺洶闅撅紝鑰屼笖鎶宸фу緢寮虹殑宸ヤ綔銆傚緢澶氱紪璇戝櫒鑳藉鐢熸垚涓哄鐞嗗櫒榪涜榪囩壒孌婁紭鍖栧鐞嗙殑浠g爜錛屼竴鏃﹁繘琛屼慨鏀癸紝榪欎簺鐗規畩浼樺寲鍙兘灝變細琚牬鍧忚屽け鏁堛傚洜姝わ紝鍦ㄤ綘鍐沖畾浣跨敤鑷繁鐨勬眹緙栦唬鐮佷箣鍓嶏紝涓瀹氳嫻嬭瘯涓涓嬶紝鍒板簳鏄紪璇戝櫒鐢熸垚鐨勯偅孌典唬鐮佹洿濂斤紝榪樻槸浣犵殑鏇村ソ銆?/p>
鏈珷涓皢璁ㄨ涓浜涚紪璇戝櫒鍦ㄦ煇浜涙椂鍊欎細鍋氱殑浜嬫儏(浠庢煇縐嶆剰涔変笂璇達紝鏈珷鍐呭鏇村儚鏄綆楁満涓撲笟鐨勫熀紜璇句腑銆婄紪璇戠▼搴忚璁″師鐞嗐嬨併婅綆楁満緇勬垚鍘熺悊銆嬨併婅綆楁満浣撶郴緇撴瀯銆嬭紼嬩腑鐨勭浉鍏沖唴瀹?銆傛湰绔犵殑璁稿鍐呭鍜屾眹緙栬璦紼嬪簭璁捐鏈韓鍏崇郴騫朵笉鏄緢绱у瘑錛屽畠浠鏁版槸鍦ㄤ負浣跨敤姹囩紪璇█榪涜浼樺寲鍋氬噯澶囥傜紪璇戝櫒紜疄鍋氳繖浜涗紭鍖栵紝浣嗗畠騫朵笉鎬繪槸榪欎箞鍋氾紱姝ゅ錛屽氨緙栬瘧鍣ㄧ殑璁捐鏈川鏉ヨ錛屽畠紜疄娌℃湁涔夊姟榪欎箞鍋氣斺旂紪璇戝櫒鍋氱殑鏄瓑涔夊彉鎹紝鑰屼笉鏄瓑鏁堝彉鎹€傝冭檻涓嬮潰鐨勪唬鐮侊細
| // 紼嬪簭孌? int gaussianSum(){ 聽 int i, j=0; 聽 for(i=0; i<100; i++) j+=i; 聽 return j; |
濂界殑錛岄鍏堬紝緇濆ぇ澶氭暟緙栬瘧鍣ㄦ亹鎬曚笉浼氳嚜浣滀富寮犲湴鎶婂畠鈥滅鏀光濅負
| // 紼嬪簭孌?(鏀硅繘1) int gaussianSum(){ 聽 int i, j=0; 聽 for(i=1; i<100; i++) j+=i; 聽 return j; |
澶氭暟錛堜絾紜疄涓嶆槸鍏ㄩ儴錛夌紪璇戝櫒涔熶笉浼氭妸瀹冩敼涓?/p>
// 紼嬪簭孌?(鏀硅繘2) |
榪欎袱涓慨鏀圭増鏈兘涓嶅悓浜庡師鍏堢▼搴忕殑璇箟銆傞鍏堟垜浠湅鍒幫紝璁﹊浠?寮濮嬫槸娌℃湁蹇呰鐨勶紝鍥犱負j+=i鏃訛紝i=0涓嶄細鍋氫換浣曟湁鐢ㄧ殑浜嬫儏錛涚劧鍚庢槸錛屽疄闄呬笂娌℃湁蹇呰姣忎竴嬈¢兘璁$畻1+...+100鐨勫拰鈥斺斿畠鍙互琚鍏堣綆楋紝騫跺湪闇瑕佺殑鏃跺欒繑鍥炪?/p>
榪欎釜渚嬪瓙涔熻騫朵笉鎭板綋(浼拌娌′漢浼氬啓鍑烘渶鍒濈増鏈偅鏍風殑浠g爜)錛屼絾榪欑瀹炶返鍦ㄧ▼搴忚璁′腑紜疄鍙兘鍑虹幇銆傛垜浠妸鏀硅繘2縐頒負緙栬瘧鏃惰〃杈懼紡棰勫厛璁$畻錛岃屾妸鏀硅繘1鎴愪負寰幆寮哄害鍓婂噺銆?/p>
鐒惰岋紝涓浜涙柊鐨勭紪璇戝櫒鐨勭‘浼氳繘琛岃繖涓ょ浼樺寲銆備笉榪囧埆鎱岋紝鐪嬬湅涓嬮潰鐨勪唬鐮侊細
| // 紼嬪簭孌? int GetFactorial(int k){ 聽 int i, j=1; 聽 if((k<0) || (k>=10)) return -1; 聽 if((k<=1)) return 1 聽 for(i=1; i<k; i++) j*=i; 聽 return j; |
紼嬪簭閲囩敤鐨勬槸涓涓椂闂村鏉傚害涓篛(n)鐨勭畻娉曪紝涓嶈繃錛屾垜浠彲浠ユ妸浠栬交鏄撳湴鏀逛負O(1)鐨勭畻娉曪細
| // 紼嬪簭孌? (闈炶鑼冩敼榪? int GetFactorial(int k){ 聽 int i, j=1; 聽 static const int FractorialTable[]={1, 1, 2, 6, 24, 聽 if((k<0) || (k>=10)) return -1; 聽 return FractorialTable[k]; |
榪欐槸涓涓吀鍨嬬殑浠ョ┖闂存崲鏃墮棿鐨勫仛娉曘傞氱敤鐨勭紪璇戝櫒涓嶄細榪欎箞鍋氣斺斿洜涓哄畠娌℃湁鍔炴硶鍦ㄧ紪璇戞椂紜畾浣犳槸涓嶆槸瑕佽繖涔堟敼銆傚彲浠ヨ錛屽鏋滅紪璇戝櫒鐪熺殑榪欐牱鍋氱殑璇濓紝閭e皢鏄竴浠跺彲鎬曠殑浜嬫儏錛屽洜涓洪偅鏃跺欎綘灝嗗緢闅劇煡閬撶紪璇戝櫒鐢熸垚鐨勪唬鐮佸拰鑷繁鎯崇殑鍒板簳鏈夊澶х殑宸窛銆?/p>
褰撶劧錛岃繖綾諱紭鍖栬秴鍑轟簡鏈枃鐨勮寖鍥粹斺斿熀鏈笂錛屾垜鎶婂畠浠綊鍏モ滅畻娉曚紭鍖栤濓紝鑰屼笉鏄滅▼搴忎紭鍖栤濅竴綾匯傜被浼肩殑浼樺寲榪囩▼闇瑕佺▼搴忚璁′漢鍛樺浜庣▼搴忛昏緫闈炲父娣卞叆鍦頒簡瑙e拰鍏ㄧ洏鐨勬帉鎻★紝鍚屾椂錛屼篃闇瑕佹湁涓板瘜鐨勭畻娉曠煡璇嗐?/p>
鑷劧錛屽鏋滀綘甯屾湜鑷繁鐨勭▼搴忔ц兘鏈夊ぇ騫呭害鐨勬彁鍗囷紝閭d箞棣栧厛搴旇鍋氱殑鏄畻娉曚紭鍖栥備緥濡傦紝鎶婁竴涓?i>O(n2)鐨勭畻娉曟浛鎹負涓涓?i>O(n)鐨勭畻娉曪紝鍒欑▼搴忕殑鎬ц兘鎻愬崌灝嗚繙榪滆秴榪囧浜庝釜鍒鍙ョ殑淇敼銆傛澶栵紝涓涓凡緇忔敼鍐欎負姹囩紪璇█鐨勭▼搴忥紝濡傛灉瑕佸啀鍦ㄧ畻娉曚笂浣滃ぇ騫呭害鐨勪慨鏀癸紝鍏跺伐浣滈噺灝嗗拰閲嶅啓鐩稿綋銆傚洜姝わ紝鍦ㄥ喅瀹氫嬌鐢ㄦ眹緙栬璦榪涜浼樺寲涔嬪墠錛屽繀欏婚鍏堣冭檻綆楁硶浼樺寲銆備絾鍋囧宸茬粡鏄渶浼樼殑綆楁硶錛岀▼搴忚繍琛岄熷害榪樻槸涓嶅蹇庝箞鍔炲憿錛?/p>
濂界殑錛岀幇鍦紝鍋囧畾浣犲凡緇忎嬌鐢ㄤ簡宸茬煡鏈濂界殑綆楁硶錛屽喅瀹氭妸瀹冧氦緇欑紪璇戝櫒錛岃鎴戜滑鏉ョ湅鐪嬬紪璇戝櫒浼氫負鎴戜滑鍋氫粈涔堬紝浠ュ強鎴戜滑鏄惁鏈夋満浼氭彃鎵嬫浜嬶紝鍋氬緱鏇村ソ銆?/p>
姣旇緝鏂扮殑緙栬瘧鍣ㄥ湪緙栬瘧鏃朵細鑷姩鎶婁笅闈㈢殑浠g爜錛?/p>
| for(i=0; i<10; i++){ 聽 j = i; 聽 k = j + i; } |
鑷沖皯鍙樻崲涓?/p>
| for(i=0; i<10; i++); j=i; k=j+i; |
鐢氳嚦
| j=i=10; k=20; |
褰撶劧錛岀湡姝g殑緙栬瘧鍣ㄥ疄闄呬笂鏄湪涓棿浠g爜灞傛浣滆繖浠朵簨鎯呫?/p>
鍘熺悊濡傛灉鏁版嵁欏圭殑鏌愪釜涓棿鍊?紼嬪簭鎵ц榪囩▼涓殑璁$畻緇撴灉)鍦ㄤ嬌鐢ㄤ箣鍓嶈鍙︿竴涓棿鍊艱鐩栵紝鍒欑浉鍏寵綆椾笉蹇呰繘琛屻?/p>
涔熻鏈変漢浼氶棶錛岀紪璇戝櫒涓嶆槸閮界粰鍜變滑鍋氫簡鍚楋紝綆″畠鍋氫粈涔堬紵娉ㄦ剰錛岃繖閲岃鐨勫彧鏄紪璇戠郴緇熶腑浼樺寲閮ㄥ垎鐨勫熀鏈璁°備笉浠呭湪浠庢簮浠g爜鍒頒腑闂翠唬鐮佺殑榪囩▼涓瓨鍦ㄤ紭鍖栭棶棰橈紝鑰屼笖緙栬瘧鍣ㄧ敓鎴愮殑鏈緇堢殑鏈哄櫒璇█(姹囩紪)浠g爜鍚屾牱瀛樺湪綾諱技鐨勯棶棰樸傜洰鍓嶏紝鍑犱箮鎵鏈夌殑緙栬瘧鍣ㄥ湪鏈緇堢敓鎴愪唬鐮佺殑榪囩▼涓兘鏈夋垨澶氭垨灝戠殑鐟曠柕錛岃繖浜涚憰鐤電洰鍓?font color="#ff0000">鍙兘渚濋潬鎵嬪伐淇敼浠g爜鏉ヨВ鍐熾?/p>
琛ㄨ揪寮忛鍏堣綆楅潪甯哥畝鍗曪紝灝辨槸鍦ㄧ紪璇戞椂灝藉彲鑳藉湴璁$畻紼嬪簭涓渶瑕佽綆楃殑涓滆タ銆備緥濡傦紝浣犲彲浠ユ涓嶇姽璞湴鍐欏嚭涓嬮潰鐨勪唬鐮侊細
| const unsigned long nGiga = 1024L * 1024L * 1024L; |
鑰屼笉蹇呮媴蹇冪▼搴忔瘡嬈℃墽琛岃繖涓鍙ユ椂浣滀袱閬嶄箻娉曪紝鍥犱負緙栬瘧鍣ㄤ細鑷姩鍦版妸瀹冩敼涓?/p>
| const unsigned long nGiga = 1073741824L; |
鑰屼笉鏄偦涔庝箮鍦拌璁$畻鏈哄湪鎵ц鍒拌繖涓垵濮嬪寲璧嬪艱鍙ョ殑鏃跺欐墠璁$畻銆傚綋鐒訛紝濡傛灉浣犳効鎰忓湪涓婇潰鐨勪唬鐮佷腑鎺轟笂涓浜涘彉閲忕殑璇濓紝緙栬瘧鍣ㄥ悓鏍蜂細鎶婂父鏁伴儴鍒嗗厛琛岃綆楋紝騫舵嬁鍒扮粨鏋溿?/p>
琛ㄨ揪寮忛璁$畻騫朵笉浼氳紼嬪簭鎬ц兘鏈夐璺冩х殑鎻愬崌錛屼絾紜疄鍑忓皯浜嗚繍琛屾椂鐨勮綆楀己搴︺傞櫎姝や箣澶栵紝緇濆ぇ澶氭暟緙栬瘧鍣ㄤ細鎶婁笅闈㈢殑浠g爜錛?/p>
| // [鍋囪姝ゆ椂b, c, d, e, f, g, h閮芥湁涓涓‘瀹氱殑闈為浂鏁存暟鍊鹼紝騫朵笖錛?br />// a[]涓轟竴涓寘鎷?涓暣鏁板厓绱犵殑鏁扮粍錛屽叾涓嬫爣涓?鍒?] a[0] = b*c; |
浼樺寲涓?鍐嶆寮鴻皟錛岀紪璇戝櫒瀹為檯涓婃槸鍦ㄤ腑闂翠唬鐮佺殑灞傛錛岃屼笉鏄簮浠g爜灞傛鍋氳繖浠朵簨鎯咃紒)錛?/p>
| // [鍋囪姝ゆ椂b, c, d, e, f, g, h閮芥湁涓涓‘瀹氱殑闈為浂鏁存暟鍊鹼紝騫朵笖錛?br />// a[]涓轟竴涓寘鎷?涓暣鏁板厓绱犵殑鏁扮粍錛屽叾涓嬫爣涓?鍒?] a[0] = b*c; |
鏇磋繘涓姝ワ紝鍦ㄥ疄闄呬唬鐮佺敓鎴愯繃紼嬩腑錛屼竴浜涚紪璇戝櫒榪樹細瀵逛笂榪拌鍙ョ殑嬈″簭榪涜璋冩暣錛屼互浣垮叾榪愯鏁堢巼鏇撮珮銆備緥濡傦紝灝嗚鍙ヨ皟鏁翠負涓嬮潰鐨勬搴忥細
| // [鍋囪姝ゆ椂b, c, d, e, f, g, h閮芥湁涓涓‘瀹氱殑闈為浂鏁存暟鍊鹼紝騫朵笖錛?br />// a[]涓轟竴涓寘鎷?涓暣鏁板厓绱犵殑鏁扮粍錛屽叾涓嬫爣涓?鍒?] a[0] = b*c; |
鍦ㄦ煇浜涗綋緋葷粨鏋勪腑錛屽垰鍒氳綆楀畬鐨刟[1]鍙互鏀懼埌瀵勫瓨鍣ㄤ腑錛屼互鎻愰珮瀹為檯鐨勮綆楁ц兘銆備笂榪?涓綆椾換鍔′箣闂達紝鍙湁1, 3, 4涓変釜璁$畻浠誨姟蹇呴』涓茶鍦版墽琛岋紝鍥犳錛屽湪鏂扮殑澶勭悊鍣ㄤ笂錛岃繖鏍峰仛鐢氳嚦鑳藉鎻愰珮紼嬪簭鐨勫茍琛屽害錛屼粠鑰屼嬌紼嬪簭鏁堢巼鍙樺緱鏇撮珮銆?/p>
[寰呬慨璁㈠唴瀹?/font>] 鏈珷涓紝浠庤繖涓鑺傚紑濮嬬殑鎵鏈変紭鍖栭兘鏄湪寰灞傞潰涓婄殑浼樺寲浜嗐傛崲璦涔嬶紝榪欎簺浼樺寲鏄笉鑳戒嬌鐢ㄩ珮綰ц璦涓殑瀵瑰簲璁炬柦榪涜瑙i噴鐨勩傝繖涓閮ㄥ垎鍐呭灝嗚繘琛岃緝澶ц妯$殑淇銆?/i>
閫氬父錛屾綾諱紭鍖栨槸鐢辯紪璇戝櫒鑷姩瀹屾垚鐨勩傛垜涓漢騫朵笉鎺ㄨ崘鐪熺殑鐢變漢鏉ュ畬鎴愯繖浜涘伐浣溾斺旇繖浜涘伐浣滃鍗婃槸鏋嚗鑰岄噸澶嶆х殑錛岀紪璇戝櫒閫氬父浼氭瘮浜哄仛寰楁洿濂?娌¤鐨勶紝鑲畾涔熸洿蹇?銆備絾璇濊鍥炴潵錛屼嬌鐢ㄦ眹緙栬璦鐨勭▼搴忚璁′漢鍛樻湁璐d換浜嗚В榪欎簺鍐呭錛屽洜涓哄彧鏈夎繖鏍鋒墠鑳芥洿濂藉湴椹鵑┉澶勭悊鍣ㄣ?/p>
鍦ㄥ墠闈㈢殑鍑犵珷涓垜宸茬粡鎻愬埌榪囷紝瀵勫瓨鍣ㄧ殑閫熷害瑕佹瘮鍐呭瓨蹇傚洜姝わ紝鍦ㄤ嬌鐢ㄥ瘎瀛樺櫒鏂歸潰錛岀紪璇戝櫒涓鑸細鍋氫竴縐嶇О涓哄叏灞瀵勫瓨鍣ㄤ紭鍖栫殑浼樺寲銆?/p>
渚嬪錛屽湪鎴戜滑鐨勭▼搴忎腑浣跨敤浜?涓彉閲忥細i, j, k, l銆傚畠浠兘浣滀負寰幆鍙橀噺浣跨敤錛?/p>
| for(i=0; i<1000; i++){ 聽 for(j=0; j<1000; j++){ 聽聽聽 for(k=0; k<1000; k++){ 聽聽聽聽聽 for(l=0; l<1000; l++) 聽聽聽聽聽聽聽 do_something(i, j, k, l); 聽聽聽 } 聽 } } |
榪欐紼嬪簭鐨勪紭鍖栧氨涓嶉偅涔堢畝鍗曚簡銆傛樉鐒訛紝鎸夌収閫氬父鐨勫帇鏍堟柟娉曪紝i, j, k, l搴旇鎸夌収鏌愪釜欏哄簭琚帇榪涘爢鏍堬紝鐒跺悗璋冪敤do_something()錛岀劧鍚庡嚱鏁板仛浜嗕竴浜涗簨鎯呬箣鍚庤繑鍥炪傞棶棰樺湪浜庯紝鏃犺濡備綍鍘嬫爤錛岃繖浜涗笢瑗垮ぇ姒傞兘寰楄繘鍐呭瓨(涓嶅彲鍚﹁鏌愪簺鏈哄櫒鍙互鐢–PU鐨凜ache鍋氳繖浠朵簨鎯咃紝浣咰ache鏄啓閫氬紡鐨勫拰鍥炲啓寮忕殑鍙堜細閫犳垚涓浜涙ц兘涓婄殑宸紓)銆?/p>
鑱槑鐨勮鑰呴┈涓婂氨浼氭寚鍑猴紝鎴戜滑涓嶆槸鍙互鍦ㄥ畾涔塪o_something()鐨勬椂鍊欏姞涓奿nline淇グ絎︼紝璁╁畠鍦ㄦ湰鍦板睍寮鍚楋紵娌¢敊錛屾湰鍦板睍寮浠ュ鍔犱唬鐮侀噺涓轟唬浠鋒崲鍙栨ц兘錛屼絾榪欏彧鏄棶棰樼殑涓鍗娿傜紪璇戝櫒灝界瀹屾垚浜嗘湰鍦板睍寮錛屼絾瀹冧粛鐒墮渶瑕佸仛璁稿棰濆鐨勫伐浣溿傚洜涓哄瘎瀛樺櫒鍙湁閭d箞鏈夐檺鐨勫嚑涓紝鑰屾垜浠嵈鏈夎繖涔堝鐨勫驚鐜彉閲忋?/p>
鎶婂洓涓彉閲忔寜鐓у畠浠湪寰幆涓嬌鐢ㄧ殑棰戠巼鎺掑簭錛屽茍鍐沖畾鍦╠o_something()鍧椾腑鐨勪紭鍏堥『搴?鏀懼叆瀵勫瓨鍣ㄤ腑鐨勪紭鍏堥『搴?鏄竴涓В鍐蟲柟妗堛傚緢鏄庢樉錛屾垜浠彲浠ユ寜鐓, k, j, i鐨勯『搴?浠庨珮鍒頒綆錛屽洜涓簂灝嗚榪涜1000*1000*1000*1000嬈¤繍綆楋紒)鏉ユ帓鍒楋紝浣嗗湪瀹為檯鐨勯棶棰樹腑錛屼簨鎯呭線寰娌℃湁榪欎箞綆鍗曪紝鍥犱負浣犱笉鐭ラ亾do_something()涓仛鐨勫埌搴曟槸浠涔堛傝屼笖錛屽嚟浠涔堝氨浠or(l=0; l<1000; l++)浣滀負浼樺寲鐨勫垎鐣岀偣鍛紵濡傛灉do_something()涓繕鏈夊驚鐜庝箞鍔烇紵
濡傛澶嶆潅鐨勮綆楅棶棰樹氦緇欒綆楁満鏉ュ仛閫氬父浼氭湁姣旇緝婊℃剰鐨勭粨鏋溿備竴鑸鏉ワ紝緙栬瘧鍣ㄨ兘澶熷紼嬪簭涓彉閲忕殑浣跨敤榪涜鏇村叏闈㈠湴浼拌錛屽洜姝わ紝瀹冨垎閰嶅瘎瀛樺櫒鐨勭粨鏋滄湁鏃惰櫧鐒惰浜鴻垂瑙o紝浣嗗嵈鏄渶浼樼殑(鍥犱負璁$畻鏈鴻兘澶熻繘琛屽ぇ閲忕殑閲嶅璁$畻錛屽茍鎵懼埌鏈濂界殑鏂規硶錛涜屼漢鍋氳繖浠朵簨鐩稿鏉ヨ姣旇緝鍥伴毦)銆?/p>
緙栬瘧鍣ㄥ湪璁稿鏃跺欒兘澶熶綔鍑虹浉褰撹浜烘弧鎰忕殑緇撴灉銆傝冭檻浠ヤ笅鐨勪唬鐮侊細
| int a=0;
for(int i=1; i<10; i++) |
璁╂垜浠妸瀹冨彉涓烘煇縐嶅艦寮忕殑涓棿浠g爜錛?/p>
| 00: 0 -> a 01: 1 -> i 02: 1 -> j 03: i*j -> t 04: a+t -> a 05: j+1 -> j 06: evaluate j < 100 07: TRUE? goto 03 08: i+1 -> i 09: evaluate i < 10 10: TRUE? goto 02 11: [緇х畫鎵ц紼嬪簭鐨勫叾浣欓儴鍒哴 |
紼嬪簭涓墽琛屽己搴︽渶澶х殑鏃犵枒鏄?3鍒?5榪欎竴孌碉紝娑夊強鐨勯渶瑕佸啓鍏ョ殑鍙橀噺鍖呮嫭a, j錛涢渶瑕佽鍑虹殑鍙橀噺鏄痠銆備笉榪囷紝鏈緇堢殑緙栬瘧緇撴灉澶уぇ鍑轟箮鎴戜滑鐨勬剰鏂欍備笅闈㈡槸鏌愮浼樺寲妯″紡涓媀isual C++ 6.0緙栬瘧鍣ㄧ敓鎴愮殑浠g爜(鎴戝仛浜嗕竴浜涗慨鏀?錛?/p>
| xor eax, eax聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ; a=0(eax: a) mov edx, 1聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ; i=1(edx: i) push esi聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ; 淇濆瓨esi(鏈鍚庤鎭㈠錛宔si浣滀負浠f浛j鐨勯偅涓驚鐜彉閲? nexti: mov ecx, edx聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ; [t=i] mov esi, 999聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ; esi=999: 姝ゅ淇敼浜嗗師紼嬪簭鐨勮涔夛紝浣嗕粛涓?000嬈″驚鐜?/font> nextj: add eax, ecx聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ; [a+=t] add ecx, edx聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ; [t+=i] dec esi聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ; j-- jne SHORT nextj聽聽聽聽聽聽聽聽聽聽聽 ; jne 絳変環浜?jnz. [濡傛灉榪橀渶瑕侊紝鍒欏啀嬈″驚鐜痌 inc edx聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ; i++ cmp edx, 10聽聽聽聽聽聽聽聽聽聽聽聽 聽聽 ; i涓?0姣旇緝 jl SHORT nexti聽聽聽聽聽聽聽聽聽聽聽聽 ; i < 10, 鍐嶆寰?/font>鐜?br />pop esi聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ; 鎭㈠esi |
榪欐浠g爜鍙兘鏈変簺浠や漢璐硅В銆備富瑕佹槸鍥犱負瀹冧笉浠呬嬌鐢ㄤ簡澶ч噺瀵勫瓨鍣紝鑰屼笖榪樺寘鎷簡5.2鑺備腑鏇炬彁鍒扮殑瀛愯〃杈懼紡鎻愬彇鎶鏈傝〃闈笂鐪嬶紝澶氬紩鍏ョ殑閭d釜鍙橀噺(t)澧炲姞浜嗚綆楁椂闂達紝浣嗚娉ㄦ剰錛岃繖涓猼涓嶄粎涓嶄細闄嶄綆紼嬪簭鐨勬墽琛屾晥鐜囷紝鐩稿弽榪樹細璁╁畠鍙樺緱鏇村揩錛佸洜涓哄悓鏍峰緱鍒頒簡璁$畻緇撴灉(鏈川涓婏紝i*j鍗蟲槸絎琷嬈$瘡鍔爄鐨勫?錛屼絾榪欎釜緇撴灉涓嶄粎鐢ㄥ埌浜嗕笂嬈¤繍綆楃殑緇撴灉錛岃屼笖榪樼渷鍘諱簡涔樻硶(寰堟樉鐒惰綆楁満璁$畻鍔犳硶瑕佹瘮璁$畻涔樻硶蹇?銆?/p>
榪欓噷鍙兘浼氭湁浜洪棶錛屼負浠涔堣浠?99寰幆鍒?錛岃屼笉鏄寜鐓х▼搴忎腑鍐欑殑閭f牱浠?寰幆鍒?99鍛紵榪欎釜闂鍜屾眹緙栬璦涓殑鍙栧潃鏈夊叧銆傚湪涓嬩袱鑺備腑鎴戝皢鎻愬埌榪欐柟闈㈢殑鍐呭銆?/p>
鑰冭檻榪欐牱鐨勯棶棰橈紝鎴戝拰涓や釜鍚屼即鐜板湪鍦ㄥ北閲岋紝榪滃鏈変竴鍙d簳錛屾垜浠甫鐫涓鍙i攨錛岃韓杈規槸鏍戞灄錛涜韓涓婄殑楗敤姘村凡緇忓枬鍏変簡錛屾澶勫厑璁哥爫鏌村拰浣跨敤鏄庣伀(褰撶劧鎴戜滑涓嶆兂寮曡搗鐏伨:)錛岄渶瑕佺儳涓閿呮按錛屽簲璇ユ庝箞鏍峰憿錛?/p>
涓縐嶆柟妗堟槸錛屼笁涓漢涓璧鋒惌鐏訛紝涓璧風爫鏌達紝涓璧鋒墦姘達紝涓璧鋒妸姘寸儳寮銆?/p>
鍙︿竴縐嶆柟妗堟槸錛屼竴涓漢鎼伓錛屾鏃跺彟涓涓漢鍘葷爫鏌達紝絎笁涓漢鎵撴按錛岀劧鍚庢妸姘寸儳寮銆?/p>
榪欎袱縐嶆柟妗堢敾鍑哄浘鏉ユ槸榪欐牱錛?/p>

浠呬粎榪欐牱寰堥毦璇存槑涓や釜鏂規瀛頒紭瀛板姡錛屽洜涓烘垜浠茍涓嶆槑紜笁涓漢涓璧鋒墦姘淬佷竴璧風爫鏌淬佷竴璧鋒惌鐏剁殑鏁堢巼鏇撮珮錛岃繕鏄垎鍒綔鏁堢巼鏇撮珮(閫氬父鐨勬兂娉曪紝涓璧峰仛涔熻鏁堢巼浼氭洿楂?銆備絾鍋囧璇達紝涓変釜浜轟竴涓彧浼氭惌鐏訛紝涓涓彧浼氱爫鏌達紝涓涓彧浼氭墦姘?褰撶劧鏄榪欎笁浠朵簨鎯?錛岄偅涔堬紝鏂規2鐨勬晥鐜囧氨浼氭悶涓浜涗簡銆?/p>
鍦ㄧ幇瀹炵敓媧諱腑錛屾煇涓漢鎷ユ湁涓撻暱鏄瘮杈冩櫘閬嶇殑鎯呭喌錛涘湪璁捐璁$畻鏈虹‖浠剁殑鏃跺欏垯鏇存槸濡傛銆備綘涓嶅彲鑳芥寚鏈涘姞娉曞櫒涓嶅仛浠諱綍鏀瑰姩灝辮兘鍘誨仛縐諱綅鐢氳嚦鏁存暟涔樻硶錛岀劧鑰屾垜浠敞鎰忓埌錛屼覆琛屾墽琛岀殑紼嬪簭涓嶅彲鑳藉湪鍚屼竴鏃跺埢鍚屾椂鐢ㄥ埌澶勭悊鍣ㄧ殑鎵鏈夊姛鑳斤紝鍥犳錛屾垜浠?寰堣嚜鐒跺湴)浼氬笇鏈涙湁涓浜涙寚浠ゅ茍琛屽湴鎵ц錛屼互鍏呭垎鍒╃敤CPU鐨勮綆楄祫婧愩?/p>
CPU鎵ц涓鏉℃寚浠ょ殑榪囩▼鍩烘湰涓婂彲浠ュ垎涓轟笅闈㈠嚑涓樁孌碉細鍙栨寚浠ゃ佸彇鏁版嵁銆佽綆椼佷繚瀛樻暟鎹傚亣璁捐繖4涓樁孌靛悇闇瑕?涓椂閽熷懆鏈燂紝閭d箞錛屽彧瑕佽祫婧愬鐢紝騫朵笖4鏉℃寚浠や箣闂翠笉瀛樺湪涓茶鍏崇郴(鎹㈣█涔嬭繖浜涙寚浠ょ殑鎵ц鍏堝悗嬈″簭涓嶅獎鍝嶆渶緇堢粨鏋滐紝鎴栬咃紝鏇翠弗鏍煎湴璇達紝娌℃湁浠諱綍涓鏉℃寚浠や緷璧栧叾浠栨寚浠ょ殑榪愮畻緇撴灉)鎸囦護涔熷彲浠ュ儚涓嬮潰榪欐牱鎵ц錛?/p>
| 鎸囦護1 | 鍙栨寚浠?/td> | 鍙栨暟鎹?/td> | 璁°綆?/td> | 瀛樻暟鎹?/td> | 銆 | 銆 | 銆 |
| 鎸囦護2 | 銆 | 鍙栨寚浠?/td> | 鍙栨暟鎹?/td> | 璁°綆?/td> | 瀛樻暟鎹?/td> | 銆 | 銆 |
| 鎸囦護3 | 銆 | 銆 | 鍙栨寚浠?/td> | 鍙栨暟鎹?/td> | 璁°綆?/td> | 瀛樻暟鎹?/td> | 銆 |
| 鎸囦護4 | 銆 | 銆 | 銆 | 鍙栨寚浠?/td> | 鍙栨暟鎹?/td> | 璁°綆?/td> | 瀛樻暟鎹?/td> |
榪欐牱錛屽師鏈渶瑕?6涓椂閽熷懆鏈熸墠鑳藉瀹屾垚鐨勪換鍔″氨鍙互鍦?涓椂閽熷懆鏈熷唴瀹屾垚錛屾椂闂寸緝鐭簡涓鍗婅繕澶氥傚鏋滆冭檻鐏拌壊鐨勯偅浜涙柟鏍?榪欎簺鏂規牸鍙互琚?鏉℃寚浠や互澶栫殑鍏朵粬鎸囦護浣跨敤錛屽彧瑕佹病鏈変覆琛屽叧緋繪垨鍐茬獊)錛岄偅涔堬紝濡傛鎵ц瀵逛簬鎬ц兘鐨勬彁鍗囧皢鏄浉褰撳彲瑙傜殑(姝ゆ椂錛孋PU鐨勬墍鏈夐儴浠墮兘寰楀埌浜嗗厖鍒嗗埄鐢?銆?/p>
褰撶劧錛屼綔涓虹▼搴忔潵璇達紝鐪熸鍋氬埌榪欐牱鏄浉褰撶悊鎯沖寲鐨勬儏鍐點傚疄闄呯殑紼嬪簭涓緢闅懼仛鍒板交搴曠殑騫惰鍖栥傚亣璁綜PU鑳藉鏀寔4鏉℃寚浠ゅ悓鏃舵墽琛岋紝騫朵笖錛屾瘡鏉℃寚浠ら兘鏄瓑鍛ㄦ湡闀垮害鐨?鍛ㄦ湡鎸囦護錛岄偅涔堬紝紼嬪簭闇瑕佷繚璇佸悓涓鏃跺埢鍏堝悗鍙戝皠鐨?鏉℃寚浠ら兘鑳藉騫惰鎵ц錛岀浉浜掍箣闂存病鏈夊叧鑱旓紝榪欓氬父鏄笉澶彲鑳界殑銆?/p>
鏈鏂扮殑Intel Pentium 4-XEON澶勭悊鍣紝浠ュ強Intel Northwood Pentium 4閮芥彁渚涗簡涓縐嶈縐頒負瓚呯嚎紼?Hyper-Threading TM)鐨勬妧鏈傝鎶鏈氳繃鍦ㄤ竴涓鐞嗗櫒涓皝瑁呬袱緇勬墽琛屾満鏋勬潵鎻愰珮鎸囦護騫惰搴︼紝騫朵緷闈犳搷浣滅郴緇熺殑璋冨害鏉ヨ繘涓姝ユ彁鍗囩郴緇熺殑鏁翠綋鏁堢巼銆?/p>
鐢變簬綰跨▼鏈哄埗鏄笌鎿嶄綔緋葷粺瀵嗗垏鐩稿叧鐨勶紝鍥犳錛屽湪鏈枃鐨勮繖涓閮ㄥ垎涓笉鍙兘鍋氭洿涓烘繁鍏ュ湴鎺㈣銆傚湪鍚庣畫鐨勭珷鑺備腑錛屾垜灝嗕粙緇峎in32銆丗reeBSD 5.x浠ュ強Linux涓彁渚涚殑鍐呮牳綰х嚎紼嬫満鍒?榪欎笁縐嶆搷浣滅郴緇熼兘鏀寔SMP鍙婅秴綰跨▼鎶鏈紝騫朵笖浠ョ嚎紼嬩綔涓鴻皟搴﹀崟浣?鍦ㄦ眹緙栬璦涓殑浣跨敤鏂規硶銆?/p>
鍏充簬綰跨▼鐨勮璁哄氨姝ゆ墦浣忥紝鍥犱負瀹冩洿澶氬湴渚濊禆浜庢搷浣滅郴緇燂紝騫朵笖錛屾棤璁哄浣曪紝鎿嶄綔緋葷粺鐨勭嚎紼嬭皟搴﹂渶瑕佹洿澶х殑寮閿騫朵笖錛屽埌鐩墠涓烘錛岀湡姝d嬌鐢ㄦ敮鎸佽秴綰跨▼鐨凜PU錛屽茍涓斾嬌鐢ㄧ浉搴旀搷浣滅郴緇熺殑浜烘槸闈炲父灝戠殑銆傚洜姝わ紝鎴戜滑闇瑕佸叧蹇冪殑瀹為檯涓婅繕鏄悓涓鎵ц搴忓垪涓殑騫跺彂鎵ц鍜屾寚浠ゅ皝鍖呫備笉榪囷紝浠や漢閬楁喚鐨勬槸錛屽疄闄呬笂鍦ㄨ繖鏂歸潰緙栬瘧鍣ㄥ仛鐨勫嚑涔庢槸鑲畾瑕佹瘮浜哄ソ錛屽洜姝わ紝浣犻渶瑕佸仛鐨勫彧鏄紑鍚浉搴旂殑浼樺寲錛涘鏋滀綘鐨勭紪璇戝櫒涓嶆敮鎸佽繖鏍風殑鐗規э紝閭d箞灝辨妸瀹冩墧鎺夆︹︽嵁鎴戞墍鐭ワ紝鐩墠鍦↖ntel騫沖彴涓婃寚浠ゅ皝鍖呮柟闈㈠仛鐨勬渶濂界殑鏄疘ntel鐨凜++緙栬瘧鍣紝緇忚繃Intel緙栬瘧鍣ㄧ紪璇戠殑浠g爜鐨勬ц兘浠や漢鎯婂紓鍦伴珮錛岀敋鑷沖湪AMD鍏徃鎺ㄥ嚭鐨勫吋瀹瑰鐞嗗櫒涓婁篃鏄姝ゃ?/p>
浠庡墠涓鑺傜殑鍥句腑鎴戜滑涓嶉毦鐪嬪嚭錛屾柟妗?涓紝濡傛灉璋佺殑鍔ㄤ綔鎱紝閭d箞浠栧氨浼氭垚涓烘ц兘鐨勭摱棰堛傚疄闄呬笂錛孋PU涔熶笉浼氬儚鎴戞弿榪扮殑閭f牱鍥涘鉤鍏ǔ鍦拌繍琛岋紝鎸囦護鎵ц鐨勪笉鍚岄樁孌甸渶瑕佺殑鏃墮棿(鏃墮挓鍛ㄦ湡鏁?鏄笉鍚岀殑錛屽洜姝わ紝緙╃煭鍏抽敭姝ラ(鍗籌紝閫犳垚鐡墮鐨勯偅涓楠?鏄緝鐭墽琛屾椂闂寸殑鍏抽敭銆?/p>
鑷沖皯瀵逛簬浣跨敤Intel緋誨垪鐨凜PU鏉ヨ錛屽彇鏁版嵁榪欎釜姝ラ闇瑕佹秷鑰楁瘮杈冨鐨勬椂闂淬傛澶栵紝鍋囧鏁版嵁璺ㄨ秺浜嗘煇縐嶈竟鐣?濡?鎴?瀛楄妭錛屼笌CPU鐨勫瓧闀挎湁鍏?錛屽垯CPU闇瑕佸惎鍔ㄤ袱嬈$敋鑷蟲洿澶氭鏁扮殑璇誨唴瀛樻搷浣滐紝榪欐棤鐤戝鎬ц兘鏋勬垚涓嶅埄褰卞搷銆?/p>
鍩轟簬榪欐牱鐨勫師鍥狅紝鎴戜滑鍙互寰楀埌涓嬮潰鐨勮璁$瓥鐣ワ細
|
絎竴鏉¤鍒欐瘮杈冪畝鍗曘備緥濡傦紝闇瑕佹眰涓緇勬暟鎹腑鐨勬渶澶у箋佹渶灝忓箋佸鉤鍧囨暟錛岄偅涔堬紝鏈濂芥槸鍦ㄤ竴嬈″驚鐜腑鍋氬畬銆?/p>
鈥滀簬鏄紝榪欏浼欏張鏀掍簡涓孌典唬鐮佲濃︹?/p>
| int a[]={1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0}; int i; int avg, max, min; avg=max=min=a[0]; for(i=1; i<(sizeof(a)/sizeof(int)); i++){ avg /= i; |
Visual C++緙栬瘧鍣ㄦ妸鏈寮濮嬩竴孌佃祴鍊艱鍙ョ炕璇戞垚浜嗕竴孌電畝鐩村彲浠ヨ鏄尓澶鋒墍鎬濈殑浠g爜錛?/p>
| ; int a[]={1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0}; mov edi, 2聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ; 姝ゆ椂edi娌℃湁鎰忎箟 mov esi, 3聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ; esi涔熸槸錛佷復鏃跺彉閲忚屽凡銆?/font> mov DWORD PTR _a$[esp+92], edi mov edx, 5聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ; 榛戝悕鍗曞姞涓奺dx mov eax, 7聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ; eax涔熷埆璺?) mov DWORD PTR _a$[esp+132], edi mov ecx, 9聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ; 灝卞樊浣犱簡錛宔cx ; int i; ; int avg, max, min; ; avg=max=min=a[0]; mov edi, 1聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ; edi鎽囪韓涓鍙橈紝鐜板湪瀹冩槸min浜嗐?/font> mov DWORD PTR _a$[esp+96], esi mov DWORD PTR _a$[esp+104], edx mov DWORD PTR _a$[esp+112], eax mov DWORD PTR _a$[esp+136], esi mov DWORD PTR _a$[esp+144], edx mov DWORD PTR _a$[esp+152], eax mov DWORD PTR _a$[esp+88], 1聽聽聽聽聽聽 ; 緙栬瘧鍣ㄥけ璇? 姝ゅedi搴旀洿濂?/font> mov DWORD PTR _a$[esp+100], 4 mov DWORD PTR _a$[esp+108], 6 mov DWORD PTR _a$[esp+116], 8 mov DWORD PTR _a$[esp+120], ecx mov DWORD PTR _a$[esp+124], 0 mov DWORD PTR _a$[esp+128], 1 mov DWORD PTR _a$[esp+140], 4 mov DWORD PTR _a$[esp+148], 6 mov DWORD PTR _a$[esp+156], 8 mov DWORD PTR _a$[esp+160], ecx mov DWORD PTR _a$[esp+164], 0 mov edx, edi聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 聽; edx鏄痬ax銆?/font> mov eax, edi聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 聽; 鏈熷緟宸蹭箙鐨刟vg, 瀹冭鎸囧畾涓篹ax |
榪欐浠g爜鏄渶浼樼殑鍚楋紵鎴戜釜浜鴻涓轟笉鏄傚洜涓虹紪璇戝櫒瀹屽叏鍙互鍦ㄧ紪璇戣繃紼嬩腑鐩存帴鎶婂畠浠綔涓哄父閲忔暟鎹斁鍏ュ唴瀛樸傛澶栵紝濡傛灉棰勫厛瀵筧[0..9]10涓厓绱犺祴鍊鹼紝騫跺埄鐢ㄤ覆鎿嶄綔鎸囦護(rep movsdw)錛岄熷害浼氭洿蹇竴浜涖?/p>
褰撶劧錛岀姱涓嶄笂鍥犱負榪欎簺闂璐f紪璇戝櫒銆傝姹傜紪璇戝櫒鐭ラ亾a[0..9]鍜孾10..19]鐨勫唴瀹逛竴鏍鋒湭鍏嶈繃浜庤嫑鍒匯傛垜浠湅鐪嬩笅闈㈢殑鎸囦護孌碉細
| ; for(i=1; ... mov esi, edi for_loop: ; avg+=a[i]; mov ecx, DWORD PTR _a$[esp+esi*4+88] add eax, ecx ; if(max < a[i]) cmp edx, ecx jge SHORT elseif_min ; max = a[i]; mov edx, ecx ; else if(min > a[i]) jmp SHORT elseif_min elseif_min: cmp edi, ecx jle SHORT elseif_end ; min = a[i]; mov edi, ecx elseif_end: ; [for i=1]; i<20; i++){ inc esi cmp esi, 20 jl SHORT for_loop ; } ; avg /= i; cdq idiv esi | ; esi: i ; ecx: 鏆傚瓨鍙橀噺, =a[i] ; eax: avg ; edx: max ; 鏈夎叮鐨勪唬鐮?..騫朵笉鏄墍鏈夌殑鏃跺欓兘鏈夌敤 ; 浣嗘槸涔熷埆闅忎究鍒犻櫎 ; edi: min ; i++ ; i涓?0姣旇緝 ; avg /= i |
涓婇潰鐨勭▼搴忓掓槸娌℃湁浠涔堟儕浜轟箣澶勩傚敮涓涓涓瘮杈冨悡浜虹殑涓滆タ鏄偅涓猨mp SHORT鎸囦護錛屽畠鏄惁鏈夌敤鍙栧喅浜庡叿浣撶殑闂銆侰/C++緙栬瘧鍣ㄦ湁鏃朵細浜х敓榪欐牱鐨勪唬鐮侊紝鎴戣繃鍘繪浘緇忛敊璇湴鎶婃墍鏈夌殑姝ょ被鎸囦護褰撲綔娌$敤鐨勪唬鐮佽屽垹鎺夛紝鍚庢潵鍙戠幇紼嬪簭鎵ц鏃墮棿娌℃湁鏄庢樉鐨勫彉鍖栥傞氳繃鏌ラ槄鏂囨。鎵嶇煡閬擄紝榪欑被鎸囦護瀹為檯涓婃槸鈥滃崰浣嶆寚浠も濓紝浠栦滑瀛樺湪鐨勬剰涔夊湪浜庡崰鎹偅涓湴鏂癸紝涓鏉ヤ嬌鍏朵粬璇彞鑳藉姝g‘鍦版寜CPU瑙夊緱鑸掓湇鐨勬柟寮忓榻愶紝浜屾潵瀹冨彲浠ュ崰鎹瓹PU鐨勬煇浜涘懆鏈燂紝浣垮緱鍚庣畫鐨勬寚浠よ兘澶熸洿濂藉湴騫跺彂鎵ц錛岄伩鍏嶅啿紿併傚彟涓涓瘮杈冨父瑙佺殑銆佸疄鐜扮被浼煎姛鑳界殑鎸囦護鏄疦OP銆?/p>
鍗犱綅鎸囦護鐨勫幓鐣欎富瑕佹槸闈犺鏃舵墽琛屾潵鍒ゆ柇銆傜敱浜庣洰鍓嶆祦琛岀殑鎿嶄綔緋葷粺鍩烘湰涓婇兘鏄浠誨姟鐨勶紝鍥犳浼氬璁℃椂鐨勭簿紜ф湁涓瀹氬獎鍝嶃傚鏋滈渶瑕佽繘琛屾祴璇曠殑璇濓紝闇瑕佷繚璇佷互涓嬪嚑鐐癸細
|
瀵逛簬緇濆ぇ澶氭暟紼嬪簭鏉ヨ錛岃鏃舵祴璇曟槸涓涓潪甯擱噸瑕佺殑涓滆タ銆傛垜涓漢鍊懼悜浜庡湪榪涜浼樺寲鍚庤繘琛岃鏃舵祴璇曞茍姣旇緝緇撴灉銆傜洰鍓嶏紝鎴戝熀浜庣粡楠岃繘琛岀殑浼樺寲鍩烘湰涓婇兘鑳藉鎻愰珮紼嬪簭鐨勬墽琛屾ц兘錛屼絾鎴戣繕鏄笉鏁㈣繃浜庤嚜淇°備紭鍖栫‘瀹炰細鎻愰珮鎬ц兘錛屼絾浜哄仛鐨勫拰緙栬瘧鍣ㄥ仛鐨勬濊礬涓嶅悓錛屾湁鏃訛紝鎴戜滑鐨勭‘浼氬仛涓浜涜垂鍔涗笉璁ㄥソ鐨勪簨鎯呫?/p>
宸茬粡鎺屾彙浜嗘眹緙栬璦錛熸病閿欙紝浣犵幇鍦ㄥ凡緇忓彲浠ュ幓鐮磋瘧鍒漢浠g爜涓殑縐樺瘑銆傜劧鑰岋紝鎴戜滑榪樻湁涓浠墮噸瑕佺殑涓滆タ娌℃湁鎻愬埌錛岄偅灝辨槸鑷▼搴忓拰涓柇銆傝繖涓や歡涓滆タ鏄姝ょ殑閲嶈錛屼互鑷充簬浣犵殑紼嬪簭鍑犱箮涓嶅彲鑳界寮瀹冧滑銆?/p>
鍦ㄩ珮綰ц璦涓垜浠粡甯歌鐢ㄥ埌瀛愮▼搴忋傞珮綰ц璦涓紝瀛愮▼搴忔槸濡傛鐨勭濂囷紝鎴戜滑鑳藉瀹氫箟鍜屼富紼嬪簭錛屾垨鍏朵粬瀛愮▼搴忎竴鏍風殑鍙橀噺鍚嶏紝鑰岃闂笉鍚岀殑鍙橀噺錛屽茍涓旓紝榪樹笉鍜岀▼搴忕殑鍏朵粬閮ㄥ垎鐩稿啿紿併?/p>
鐒惰岄仐鎲劇殑鏄紝榪欑鈥滀紭鍔庫濆湪姹囩紪璇█涓槸涓嶅瓨鍦ㄧ殑銆?/p>
姹囩紪璇█騫朵笉娉ㄩ噸濡備綍鍑忚交紼嬪簭鍛樼殑璐熸媴錛涚浉鍙嶏紝姹囩紪璇█渚濊禆紼嬪簭鍛樼殑鑹ソ璁捐錛屼互鏈熷彂鎸PU鐨勬渶浣蟲ц兘銆傛眹緙栬璦涓嶆槸緇撴瀯鍖栫殑璇█錛屽洜姝わ紝瀹冧笉鎻愪緵鐩存帴鐨勨滃眬閮ㄥ彉閲忊濄傚鏋滈渶瑕佲滃眬閮ㄥ彉閲忊濓紝鍙兘閫氳繃鍫嗘垨鏍堣嚜琛屽疄鐜般?/p>
浠庤繖涓剰涔変笂璁詫紝姹囩紪璇█鐨勫瓙紼嬪簭鏇村儚GWBASIC涓殑GOSUB璋冪敤鐨勯偅浜涒滃瓙紼嬪簭鈥濄傛墍鏈夌殑鈥滃彉閲忊?鏈川涓婏紝灞炰簬榪涚▼鐨勫唴瀛樺拰瀵勫瓨鍣?涓烘暣涓▼搴忔墍鍏變韓錛岄珮綰ц璦緙栬瘧鍣ㄦ墍鍋氱殑錛屽皢灞閮ㄥ彉閲忔斁鍒板爢鎴栨爤涓殑鎿嶄綔錛屽彧鑳借嚜琛屽疄鐜般?/p>
鍙傛暟鐨勪紶閫掓槸闈犲瘎瀛樺櫒鍜屽爢鏍堟潵瀹屾垚鐨勩傞珮綰ц璦涓紝瀛愮▼搴?鍑芥暟銆佽繃紼嬶紝鎴栫被浼兼蹇電殑涓滆タ)渚濊禆浜庡爢鍜屾爤鏉ヤ紶閫掋?/p>
璁╂垜浠潵綆鍗曞湴鍒嗘瀽涓涓嬩竴鑸珮綰ц璦鐨勫瓙紼嬪簭鐨勬墽琛岃繃紼嬨傛棤璁篊銆丆++銆丅ASIC銆丳ascal錛岃繖涓閮ㄥ垎鍩烘湰閮芥槸涓鑷寸殑銆?/p>
|
姣嬪焊緗枒錛屽爢鏍堝湪鏁翠釜榪囩▼涓彂鎸ョ潃闈炲父閲嶈鐨勪綔鐢ㄣ備笉榪囷紝鏈川涓婂瀛愮▼搴忔渶閲嶈鐨勮繕鏄繑鍥炲湴鍧銆傚鏋滃瓙紼嬪簭涓嶇煡閬撹繖涓湴鍧錛岄偅涔堢郴緇熷皢浼氬穿婧冦?/p>
璋冪敤瀛愮▼搴忕殑鎸囦護鏄疌ALL錛屽搴旂殑榪斿洖鎸囦護鏄疪ET銆傛澶栵紝榪樻湁涓緇勬寚浠わ紝鍗矱NTER鍜孡EAVE錛屽畠浠彲浠ュ府鍔╄繘琛屽爢鏍堢殑緇存姢銆?/p>
CALL鎸囦護鐨勫弬鏁版槸琚皟鐢ㄥ瓙紼嬪簭鐨勫湴鍧銆備嬌鐢ㄥ畯姹囩紪鐨勬椂鍊欙紝榪欓氬父鏄竴涓爣鍙楓侰ALL鍜孯ET錛屼互鍙奅NTER鍜孡EAVE閰嶅錛屽彲浠ュ疄鐜板浜庡爢鏍堢殑鑷姩鎿嶄綔錛岃屼笉闇瑕佺▼搴忓憳榪涜PUSH/POP錛屼互鍙婅煩杞殑鎿嶄綔錛屼粠鑰屾彁楂樹簡鏁堢巼銆?/p>
浣滀負涓涓紪璇戝櫒鐨勫疄鐜板疄渚嬶紝鎴戠敤Visual C++緙栬瘧浜嗕竴孌礐++紼嬪簭浠g爜錛岃繖孌墊眹緙栦唬鐮佹槸浣跨敤鐗瑰畾鐨勭紪璇戦夐」寰楀埌鐨勭粨鏋滐紝姝e父鐨凴ELEASE浠g爜浼氭瘮瀹冪簿綆寰楀銆傚寘鍚簮浠g爜鐨勯儴鍒嗗弽姹囩紪緇撴灉濡備笅(鍙栬嚜Visual C++璋冭瘯鍣ㄧ殑榪愯緇撴灉錛屾垜鍒犻櫎浜?0鏉nt 3鎸囦護錛屽茍鍔犱笂浜嗕竴浜涙敞閲婏紝闄ゆ涔嬪錛屾病鏈夊仛浠諱綍淇敼)錛?/p>
| 1: int myTransform(int nInput){ 00401000 push ebp聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ; 淇濇姢鐜板満鍘熷厛鐨凟BP鎸囬拡 00401001 mov ebp,esp 2: return (nInput*2 + 3) % 7; 00401003 mov eax,dword ptr [nInput] ; 鍙栧弬鏁?/font> 00401006 lea eax,[eax+eax+3]聽聽聽聽聽聽聽 ; LEA姣擜DD鍔犳硶鏇村揩 0040100A cdq聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ; DWORD->QWORD(鎵╁睍瀛楅暱) 0040100B mov ecx,7聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ; 闄ゆ暟 00401010 idiv eax,ecx聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ; 闄?/font> 00401012 mov eax,edx聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ; 鍟?>eax(eax涓繚瀛樿繑鍥炲? 3: } 00401014 pop ebp聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ; 鎭㈠鐜板満鐨別bp鎸囬拡 00401015 ret聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ; 榪斿洖 ; 姝ゅ鍒犻櫎10鏉nt 3鎸囦護錛屽畠浠槸鏂逛究璋冭瘯鐢ㄧ殑錛屽茍涓嶅獎鍝嶇▼搴忚涓恒?/font> 4: 5: int main(int argc, char* argv[]) 6: { 00401020 push ebp聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ; 淇濇姢鐜板満鍘熷厛鐨凟BP鎸囬拡 00401021 mov ebp,esp 00401023 sub esp,10h聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ; 涓哄彇argc, argv淇鍫嗘爤鎸囬拡銆?br />7:int a[3]; 8:for(register int i=0; i<3; i++){ 00401026 mov dword ptr [i],0聽聽聽聽聽聽聽 ; 0->i 0040102D jmp main+18h (00401038)聽聽聽 ; 鍒ゆ柇寰幆鏉′歡 0040102F mov eax,dword ptr [i]聽聽聽聽聽 ; i->eax 00401032 add eax,1聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ; eax ++ 00401035 mov dword ptr [i],eax聽聽聽聽聽 ; eax->i 00401038 cmp dword ptr [i],3聽聽聽聽聽聽聽 ; 寰幆鏉′歡: i涓?姣旇緝 0040103C jge main+33h (00401053)聽聽聽 ; 濡傛灉涓嶇鍚堟潯浠訛紝鍒欏簲緇撴潫寰幆 9: a[i] = myTransform(i); 0040103E mov ecx,dword ptr [i]聽聽聽聽聽 ; i->ecx 00401041 push ecx聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ; ecx (i) -> 鍫嗘爤 00401042 call myTransform (00401000); 璋冪敤myTransform 00401047 add esp,4聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ; esp+=4: 鍦ㄥ爢涓殑鏂板崟鍏?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ; 鍑嗗瀛樻斁榪斿洖緇撴灉 0040104A mov edx,dword ptr [i]聽聽聽聽聽 ; i->edx 0040104D mov dword ptr a[edx*4],eax ; 灝唀ax(myTransform榪斿洖鍊? 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ; 鏀懼洖a[i] 10: } 00401051 jmp main+0Fh (0040102f)聽聽聽 ; 璁$畻i++錛屽茍緇х畫寰幆 11:return 0; 00401053 xor eax,eax聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ; 榪斿洖鍊煎簲璇ユ槸0 12: } 00401055 mov esp,ebp聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ; 鎭㈠鍫嗘爤鎸囬拡 00401057 pop ebp聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ; 鎭㈠BP 00401058 ret聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ; 榪斿洖璋冪敤鑰?C++榪愯鐜) |
涓婅堪浠g爜紜疄鍋氫簡涓浜涙棤鐢ㄥ姛錛屽綋鐒訛紝榪欐槸鍥犱負緙栬瘧鍣ㄦ病鏈夊榪欐浠g爜榪涜浼樺寲銆傝鎴戜滑鏉ュ叧娉ㄤ竴涓嬭繖孌典唬鐮佷腑錛屾槸濡備綍璋冪敤瀛愮▼搴忕殑銆備笉鑰冭檻myTransform榪欎釜鍑芥暟瀹為檯榪涜鐨勬暟鍊艱繍綆楋紝鏈璁╂垜鎰熷叴瓚g殑鏄繖涓琛屼唬鐮侊細
| 00401003 mov eax,dword ptr [nInput] ; 鍙栧弬鏁?/font> |
榪欓噷nInput鏄竴涓畝綆鍗曞崟鐨勫彉閲忕鍙峰悧錛烿isual C++鐨勮皟璇曞櫒鏄劇劧涓嶈兘鍛婅瘔鎴戜滑絳旀鈥斺斿畠鐨勮璁$洰鏍囨槸涓轟簡鏂逛究紼嬪簭璋冭瘯錛岃屼笉鏄悜浣犳彮紺虹紪璇戝櫒鐢熸垚鐨勪唬鐮佺殑瀹為檯鏋勯犮傛垜鐢ㄥ彟澶栦竴涓弽姹囩紪鍣ㄥ緱鍒扮殑緇撴灉鏄細
| 00401003 mov eax,dword ptr [ebp+8] 聽 ; 鍙栧弬鏁?/font> |
榪欏拰鎴戜滑鍦╩ain()涓湅鍒扮殑鍘嬫爤欏哄簭鏄畬鍏ㄥ惢鍚堢殑(娉ㄦ剰錛岀▼搴忚繍琛屽埌榪欎釜鍦版柟鐨勬椂鍊欙紝EBP=ESP)銆俶ain()鏈緇堝皢i鐨?b>鍊?/b>閫氳繃鍫嗘爤浼犻掔粰浜唌yTransform()銆?/p>
鍓栨瀽涓婇潰鐨勭▼搴忓彧鏄鏄庝簡鎴戝墠闈㈡墍鎻愬埌鐨勫瓙紼嬪簭鐨勪竴閮ㄥ垎鐢ㄦ硶銆傚浜庢眹緙栬璦鏉ヨ錛屽畬鍏ㄦ病鏈夊繀瑕佹嫎娉ヤ簬緇撴瀯鍖栫▼搴忚璁$殑妗嗘灦(鍦ㄤ粖澶╋紝浣跨敤姹囩紪鐨勪富瑕佺洰鐨勫湪浜庢彁楂樻墽琛屾晥鐜囷紝鑰屼笉鏄柟渚跨▼搴忕殑緇存姢鍜岃皟璇曪紝鍥犱負姹囩紪涓嶅彲鑳藉湪榪欎竴鐐逛笂鍋氬緱姣擟++鏇村ソ)銆傝冭檻涓嬮潰鐨勭▼搴忥細
void myTransform1(int nCount, char* sBytes){ |
寰堝鏄撶湅鍑猴紝榪欎袱涓嚱鏁板寘鍚簡鍏叡閮ㄥ垎錛屽嵆
| 聽 for(i=0; i<nCount; i++) 聽聽聽 sBytes[i] <<= 1; |
鐩墠錛岃繕娌℃湁緙栬瘧鍣ㄨ兘澶熷仛鍒板皢榪欎袱閮ㄥ垎鍚堝茍銆備緷鐒舵部鐢ㄥ垰鎵嶇殑緙栬瘧閫夐」錛屽緱鍒扮殑鍙嶆眹緙栫粨鏋滄槸(鍚屾牱鍦板垹闄や簡int 3)錛?/p>
| 1:void myTransform1(int nCount, char* sBytes){ 00401000 push ebp 00401001 mov ebp,esp 00401003 push ecx 2:for(register int i=1; i<nCount; i++) 00401004 mov dword ptr [i],1 0040100B jmp myTransform1+16h (00401016) 0040100D mov eax,dword ptr [i] 00401010 add eax,1 00401013 mov dword ptr [i],eax 00401016 mov ecx,dword ptr [i] 00401019 cmp ecx,dword ptr [nCount] 0040101C jge myTransform1+3Dh (0040103d) 3: sBytes[i] += sBytes[i-1]; 0040101E mov edx,dword ptr [sBytes] 00401021 add edx,dword ptr [i] 00401024 movsx eax,byte ptr [edx-1] 00401028 mov ecx,dword ptr [sBytes] 0040102B add ecx,dword ptr [i] 0040102E movsx edx,byte ptr [ecx] 00401031 add edx,eax 00401033 mov eax,dword ptr [sBytes] 00401036 add eax,dword ptr [i] 00401039 mov byte ptr [eax],dl 0040103B jmp myTransform1+0Dh (0040100d) 4:for(i=0; i<nCount; i++) 0040103D mov dword ptr [i],0 00401044 jmp myTransform1+4Fh (0040104f) 00401046 mov ecx,dword ptr [i] 00401049 add ecx,1 0040104C mov dword ptr [i],ecx 0040104F mov edx,dword ptr [i] 00401052 cmp edx,dword ptr [nCount] 00401055 jge myTransform1+6Bh (0040106b) 5: sBytes[i] <<= 1; 00401057 mov eax,dword ptr [sBytes] 0040105A add eax,dword ptr [i] 0040105D mov cl,byte ptr [eax] 0040105F shl cl,1 00401061 mov edx,dword ptr [sBytes] 00401064 add edx,dword ptr [i] 00401067 mov byte ptr [edx],cl 00401069 jmp myTransform1+46h (00401046) 6: } 0040106B mov esp,ebp 0040106D pop ebp 0040106E ret 7: 8:void myTransform2(int nCount, char* sBytes){ 00401070 push ebp 00401071 mov ebp,esp 00401073 push ecx 9:for(register int i=0; i<nCount; i++) 00401074 mov dword ptr [i],0 0040107B jmp myTransform2+16h (00401086) 0040107D mov eax,dword ptr [i] 00401080 add eax,1 00401083 mov dword ptr [i],eax 00401086 mov ecx,dword ptr [i] 00401089 cmp ecx,dword ptr [nCount] 0040108C jge myTransform2+32h (004010a2) 10: sBytes[i] <<= 1; 0040108E mov edx,dword ptr [sBytes] 00401091 add edx,dword ptr [i] 00401094 mov al,byte ptr [edx] 00401096 shl al,1 00401098 mov ecx,dword ptr [sBytes] 0040109B add ecx,dword ptr [i] 0040109E mov byte ptr [ecx],al 004010A0 jmp myTransform2+0Dh (0040107d) 11: } 004010A2 mov esp,ebp 004010A4 pop ebp 004010A5 ret 12: 13:int main(int argc, char* argv[]) 14: { 004010B0 push ebp 004010B1 mov ebp,esp 004010B3 sub esp,0CCh 15:char a[200]; 16:for(register int i=0; i<200; i++)a[i]=i; 004010B9 mov dword ptr [i],0 004010C3 jmp main+24h (004010d4) 004010C5 mov eax,dword ptr [i] 004010CB add eax,1 004010CE mov dword ptr [i],eax 004010D4 cmp dword ptr [i],0C8h 004010DE jge main+45h (004010f5) 004010E0 mov ecx,dword ptr [i] 004010E6 mov dl,byte ptr [i] 004010EC mov byte ptr a[ecx],dl 004010F3 jmp main+15h (004010c5) 17: myTransform1(200, a); 004010F5 lea eax,[a] 004010FB push eax 004010FC push 0C8h 00401101 call myTransform1 (00401000) 00401106 add esp,8 18: myTransform2(200, a); 00401109 lea ecx,[a] 0040110F push ecx 00401110 push 0C8h 00401115 call myTransform2 (00401070) 0040111A add esp,8 19:return 0; 0040111D xor eax,eax 20: } 0040111F mov esp,ebp 00401121 pop ebp 00401122 ret |
闈炲父鏄庢樉鍦幫紝0040103d-0040106e鍜?0401074-004010a5榪欎袱孌典唬鐮佸瓨鍦ㄥ皯閲忕殑宸埆錛屼絾寰堟樉鐒跺彧鏄瀵勫瓨鍣ㄧ殑鍋忓ソ涓嶅悓(緙栬瘧鍣ㄥ湪浼樺寲鏃訛紝榪欏彲鑳戒細鍑忓皯鍫嗘爤鎿嶄綔錛屼粠鑰屾彁楂樻ц兘錛屼絾鍦ㄨ繖閲屽彧鏄嬌鐢ㄤ簡涓嶅悓鐨勫瘎瀛樺櫒鑰屽凡)
瀵逛唬鐮佽繘琛屽悎騫剁殑濂藉鏄潪甯告槑鏄劇殑銆傛柊鐨勬搷浣滅郴緇熷線寰浣跨敤欏靛紡鍐呭瓨綆$悊銆傚綋鍐呭瓨涓嶈凍鏃訛紝紼嬪簭寰寰浼氶綣佸紩鍙戦〉闈㈠け鏁?Page faults)錛屼粠鑰屽紩鍙戞搷浣滅郴緇熶粠紓佺洏涓鍙栦竴浜涗笢瑗褲傜鐩樼殑閫熷害璧朵笉涓婂唴瀛樼殑閫熷害錛屽洜姝わ紝榪欎竴琛屼負灝嗗鑷存ц兘鐨勪笅闄嶃傞氳繃鍚堝茍涓閮ㄥ垎浠g爜錛屽彲浠ュ噺灝戠▼搴忕殑澶у皬錛岃繖鎰忓懗鐫鍑忓皯欏甸潰澶辨晥鐨勫彲鑳芥э紝浠庤岃蔣浠剁殑鎬ц兘浼氭湁鎵鎻愰珮?/p>
褰撶劧錛岃繖鏍峰仛鐨勪唬浠蜂篃涓嶇畻浣庘斺斾綘鐨勭▼搴忓皢鍙樺緱闅炬噦錛屽茍涓旈毦浜庣淮鎶ゃ傚洜姝わ紝鍐嶈繘琛岃繖鏍風殑浼樺寲涔嬪墠錛屼竴瀹氳娉ㄦ剰錛?/p>
|
涓柇搴旇璇存槸涓涓檲鏃х殑璇濋銆傚湪鏂扮殑緋葷粺涓紝瀹冪殑浣滅敤姝e湪閫愭笎琚墛寮憋紝鑰屽彉鎴愭搷浣滅郴緇熶笓鐢ㄧ殑涓滆タ銆傚茍涓嶆槸鎵鏈夌殑璁$畻鏈虹郴緇熼兘鎻愪緵涓柇錛岀劧鑰屽湪x86緋葷粺涓紝瀹冪殑浣滅敤鏄笉鍙浛浠g殑銆?/p>
涓柇瀹為檯涓婃槸涓綾葷壒孌婄殑瀛愮▼搴忋傚畠閫氬父鐢辯郴緇熻皟鐢紝浠ュ搷搴旂獊鍙戜簨浠躲?/p>
渚嬪錛岃繘琛岀鐩樻搷浣滄椂錛屼負浜嗘彁楂樻ц兘錛屽彲鑳戒細浣跨敤DMA鏂瑰紡榪涜鎿嶄綔銆侰PU鍚慏MA鎺у埗鍣ㄥ彂鍑烘寚浠わ紝瑕佹眰澶栬鍜屽唴瀛樼洿鎺ヤ氦鎹㈡暟鎹紝鑰屼笉閫氳繃CPU銆傜劧鍚庯紝CPU杞幓榪涜璧蜂粬鐨勬搷浣滐紱褰撴暟鎹氦鎹㈢粨鏉熸椂錛孋PU鍙兘闇瑕佽繘琛屼竴浜涘悗緇搷浣滐紝浣嗘鏃跺畠濡備綍鎵嶈兘鐭ラ亾DMA宸茬粡瀹屾垚浜嗘搷浣滃憿錛?/p>
寰堟樉鐒朵笉鏄緷闈燙PU鍘繪煡璇㈢姸鎬佲斺旇繖鏍稤MA鐨勪紭鍔垮氨涓嶆槑鏄句簡銆備負浜嗗敖鍙兘鍦板埄鐢―MA鐨勪紭鍔匡紝鍦ㄥ畬鎴怐MA鎿嶄綔鐨勬椂鍊欙紝DMA浼氬憡璇塁PU鈥滆繖浜嬪効鎴戝姙瀹屼簡鈥濓紝鐒跺悗CPU浼氭牴鎹渶瑕佽繘琛屽鐞嗐?/p>
榪欑澶勭悊鍙兘寰堝鏉傦紝闇瑕佽嫢騫叉潯鎸囦護鏉ュ畬鎴愩傚瓙紼嬪簭鏄竴涓笉閿欑殑涓繪剰錛屼笉榪囷紝CALL鎸囦護闇瑕佹寚瀹氬湴鍧錛岃澶栬寮鴻揩CPU鎵ц涓鏉ALL鎸囦護涔熻繚鑳屼簡CPU浣滀負鏍稿績鎺у埗鍗曞厓鐨勮璁″垵琛楓傝冭檻鍒拌繖浜涳紝鍦▁86緋葷粺涓紩鍏ヤ簡涓柇鍚戦噺鐨勬蹇點?/p>
涓柇鍚戦噺琛ㄦ槸淇濆瓨鍦ㄧ郴緇熸暟鎹尯(瀹炴ā寮忎笅錛屾槸0:0寮濮嬬殑涓孌靛尯鍩?鐨勪竴緇勬寚閽堛傝繖緇勬寚閽堟寚鍚戞瘡涓涓腑鏂湇鍔$▼搴忕殑鍦板潃銆傛暣涓腑鏂悜閲忚〃鐨勭粨鏋勬槸涓涓嚎鎬ц〃銆?/p>
姣忎竴涓腑鏂湇鍔℃湁鑷繁鐨勫敮涓鐨勭紪鍙鳳紝鎴戜滑閫氬父縐頒箣涓轟腑鏂彿銆傛瘡涓涓腑鏂彿瀵瑰簲涓柇鍚戦噺琛ㄤ腑鐨勪竴欏癸紝涔熷氨鏄竴涓腑鏂悜閲忋傚璁懼悜CPU鍙戝嚭涓柇璇鋒眰錛岃孋PU鑷繁灝嗘牴鎹綋鍓嶇殑紼嬪簭鐘舵佸喅瀹氭槸鍚︿腑鏂綋鍓嶇▼搴忓茍璋冪敤鐩稿簲鐨勪腑鏂湇鍔°?/p>
涓嶉毦鏍規嵁閫犳垚涓柇鐨勫師鍥犲皢涓柇鍒嗕負涓ょ被錛氱‖浠朵腑鏂拰杞歡涓柇銆傜‖浠朵腑鏂湁寰堝鍒嗙被鏂規硶錛屽鏍規嵁鏄惁鍙互灞忚斀鍒嗙被銆佹牴鎹紭鍏堢駭楂樹綆鍒嗙被錛岀瓑絳夈傝冭檻鍒拌繖浜涘垎綾誨茍涓嶄竴瀹氱瀛︼紝騫朵笖瀵逛簬鎴戜滑浠嬬粛涓柇鐨勪嬌鐢ㄦ病鏈夊お澶х殑甯姪錛屽洜姝ゆ垜騫朵笉鎵撶畻澶緇嗗湴浠嬬粛瀹?鍦ㄦ湰鏁欑▼鐨勯珮綰х瘒涓紝鍏充簬鍔犲瘑瑙e瘑鐨勯儴鍒嗕細鎻愬埌鏌愪簺紜歡涓柇鐨勫埄鐢紝浣嗛偅鏄悗璇?銆?/p>
鍦ㄨ璁℃搷浣滅郴緇熸椂錛屼腑鏂悜閲忕殑姒傚康鏇劇粡甯︽潵榪囧緢澶х殑渚垮埄銆傛搷浣滅郴緇熼殢鏃跺彲鑳藉崌綰э紝榪欐牱錛岄氳繃CALL鏉ヨ皟鐢ㄦ搷浣滅郴緇熺殑鏈嶅姟(濡傛灉璇存瘡涓▼搴忛兘鍖呭惈瀵逛簬鏂囦歡緋葷粺銆佽繘紼嬭〃榪欎簺搴旇鐢辨搷浣滅郴緇熺鐞嗙殑鏁版嵁鐨勭洿鎺ユ搷浣滅殑璇濓紝涓嶄粎浼氶犳垚紼嬪簭鐨勮噧鑲匡紝鑰屼笖涓嶅埄浜庣郴緇熺殑瀹夊叏)灝辨樉寰椾笉澶悎閫備簡鈥斺旀病浜鴻兘鐭ラ亾錛屼互鍚庣殑鎿嶄綔緋葷粺鐨勬湇鍔$▼搴忓叆鍙g偣浼氫笉浼氭槸閭e効銆傝蔣浠朵腑鏂殑瀛樺湪涓鴻В鍐寵繖涓棶棰樻彁渚涗簡鏂逛究銆?/p>
瀵逛簬涓鍙板寘鍚簡BIOS鐨勮綆楁満鏉ヨ錛屽惎鍔ㄧ殑鏃跺欑郴緇熷凡緇忔彁渚涗簡涓閮ㄥ垎鏈嶅姟錛屼緥濡傛樉紺烘湇鍔°傛棤璁轟綘鐨凚IOS銆佹樉紺哄崱鏈夊涔堢殑鈥滀釜鎬р濓紝鍙浠栦滑鍜孖BM PC鍏煎錛岄偅涔堟鏃朵綘鑲畾鍙互閫氳繃璋冪敤16(10h)鍙蜂腑鏂潵浣跨敤鏄劇ず鏈嶅姟銆傝皟鐢ㄤ腑鏂殑鎸囦護鏄?/p>
|
榪欏皢寮曞彂CPU鍘昏皟鐢ㄤ竴涓腑鏂侰PU灝嗕繚瀛樺綋鍓嶇殑紼嬪簭鐘舵佸瓧錛屾竻闄rap鍜孖nterrupt涓や釜鏍囧織錛屽皢鍗沖皢鎵ц鐨勬寚浠ゅ湴鍧鍘嬪叆鍫嗘爤錛屽茍璋冪敤涓柇鏈嶅姟(鏍規嵁涓柇鍚戦噺琛?銆?/p>
緙栧啓涓柇鏈嶅姟紼嬪簭涓嶆槸涓浠跺鏄撶殑浜嬫儏銆傚緢澶氭椂鍊欙紝涓柇鏈嶅姟紼嬪簭蹇呴』鍐欐垚鍙噸鍏ヤ唬鐮?/b>(鎴栫函浠g爜錛宲ure code)銆傛墍璋撳彲閲嶅叆浠g爜鏄寚錛岀▼搴忕殑榪愯榪囩▼涓彲浠ヨ鎵撴柇錛屽茍鐢卞紑濮嬪鍐嶆鎵ц錛屽茍涓斿湪鍚堢悊鐨勮寖鍥村唴(澶氭閲嶅叆錛岃屼笉閫犳垚鍫嗘爤婧㈠嚭絳夊叾浠栭棶棰?錛岀▼搴忓彲浠ュ湪琚墦鏂緇х畫鎵ц錛屽茍涓旀墽琛岀粨鏋滀笉鍙楀獎鍝嶃?/p>
鐢變簬鍦ㄥ綰跨▼鐜涓瓑鍏朵粬涓浜涘湴鏂硅繘琛岀▼搴忚璁℃椂涔熼渶瑕佽冭檻榪欎釜鍥犵礌錛屽洜姝よ繖閲岀潃閲嶈涓涓嬪彲閲嶅叆浠g爜鐨勭紪鍐欍?/p>
鍙噸鍏ヤ唬鐮佹渶涓昏鐨勮姹傚氨鏄紝紼嬪簭涓嶅簲浣跨敤鏌愪釜鎸囧畾鐨勫唴瀛樺湴鍧鐨勫唴瀛?瀵逛簬楂樼駭璇█鏉ヨ錛岃繖閫氬父鏄叏灞鍙橀噺錛屾垨瀵硅薄鐨勬垚鍛?銆傚鏋滃彲鑳界殑璇濓紝搴斾嬌鐢ㄥ瘎瀛樺櫒錛屾垨鍏朵粬鏂瑰紡鏉ヨВ鍐熾傚鏋滀笉鑳藉仛鍒拌繖涓鐐癸紝鍒欏繀欏誨湪寮濮嬨佺粨鏉熺殑鏃跺欏垎鍒姝㈠拰鍚敤涓柇錛屽茍涓旓紝榪愯鏃墮棿涓嶈兘澶暱銆?/p>
涓嬮潰鐢–璇█鍒嗗埆涓句竴涓彲閲嶅叆鍑芥暟錛屽拰涓や釜闈炲彲閲嶅叆鍑芥暟鐨勪緥瀛?娉? 榪欎簺渚嬪瓙搴旇鏄湪鏌愭湰澶氱嚎紼嬫垨鎿嶄綔緋葷粺鐨勪功涓婄湅鍒扮殑錛岄仐鎲劇殑鏄垜鎯充笉璧鋒潵鏄摢鏈功浜嗭紝鍦ㄨ繖閲屽厛鎰熻阿閭d綅浣滆呮彁渚涚殑鑼冧緥)錛?/p>
鍙噸鍏ュ嚱鏁幫細
| void strcpy(char* lpszDest, char* lpszSrc){ 聽 while(*dest++=*src++); 聽 *dest=0; } |
闈炲彲閲嶅叆鍑芥暟
| char cTemp;聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 // 鍏ㄥ眬鍙橀噺 void SwapChar(char* lpcX, char* lpcY){ 聽 cTemp = *lpcX; *lpcX = *lpcY; lpcY = cTemp; // 寮曠敤浜嗗叏灞鍙橀噺錛屽湪鍒嗕韓鍐呭瓨鐨勫涓嚎紼嬩腑鍙兘閫犳垚闂 } |
闈炲彲閲嶅叆鍑芥暟
| void SwapChar2(char* lpcX, char* lpcY){ 聽 static char cTemp;聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 聽聽聽聽聽聽聽聽 // 闈欐佸彉閲?/font> 聽 cTemp = *lpcX; *lpcX = *lpcY; lpcY = cTemp; // 寮曠敤浜嗛潤鎬佸彉閲忥紝鍦ㄥ垎浜唴瀛樼殑澶氫釜綰跨▼涓彲鑳介犳垚闂 } |
涓柇鍒╃敤鐨勬槸緋葷粺鐨勬爤銆傛爤鎿嶄綔鏄彲閲嶅叆鐨?鍥犱負鏍堝彲浠ヤ繚璇佲滃厛榪涘悗鍑衡?錛屽洜姝わ紝鎴戜滑騫朵笉闇瑕佽冭檻鏍堟搷浣滅殑閲嶅叆闂銆備嬌鐢ㄥ畯姹囩紪鍣ㄥ啓鍑哄彲閲嶅叆鐨勬眹緙栦唬鐮侀渶瑕佹敞鎰忎竴浜涢棶棰樸傜畝鍗曞湴璇達紝騫茶剢涓嶈鐢ㄦ爣鍙蜂綔涓哄彉閲忔槸涓涓笉閿欑殑涓繪剰銆?/p>
浣跨敤楂樼駭璇█緙栧啓鍙噸鍏ョ▼搴忕浉瀵規潵璁茶交鏉句竴浜涖傛妸鎸佷綇涓嶈闂偅浜涘叏灞(鎴栧綋鍓嶅璞$殑)鍙橀噺錛屼笉浣跨敤闈欐佸眬閮ㄥ彉閲忥紝鍧氭寔鍙傜敤灞閮ㄥ彉閲忥紝鍐欏嚭鐨勭▼搴忓氨灝嗘槸鍙噸鍏ョ殑銆?/p>
涔﹀綊姝d紶錛岃皟鐢ㄨ蔣浠朵腑鏂椂錛岄氬父閮芥槸閫氳繃瀵勫瓨鍣ㄤ紶榪涖佷紶鍑哄弬鏁般傝繖鎰忓懗鐫浣犵殑int鎸囦護鍛ㄥ洿涔熻浼氬瓨鍦ㄤ竴浜涒滃府鎵嬧濓紝姣斿涓嬮潰鐨勪唬鐮侊細
| mov ax, 4c00h int 21h |
灝辨槸閫氳繃璋冪敤DOS涓柇鏈嶅姟榪斿洖鐖惰繘紼嬶紝騫跺甫鍥為敊璇弽棣堢爜0銆傚叾涓紝ax涓殑鏁版嵁4c00h灝辨槸浼犻掔粰DOS涓柇鏈嶅姟鐨勫弬鏁般?/p>
鍒拌繖閲岋紝x86姹囩紪璇█鐨勫熀紜閮ㄥ垎灝卞熀鏈笂璁插畬浜嗭紝銆婄畝鏄巟86姹囩紪璇█鏁欑▼銆嬬殑鍒濈駭綃団斺旀眹緙栬璦鍩虹涔熷氨鍒版鍛婁竴孌佃惤銆傚綋鐒訛紝鐩墠涓烘錛屾垜鍙槸铚昏湏鐐規按涓鑸彁鍒頒簡涓浜涘涔爔86姹囩紪璇█涓垜璁や負闇瑕佹敞鎰忕殑閲嶈姒傚康銆傝澶氫笢瑗匡紝鍖呮嫭鍏ㄩ儴姹囩紪璇彞鐨勬椂搴忕壒鎬?鎸囦護鎵ц鍛ㄦ湡鏁幫紝浠ュ強鎸囦護鍛ㄦ湡涓悇涓樁孌電殑鑺傛媿鏁扮瓑)銆佸姛鑳姐佸弬鏁扮瓑絳夛紝闄愪簬涓漢姘村鉤鍜岀瘒騫呮垜閮芥病鏈変綔璇︾粏浠嬬粛銆傚鏋滄偍瀵硅繖浜涘唴瀹規劅鍏磋叮錛岃鍙傝僆ntel鍜孉MD涓ゅぇCPU渚涘簲鍟嗙綉绔欎笂鎻愪緵鐨勫紑鍙戜漢鍛樺弬鑰冦?/p>
鍦ㄤ互鍚庣殑綆鏄巟86姹囩紪璇█鏁欑▼涓駭綃囧拰楂樼駭綃囦腑錛屾垜灝嗙潃閲嶄粙緇嶆眹緙栬璦鐨勮皟璇曟妧鏈佷紭鍖栵紝浠ュ強涓浜涘叿浣撶殑搴旂敤鎶宸э紝鍖呮嫭鍙嶈窡韙佸弽鍙嶈窡韙佸姞瀵嗚В瀵嗐佺梾姣掍笌鍙嶇梾姣掔瓑絳夈?/p>
鎴戜滑鍓嶉潰宸茬粡鎻愬埌錛屽唴瀛樺彲浠ュ拰瀵勫瓨鍣ㄤ氦鎹㈡暟鎹紝涔熷彲浠ヨ璧嬩簣绔嬪嵆鏁般傞棶棰樻槸錛屽鏋滄垜浠渶瑕佹妸鍐呭瓨鐨勬煇閮ㄥ垎鍐呭澶嶅埗鍒板彟涓涓湴鍧錛屽張鎬庝箞鍋氬憿錛?/p>
璁炬兂灝咲S:SI澶勭殑榪炵畫512瀛楄妭鍐呭澶嶅埗鍒癊S:DI錛堝厛涓嶈冭檻鍙兘鐨勯噸鍙狅級銆備篃璁鎬細鏈変漢鍐欏嚭榪欐牱鐨勪唬鐮侊細
NextByte: | mov cx,512 mov al,ds:[si] mov es:[di],al inc si inc di loop NextByte | ; 寰幆嬈℃暟 |
鎴戜笉鍠滄涓婇潰鐨勪唬鐮併傚畠鐨勭‘鑳借揪鍒頒綔鐢紝浣嗘槸錛屾晥鐜囦笉濂姐傚鏋滀綘鏄湪鍋氫紭鍖栵紝閭d箞鍐欏嚭榪欐牱鐨勪唬鐮佹剰鍛崇潃璧斾簡澶漢鍙堟姌鍏點?/p>
Intel鐨凜PU鐨勫己欏規槸涓叉搷浣溿傛墍璋撲覆鎿嶄綔灝辨槸鐢盋PU鍘誨畬鎴愭煇涓鏁伴噺鐨勩侀噸澶嶇殑鍐呭瓨鎿嶄綔銆傞渶瑕佽鏄庣殑鏄紝鎴戜滑甯哥敤鐨凨MP綆楁硶錛堢敤浜庡尮閰嶅瓧絎︿覆涓殑妯″紡錛夌殑鏀硅繘鈥斺擝oyer綆楁硶錛岀敱浜庢病鏈夊埄鐢ㄤ覆鎿嶄綔錛屽洜姝ゅ湪Intel鐨凜PU涓婄殑鏁堢巼騫墮潪鏈浼樸傚ソ鐨勭紪璇戝櫒寰寰鍙互鍒╃敤Intel CPU鐨勮繖涓鐗規т紭鍖栦唬鐮侊紝鐒惰岋紝騫墮潪鎵鏈夌殑鏃跺欏畠閮借兘浜х敓鏈濂界殑浠g爜銆?/p>
鏌愪簺鎸囦護鍙互鍔犱笂REP鍓嶇紑錛坮epeat, 鍙嶅涔嬫剰錛夛紝榪欎簺鎸囦護閫氬父琚彨鍋氫覆鎿嶄綔鎸囦護銆?/p>
涓句緥鏉ヨ錛孲TOSD鎸囦護灝咵AX鐨勫唴瀹逛繚瀛樺埌ES:DI錛屽悓鏃跺湪DI涓婂姞鎴栧噺鍥涖傜被浼肩殑錛孲TOSB鍜孲TOSW鍒嗗埆浣?瀛楄妭鎴?瀛楃殑涓婅堪鎿嶄綔錛屽湪DI涓婂姞鎴栧噺鐨勬暟鏄?鎴?銆?/p>
璁$畻鏈鴻璦閫氬父鏄笉鍏佽浜屼箟鎬х殑銆備負浠涔堟垜瑕佽鈥滃姞鎴栧噺鈥濆憿錛熸病閿欙紝瀛ょ珛鍦扮湅STOS?鎸囦護錛屽茍涓嶈兘鐭ラ亾鍒板簳鏄姞榪樻槸鍑忥紝鍥犱負榪欏彇鍐充簬鈥滄柟鍚戔濇爣蹇?DF, Direction Flag)銆傚鏋淒F琚浣嶏紝鍒欏姞錛涘弽涔嬪垯鍑忋?/p>
緗綅銆佸浣嶇殑鎸囦護鍒嗗埆鏄疭TD鍜孋LD銆?/p>
褰撶劧錛孯EP鍙槸鍑犵鍙敤鍓嶇紑涔嬩竴銆傚父鐢ㄧ殑榪樺寘鎷琑EPNE錛岃繖涓墠緙閫氬父琚敤鏉ユ瘮杈冧袱涓覆錛屾垨鎼滅儲鏌愪釜鐗瑰畾瀛楃錛堝瓧銆佸弻瀛楋級銆俁EPZ銆丷EPE銆丷EPNZ涔熸槸闈炲父甯哥敤鐨勬寚浠ゅ墠緙錛屽垎鍒唬琛╖F(Zero Flag)鍦ㄤ笉鍚岀姸鎬佹椂閲嶅鎵ц銆?/p>
涓嬮潰璇翠笁涓彲浠ュ鍒舵暟鎹殑鎸囦護錛?/p>
| 鍔╄絎?/font> | 鎰忎箟 |
| movsb | 灝咲S:SI鐨勪竴瀛楄妭澶嶅埗鍒癊S:DI錛屼箣鍚嶴I++銆丏I++ |
| movsw | 灝咲S:SI鐨勪竴瀛楄妭澶嶅埗鍒癊S:DI錛屼箣鍚嶴I+=2銆丏I+=2 |
| movsd | 灝咲S:SI鐨勪竴瀛楄妭澶嶅埗鍒癊S:DI錛屼箣鍚嶴I+=4銆丏I+=4 |
浜庢槸涓婇潰鐨勭▼搴忔敼鍐欎負
| cld mov cx, 128 rep movsd | ; 澶嶄綅DF ; 512/4 = 128錛屽叡128涓弻瀛?br />; 琛屽姩錛?/font> |
絎竴鍙ld寰堝鏃跺欐槸澶氫綑鐨勶紝鍥犱負瀹為檯鍐欑▼搴忔椂錛屽緢灝戜細鍑虹幇緗瓺F鐨勬儏鍐點備笉榪囧湪姝e紡鍐沖畾鍒犳帀瀹冧箣鍓嶏紝寤鴻浣犱粩緇嗗湴璋冭瘯鑷繁鐨勭▼搴忥紝騫剁‘璁ゆ瘡涓涓兘澶熻蛋鍒拌繖閲岀殑璺緞涓兘涓嶄細灝咲F緗綅銆?/p>
閿欒錛堥潪棰勬湡鐨勶級鐨凞F鏄嵄闄╃殑銆傚畠寰堝彲鑳芥柇閫佹帀浣犵殑紼嬪簭錛屽洜涓鴻繖鐩存帴閫犳垚緙撳啿鍖烘孩鍑?/b>闂銆?/p>
浠涔堟槸緙撳啿鍖烘孩鍑哄憿錛熺紦鍐插尯婧㈠嚭鍒嗕負涓ょ被錛屼竴綾繪槸鍐欏叆緙撳啿鍖轟互澶栫殑鍐呭錛屼竴綾繪槸璇誨彇緙撳啿鍖轟互澶栫殑鍐呭銆傚悗涓縐嶅線寰鏇撮殣钄斤紝浣嗛殢渚垮摢涓涓兘鏈夊彲鑳芥柇閫佹帀浣犵殑紼嬪簭銆?/p>
緙撳啿鍖烘孩鍑哄浜庝竴涓綉緇滄湇鍔℃潵璇村緢鍙兘鏇村姞鍗遍櫓銆傛鏈夋伓鎰忕殑鐢ㄦ埛鑳藉鍒╃敤瀹冩墽琛岃嚜宸卞笇鏈涚殑鎸囦護銆傛湇鍔¢氬父鎷ユ湁鏇撮珮鐨勭壒鏉冿紝鑰岃繖寰堝彲鑳戒細閫犳垚鐗規潈鎻愬崌錛涘嵆浣夸笉鑳芥彁鍗囨敾鍑昏呮嫢鏈夌殑鐗規潈錛屼粬涔熷彲浠ュ埄鐢ㄨ繖縐嶉棶棰樹嬌鏈嶅姟宕╂簝錛屼粠鑰屽艦鎴愪竴嬈℃垚鍔熺殑DoS錛堟嫆緇濇湇鍔★級鏀誨嚮銆傛瘡騫碈ERT鐨勫畨鍏ㄥ叕鍛婁腑錛岄兘鏈?鎴愬乏鍙崇殑闂鏄敱浜庣紦鍐插尯婧㈠嚭閫犳垚鐨勩?/p>
鍦ㄤ嬌鐢ㄦ眹緙栬璦錛屾垨C璇█緙栧啓紼嬪簭鏃訛紝寰堝鏄撳湪鏃犳剰涓紩鍏ョ紦鍐插尯婧㈠嚭銆傜劧鑰屽茍涓嶆槸鎵鏈夌殑璇█閮戒細寮曞叆緙撳啿鍖烘孩鍑洪棶棰橈紝Java鍜孋#錛岀敱浜庢病鏈夋寚閽堬紝騫朵笖緙撳啿鍖洪噰鍙栧姩鎬佸垎閰嶇殑鏂瑰紡錛屾湁鏁堝湴娑堥櫎浜嗛犳垚緙撳啿鍖烘孩鍑虹殑鍦熷¥銆?/p>
姹囩紪璇█涓紝鐢變簬REP*鍓嶇紑閮界敤CX浣滀負璁℃暟鍣紝鍥犳鎯呭喌浼氬ソ涓浜涳紙褰撶劧錛屾湁鏃朵篃浼氭洿緋熺硶錛屽洜涓虹敱浜嶤X鐨勯檺鍒訛紝寰堝彲鑳戒嬌鍘熸湰鍙兘鏀瑰彉紼嬪簭琛屼負鐨勭紦鍐插尯婧㈠嚭鐨勮寖鍥寸緝灝忥紝浠庤屾洿涓洪殣钄斤級銆傞伩鍏嶇紦鍐插尯婧㈠嚭鐨勪竴涓富瑕佹柟娉曞氨鏄粩緇嗘鏌ワ紝榪欏寘鎷袱鏂歸潰錛氳緗悎鐞嗙殑緙撳啿鍖哄ぇ灝忥紝鍜屾牴鎹ぇ灝忕紪鍐欑▼搴忋傞櫎姝や箣澶栵紝闈炲父閲嶈鐨勪竴鐐瑰氨鏄紝鍦ㄦ眹緙栬璦榪欎釜綰у埆鍐欑▼搴忥紝浣犺偗瀹氬笇鏈涘幓鎺夋墍鏈夌殑鏃犵敤鎸囦護錛岀劧鑰屽啀鍘繪帀涔嬪墠錛屼竴瀹氳榪涜涓ユ牸鐨勬祴璇曪紱鏇磋繘涓姝ワ紝濡傛灉鑳藉姞涓婃敞閲婏紝騫墮氳繃鍠勭敤瀹忔潵鍋氳皟璇曟ā寮忔鏌ワ紝寰寰鑳藉杈懼埌鏇村ソ鐨勬晥鏋溿?/p>
姝e3.2鑺傛彁鍒板埌鐨勯偅鏍鳳紝淇濇姢妯″紡涓紝浣犲彲浠ヤ嬌鐢?2浣嶇殑綰挎у湴鍧錛岃繖鎰忓懗鐫鐩存帴璁塊棶4GB鐨勫唴瀛樸傜敱浜庤繖涓師鍥狅紝閫夋嫨鍣ㄤ笉鐢ㄥ儚瀹炴ā寮忎腑孌靛瘎瀛樺櫒閭f牱棰戠箒鍦頒慨鏀廣傞『渚挎彁涓鍙ワ紝榪欎喚鏁欑▼涓墍璇寸殑淇濇姢妯″紡鎸囩殑鏄?86浠ヤ笂鐨勪繚鎶ゆā寮忥紝鎴栬咃紝Microsoft閫氬父縐頒負鈥滃寮烘ā寮忊濈殑閭g銆?/p>
鍦ㄤ負閫夋嫨鍣ㄨ鍏ユ暟鍊肩殑鏃跺欎竴瀹氳闈炲父灝忓績銆傞敊璇殑鏁板煎線寰浼氬鑷存棤鏁堥〉闈㈤敊璇?鍦╓indows涓粡甯稿嚭鐜?)銆傚悓鏃訛紝涔熶笉瑕佸繕璁頒綘鐨勫湴鍧鏄?2浣嶇殑錛岃繖涔熸槸淇濇姢妯″紡鐨勪富瑕佷紭鍔夸箣涓銆?/p>
鐜板湪鍋囪瀛樺湪涓涓弿榪扮鎻忚堪浠庣墿鐞嗙殑0:0寮濮嬬殑鍏ㄩ儴鍐呭瓨錛屽茍宸茬粡鍔犺澆榪汥S(鏁版嵁閫夋嫨鍣?錛屽垯鎴戜滑鍙互閫氳繃涓嬮潰鐨勭▼搴忔潵鎿嶄綔VGA鐨刅RAM錛?/p>
| mov edi,0a0000h mov byte ptr [edi],0fh | ; VGA鏄懼瓨鐨勫亸縐婚噺 ; 灝嗙涓瀛楄妭鏀逛負0fh |
寰堟槑鏄撅紝榪欐瘮瀹炴ā寮忎笅鐨勭▼搴?/p>
| mov ax,0a000h mov ds,ax mov di,0 mov [di],0fh | ; AX -> VGA孌靛湴鍧 ; 灝咥X鍊艱澆鍏S ; DI娓呴浂 ; 淇敼絎竴瀛楄妭 |
鐪嬩笂鍘昏鑸掓湇涓浜涖?/p>
鍒扮洰鍓嶄負姝紝鎮ㄥ凡緇忎簡瑙d簡鍩烘湰鐨勫瘎瀛樺櫒浠ュ強鍐呭瓨鐨勬搷浣滅煡璇嗐備簨瀹炰笂錛屾偍鐜板湪宸茬粡鍙互鍐欏嚭寰堝鐨勫簳灞傛暟鎹鐞嗙▼搴忎簡銆?/p>
涓嬮潰鎴戞潵璇磋鍫嗘爤銆傚爢鏍堝疄鍦ㄤ笉鏄竴涓浜洪檶鐢熺殑鏁版嵁緇撴瀯錛屽畠鏄竴涓?span class="tip" id="oFILO" title="">鍏堣繘鍚庡嚭(FILO)錛?b>鍏堣繘鍚庡嚭(FILO)鏄繖鏍蜂竴涓蹇碉細鏈鍚?/b>鏀捐繘琛ㄤ腑鐨勬暟鎹湪鍙栧嚭鏃?b>鏈鍏?/b>鍑烘潵銆?b>鍏堣繘鍚庡嚭(FILO)鍜?b>鍏堣繘鍏堝嚭(FIFO, 鍜屽厛榪涘悗鍑虹殑瑙勫垯鐩稿弽)錛屼互鍙?b>闅忔満瀛樺彇鏄渶涓昏鐨勪笁縐嶅瓨鍌ㄥ櫒璁塊棶鏂瑰紡銆傚浜庡爢鏍堣岃█錛屾渶鍚庢斁鍏ョ殑鏁版嵁鍦ㄥ彇鍑烘椂鏈鍏堝嚭鐜般傚浜庡瓙紼嬪簭璋冪敤錛岀壒鍒槸閫掑綊璋冪敤鏉ヨ錛岃繖鏄竴涓潪甯告湁鐢ㄧ殑鐗規с傦級鐨勭嚎鎬ц〃錛岃兘澶熷府鍔╀綘瀹屾垚寰堝寰堝ソ鐨勫伐浣溿?/p>
涓涓搧鏉嗙殑姹囩紪璇█紼嬪簭鍛樻湁鏃朵細鍙戠幇緋葷粺鎻愪緵鐨勫瘎瀛樺櫒涓嶅銆傚緢鏄劇劧錛屼綘鍙互浣跨敤鏅氱殑鍐呭瓨鎿嶄綔鏉ュ畬鎴愯繖涓伐浣滐紝灝卞儚C/C++涓墍鍋氱殑閭f牱銆?娌¢敊錛屾病閿欙紝鍙槸錛屽鏋滄暟鎹錛堟暟鎹夋嫨鍣級浠ュ強鍋忕Щ閲忓彂鐢熷彉鍖栨庝箞鍔烇紵鏇磋繘涓姝ワ紝濡傛灉甯屾湜淇濆瓨鏌愪簺鍦ㄨ繖縐嶆搷浣滀腑鍙兘鍙楀埌褰卞搷鐨勫瘎瀛樺櫒鐨勬椂鍊欐庝箞鍔烇紵紜疄錛屼綘鍙互鎶婁粬浠篃瀛樺埌鑷繁鐨勯偅鐗囧唴瀛樹腑錛岃嚜宸卞疄鐜板爢鏍堛?/p>
澶夯鐑︿簡鈥︹?/p>
鏃㈢劧緋葷粺鎻愪緵浜嗗爢鏍堬紝騫朵笖鎬ц兘姣旇嚜宸卞啓涓浠芥洿濂斤紝閭d箞涓轟粈涔堜笉鐩存帴鍔犱互鍒╃敤鍛紵
緋葷粺鍫嗘爤涓嶄粎浠呮槸涓孌靛唴瀛樸傜敱浜嶤PU瀵瑰畠瀹炴柦綆$悊錛屽洜姝や綘涓嶉渶瑕佽冭檻鍫嗘爤鎸囬拡鐨勪慨姝i棶棰樸傚彲浠ユ妸瀵勫瓨鍣ㄥ唴瀹癸紝鐢氳嚦涓涓珛鍗蟲暟鐩存帴鏀懼埌鍫嗘爤閲岋紝騫跺湪闇瑕佺殑鏃跺欏皢鍏跺彇鍑恒傚悓鏃訛紝緋葷粺騫朵笉瑕佹眰鍙栧嚭鐨勬暟鎹粛鐒跺洖鍒板師鏉ョ殑浣嶇疆銆?/p>
闄や簡鏄懼紡鍦版搷浣滃爢鏍堬紙浣跨敤PUSH鍜孭OP鎸囦護錛変箣澶栵紝寰堝鎸囦護涔熼渶瑕佷嬌鐢ㄥ爢鏍堬紝濡侷NT銆丆ALL銆丩EAVE銆丷ET銆丷ETF銆両RET絳夌瓑銆傞厤瀵逛嬌鐢ㄤ笂榪版寚浠ゅ茍涓嶄細閫犳垚浠涔堥棶棰橈紝鐒惰岋紝濡傛灉浣犳墦綆椾嬌鐢↙EAVE銆丷ET銆丷ETF銆両RET榪欐牱鐨勬寚浠ゅ疄鐜拌煩杞?姣擩MP鏇翠負楹葷儲錛岀劧鑰屾湁鏃訛紝渚嬪鍦ㄥ姞瀵嗚蔣浠朵腑錛屾垨鑰呴渶瑕佷慨鏀硅皟鐢ㄨ呯姸鎬佹椂錛岃繖鏄繀瑕佺殑)鐨勮瘽錛岄偅涔堟垜鐨勫緩璁槸錛屽厛鎼炴竻妤氬畠浠仛鐨勫埌搴曟槸浠涔堬紝騫朵笖錛岀簿紜湴浜嗚В鑷繁瑕佸仛浠涔堛?/p>
姝e鍓嶉潰鎵璇寸殑錛屾湁涓や釜鏄懼紡鍦版搷浣滃爢鏍堢殑鎸囦護錛?/p>
| 鍔╄絎?/font> | 鍔熻兘 |
| PUSH | 灝嗘搷浣滄暟瀛樺叆鍫嗘爤錛屽悓鏃朵慨姝e爢鏍堟寚閽?/td> |
| POP | 灝嗘爤欏跺唴瀹瑰彇鍑哄茍瀛樺埌鐩殑鎿嶄綔鏁頒腑錛屽悓鏃朵慨姝e爢鏍堟寚閽?/td> |
鎴戜滑鐜板湪鏉ョ湅鐪嬪爢鏍堢殑鎿嶄綔銆?/p>
鎵ц涔嬪墠

鎵ц浠g爜
| mov ax,1234h mov bx,10 push ax push bx |
涔嬪悗錛屽爢鏍堢殑鐘舵佷負

涔嬪悗錛屽啀鎵ц
| pop dx pop cx |
鍫嗘爤鐨勭姸鎬佹垚涓?/p>

褰撶劧錛宒x銆乧x涓殑鍐呭灝嗗垎鍒槸000ah鍜?234h銆?/p>
娉ㄦ剰錛屾渶鍚庤繖寮犲浘涓紝鎴戞病鏈夋姽鍘?234h鍜?00ah錛屽洜涓篜OP鎸囦護騫朵笉浠庡唴瀛樹腑鎶瑰幓鏁板箋備笉榪囧敖綆″姝わ紝鎴戜釜浜轟粛鐒墮潪甯稿弽瀵圭戶緇嬌鐢ㄨ繖涓や釜鏁幫紙浣犲彲浠ラ氳繃淇敼SP鏉ュ啀嬈OP瀹冧滑錛夛紝鐒惰岃繖寰堝鏄撳鑷撮敊璇?/p>
涓瀹氳淇濊瘉鍫嗘爤孌墊湁瓚沖鐨勭┖闂存潵鎵ц涓柇錛屼互鍙婂叾浠栦竴浜涢殣寮忕殑鍫嗘爤鎿嶄綔銆備粎浠呯粺璁USH鐨勬暟閲忓茍鎹璁$畻鍫嗘爤鎵闇鐨勫ぇ灝忓緢鍙兘閫犳垚闂銆?/p>
CALL鎸囦護灝嗚繑鍥炲湴鍧鏀懼埌鍫嗘爤涓傜粷澶у鏁癈/C++緙栬瘧鍣ㄦ彁渚涗簡鈥滃爢鏍堟鏌モ濊繖涓紪璇戦夐」錛屽叾浣滅敤鍦ㄤ簬淇濊瘉C紼嬪簭孌典腑娌℃湁蹇樿瀵瑰爢鏍堜腑澶氫綑鐨勬暟鎹繘琛屾竻鐞嗭紝浠庤屼繚璇佽繑鍥炲湴鍧鏈夋晥銆?/p>
鏈珷涓粙緇嶄簡鍐呭瓨鐨勬搷浣滅殑涓浜涘叆闂ㄧ煡璇嗐傞檺浜庣瘒騫咃紝鎴戜笉鎵撶畻灞曞紑緇嗚鎸囦護錛屽cmps*錛宭ods*錛宻tos*錛岀瓑絳夈傝繖浜涙寚浠ょ殑鐢ㄦ硶鍜屽墠闈粙緇嶇殑movs*鍩烘湰涓鏍鳳紝鍙槸鏈変笉鍚岀殑浣滅敤鑰屽凡銆?/p>
鍦ㄥ墠闈㈢殑绔犺妭涓紝鎴戜滑宸茬粡浜嗚В浜嗗瘎瀛樺櫒鐨勫熀鏈嬌鐢ㄦ柟娉曘傝屾濡傜粨灝炬彁鍒扮殑閭f牱錛屼粎浠呬嬌鐢ㄥ瘎瀛樺櫒鍋氫竴鐐硅繍綆楁槸娌℃湁浠涔堝お澶ф剰涔夌殑錛屾瘯绔熷畠浠笉鑳戒繚瀛樺お澶氱殑鏁版嵁錛屽洜姝わ紝瀵圭紪紼嬩漢鍛樿岃█錛屼粬鑲畾榪垏鍦板笇鏈涜闂唴瀛橈紝浠ヤ繚瀛樻洿澶氱殑鏁版嵁銆?/p>
鎴戝皢鍒嗗埆浠嬬粛濡備綍鍦ㄤ繚鎶ゆā寮忓拰瀹炴ā寮忔搷浣滃唴瀛橈紝鐒惰屽湪姝や箣鍓嶏紝鎴戜滑鍏堢啛鎮変竴涓嬭繖涓ょ妯″紡涓唴瀛樼殑緇撴瀯銆?/p>
浜嬪疄涓婏紝鍦ㄥ疄妯″紡涓紝鍐呭瓨姣斾繚鎶ゆā寮忎腑鐨勭粨鏋勬洿浠や漢鍥版儜銆傚唴瀛樿鍒嗗壊鎴愭錛屽茍涓旓紝鎿嶄綔鍐呭瓨鏃訛紝闇瑕佹寚瀹氭鍜屽亸縐婚噺銆備笉榪囷紝鐞嗚В榪欎簺姒傚康鏄潪甯稿鏄撶殑浜嬫儏銆傝鐪嬩笅闈㈢殑鍥撅細

孌?瀵勫瓨鍣ㄨ繖縐嶆牸灞鏄棭鏈熺‖浠剁數璺檺鍒剁暀涓嬬殑涓涓激鐤ゃ傚湴鍧鎬葷嚎鍦ㄥ綋鏃舵湁20-bit銆?/p>
鐒惰?0-bit鐨勫湴鍧涓嶈兘鏀懼埌16-bit鐨勫瘎瀛樺櫒閲岋紝榪欐剰鍛崇潃鏈?-bit蹇呴』鏀懼埌鍒殑鍦版柟銆傚洜姝わ紝涓轟簡璁塊棶鎵鏈夌殑鍐呭瓨錛屽繀欏諱嬌鐢ㄤ袱涓?6-bit瀵勫瓨鍣ㄣ?/p>
榪欎竴璁捐涓婄殑鎶樿》鏂規瀵艱嚧浜嗕粖澶╃殑孌?鍋忕Щ閲忔牸灞銆傛渶鍒濈殑璁捐涓紝鍏朵腑涓涓瘎瀛樺櫒鍙湁4-bit鏈夋晥錛岀劧鑰屼負浜嗙畝鍖栫▼搴忥紝涓や釜瀵勫瓨鍣ㄩ兘鏄?6-bit鏈夋晥錛屽茍鍦ㄦ墽琛屾椂姹傚嚭鍔犳潈鍜屾潵鏍囪瘑20-bit鍦板潃銆?/p>
鍋忕Щ閲忔槸16-bit鐨勶紝鍥犳錛屼竴涓鏄?4KB銆備笅闈㈢殑鍥懼彲浠ュ府鍔╀綘鐞嗚В20-bit鍦板潃鏄浣曞艦鎴愮殑錛?/p>

孌?鍋忕Щ閲忔爣璇嗙殑鍦板潃閫氬父璁板仛 孌?鍋忕Щ閲?鐨勫艦寮忋?/p>
鐢變簬榪欐牱鐨勭粨鏋勶紝涓涓唴瀛樻湁澶氫釜瀵瑰簲鐨勫湴鍧銆備緥濡傦紝0000:0010鍜?001:0000鎸囩殑鏄悓涓鍐呭瓨鍦板潃銆傚張濡傦紝
0000:1234 = 0123:0004 = 0120:0034 = 0100:0234
0001:1234 = 0124:0004 = 0120:0044 = 0100:0244
浣滀負璐熼潰褰卞搷涔嬩竴錛屽湪孌典笂鍔?鐩稿綋浜庡湪鍋忕Щ閲忎笂鍔?6錛岃屼笉鏄竴涓滃叏鏂扳濈殑孌點傚弽涔嬶紝鍦ㄥ亸縐婚噺涓婂姞16涔熷拰鍦ㄦ涓婂姞1絳変環銆傛煇浜涙椂鍊欙紝鎹璁や負孌電殑鈥滅矑搴︹濇槸16瀛楄妭銆?/p>
緇冧範棰?br />灝濊瘯涓涓嬪皢涓嬮潰鐨勫湴鍧杞寲涓?0bit鐨勫湴鍧錛?/p>
| 2EA8:D678 26CF:8D5F 453A:CFAD 2933:31A6 5924:DCCF 694E:175A 2B3C:D218 728F:6578 68E1:A7DC 57EC:AEEA |
紼嶉珮涓浜涚殑瑕佹眰鏄紝鍐欎竴涓▼搴忓皢孌典負AX銆佸亸縐婚噺涓築X鐨勫湴鍧杞崲涓?0bit鐨勫湴鍧錛屽茍淇濆瓨浜嶦AX涓?/p>
[涓婇潰涔犻鐨勭瓟妗?/span>]
鍦板潃杞崲
2EA8:D678 -> 鐗╃悊鐨?3C0F8
694E:175A -> 鐗╃悊鐨?6AC4A
26CF:8D5F -> 鐗╃悊鐨?2FA4F
2B3C:D218 -> 鐗╃悊鐨?385E8
453A:CFAD -> 鐗╃悊鐨?5235D
728F:6578 -> 鐗╃悊鐨?78E68
2933:31A6 -> 鐗╃悊鐨?2C4D6
68E1:A7DC -> 鐗╃悊鐨?735FC<
緙栫▼ 緇忓吀紼嬪簭錛欻ello, world 銆 閭d箞錛屾垜浠渶瑕佽В閲婂緢澶氫笢瑗褲?/p> 棣栧厛錛屼綔涓烘眹緙栬璦鐨勬娊璞★紝C璇█鎷ユ湁鈥滄寚閽堚濊繖涓暟鎹被鍨嬨傚湪姹囩紪璇█涓紝鍑犱箮鎵鏈夊鍐呭瓨鐨勬搷浣滈兘鏄敱瀵圭粰瀹氬湴鍧鐨勫唴瀛樿繘琛岃闂潵瀹屾垚鐨勩傝繖鏍鳳紝鍦ㄦ眹緙栬璦涓紝緇濆ぇ澶氭暟鎿嶄綔閮借鍜屾寚閽堜駭鐢熸垨澶氭垨灝戠殑鑱旂郴銆?/p> 榪欓噷鎴戞兂寮鴻皟鐨勬槸錛岀敱浜庤繖涓鐗規э紝姹囩紪璇█涓悓鏍蜂細鍑虹幇C紼嬪簭涓父瑙佺殑緙撳啿鍖烘孩鍑洪棶棰樸傚鏋滀綘姝e湪璁捐涓涓笌瀹夊叏鏈夊叧鐨勭郴緇燂紝閭d箞鏈濂芥槸浠旂粏媯鏌ヤ綘鐢ㄥ埌鐨勬瘡涓涓覆錛屼緥濡傦紝瀹冧滑鏄惁涓瀹氳兘澶熶互浣犻鏈熺殑鏂瑰紡緇撴潫錛屼互鍙婏紙濡傛灉浣跨敤鐨勮瘽錛変綘鐨勭紦鍐插尯鏄惁鑳戒繚璇佸疄闄呭彲鑳借緭鍏ョ殑鏁版嵁涓嶈鍐欏叆鍒板畠浠ュ鐨勫湴鏂廣備綔涓轟竴涓眹緙栬璦紼嬪簭鍛橈紝浣犳湁涔夊姟媯鏌ユ瘡涓琛屼唬鐮佺殑鍙敤鎬с?/p> 紼嬪簭涓殑equ浼寚浠ゆ槸瀹忔眹緙栫壒鏈夌殑錛屽畠鐨勬剰鎬濇帴榪戜簬C鎴朠ascal涓殑const錛堝父閲忥級銆傚鏁版儏鍐典笅錛宔qu浼寚浠ゅ茍涓嶄負絎﹀彿鍒嗛厤絀洪棿銆?/p> 姝ゅ錛屾眹緙栫▼搴忔墽琛屼竴欏規搷浣滄槸闈炲父綣佺悙鐨勶紝閫氬父錛屽湪瀵逛笌鏁堢巼瑕佹眰涓嶉珮鐨勫湴鏂癸紝鎴戜滑涔犳儻浣跨敤緋葷粺鎻愪緵鐨勪腑鏂湇鍔℃潵瀹屾垚浠誨姟銆備緥濡傛湰渚嬩腑鐨勪腑鏂?1h錛屽畠鏄疍OS鏃朵唬鐨勪腑鏂湇鍔★紝鍦╓indows涓紝瀹冧篃琚涓烘槸Windows API鐨勪竴閮ㄥ垎錛堣繖涓鐐瑰彲浠ュ湪Microsoft鐨勬枃妗d腑鏌ュ埌錛夈備腑鏂彲浠ヨ鐞嗚В涓洪珮綰ц璦涓殑瀛愮▼搴忥紝浣嗗張涓嶅畬鍏ㄤ竴鏍封斺斾腑鏂嬌鐢ㄧ郴緇熸爤鏉ヤ繚瀛樺綋鍓嶇殑鏈哄櫒鐘舵侊紝鍙互鐢辯‖浠跺彂璧鳳紝閫氳繃淇敼鏈哄櫒鐘舵佸瓧鏉ュ弽棣堜俊鎭紝絳夌瓑銆?/p> 閭d箞錛屾渶鍚庝竴孌甸氳繃DB瀛樻斁鐨勬暟鎹埌搴曚繚瀛樺湪鍝噷浜嗗憿錛熺瓟妗堟槸绱ф尐鐫浠g爜瀛樻斁銆傚湪姹囩紪璇█涓紝DB鍜屾櫘閫氱殑鎸囦護鐨勫湴浣嶆槸鐩稿悓鐨勩傚鏋滀綘鐨勬眹緙栫▼搴忓茍涓嶇煡閬撴柊鐨勫姪璁扮錛堜緥濡傦紝鏂扮殑澶勭悊鍣ㄤ笂鐨凜PUID鎸囦護錛夛紝鑰屼綘寰堟竻妤氾紝閭d箞鍙互鐢―B 鏈哄櫒鐮佺殑鏂瑰紡寮鴻鍐欎笅鎸囦護銆傝繖鎰忓懗鐫錛屼綘鍙互瓚呰秺姹囩紪鍣ㄧ殑鑳藉姏鎾板啓姹囩紪紼嬪簭錛岀劧鑰岋紝鐩存帴鐢ㄦ満鍣ㄧ爜緙栫▼鏄嚑涔庤偗瀹氭槸涓浠惰垂鍔涗笉璁ㄥソ鐨勪簨鈥斺旀眹緙栧櫒鍘傚晢浼氱粡甯告洿鏂板畠鎵鏀寔鐨勬寚浠ら泦浠ラ傚簲甯傚満闇瑕侊紝鑰屼笖錛屼綘鍙互鏈熷緟浣犵殑姹囩紪鍏惰兘澶熶駭鐢熸紜殑浠g爜錛屽洜涓烘満鍣ㄦ煡琛ㄦ槸涓嶄細鍑洪敊鐨勩傛棦鐒舵満鍣ㄨ兘澶熷府鎴戜滑鍋氬皢紼嬪簭杞崲涓轟唬鐮佽繖浠朵簨鎯咃紝閭d箞涓轟粈涔堜笉璁╁畠鏉ュ仛鍛紵 緇嗗績鐨勮鑰呬笉闅懼彂鐜幫紝鍦ㄧ▼搴忎腑鎴戜滑娌℃湁瀵笵S榪涜璧嬪箋傞偅涔堬紝榪欐槸鍚︽剰鍛崇潃紼嬪簭鐨勭粨鏋滃皢鏄笉鍙嫻嬬殑鍛紵絳旀鏄惁瀹氱殑銆侱OS錛堟垨Windows涓殑MS-DOS VM錛夊湪鍔犺澆.com鏂囦歡鐨勬椂鍊欙紝浼氬瀵勫瓨鍣ㄨ繘琛屽緢澶氬垵濮嬪寲銆?com鏂囦歡琚檺鍒朵負灝忎簬64KB錛岃繖鏍鳳紝瀹冪殑浠g爜孌點佹暟鎹閮借瑁呭叆鍚屾牱鐨勬暟鍊鹼紙鍗籌紝鍒濆鐘舵佷笅DS=CS錛夈?/p> 涔熻浼氭湁浜鴻錛屸滃樋錛岃繖鍚搗鏉ヤ笉澶ソ錛屼竴涓?4KB鐨勭▼搴忚兘鍋氬緱浜嗕粈涔堝憿錛熻繕鏈夛紝浣犲惞寰楀ぉ鑺變貢鍧犵殑鍫嗘爤孌靛湪浠涔堝湴鏂癸紵鈥濋偅涔堬紝鎴戜滑鏉ョ湅鐪嬩笅闈㈣繖涓柊鐨凥ello world紼嬪簭錛屽畠鏄竴涓狤XE鏂囦歡錛屽湪DOS瀹炴ā寮忎笅榪愯銆?/p> ; 閲囩敤鈥淪MALL鈥濆唴瀛樻ā鍨?br />; 鍫嗘爤孌?/font> ; 鍥炶濺 ; 瀹氫箟鏁版嵁孌?/font> ; 瀹氫箟鏄劇ず涓?/font> ; 瀹氫箟浠g爜孌?/font> ; 璁劇疆DX 561瀛楄妭錛熷疄鐜扮浉鍚屽姛鑳界殑紼嬪簭澶т簡榪欎箞澶氾紒涓轟粈涔堝憿錛熸垜浠湅鍒幫紝紼嬪簭鎷ユ湁浜嗗畬鏁寸殑鍫嗘爤孌點佹暟鎹銆佷唬鐮佹錛屽叾涓爢鏍堟瓚寵凍鍗犳帀浜?12瀛楄妭錛屽叾浣欑殑鍩烘湰涓婃病浠涔堝彉鍖栥?/p> 鍒嗘垚澶氫釜孌墊湁浠涔堝ソ澶勫憿錛熼鍏堬紝瀹冭紼嬪簭鏄懼緱鏇村姞娓呮櫚鈥斺斾綘鑲畾鏇存効鎰忕湅涓涓粨鏋勬竻妤氱殑紼嬪簭錛屼唬鐮佷腑hard-coded鐨勫瓧絎︿覆銆佹暟鎹浜鴻寰楄垂瑙c傛瘮濡傦紝mov dx, 0152h鑲畾涓嶅mov dx, offset Message鏉ョ殑浜插垏銆傛澶栵紝閫氳繃鍒嗘浣犲彲浠ヤ嬌鐢ㄦ洿澶氱殑鍐呭瓨錛屾瘮濡傦紝浠g爜孌佃吘鍑虹殑絀洪棿鍙互鍋氭洿澶氱殑浜嬫儏銆俥xe鏂囦歡鍙︿竴涓惛寮曚漢鐨勫湴鏂規槸瀹冭兘澶熷疄鐜扳滈噸瀹氫綅鈥濄傜幇鍦ㄤ綘涓嶉渶瑕佹寚瀹氱▼搴忓叆鍙g偣鐨勫湴鍧浜嗭紝鍥犱負緋葷粺浼氭壘鍒頒綘鐨勭▼搴忓叆鍙g偣錛岃屼笉鏄鏉跨殑100h銆?/p> 紼嬪簭涓殑絎﹀彿涔熶細鍦ㄧ郴緇熷姞杞界殑鏃跺欓噸鏂拌祴浜堟柊鐨勫湴鍧銆俥xe紼嬪簭鑳藉淇濊瘉浣犵殑璁捐瀹規槗鍦拌瀹炵幇錛屼笉闇瑕佽冭檻澶鐨勭粏鑺傘?/p> 褰撶劧錛屾垜浠殑涓昏鐩殑鏄皢姹囩紪璇█浣滀負楂樼駭璇█鐨勪竴涓湁鐢ㄧ殑琛ュ厖銆傚鎴戝湪寮濮嬫彁鍒扮殑閭f牱錛岀湡姝e畬鍏ㄧ敤姹囩紪璇█瀹炵幇鐨勭▼搴忎笉涓瀹氬氨濂斤紝鍥犱負瀹冧笉渚夸簬緇存姢錛岃屼笖錛岀敱浜庣粨鏋勭殑鍘熷洜錛屼綘涔熶笉澶鏄撶‘淇濆畠鏄紜殑錛涙眹緙栬璦鏄竴縐嶉潪緇撴瀯鍖栫殑璇█錛岃皟璇曚竴涓簿蹇冭璁$殑姹囩紪璇█紼嬪簭錛屽嵆浣垮浜庝竴涓佹墜鏉ヨ涔熶笉鍟繪槸涓鍦烘伓姊︼紝鍥犱負浣犲緢鍙兘鎺夊埌鍒漢棰勮鐨勨滈櫡闃扁濅腑鈥斺旇繖浜涙妧宸х‘瀹炴彁楂樹簡浠g爜鎬ц兘錛岀劧鑰屼綘寰堝彲鑳戒笉鐞嗚В瀹冿紝浜庢槸浣犳妸瀹冩敼鎺夛紝鎺ョ潃灝卞彂鐜扮▼搴忓交搴曡觸鎺変簡銆備嬌鐢ㄦ眹緙栬璦鍔犲己楂樼駭璇█紼嬪簭鏃訛紝浣犺鍋氱殑閫氬父鍙槸浣跨敤姹囩紪鎸囦護錛岃屼笉蹇呮惌寤哄畬鏁寸殑姹囩紪紼嬪簭銆傜粷澶у鏁幫紙涔熸槸鐩墠鎴戦亣鍒扮殑鍏ㄩ儴錛塁/C++緙栬瘧鍣ㄩ兘鏀寔鍐呭祵姹囩紪錛屽嵆鍦ㄧ▼搴忎腑浣跨敤姹囩紪璇█錛岃屼笉蹇呮挵鍐欏崟鐙殑姹囩紪璇█紼嬪簭鈥斺旇繖鍙互鑺傜渷浣犵殑涓嶅皯綺懼姏錛屽洜涓哄墠闈㈣榪扮殑閭d簺浼寚浠わ紝濡俥qu絳夛紝閮藉彲浠ョ敤浣犵啛鎮夌殑楂樼駭璇█鏂瑰紡鏉ョ紪鍐欙紝緙栬瘧鍣ㄤ細鎶婂畠杞崲涓洪傚綋鐨勫艦寮忋?/p> 闇瑕佽鏄庣殑鏄紝鍦ㄩ珮綰ц璦涓竴瀹氳娉ㄦ剰緙栬瘧緇撴灉銆傜紪璇戝櫒浼氬浣犵殑姹囩紪紼嬪簭鍋氫竴浜涗慨鏀癸紝榪欎笉涓瀹氱鍚堜綘鐨勮姹傦紙闄勫甫璇翠竴鍙ワ紝鏈夋椂緙栬瘧鍣ㄤ細寰堣仾鏄庡湴璋冩暣鎸囦護欏哄簭鏉ユ彁楂樻ц兘錛岃繖縐嶆儏鍐典笅鏈濂芥祴璇曚竴涓嬪摢縐嶅啓娉曠殑鏁堟灉鏇村ソ錛夛紝姝ゆ椂闇瑕佸仛涓浜涙洿娣卞叆鐨勪慨鏀癸紝鎴栬呯敤db鏉ュ己鍒剁紪鐮併?/p> 瀹炴ā寮忕殑涓滆タ璇村緱澶浜嗭紝灝界鎴戝凡緇忓垹鎺変簡璁稿涓滆タ錛屽茍鎶婁竴浜涘師鍒欐х殑闂鎷垮埌浜嗚繖涓鑺傝璁恒傝繖鏍峰仛涓嶆槸娌℃湁鐞嗙敱鐨勨斺斾繚鎶ゆā寮忔墠鏄幇鍦ㄧ殑紼嬪簭錛堥櫎浜嗘搷浣滅郴緇熺殑搴曞眰鍚姩浠g爜錛夋渶甯哥敤鐨凜PU妯″紡銆備繚鎶ゆā寮忔彁渚涗簡寰堝浠や漢鑰崇洰涓鏂扮殑鍔熻兘錛屽寘鎷唴瀛樹繚鎶わ紙榪欐槸淇濇姢妯″紡榪欎釜鍚嶅瓧鐨勬潵婧愶級銆佽繘紼嬫敮鎸併佹洿澶х殑鍐呭瓨鏀寔錛岀瓑絳夈?/p> 瀵逛簬涓涓紪紼嬩漢鍛樻潵璇達紝鑳解滃伔鎳掆濇槸涓浠朵護浜烘剦蹇殑浜嬫儏銆傝繖閲屸滃伔鎳掆濇槸璇存妸鈥滃簲璇モ濈敱緋葷粺鍋氱殑浜嬫儏鍋氱殑浜嬫儏鍏ㄩ兘浜ょ粰緋葷粺銆備負浠涔堝憿錛熻繖鍑鴻嚜涓涓熀鏈濇兂鈥斺斾漢鎬繪湁鐘敊璇殑鏃跺欙紝鐒惰岃鍒欎笉浼氾紝姝g‘鍦頒簡瑙h鍒欎箣鍚庯紝浣犲彲浠ユ湡寰呭畠鍍忎綘鎵浜嗚В鐨勯偅鏍鋒墽琛屻傚浜嶤紼嬪簭鏉ヨ錛屼綘鑷繁鐢–璇█鍐欑殑瀹炵幇鐩稿悓鍔熻兘鐨勫嚱鏁伴氬父娌℃湁緋葷粺鎻愪緵鐨勫嚱鏁版ц兘濂斤紙闄ら潪浣犵敤浜嗘瘮鍑芥暟搴撳ソ寰堝鐨勭畻娉曪級錛屽洜涓虹郴緇熺殑鍑芥暟寰寰浣跨敤浜嗘洿濂界殑浼樺寲錛岀敋鑷沖彲鑳戒笉鏄敤C璇█鐩存帴緙栧啓鐨勩?/p> 褰撶劧錛屸滃伔鎳掆濈殑鎰忔濇槸璇達紝鎶婇偅浜涘簲璇ヨ鏈哄櫒鍋氱殑浜嬫儏浜ょ粰璁$畻鏈烘潵鍋氾紝鍥犱負瀹冨仛寰楁洿濂姐傛垜浠簲璇ユ妸綺懼姏闆嗕腑鍒拌璁$畻娉曪紝鑰屼笉鏄紪鍐欐簮浠g爜鏈韓涓婏紝鍥犱負緙栬瘧鍣ㄥ嚑涔庡彧鑳藉仛絳変環浼樺寲錛岃屽疄鐜扮浉鍚屽姛鑳斤紝浣嗕嬌鐢ㄦ洿濂界畻娉曠殑紼嬪簭瀹炵幇錛屽垯鍑犱箮鍙兘鐢變漢鑷繁瀹屾垚銆?/p> 涓句釜渚嬪瓙錛岃繖鏍蜂竴涓嚱鏁幫細 鍦ㄦ煇縐嶇紪璇戞ā寮廩DEBUG]涓嬭緙栬瘧涓?/p> ; 璧扮潃 ; 鎭㈠鐜板満 銆 ; 榪斿洖 鑰屽湪鍙︿竴縐嶆ā寮廩RELEASE/MINSIZE]涓嬪嵈琚紪璇戜負 ; a=0; 濡傛灉璁╂垜鏉ュ啓錛屽鍗婁細鍐欐垚 ; return 499500 涓轟粈涔堣繖鏍峰啓鍛紵鎴戜滑鐪嬪埌錛宨鏄竴涓鐣屼笉鑳藉獎鍝嶃佷篃鏃犳硶鑾風煡鐨勫唴閮ㄧ姸鎬侀噺銆備綔涓鴻繖孌電▼搴忔潵璇達紝瀵瑰畠鐨勮綆楀浜庣粨鏋滃茍娌℃湁鐩存帴鐨勫獎鍝嶁斺斿畠鐨勫瓨鍦ㄤ笉榪囨槸鏂逛究綆楁硶鎻忚堪鑰屽凡銆傚茍涓旀垜浠湅鍒扮殑錛岃繖孌電▼搴忓疄闄呬笂鏃犺鎵ц澶氬皯嬈★紝鍏剁粨鏋滈兘涓嶄細鍙戠敓鍙樺寲錛屽洜姝わ紝鐩存帴榪斿洖璁$畻緇撴灉灝卞彲浠ヤ簡錛岃綆楁槸澶氫綑鐨勶紙濡傛灉璇翠竴瀹氳綆楋紝閭d箞搴旇鏄紪璇戝櫒鍦ㄧ紪璇戣繃紼嬩腑瀹屾垚瀹冿級銆?/p> 鏇磋繘涓姝ワ紝鎴戜滑鐢氳嚦甯屾湜緙栬瘧鍣ㄨ兘澶熺洿鎺ユ妸榪欎釜鍑芥暟鍙樻垚涓涓鍙峰父閲忥紝榪欐牱榪炴搷浣滃爢鏍堢殑榪囩▼涔熺渷鎺変簡銆?/p> 絎笁縐嶇粨鏋滃睘浜庘滅瓑鏁堚濅唬鐮侊紝鑰屼笉鏄滅瓑浠封濅唬鐮併備綔涓虹敤鎴鳳紝寰堝鏃跺欐槸甯屾湜緙栬瘧鍣ㄨ繖鏍峰仛鐨勶紝鐒惰岀敱浜庣洰鍓嶇殑鎶鏈皻涓嶆垚鐔燂紝鏈夋椂榪欑鍋氭硶浼氶犳垚涓浜涢棶棰橈紙gcc鍜実++鐨勯《綰т紭鍖栧彲浠ラ犳垚緙栬瘧鍑虹殑FreeBSD鍐呮牳琛屼負寮傚父錛岃繖鏄垜鍦‵reeBSD涓婇亣鍒扮殑鍞竴涓嬈¤蔣浠跺師鍥犵殑kernel panic錛夛紝鍥犳錛屽茍涓嶆槸鎵鏈夌殑緙栬瘧鍣ㄩ兘榪欐牱鍋氾紙鍙︿竴鏂歸潰鐨勫師鍥犳槸錛屽鏋滅紪璇戝櫒鍦ㄨ繖鏂歸潰鍋氱殑澶繃鐏紝渚嬪鑷姩姹傝В鍏ㄩ儴鈥滃浐瀹氣濋棶棰橈紝閭d箞濡傛灉浣犵殑紼嬪簭鏄В鍐沖浐瀹氱殑闂鈥滃緢澶р濓紝濡傛眰瑙h糠瀹紝閭d箞鍦ㄧ紪璇戣繃紼嬩腑浣犲氨浼氭壘閿ゅ瓙鏉ョ牳璁$畻鏈轟簡錛夈傜劧鑰岋紝浣滀負緙栬瘧鍣ㄥ埗閫犲晢錛屼負浜嗘彁楂樿嚜宸辯殑浜у搧鐨勭珵浜夊姏錛屽線寰浼氫嬌鐢ㄧ涓夌浠g爜鏉ュ仛鍑芥暟搴撱傛濡傚墠闈㈡墍鎻愬埌鐨勯偅鏍鳳紝榪欑浼樺寲寰寰涓嶆槸緙栬瘧鍣ㄦ湰韜殑浣滅敤錛屽敖綆$幇浠g紪璇戠▼搴忔嫢鏈夌紪璇戞墽琛屻佸驚鐜唬鐮佸鎻愩佹棤鐢ㄤ唬鐮佸幓闄ょ瓑璇稿浼樺寲鍔熻兘錛屼絾瀹冮兘涓嶈兘淇濊瘉紼嬪簭鏈浼樸傛渶鍚庝竴縐嶄唬鐮佹亹鎬曞緢灝戞湁緙栬瘧鍣ㄨ兘澶熷仛鍒幫紝涓嶄俊浣犲彲浠ョ敤鑷繁甯哥敤鐨勭紪璇戝櫒鍔犱笂鍚勭浼樺寲閫夐」璇曡瘯:) 鍙戠幇浠涔堜簡鍚楋紵涓夌浠g爜涓紝瀵逛簬鍐呭瓨鐨勮闂竴涓瘮涓涓皯銆傝繖鏍峰仛鐨勭悊鐢辨槸錛屽敖鍙兘鍦板埄鐢ㄥ瘎瀛樺櫒騫跺噺灝戝鍐呭瓨鐨勮闂紝鍙互鎻愰珮浠g爜鎬ц兘銆傚湪鏌愪簺鎯呭喌涓嬶紝浣夸唬鐮佹棦灝忓張蹇槸鍙兘鐨勩?/p> 涔﹀綊姝d紶錛屾垜浠潵璇磋淇濇姢妯″紡鐨勫唴瀛樻ā鍨嬨備繚鎶ゆā寮忕殑鍐呭瓨鍜屽疄妯″紡鏈夊緢澶氬叡鍚屼箣澶勩?/p> 姣棤鐤戦棶錛屼互'protected mode'(淇濇姢妯″紡), 'global descriptor table'(鍏ㄥ眬鎻忚堪絎﹁〃), 'local descriptor table'(鏈湴鎻忚堪絎﹁〃)鍜?selector'(閫夋嫨鍣?鎼滅儲錛屼綘浼氬緱鍒板畬鏁翠粙緇嶅畠浠殑澶ч噺淇℃伅銆?/p> 淇濇姢妯″紡涓庡疄妯″紡鐨勫唴瀛樼被浼鹼紝鐒惰岋紝瀹冧滑涔嬮棿鏈澶х殑鍖哄埆灝辨槸淇濇姢妯″紡鐨勫唴瀛樻槸鈥滅嚎鎬р濈殑銆?/p> 鏂扮殑璁$畻鏈轟笂錛?2-bit鐨勫瘎瀛樺櫒宸茬粡涓嶆槸浠涔堟柊椴滀簨錛堝鏋滀綘鍝ぉ鍚浣犵殑CPU鐨勫瘎瀛樺櫒涓嶆槸32-bit鐨勶紝閭d箞瀹冣斺旂畝鐩村彲浠ヨ偗瀹氬湴璇粹斺旂殑瀛楅暱瑕佹瘮32-bit榪樿澶氥傛柊鐨勪釜浜烘満涓婂凡緇忓紑濮嬮愭閲囩敤64-bit鐨凜PU浜嗭級錛屾崲璦涔嬶紝瀹為檯涓婃/鍋忕Щ閲忚繖涓鏍煎眬宸茬粡涓嶅啀闇瑕佷簡銆傚敖綆″姝わ紝鍦ㄧ戶緇湅淇濇姢妯″紡鍐呭瓨緇撴瀯鏃訛紝浠嶈璁頒綇孌?鍋忕Щ閲忕殑姒傚康銆備笉濡ㄦ妸孌靛瘎瀛樺櫒鐪嬩綔瀵逛簬淇濇姢妯″紡涓殑閫夋嫨鍣ㄧ殑涓涓ā鎷熴傞夋嫨鍣ㄦ槸鍏ㄥ眬鎻忚堪絎﹁〃(Global Descriptor Table, GDT)鎴栨湰鍦版弿榪扮琛?Local Descriptor Table, LDT)鐨勪竴涓寚閽堛?/p> 濡傚浘鎵紺猴紝GDT鍜孡DT鐨勬瘡涓涓」鐩兘鎻忚堪涓鍧楀唴瀛樸備緥濡傦紝涓涓」鐩腑鍖呭惈浜嗘煇鍧楄鎻忚堪鐨勫唴瀛樼殑鐗╃悊鐨勫熀鍦板潃銆侀暱搴︼紝浠ュ強鍏朵粬涓浜涚浉鍏充俊鎭?/p> 淇濇姢妯″紡鏄竴涓潪甯擱噸瑕佺殑姒傚康錛屽悓鏃朵篃鏄洰鍓嶆挵鍐欏簲鐢ㄧ▼搴忔椂錛屾渶甯哥敤鐨凜PU妯″紡錛堣繍琛屽湪鏂扮殑璁$畻鏈轟笂鐨勬搷浣滅郴緇熷緢灝戞湁鍦ㄥ疄妯″紡涓嬭繍琛岀殑錛夈?/p> 涓轟粈涔堝彨淇濇姢妯″紡鍛紵瀹冣滀繚鎶も濅簡浠涔堬紵絳旀鏄繘紼嬬殑鍐呭瓨銆備繚鎶ゆā寮忕殑涓昏鐩殑鍦ㄤ簬鍏佽澶氫釜榪涚▼鍚屾椂榪愯錛屽茍淇濇姢瀹冧滑鐨勫唴瀛樹笉鍙楀叾浠栬繘紼嬬殑渚電姱銆傝繖鏈夌偣綾諱技浜嶤++涓殑鏈哄埗錛岀劧鑰屽畠鐨勫己鍒跺姏瑕佸ぇ寰楀銆傚鏋滀綘鐨勮繘紼嬪湪淇濇姢妯″紡涓嬩互涓嶆伆褰撶殑鏂瑰紡璁塊棶浜嗗唴瀛橈紙渚嬪錛屽啓浜嗏滃彧璇燴濆唴瀛橈紝鎴栬浜嗕笉鍙鐨勫唴瀛橈紝絳夌瓑錛夛紝閭d箞CPU灝變細浜х敓涓涓紓甯搞傝繖涓紓甯稿皢浜ょ粰鎿嶄綔緋葷粺澶勭悊錛岃岃繖縐嶅鐞嗭紝鍋囧浣犵殑紼嬪簭娌℃湁鐗瑰埆璇存槑鎿嶄綔緋葷粺璇ュ浣曞鐞嗙殑璇濓紝涓鑸氨鏄潃鎺夊仛閿欎簡浜嬫儏鐨勮繘紼嬨?/p> 鎴戝儚榪欐牱鐨勫璇濇澶у涓瀹氶潪甯哥啛鎮夛紙涓存椂鍐欎簡涓涓▼搴忔晠鎰忛犳垚鐨勯敊璇級錛?/p> 濂界殑錛屽彧鏄竴涓▼搴忓穿婧冧簡錛岃屾搷浣滅郴緇熺殑鍏朵粬榪涚▼鐓у父榪愯錛堝悓鏍風殑紼嬪簭鍦―OS涓嚑涔庢槸鏉夸笂閽夐拤鐨勬鏈猴紝鍥犱負NULL鎸囬拡鐨勪綅緗伆濂芥槸涓柇鍚戦噺琛級錛屼綘鐢氳嚦榪樺彲浠ヨ皟璇曞畠銆?/p> 淇濇姢妯″紡榪樻湁鍏朵粬寰堝濂藉錛屽湪姝ゅ氨涓嶄竴涓璧樿堪浜嗐傚疄妯″紡鍜屼繚鎶ゆā寮忎箣闂寸殑鍒囨崲闂鎴戞墦綆楁斁鍦ㄥ悗闈㈢殑鈥滈珮綰ф妧宸р濅竴绔犳潵璁詫紝鍥犱負澶氭暟紼嬪簭騫朵笉娑夊強榪欎釜銆?/p> 浜嗚В浜嗗唴瀛樼殑鏍煎眬錛屾垜浠氨鍙互榪涘叆涓嬩竴鑺傗斺旀搷浣滃唴瀛樹簡銆?/p> 鍓嶄袱鑺備腑錛屾垜浠粙緇嶄簡瀹炴ā寮忓拰淇濇姢妯″紡涓嬌鐢ㄧ殑涓嶅悓鐨勫唴瀛樻牸灞銆傜幇鍦ㄥ紑濮嬭В閲婂浣曚嬌鐢ㄨ繖浜涚煡璇嗐?/p> 鍥炲繂涓涓嬪墠闈㈡垜浠榪囩殑錛屽瘎瀛樺櫒鍙互鐢ㄤ綔鍐呭瓨鎸囬拡銆傜幇鍦紝鏄粬浠彂鎸ヤ綔鐢ㄧ殑鏃跺欎簡銆?/p> 鍙互灝嗗唴瀛樻兂璞′負涓涓『搴忕殑瀛楄妭嫻併備嬌鐢ㄦ寚閽堬紝鍙互浠繪剰鍦版搷浣滐紙璇誨啓錛夊唴瀛樸?/p> 鐜板湪鎴戜滑闇瑕佷竴浜涘叾浠栫殑鎸囦護鏍煎紡鏉ユ弿榪板浜庡唴瀛樼殑鎿嶄綔銆傛搷浣滃唴瀛樻椂錛岄鍏堥渶瑕佺殑灝辨槸瀹冪殑鍦板潃銆?/p> 璁╂垜浠潵鐪嬬湅涓嬮潰鐨勪唬鐮侊細 鏂規嫭鍙瘋〃紺猴紝閲岄潰鐨勮〃杈懼紡鎸囧畾鐨勪笉鏄珛鍗蟲暟錛岃屾槸鍋忕Щ閲忋傚湪瀹炴ā寮忎腑錛孌S:0涓殑閭d釜瀛楋紙16-bit闀匡級灝嗚瑁呭叆AX銆?/p> 鐒惰?鏄竴涓父鏁幫紝濡傛灉闇瑕佸湪榪愯鐨勬椂鍊欏姞浠ユ敼鍙橈紝灝遍渶瑕佷竴浜涚壒孌婄殑鎶宸э紝姣斿紼嬪簭鑷慨鏀廣傛眹緙栨敮鎸佽繖涓壒鎬э紝鐒惰屾垜涓漢騫朵笉鎺ㄨ崘榪欑鏂規硶鈥斺旇嚜淇敼澶уぇ闄嶄綆紼嬪簭鐨勫彲璇繪э紝騫朵笖榪橀檷浣庣ǔ瀹氭э紝鎬ц兘榪樹笉涓瀹氬ソ銆傛垜浠渶瑕佸彟澶栫殑鎶鏈?/p> 鐪嬭搗鏉ヨ垝鏈嶄簡涓浜涳紝涓嶆槸鍚楋紵BX瀵勫瓨鍣ㄧ殑鍐呭鍙互闅忔椂鏇存敼錛岃屼笉闇瑕佺敤鍐楅暱鐨勪唬鐮佸幓淇敼鑷韓錛屾洿涓嶇敤鎷呭績鐢辨甯︽潵鐨勪笉紼沖畾闂銆?/p> 鍚屾牱鐨勶紝mov鎸囦護涔熷彲浠ユ妸鏁版嵁淇濆瓨鍒板唴瀛樹腑錛?/p> 鍦ㄥ瓨鍌ㄥ櫒涓庡瘎瀛樺櫒涔嬮棿浜ゆ崲鏁版嵁搴旇瓚沖娓呮浜嗐?/p> 鏈変簺鏃跺欐垜浠細闇瑕佹搷浣滅鏉ユ弿榪板唴瀛樻暟鎹殑瀹藉害錛?/p> 渚嬪錛屽湪DS:100h澶勪繚瀛?234h錛屼互瀛楀瓨鏀撅細 浜庢槸鎴戜滑灝唌ov鎸囦護鎵╁睍涓猴細 闇瑕佽鏄庣殑鏄紝鍔犲噺鍚屾牱涔熷彲浠ュ湪[]涓嬌鐢紝渚嬪錛?/p> 絳夌瓑銆傛垜浠湅鍒幫紝瀵逛簬鍐呭瓨鐨勬搷浣滐紝鍗充嬌浣跨敤MOV鎸囦護錛屼篃鏈夎澶氱鍙兘鐨勬柟寮忋備笅涓鑺備腑錛屾垜浠皢浠嬬粛濡備綍鎿嶄綔涓層?/p> 鎰熻阿 緗戝弸 姘存潐 鎸囧嚭姝ょ瓟妗堜腑鐨勪竴澶勯敊璇?br />鎰熻阿 Heallven 鎸囧嚭.COM紼嬪簭瀹炰緥緙栬瘧澶辮觸鐨勯棶棰?/p>
shl eax,4
add eax,bx
娉ㄦ剰 緙栫▼闂絳旀騫朵笉鍞竴錛屼絾緇欏嚭鐨勮繖浠藉弬鑰冪瓟妗堝簲璇ュ凡緇忔槸鈥滀紭鍖栧埌澶粹濅簡銆?/font>
鎴戜滑鐜板湪鍙互鍐欎竴涓湡姝g殑紼嬪簭浜嗐?/p>;;; 搴旇寰楀埌涓涓?9瀛楄妭鐨?com鏂囦歡
.MODEL TINY
.CODE
CR equ 13
LF equ 10
TERMINATOR equ '$'
ORG 100h
Main PROC
mov dx,offset sMessage
mov ah,9
int 21h
mov ax,4c00h
int 21h
Main ENDP
sMessage:
聽 DB 'Hello, World!'
聽 DB CR,LF,TERMINATOR
END Main
; .COM鏂囦歡鐨勫唴瀛樻ā鍨嬫槸鈥楾INY鈥?br />; 浠g爜孌靛紑濮?br />
; 鍥炶濺
; 鎹㈣
; DOS瀛楃涓茬粨鏉熺
; 浠g爜璧峰鍦板潃涓篊S:0100h
; 浠S:DX鎸囧悜Message
; int 21h(DOS涓柇)鍔熻兘9 -
; 鏄劇ず瀛楃涓插埌鏍囧噯杈撳嚭璁懼
; int 21h鍔熻兘4ch -
; 緇堟紼嬪簭騫惰繑鍥濧L鐨勯敊璇唬鐮?br />銆
; 紼嬪簭緇撴潫鐨勫悓鏃舵寚瀹氬叆鍙g偣涓篗ain;;; 搴旇寰楀埌涓涓?61 瀛楄妭鐨凟XE鏂囦歡
.MODEL SMALL
.STACK 200h
CR equ 13
LF equ 10
TERMINATOR equ '$'
.DATA
Message DB 'Hello, World !'
聽 DB CR,LF,TERMINATOR
.CODE
Main PROC
mov ax, DGROUP
mov ds, ax
mov dx, offset Message
mov ah, 9
int 21h
mov ax, 4c00h
int 21h
Main ENDP
END main銆
; 鎹㈣
; DOS瀛楃涓茬粨鏉熺
; 灝嗘暟鎹
; 鍔犺澆鍒癉S瀵勫瓨鍣?/font>
; 鏄劇ず
; 緇堟紼嬪簭3.2 淇濇姢妯″紡
int fun(){
聽 int a=0;
聽 register int i;
聽 for(i=0; i<1000; i++) a+=i;
聽 return a;
}push ebp
mov ebp,esp
sub esp,48h
push ebx
push esi
push edi
lea edi,[ebp-48h]
mov ecx,12h
mov eax,0CCCCCCCCh
rep stos dword ptr [edi]
mov dword ptr [ebp-4],0
mov dword ptr [ebp-8],0
jmp fun+31h
mov eax,dword ptr [ebp-8]
add eax,1
mov dword ptr [ebp-8],eax
cmp dword ptr [ebp-8],3E8h
jge fun+45h
mov ecx,dword ptr [ebp-4]
add ecx,dword ptr [ebp-8]
mov dword ptr [ebp-4],ecx
jmp fun+28h
mov eax,dword ptr [ebp-4]
pop edi
pop esi
pop ebx
mov esp,ebp
pop ebp
ret; 瀛愮▼搴忓叆鍙?/font>
; 淇濇姢鐜板満
; 鍒濆鍖栧彉閲?璋冭瘯鐗堟湰鐗規湁銆?br />; 鏈川鏄湪鍫嗕腑鎸栦竴鍧楀湴鍎匡紝瀛楥CCCCCCC銆?br />; 鐢ㄤ覆鎿嶄綔榪涜錛岃繖灝嗗彂鎸ntel澶勭悊鍣ㄤ紭鍔?br />; 鈥榓=0鈥?br />; 鈥榠=0鈥?/font>
; i++
; i<1000?
; a+=i;
; return a;xor eax,eax
xor ecx,ecx
add eax,ecx
inc ecx
cmp ecx,3E8h
jl fun+4
ret
; i=0;
; a+=i;
; i++;
; i<1000?
; 鏄?>緇х畫緇х畫
; return amov eax, 079f2ch
ret

3.3 鎿嶄綔鍐呭瓨
mov ax,[0] mov bx,0
mov ax,[bx]mov [0],ax 鎿嶄綔絎?/font> 鎰忎箟 byte ptr 涓涓瓧鑺?8-bit, 1 byte) word ptr 涓涓瓧(16-bit) dword ptr 涓涓弻瀛?32-bit) mov word ptr [100h],01234h mov reg(8,16,32), mem(8,16,32)
mov mem(8,16,32), reg(8,16,32)
mov mem(8,16,32), imm(8,16,32)mov ax,[bx+10]
mov ax,[bx+si]
mov ax,es:[di+bp]
鍦ㄥ墠涓鑺備腑鐨剎86鍩烘湰瀵勫瓨鍣ㄧ殑浠嬬粛錛屽浜庝竴涓眹緙栬璦緙栫▼浜哄憳鏉ヨ鏄笉鍙垨緙虹殑銆傜幇鍦ㄤ綘鐭ラ亾錛屽瘎瀛樺櫒鏄鐞嗗櫒鍐呴儴鐨勪竴浜涗繚瀛樻暟鎹殑瀛樺偍鍗曞厓銆備粎浠呬簡瑙h繖浜涙槸涓嶈凍浠ュ啓鍑轟竴涓彲鐢ㄧ殑姹囩紪璇█紼嬪簭鐨勶紝浣嗕綘宸茬粡鍙互澶ц嚧璇繪噦涓鑸眹緙栬璦紼嬪簭浜嗭紙涓嶅繀鎯婅錛屽洜涓烘眹緙栬璦鐨勭璁扮鍜岃嫳鏂囧崟璇嶉潪甯告帴榪戯級錛屽洜涓轟綘宸茬粡浜嗚В浜嗗叧浜庡熀鏈瘎瀛樺櫒鐨勭粷澶у鏁扮煡璇嗐?/p>
鍦ㄦ寮忓紩鍏ョ涓涓眹緙栬璦紼嬪簭涔嬪墠錛屾垜綺楃暐鍦頒粙緇嶄竴涓嬫眹緙栬璦涓笉鍚岃繘鍒舵暣鏁扮殑琛ㄧず鏂規硶銆傚鏋滀綘涓嶄簡瑙e崄榪涘埗浠ュ鐨勫叾浠栬繘鍒訛紝璇鋒妸榧犳爣縐誨姩鍒?span class="tip" id="oRadixes" title="">榪欓噷銆?/font>
鏁板瓧璁$畻鏈哄唴閮ㄥ彧鏀寔浜岃繘鍒舵暟錛屽洜涓鴻繖鏍瘋綆楁満鍙渶瑕佽〃紺轟袱縐?鏌愪簺鎯呭喌鏄?縐嶏紝榪欎竴鍐呭瓚呰繃浜嗚繖浠芥暀紼嬬殑鑼冨洿錛屽鏋滄偍鎰熷叴瓚o紝鍙互鍙傝冩暟瀛楅昏緫鐢佃礬鐨勭浉鍏充功綾?鐘舵?聽 瀵逛簬鐢佃礬鑰岃█錛岃繖琛ㄧ幇涓洪珮銆佷綆鐢靛鉤錛屾垨鑰呭紑銆佸叧錛屽垎鍒潪甯告槑鏄撅紝鍥犺屽伐浣滄瘮杈冪ǔ瀹氾紱鍙︿竴鏂歸潰錛岀敱浜庡彧鏈変袱縐嶇姸鎬侊紝璁捐璧鋒潵涔熸瘮杈冪畝鍗曘傝繖鏍鳳紝浣跨敤浜岃繘鍒舵剰鍛崇潃浣庢垚鏈佺ǔ瀹氾紝澶氭暟鎯呭喌涓嬶紝榪欎篃鎰忓懗鐫蹇熴?
涓庡崄榪涘埗綾諱技錛屾垜浠彲浠ョ敤涓嬮潰鐨勫紡瀛愭潵鎹㈢畻鍑轟竴涓換鎰忓艦濡俛m-1鈥︹3a2a1a0 鐨刴浣峳榪涘埗鏁板搴旂殑鏁板糿錛?br />
紼嬪簭璁捐涓父鐢ㄥ崄鍏繘鍒跺拰鍏繘鍒舵暟瀛椾唬鏇夸簩榪涘埗鏁幫紝鍏跺師鍥犲湪浜庯紝16鍜?鏄?鐨勬暣嬈℃柟騫傦紝榪欐牱錛屼竴浣嶅崄鍏垨鍏繘鍒舵暟鍙互琛ㄧず鏁存暟涓簩榪涘埗浣嶃傚崄鍏繘鍒朵腑錛?浣跨敤瀛楁瘝A銆丅銆丆銆丏銆丒銆丗琛ㄧず10-15錛岃屽崄鍏繘鍒舵垨鍏繘鍒舵暟鍒惰〃紺虹殑鐨勬暟瀛楁瘮浜岃繘鍒舵暟鏇寸煭涓浜涖?br />
銆銆姹囩紪璇█涓殑鏁存暟甯擱噺琛ㄧず
|
闇瑕佽鏄庣殑鏄紝榪欎簺鏂規硶鏄拡瀵瑰畯姹囩紪鍣紙渚嬪錛孧ASM銆乀ASM銆丯ASM錛夎鐨勶紝璋冭瘯鍣ㄩ粯璁や嬌鐢ㄥ崄鍏繘鍒惰〃紺烘暣鏁幫紝騫朵笖涓嶉渶瑕佺壒鍒殑澹版槑錛堜緥濡傦紝鍦ㄨ皟璇曞櫒涓洿鎺ョ敤FFFF琛ㄧず鍗佽繘鍒剁殑65535錛岀敤10琛ㄧず鍗佽繘鍒剁殑16錛夈?/p>
鐜板湪鎴戜滑鏉ュ啓涓灝忔姹囩紪紼嬪簭錛屼慨鏀笶AX銆丒BX銆丒CX銆丒DX鐨勬暟鍊箋?/p>
鎴戜滑鍋囧畾紼嬪簭鎵ц涔嬪墠錛屽瘎瀛樺櫒涓殑鏁板兼槸鍏?錛?/p>
| 銆 | ? | X | |
| H | L | ||
| EAX | 0000 | 00 | 00 |
| EBX | 0000 | 00 | 00 |
| ECX | 0000 | 00 | 00 |
| EDX | 0000 | 00 | 00 |
姝e鍓嶉潰鎻愬埌鐨勶紝EAX鐨勯珮16bit鏄病鏈夊姙娉曠洿鎺ヨ闂殑錛岃孉X瀵瑰簲瀹冪殑浣?6bit錛孉H銆丄L鍒嗗埆瀵瑰簲AX鐨勯珮銆佷綆8bit銆?/p>
| mov eax, 012345678h mov ebx, 0abcdeffeh mov ecx, 1 mov edx, 2 | ; 灝?12345678h閫佸叆eax ; 灝?abcdeffeh閫佸叆ebx ; 灝?00000001h閫佸叆ecx ; 灝?00000002h閫佸叆edx |
鍒欐墽琛屼笂榪扮▼搴忔涔嬪悗錛屽瘎瀛樺櫒鐨勫唴瀹瑰彉涓猴細
| 銆 | ? | X | |
| H | L | ||
| EAX | 1234 | 56 | 78 |
| EBX | abcd | ef | fe |
| ECX | 0000 | 00 | 01 |
| EDX | 0000 | 00 | 02 |
閭d箞錛屼綘宸茬粡浜嗚В浜唌ov榪欎釜鎸囦護錛坢ov鏄痬ove鐨勭緝鍐欙級鐨勪竴縐嶇敤娉曘傚畠鍙互灝嗘暟閫佸埌瀵勫瓨鍣ㄤ腑銆傛垜浠潵鐪嬬湅涓嬮潰鐨勪唬鐮侊細
| mov eax, ebx mov ecx, edx | ; ebx鍐呭閫佸叆eax ; edx鍐呭閫佸叆ecx |
鍒欏瘎瀛樺櫒鍐呭鍙樹負錛?/p>
| 銆 | ? | X | |
| H | L | ||
| EAX | abcd | ef | fe |
| EBX | abcd | ef | fe |
| ECX | 0000 | 00 | 02 |
| EDX | 0000 | 00 | 02 |
鎴戜滑鍙互鐪嬪埌錛屸渕ove鈥濅箣鍚庯紝鏁版嵁渚濈劧淇濆瓨鍦ㄥ師鏉ョ殑瀵勫瓨鍣ㄤ腑銆備笉濡ㄦ妸mov鎸囦護鐞嗚В涓衡滈佸叆鈥濓紝鎴栤滆鍏モ濄?/p>
緇冧範棰?/b>
鎶婂瘎瀛樺櫒鎭㈠鎴愰兘涓哄叏0鐨勭姸鎬侊紝鐒跺悗鎵ц涓嬮潰鐨勪唬鐮侊細
| mov eax, 0a1234h mov bx, ax mov ah, bl mov al, bh | ; 灝?a1234h閫佸叆eax ; 灝哸x鐨勫唴瀹歸佸叆bx ; 灝哹l鍐呭閫佸叆ah ; 灝哹h鍐呭閫佸叆al |
鎬濊冿細姝ゆ椂錛孍AX鐨勫唴瀹瑰皢鏄灝戯紵[絳旀]
EAX鐨勫唴瀹逛負000A3412h.
涓嬮潰鎴戜滑灝嗕粙緇嶄竴浜涙寚浠ゃ傚湪浠嬬粛鎸囦護涔嬪墠錛屾垜浠害瀹氾細
|
鍦ㄥ瘎瀛樺櫒涓澆鍏ュ彟涓瀵勫瓨鍣紝鎴栫珛鍗蟲暟鐨勫鹼細
mov reg32, (reg32 | imm8 | imm16 | imm32) |
渚嬪錛宮ov eax, 010h琛ㄧず錛屽湪eax涓澆鍏?0000010h銆傞渶瑕佹敞鎰忕殑鏄紝濡傛灉浣犲笇鏈涘湪瀵勫瓨鍣ㄤ腑瑁呭叆0錛屽垯鏈変竴縐嶆洿蹇殑鏂規硶錛屽湪鍚庨潰鎴戜滑灝嗘彁鍒般?/p>
浜ゆ崲瀵勫瓨鍣ㄧ殑鍐呭錛?/p>
| xchg reg32, reg32 xchg reg16, reg16 xchg reg8, reg8 |
渚嬪錛寈chg ebx, ecx錛屽垯ebx涓巈cx鐨勬暟鍊煎皢琚氦鎹€傜敱浜庣郴緇熸彁渚涗簡榪欎釜鎸囦護錛屽洜姝わ紝閲囩敤鍏朵粬鏂規硶浜ゆ崲鏃訛紝閫熷害灝嗕細杈冩參錛屽茍闇瑕佸崰鐢ㄦ洿澶氱殑瀛樺偍絀洪棿錛岀紪紼嬫椂瑕侀伩鍏嶈繖縐嶆儏鍐碉紝鍗籌紝灝介噺鍒╃敤緋葷粺鎻愪緵鐨勬寚浠わ紝鍥犱負澶氭暟鎯呭喌涓嬶紝榪欐剰鍛崇潃鏇村皬銆佹洿蹇殑浠g爜錛屽悓鏃朵篃鏉滅粷浜嗛敊璇紙濡傛灉璇碔ntel鐨凜PU鍦ㄤ氦鎹㈠瘎瀛樺櫒鍐呭鐨勬椂鍊欎篃浼氬嚭閿欙紝閭d箞瀹冨氨涓嶇敤鍗朇PU浜嗐傝屽浜庝綘鏉ヨ錛屾鏌ヤ竴琛屼唬鐮佺殑姝g‘鎬т篃鏄劇劧姣旀鏌ユ洿澶氫唬鐮佺殑姝g‘鎬ц瀹規槗錛夊垰鎵嶇殑涔犻鐨勭▼搴忕敤涓嬮潰鐨勪唬鐮佸皢鏇存湁鏁堬細
| mov eax, 0a1234h mov bx, ax xchg ah, al | ; 灝?a1234h閫佸叆eax ; 灝哸x鍐呭閫佸叆bx ; 浜ゆ崲ah, al鐨勫唴瀹?/font> |
閫掑鎴栭掑噺瀵勫瓨鍣ㄧ殑鍊鹼細
| inc reg(8,16,32) dec reg(8,16,32) |
榪欎袱涓寚浠ゅ線寰鐢ㄤ簬寰幆涓鎸囬拡鐨勬搷浣溿傞渶瑕佽鏄庣殑鏄紝鏌愪簺鏃跺欐垜浠湁鏇村ソ鐨勬柟娉曟潵澶勭悊寰幆錛屼緥濡備嬌鐢╨oop鎸囦護錛屾垨rep鍓嶇紑銆傝繖浜涘皢鍦ㄥ悗闈㈢殑绔犺妭涓粙緇嶃?/p>
灝嗗瘎瀛樺櫒鐨勬暟鍊間笌鍙︿竴瀵勫瓨鍣紝鎴栫珛鍗蟲暟鐨勫肩浉鍔狅紝騫跺瓨鍥炴瀵勫瓨鍣細
add reg32, reg32 / imm(8,16,32) |
渚嬪錛宎dd eax, edx錛屽皢eax+edx鐨勫煎瓨鍏ax銆傚噺娉曟寚浠ゅ拰鍔犳硶綾諱技錛屽彧鏄皢add鎹㈡垚sub銆?/p>
闇瑕佽鏄庣殑鏄紝涓庨珮綰ц璦涓嶅悓錛屾眹緙栬璦涓紝濡傛灉瑕佽綆椾袱鏁頒箣鍜岋紙宸佺Н銆佸晢錛屾垨涓鑸湴璇達紝榪愮畻緇撴灉錛夛紝閭d箞蹇呯劧鏈変竴涓瘎瀛樺櫒琚敤鏉ヤ繚瀛樼粨鏋溿傚湪PASCAL涓紝鎴戜滑鍙互鐢╪A := nB + nC鏉ヨnA淇濆瓨nB+nC鐨勭粨鏋滐紝鐒惰岋紝姹囩紪璇█騫朵笉鎻愪緵榪欑鏂規硶銆傚鏋滀綘甯屾湜淇濇寔瀵勫瓨鍣ㄤ腑鐨勭粨鏋滐紝闇瑕佺敤鍙﹀鐨勬寚浠ゃ傝繖涔熶粠鍙︿竴涓晶闈㈠弽鏄犱簡鈥滃瘎瀛樺櫒鈥濊繖涓悕瀛楃殑鎰忎箟銆傛暟鎹彧鏄滃瘎瀛樷濆湪閭i噷銆傚鏋滀綘闇瑕佷繚瀛樻暟鎹紝閭d箞闇瑕佸皢瀹冩斁鍒板唴瀛樻垨鍏朵粬鍦版柟銆?/p>
綾諱技鐨勬寚浠よ繕鏈塧nd銆乷r銆亁or錛堜笌錛屾垨錛屽紓鎴栵級絳夌瓑銆傚畠浠繘琛岀殑鏄昏緫榪愮畻銆?/p>
鎴戜滑縐癮dd銆乵ov銆乻ub銆乤nd絳夌О涓轟負鎸囦護鍔╄絎︼紙榪欎箞鍙槸鍥犱負瀹冩瘮鏈哄櫒璇█瀹規槗璁板繂錛岃岃搗浣滅敤灝辨槸鏂逛究浜鴻蹇嗭紝鏌愪簺璧勬枡涓篃縐頒負鎸囦護銆佹搷浣滅爜銆乷pcode[operation code]絳夛級錛涘悗闈㈢殑鍙傛暟鎴愪負鎿嶄綔鏁幫紝涓涓寚浠ゅ彲浠ユ病鏈夋搷浣滄暟錛屼篃鍙互鏈変竴涓や釜鎿嶄綔鏁幫紝閫氬父鏈変竴涓搷浣滄暟鐨勬寚浠わ紝榪欎釜鎿嶄綔鏁板氨鏄畠鐨勬搷浣滃璞★紱鑰屼袱涓弬鏁扮殑鎸囦護錛屽墠涓涓搷浣滄暟涓鑸槸淇濆瓨鎿嶄綔緇撴灉鐨勫湴鏂癸紝鑰屽悗涓涓槸闄勫姞鐨勫弬鏁般?/p>
鎴戜笉鎵撶畻鍦ㄨ繖浠芥暀紼嬩腑鐢ㄥぇ閲忕殑綃囧箙浠嬬粛鎸囦護鈥斺斿緢澶氫漢鍋氬緱姣旀垜鏇村ソ錛岃屼笖鎸囦護鏈韓騫朵笉鏄噸鐐癸紝濡傛灉浣犲浼氫簡濡備綍緇勭粐璇彞錛岄偅涔堝彧瑕佺◢鍔犲涔犲氨鑳借交鏄撴帉鎻″叾浠栨寚浠ゃ傛洿澶氱殑鎸囦護鍙互鍙傝?a >Intel鎻愪緵鐨勮祫鏂欍傜紪鍐欑▼搴忕殑鏃跺欙紝涔熷彲浠ュ弬鑰冧竴浜涘湪綰垮弬鑰冩墜鍐屻俆ech!Help鍜孒elpPC 2.10灝界宸茬粡寰堟棫錛屼絾瓚充互搴斾粯緇濆ぇ澶氭暟闇瑕併?/p>
鑱槑鐨勮鑰呬篃璁稿凡緇忓彂鐜幫紝浣跨敤sub eax, eax錛屾垨鑰厁or eax, eax錛屽彲浠ュ緱鍒頒笌mov eax, 0綾諱技鐨勬晥鏋溿傚湪楂樼駭璇█涓紝浣犲ぇ姒備笉浼氶夋嫨鐢╝=a-a鏉ョ粰a璧嬪鹼紝鍥犱負嫻嬭瘯浼氬憡璇変綘榪欎箞鍋氭洿鎱紝綆鐩村氨鏄湪鑷壘楹葷儲錛岀劧鑰屽湪姹囩紪璇█涓紝浣犱細寰楀埌鐩稿弽鐨勭粨璁猴紝澶氭暟鎯呭喌涓嬶紝浠ョ敱蹇埌鎱㈢殑閫熷害鎺掑垪錛岃繖涓夋潯鎸囦護灝嗘槸xor eax, eax銆乻ub eax, eax鍜宮ov eax, 0銆?/p>
涓轟粈涔堝憿錛熷鐞嗗櫒鍦ㄦ墽琛屾寚浠ゆ椂錛岄渶瑕佺粡榪囧嚑涓笉鍚岀殑闃舵錛氬彇鎸囥佽瘧鐮併佸彇鏁般佹墽琛屻?/p>
鎴戜滑鍙嶅寮鴻皟錛屽瘎瀛樺櫒鏄疌PU鐨勪竴閮ㄥ垎銆備粠瀵勫瓨鍣ㄥ彇鏁幫紝鍏墮熷害寰堟樉鐒惰姣斾粠鍐呭瓨涓彇鏁板揩銆傞偅涔堬紝涓嶉毦鐞嗚В錛寈or eax, eax瑕佹瘮mov eax, 0鏇村揩涓浜涖?/p>
閭d箞錛屼負浠涔坅=a-a閫氬父瑕佹瘮a=0鎱竴浜涘憿錛熻繖鍜岀紪璇戝櫒鐨勪紭鍖栨湁涓瀹氬叧緋匯傚鏁扮紪璇戝櫒浼氭妸a=a-a緲昏瘧鎴愮被浼間笅闈㈢殑浠g爜(閫氬父錛岄珮綰ц璦閫氳繃ebp鍜屽亸縐婚噺鏉ヨ闂眬閮ㄥ彉閲忥紱紼嬪簭涓紝x涓篴鐩稿浜庢湰鍦板爢鐨勫亸縐婚噺錛屽湪鍙寘鍚竴涓?2-bit鏁村艦鍙橀噺鐨勭▼搴忎腑錛岃繖涓奸氬父鏄?)錛?/p>
mov eax, dword ptr [ebp-x] |
鑰屾妸a=0緲昏瘧鎴?/p>
mov dword ptr [ebp-x], 0 |
涓婇潰鐨勭炕璇戝彧鏄ず鎰忔х殑錛岀暐鍘諱簡寰堝蹇呰鐨勬楠わ紝濡備繚鎶ゅ瘎瀛樺櫒鍐呭銆佹仮澶嶇瓑絳夈傚鏋滀綘瀵逛笌緙栬瘧紼嬪簭鐨勫疄鐜拌繃紼嬫劅鍏磋叮錛屽彲浠ュ弬鑰冪浉搴旂殑涔︾睄銆傚鏁扮紪璇戝櫒錛堢壒鍒槸C/C++緙栬瘧鍣紝濡侻icrosoft Visual C++錛夐兘鎻愪緵浜嗕粠婧愪唬鐮佸埌瀹忔眹緙栬璦紼嬪簭鐨勯檮鍔犵紪璇戣緭鍑洪夐」銆傝繖縐嶆儏鍐典笅錛屼綘鍙互寰堟柟渚垮湴浜嗚В緙栬瘧紼嬪簭鎵ц鐨勮緭鍑虹粨鏋滐紱濡傛灉緙栬瘧紼嬪簭娌℃湁鎻愪緵榪欐牱鐨勫姛鑳戒篃娌℃湁鍏崇郴錛岃皟璇曞櫒浼氳浣犵湅鍒扮紪璇戝櫒鐨勭紪璇戠粨鏋溿?/p>
濡傛灉浣犳槑紜湴鐭ラ亾緙栬瘧鍣ㄧ紪璇戝嚭鐨勭粨鏋滀笉鏄渶浼樼殑錛岄偅灝卞彲浠ョ潃鎵嬬敤姹囩紪璇█鏉ラ噸鍐欓偅孌典唬鐮佷簡銆傛庝箞紜鏄惁搴旇鐢ㄦ眹緙栬璦閲嶅啓鍛紵
銆銆浣跨敤姹囩紪璇█閲嶅啓浠g爜涔嬪墠闇瑕佺‘璁ょ殑鍑犱歡浜嬫儏
|
鏇劇粡鍦ㄤ竴浠芥潅蹇椾笂鐪嬪埌榪囨湁浜虹敤綰満鍣ㄨ璦緙栧啓紼嬪簭銆備笉娓呮鍒板簳榪欐槸涓嶆槸緙栬緫鐨勫け璇紝鍥犱負涓涓ご鑴戞甯哥殑浜烘亹鎬曚笉浼氳繖涔堝仛紼嬪簭錛屽嵆浣垮畠涓嶉暱銆佷篃涓嶅鏉傘傞鍏堬紝姹囩紪鍣ㄨ兘澶熷畬鎴愭煇浜涘皝鍖呮搷浣滐紝鍗充嬌涓嶈錛屼篃鍙互鐢╠b浼寚浠ゆ潵鍐欐寚浠わ紱鐢ㄦ眹緙栬璦鍐欑▼搴忓彲浠ラ槻姝㈠緢澶氶敊璇殑鍙戠敓錛屽悓鏃訛紝瀹冭繕鍑忚交浜嗕漢鐨勮礋鎷咃紝寰堟樉鐒訛紝鈥滃畬鍏ㄧ敤鏈哄櫒璇█鍐欑▼搴忊濇槸瀹屽叏娌℃湁蹇呰鐨勶紝鍥犱負姹囩紪璇█鍙互鍋氬嚭瀹屽叏涓鏍風殑浜嬫儏錛屽茍涓斾綘鍙互渚濊禆瀹冿紝鍥犱負璁$畻鏈轟笉浼氬嚭閿欙紝鑰屼漢鎬繪湁鍑洪敊鐨勬椂鍊欍傛澶栵紝濡傚墠闈㈡墍璦錛屽鏋滅敤楂樼駭璇█瀹炵幇紼嬪簭鐨勪唬浠蜂笉澶э紙渚嬪錛岃繖孌典唬鐮佸湪紼嬪簭鐨勬暣涓墽琛岃繃紼嬩腑鍙墽琛屼竴閬嶏紝騫朵笖錛岃繖涓閬嶇殑鎵ц鏃墮棿涔熷皬浜庝竴縐掞級錛岄偅涔堬紝涓轟粈涔堜笉鐢ㄩ珮綰ц璦瀹炵幇鍛紵
涓浜涙瘮杈冪媯鐑殑緙栫▼鐖卞ソ鑰呭彲鑳戒笉澶枩嬈㈡垜鐨勮繖縐嶈鐐廣傛瘮鏂硅錛屼粬浠彲鑳藉笇鏈涚簿鐩婃眰綺懼湴浼樺寲姣忎竴瀛楄妭鐨勪唬鐮併備絾澶氭暟鎯呭喌涓嬫垜浠湁鏇撮噸瑕佺殑浜嬫儏錛屼緥濡傦紝浣犵殑綆楁硶鏄渶浼樼殑鍚楋紵浣犲凡緇忔妸紼嬪簭鍦ㄩ珮綰ц璦璁稿彲鐨勮寖鍥村唴浼樺寲鍒板敖澶翠簡鍚楋紵騫朵笉鏄墍鏈夌殑浜洪兘鏈夎祫鏍艱繖鏍瘋銆傛眹緙栬璦鏄繖鏍蜂竴浠朵笢瑗匡紝瀹冭凍澶熺殑寮哄ぇ錛岃兘澶熸帶鍒惰綆楁満錛屽畬鎴愬畠鑳藉瀹炵幇鐨勪換浣曞姛鑳斤紱鍚屾椂錛屽洜涓哄畠鐨勫己澶э紝涔熶細鎻愰珮寮鍙戞垚鏈紝騫朵笖錛岄毦浜庣淮鎶ゃ傚洜姝わ紝鎴戜釜浜虹殑寤鴻鏄紝濡傛灉鍦ㄨ蔣浠跺紑鍙戜腑浣跨敤姹囩紪璇█錛屽垯搴斿湪杞歡鎺ヨ繎瀹屾垚鐨勬椂鍊欎嬌鐢紝榪欐牱鍙互鍑忓皯寰堝涓嶅繀瑕佺殑鎶曞叆銆?/p>
絎簩绔犱腑錛屾垜浠嬬粛浜唜86緋誨垪澶勭悊鍣ㄧ殑鍩烘湰瀵勫瓨鍣ㄣ傝繖浜涘瘎瀛樺櫒瀵逛簬x86鍏煎澶勭悊鍣ㄤ粛鐒舵槸鏈夋晥鐨勶紝濡傛灉浣犲亸鐖盇MD鐨凜PU錛岄偅涔堜嬌鐢ㄨ繖浜涘瘎瀛樺櫒鐨勭▼搴忓悓鏍蜂篃鍙互姝e父榪愯銆?/p>
涓嶈繃鐜板湪璇寸敤姹囩紪璇█榪涜浼樺寲榪樹負鏃跺皻鏃┾斺斾笉鍙兘鍐欑▼搴忥紝鑰屽彧鎿嶄綔榪欎簺瀵勫瓨鍣紝鍥犱負榪欐牱鍙兘瀹屾垚闈炲父綆鍗曠殑鎿嶄綔錛屾棦鐒舵槸綆鍗曠殑鎿嶄綔錛岄偅鍙兘灝變細璁╀漢瑙夊緱涔忓懗錛岀敋鑷蟲壘涓鍙拌凍澶熷揩鐨勬満鍣ㄧ┓涓懼畠鐨勬墍鏈夌粨鏋滐紙濡傛灉鍙互絀蜂婦鐨勮瘽錛夛紝騫剁洿鎺ュ啓紼嬪簭璋冪敤錛屽洜涓鴻繖鏍烽氬父浼氭洿蹇備絾璇濊鍥炴潵錛岀湅瀹屾帴涓嬫潵鐨勪袱绔犫斺斿唴瀛樺拰鍫嗘爤鎿嶄綔錛屼綘灝卞彲浠ョ嫭绔嬪畬鎴愬嚑涔庢墍鏈夌殑浠誨姟浜嗭紝閰嶅悎絎簲绔犱腑鏂佺鍏珷瀛愮▼搴忕殑鐭ヨ瘑錛屼綘灝嗙煡閬撳浣曢┚椹鐞嗗櫒錛屽茍璁╁畠涓轟綘宸ヤ綔銆?/p>
涓ぎ澶勭悊鍣?CPU)鍦ㄥ井鏈虹郴緇熷浜庘滈瀵兼牳蹇冣濈殑鍦頒綅銆傛眹緙栬璦琚紪璇戞垚鏈哄櫒璇█涔嬪悗錛屽皢鐢卞鐞嗗櫒鏉ユ墽琛屻傞偅涔堬紝棣栧厛璁╂垜浠潵浜嗚В涓涓嬪鐞嗗櫒鐨勪富瑕佷綔鐢紝榪欏皢甯姪浣犳洿濂藉湴椹鵑┉瀹冦?/p>
鍏稿瀷鐨勫鐞嗗櫒鐨勪富瑕佷換鍔″寘鎷?/b>
|
涓鑸鏉ワ紝澶勭悊鍣ㄦ嫢鏈夊鏁翠釜緋葷粺鐨勬墍鏈夋葷嚎鐨勬帶鍒舵潈銆傚浜嶪ntel騫沖彴鑰岃█錛屽鐞嗗櫒鎷ユ湁瀵規暟鎹佸唴瀛樺拰鎺у埗鎬葷嚎鐨勬帶鍒舵潈錛屾牴鎹寚浠ゆ帶鍒舵暣涓綆楁満鐨勮繍琛屻傚湪浠ュ悗鐨勭珷鑺備腑錛屾垜浠繕灝嗚璁虹郴緇熶腑鍚屾椂瀛樺湪澶氫釜澶勭悊鍣ㄧ殑鎯呭喌銆?/p>
澶勭悊鍣ㄤ腑鏈変竴浜涘瘎瀛樺櫒錛岃繖浜涘瘎瀛樺櫒鍙互淇濆瓨鐗瑰畾闀垮害鐨勬暟鎹傛煇浜涘瘎瀛樺櫒涓繚瀛樼殑鏁版嵁瀵逛簬緋葷粺鐨勮繍琛屾湁鐗規畩鐨勬剰涔夈?/p>
鏂扮殑澶勭悊鍣ㄥ線寰鎷ユ湁鏇村銆佸叿鏈夋洿澶у瓧闀跨殑瀵勫瓨鍣紝鎻愪緵鏇寸伒媧葷殑鍙栨寚銆佸鍧鏂瑰紡銆?/p>
瀵勫瓨鍣?/b>
濡傚墠鎵榪幫紝澶勭悊鍣ㄤ腑鏈変竴浜涘彲浠ヤ繚瀛樻暟鎹殑鍦版柟琚О浣滃瘎瀛樺櫒銆?/p>
瀵勫瓨鍣ㄥ彲浠ヨ瑁呭叆鏁版嵁錛屼綘涔熷彲浠ュ湪涓嶅悓鐨勫瘎瀛樺櫒涔嬮棿縐誨姩榪欎簺鏁版嵁錛屾垨鑰呭仛綾諱技鐨勪簨鎯呫傚熀鏈笂錛屽儚鍥涘垯榪愮畻銆佷綅榪愮畻絳夎繖浜涜綆楁搷浣滐紝閮戒富瑕佹槸閽堝瀵勫瓨鍣ㄨ繘琛岀殑銆?/p>
棣栧厛璁╂垜鏉ヤ粙緇嶄竴涓?0386涓婃渶甯哥敤鐨?涓氱敤瀵勫瓨鍣ㄣ傚厛鐬х灖涓嬮潰鐨勫浘褰紝璇曠潃鐞嗚В涓涓嬶細

涓婂浘涓紝鏁板瓧琛ㄧず鐨勬槸浣嶃傛垜浠彲浠ョ湅鍑猴紝EAX鏄竴涓?2-bit瀵勫瓨鍣ㄣ傚悓鏃訛紝瀹冪殑浣?6-bit鍙堝彲浠ラ氳繃AX榪欎釜鍚嶅瓧鏉ヨ闂紱AX鍙堣鍒嗕負楂樸佷綆8bit涓ら儴鍒嗭紝鍒嗗埆鐢盇H鍜孉L鏉ヨ〃紺恒?/p>
瀵逛簬EAX銆丄X銆丄H銆丄L鐨勬敼鍙樺悓鏃朵篃浼氬獎鍝嶄笌琚慨鏀圭殑閭d簺瀵勫瓨鍣ㄧ殑鍊箋備粠鑰屼簨瀹炰笂鍙瓨鍦ㄤ竴涓?2-bit鐨勫瘎瀛樺櫒EAX錛岃屽畠鍙互閫氳繃4縐嶄笉鍚岀殑閫斿緞璁塊棶銆?/p>
涔熻閫氳繃鍚嶅瓧鑳藉鏇村鏄撳湴鐞嗚В榪欎簺瀵勫瓨鍣ㄤ箣闂寸殑鍏崇郴銆侲AX涓殑E鐨勬剰鎬濇槸鈥滄墿灞曠殑鈥濓紝鏁翠釜EAX鐨勬剰鎬濇槸鎵╁睍鐨凙X銆俋鐨勬剰鎬滻ntel娌℃湁鏄庣ず錛屾垜涓漢璁や負琛ㄧず瀹冩槸涓涓彲鍙樼殑閲?銆傝孉H銆丄L涓殑H鍜孡鍒嗗埆浠h〃楂樺拰浣?銆?/p>
涓轟粈涔堣榪欎箞鍋氬憿錛熶富瑕佺敱浜庡巻鍙插師鍥犮傛棭鏈熺殑璁$畻鏈烘槸8浣嶇殑錛?086鏄涓涓?6浣嶅鐞嗗櫒錛屽叾閫氱敤瀵勫瓨鍣ㄧ殑鍚嶅瓧鏄疉X錛孊X絳夌瓑錛?0386鏄疘ntel鎺ㄥ嚭鐨勭涓嬈綢A-32緋誨垪澶勭悊鍣紝鎵鏈夌殑瀵勫瓨鍣ㄩ兘琚墿鍏呬負32浣嶃備負浜嗚兘澶熷吋瀹逛互鍓嶇殑16浣嶅簲鐢ㄧ▼搴忥紝80386涓嶈兘灝嗚繖浜涘瘎瀛樺櫒渚濇棫鍛藉悕涓篈X銆丅X錛屽茍涓旂畝鍗曞湴灝嗕粬浠墿鍏呬負32浣嶁斺旇繖灝嗗鍔犲鐞嗗櫒鍦ㄥ鐞嗘寚浠ゆ柟闈㈢殑鎴愭湰銆?/p>
Intel寰鐞嗗櫒鐨勫瘎瀛樺櫒鍒楄〃錛堝湪鏈珷鍏堝彧浠嬬粛80386鐨勫瘎瀛樺櫒錛孧MX瀵勫瓨鍣ㄤ互鍙婂叾浠栨柊涓浠e鐞嗗櫒鐨勬柊瀵勫瓨鍣ㄥ皢鍦ㄤ互鍚庣殑绔犺妭浠嬬粛錛?/p>
閫氱敤瀵勫瓨鍣?/b> EAX EBX ECX EDX
涓嬮潰浠嬬粛閫氱敤瀵勫瓨鍣ㄥ強鍏朵範鎯敤娉曘傞【鍚嶆濅箟錛岄氱敤瀵勫瓨鍣ㄦ槸閭d簺浣犲彲浠ユ牴鎹嚜宸辯殑鎰忔効浣跨敤鐨勫瘎瀛樺櫒錛屼慨鏀逛粬浠殑鍊奸氬父涓嶄細瀵硅綆楁満鐨勮繍琛岄犳垚寰堝ぇ鐨勫獎鍝嶃傞氱敤瀵勫瓨鍣ㄦ渶澶氱殑鐢ㄩ旀槸璁$畻銆?/p>
32-bit瀹?/p>閫氱敤瀵勫瓨鍣ㄣ傜浉瀵瑰叾浠栧瘎瀛樺櫒錛屽湪榪涜榪愮畻鏂歸潰姣旇緝甯哥敤銆傚湪淇濇姢妯″紡涓紝涔熷彲浠ヤ綔涓哄唴瀛樺亸縐繪寚閽堬紙姝ゆ椂錛孌S浣滀負孌?瀵勫瓨鍣ㄦ垨閫夋嫨鍣級
32-bit瀹?/p>閫氱敤瀵勫瓨鍣ㄣ傞氬父浣滀負鍐呭瓨鍋忕Щ鎸囬拡浣跨敤錛堢浉瀵逛簬EAX銆丒CX銆丒DX錛夛紝DS鏄粯璁ょ殑孌靛瘎瀛樺櫒鎴栭夋嫨鍣ㄣ傚湪淇濇姢妯″紡涓紝鍚屾牱鍙互璧瘋繖涓綔鐢ㄣ?/td>
32-bit瀹?/p>閫氱敤瀵勫瓨鍣ㄣ傞氬父鐢ㄤ簬鐗瑰畾鎸囦護鐨勮鏁般傚湪淇濇姢妯″紡涓紝涔熷彲浠ヤ綔涓哄唴瀛樺亸縐繪寚閽堬紙姝ゆ椂錛孌S浣滀負 瀵勫瓨鍣ㄦ垨孌甸夋嫨鍣級銆?/td>
32-bit瀹?/p>閫氱敤瀵勫瓨鍣ㄣ傚湪鏌愪簺榪愮畻涓綔涓篍AX鐨勬孩鍑哄瘎瀛樺櫒錛堜緥濡備箻銆侀櫎錛夈傚湪淇濇姢妯″紡涓紝涔熷彲浠ヤ綔涓哄唴瀛樺亸縐繪寚閽堬紙姝ゆ椂錛孌S浣滀負孌?瀵勫瓨鍣ㄦ垨閫夋嫨鍣級銆?/td>
涓婅堪瀵勫瓨鍣ㄥ悓EAX涓鏍峰寘鎷搴旂殑16-bit鍜?-bit鍒嗙粍銆?/p>
鐢ㄤ綔鍐呭瓨鎸囬拡鐨勭壒孌婂瘎瀛樺櫒
ESI | 閫氬父鍦ㄥ唴瀛樻搷浣滄寚浠や腑浣滀負鈥滄簮鍦板潃鎸囬拡鈥濅嬌鐢ㄣ傚綋鐒訛紝ESI鍙互琚鍏ヤ換鎰忕殑鏁板鹼紝浣嗛氬父娌℃湁浜烘妸瀹冨綋浣滈氱敤瀵勫瓨鍣ㄦ潵鐢ㄣ侱S鏄粯璁ゆ瀵勫瓨鍣ㄦ垨閫夋嫨鍣ㄣ?/td> |
EDI | 閫氬父鍦ㄥ唴瀛樻搷浣滄寚浠や腑浣滀負鈥滅洰鐨勫湴鍧鎸囬拡鈥濅嬌鐢ㄣ傚綋鐒訛紝EDI涔熷彲浠ヨ瑁呭叆浠繪剰鐨勬暟鍊鹼紝浣嗛氬父娌℃湁浜烘妸瀹冨綋浣滈氱敤瀵勫瓨鍣ㄦ潵鐢ㄣ侱S鏄粯璁ゆ瀵勫瓨鍣ㄦ垨閫夋嫨鍣ㄣ?/td> |
EBP | 榪欎篃鏄竴涓綔涓烘寚閽堢殑瀵勫瓨鍣ㄣ傞氬父錛屽畠琚珮綰ц璦緙栬瘧鍣ㄧ敤浠ュ緩閫犫樺爢鏍堝撫鈥欐潵淇濆瓨鍑芥暟鎴栬繃紼嬬殑灞閮ㄥ彉閲忥紝涓嶈繃錛岃繕鏄偅鍙ヨ瘽錛屼綘鍙互鍦ㄥ叾涓繚瀛樹綘甯屾湜鐨勪換浣曟暟鎹係S鏄畠鐨勯粯璁ゆ瀵勫瓨鍣ㄦ垨閫夋嫨鍣ㄣ?/td> |
娉ㄦ剰錛岃繖涓変釜瀵勫瓨鍣ㄦ病鏈夊搴旂殑8-bit鍒嗙粍銆傛崲璦涔嬶紝浣犲彲浠ラ氳繃SI銆丏I銆丅P浣滀負鍒悕璁塊棶浠栦滑鐨勪綆16浣嶏紝鍗存病鏈夊姙娉曠洿鎺ヨ闂粬浠殑浣?浣嶃?/p>
孌靛瘎瀛樺櫒鍜岄夋嫨鍣?/b>
瀹炴ā寮忎笅鐨勬瀵勫瓨鍣ㄥ埌淇濇姢妯″紡涓嬫憞韜竴鍙樺氨鎴愪簡閫夋嫨鍣ㄣ備笉鍚岀殑鏄紝瀹炴ā寮忎笅鐨勨滄瀵勫瓨鍣ㄢ濇槸16-bit鐨勶紝鑰屼繚鎶ゆā寮忎笅鐨勯夋嫨鍣ㄦ槸32-bit鐨勩?/p>
| CS | 浠g爜孌碉紝鎴栦唬鐮侀夋嫨鍣ㄣ傚悓IP瀵勫瓨鍣?紼嶅悗浠嬬粛)涓鍚屾寚鍚戝綋鍓嶆鍦ㄦ墽琛岀殑閭d釜鍦板潃銆傚鐞嗗櫒鎵ц鏃朵粠榪欎釜瀵勫瓨鍣ㄦ寚鍚戠殑孌碉紙瀹炴ā寮忥級鎴栧唴瀛橈紙淇濇姢妯″紡錛変腑鑾峰彇鎸囦護銆傞櫎浜嗚煩杞垨鍏朵粬鍒嗘敮鎸囦護涔嬪錛屼綘鏃犳硶淇敼榪欎釜瀵勫瓨鍣ㄧ殑鍐呭銆?/td> |
| DS | 鏁版嵁孌碉紝鎴栨暟鎹夋嫨鍣ㄣ傝繖涓瘎瀛樺櫒鐨勪綆16 bit榪炲悓ESI涓鍚屾寚鍚戠殑鎸囦護灝嗚澶勭悊鐨勫唴瀛樸傚悓鏃訛紝鎵鏈夌殑鍐呭瓨鎿嶄綔鎸囦護 榛樿鎯呭喌涓嬮兘鐢ㄥ畠鎸囧畾鎿嶄綔孌?瀹炴ā寮?鎴栧唴瀛?浣滀負閫夋嫨鍣紝鍦ㄤ繚鎶ゆā寮忋傝繖涓瘎瀛樺櫒鍙互琚鍏ヤ換鎰忔暟鍊鹼紝鐒惰屽湪榪欎箞鍋氱殑鏃跺欓渶瑕佸皬蹇冧竴浜涖傛柟娉曟槸錛岄鍏堟妸鏁版嵁閫佺粰AX錛岀劧鍚庡啀鎶婂畠浠嶢X浼犻佺粰DS(褰撶劧錛屼篃鍙互閫氳繃鍫嗘爤鏉ュ仛). |
| ES | 闄勫姞孌碉紝鎴栭檮鍔犻夋嫨鍣ㄣ傝繖涓瘎瀛樺櫒鐨勪綆16 bit榪炲悓EDI涓鍚屾寚鍚戠殑鎸囦護灝嗚澶勭悊鐨勫唴瀛樸傚悓鏍風殑錛岃繖涓瘎瀛樺櫒鍙互琚鍏ヤ換鎰忔暟鍊鹼紝鏂規硶鍜孌S綾諱技銆?/td> |
| FS | F孌墊垨F閫夋嫨鍣?鎺ㄦ祴F鍙兘鏄疐ree?)銆傚彲浠ョ敤榪欎釜瀵勫瓨鍣ㄤ綔涓洪粯璁ゆ瀵勫瓨鍣ㄦ垨閫夋嫨鍣ㄧ殑涓涓浛浠e搧銆傚畠鍙互琚鍏ヤ換浣曟暟鍊鹼紝鏂規硶鍜孌S綾諱技銆?/td> |
| GS | G孌墊垨G閫夋嫨鍣?G鐨勬剰涔夊拰F涓鏍鳳紝娌℃湁鍦↖ntel鐨勬枃妗d腑瑙i噴)銆傚畠鍜孎S鍑犱箮瀹屽叏涓鏍楓?/td> |
| SS | 鍫嗘爤孌墊垨鍫嗘爤閫夋嫨鍣ㄣ傝繖涓瘎瀛樺櫒鐨勪綆16 bit榪炲悓ESP涓鍚屾寚鍚戜笅涓嬈″爢鏍堟搷浣?push鍜宲op)鎵瑕佷嬌鐢ㄧ殑鍫嗘爤鍦板潃銆傝繖涓瘎瀛樺櫒涔熷彲浠ヨ瑁呭叆浠繪剰鏁板鹼紝浣犲彲浠ラ氳繃鍏ユ爤鍜屽嚭鏍堟搷浣滄潵緇欎粬璧嬪鹼紝涓嶈繃鐢變簬鍫嗘爤瀵逛簬寰堝鎿嶄綔鏈夊緢閲嶈鐨勬剰涔夛紝鍥犳錛屼笉姝g‘鐨勪慨鏀規湁鍙兘閫犳垚瀵瑰爢鏍堢殑鐮村潖銆?/td> |
* 娉ㄦ剰 涓瀹氫笉瑕佸湪鍒濆姹囩紪鐨勯樁孌墊妸榪欎簺瀵勫瓨鍣ㄥ紕娣楓備粬浠潪甯擱噸瑕侊紝鑰屼竴鏃︿綘鎺屾彙浜嗕粬浠紝浣犲氨鍙互瀵逛粬浠仛浠繪剰鐨勬搷浣滀簡銆傛瀵勫瓨鍣紝鎴栭夋嫨鍣紝鍦ㄦ病鏈夋寚瀹氱殑鎯呭喌涓嬮兘鏄嬌鐢ㄩ粯璁ょ殑閭d釜銆傝繖鍙ヨ瘽鍦ㄧ幇鍦ㄧ湅鏉ュ彲鑳芥湁鐐圭█閲岀硦娑傦紝涓嶈繃浣犲緢蹇氨浼氬湪鍚庨潰鐭ラ亾濡備綍鍘誨仛銆?/p>
鐗規畩瀵勫瓨鍣?鎸囧悜鍒扮壒瀹氭鎴栧唴瀛樼殑鍋忕Щ閲?錛?/p>
| EIP | 榪欎釜瀵勫瓨鍣ㄩ潪甯哥殑閲嶈銆傝繖鏄竴涓?2浣嶅鐨勫瘎瀛樺櫒 錛屽悓CS涓鍚屾寚鍚戝嵆灝嗘墽琛岀殑閭f潯鎸囦護鐨勫湴鍧銆備笉鑳藉鐩存帴淇敼榪欎釜瀵勫瓨鍣ㄧ殑鍊鹼紝淇敼瀹冪殑鍞竴鏂規硶鏄煩杞垨鍒嗘敮鎸囦護銆?CS鏄粯璁ょ殑孌墊垨閫夋嫨鍣? |
| ESP | 榪欎釜32浣嶅瘎瀛樺櫒鎸囧悜鍫嗘爤涓嵆灝嗚鎿嶄綔鐨勯偅涓湴鍧銆傚敖綆″彲浠ヤ慨鏀瑰畠鐨勫鹼紝鐒惰屽茍涓嶆彁鍊¤繖鏍峰仛錛屽洜涓哄鏋滀綘涓嶆槸闈炲父鏄庣櫧鑷繁鍦ㄥ仛浠涔堬紝閭d箞浣犲彲鑳介犳垚鍫嗘爤鐨勭牬鍧忋傚浜庣粷澶у鏁版儏鍐佃岃█錛岃繖瀵圭▼搴忔槸鑷村懡鐨勩?SS鏄粯璁ょ殑孌墊垨閫夋嫨鍣? |
IP: Instruction Pointer, 鎸囦護鎸囬拡
SP: Stack Pointer, 鍫嗘爤鎸囬拡
濂戒簡錛屼笂闈㈡槸鏈鍩烘湰鐨勫瘎瀛樺櫒銆備笅闈㈡槸涓浜涘叾浠栫殑瀵勫瓨鍣紝浣犵敋鑷沖彲鑳芥病鏈夊惉璇磋繃瀹冧滑銆?閮芥槸32浣嶅)錛?/p>
CR0, CR2, CR3(鎺у埗瀵勫瓨鍣?銆備婦涓涓緥瀛愶紝CR0鐨勪綔鐢ㄦ槸鍒囨崲瀹炴ā寮忓拰淇濇姢妯″紡銆?/p>
榪樻湁鍏朵粬涓浜涘瘎瀛樺櫒錛孌0, D1, D2, D3, D6鍜孌7(璋冭瘯瀵勫瓨鍣?銆備粬浠彲浠ヤ綔涓鴻皟璇曞櫒鐨勭‖浠舵敮鎸佹潵璁劇疆鏉′歡鏂偣銆?/p>
TR3, TR4, TR5, TR6 鍜?TR? 瀵勫瓨鍣?嫻嬭瘯瀵勫瓨鍣?鐢ㄤ簬鏌愪簺鏉′歡嫻嬭瘯銆?/p>
鏈鍚庢垜浠璇寸殑鏄竴涓湪紼嬪簭璁捐涓搗鐫闈炲父鍏抽敭鐨勪綔鐢ㄧ殑瀵勫瓨鍣細鏍囧織瀵勫瓨鍣ㄣ?/p>

鏈妭涓儴浠借〃鏍兼潵鑷狣avid Jurgens鐨凥elpPC 2.10蹇熷弬鑰冩墜鍐屻傚湪姝よ皚琛ㄨ阿鎰忋?/p>
鎴戜笉鎯沖じ澶ф垨鑰呰船浣庢眹緙栬璦銆備絾鎴戞兂璇達紝姹囩紪璇█鏀瑰彉浜?0涓栫邯鐨勫巻鍙層備笌鍓嶈緢鐩告瘮錛屾垜浠繖涓浠g紪紼嬩漢鍛樿凍澶熺殑騫哥錛屽洜涓烘垜浠湁鍚勫紡鍚勬牱鐨勭紪紼嬭璦錛屾垜浠彲浠ユ搷浣滈敭鐩樸佸潗鍦ㄦ樉紺哄櫒闈㈠墠錛岀敋鑷充嬌鐢ㄩ紶鏍囥佽闊寵瘑鍒傛垜浠彲浠ヤ嬌鐢ㄩ敭鐩樸侀紶鏍囨潵椹鵑┉鈥滀釜浜鴻綆楁満鈥濓紝鑰屼笉鏄拰涓緹や漢鍏變韓涓鍙頒嬌鐢ㄧ閲嶇殑緇х數鍣ㄣ佸紑鍏沖幓鎿嶄綔鐨勫法鍨嬫満銆傜浉姣斾箣涓嬶紝鎴戜滑鐨勫墠杈堜笉寰椾笉浣跨敤鏈哄櫒璇█緙栧啓紼嬪簭錛屼粬浠敋鑷蟲病鏈夋渶綆鍗曠殑姹囩紪紼嬪簭鏉ユ妸鍔╄絎︾炕璇戞垚鏈哄櫒璇█錛岃屾垜浠彲浠ヤ粠涓婂崈縐嶈綆楁満璇█涓夋嫨鎴戜滑鍠滄鐨勪竴縐嶏紝鑰屾眹緙栵紝铏界劧涓嶆槸涓縐嶁滃父鐢ㄢ濈殑鍏鋒湁鈥滃揩閫熷師鍨嬪紑鍙戔濊兘鍔涚殑璇█錛屽嵈涔熸槸鎴戜滑鍙互閫夋嫨鐨勮璦涓殑涓縐嶃?/p>
姣忕璁$畻鏈洪兘鏈夎嚜宸辯殑姹囩紪璇█鈥斺旀病蹇呰鎸囨湜姹囩紪璇█鐨勫彲縐繪鎬э紝閫夋嫨姹囩紪錛屾剰鍛崇潃閫夋嫨鎬ц兘鑰屼笉鏄彲縐繪鎴栦究浜庤皟璇曘傝繖浠芥枃妗d腑璁茶堪鐨勬槸x86姹囩紪璇█錛屾鍚庣殑鈥滄眹緙栬璦鈥濅竴璇嶏紝濡傛灉涓嶆槑紺哄垯琛ㄧずia32涓婄殑x86姹囩紪璇█銆?/p>
姹囩紪璇█鏄竴縐嶆槗瀛︼紝鍗村緢闅劇簿閫氱殑璇█銆傚洖鎯沖綋騫達紝鎴戜粠鍒濆姹囩紪鍒板啓鍑?span class="tip" id="oFirstASM" title="">絎竴涓彲榪愯鐨勭▼搴?font color="#808080">錛?/font>褰撴椂鎴戝榪嘊ASIC, Fortran鍜孭ascal錛屽啓鐨勬槸涓涓涓涓寘鍚?00涓?2bit鏁存暟鐨勬暟緇勮繘琛屽揩閫熸帓搴忥紝騫朵笖杈撳嚭鍑烘潵鐨勫皬紼嬪簭銆?strong>錛?/strong>錛屽彧鐢ㄤ簡涓嶅埌4涓皬鏃訛紱鐒惰岀洿鍒頒粖澶╋紝鎴戜粛鐒朵笉鏁㈣鑷繁綺鵑氬畠銆傜紪鍐欏揩閫熴侀珮鏁堛佸茍涓旇兘澶熻澶勭悊鍣ㄢ滃緢鑸掓湇鍦版墽琛屸濈殑紼嬪簭鏄竴浠跺緢鍥伴毦鐨勪簨鎯咃紝濡傛灉鍒╃敤涓氫綑鏃墮棿瀛︿範錛岄氬父闇瑕?-3騫寸殑鏃墮棿鎵嶈兘鍋氬埌銆傝繖浠芥暀鏉愬茍涓嶆湡寰呰兘澶熸暀緇欎綘澶ч噺鐨勬眹緙栬璦鎶宸с傚浜庤鑰呮潵璇達紝x86姹囩紪璇█"灝卞湪榪欓噷"銆傜劧鑰岋紝涓嶈鍍靛寲鍦板眬闄愪簬榪欎喚鏁欐潗璁茶堪鐨勫唴瀹癸紝鍥犱負瀹冨彧鑳藉憡璇変綘姹囩紪璇█鏄滆繖鏍蜂竴鍥炰簨鈥濄傚濂芥眹緙栬璦錛屾洿澶氱殑瑕侀潬涓涓漢鐨勫垱閫犲姏浜庢偀鎬э紝鎴戝彲浠ュ憡璇変綘鎴戞墍鐭ラ亾鐨勬妧宸э紝浣嗚偗瀹氳繖鏄笉澶熺殑銆備竴浣嶅鎴戠殑緙栫▼鐢熸動浜х敓榪囬噸瑕佸獎鍝嶇殑浜烘浘緇忓鎴戣榪囪繖涔堜竴鍙ヨ瘽錛?/p>
|
鍐欐眹緙栬璦紼嬪簭涓嶆槸姹囩紪璇█鏈闅劇殑閮ㄥ垎錛屽垱鏂版墠鏄?/p> |
鎴戞兂錛屾効鎰忕湅榪欎喚鏂囨。鐨勪漢鎭愭曚笉浼氶棶鎴戔滀負浠涔堣瀛︿範姹囩紪璇█鈥濊繖鏍風殑闂錛涗笉榪囷紝鎴戣繕鏄兂璇村嚑鍙ワ細棣栧厛錛屾眹緙栬璦闈炲父鏈夌敤錛屾垜涓漢涓誨紶鎶婂畠浣滀負C璇█鐨勫厛淇紼嬶紝鍥犱負閫氳繃瀛︿範姹囩紪璇█錛屼綘鍙互浜嗚В鍒板浣曟湁鏁堝湴璁捐鏁版嵁緇撴瀯錛岃璁$畻鏈哄鐞嗗緱鏇村揩錛屽茍浣跨敤鏇村皯鐨勫瓨鍌ㄧ┖闂達紱鍚屾椂錛屽涔犳眹緙栬璦鍙互璁╀綘鐔熸倝璁$畻鏈哄唴閮ㄨ繍琛屾満鍒訛紝騫朵笖錛屾湁鏁堝湴鎻愰珮璋冭瘯鑳藉姏銆傚氨鎴戜釜浜虹殑緇忛獙鑰岃█錛岃皟璇曚竴涓潪緇撴瀯鍖栫殑紼嬪簭鐨勫洶闅劇▼搴︼紝瑕佹瘮璋冭瘯涓涓粨鏋勫寲鐨勭▼搴忕殑闅懼害楂樺緢澶氾紝鍥犱負鈥滅粨鏋勫寲鈥濇槸浠ョ壓鐗茶繍琛屾晥鐜囨潵鎻愰珮鍙鎬т笌鍙皟璇曟э紝榪欏浜庡畬鎴愪竴鑸蔣浠跺伐紼嬬殑緙栫爜闃舵鏄潪甯稿繀瑕佺殑銆傜劧鑰岋紝鍦ㄤ竴浜涘湴鏂癸紝姣斿錛岀‖浠墮┍鍔ㄧ▼搴忋佹搷浣滅郴緇熷簳灞傦紝鎴栬呯▼搴忎腑緇忓父闇瑕佹墽琛岀殑浠g爜錛岀粨鏋勫寲紼嬪簭璁捐鐨勮繖浜涗紭鐐規湁鏃跺氨浼氳瀹冪殑浣庢晥鐜囨墍鎶圭厼銆傚彟澶栵紝濡傛灉浣犳兂鐪熸鍦版帶鍒惰嚜宸辯殑紼嬪簭錛屽彧鐭ラ亾婧愪唬鐮佺駭鐨勮皟璇曟槸榪滆繙涓嶅鐨勩?/p>
嫻簛鐨勪漢鍠滄璇達紝鐢–++鍐欑▼搴忚凍澶熶簡錛岀敋鑷寵錛屼粬涓嶄粎浠呮帉鎻++錛岃屼笖綺鵑歋TL銆丮FC銆傛垜涓嶈禐鎴愯繖涓鐐癸紝鎺屾彙涓婇潰鐨勯偅浜涙槸姣忎竴涓紪紼嬩漢鍛橀兘搴旇鍋氬埌鐨勶紝鐒惰孋++鍙槸鎴戜滑"甯哥敤"鐨勪竴縐嶈璦錛屽畠涓嶆槸緙栫▼鐨勫叏閮ㄣ備綆灞傛鐨勫紑鍙戣呭枩嬈㈣錛屽樋錛孋++鏄涔堢殑寮哄ぇ錛屽畠鍙互鍋氫換浣曚簨鎯呪斺旇繖涓嶆槸浜嬪疄銆備究浜庣淮鎶ゃ佽皟璇曪紝榪欎簺紜疄鏄垜浠殑榪芥眰鐩爣錛屼絾鏄紝鍐欑▼搴忎笉鑳戒粎浠呰拷姹傝繖涓洰鏍囷紝鍥犱負鎴戜滑鏈緇堢殑鐩殑鏄弧瓚寵璁¢渶姹傦紝鑰屼笉鏄釜浜洪潪鐞嗘х殑鐞嗘兂銆?/p>
榪欎喚鏁欐潗閫傚悎宸茬粡瀛︿範榪囨煇縐嶇粨鏋勫寲紼嬪簭璁捐璇█鐨勮鑰呫傚叾鍐呭鍩轟簬鎴戝湪1995騫寸粰鍒漢璁茶堪姹囩紪璇█鏃舵墍鍐欑殑璁蹭箟銆傚綋鐒訛紝濡傚ぇ瀹舵墍甯屾湜鐨勶紝瀹冨寘鍚簡鏈鏂扮殑澶勭悊鍣ㄦ墍鏀寔鐨勭壒鎬э紝浠ュ強鐩稿簲鐨勫唴瀹廣傛垜鍋囧畾璇昏呭凡緇忕煡閬撲簡紼嬪簭璁捐鐨勪竴浜涘熀鏈蹇碉紝鍥犱負娌℃湁榪欎簺鏄棤娉曠悊瑙f眹緙栬璦紼嬪簭璁捐鐨勶紱姝ゅ錛屾垜甯屾湜璇昏呭凡緇忔湁浜嗘瘮杈冭壇濂界殑紼嬪簭璁捐鍩虹錛屽洜涓哄鏋滀綘緙轟箯瀵逛簬緇撴瀯鍖栫▼搴忚璁$殑璁よ瘑錛岀紪鍐欐眹緙栬璦紼嬪簭寰堝彲鑳藉緢蹇氨鐮村潖浜嗕綘鐨勭粨鏋勫寲緙栫▼涔犳儻錛屽ぇ澶ч檷浣庣▼搴忕殑鍙鎬с佸彲緇存姢鎬э紝鏈緇堣浣犵殑紼嬪簭闄蜂簬涓嶅緱涓嶅簾寮冪殑浠g爜鍫嗕箣涓?/p>
鍩烘湰涓婏紝榪欎喚鏂囨。鎾板啓鐨勭洰鏍囨槸灝藉彲鑳藉湴渚夸簬鑷銆備笉榪囷紝瀹冨浣犱篃鏈変竴浜涜姹傦紝灝界涓嶆槸寰堥珮錛屼絾鎴戣繕鏄己璋冧竴涓嬨?/p>
|
|
紲濇偍緙栫▼鎰夊揩錛?/p>
鍏堣涓鐐瑰拰瀹為檯緙栫▼鍏崇郴涓嶅お澶х殑涓滆タ銆傚綋鐒訛紝濡傛灉浣犺揩鍒囩殑鎯崇湅鍒版洿瀹炶川鐨勫唴瀹癸紝瀹屽叏鍙互鍏堣煩榪囪繖涓绔犮?/p>
閭d箞錛屾垜鎯沖彲鑳芥湁涓涓棶棰樺浜庡垵瀛︽眹緙栫殑浜烘潵璇撮潪甯擱噸瑕侊紝閭e氨鏄細
姹囩紪璇█鍒板簳鏄粈涔堬紵
姹囩紪璇█鏄竴縐嶆渶鎺ヨ繎璁$畻鏈烘牳蹇冪殑緙栫爜璇█銆備笉鍚屼簬浠諱綍楂樼駭璇█錛屾眹緙栬璦鍑犱箮鍙互瀹屽叏鍜屾満鍣ㄨ璦涓涓瀵瑰簲銆備笉閿欙紝鎴戜滑鍙互鐢ㄦ満鍣ㄨ璦鍐欑▼搴忥紝浣嗙幇鍦ㄩ櫎浜嗘病鏈夋眹緙栫▼搴忕殑閭d簺鐢佃剳涔嬪錛岀洿鎺ョ敤鏈哄櫒璇█鍐欒秴榪?000鏉′互涓婃寚浠ょ殑浜哄ぇ姒傚彧鑳界畻浣滈偅浜涜鎴戜滑鎴愪負鈥滃湥浜衡濈殑鐗虹壊鑰呬竴綾諱簡銆傛瘯绔燂紝璁板繂涓浜涚煭灝忕殑鍔╄絎︺佺敱鏈哄櫒鍘昏冭檻閭d簺鐞愮鐨勯厤浣嶈繃紼嬪拰媯鏌ラ敊璇紝姣旇蹇嗗ぇ閲忕殑闅忚綆楁満鑰屾敼鍙樼殑鍗佸叚榪涘埗浠g爜銆佸彲鑳藉紕閿欒屾病鏈変換浣曟彁紺鴻寮虹殑澶氥傜啛緇冪殑姹囩紪璇█緙栫爜鍛樼敋鑷沖彲浠ョ洿鎺ヤ粠鍗佸叚榪涘埗浠g爜涓鍑烘眹緙栬璦鐨勫ぇ鑷存剰鎬濄傚綋鐒訛紝鎴戜滑鏈夋洿濂界殑宸ュ叿鈥斺旀眹緙栧櫒鍜屽弽姹囩紪鍣ㄣ?/p>
綆鍗曞湴璇達紝姹囩紪璇█灝辨槸鏈哄櫒璇█鐨勪竴縐?span class="tip" id="oDiffOPCASM" title="">鍙互琚漢璇繪噦鐨勫艦寮?font style="BACKGROUND-COLOR: #d3d3d3">錛?/font>瀹為檯涓婄敤姹囩紪鍣ㄥ啓鍑虹殑鏈哄櫒鐮佷笌鍦ㄨ皟璇曞櫒涓敤瀹冮檮甯︾殑姹囩紪紼嬪簭鍐欏嚭鐨勬満鍣ㄧ爜榪樻槸鏈変竴浜涚粏寰樊鍒殑錛屽墠鑰呮洿澶э紝鐒惰屽嵈鍙兘鏇撮珮鏁堬紝鍥犱負姹囩紪鍣?strong>鑳藉灝嗕唬鐮佹斁緗埌閫傚悎澶勭悊鍣ㄧ殑鍦版柟錛?/strong>錛屽彧涓嶈繃瀹冩洿瀹規槗璁板繂銆傝嚦浜庡畯姹囩紪錛屽垯鏄寘鍚簡瀹忔敮鎸佺殑姹囩紪璇█錛岃繖鍙互璁╀綘緙栫▼鐨勬椂鍊欐洿涓撴敞浜庣▼搴忔湰韜紝鑰屼笉鏄繖浜庤綆楀拰閲嶅啓浠g爜銆?/p>
姹囩紪璇█闄や簡鏈哄櫒璇█涔嬪鏈鎺ヨ繎璁$畻鏈虹‖浠剁殑緙栫▼璇█銆傜敱浜庡畠濡傛鐨勬帴榪戣綆楁満紜歡錛屽洜姝わ紝瀹冨彲浠ユ渶澶ч檺搴﹀湴鍙戞尌璁$畻鏈虹‖浠剁殑鎬ц兘銆傜敤姹囩紪璇█緙栧啓鐨勭▼搴忕殑閫熷害閫氬父瑕佹瘮楂樼駭璇█鍜孋/C++蹇緢澶?-鍑犲嶏紝鍑犲崄鍊嶏紝鐢氳嚦鎴愮櫨涓婂崈鍊嶃傚綋鐒訛紝瑙i噴璇█錛屽瑙i噴鍨婰ISP錛屾病鏈夐噰鐢↗IT鎶鏈殑Java铏氭満涓繍琛岀殑Java絳夌瓑錛屽叾紼嬪簭閫熷害鏇?span class="tip" id="oOptimizeASM" title="">鏃犳硶錛?/font>榪欏彞璇濆亣瀹?strong>涓や釜紼嬪簭榪涜浜嗗悓絳夌▼搴︾殑浼樺寲錛屼竴涓啓鐨勪笉濂界殑姹囩紪紼嬪簭鍜屼竴涓啓鐨勫緢濂界殑C紼嬪簭鐩告瘮錛屾眹緙栫▼搴?/font>涓嶄竴瀹?/strong>鏇村揩銆?/font>錛?/strong>涓庢眹緙栬璦紼嬪簭鍚屾棩鑰岃 銆?/p>
姘歌繙涓嶈蹇借姹囩紪璇█鐨勯珮閫熴傚疄闄呯殑搴旂敤緋葷粺涓紝鎴戜滑寰寰浼氱敤姹囩紪褰誨簳閲嶅啓鏌愪簺緇忓父璋冪敤鐨勯儴鍒嗕互鏈熻幏寰楁洿楂樼殑鎬ц兘銆傚簲鐢ㄦ眹緙栦篃璁鎬笉鑳芥彁楂樹綘鐨勭▼搴忕殑紼沖畾鎬э紝浣嗚嚦灝戯紝濡傛灉浣犻潪甯稿皬蹇冪殑璇濓紝瀹冧篃涓嶄細闄嶄綆紼沖畾鎬э紱涓庢鍚屾椂錛屽畠鍙互澶уぇ鍦版彁楂樼▼搴忕殑榪愯閫熷害銆傛垜寮虹儓寤鴻鎵鏈夌殑杞歡浜у搧鍦ㄦ渶鍚嶳elease涔嬪墠瀵規暣涓唬鐮佽繘琛孭rofile錛屽茍閫傚綋鍦扮敤姹囩紪鍙栦唬閮ㄥ垎楂樼駭璇█浠g爜銆傝嚦灝戯紝姹囩紪璇█鐨勭煡璇嗗彲浠ュ憡璇変綘涓浜涙湁鐢ㄧ殑涓滆タ錛屾瘮濡傦紝浣犳湁澶氬皯涓瘎瀛樺櫒鍙互鐢ㄣ傛湁鏃訛紝鎵嬪伐鐨勪紭鍖栨瘮緙栬瘧鍣ㄧ殑浼樺寲鏇翠負鏈夋晥錛岃屼笖錛屼綘鍙互瀹屽叏鎺у埗紼嬪簭鐨勫疄闄呰涓恒?/p>
鎴戞兂鎴戝湪緗楀棪浜嗐傛諱箣錛屽湪鎴戜滑緇撴潫榪欎竴绔犱箣鍓嶏紝鎴戞兂璇達紝涓嶈鍦ㄤ紭鍖栫殑鏃跺欐妸甯屾湜瀹屽叏瀵勬墭鍦ㄧ紪璇戝櫒涓娾斺旂幇瀹炰竴浜涳紝鍐嶅ソ鐨勭紪璇戝櫒涔熶笉鍙兘鎬繪槸浜х敓鏈浼樼殑浠g爜銆?/p>
聽
]]>