duī zhàn yì chū yuán lǐ
duī zhàn duī zhàn shì yī gè zài jì suàn jī kē xué zhōng jīng cháng shǐ yòng de chōu xiàng shù jù lèi xíng。 duī zhàn zhōng de wù tǐ jù yòu yī gè tè xìng : zuì hòu yī gè fàng rù duī zhàn zhōng de wù tǐ zǒng shì bèi zuì xiān ná chū lái, zhè gè tè xìng tōng cháng chēng wéi hòu jìn xiān chù (lifo) duì liè . duī zhàn zhōng dìng yì liǎo yī xiē cāo zuò . liǎng gè zuì zhòng yào de shì push hé pop。 push cāo zuò zài duī zhàn de dǐng bù jiā rù yī gè yuán sù。 pop cāo zuò xiāng fǎn, zài duī zhàn dǐng bù yí qù yī gè yuán sù, bìng jiāng duī zhàn de dà xiǎo jiǎn yī。
wèishénme shǐ yòng duī zhàn ?
xiàn dài jì suàn jī bèi shè jì chéng néng gòu lǐ jiě rén men tóu nǎo zhōng de gāo jí yǔ yán。 zài shǐ yòng gāo jí yǔ yán gòu zào chéng xù shí zuì zhòng yào de jì shù shì guò chéng (procedure) hé hán shù (function)。 cóng zhè yī diǎn lái kàn, yī gè guò chéng diào yòng kě yǐ xiàng tiào zhuǎn (jump) mìng lìng nà yàng gǎi biàn chéng xù de kòng zhì liú chéng, dàn shì yǔ tiào zhuǎn bù tóng de shì, dāng gōng zuò wán chéng shí, hán shù bǎ kòng zhì quán fǎn huí gěi diào yòng zhī hòu de yǔ jù huò zhǐ lìng。 zhè zhǒng gāo jí chōu xiàng shí xiàn qǐ lái yào kào duī zhàn de bāng zhù。 duī zhàn yě yòng yú gěi hán shù zhōng shǐ yòng de jú bù biàn liàng dòng tài fēn pèi kōng jiān, tóng yàng gěi hán shù chuán dì cān shù hé hán shù fǎn huí zhí yě yào yòng dào duī zhàn。
duī zhàn qū yù
duī zhàn shì yī kuài bǎo cún shù jù de lián xù nèi cún。 yī gè míng wéi duī zhàn zhǐ zhēn (sp) de jì cún qì zhǐ xiàng duī zhàn de dǐng bù。 duī zhàn de dǐ bù zài yī gè gù dìng de dì zhǐ。 duī zhàn de dà xiǎo zài yùn xíng shí yóu nèi hé dòng tài dì tiáozhěng。 cpu shí xiàn zhǐ lìng push hé pop, xiàng duī zhàn zhōng tiān jiā yuán sù hècóng zhōng yí qù yuán sù。 duī zhàn yóu luó ji duī zhàn zhēn zǔ chéng。 dāng diào yòng hán shù shí luó ji duī zhàn zhēn bèi yā rù zhàn zhōng, dāng hán shù fǎn huí shí luó ji duī zhàn zhēn bèi cóng zhàn zhòngdàn chū。 duī zhàn zhēn bāo kuò hán shù de cān shù, hán shù dì jú bù biàn liàng, yǐ jí huī fù qián yī gè duī zhàn zhēn suǒ xū yào de shù jù, qí zhōng bāo kuò zài hán shù diào yòng shí zhǐ lìng zhǐ zhēn (ip) de zhí。 duī zhàn jì kě yǐ xiàng xià zēngzhǎng ( xiàng nèi cún dī dì zhǐ ) yě kě yǐ xiàng shàng zēngzhǎng, zhè yǐ lài yú jù tǐ de shí xiàn。 zài wǒ men de lì zǐ zhōng, duī zhàn shì xiàng xià zēngzhǎng de。 zhè shì hěn duō jì suàn jī de shí xiàn fāng shì, bāo kuò intel, motorola, sparc hé mips chǔlǐ qì。 duī zhàn zhǐ zhēn (sp) yě shì yǐ lài yú jù tǐ shí xiàn de。 tā kě yǐ zhǐ xiàng duī zhàn de zuì hòu dì zhǐ, huò zhě zhǐ xiàng duī zhàn zhī hòu de xià yī gè kòngxián kě yòng dì zhǐ。 zài wǒ men de tǎo lùn dāng zhōng, sp zhǐ xiàng duī zhàn de zuì hòu dì zhǐ。 chú liǎo duī zhàn zhǐ zhēn (sp zhǐ xiàng duī zhàn dǐng bù dídí dī dì zhǐ ) zhī wài, wèile shǐ yòng fāng biàn hái yòu zhǐ xiàng zhēn nèi gù dìng dì zhǐ de zhǐ zhēn jiào zuò zhēn zhǐ zhēn (fp)。 yòu xiē wén zhāng bǎ tā jiào zuò jú bù jī zhǐ zhēn (lb-localbasepointer)。 cóng lǐ lùn shàng lái shuō, jú bù biàn liàng kě yǐ yòng sp jiā piān yí liàng lái yǐn yòng。 rán 'ér, dāng yòu zì bèi yā zhàn hé chū zhàn hòu, zhè xiē piān yí liàng jiù biàn liǎo。 jìn guǎn zài mǒu xiē qíng kuàng xià biān yì qì néng gòu gēn zōng zhàn zhōng de zì cāo zuò, yóu cǐ kě yǐ xiū zhèng piān yí liàng, dàn shì zài mǒu xiē qíng kuàng xià bù néng。 ér qiě zài suǒ yòu qíng kuàng xià, yào yǐn rù kě guān de guǎn lǐ kāi xiāo。 ér qiě zài yòu xiē jī qì shàng, bǐ rú intel chǔlǐ qì, yóu sp jiā piān yí liàng fǎng wèn yī gè biàn liàng xū yào duō tiáo zhǐ lìng cái néng shí xiàn。 yīn cǐ, xǔ duō biān yì qì shǐ yòng dì 'èr gè jì cún qì, fp, duì yú jú bù biàn liàng hé hán shù cān shù dōukě yǐ yǐn yòng, yīn wéi tā men dào fp de jù lí bù huì shòu dào push hé pop cāo zuò de yǐng xiǎng。 zài intelcpu zhōng, bp(ebp) yòng yú zhè gè mùdì。 zài motorolacpu zhōng, chú liǎo a7( duī zhàn zhǐ zhēn sp) zhī wài de rèn hé dì zhǐ jì cún qì dōukě yǐ zuò fp。 kǎo lǜ dào wǒ men duī zhàn de zēngzhǎng fāng xiàng, cóng fp de wèi zhì kāi shǐ jì suàn, hán shù cān shù de piān yí liàng shì zhèng zhí, ér jú bù biàn liàng de piān yí liàng shì fù zhí。 dāng yī gè lì chéng bèi diào yòng shí suǒ bì xū zuò de dì yī jiàn shì shì bǎo cún qián yī gè fp( zhè yàng dāng lì chéng tuì chū shí jiù kě yǐ huī fù )。 rán hòu tā bǎ sp fù zhì dào fp, chuàng jiàn xīn de fp, bǎ sp xiàng qián yí dòng wéi jú bù biàn liàng bǎo liú kōng jiān。 zhè chēng wéi lì chéng de xù mù (prolog) gōng zuò。 dāng lì chéng tuì chū shí, duī zhàn bì xū bèi qīng chú gān jìng, zhè chēng wéi lì chéng de shōu wěi (epilog) gōng zuò。 intel de enter hé leave zhǐ lìng, motorola de link hé unlink zhǐ lìng, dōukě yǐ yòng yú yòu xiào dì xù mù hé shōu wěi gōng zuò。
duī zhàn yì chū
duī zhàn yì chū jiù shì bù gù duī zhàn zhōng fēn pèi de jú bù shù jù kuài dà xiǎo, xiàng gāi shù jù kuài xiě rù liǎo guò duō de shù jù, dǎo zhì shù jù yuè jiè, jiēguǒ fù gài liǎo lǎo de duī zhàn shù jù。 huò zhě jiě shì wéi zài cháng zì fú chuàn zhōng qiàn rù yī duàn dài mǎ, bìng jiāng guò chéng de fǎn huí dì zhǐ fù gài wéi zhè duàn dài mǎ de dì zhǐ, zhè yàng dāng guò chéng fǎn huí shí, chéng xù jiù zhuǎn 'ér kāi shǐ zhí xíng zhè duàn zì biān de dài mǎ liǎo . |