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

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

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

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

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

褰撶劧錛宒x銆乧x涓殑鍐呭灝嗗垎鍒槸000ah鍜?234h銆?/p>
娉ㄦ剰錛屾渶鍚庤繖寮犲浘涓紝鎴戞病鏈夋姽鍘?234h鍜?00ah錛屽洜涓篜OP鎸囦護(hù)騫朵笉浠庡唴瀛樹(shù)腑鎶瑰幓鏁板箋備笉榪囧敖綆″姝わ紝鎴戜釜浜轟粛鐒墮潪甯稿弽瀵圭戶緇嬌鐢ㄨ繖涓や釜鏁幫紙浣犲彲浠ラ氳繃淇敼SP鏉ュ啀嬈OP瀹冧滑錛夛紝鐒惰岃繖寰堝鏄撳鑷撮敊璇?/p>
涓瀹氳淇濊瘉鍫嗘爤孌墊湁瓚沖鐨勭┖闂存潵鎵ц涓柇錛屼互鍙?qiáng)鍏朵粬涓浜涢殣寮忕殑鍫嗘爤鎿嶄綔銆備粎浠呯粺璁USH鐨勬暟閲忓茍鎹璁$畻鍫嗘爤鎵闇鐨勫ぇ灝忓緢鍙兘閫犳垚闂銆?/p>
CALL鎸囦護(hù)灝嗚繑鍥炲湴鍧鏀懼埌鍫嗘爤涓傜粷澶у鏁癈/C++緙栬瘧鍣ㄦ彁渚涗簡(jiǎn)鈥滃爢鏍堟鏌モ濊繖涓紪璇戦夐」錛屽叾浣滅敤鍦ㄤ簬淇濊瘉C紼嬪簭孌典腑娌℃湁蹇樿瀵瑰爢鏍堜腑澶氫綑鐨勬暟鎹繘琛屾竻鐞嗭紝浠庤屼繚璇佽繑鍥炲湴鍧鏈夋晥銆?/p>
鏈珷涓粙緇嶄簡(jiǎn)鍐呭瓨鐨勬搷浣滅殑涓浜涘叆闂ㄧ煡璇嗐傞檺浜庣瘒騫咃紝鎴戜笉鎵撶畻灞曞紑緇嗚鎸囦護(hù)錛屽cmps*錛宭ods*錛宻tos*錛岀瓑絳夈傝繖浜涙寚浠ょ殑鐢ㄦ硶鍜屽墠闈粙緇嶇殑movs*鍩烘湰涓鏍鳳紝鍙槸鏈変笉鍚岀殑浣滅敤鑰屽凡銆?/p>