x86涓嶢RM涔嬩簤锛屽凡缁忚疮绌夸簡寰堥暱鏃堕棿锛岃繃鍘讳竴鐩存槸x86鏋舵瀯姣旇緝鍙楀埌甯傚満鍜屽紑鍙戣€呯殑娆㈣繋銆備絾鏄嚜浠庣Щ鍔ㄤ簰鑱旂綉銆佺墿鑱旂綉鍜岃竟缂樿绠楀叴璧蜂箣鍚庯紝ARM浼间箮宸茬粡鎵惧埌鏈€閫傚悎鑷繁鐢熷瓨鐨勫湡澹ゃ€侟/p>
鏋舵瀯涔嬩簤鐨勫钩鍙版妧鏈嫄鐐癸紝宸茬劧鏉ヤ复銆侟/p>
鐜板湪锛屾瘡涓汉鎵嬩笂閮芥湁涓€鍙版櫤鑳借绠楃粓绔紝绉诲姩搴旂敤閫愭笎浜戝寲锛?G 鍌敓浜嗕簯娓告垙鐨勮癁鐢烕Web 搴旂敤鐨勫姞瀵嗘€ц秺鏉ヨ秺閲嶈锛孒TTPS 娴侀噺瓒婃潵瓒婂ぇ;澶ф暟鎹垎甯冨紡骞惰璁$畻鎴愪负涓绘祦绛夛紝杩欎簺閮借 x86 鏋舵瀯鐨勪笉瓒抽€愭笎鏄鹃湶鍑烘潵銆侟/p>
鎵€浠ユ墠浼氭湁鐜板湪鎵€閬囧埌鐨勬儏鍐碉紝鍗充笉寰椾笉浠巟86涓婄殑搴旂敤杩佺Щ鑷矨RM涓娿€備絾涔熸鍥犱负杩欐槸涓や釜瀹屽叏涓嶅悓鐨勫钩鍙帮紝鎵€浠ュ湪杩佺Щ杩囩▼涓細閬囧埌鍚勭鍚勬牱鐨勯棶棰樸€傝繖涔熸槸DevRun 寮€鍙戣€呮矙榫欌€撻鏈熴€愰箯鍩庡疄楠屽 & 鍗庝负椴查箯涓撳満銆戜腑鎵€閲嶇偣璁插埌鐨勯棶棰樹箣涓€銆侟/p>
浠ヤ笅鍐呭缁忕敱InfoQ缂栬緫鏁寸悊鑷狣evRun 寮€鍙戣€呮矙榫欍€愰箯鍩庡疄楠屽 & 鍗庝负椴查箯涓撳満銆戜腑寮犳案姝e拰鏉ㄥ皯娲€佸笀鐨勫垎浜€侟/p>
榀ら箯杞欢杩佺Щ姒傝堪鍜屾柟娉曡
棣栧厛瑕佹悶鎳傦細涓轰粈涔堣杩佺Щ锛烖/strong>
涓婂浘鎵€绀轰负绋嬪簭鎵ц鐨勮繃绋嬪拰瀵瑰簲鐨勮绠楁爤銆備换浣曚竴鍙拌绠楁満閮芥槸鐢辩‖浠跺拰杞欢缁勬垚鐨勶紝绫讳技浜庢渶搴曞眰鐨勫熀纭€鐗╃悊鍘熸潗鏂欍€佹櫠浣撶銆佸瘎瀛樺櫒銆佸井鏋舵瀯绛夐兘灞炰簬纭欢灞傞潰銆傝€岃蒋浠跺眰闈㈠垯鐗规寚鐢遍珮绾ц瑷€銆佹眹缂栬瑷€寮€鍙戠殑搴旂敤绋嬪簭銆傝鎵ц杩欎簺搴旂敤绋嬪簭锛岄渶瑕佸簳灞侰PU鏀寔鐢辨眹缂栧櫒褰㈡垚浜岃繘鍒剁殑鏈哄櫒鐮?鐢辨寚浠ゅ拰鏁版嵁缁勬垚)鍘昏繍琛屻€侟/p>
鍥犳灏遍渶瑕佸簳灞傝绠楀钩鍙拌兘澶熸敮鎸佽CPU鐨勬寚浠ゆ墠鍙互锛岃繖涔熸槸鍦▁86鍜岄膊楣忕紪璇戠殑鍖哄埆涔嬪銆侟/p>
鍦▁86鍜岄楣忎笂缂栬瘧涔嬪悗鐨勬寚浠ゅ樊寮傛槸鍝簺?鍙互鍙傜収涓嬪浘宸︿晶锛屾樉鑰屾槗瑙佽繖鏄竴濂楅潪甯哥畝鍗曠殑浠g爜锛屽垎鍒湪x86鍜岄楣忎笂缂栬瘧涔嬪悗褰㈡垚涓夌偣鎸囦护宸紓锛欬/p>
棣栧厛鏄眹缂栦笉鍚岋紝x86涓婃槸涓ゆ潯mov鎸囦护锛岄€氳繃鎶夾鍜孊鐨勫彉閲忎粠鍐呭瓨褰撲腑鍙栧埌瀵勫瓨鍣紝骞跺皢涓ゅ€肩浉鍔狅紝鍐嶇敱涓€鏉ov鎸囦护鍐欏洖鍐呭瓨;榀ら箯涓婂垯鏄€氳繃涓ゆ潯ldr鎸囦护銆佷竴鏉dd鎸囦护浠ュ強涓€鏉tr鎸囦护瀹屾垚鏁翠釜杩囩▼銆侟/p>
鍏舵鏄寚浠ら暱搴︿笉鍚岋紝x86涓妋ov鎸囦护鏄?4浣嶇殑锛宭dr鎸囦护鏄?6浣嶇殑锛屽湪榀ら箯涓婂垯閮芥槸32浣岥绗笁鍒欐槸瀵勫瓨鍣ㄤ笉鍚岋紝x86鍜岄膊楣忓鐞嗗櫒浣跨敤鐨勫悜閲忓瘎瀛樺櫒涓嶅悓锛屽叾鍚戦噺鎸囦护绾т篃瀛樺湪宸紓銆侟/p>
椴查箯澶勭悊鍣ㄤ笌x86澶勭悊鍣ㄧ殑鎸囦护宸紓
杩欎篃姝f槸鍋氳縼绉荤殑鍘熷洜锛屽洜涓哄湪x86涓婃墍缂栬瘧鍑烘潵鐨勫簲鐢ㄧ▼搴忓洜涓烘湁浠ヤ笂涓夌偣鐨勪笉鍚岋紝鍥犳鏃犳硶鍦ㄩ膊楣忎笂鐩存帴杩愯銆侟/p>
浠巟86鍒伴膊楣忥紝杩佺Щ浜旀璧版垬鐣?/strong>
浠庡ぇ閲忕殑瀹炶返涓緱浠ユ€荤粨鍑轰竴浜涜寰嬪拰鏂规硶锛屼富瑕佸垎涓轰互涓?涓楠わ細
1銆佽縼绉诲噯澶囷紝涓昏浠ユ敹闆嗙‖浠朵俊鎭拰杞欢鏍堜俊鎭负涓伙紱
鍦ㄨ繖鏈熼棿锛屼富瑕佹敹闆嗙‖浠跺拰杞欢淇℃伅銆傜‖浠舵柟闈㈢殑淇℃伅涓昏鏄敹闆嗚姱鐗囧拰鏈嶅姟鍣ㄧ殑鍨嬪彿锛屼粠鑰屾柟渚挎彁渚涢厤缃€ц兘宸笉澶氱殑椴查箯鏈嶅姟鍣?鍏舵鏄敹闆嗚蒋浠舵爤淇℃伅锛屼富瑕佸垎涓烘搷浣滅郴缁熴€佽櫄鎷熸満銆佷腑闂翠欢銆佺紪璇戝櫒銆佷笂灞備緷璧栫殑寮€婧愯蒋浠躲€佸晢涓氳蒋浠躲€佷笟鍔¤蒋浠剁瓑淇℃伅銆侟/p>
2銆佽縼绉诲垎鏋愶紝瀵规敹闆嗗埌鐨勪俊鎭拰杞欢鏍堝仛鍒濇鍒嗘瀽锛屽垽鏂槸鍚︾湡姝i渶瑕佽縼绉伙紝璇勪及杩佺Щ鐨勫伐浣滈噺锛汓/strong>
涓嬪浘宸︿晶灏辨槸涓€涓潪甯稿畬鍠勭殑鎶€鏈爤锛屽簳灞傛湁鑺墖锛屼腑闂村眰涓篛S銆佽櫄鎷熸満銆佺紪璇戝櫒绛夌浉瀵瑰簲鐨勮繍琛岀幆澧冦€備笂灞傛槸涓氬姟杞欢锛屽垎涓哄紑婧愩€佽嚜鐮斿拰鍟嗙敤杞欢銆侟/p>
寮€婧愯蒋浠剁殑杩佺Щ鐩稿杈冧负绠€鍗曪紝鍏朵腑涓€閮ㄥ垎寮€婧愯蒋浠跺湪ARM涓婂凡缁忚缂栬瘧濂界殑鍖咃紝鐩存帴涓嬭浇鍗冲彲銆傚嵆渚挎病鏈夌幇鎴愮殑缂栬瘧鎴愭灉锛岃嚜琛屼笅杞藉師鐮佽繘琛岀紪璇戜篃骞朵笉澶嶆潅鏂逛究;鑷爺杞欢鐨勮縼绉婚渶瑕佹敞鎰忚瑷€绫诲瀷鐨勫樊寮傦紝缂栬瘧鍨嬭瑷€鏄渶瑕侀噸鏂扮紪璇戜箣鍚庢墠鑳借繍琛屽湪鏂扮幆澧冧笂锛屼絾鏄浜庤В閲婂瀷鐨勮瑷€鏉ヨ灏辨病鏈夐噸鏂扮紪璇戠殑闇€瑕侊紝鍙鏇存崲鎵€渚濊禆鐨勮櫄鎷熸満灏卞彲浠?鍟嗙敤杞欢鍒欒緝涓洪夯鐑︿竴浜涳紝棣栧厛鍙互閫氳繃鑱旂郴鍘傚晢鑾峰彇瀹冨搴擜RM鏋舵瀯涓嬬殑杞欢鐗堟湰锛屽鏋滄病鏈夌殑璇濆氨闇€瑕佸鎵炬湁绫讳技鍔熻兘鐨勮蒋浠跺仛鏇挎崲銆侟/p>
姝ゅ鍍忚繍琛岀幆澧冦€佽櫄鎷熸満銆佺紪璇戝櫒鍜屾搷浣滅郴缁熻繖浜涗篃鏄杩涜鏇挎崲锛屼絾鏄繖浜涘苟闈為渶瑕侀噸鏂扮紪璇戯紝鍥犱负鍦ㄥ崕涓轰簯榀ら箯璁哄潧鍐呮湁杞欢浠撳簱锛屽彲浠ョ洿鎺ュ幓杞欢浠撳簱涓嬭浇鐢遍膊楣忓畼鏂规墍鍋氱殑缁忚繃楠岃瘉鐨勭増鏈€侟/p>
3銆佺紪璇戣縼绉伙紝鍒嗘瀽瀹屾垚涔嬪悗灏卞彲浠ョ潃鎵嬭縼绉诲伐浣滐紝涓昏鍒嗕负浠g爜杩佺Щ鍜岃蒋浠跺寘杩佺Щ锛汓/strong>
杩佺Щ鍒嗘瀽涔嬪悗鍙互杩涜浠g爜鐨勭紪璇戝拰鎵撳寘锛岀紪璇戜富瑕佹秹鍙婁袱涓埌浠g爜杩佺Щ鍜岃蒋浠跺寘杩佺Щ銆侟/p>
鍏朵腑浠g爜杩佺Щ闇€瑕佸尯鍒嗚瑷€锛屽儚C/C++鍜屾寚浠ょ骇鐨勫樊寮傛槸姣旇緝澶х殑锛屽洜姝ゅ湪x86涓婄紪璇戝嚭鏉ョ殑搴旂敤绋嬪簭鏃犳硶鍦ㄥ湪榀ら箯涓婄洿鎺ヤ娇鐢紝鍥犳瑕佸湪榀ら箯涓婇噸鏂扮紪璇戞墠鍙互銆傛澶栫紪璇戝瀷璇█鎵€娑夊強鐨勪慨鏀圭偣鐩稿鏇村锛屽洜涓轰唬鐮佸綋涓湁鍙兘钑村惈涓€浜涘鎸囦护绾х浉鍏崇殑瀹忓畾涔夋垨鑰呭姛鑳芥€у嚱鏁?浣嗘槸瀵逛簬Java/Python杩欑瑙i噴鍨嬭瑷€鏉ヨ灏变細绠€鍗曞緢澶氥€傚鏋滄槸绾疛ava/Python鐨勭▼搴忥紝灏辨棤椤诲仛缂栬瘧锛屽洜涓烘湰韬殑铏氭嫙鏈哄凡缁忓鎸囦护绾ц繘琛屼簡灞忚斀锛屽彧瑕佹洿鎹㈣櫄鎷熸満灏卞彲浠ャ€侟/p>
瀵逛簬杞欢鍖呰縼绉绘潵璇达紝棣栧厛闇€瑕佹壂鎻忚杞欢鍖呮槸鍚﹀瓨鍦ㄤ緷璧栧簱鎴栬€呬緷璧栫殑鍙墽琛岀▼搴忥紝杩欎簺搴撳拰鍙墽琛岀▼搴忓鏋滄槸鐢–璇█鍐欑殑鏄渶瑕侀噸鏂扮紪璇戠殑锛岀紪璇戜箣鍚庨噸鏂版妸杞欢鍖呮墦鍖呭嵆鍙€侟/p>
4銆佹€ц兘璋冧紭锛岄獙璇佸畬鎴愪箣鍚庡鎬ц兘鎸囨爣杩涜娴嬭瘯锛岃繘琛屾€ц兘璋冧紭锛汓/strong>
鐢变簬澶ч儴鍒嗚蒋浠跺鎬ц兘閮芥湁瑕佹眰锛屽洜姝ゅ湪杩佺Щ瀹屾垚涔嬪悗闇€瑕佸鎬ц兘杩涜璋冧紭锛岃繖閲屾€荤粨浜嗐€愬缓绔嬪熀鍑?鍘嬪姏娴嬭瘯-纭畾鐡堕-瀹炴柦浼樺寲-纭鏁堟灉銆戣繖浜旀娉曘€侟/p>
棣栧厛闇€瑕佸缓绔嬭皟浼樺熀鍑嗭紝璇ュ熀鍑嗘牴鎹綋鍓嶇殑纭欢閰嶇疆銆佺粍缃戙€佹祴璇曟ā鍨嬫潵鍋氱患鍚堣瘎浼帮紝浠ュ缓绔嬪悎鐞嗙殑鏉℃湁鐩爣;鍏舵鍦ㄨ皟浼樼洰鏍囧缓绔嬪悗锛岄€氳繃鍘嬫祴宸ュ叿瀵硅蒋浠舵垨绯荤粺杩涜鍔犲帇锛屽湪鍔犲帇杩囩▼涓毚闇叉€ц兘鐡堕锛岀‘瀹氱摱棰堜箣鍚庡鐡堕杩涜浼樺寲;绗洓锛屾敞鎰忓湪浼樺寲杩囩▼涓鍙婃椂璁板綍锛屽洜涓轰紭鍖栧苟涓嶄竴瀹氭槸姝e悜鐨勶紝鍑虹幇璐熷悜浼樺寲鏃堕渶瑕佸強鏃跺洖閫€;鏈€鍚庡湪浼樺寲鎺柦瀹炴柦瀹屾垚鍚庯紝闇€瑕侀噸鏂板惎鍔ㄥ帇鍔涙祴璇曞伐鍏蜂互纭浼樺寲鏁堟灉銆侟/p>
杩欎釜杩囩▼骞堕潪涓€韫磋€屽氨锛屾湁鍙兘鍏朵腑鏌愪釜姝ラ闇€瑕佺粡杩囧娆″惊鐜箣鍚庢墠鑳借揪鍒版棦瀹氱洰鏍囥€侟/p>
5銆佹祴璇曚笌璁よ瘉锛屼繚闅滃晢鐢ㄤ笂绾裤€侟/strong>
鍜屾棩甯歌蒋浠跺紑鍙戜竴鏍凤紝闇€瑕佸鍏惰繘琛屽姛鑳姐€佹€ц兘銆侀暱绋崇瓑灞傚眰娴嬭瘯锛屼互纭繚鑳借揪鍒板晢鐢ㄦ爣鍑嗐€傛澶栦篃鍙互鎷胯蒋浠跺拰绯荤粺鍒伴膊楣忎笂鍋氶楣忓睍缈呰璇侊紝鍏跺彲浠ユ墿灞曞簲鐢ㄧ殑杞欢浣跨敤绌洪棿骞惰兘澶熷姞鍏ラ膊楣忕敓鎬併€侟/p>
C/C++浠g爜缂栬瘧鍘熺悊鍙婃瀯寤烘祦绋婞/strong>
缂栬瘧鍨嬭瑷€锛屼粠婧愮爜鍒板彲鎵ц绋嬪簭鐨勫巻绋婞/strong>
C銆丆++銆丟O閮芥槸闈炲父鍏稿瀷鐨勭紪璇戝瀷璇█锛岀紪璇戝瀷璇█鎵€寮€鍙戠殑绋嬪簭浠巟86骞冲彴绉绘鍒伴楣忓钩鍙版椂涓€鑸兘闇€瑕侀噸鏂扮紪璇戞墠鑳借繍琛岋紝杩欑偣涓婃枃涔熷凡缁忔彁鍒颁簡銆傞偅涔堜负浠€涔堥渶瑕侀噸鏂扮紪璇戞墠鑳借繍琛屽憿?鎺ヤ笅鏉ヤ妇涓畝鍗曠殑渚嬪瓙銆侟/p>
涓婂浘涓簍est.c鐨勬簮鐮佹枃浠讹紝棣栧厛缁忚繃棰勫鐞嗭紝鎶婁唬鐮侀噷闈互#鍙峰紑澶寸殑浠g爜鐗囨柇缂栬瘧涓洪澶勭悊鏂囦欢锛岄澶勭悊鏂囦欢鍐嶇粡鐢辩紪璇戠敓鎴愭眹缂栦唬鐮併€傛眹缂栦唬鐮佺粡杩囨眹缂栧櫒鐢熸垚鐩爣鏂囦欢锛岃繖涔熷氨鏄父璇寸殑鏈哄櫒鐮併€傜劧鑰屾満鍣ㄧ爜鏄棤娉曠洿鎺ヨ繍琛岀殑锛屾墍浠ラ渶瑕佽仈鎺ュ姩鎬佸簱鎴栬€呴潤鎬佸簱鏉ユ渶缁堢敓鎴愬彲鎵ц鏂囦欢銆侟/p>
缂栬瘧鏋勫缓鐨勮繃绋婞/strong>
浠庝唬鐮佸伐绋嬬殑瑙掑害鐪嬶紝鍏跺彲浠ュ垎涓轰袱绫伙細涓€绫绘槸缂栬瘧鏋勫缓鐨勮剼鏈紝浜屾槸婧愮爜銆傚湪缂栬瘧鏋勫缓鐨勮剼鏈腑涓€鑸細瀛樺湪Makefile銆乧makelist绛変竴绯诲垪鑴氭湰鏂囦欢锛孋鍜孋++鐨勬簮鐮佷竴鑸槸鏈塻rc銆乼ests绛夋枃浠躲€侟/p>
閭d箞缂栬瘧鏋勫缓鑴氭湰绫绘枃浠跺湪杩佺Щ杩囩▼涓細娑夊強鍝簺鍥犵礌?涓€鑸細娑夊強鍒扮紪璇戦€夐」鐨勭Щ妞嶏紝婧愮爜绫绘枃浠朵細娑夊強鍒扮紪璇戝畯锛屽彟澶栧彲鑳借繕浼氭湁缂栬瘧鍣ㄨ嚜甯︾殑Builtin鍑芥暟鐨勭Щ妞嶃€丼SE intrinsic鍑芥暟绉绘绛夈€傞渶瑕佸己璋冪殑鏄繖閲屾彁鍒扮殑鏄縼绉昏繃绋嬩腑鍙兘浼氭秹鍙婂埌鐨勭Щ妞嶉」锛屼絾鍦ㄥ疄闄呰縼绉昏繃绋嬩腑鍙兘鍙渶瑕佺紪璇戦€夐」鎴栦慨鏀圭紪璇戝畯灏卞彲浠ャ€侟/p>
C/C++浠g爜缂栬瘧鏋勫缓杩囩▼
棣栧厛瑕佷粠鑾峰彇婧愮爜寮€濮嬶紝鍙互閫氳繃GitHub绛夊紑婧愮ぞ鍖烘潵鑾峰彇;鍏舵闇€瑕侀€夋嫨鎵€闇€鐨勭紪璇戠幆澧冿紝灏辨槸瀹夎缂栬瘧鍣╣cc绛堺涔嬪悗鏍规嵁婧愮爜鐨勭紪璇戣剼鏈敓鎴怣akefile鏂囦欢锛屽啀鐢∕akefile缂栬瘧鐢熸垚鍙寔缁枃浠躲€傚鏋滆繖閮ㄥ垎浠g爜涔嬩腑鏈変緷璧杧86骞冲彴鐨凷O搴擄紝閭d箞杩欓儴鍒嗙殑渚濊禆搴撴槸闇€瑕侀噸鏂扮紪璇戞浛鎹㈢殑銆傚湪缂栬瘧瀹屾垚涔嬪悗杩涜瀹夎閮ㄧ讲锛屼箣鍚庤繘鍏ュ埌瀹為檯鐨勭郴缁熶箣涓繘琛屾祴璇曘€侟/p>
鍏稿瀷鐨勭Щ妞嶇被闂
鍦ㄥ缂栬瘧鏋勫缓鐨勬祦绋嬫湁鍩烘湰鐞嗚В鍚庯紝灏遍渶瑕佹繁鍏ヤ簡瑙e疄闄呰縼绉昏繃绋嬩腑鎵€娑夊強鍒扮殑鍚勭绉绘椤广€侟/p>
1.缂栬瘧鑴氭湰鍜岀紪璇戦€夐」鐨勭Щ妞岦/strong>
浠ヤ笂鍥句负渚嬶紝鍏朵腑x86涓?m64浠g爜鐨勪富瑕佸姛鑳芥槸灏嗗簲鐢ㄧ▼搴忕紪璇戜负64浣嶏紝瀵瑰簲鍒伴楣忎笂鏄敤-mabi=lp64鐨勭紪璇戦€夐」銆備笂鏂囨湁鎻愬埌杩欑紪璇戦€夐」闇€瑕佸湪鑴氭湰涓慨鏀癸紝瀵瑰簲鐨凜makelists閲屾湁鍙兘瀛樺湪add_defin绛夊绉嶅畾涔夋柟寮忋€侟/p>
鍐嶇湅甯哥敤鐨勬暟鎹被鍨嬬Щ妞嶏紝浼楁墍鍛ㄧ煡x86骞冲彴涓婇粯璁ょ殑char绫诲瀷鏄竴绉嶆湁绗﹀彿鐨勭被鍨嬶紝瀵瑰簲鍒伴楣忎笂鍒欐槸鏃犵鍙风被鍨嬨€傚洜姝ゅ湪绉绘杩囩▼涓渶瑕佹樉绀哄畾涔夊苟灏哻har绫诲瀷瀹氫箟涓烘湁绗﹀彿銆備竴绉嶆柟娉曟槸鍦ㄦ簮浠g爜閲屽姞涓妔igned char锛屼絾鏄己鐐规槸鍙兘鏀逛笉鍏ㄤ粠鑰屽紩鍙戜竴浜涗笉鍙鐭ョ殑闂銆傚彟涓€绉嶆柟娉曟槸鐩存帴鐢╢signed-char鏉ヤ慨鏀癸紝鍦ㄤ笉鍚屾灦鏋勪笅宸紓鍖栫殑缂栬瘧閫夐」涔熷彲浠ラ€氳繃gcc鏂囨。杩涜鏌ヨ銆侟/p>
2.缂栬瘧瀹忕殑绉绘
濡傛灉鏈夌浉鍚岀殑浠g爜鐗囨柇鍦ㄤ笉鍚屽钩鍙颁笅鍙兘浼氬瓨鍦ㄤ笉鍚屽垎鏀紝闇€瑕佸皢涓嶅悓鏋舵瀯涓嬬殑鎬ц兘浼樺娍鍙戞尌鍒拌緝楂樻按骞炽€備絾鏄浜庣紪璇戝櫒鏉ヨ锛屽浣曟墠鑳藉緱鐭ヨ缂栬瘧鍝簺鍒嗘敮浠g爜鍛?杩欏氨鏄紪璇戝畯鐨勪綔鐢ㄣ€侟/p>
濡傛灉澶у瀵瑰ぇ鍨嬪紑婧愯蒋浠舵湁鎺ヨЕ杩囷紝鐩镐俊瀵逛笂鍥捐繖浜涚紪璇戦€夐」閮戒笉浼氶檶鐢熴€俫cc缂栬瘧鍣ㄦ墍鑷甫鐨剎86缂栬瘧閫夐」灏辨槸x86_64锛屽搴斿埌榀ら箯骞冲彴涓婃槸ark-64銆傚綋鐒堕櫎浜唃cc缂栬瘧鍣ㄨ嚜甯︾殑鑷畾涔夊畯锛屽湪瀹為檯鍦烘櫙涓篃闇€瑕佸鑷爺浠g爜杩涜鑷畾涔夛紝鍦ㄩ膊楣忎笂涔熸槸闇€瑕佽繘琛岃嚜瀹氫箟鏇挎崲銆侟/p>
涓嶈繃閽堝缂栬瘧瀹忕殑鏇挎崲鍙槸鍏朵腑涓€涓柟闈紝鍏舵渶閲嶈鐨勬槸瀵圭紪璇戝畯涓嬮潰鐨勪唬鐮佸疄鐜扮Щ妞嶃€倄86浠g爜涓婃湁浜涚紪璇戝櫒鑷甫鑷畾涔夊畯锛屾瘮濡俿md灞炴€х浉鍏崇殑瀹忓湪x86涓婃槸SSE寮€澶寸殑瀹忥紝瀵瑰簲鍒伴楣忓钩鍙颁笂灏遍渶瑕佽嚜瀹氫箟瀹冪殑缂栬瘧瀹忓拰鎵€鐩稿搴旂殑鍒嗘敮銆侟/p>
3.Builtin鍑芥暟绉绘
Builtin鍑芥暟鏄紪璇戝櫒鑷甫鐨勫嚱鏁帮紝鍏跺湪瀹為檯杩佺Щ椤圭洰涓浉褰撳父瑙侊紝涓昏鏄痗rc32鏍¢獙鍊肩殑璁$畻銆傞渶瑕佺Щ妞嶇殑鏅€歜uiltin鍑芥暟瀹為檯骞朵笉澶氾紝澶ч儴鍒嗛渶绉绘鐨刡uiltin鍑芥暟闆嗕腑鍦⊿SE intrinsic鍑芥暟鍐呫€侟/p>
閫氳繃涓婂浘鍙互鐪嬪埌鍦▁86骞冲彴涓婂叾鍜屽湪榀ら箯骞冲彴涓婃槸绫讳技鐨勶紝浠庡懡鍚嶆潵鐪嬫湁宸紓鐨勫湴鏂瑰氨鍙瓨鍦ㄤ簬鏋舵瀯銆侟/p>
4.鍐呰仈姹囩紪鍑芥暟鐨勭Щ妞岦/strong>
鍐呰仈姹囩紪瀵逛簬閮ㄥ垎寮€鍙戣€呮潵璇村钩鏃舵帴瑙︾殑浼氭瘮杈冨皯锛屾墍浠ュ張鍙兘浼氭劅瑙夊埌闄岀敓銆侟/p>
涓婂浘鍒椾妇浜嗗皢瀛楄妭搴忚繘琛屽弽搴忕殑渚嬪瓙锛屾瘮濡?X56781314鍙嶅簭杈撳嚭鐨勬槸0X14137856锛寈86涓婂搴旂殑鏄痓swap鎸囦护锛岄楣忓搴旂殑鏄痳ev鎸囦护锛屽叾瀹冩湁浜涙搷浣滃拰瀵勫瓨鍣ㄩ兘鏄熀浜庡唴鑱旀眹缂栫殑璇硶瑙勫垯杩涜鏇挎崲鐨勩€備笂鍥剧殑鍙︿竴涓緥瀛愭槸Builtin鍑芥暟锛屽垪涓句簡鍐呰仈姹囩紪杞崲鐢ㄩ楣忎笂闈㈢殑Builtin鍑芥暟鍋氭浛鎹㈢殑渚嬪瓙銆傛瘮濡俻opcount鏄浜岃繘鍒舵暟閲岄潰鐨?杩涜璁℃暟锛屽搴斿埌榀ら箯骞冲彴涓婃墍鏇挎崲鐨勬槸popcountll銆侟/p>
5.SSE intrinsic鍑芥暟绉绘锛圫IMD鎶€鏈級
鍏充簬SSE intrinsic鍑芥暟鐨勭Щ妞嶏紝鍦ㄨ繖涔嬪墠闇€瑕佸厛浜嗚ВSIMD鐨勬妧鏈€係IMD(Single Instruction Multi Data)鏄竴绉嶅崟鎸囦护澶勭悊澶氭暟鎹祦鐨勫苟琛屽鐞嗘妧鏈紝鑳藉鍦ㄦ壒閲忔暟鎹搷浣滄椂杩涜鍚戦噺 鍖栬繍绠楀姞閫燂紝鍏锋湁杈冮珮鐨勬墽琛屾晥鐜囷紝鍦ㄥ濯掍綋澶勭悊銆佺煩闃佃繍绠楃瓑鍦烘櫙閮芥湁骞挎硾鐨勫簲鐢ㄣ€侟/p>
Intel鐨凷IMD鎵╁睍鎸囦护缁熺ОSSE锛屼富瑕佸垎涓轰笁绫.k?(繆?]})}2佞耊X蜢伙紝MMX鏄?4浣嶅瘎瀛樺櫒锛孲SE鍒癝SE4鏄?8浣嶇殑锛屼笁鏄疉VX256鍜孉VX512銆傞楣忓熀浜嶴IMD鐨勬妧鏈彂灞曟瘮杈冩垚鐔燂紝鐜板湪鏈変簺鍩轰簬寮€婧愰噺鐨凬EON搴撲富瑕佹槸鍦ㄥ浘璞″鐞嗗拰瑙嗛澶勭悊灞傞潰銆侟/p>
6.SSE intrinsic鍑芥暟绉绘锛圡MX/SSE锛堻/strong>
缁忚繃璋冪敤缂栬瘧鍣ㄥ氨鑳藉鍩轰簬C鍑芥暟璋冪敤瀹屾垚瀵筍IMD鎶€鏈殑搴旂敤锛屾瀬澶ф柟渚夸簡寮€鍙戣€呫€侟/p>
浠ヤ笂鍥句负渚嬶紝鍦▁86涓婄敤鐨勬槸-m64鐨勫悜閲忥紝add鏄叧閿瓧锛岃€屼笖杩欐槸鍔犳硶杩愮畻锛屽悗闈?2鏄暟鎹被鍨嬨€傚搴斿埌榀ら箯涓婃槸int32脳2鐒跺悗鍐嶅仛鍔犳硶杩愮畻锛岃繖甯哥敤鐨凜鍑芥暟瑙勫垯鏄被浼肩殑銆傞拡瀵筍SE鎸囦护锛屼粠鍐呭瓨涓姞杞?涓崟绮惧害娴偣鏁版嵁鍒板瘎瀛樺櫒锛寈86鏄痩oad锛屽搴斿埌榀ら箯鐢ㄧ殑鏄痸ld1q銆侟/p>
7.SSE intrinsic鍑芥暟绉绘锛圓VX锛堻/strong>
AVX鎸囦护鍜孧MX绫讳技锛屽彧涓嶈繃鍏朵綅鏁颁笉鍚屻€備互AVX鎸囦护浣跨敤浜?56浣嶅瘎瀛樺櫒杩愮畻涓轰緥锛屽悜閲廇鍜屽悜閲廈涓垎鍒瓨鍌ㄤ簡8涓崟 绮惧害娴偣鍨?32浣?銆傝鎸囦护灏嗗悜閲廇鍜屽悜閲廈涓殑8涓暟鍊煎垎鍒浉鍔狅紝骞跺皢缁撴灉浠ヨ繑鍥炲€肩殑褰㈠紡杩斿洖 (缁撴灉涓緷鐒舵槸8涓崟绮惧害娴偣鍨嬫暟鎹? 锛屾渶鍚庡啀浠庡悜閲忓瘎瀛樺櫒涓垎鍒彇鍑?涓崟绮惧害娴偣鏁扮疮鍔犲緱鍒扮粨鏋溿€侟/p>
瀵瑰簲鍒伴膊楣忔柟闈紝椴查箯澶勭悊鍣ㄩ噰鐢ㄧ簿绠€鎸囦护闆嗭紝浣跨敤128浣嶅瘎瀛樺櫒瀹炵幇SIMD(Single Instruction Multi Data)璁$畻銆傚湪瀹炵幇鏈緥16涓诞鐐规暟鐨勭浉鍔犳椂锛岄€氳繃涓ゆ潯vaddq_f32鎸囦护鏉ュ垎鍒畬鎴愶紝姣忔潯鎸囦护瀹屾垚涓ょ粍鍏?涓诞鐐规暟绠楋紝鏈€鍚庡啀浠庡悜閲忓瘎瀛樺櫒涓垎鍒彇鍑?涓诞鐐规暟绱姞銆侟/p>
鍐欏湪鏈€鍚嶞/strong>
瀵逛簬寮€鍙戣€呰€岃█锛屼唬鐮佸拰杞欢杩佺Щ鏄竴濂楀繀椤昏鎺屾彙鐨勬妧鑳姐€傚挨鍏舵槸鍚勭鏅鸿兘缁堢鏁伴噺鏆存定锛岀墿鑱旂綉椋為€熷彂灞曠殑褰撲笅锛寈86骞冲彴宸茬粡闅句互閫傚簲鍏ㄧ敓鎬佺殑鍙戝睍锛屼粠x86杩佺Щ鑷矨RM骞冲彴锛屾鏄幇鍦ㄧ殑澶у娍鎵€瓒嬨€傝€岄膊楣忕敓鎬侊紝鍒欎负姣忎竴浣嶆湁杩佺Щ闇€姹傜殑寮€鍙戣€呮彁渚涗簡鏈€渚垮埄鐨勫伐鍏峰拰鐜銆傛病鏈夊摢涓€娆惧钩鍙版槸鏈€濂界殑锛屽彧鏈夋渶閫傚悎涓氬姟鐨勯偅娆惧钩鍙帮紝浠巟86鍒癆RM锛岀瓟妗堟鍦ㄩ€愭笎娓呮櫚銆侟/p>
锛堟湰鍐呭灞炰簬缃戠粶杞浇锛屾枃涓秹鍙婂浘鐗囩瓑鍐呭濡傛湁渚垫潈锛岃鑱旂郴缂栬緫鍒犻櫎銆傚競鍦烘湁椋庨櫓锛岄€夋嫨闇€璋ㄦ厧锛佹鏂囦粎渚涘弬鑰冿紝涓嶄綔涔板崠鍙婃姇璧勪緷鎹€傦級
鍘熷垱鏂囩珷锛屼綔鑰咃細闄堟櫒锛屽鑻ヨ浆杞斤紝璇锋敞鏄庡嚭澶勶細https://www.kejixun.com/article/496791.html