CÓïÑÔº¯Êýµ÷ÓÃÔ¼¶¨
×ªÔØ×Ô£º
ܰÈÙ¼ÒÔ°blog
ÔÚCÓïÑÔÖУ¬¼ÙÉèÎÒÃÇÓÐÕâÑùµÄÒ»¸öº¯Êý£º
int function(int a,int b)
µ÷
ÓÃʱֻҪÓÃresult =
function(1,2)ÕâÑùµÄ·½Ê½¾Í¿ÉÒÔʹÓÃÕâ¸öº¯Êý¡£µ«ÊÇ£¬µ±¸ß¼¶ÓïÑÔ±»±àÒë³É¼ÆËã»ú¿ÉÒÔʶ±ðµÄ»úÆ÷Âëʱ£¬ÓÐÒ»¸öÎÊÌâ¾Í͹ÏÖ³öÀ´£ºÔÚCPUÖУ¬¼ÆËã
»úûÓа취֪µÀÒ»¸öº¯Êýµ÷ÓÃÐèÒª¶àÉÙ¸ö¡¢Ê²Ã´ÑùµÄ²ÎÊý£¬Ò²Ã»ÓÐÓ²¼þ¿ÉÒÔ±£´æÕâЩ²ÎÊý¡£Ò²¾ÍÊÇ˵£¬¼ÆËã»ú²»ÖªµÀÔõô¸øÕâ¸öº¯Êý´«µÝ²ÎÊý£¬´«µÝ²ÎÊýµÄ¹¤×÷±ØÐë
Óɺ¯Êýµ÷ÓÃÕߺͺ¯Êý±¾ÉíÀ´Ðµ÷¡£Îª´Ë£¬¼ÆËã»úÌṩÁËÒ»ÖÖ±»³ÆÎªÕ»µÄÊý¾Ý½á¹¹À´Ö§³Ö²ÎÊý´«µÝ¡£
Õ»ÊÇÒ»ÖÖÏȽøºó³öµÄÊý¾Ý½á¹¹£¬Õ»ÓÐÒ»¸ö´æ´¢Çø¡¢
Ò»¸öÕ»¶¥Ö¸Õë¡£Õ»¶¥Ö¸ÕëÖ¸Ïò¶ÑÕ»ÖеÚÒ»¸ö¿ÉÓõÄÊý¾ÝÏ±»³ÆÎªÕ»¶¥£©¡£Óû§¿ÉÒÔÔÚÕ»¶¥ÉÏ·½ÏòÕ»ÖмÓÈëÊý¾Ý£¬Õâ¸ö²Ù×÷±»³ÆÎªÑ¹Õ»(Push)£¬Ñ¹Õ»ÒÔºó£¬Õ»
¶¥×Ô¶¯±ä³ÉмÓÈëÊý¾ÝÏîµÄλÖã¬Õ»¶¥Ö¸ÕëÒ²ËæÖ®Ð޸ġ£Óû§Ò²¿ÉÒÔ´Ó¶ÑÕ»ÖÐÈ¡×ßÕ»¶¥£¬³ÆÎªµ¯³öÕ»(pop)£¬µ¯³öÕ»ºó£¬Õ»¶¥ÏµÄÒ»¸öÔªËØ±ä³ÉÕ»¶¥£¬Õ»¶¥Ö¸Õë
ËæÖ®Ð޸ġ£
º¯Êýµ÷ÓÃʱ£¬µ÷ÓÃÕßÒÀ´Î°Ñ²ÎÊýѹջ£¬È»ºóµ÷Óú¯Êý£¬º¯Êý±»µ÷ÓÃÒÔºó£¬ÔÚ¶ÑÕ»ÖÐÈ¡µÃÊý¾Ý£¬²¢½øÐмÆËã¡£º¯Êý¼ÆËã½áÊøÒԺ󣬻òÕßµ÷ÓÃÕß¡¢»òÕߺ¯Êý±¾ÉíÐ޸ĶÑÕ»£¬Ê¹¶ÑÕ»»Ö¸´Ô×°¡£
ÔÚ²ÎÊý´«µÝÖУ¬ÓÐÁ½¸öºÜÖØÒªµÄÎÊÌâ±ØÐëµÃµ½Ã÷ȷ˵Ã÷£º
µ±²ÎÊý¸öÊý¶àÓÚÒ»¸öʱ£¬°´ÕÕʲô˳Ðò°Ñ²ÎÊýѹÈë¶ÑÕ»
º¯Êýµ÷Óúó£¬ÓÉËÀ´°Ñ¶ÑÕ»»Ö¸´Ô×°
Ôڸ߼¶ÓïÑÔÖУ¬Í¨¹ýº¯Êýµ÷ÓÃÔ¼¶¨À´ËµÃ÷ÕâÁ½¸öÎÊÌâ¡£³£¼ûµÄµ÷ÓÃÔ¼¶¨ÓУº
stdcall
cdecl
fastcall
thiscall
naked call
stdcallµ÷ÓÃÔ¼¶¨
stdcall
ºÜ¶àʱºò±»³ÆÎªpascalµ÷ÓÃÔ¼¶¨£¬ÒòΪpascalÊÇÔçÆÚºÜ³£¼ûµÄÒ»ÖÖ½ÌѧÓüÆËã»ú³ÌÐòÉè¼ÆÓïÑÔ£¬ÆäÓï·¨ÑϽ÷£¬Ê¹Óõĺ¯Êýµ÷ÓÃÔ¼¶¨¾ÍÊÇ
stdcall¡£ÔÚMicrosoft
C++ϵÁеÄC/C++±àÒëÆ÷ÖУ¬³£³£ÓÃPASCALºêÀ´ÉùÃ÷Õâ¸öµ÷ÓÃÔ¼¶¨£¬ÀàËÆµÄºê»¹ÓÐWINAPIºÍCALLBACK¡£
stdcallµ÷ÓÃÔ¼¶¨ÉùÃ÷µÄÓ﷨Ϊ(ÒÔǰÎĵÄÄǸöº¯ÊýΪÀý£©£º
int __stdcall
function(int a,int b)
stdcallµÄµ÷ÓÃÔ¼¶¨Òâζ×Å£º1£©²ÎÊý´ÓÓÒÏò×óѹÈë¶ÑÕ»£¬2£©º¯Êý×ÔÉíÐ޸ĶÑÕ» 3)º¯ÊýÃû×Ô¶¯¼Óǰµ¼µÄÏ»®Ïߣ¬ºóÃæ½ô¸úÒ»¸ö@·ûºÅ£¬Æäºó½ô¸ú×ŲÎÊýµÄ³ß´ç
ÒÔÉÏÊöÕâ¸öº¯ÊýΪÀý£¬²ÎÊýbÊ×Ïȱ»Ñ¹Õ»£¬È»ºóÊDzÎÊýa£¬º¯Êýµ÷ÓÃfunction(1,2)µ÷Óô¦·Òë³É»ã±àÓïÑÔ½«±ä³É£º
push 2 µÚ¶þ¸ö²ÎÊýÈëÕ»
push 1 µÚÒ»¸ö²ÎÊýÈëÕ»
call function µ÷ÓòÎÊý£¬×¢Òâ´Ëʱ×Ô¶¯°Ñcs:eipÈëÕ»
¶ø¶ÔÓÚº¯Êý×ÔÉí£¬Ôò¿ÉÒÔ·ÒëΪ£º
push ebp ±£´æebp¼Ä´æÆ÷£
Ïà¹ØÎĵµ£º
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
#include <math.h>
#include <conio.h>
typedef struct {
short int pitch;
short int duration;
} NOTE;
NOTE notes[] = {{14, 500}, {16, 500}, {12, 500 ......
×Ô¶¯×ª»»×ñÑÒÔϹæÔò£º
1) Èô²ÎÓëÔËËãÁ¿µÄÀàÐͲ»Í¬£¬ÔòÏÈת»»³ÉͬһÀàÐÍ£¬È»ºó½øÐÐÔËËã¡£
2) ת»»°´Êý¾Ý³¤¶ÈÔö¼ÓµÄ·½Ïò½øÐУ¬ÒÔ±£Ö¤¾«¶È²»½µµÍ¡£ÈçintÐͺÍlongÐÍÔËËãʱ£¬ÏȰÑintÁ¿×ª³ÉlongÐͺóÔÙ½øÐÐÔËËã¡£
&n ......
CµÄÓÉÀ´
CÓïÑÔÊÇÓÉUNIXµÄÑÐÖÆÕßDennis RitchieºÍKen ThompsonÓÚ1970ÄêÑÐÖÆ³öµÄBÓïÑԵĻù´¡ÉÏ·¢Õ¹ºÍÍêÉÆÆðÀ´µÄ.
CµÄÌØµã
CÓïÑÔÊÇÒ»ÖÖÃæÏò¹ý³ÌµÄÓïÑÔ,ͬʱ¾ßÓлã±àÓïÑԺ͸߼¶ÓïÑÔµÄÓŵã.CÓïÑÔ¿ÉÒԹ㷺ӦÓÃÓÚ²»Í¬µÄ²Ù×÷ϵͳ,ÈçUNIX,DOS,Windows¼°LinuxµÈ.
CµÄ·¢Õ¹
1973Äê,CÓïÑÔµÚÒ»´Î±»ÓÃÀ´±àд²Ù×÷ϵͳ(Unix)µÄÄÚºË.Denn ......
ÎÒÊÇÒ»¸ö¼ÆËã»úרҵµÄ±¾¿ÆÉú£¬ÏÖÔÚÎÒÃǸոÕѧÍêÁËÊý¾Ý½á¹¹¡£¾Ý˵Êý¾Ý½á¹¹¶ÔÓÚÎÒÃDZà³ÌºÜÖØÒª£¬¿ÉÊÇÎÒÏÖÔÚ²»ÖªÔõô°ÑÊý¾Ý½á¹¹ºÍCÓïÑÔ½áºÏÆðÀ´£¬ÒÔ±ã¸üºÃµÄ½øÐÐcÓïÑÔ±à³Ì¡£ÓÐÄÄλ¸ßÊÖÖ¸µãÒ»¶þ£¬ÔÚÏ¸м¤²»¾¡£¡
......
¿ìËÙÅÅÐòµÄºËÐÄÔÚÓÚ·ÖÖÎ.
·ÖÖÎËã·¨:
1. È϶¨Ö»ÓÐÒ»¸öÔªËØ»òûÓÐÔªËØµÄÊý×éÊÇÓÐÐòµÄ.
2. ½«Êý×é°´ÕÕÒ»¸ö·Ö½çÖµ·ÖΪ×óÓÒÁ½²¿·Ö. ×óÃæËùÓÐÔªËØÖµ±È·Ö½çֵС, ÓÒÃæËùÓÐÔªËØÖµ±È·Ö½çÖµ´ó»òµÈÓÚ.
3. ½«×óÓÒÁ½²¿·Ö·Ö±ðÔÙ·ÖÖÎ, Ö±µ½Òª·ÖÖ§µÄ²¿·ÖÖ»ÓÐÒ»¸öÔªËØ»òûÓÐÔªËØ, ÄÇôÕû¸öÊý×é¾ÍÊÇÓÐÐòµÄÁË.
×÷Õß: selfimpr
²©¿Í: http ......