第一篇:C++名字修飾規(guī)則
C++ 編譯器的函數(shù)名修飾規(guī)則
函數(shù)名字修飾(Decorated Name)方式
函數(shù)的名字修飾(Decorated Name)就是編譯器在編譯期間創(chuàng)建的一個(gè)字符串,用來(lái)指明函數(shù)的定義或原型。LINK程序或其他工具有時(shí)需要指定函數(shù)的名字修飾來(lái)定位函數(shù)的正確位置。多數(shù)情況下程序員并不需要知道函數(shù)的名字修飾,LINK程序或其他工具會(huì)自動(dòng)區(qū)分他們。當(dāng)然,在某些情況下需要指定函數(shù)的名字修飾,例如在C++程序中,為了讓LINK程序或其他工具能夠匹配到正確的函數(shù)名字,就必須為重載函數(shù)和一些特殊的函數(shù)(如構(gòu)造函數(shù)和析構(gòu)函數(shù))指定名字裝飾。另一種需要指定函數(shù)的名字修飾的情況是在匯編程序中調(diào)用C或C++的函數(shù)。如果函數(shù)名字,調(diào)用約定,返回值類型或函數(shù)參數(shù)有任何改變,原來(lái)的名字修飾就不再有效,必須指定新的名字修飾。C和C++程序的函數(shù)在內(nèi)部使用不同的名字修飾方式,下面將分別介紹這兩種方式。
1.C編譯器的函數(shù)名修飾規(guī)則
對(duì)于__stdcall調(diào)用約定,編譯器和鏈接器會(huì)在輸出函數(shù)名前加上一個(gè)下劃線前綴,函數(shù)名后面加上一個(gè)“@”符號(hào)和其參數(shù)的字節(jié)數(shù),例如 _functionname@number。__cdecl調(diào)用約定僅在輸出函數(shù)名前加上一個(gè)下劃線前綴,例如_functionname。__fastcall調(diào)用約定在輸出函數(shù)名前加上一個(gè)“@”符號(hào),后面也是一個(gè)“@”符號(hào)和其參數(shù)的字節(jié)數(shù),例如 @functionname@number
2.C++編譯器的函數(shù)名修飾規(guī)則
C++的函數(shù)名修飾規(guī)則有些復(fù)雜,但是信息更充分,通過(guò)分析修飾名不僅能夠知道函數(shù)的調(diào)用方式,返回值類型,參數(shù)個(gè)數(shù)甚至參數(shù)類型。不管 __cdecl,__fastcall還是__stdcall調(diào)用方式,函數(shù)修飾都是以一個(gè)“?”開(kāi)始,后面緊跟函數(shù)的名字,再后面是參數(shù)表的開(kāi)始標(biāo)識(shí)和按照參數(shù)類型代號(hào)拼出的參數(shù)表。對(duì)于__stdcall方式,參數(shù)表的開(kāi)始標(biāo)識(shí)是“@@YG”,對(duì)于__cdecl方式則是“@@YA”,對(duì)于 __fastcall方式則是“@@YI”。參數(shù)表的拼寫(xiě)代號(hào)如下所示: X--void
D--char
E--unsigned char
F--short
H--int
I--unsigned int
J--long
K--unsigned long(DWORD)M--float
N--double
_N--bool U--struct....指針的方式有些特別,用PA表示指針,用PB表示const類型的指針。后面的代號(hào)表明指針類型,如果相同類型的指針連續(xù)出現(xiàn),以“0”代替,一個(gè)“0”代表一次重復(fù)。U表示結(jié)構(gòu)類型,通常后跟結(jié)構(gòu)體的類型名,用“@@”表示結(jié)構(gòu)類型名的結(jié)束。函數(shù)的返回值不作特殊處理,它的描述方式和函數(shù)參數(shù)一樣,緊跟著參數(shù)表的開(kāi)始標(biāo)志,也就是說(shuō),函數(shù)參數(shù)表的第一項(xiàng)實(shí)際上是表示函數(shù)的返回值類型。參數(shù)表后以“@Z”標(biāo)識(shí)整個(gè)名字的結(jié)束,如果該函數(shù)無(wú)參數(shù),則以“Z”標(biāo)識(shí)結(jié)束。下面舉兩個(gè)例子,假如有以下函數(shù)聲明:
int Function1(char *var1,unsigned long);
其函數(shù)修飾名為“?Function1@@YGHPADK@Z”,而對(duì)于函數(shù)聲明: void Function2();
其函數(shù)修飾名則為“?Function2@@YGXXZ”。
對(duì)于C++的類成員函數(shù)(其調(diào)用方式是thiscall),函數(shù)的名字修飾與非成員的C++函數(shù)稍有不同,首先就是在函數(shù)名字和參數(shù)表之間插入以“@”字符引導(dǎo)的類名;其次是參數(shù)表的開(kāi)始標(biāo)識(shí)不同,公有(public)成員函數(shù)的標(biāo)識(shí)是“@@QAE”,保護(hù)(protected)成員函數(shù)的標(biāo)識(shí)是 “@@IAE”,私有(private)成員函數(shù)的標(biāo)識(shí)是“@@AAE”,如果函數(shù)聲明使用了const關(guān)鍵字,則相應(yīng)的標(biāo)識(shí)應(yīng)分別為 “@@QBE”,“@@IBE”和“@@ABE”。如果參數(shù)類型是類實(shí)例的引用,則使用“AAV1”,對(duì)于const類型的引用,則使用“ABV1”。下面就以類CTest為例說(shuō)明C++成員函數(shù)的名字修飾規(guī)則: class CTest {......private:
void Function(int);protected:
void CopyInfo(const CTest &src);public:
long DrawText(HDC hdc, long pos, const TCHAR* text, RGBQUAD color, BYTE bUnder, bool bSet);
long InsightClass(DWORD dwClass)const;......};
對(duì)于成員函數(shù)Function,其函數(shù)修飾名為“?Function@CTest@@AAEXH@Z”,字符串“@@AAE”表示這是一個(gè)私有函數(shù)。成員函數(shù)CopyInfo只有一個(gè)參數(shù),是對(duì)類CTest的const引用參數(shù),其函數(shù)修飾名為 “?CopyInfo@CTest@@IAEXABV1@@Z”。DrawText是一個(gè)比較復(fù)雜的函數(shù)聲明,不僅有字符串參數(shù),還有結(jié)構(gòu)體參數(shù)和HDC 句柄參數(shù),需要指出的是HDC實(shí)際上是一個(gè)HDC__結(jié)構(gòu)類型的指針,這個(gè)參數(shù)的表示就是“PAUHDC__@@”,其完整的函數(shù)修飾名為 “?DrawText@CTest@@QAEJPAUHDC__@@JPBDUtagRGBQUAD@@E_N@Z”。InsightClass是一個(gè)共有的const函數(shù),它的成員函數(shù)標(biāo)識(shí)是“@@QBE”,完整的修飾名就是“?InsightClass@CTest@@QBEJK@Z”。
無(wú)論是C函數(shù)名修飾方式還是C++函數(shù)名修飾方式均不改變輸出函數(shù)名中的字符大小寫(xiě),這和PASCAL調(diào)用約定不同,PASCAL約定輸出的函數(shù)名無(wú)任何修飾且全部大寫(xiě)。
3.查看函數(shù)的名字修飾
有兩種方式可以檢查你的程序中的函數(shù)的名字修飾:使用編譯輸出列表或使用Dumpbin工具。使用/FAc,/FAs或/FAcs命令行參數(shù)可以讓編譯器輸出函數(shù)或變量名字列表。使用dumpbin.exe /SYMBOLS命令也可以獲得obj文件或lib文件中的函數(shù)或變量名字列表。此外,還可以使用 undname.exe 將修飾名轉(zhuǎn)換為未修飾形式。
函數(shù)調(diào)用約定和名字修飾規(guī)則不匹配引起的常見(jiàn)問(wèn)題 函數(shù)調(diào)用時(shí)如果出現(xiàn)堆棧異常,十有八九是由于函數(shù)調(diào)用約定不匹配引起的。比如動(dòng)態(tài)鏈接庫(kù)a有以下導(dǎo)出函數(shù):long MakeFun(long lFun);
動(dòng)態(tài)庫(kù)生成的時(shí)候采用的函數(shù)調(diào)用約定是__stdcall,所以編譯生成的a.dll中函數(shù)MakeFun的調(diào)用約定是_stdcall,也就是函數(shù)調(diào)用時(shí)參數(shù)從右向左入棧,函數(shù)返回時(shí)自己還原堆?!,F(xiàn)在某個(gè)程序模塊b要引用a中的MakeFun,b和a一樣使用C++方式編譯,只是b模塊的函數(shù)調(diào)用方式是__cdecl,由于b包含了a提供的頭文件中MakeFun函數(shù)聲明,所以MakeFun在b模塊中被其它調(diào)用MakeFun的函數(shù)認(rèn)為是 __cdecl調(diào)用方式,b模塊中的這些函數(shù)在調(diào)用完MakeFun當(dāng)然要幫著恢復(fù)堆棧啦,可是MakeFun已經(jīng)在結(jié)束時(shí)自己恢復(fù)了堆棧,b模塊中的函數(shù)這樣多此一舉就引起了棧指針錯(cuò)誤,從而引發(fā)堆棧異常。宏觀上的現(xiàn)象就是函數(shù)調(diào)用沒(méi)有問(wèn)題(因?yàn)閰?shù)傳遞順序是一樣的),MakeFun也完成了自己的功能,只是函數(shù)返回后引發(fā)錯(cuò)誤。解決的方法也很簡(jiǎn)單,只要保證兩個(gè)模塊的在編譯時(shí)設(shè)置相同的函數(shù)調(diào)用約定就行了。
在了解了函數(shù)調(diào)用約定和函數(shù)的名修飾規(guī)則之后,再來(lái)看在C++程序中使用C語(yǔ)言編譯的庫(kù)時(shí)經(jīng)常出現(xiàn)的LNK 2001錯(cuò)誤就很簡(jiǎn)單了。還以上面例子的兩個(gè)模塊為例,這一次兩個(gè)模塊在編譯的時(shí)候都采用__stdcall調(diào)用約定,但是a.dll使用C語(yǔ)言的語(yǔ)法編譯的(C語(yǔ)言方式),所以a.dll的載入庫(kù)a.lib中MakeFun函數(shù)的名字修飾就是“_MakeFun@4”。b包含了a提供的頭文件中 MakeFun函數(shù)聲明,但是由于b采用的是C++語(yǔ)言編譯,所以MakeFun在b模塊中被按照C++的名字修飾規(guī)則命名為 “?MakeFun@@YGJJ@Z”,編譯過(guò)程相安無(wú)事,鏈接程序時(shí)c++的鏈接器就到a.lib中去找“?MakeFun@@YGJJ@Z”,但是 a.lib中只有“_MakeFun@4”,沒(méi)有“?MakeFun@@YGJJ@Z”,于是鏈接器就報(bào)告:
error LNK2001: unresolved external symbol ?MakeFun@@YGJJ@Z
解決的方法和簡(jiǎn)單,就是要讓b模塊知道這個(gè)函數(shù)是C語(yǔ)言編譯的,extern “C”可以做到這一點(diǎn)。一個(gè)采用C語(yǔ)言編譯的庫(kù)應(yīng)該考慮到使用這個(gè)庫(kù)的程序可能是C++程序(使用C++編譯器),所以在設(shè)計(jì)頭文件時(shí)應(yīng)該注意這一點(diǎn)。通常應(yīng)該這樣聲明頭文件:
#ifdef _cplusplus extern “C” { #endif
long MakeFun(long lFun);
#ifdef _cplusplus }
#endif
這樣C++的編譯器就知道MakeFun的修飾名是“_MakeFun@4”,就不會(huì)有鏈接錯(cuò)誤了。
許多人不明白,為什么我使用的編譯器都是VC的編譯器還會(huì)產(chǎn)生“error LNK2001”錯(cuò)誤?其實(shí),VC的編譯器會(huì)根據(jù)源文件的擴(kuò)展名選擇編譯方式,如果文件的擴(kuò)展名是“.C”,編譯器會(huì)采用C的語(yǔ)法編譯,如果擴(kuò)展名是 “.cpp”,編譯器會(huì)使用C++的語(yǔ)法編譯程序,所以,最好的方法就是使用extern “C”。
1.__stdcall
以“?”標(biāo)識(shí)函數(shù)名的開(kāi)始,后跟函數(shù)名;函數(shù)名后面以“@@YG”標(biāo)識(shí)參數(shù)表的開(kāi)始,后跟參數(shù)表;
參數(shù)表以代號(hào)表示: X--void,D--char,E--unsigned char,F(xiàn)--short,H--int,I--unsigned int,J--long,K--unsigned long,M--float,N--double,_N--bool,....PA--表示指針,后面的代號(hào)表明指針類型,如果相同類型的指針連續(xù)出現(xiàn),以“0”代替,一個(gè)“0”代表一次重復(fù); 參數(shù)表的第一項(xiàng)為該函數(shù)的返回值類型,其后依次為參數(shù)的數(shù)據(jù)類型,指針標(biāo)識(shí)在其所指數(shù)據(jù)類型前;
參數(shù)表后以“@Z”標(biāo)識(shí)整個(gè)名字的結(jié)束,如果該函數(shù)無(wú)參數(shù),則以“Z”標(biāo)識(shí)結(jié)束。其格式為“?functionname@@YG*****@Z”或“?functionname@@YG*XZ”,例如 int Test1(char *var1,unsigned long)-----“?Test1@@YGHPADK@Z” void Test2()-----“?Test2@@YGXXZ” __cdecl調(diào)用約定:規(guī)則同上面的 _stdcall 調(diào)用約定,只是參數(shù)表的開(kāi)始標(biāo)識(shí)由上面的“@@YG”變?yōu)椤癅@YA”。__fastcall調(diào)用約定:規(guī)則同上面的_stdcall調(diào)用約定,只是參數(shù)表的開(kāi)始標(biāo)識(shí)由上面的“@@YG”變?yōu)椤癅@YI”。
VC++對(duì)函數(shù)的省缺聲明是“__cedcl”,將只能被C/C++調(diào)用。
CB在輸出函數(shù)聲明時(shí)使用4種修飾符號(hào) :
__cdecl cb 的默認(rèn)值,它會(huì)在輸出函數(shù)名前加 “_”,并保留此函數(shù)名不變,參數(shù)按照從右到左的順序依次傳遞給棧,也可以寫(xiě)成_cdecl和cdecl形式。
__fastcall 修飾的函數(shù)的參數(shù)將盡可能的使用寄存器來(lái)處理,其函數(shù)名前加@,參數(shù)按照從左到右的順序壓棧; __pascal 它說(shuō)明的函數(shù)名使用 Pascal 格式的命名約定。這時(shí)函數(shù)名全部大寫(xiě)。參數(shù)按照從左到右的順序壓棧;
__stdcall 使用標(biāo)準(zhǔn)約定的函數(shù)名。函數(shù)名不會(huì)改變。使用 __stdcall 修飾時(shí)。參數(shù)按照由右到左的順序壓棧,也可以是_stdcall;
C語(yǔ)言函數(shù)調(diào)用約定
在C語(yǔ)言中,假設(shè)我們有這樣的一個(gè)函數(shù):
int function(int a,int b)
調(diào)用時(shí)只要用 result = function(1,2)這樣的方式就可以使用這個(gè)函數(shù)。但是,當(dāng)高級(jí)語(yǔ)言被編譯成計(jì)算機(jī)可以識(shí)別的機(jī)器碼時(shí),有一個(gè)問(wèn)題就出現(xiàn)來(lái):在CPU中,計(jì)算機(jī)沒(méi)有辦法知道一個(gè)函數(shù)調(diào)用需要多少個(gè)、什么樣的參數(shù),也沒(méi)有硬件可以保存這些參數(shù)。也就是說(shuō),計(jì)算機(jī)不知道怎么給這個(gè)函數(shù)傳遞參數(shù),傳遞參數(shù)的工作必須由函數(shù)調(diào)用者和函數(shù)本身來(lái)協(xié)調(diào)。為此,計(jì)算機(jī)提供了一種被稱為棧的數(shù)據(jù)結(jié)構(gòu)來(lái)支持參數(shù)傳遞。
棧是一種先后進(jìn)先出的數(shù)據(jù)結(jié)構(gòu),棧有一個(gè)存儲(chǔ)區(qū)、一個(gè)棧頂指針。棧頂指針指向堆棧中第一個(gè)可用的數(shù)據(jù)項(xiàng)(被稱為棧頂)。用戶可以在棧頂上方向棧中加入數(shù)據(jù),這個(gè)操作被稱為壓棧(Push),壓棧以后,棧頂自動(dòng)變成新加入數(shù)據(jù)項(xiàng)的位置,棧頂指針也隨之修改。用戶也可以從堆棧中取走棧頂,稱為彈出棧(pop),彈出棧后,棧頂下的一個(gè)元素變成棧頂,棧頂指針隨之修改。
函數(shù)調(diào)用時(shí),調(diào)用者依次把參數(shù)壓棧,然后調(diào)用函數(shù),函數(shù)被調(diào)用以后,在堆棧中取得數(shù)據(jù),并進(jìn)行計(jì)算。函數(shù)計(jì)算結(jié)束以后,或者調(diào)用者、或者函數(shù)本身修改堆棧,使堆?;謴?fù)原裝。
在參數(shù)傳遞中,有兩個(gè)很重要的問(wèn)題必須得到明確說(shuō)明:
當(dāng)參數(shù)個(gè)數(shù)多于一個(gè)時(shí),按照什么順序把參數(shù)壓入堆棧 函數(shù)調(diào)用后,由誰(shuí)來(lái)把堆?;謴?fù)原狀
在高級(jí)語(yǔ)言中,通過(guò)函數(shù)調(diào)用約定來(lái)說(shuō)明這兩個(gè)問(wèn)題。常見(jiàn)的調(diào)用約定有:
stdcall cdecl fastcall thiscall naked call
stdcall調(diào)用約定
stdcall很多時(shí)候被稱為pascal調(diào)用約定,因?yàn)閜ascal是早期很常見(jiàn)的一種教學(xué)用計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言,其語(yǔ)法嚴(yán)謹(jǐn),使用的函數(shù)調(diào)用約定就是stdcall。在Microsoft C++系列的C/C++編譯器中,常常用PASCAL宏來(lái)聲明這個(gè)調(diào)用約定,類似的宏還有WINAPI和CALLBACK。stdcall調(diào)用約定聲明的語(yǔ)法為(以前文的那個(gè)函數(shù)為例):
int __stdcall function(int a,int b)
stdcall的調(diào)用約定意味著:1)參數(shù)從右向左壓入堆棧,2)函數(shù)自身修改堆棧 3)函數(shù)名自動(dòng)加前導(dǎo)的下劃線,后面緊跟一個(gè)@符號(hào),其后緊跟著參數(shù)的尺寸
以上述這個(gè)函數(shù)為例,參數(shù)b首先被壓棧,然后是參數(shù)a,函數(shù)調(diào)用function(1,2)調(diào)用處翻譯成匯編語(yǔ)言將變成:
push 2
// 第二個(gè)參數(shù)入棧 push 1
// 第一個(gè)參數(shù)入棧
call function // 調(diào)用參數(shù),注意此時(shí)自動(dòng)把cs:eip入棧
而對(duì)于函數(shù)自身,則可以翻譯為:
push ebp
// 保存ebp寄存器,該寄存器將用來(lái)保存堆棧的棧頂指針,可以在函數(shù)退出時(shí)恢復(fù)
mov ebp,esp // 保存堆棧指針
mov eax,[ebp + 8H] // 堆棧中ebp指向位置之前依次保存有 ebp,cs:eip,a,b,ebp + 8指向 a add eax,[ebp + 0CH] // 堆棧中ebp + 1 2處保存了b mov esp,ebp
// 恢復(fù)esp pop ebp ret 8
而在編譯時(shí),這個(gè)函數(shù)的名字被翻譯成_function@8
注意不同編譯器會(huì)插入自己的匯編代碼以提供編譯的通用性,但是大體代碼如此。其中在函數(shù)開(kāi)始處保留esp到ebp中,在函數(shù)結(jié)束恢復(fù)是編譯器常用的方法。
從函數(shù)調(diào)用看,2和1依次被push進(jìn)堆棧,而在函數(shù)中又通過(guò)相對(duì)于ebp(即剛進(jìn)函數(shù)時(shí)的堆棧指針)的偏移量存取參數(shù)。
函數(shù)結(jié)束后,ret 8 表示清理8個(gè)字節(jié)的堆棧,函數(shù)自己恢復(fù)了堆棧。
cdecl調(diào)用約定
cdecl 調(diào)用約定又稱為C調(diào)用約定,是C語(yǔ)言缺省的調(diào)用約定,它的定義語(yǔ)法是:
int function(int a ,int b)//不加修飾就是C調(diào)用約定 int __cdecl function(int a,int b)//明確指出C調(diào)用約定
cdecl調(diào)用約定的參數(shù)壓棧順序是和 stdcall是一樣的,參數(shù)首先由有向左壓入堆棧。所不同的是,函數(shù)本身不清理堆棧,調(diào)用者負(fù)責(zé)清理堆棧。由于這種變化,C 調(diào)用約定允許函數(shù)的參數(shù)的個(gè)數(shù)是不固定的,這也是C語(yǔ)言的一大特色。對(duì)于前面的function函數(shù),使用cdecl后的匯編碼變成: 調(diào)用處 push 1 push 2
call functionadd
esp,8
// 注意:這里調(diào)用者在恢復(fù)堆棧
被調(diào)用函數(shù)_function處
push ebp
// 保存ebp寄存器,該寄存器將用來(lái)保存堆棧的棧頂指針,可以在函數(shù)退出時(shí)恢復(fù)
mov ebp,esp // 保存堆棧指針
mov eax,[ebp + 8H] // 堆棧中ebp指向位置之前依次保存有 ebp, cs:eip,a,b,ebp +8指向a add eax,[ebp + 0CH] // 堆棧中ebp + 12處保存了b mov esp,ebp
// 恢復(fù)esp pop ebp
ret
// 注意,這里沒(méi)有修改堆棧
MSDN中說(shuō),該修飾自動(dòng)在函數(shù)名前加前導(dǎo)的下劃線,因此函數(shù)名在符號(hào)表中被記錄為_(kāi)function,但是我在編譯時(shí)似乎沒(méi)有看到這種變化。由于參數(shù)按照從右向左順序壓棧,因此最開(kāi)始的參數(shù)在最接近棧頂?shù)奈恢?,因此?dāng)采用不定個(gè)數(shù)參數(shù)時(shí),第一個(gè)參數(shù)在棧中的位置肯定能知道,只要不定的參數(shù)個(gè)數(shù)能夠根據(jù)第一個(gè)后者后續(xù)的明確的參數(shù)確定下來(lái),就可以使用不定參數(shù),例如對(duì)于CRT中的sprintf函數(shù),定義為:
int sprintf(char* buffer,const char* format,...)
由于所有的不定參數(shù)都可以通過(guò) format 確定,因此使用不定個(gè)數(shù)的參數(shù)是沒(méi)有問(wèn)題的。
fastcall調(diào)用約定
fastcall調(diào)用約定和stdcall類似,它意味著:
函數(shù)的第一個(gè)和第二個(gè)DWORD參數(shù)(或者尺寸更小的)通過(guò)ecx和edx傳遞,其他參數(shù)通過(guò)從右向左的順序壓棧 被調(diào)用函數(shù)清理堆棧
函數(shù)名修改規(guī)則同stdcall
其聲明語(yǔ)法為:int fastcall function(int a,int b)
為了說(shuō)明這個(gè)調(diào)用約定,定義如下類和使用代碼: class A {
public:
int function1(int a,int b);
int function2(int a,...);};int A::function1(int a,int b){
return a+b;}
int A::function2(int a,...){
va_list ap;
va_start(ap,a);
int i;
int result = 0;
for(i = 0;i < a;i ++)
{
result += va_arg(ap,int);
}
return result;}
void callee(){
A a;
a.function1(1,2);
a.function2(3,1,2,3);}
// 下面這段匯編代碼是原文章的,我覺(jué)得有問(wèn)題,還是自己反匯編看看
//函數(shù)function1調(diào)用0401C1D
push
200401C1F
push
100401C21
lea
ecx,[ebp-8]00401C24
call function1
// 注意,這里this沒(méi)有被入棧 //函數(shù)function2調(diào)用00401C29
push
300401C2B
push
200401C2D
push
100401C2F
push
300401C31
lea
eax,[ebp-8]
這里引入this指針00401C34
push
eax00401C35
call
function200401C3A
add
esp,14h
以下代碼是我修改分析的:
上面的C++代碼,必須包含 stdarg.h,提供動(dòng)態(tài)參數(shù)頭文件
int A::function1(int a,int b)
// {
004113A0 push
ebp 004113A1 mov
ebp,esp 004113A3 sub
esp,0CCh 004113A9 push
ebx 004113AA push
esi 004113AB push
edi 004113AC push
ecx
004113AD lea
edi,[ebp-0CCh] 004113B3 mov
ecx,33h
004113B8 mov
eax,0CCCCCCCCh 004113BD rep stos
dword ptr es:[edi] 004113BF pop
ecx
004113C0 mov
dword ptr [ebp-8],ecx return a+b;
004113C3 mov
eax,dword ptr [a] 004113C6 add
eax,dword ptr [b] }
004113C9 pop
edi 004113CA pop
esi 004113CB pop
ebx 004113CC mov
esp,ebp 004113CE pop
ebp 004113CF ret
void callee(){
00411460 push
ebp 00411461 mov
ebp,esp 00411463 sub
esp,0CCh 00411469 push
ebx 0041146A push
esi 0041146B push
edi 0041146C lea
edi,[ebp-0CCh] 00411472 mov
ecx,33h
00411477 mov
eax,0CCCCCCCCh 0041147C rep stos
dword ptr es:[edi] A a;
a.function1(1,2);
0041147E push
// 參數(shù) 2 入棧 00411480 push
// 參數(shù) 1 入棧 00411482 lea
ecx,[a]
// this 指針----> ECX 00411485 call
A::function1(411050h)a.function2(3,1,2,3);
0041148A push
0041148C push
0041148E push
00411490 push
00411492 lea
eax,[a]
// 這里 this 指針入棧了,對(duì)照 callee 對(duì) function1 的調(diào)用,00411495 push
eax
// 對(duì) this 的處理是不同的
00411496 call
A::function2(411122h)
// 此處調(diào)用者自己沒(méi)有恢復(fù)堆棧
// 由于上面的入棧順序可知,在 function 2中當(dāng)保存ebp 后(打開(kāi)stack frame后),堆棧的狀態(tài)如下.ebp
// 保存的 EBP 的值, 且此時(shí)ebp指向該處 RetAddr
// 返回地址
this指針
// 入棧的 this 指針
參數(shù) 3
// 下面是入棧的參數(shù), 從右向左入棧 參數(shù) 1 參數(shù) 2 參數(shù) 3
0041149B add
esp,14h
// 此處調(diào)用者自己恢復(fù)堆棧
//.............下面的匯編代碼是檢查堆棧和恢復(fù) callee 堆棧的操作,不再寫(xiě)了 }
可見(jiàn),對(duì)于參數(shù)個(gè)數(shù)固定情況下,它類似于stdcall,不定時(shí)則類似cdecl
naked call 調(diào)用約定
這是一個(gè)很少見(jiàn)的調(diào)用約定,一般程序設(shè)計(jì)者建議不要使用。編譯器不會(huì)給這種函數(shù)增加初始化和清理代碼,更特殊的是,你不能用return返 回返回值,只能用插入?yún)R編返回結(jié)果。這一般用于實(shí)模式驅(qū)動(dòng)程序設(shè)計(jì),假設(shè)定義一個(gè)求和的加法程序,可以定義為:
__declspec(naked)int add(int a,int b){
__asm mov eax,a
__asm add eax,b
__asm ret }
注意,這個(gè)函數(shù)沒(méi)有顯式的return返回值,返回通過(guò)修改eax寄存器實(shí)現(xiàn),而且連退出函數(shù)的ret指令都必須顯式插入。
上面代碼被翻譯成匯編以后變成:
mov eax,[ebp+8] add eax,[ebp+12] ret 8
注意這個(gè)修飾是和__stdcall及cdecl結(jié)合使用的,前面是它和cdecl結(jié)合使用的代碼,對(duì)于和stdcall結(jié)合的代碼,則變成:
__declspec(naked)int __stdcall function(int a,int b){
__asm mov eax,a
__asm add eax,b
__asm ret 8
//注意后面的8 }
至于這種函數(shù)被調(diào)用,則和普通的cdecl及stdcall調(diào)用函數(shù)一致。
函數(shù)調(diào)用約定導(dǎo)致的常見(jiàn)問(wèn)題
如果定義的約定和使用的約定不一致,則將導(dǎo)致堆棧被破壞,導(dǎo)致嚴(yán)重問(wèn)題,下面是兩種常見(jiàn)的問(wèn)題:
函數(shù)原型聲明和函數(shù)體定義不一致 DLL導(dǎo)入函數(shù)時(shí)聲明了不同的函數(shù)約定
以后者為例,假設(shè)我們?cè)赿ll種聲明了一種函數(shù)為:
__declspec(dllexport)int func(int a,int b);//注意,這里沒(méi)有stdcall,使用的是cdecl 使用時(shí)代碼為:
typedef int(*WINAPI DLLFUNC)func(int a,int b);
hLib = LoadLibrary(...);
DLLFUNC func =(DLLFUNC)GetProcAddress(...)//這里修改了調(diào)用約定 result = func(1,2);
//導(dǎo)致錯(cuò)誤
由于調(diào)用者沒(méi)有理解WINAPI的含義錯(cuò)誤的增加了這個(gè)修飾,上述代碼必然導(dǎo)致堆棧被破壞,MFC在編譯時(shí)插入的checkesp函數(shù)將告訴你,堆棧被破壞了。
第二篇:修飾調(diào)查報(bào)告
修飾調(diào)查報(bào)告
一、教學(xué)要求:
通過(guò)本節(jié)的學(xué)習(xí),要求學(xué)生熟練掌握以下知識(shí):
1、設(shè)置文字格式(字體、字號(hào)、字形、顏色和一些特殊格式等)。
2、設(shè)置段落格式(包括段落的對(duì)齊方式、縮進(jìn)方式、段落的行距、段間距等)。
二、教學(xué)時(shí)間安排:
修飾調(diào)查報(bào)告(4課時(shí))
三、教學(xué)重點(diǎn)、難點(diǎn):
1、重點(diǎn):設(shè)置文字格式(包括設(shè)置字體、字號(hào)、字形);設(shè)置段落格式(包括段落的對(duì)齊方式、縮進(jìn)方式、行距、段間距等)。
2、難點(diǎn):設(shè)置段落的縮進(jìn)方式、行距和段間距。
四、教學(xué)方法:
采用教師講解與演示相結(jié)合,以學(xué)生上機(jī)操作為主,輔導(dǎo)學(xué)生完成“學(xué)著做”,要在機(jī)房上課。
五、教材分析:
本節(jié)的主要目的是讓學(xué)生通過(guò)對(duì)調(diào)查報(bào)告的排版學(xué)習(xí)文字格式及段落格式的設(shè)置。在學(xué)習(xí)本節(jié)時(shí),可先引導(dǎo)學(xué)生從兩個(gè)方面來(lái)分析調(diào)查報(bào)告中的效果:
(一)文字格式:例如報(bào)告中文字的大小、形狀和顏色有什么不同;
(二)段落格式:例如每個(gè)段落中的第一行有無(wú)空格、空了多少格,段落中行與行之間的距離、以及段落與段落之間的距離、文檔中的標(biāo)題和段落是怎么對(duì)齊的等等。通過(guò)這些方面的分析,讓學(xué)生在“學(xué)著做”的操作 1
過(guò)程中對(duì)文檔的最終美化效果有個(gè)明確的思路。在完成本節(jié)的“學(xué)著做”任務(wù)之后,指導(dǎo)學(xué)生認(rèn)真學(xué)習(xí)本節(jié)中的有關(guān)補(bǔ)充知識(shí),并通過(guò)“動(dòng)手做”來(lái)總結(jié)和鞏固的排版技巧。
六、教學(xué)內(nèi)容:
第一課時(shí)
一、教學(xué)內(nèi)容:
1、設(shè)置標(biāo)題字體
2、調(diào)整標(biāo)題字大小
3、變換文字顏色
二、教師展示已經(jīng)設(shè)置文字格式的調(diào)查報(bào)告,增強(qiáng)教學(xué)內(nèi)容的直觀性、啟發(fā)性,增強(qiáng)學(xué)生的嘗試愿望,激發(fā)學(xué)生的學(xué)習(xí)興趣。
三、教師利用多媒體網(wǎng)絡(luò)教室演示:設(shè)置標(biāo)題字體(教師邊講解邊演示操作),設(shè)置字體的作用:不同的字體體現(xiàn)了不同的風(fēng)格。通過(guò)字體的設(shè)置可使文章顯得結(jié)構(gòu)分明、重點(diǎn)突出:
1、選定標(biāo)題行;
2、單擊“格式”工具欄上“字體”下拉列表項(xiàng)右邊的小箭頭,彈出下拉列表;
3、用鼠標(biāo)上下拖動(dòng)垂直滾動(dòng)條,找到并單擊“華文琥珀”字休,被選中的標(biāo)題文字就以華文琥珀字體顯示。
常見(jiàn)漢字字體示例:
宋體:關(guān)于大氣污染的調(diào)查報(bào)告Happy Birthday
仿宋:關(guān)于大氣污染的調(diào)查報(bào)告Happy Birthday
楷體:關(guān)于大氣污染的調(diào)查報(bào)告Happy Birthday
黑體:關(guān)于大氣污染的調(diào)查報(bào)告Happy Birthday
隸書(shū):關(guān)于大氣污染的調(diào)查報(bào)告Happy Birthday
幼圓:關(guān)于大氣污染的調(diào)查報(bào)告Happy Birthday
行楷:關(guān)于大氣污染的調(diào)查報(bào)告Happy Birthday
彩云:關(guān)于大氣污染的調(diào)查報(bào)告Happy Birthday
四、教師指導(dǎo)學(xué)生模仿操作,完成教科書(shū)中81頁(yè)的“動(dòng)手做”,老師應(yīng)強(qiáng)調(diào),在Word中進(jìn)行文字修飾一般要遵循“先選定,后操作”的原則。
1、Word文檔的默認(rèn)英文字體是:Times New Roman。
2、Word文檔的默認(rèn)中文字體是:宋體。
五、學(xué)生自主學(xué)習(xí)“設(shè)置標(biāo)題文字大小和顏色”,完成82頁(yè)中的“學(xué)著做”。同桌可以相互討論。教師巡回指導(dǎo)。學(xué)生探究文字大小的表示方法:(字號(hào)數(shù)和磅數(shù));(字號(hào)數(shù)越大,字越??;磅數(shù)越大,字越大)。
1、Word文檔默認(rèn)的字號(hào)大小是5號(hào)字。
2、Word文檔默認(rèn)的字體顏色是黑色。
六、教師演示幾種文字的修飾效果,指導(dǎo)學(xué)生完成85頁(yè)“動(dòng)手做”。幾種文字的修飾效果:加粗、傾斜、下劃線、邊框、底紋、字符縮放。
七、總結(jié)本節(jié)內(nèi)容,并介紹除了用工具欄外,還可以通過(guò)“格式”——“字體”菜單命令,完成文字格式的設(shè)置。
八、教學(xué)后記:
第二課時(shí)
一、教學(xué)內(nèi)容:
設(shè)置文字格式的其它效果:陰影、上標(biāo)、下標(biāo)、空心字、刪除線;字
符間距、字符位置、字符效果。
二、復(fù)習(xí)檢查:指定學(xué)生演示操作,對(duì)文字設(shè)置字體、字號(hào)、顏色。
三、教師示范,演示字符效果的設(shè)置:
1、選中文字;
2、選擇“格式”——“字體”菜單命令,在彈出的“字體”對(duì)話框中,單擊“字體”選項(xiàng)卡;
3、選擇“效果”欄中的“陰影”選項(xiàng),單擊“確定”完成陰影的設(shè)置。
四、指導(dǎo)學(xué)生動(dòng)手操作,完成“動(dòng)手做”中的“文字效果”的設(shè)置。
五、輔導(dǎo)學(xué)生學(xué)習(xí)本節(jié)的補(bǔ)充知識(shí):
1、在“字體”對(duì)話框的“字符效果”選項(xiàng)卡,可以設(shè)置文字的動(dòng)態(tài)效果。但這些效果只能在屏幕上顯示,無(wú)法打印。
2、另類方法:格式刷(單擊、雙擊)
六、總結(jié)本節(jié)內(nèi)容:
1、文字修飾效果:字符縮放、加粗、傾斜、下劃線、字符邊框、字符底紋
2、效果的設(shè)定與取消,多種效果的組合。
3、(1)設(shè)置陰影和設(shè)置上標(biāo)等;(2)調(diào)整字符縮放比例、字符間距、垂直方向的相對(duì)位置;(3)設(shè)置動(dòng)態(tài)效果。
七、教學(xué)后記:
第三課時(shí)
一、教學(xué)內(nèi)容:
1、調(diào)整段落的縮進(jìn)。
2、設(shè)置段落的對(duì)齊。
二、教師邊講邊演示,用“格式”工具欄和標(biāo)尺來(lái)設(shè)置段落的縮進(jìn)和段落的對(duì)齊。
1、調(diào)整段落的縮進(jìn):
水平標(biāo)尺上有六個(gè)設(shè)置標(biāo)志:左頁(yè)縮進(jìn)、右頁(yè)縮進(jìn)(它的調(diào)節(jié)對(duì)整篇文檔都起作用)、首行縮進(jìn)、懸掛縮進(jìn)、左縮進(jìn)、右縮進(jìn)(只對(duì)當(dāng)前光標(biāo)所在段落或所選的幾個(gè)段落起作用)。使用按鈕拖動(dòng)鼠標(biāo)進(jìn)行調(diào)整,(按住Alt鍵可精確調(diào)整)。
2、設(shè)置段落的對(duì)齊:
段落的對(duì)齊方式有:兩端對(duì)齊、居中、右對(duì)齊、左對(duì)齊和分散對(duì)齊五種。
三、輔導(dǎo)學(xué)習(xí)完成本節(jié)中的“學(xué)著做”。啟發(fā)引導(dǎo)學(xué)生用“格式”——“段落”菜單命令完成“動(dòng)手做”。(也可用鼠標(biāo)右鍵:在文檔中右擊,彈出快捷菜單選擇“段落”)。
四、總結(jié):
無(wú)論是設(shè)置縮進(jìn),還是段落的對(duì)齊,都應(yīng)當(dāng)先放好插入點(diǎn),光標(biāo)落在要調(diào)整的段內(nèi)。用“段落”對(duì)話框設(shè)置段落縮進(jìn)或?qū)R,可在“縮進(jìn)和間距”選項(xiàng)卡中一次完成。
介紹格式欄上“減小縮進(jìn)量”和“增大縮進(jìn)量”的作用。
五、布置作業(yè)。
六、教學(xué)后記:
第四課時(shí)
一、教學(xué)內(nèi)容:
調(diào)整段落間距與行間距。
二、復(fù)習(xí)檢查上節(jié)學(xué)習(xí)內(nèi)容,指幾名學(xué)生演示段落縮進(jìn)和段落的對(duì)齊,用“工具欄”上的水平標(biāo)尺或“格式”——“段落”菜單命令均可。若有不正確操作集體糾正,操作完成好的給予表?yè)P(yáng)鼓勵(lì)。
三、教師邊講解邊演示段落間距和行間距的設(shè)置:
1、行間距:是一個(gè)段落中行與行之間的距離。
2、段間距:指的是相鄰兩個(gè)段之間的距離。
3、Word文檔中默認(rèn)的行間距為單倍行距,默認(rèn)的段間距為0。操作:將“調(diào)查報(bào)告”第一自然段設(shè)置為1.5倍行間距,段間距:段前0.5行;段后0行。
(1)將光標(biāo)移到第1段任意位置;
(2)選擇“格式”——“段落”菜單命令,選“縮進(jìn)和間距”選項(xiàng)卡;
(3)單擊“行距”選項(xiàng)右邊的向下箭頭,選擇“1.5倍行距”后;
(4)調(diào)節(jié)“段前”右邊的值為“0.5行”,“段后”為“0行”后,“確定”。
四、課堂練習(xí):
輔導(dǎo)學(xué)習(xí)完成P93頁(yè)“動(dòng)手做”。對(duì)做得好的學(xué)生,展示其作業(yè),并給予表?yè)P(yáng)。
五、總結(jié)本節(jié)內(nèi)容:
1、調(diào)整段落的縮進(jìn)。
2、設(shè)置段落的對(duì)齊。(五種對(duì)齊方式,四個(gè)對(duì)齊按鈕)
3、調(diào)整段落間距與行間距。
4、回車(chē)可形成一定的行間距,但會(huì)造成一些問(wèn)題
5、格式刷的使用對(duì)段落的設(shè)置同樣有效。
六、布置作業(yè):
七、教學(xué)后記:
第三篇:修飾、描寫(xiě)
描寫(xiě)手法:描是描繪,寫(xiě)是摹寫(xiě)。描寫(xiě)就是用生動(dòng)形象的語(yǔ)言,把人物或景物的狀態(tài)具體地描繪出來(lái)。這是一般記敘文和文學(xué)寫(xiě)作常用的表達(dá)方法。它分為細(xì)描與白描、靜態(tài)描寫(xiě)與動(dòng)態(tài)描寫(xiě)、正面描寫(xiě)與側(cè)面描寫(xiě)、虛寫(xiě)與實(shí)寫(xiě)、人物描寫(xiě)、環(huán)境描寫(xiě)、物體描寫(xiě)、細(xì)節(jié)描寫(xiě)、渲染與烘托、欲揚(yáng)先抑、聯(lián)想和想象等。(一)某句話在文中的作用:
1、文首:開(kāi)篇點(diǎn)題;渲染氣氛(散文),埋下伏筆(記敘類文章),設(shè)置懸念(小說(shuō),但上海不會(huì)考),為下文作輔墊;總領(lǐng)下文;
2、文中:承上啟下;總領(lǐng)下文;總結(jié)上文;
3、文末:點(diǎn)明中心(散文);深化主題(記敘類文章文章);照應(yīng)開(kāi)頭(議論文、記敘類文章文、小說(shuō))
(二)修辭手法的作用:
(1)它本身的作用;(2)結(jié)合句子語(yǔ)境。
1、比喻、擬人:生動(dòng)形象;
答題格式:生動(dòng)形象地寫(xiě)出了+對(duì)象+特性。
2、排比:有氣勢(shì)、加強(qiáng)語(yǔ)氣、一氣呵成等;
答題格式:強(qiáng)調(diào)了+對(duì)象+特性
3;設(shè)問(wèn):引起讀者注意和思考;
答題格式:引起讀者對(duì)+對(duì)象+特性的注意和思考 反問(wèn):強(qiáng)調(diào),加強(qiáng)語(yǔ)氣等;
4、對(duì)比:強(qiáng)調(diào)了??突出了??
5、反復(fù):強(qiáng)調(diào)了??加強(qiáng)語(yǔ)氣
(三)句子含義的解答:
這樣的題目,句子中往往有一個(gè)詞語(yǔ)或短語(yǔ)用了比喻、對(duì)比、借代、象征等表現(xiàn)方法。答題時(shí),把它們所指的對(duì)象揭示出來(lái),再疏通句子,就可以了。
(四)某句話中某個(gè)詞換成另一個(gè)行嗎?為什么? 動(dòng)詞:不行。因?yàn)樵撛~準(zhǔn)確生動(dòng)具體地寫(xiě)出了?? 形容詞:不行。因?yàn)樵撛~生動(dòng)形象地描寫(xiě)了??
副詞(如都,大都,非常只有等):不行。因?yàn)樵撛~準(zhǔn)確地說(shuō)明了??的情況(表程度,表限制,表時(shí)間,表范圍等),換了后就變成??,與事實(shí)不符。
(五)一句話中某兩三個(gè)詞的順序能否調(diào)換?為什么? 不能。因?yàn)椋?/p>
(1)與人們認(rèn)識(shí)事物的(由淺入深、由表入里、由現(xiàn)象到本質(zhì))規(guī)律不一致。(2)該詞與上文是一一對(duì)應(yīng)的關(guān)系。
(3)這些詞是遞進(jìn)關(guān)系,環(huán)環(huán)相扣,不能互換。
(六)段意的概括歸納
1.記敘類文章:回答清楚(什么時(shí)間、什么地點(diǎn))什么人做什么事。
格式:(時(shí)間+地點(diǎn))+人+事。
2.說(shuō)明類文章:回答清楚說(shuō)明對(duì)象是什么,它的特點(diǎn)是什么。
格式:說(shuō)明(介紹)+說(shuō)明對(duì)象+說(shuō)明內(nèi)容(特點(diǎn))3.議論類文章:回答清楚議論的問(wèn)題是什么,作者觀點(diǎn)怎樣。
格式:用什么論證方法證明了(論證了)+論點(diǎn)
(七)表達(dá)技巧在古代詩(shī)歌鑒賞中占有重要位置,表現(xiàn)手法諸如用典、烘托、渲染、鋪陳、比興、托物寄情、情景交融、借景抒情、動(dòng)靜結(jié)合、虛實(shí)結(jié)合、委婉含蓄、對(duì)比手法、諷喻手法、象征法、雙關(guān)法等等。詩(shī)中常用的修辭方法有夸張、排比、對(duì)偶、比喻、借代、比擬、設(shè)問(wèn)、反問(wèn)、反復(fù)等。分析詩(shī)歌語(yǔ)言常用的術(shù)語(yǔ)有:準(zhǔn)確、生動(dòng)、形象、凝練、精辟、簡(jiǎn)潔、明快、清新、新奇、優(yōu)美、絢麗、含蓄、質(zhì)樸、自然等。復(fù)習(xí)時(shí)要系統(tǒng)歸納各種表達(dá)技巧,儲(chǔ)備相關(guān)知識(shí)。首先要弄清這些表達(dá)技巧的特點(diǎn)和作用,再結(jié)合具體詩(shī)歌進(jìn)行仔細(xì)體味、辨析
至于評(píng)價(jià)詩(shī)歌的思想內(nèi)容和作者的觀點(diǎn)態(tài)度,則包括總結(jié)作品的主旨,分析作品所反映的社會(huì)現(xiàn)實(shí),指出其積極意義或局限性等。
總之,鑒賞古代詩(shī)詞,第一步,把握詩(shī)詞內(nèi)容,可以從以下幾方面入手:1細(xì)讀標(biāo)題和注釋;2分析意象;3品味意境;4聯(lián)系作者。第二步,弄清技巧:1把握形象特點(diǎn);2辨析表達(dá)技巧;3說(shuō)明表達(dá)作用。第三步,評(píng)價(jià)內(nèi)容觀點(diǎn):1概括主旨;2聯(lián)系背景;3分清主次;4全面評(píng)價(jià)。
答題時(shí),要特別注意以下幾點(diǎn):一是緊扣要求,不可泛泛而談;二是要點(diǎn)要齊全,要多角度思考;三是推敲用語(yǔ),力求用語(yǔ)準(zhǔn)確、簡(jiǎn)明、規(guī)范。易混術(shù)語(yǔ)區(qū)分
(一)“方式、手法”的區(qū)分 藝術(shù)手法,又叫表達(dá)技巧,包括: ①表達(dá)方式 :記敘、描寫(xiě)、抒情、議論、說(shuō)明。
②表現(xiàn)手法 :起興、聯(lián)想、烘托、抑揚(yáng)、照應(yīng)、正側(cè)、象征、對(duì)照、由實(shí)入虛、虛實(shí)結(jié)合、運(yùn)用典故、直抒胸臆、借景抒情、寓情于景、情景交融、托物言志、借古諷今、化動(dòng)為靜、動(dòng)靜結(jié)合、以小見(jiàn)大、開(kāi)門(mén)見(jiàn)山。
③修辭 :比喻、借代、夸張、對(duì)偶、對(duì)比、比擬、排比、設(shè)問(wèn)、反問(wèn)、引用、反語(yǔ)、反復(fù)。
(二)“情”、“景”關(guān)系區(qū)別
借景抒情、寓情于景、情景交融都是詩(shī)人把要表達(dá)的感情通過(guò)景物表達(dá)出來(lái)?!敖杈笆闱椤北磉_(dá)感情比較直接,讀完詩(shī)歌后的感受是見(jiàn)“情”不見(jiàn)“景 ”;“寓情于景”、“情景交融”。表達(dá)感情時(shí)正面不著一字,讀完詩(shī)歌后的感受是見(jiàn)“景”不見(jiàn)“情”,但是仔細(xì)分析后卻發(fā)現(xiàn)詩(shī)人的感情全部寓于眼前的自然景色之中,一切景語(yǔ)皆情語(yǔ)。
(三)描寫(xiě)的角度
常見(jiàn)的角度有:形、聲、色、態(tài)、味?!靶巍?、“色”是視覺(jué)角度;“聲”是聽(tīng)覺(jué)角度;“態(tài)”分為動(dòng)態(tài)和靜態(tài);“味”是觸覺(jué)角度
常見(jiàn)的六種描寫(xiě)手法 寫(xiě)景狀物是古代詩(shī)歌中常見(jiàn)的內(nèi)容之一,作者通過(guò)描寫(xiě)景物,可以渲染氣氛,抒發(fā)情感,深化中心,推動(dòng)情節(jié)發(fā)展。我們欣賞詩(shī)歌,除了讀懂字面語(yǔ)意,提升思想素質(zhì)和審美情感,還要關(guān)注詩(shī)人用語(yǔ)言寫(xiě)景狀物的形式與技巧。描寫(xiě)手法主要分正面描寫(xiě)和側(cè)面描寫(xiě),高考常見(jiàn)的描寫(xiě)鑒賞角度主要有以下六種:(1)側(cè)面描寫(xiě)——襯托
如元代王冕的《白梅》:冰雪林中著此身,不同桃李混芳?jí)m。忽然一夜清風(fēng)起,散作乾坤萬(wàn)里春。
這首詩(shī)突出了梅花耐寒、清高、報(bào)春的特征,主要運(yùn)用了襯托、對(duì)比的手法,襯托是通過(guò)描寫(xiě)甲來(lái)使乙表現(xiàn)得更突出的方法。襯托分映襯和反襯。如《夢(mèng)游天姥吟留別》中“天臺(tái)一萬(wàn)八千丈,對(duì)此欲倒東南傾”就是用天臺(tái)之高映襯天姥之高的,《琵琶行》中寫(xiě)江中之月“唯見(jiàn)江心秋月白”襯托琵琶聲的引人入勝,“別時(shí)茫茫江浸月”襯托人物凄涼的心情?!俄?xiàng)脊軒志》中用“萬(wàn)籟有生”來(lái)反襯“庭階寂寂”的。(2)各種修辭手法
如辛棄疾的《摸魚(yú)兒》:淳熙已亥,自湖北漕移湖南,同官王正之置酒小山亭,為賦。
更能消幾番風(fēng)雨?匆匆春又歸去。惜春長(zhǎng)怕花開(kāi)早,何況落紅無(wú)數(shù)。春且住,見(jiàn)說(shuō)道,天涯芳草無(wú)歸路。怨春不語(yǔ)。算只有殷勤,畫(huà)檐蛛網(wǎng),盡日惹飛絮。
長(zhǎng)門(mén)事,準(zhǔn)擬佳期又誤,蛾眉曾有人妒。千金縱買(mǎi)相如賦,脈脈此情誰(shuí)訴?君莫舞,君不見(jiàn),玉環(huán)飛燕皆塵土!閑愁最苦。休去倚危欄,斜陽(yáng)正在,煙柳斷腸處。
詞的上闋,作者在借景抒情過(guò)程中所運(yùn)用的主要修辭方法是設(shè)問(wèn)和比擬,詩(shī)文中運(yùn)用修辭手法,大體和其他文體中的修辭作用一樣。學(xué)生要善于發(fā)現(xiàn)修辭手法,并說(shuō)明作用。如比喻為更形象生動(dòng)(忽如一夜春風(fēng)來(lái),千樹(shù)萬(wàn)樹(shù)梨花開(kāi)。);比擬是把事物人格化(羈鳥(niǎo)戀舊林,池魚(yú)思故淵。);反問(wèn)為了強(qiáng)調(diào)(兩情若是久長(zhǎng)時(shí),又豈在朝朝暮暮?);夸張是為了強(qiáng)調(diào)和突出(白發(fā)三千丈,緣愁似個(gè)長(zhǎng));對(duì)偶是為了增強(qiáng)詩(shī)詞的音樂(lè)美,表意凝煉,抒情酣暢,增強(qiáng)詩(shī)歌外在形式美(無(wú)邊落木蕭蕭下,不盡長(zhǎng)江滾滾來(lái));在古代詩(shī)歌中,借代、通感等都是常見(jiàn)的修辭手法,學(xué)生應(yīng)加以注意。尤其注意比喻、比擬的區(qū)別(比喻注重不同事物之間的相似性,比擬注重化無(wú)情為有情),借代是用事物相關(guān)的東西來(lái)代替該事物,如部分代替整體(帆可代船,羽林代士兵),對(duì)偶與對(duì)比的區(qū)別(對(duì)比主要是意義內(nèi)容的相反或相對(duì),而不管結(jié)構(gòu)形式如何;對(duì)偶主要是結(jié)構(gòu)形式上的對(duì)稱,要求字?jǐn)?shù)相等、結(jié)構(gòu)相同或相似),還要注意多種修辭手法的綜合交叉運(yùn)用。(3)正面描寫(xiě)——?jiǎng)屿o結(jié)合
如王維的《山居秋暝》:空山新雨后,天氣晚來(lái)秋。明月松間照,清泉石上流。竹喧歸浣女,蓮動(dòng)下漁舟。隨意春芳歇,王孫自可留。頷聯(lián)描寫(xiě)?zhàn)┰庐?dāng)空,青松如蓋,是靜景描寫(xiě),山泉清冽,流瀉山石之上,是動(dòng)景描寫(xiě)。山泉因雨后水量充足,流勢(shì)增大,從石上流過(guò),淙淙有聲,以動(dòng)襯靜,反襯出山中的寧?kù)o。詩(shī)人描寫(xiě)景物非常注重景物動(dòng)態(tài)與靜態(tài)的相互映襯,可以動(dòng)靜結(jié)合,也可以以靜寫(xiě)動(dòng),以動(dòng)寫(xiě)靜,以動(dòng)襯靜。動(dòng)靜的結(jié)合往往和襯托相關(guān)。比如李白的《望廬山瀑布》“遙看瀑布掛前川”寫(xiě)出了遙看瀑布的第一眼形象,像一條巨大的白練掛在山間,“掛”字化動(dòng)為靜。再比如王維的《鳥(niǎo)鳴澗》“人閑桂花落,夜靜春山空。月出驚山鳥(niǎo),時(shí)鳴春澗中”用花落、月出、鳥(niǎo)鳴突出了春澗的幽靜,王籍的《入若耶溪》“蟬噪林愈靜,鳥(niǎo)鳴山更幽?!币彩且月晫?xiě)靜,以動(dòng)襯靜?!吧轿桡y蛇,原馳蠟像”是以動(dòng)寫(xiě)靜。
(4)正面描寫(xiě)——虛實(shí)結(jié)合
如柳永《雨霖鈴》:寒蟬凄切,對(duì)長(zhǎng)亭晚,驟雨初歇。都門(mén)帳飲無(wú)緒,留戀處,蘭舟摧發(fā)。執(zhí)手相看淚眼,竟無(wú)語(yǔ)凝噎。念去去千里煙波,暮靄沉沉楚天闊。多情自古傷離別,更那堪冷落清秋節(jié)。今宵酒醒何處,楊柳岸、曉風(fēng)殘?jiān)?。此去?jīng)年,應(yīng)是良辰好景虛設(shè)。便縱有千種風(fēng)情,更與何人說(shuō)。
詞中“今宵酒醒何處,楊柳岸曉風(fēng)殘?jiān)隆痹O(shè)想別后的情景:一舟離岸,詞人酒醒夢(mèng)回,只見(jiàn)習(xí)習(xí)曉風(fēng)吹拂蕭蕭疏柳,一彎殘?jiān)赂邟炝?,想像中別后的凄涼景象倍增眼前斷人腸的離愁。詩(shī)歌中,“實(shí)”是指客觀世界中存在的實(shí)象、實(shí)事、實(shí)境,“虛”是想象的情景。二者互相聯(lián)系,互相滲透轉(zhuǎn)化,可以達(dá)到虛實(shí)相生的境界,豐富詩(shī)中的意象,開(kāi)拓詩(shī)中的意境,為讀者提供廣闊的審美空間。
例如李白的《夢(mèng)游天姥吟留別》“日月照耀金銀臺(tái)”、“霓為衣兮風(fēng)為馬”、“虎鼓瑟兮鸞回車(chē)”、“仙之人兮列如麻”就是用想像中美好的仙境。歐陽(yáng)修的《踏莎行》:“候館梅殘,溪橋柳細(xì),草薰風(fēng)暖搖征轡。離愁漸遠(yuǎn)漸無(wú)窮,迢迢不斷如春水。寸寸柔腸,盈盈粉淚,樓高莫近危闌倚。平蕪盡處是春山,行人更在春山外?!鄙祥爩?xiě)實(shí),通過(guò)初春景象反襯“行人”的離愁別緒。下闋實(shí)虛,“行人”想像妻子憑欄遠(yuǎn)望,思念“行人”的愁苦之景,從而將離愁別緒抒發(fā)得淋漓盡致。李煜《虞美人》“雕欄玉砌應(yīng)猶在,只是朱顏改”,“雕欄玉砌”“故國(guó)”是回憶中的景物。姜夔《揚(yáng)州慢》中的虛景“春風(fēng)十里”,實(shí)景“盡薺麥青青”,昔盛更顯今衰。想像是虛寫(xiě)的關(guān)鍵,虛是為實(shí)服務(wù)的。(5)正面描寫(xiě)——色彩的渲染
如杜甫的《絕句》:兩個(gè)黃鸝鳴翠柳,一行白鷺上青天。窗含西嶺千秋雪,門(mén)泊東吳萬(wàn)里船。
作者突出了剛抽新芽的柳枝,成雙成對(duì)的黃鸝,自由自在的白鷺和一碧如洗的青天,四種鮮明的顏色新鮮而且明麗,構(gòu)成了絢麗的圖景。色彩的渲染可以傳達(dá)出愉快的情感,也可以反襯思?xì)w的感傷,如杜甫的另一首《絕句》“江碧鳥(niǎo)逾白,山青花欲燃。今春看又過(guò),何日是歸年?”就是濃彩重墨渲染了一派怡人風(fēng)光,山青翠,花紅艷,鳥(niǎo)翎白,碧波綠,景象清新,賞心悅目,卻是為寫(xiě)下文勾起漂泊的傷感作鋪墊。白居易《憶江南》“日出江花紅勝火,春來(lái)江水綠如藍(lán)”是通過(guò)紅日映花襯水增加了色彩的明亮度,追憶江南美景的;駱賓王的《鵝》“鵝、鵝、鵝,曲項(xiàng)向天歌。白毛浮綠水,紅掌撥清波?!冰Z潔白的羽毛浮于綠水之上,紅掌撥動(dòng),綠水泛波,紅、白、綠三色對(duì)比有寒有暖,鮮明而協(xié)調(diào),在藍(lán)天、白云之下,在綠草如茵的碧水、清澈見(jiàn)底的池塘邊,“白毛”與“綠水”比美,“紅掌”與“清波”爭(zhēng)勝,多么絢麗的畫(huà)面,多么富于童趣和生活氣息。真可謂狀物如在目前。(6)正面描寫(xiě)——觀察角度的變化
如杜牧的《山行》:遠(yuǎn)上寒山石徑斜,白云生處有人家。停車(chē)坐愛(ài)楓林晚,霜葉紅于二月花。
頭兩句描繪了秋山遠(yuǎn)景。第一句描寫(xiě)了秋山高遠(yuǎn)的景象,表現(xiàn)了詩(shī)人勇于攀登的精神。第二句描寫(xiě)了秋山中的一個(gè)特定場(chǎng)景,在白云浮動(dòng)的天空下有幾戶人家隱約可見(jiàn)。后兩句描繪了秋山近景?!八~紅于二月花”一句,生機(jī)勃勃,鮮艷奪目,清新剛勁,形象鮮明,給人一種秋光勝似春光的美感。描寫(xiě)要有層次性———由遠(yuǎn)到近或由下而上等。蘇軾的《題西林壁》中說(shuō):“橫看成嶺側(cè)成峰,遠(yuǎn)近高低各不同。”看同一景物,觀察者所處的方位不同,角度不同,俯視,仰視,遠(yuǎn)眺,近看,視覺(jué)形象會(huì)呈現(xiàn)千姿百態(tài),變化萬(wàn)千。從不同角度描寫(xiě),會(huì)使讀者對(duì)所描寫(xiě)的景物產(chǎn)生更加全面的認(rèn)識(shí),獲得更完美的感受。
鑒賞古代詩(shī)歌中的描寫(xiě),首先要了解有那些常見(jiàn)的鑒賞角度,主要是多角度描寫(xiě)———正面描寫(xiě)(比較簡(jiǎn)單,這里不作研究)和側(cè)面描寫(xiě)中的襯托、動(dòng)靜結(jié)合、色彩的渲染、點(diǎn)面結(jié)合、虛實(shí)相生、遠(yuǎn)近高低觀察角度的變化等。各種手法之間可能有交錯(cuò)運(yùn)用的現(xiàn)象,比如以動(dòng)襯靜、色彩的對(duì)比也可以是反襯。其次要善于根據(jù)詩(shī)歌中所描寫(xiě)的景物事物特點(diǎn)和人物形象,去探究作者是利用什么手法技巧達(dá)到這一表現(xiàn)目的的。
第四篇:修飾答案
專題二:修辭手法
修辭手法的作用:
(1)比喻的作用是能將表達(dá)的內(nèi)容說(shuō)得生動(dòng)、具體、形象。給人以深刻鮮明的形象,使說(shuō)理更透徹。
(2)擬人的作用是使具體事物人格化,語(yǔ)言生動(dòng)、形象。
(3)夸張的其作用是揭示事物的本質(zhì),烘托氣氛,引起聯(lián)想,使表達(dá)的事物更突出、更鮮明。
(4)排比的作用是增強(qiáng)語(yǔ)言氣勢(shì),深化思想內(nèi)容,增強(qiáng)文章的說(shuō)服力和感染力。
(5)對(duì)偶的主要作用是整齊勻稱,節(jié)奏感強(qiáng),高度概括,有音樂(lè)美。
(6)對(duì)比的作用是能使語(yǔ)言色彩鮮明,事物的性質(zhì)、特征等更加鮮明突出。
(7)反復(fù)的作用是突出思想,強(qiáng)調(diào)感情,有時(shí)能夠加強(qiáng)節(jié)奏感。
(8)借代的作用是可引人聯(lián)想,形象突出、生動(dòng)、具體、使特點(diǎn)更鮮明。
(9)設(shè)問(wèn)的作用是提醒人們注意、引起思考、突出某些內(nèi)容。
(10)反問(wèn)的作用是加強(qiáng)語(yǔ)氣,激發(fā)讀者的感情,以使讀者留下深刻印象。實(shí)戰(zhàn)操練:
(一)風(fēng)
楊絳
為什么天地這般復(fù)雜地把風(fēng)約束在中間?【A】硬的東西把它擋住,軟的東西把它牽繞住,不管它怎樣猛烈地吹,吹過(guò)遮天的山峰,掙脫繚繞的樹(shù)林,掃過(guò)遼闊的海洋,終逃不到天地之外去?;蛘邽榇?,風(fēng)一輩子不能平靜,和人的感情一樣。
也許最平靜的風(fēng),還是拂拂微風(fēng)。果然紋風(fēng)不動(dòng),不是平靜,卻是醞釀風(fēng)暴了。蒸悶的暑天,風(fēng)重重地把天壓低了一半,樹(shù)梢頭的小葉子都沉沉垂著,風(fēng)一絲不動(dòng),可是何曾平靜呢?【B】風(fēng)的力量,已經(jīng)可以預(yù)先覺(jué)到,好像蹲伏的猛獸,不在睡覺(jué),正要縱身遠(yuǎn)跳。只有拂拂微風(fēng)最平靜,沒(méi)有東西去阻撓它:樹(shù)葉兒由它撩撥,楊柳順著它彎腰,花兒草兒都隨它俯仰,門(mén)里窗里任它出進(jìn),輕云附著它浮動(dòng),水面被它偎著,也柔和地讓它搓揉,隨著早晚的溫涼、四季的寒暖,一陣微風(fēng),像那悠遠(yuǎn)輕淡的情感,使天地浮現(xiàn)出憂喜不同的顏色。有時(shí)候一陣風(fēng)是這般輕快,這般高興,頑皮似的一路拍打撥弄。有時(shí)候淡淡的帶些清愁,有時(shí)候潤(rùn)潤(rùn)的帶些溫柔;有時(shí)候亢爽,有時(shí)候凄涼。誰(shuí)說(shuō)天地?zé)o情?它只微微的笑,輕輕地嘆息,只許抑制著風(fēng)拂拂吹動(dòng)。因?yàn)橐环潘?,天地便主持不住?/p>
假如一股流水,嫌兩岸縛束太緊,它只要流、流、流,直流到海,便沒(méi)了 1
邊界,便自由了。風(fēng)呢,除非把它緊緊收束起來(lái),卻沒(méi)法兒解脫它。放松些,讓它吹重些吧;樹(shù)枝兒便攔住不放,腳下一塊石子一棵小草都橫著身子伸著臂膀來(lái)阻擋。窗嫌小,門(mén)嫌狹,都擠不過(guò)去。墻把它遮住,房子把它罩著。但是風(fēng)顧得這些么?沙石不妨帶著走,樹(shù)葉兒可以卷個(gè)光,墻可以推倒,房子可以掀翻。再吹重些,樹(shù)木可以拔掉,山石可以吹塌,可以卷起大浪,把大塊土地吞沒(méi),可以把房屋城堡一股腦兒掃個(gè)干凈。聽(tīng)它狂嗥獰笑怒吼哀號(hào)一般,愈是阻擋它,愈是發(fā)狂一般推撞過(guò)去。誰(shuí)還能管它么?地下的泥沙吹在半天,天上的云壓近了地,太陽(yáng)沒(méi)了光輝,地上沒(méi)了顏色,直要把天地?fù)v毀,恢復(fù)那不分天地的混沌。
不過(guò)風(fēng)究竟不能掀翻一角青天,撞將出去。不管怎樣猛烈,畢竟悶在小小一個(gè)天地中間。吹吧,只能像海底起伏鼓動(dòng)著的那股力量,掀起一浪,又被壓伏下去。風(fēng)就是這般壓在天底下,吹著吹著,只把地面吹起成一片凌亂,自己照舊是不得自由。末了,像盛怒到極點(diǎn),不能再怒,化成懨懨的煩悶懊惱;像悲哀到極點(diǎn),轉(zhuǎn)成綿綿幽恨;狂歡到極點(diǎn),變?yōu)槠鄾?,失望到極點(diǎn),成了淡漠。風(fēng)盡情鬧到極點(diǎn),也乏了。不論是嚴(yán)冷的風(fēng),蒸熱的風(fēng),不論是哀號(hào)的風(fēng),怒叫的風(fēng),到末了,漸漸兒微弱下去,剩幾聲悠長(zhǎng)的嘆氣,便沒(méi)了聲音,好像風(fēng)都吹完了。
但是風(fēng)哪里就吹完了呢。只要聽(tīng)平靜的時(shí)候,夜晚黃昏,往往有幾聲低吁,像安命老人,無(wú)可奈何的嘆息,風(fēng)究竟還不肯馴伏?;蛘呔蜑榇税?,天地把風(fēng)這般緊緊的約束著。
1.第一段中說(shuō),“風(fēng)一輩子不能平靜”;第二段中又說(shuō),“只有拂拂微風(fēng)最平靜”。(4分)
(1)“風(fēng)一輩子不能平靜”?
(2)什么情況下,“一輩子不能平靜”的風(fēng)可以成為“最平靜”的風(fēng)? 2.作者認(rèn)為應(yīng)該如何對(duì)待“風(fēng)”?(4分)3.文中畫(huà)線【A】【B】語(yǔ)句,任選一句加以賞析。
4.你從文中“風(fēng)”的形象得到什么啟迪,請(qǐng)聯(lián)系語(yǔ)境,展開(kāi)聯(lián)想,談其中一點(diǎn)看法。(4分)
參考答案:
1.(1)因?yàn)樗惶斓鼐o緊約束其中,終逃不到天地之外去。(2分)
(2)沒(méi)有什么東西去阻撓它。(2分)
2.(1)嚴(yán)加管束(把風(fēng)約束在天地之間);(2)給予一定的活動(dòng)自由(對(duì)風(fēng)的活動(dòng) 2
不加阻撓);(3)即使釀成風(fēng)暴,也不必驚慌。(答對(duì)兩點(diǎn)即給分)
3.【A】運(yùn)用排比修辭手法,強(qiáng)調(diào)了風(fēng)的猛烈,富有氣勢(shì);同時(shí)“軟”“ 硬”二字生動(dòng)形象地寫(xiě)出了風(fēng)的兩種類型,句式對(duì)稱,有節(jié)奏,寫(xiě)出了天地對(duì)風(fēng)的約束。
【B】運(yùn)用了比喻的修辭手法,生動(dòng)形象地寫(xiě)出了風(fēng)暴來(lái)臨前不平靜的態(tài)勢(shì)。
4.聯(lián)系本文主旨,可以從個(gè)人感情角度談,也可以從社會(huì)矛盾角度談。如:
①人的感情不會(huì)永遠(yuǎn)平靜無(wú)波,總會(huì)有不平靜的時(shí)候,遇到這種情況,應(yīng)該讓它有適度的釋放。
②社會(huì)不可能沒(méi)有矛盾,對(duì)待社會(huì)矛盾,不能采取壓制的方式,而應(yīng)該讓它有適度釋放的機(jī)會(huì),否則,將會(huì)釀成社會(huì)的大**。
③對(duì)待感情的波瀾(社會(huì)矛盾),既要讓它適度釋放(表現(xiàn)),又要給予一定的控制,否則后果將不堪設(shè)想。
④對(duì)待激化了的矛盾(個(gè)人感情),不必驚惶失措,因?yàn)槿魏蚊?個(gè)人感情)最終都是可以解決的。
以上只是舉例,答案不必強(qiáng)求一致,只要符合原文的要旨,言之成理即可。
(二)荷 趙文美
無(wú)數(shù)次邂逅荷,從未像現(xiàn)在這樣令我感到心靈的震撼。這個(gè)夏天,天大旱,烈日炙烤著大地,熱浪蒸騰著大地。漸漸地,碧波蕩漾的湖泊干涸了??此時(shí)此刻,荷臨危不懼,坦然自若,正滿面春風(fēng)地迎接著更嚴(yán)酷的考驗(yàn)的到來(lái)。
這是怎樣一番驚人的情景!往日蓄著一池清洌洌碧水的荷塘滴水不見(jiàn)。在早已焦渴得干巴巴龜裂的土地上,一群群壯碩挺拔的荷昂揚(yáng)如常地站立,周?chē)€有倔強(qiáng)地從地縫中鉆出尖尖角的小荷。原來(lái)在水里生水里長(zhǎng)的荷,雖無(wú)雨洗塵、無(wú)水滋潤(rùn),但它依然綠干亭亭翠葉田田,片片相連相擁相依,充溢著一派勃勃生機(jī)。一枝枝飽滿的花蕾,在灼灼陽(yáng)光下,顯得出奇的艷麗、鮮亮,搖曳在清新、生動(dòng)的碧綠中,3
豐潤(rùn)鮮靈有留香。
荷,在惡劣的環(huán)境中創(chuàng)造著生命的奇跡。它勃發(fā)的英姿,是對(duì)肆虐旱魔的冷冷嘲諷,更是不言屈服的頑強(qiáng)抗?fàn)帯?/p>
早就聽(tīng)說(shuō)過(guò)荷的故事。一顆在地層深處沉睡幾千年的古蓮子,一經(jīng)挖出,只要給它充足的陽(yáng)光和水分,它便奇跡般地長(zhǎng)出綠葉,綻放花朵,結(jié)出果實(shí)。這就是生命不甘泯滅的勇敢而執(zhí)著的荷。唯有它在風(fēng)風(fēng)雨雨的歲月中,卓然傲立,風(fēng)吹不退縮,雨淋不著痕,一副以不變應(yīng)萬(wàn)變的王者風(fēng)范。生命的高貴、圣潔與它不屈不撓的精神偉力相隨相伴。
每有狂風(fēng)襲來(lái),靜靜的荷便如千萬(wàn)勇士高舉著盾牌,凝聚起強(qiáng)大的力量,戰(zhàn)無(wú)不勝。最終,狂妄的風(fēng)在它的面前乖乖地?cái)⊥?。荷,靜立如山,依然故我。
若遇秋雨驟至:站成一林舞姬的荷:便如玉指纖纖彈起無(wú)數(shù)古箏:那頓挫有致、浸透著生命高貴氣息的縷縷清音,挾著空靈、灑脫的美韻輕輕飛揚(yáng)?!扒镪幉簧⑺w晚,留得殘荷聽(tīng)雨聲?!被畹镁瘢畹们灏?,即使紅顏褪去青春不再,生命的歌也是回腸蕩氣。
當(dāng)凜冽的寒風(fēng)裹著雪片飛來(lái),在荷的周?chē)偪竦嘏叵?、翻卷時(shí),荷的葉,被撕碎了,荷的枝,被折斷了。荷還是不肯摧眉折腰,還是不肯跪倒于地,唯見(jiàn)冰天雪地中屹立著它獨(dú)立自尊、不餒不屈的錚錚傲骨。
在風(fēng)霜雨雪的洗禮中,在百般磨難的錘煉中,荷,洗盡鉛華,風(fēng)清骨俊,矯健 4
中自有別樣的典雅端莊、柔媚明艷,真正的“清水出芙蓉,天然去雕飾”。它不受風(fēng)塵誘惑的瀟灑,不懼艱險(xiǎn)摧殘的神韻,不知令多少愛(ài)荷的人如癡如醉!那些精神的種荷者,更是將荷看做高尚人格的化身和楷模。
楚楚動(dòng)人的荷,永遠(yuǎn)是一段迷人的旋律。穿行在畫(huà)屏般的荷塘,風(fēng)吹綠葉送爽,縷縷荷香盈袖。今夜,不知誰(shuí)會(huì)沉醉忘卻歸路,在這高雅、脫俗的凈地,細(xì)拂心塵,頓開(kāi)茅塞,靜靜聆聽(tīng)一次有關(guān)生命真諦的訴說(shuō)?
荷,不答,只有被它感動(dòng)得寵辱皆忘的人,才能走進(jìn)它滿載生命之花的夢(mèng)中。
(選自《散文百家》,有刪改)
15.請(qǐng)參照示例,用簡(jiǎn)潔的語(yǔ)言補(bǔ)寫(xiě)荷在惡劣的環(huán)境中創(chuàng)造的生命奇跡。(4分)
示例:烈日炙烤下,荷臨危不懼,坦然自若,迎接考驗(yàn)的到來(lái)。沉睡千年后,狂風(fēng)襲來(lái)時(shí)。
秋雨驟至?xí)r,冰天雪地里,16.文中有兩個(gè)畫(huà)橫線的句子,請(qǐng)任選一句加以品析。(3分)
①原來(lái)在水里生水里長(zhǎng)的荷,雖元雨洗塵、無(wú)水滋潤(rùn),但它依然綠干亭亭翠葉田田,片片相連相擁相依,充溢著一派勃勃生機(jī)。
品析:
②若遇秋雨驟至,站成一林舞姬的荷,便如玉指纖纖彈起無(wú)數(shù)古箏,那頓挫有致、浸透著生命高貴氣息的縷縷清音,挾著空靈、灑脫的美韻輕輕飛揚(yáng)。
品析:
17.下面贊“荷”的詩(shī)句中,你認(rèn)為最能體現(xiàn)“精神的種荷者,更是將荷看做高尚人格的化身和楷?!钡囊豁?xiàng)是[ ]。(3分)
A.清水出芙蓉,天然去雕飾。(唐·李白《書(shū)懷贈(zèng)江夏韋太守良宰》)
B.糝徑楊花鋪白氈,點(diǎn)溪荷葉疊青錢(qián)。(唐·杜甫《絕句漫興其七》)
C.出淤泥而不染,濯清漣而不妖。(宋·周敦頤《愛(ài)蓮說(shuō)》)
D.接天蓮葉無(wú)窮碧,映日荷花別樣紅。(宋·楊萬(wàn)里《曉出凈慈寺送林子方》)
18.文中結(jié)尾說(shuō):“只有被它感動(dòng)得寵辱皆忘的人,才能走進(jìn)它滿載生命之花的夢(mèng)中。”對(duì)這句話你怎樣理解?(4分)
參考答案
15.荷不甘泯滅,勇敢執(zhí)著,奇跡般生長(zhǎng)。荷高舉盾牌,凝聚力量,靜立如山。荷站成一林,活得精神、活得清白。荷獨(dú)立自尊,不餒不屈,傲然屹立。(4分。每點(diǎn)l分。意思符合即可)
16.①通過(guò)轉(zhuǎn)折句,運(yùn)用擬人的修辭手法,生動(dòng)地寫(xiě)出荷在干涸龜裂的惡劣環(huán)境中依然團(tuán)結(jié)在一起,倔強(qiáng)地生長(zhǎng),創(chuàng)造著生命的奇跡o ②運(yùn)用比喻的修辭手法,形象地將“荷”比作“舞姬”,將“荷塘雨聲”比作“舞姬”彈古箏發(fā)出的“清音”,寫(xiě)出雨驟花謝,但荷依然保持空靈、灑脫的美好神韻。(3分。答出句式或修辭1分,內(nèi)容l分,作用l分)17.C(3分)
18.只有與荷一樣不懼艱難、高雅脫俗的人,才能在惡劣的環(huán)境下、百般的磨難中創(chuàng)造生命的奇跡,領(lǐng)悟生命的真諦。(4分。意思符合即可)
(三)落葉是疲倦的蝴蝶
①夕陽(yáng)老去,西風(fēng)漸緊。
②葉落了,秋就乘著落葉來(lái)了。秋來(lái)了,人就隨著秋瘦了,隨著秋愁了。
③但金黃的落葉沒(méi)有哀愁,它懂得如何在秋風(fēng)中安慰自己,它知道,自己的沉睡是為了新的醒來(lái)。
④落葉有落葉的美,它是疲倦了的蝴蝶。我甚至能感覺(jué)到落下來(lái)的葉子們輕輕的叫喊。
⑤我看到了故鄉(xiāng),看到了老家門(mén)前那棵生生不息的老樹(shù),看到了炊煙為游子的歸來(lái)而晃動(dòng)。對(duì)于遠(yuǎn)走他鄉(xiāng)的腳,對(duì)于飛上天空的翅膀,炊煙是永不能扯斷的繩子。7
就像路口的大樹(shù),它的枝干指著許多的路,而起點(diǎn)只有一個(gè),終點(diǎn)也只有一個(gè),每個(gè)離開(kāi)村莊的人,都帶走了一片綠葉,卻留下一條根。
⑥我看到了故鄉(xiāng)的山崖,看到石頭在山崖上,和花朵一起爭(zhēng)著綻放;看到羊在山崖上,和云一起爭(zhēng)著飄蕩。
⑦我看到了我的屋檐,冬天結(jié)滿冰凌,夏天蓄滿鳥(niǎo)鳴,一串紅辣椒常常被看作是窮日子里的火種。守著屋檐上下翻飛的麻雀,總是那么和諧地與莊戶人家好好地過(guò)日子。時(shí)時(shí)刻刻纏繞著那顆在路上的心的,就是這個(gè)屋檐。
⑧我看到了母親,為了不讓我們?cè)诙炖锇?,她拾起一?jié)節(jié)枯枝,猶如把那些破碎的日子一一點(diǎn)綴,然后,把溫暖交到我們手上。柴垛越碼越高,母親卻越來(lái)越矮。我看到母親那對(duì)干癟的****,像兩只殘缺不整的討飯的碗,卻為我們討來(lái)了一生的盛宴。母親在灶坑里點(diǎn)燃的紅色的昏暗的火焰,成了那些夜里我們唯一可以依靠的肩膀,唯一可以握住的暖暖的手。
⑨遠(yuǎn)行的人,是什么聲音使你隱姓埋名?是什么風(fēng)將你吹往他鄉(xiāng)?秋天就是這樣,把葉子紛紛抖落,把人的思念紛紛掛上枝頭。是該回去了,去看看那棵生下我、讓我因成長(zhǎng)而綠又讓我因成熟而黃的大樹(shù),還有落葉里沉睡著的母親。母親,我匆匆的腳步就是你密密縫合的針腳。母親,背著破爛行李的我要?dú)w來(lái),找到了天堂的我也要?dú)w來(lái)。
⑩一層層落葉鋪在回家的路上,我要踩著溫暖的地毯去看望母親。母親也像這 8
落葉,從燦爛的枝頭緩緩地落下來(lái),只是,她沒(méi)有再醒來(lái)。
⑾這個(gè)世界,能留住人的不是房屋,能帶走人的不是道路。歲月無(wú)法伸出一只手,替你抓住過(guò)往的云。如果一切還能重新拾撿回來(lái),母親,我要去拾取你的笑容、腳步和風(fēng),用你的愛(ài)做燈油,用你的善良做捻兒,我要點(diǎn)燃它,放到心里,一輩子不忘回家的路。
⑿天冷了,樹(shù)的葉子落下來(lái),樹(shù)離我很近。我似乎聽(tīng)見(jiàn)了它們?cè)诰従從獭?/p>
⒀天冷了,它們一排一排地站著,心中堅(jiān)守著的秘密一陣陣地疼痛起來(lái)。但葉子落下來(lái),掩蓋了一切。
⒁母親的墳上有一棵樹(shù),那是我寫(xiě)給母親的詩(shī)。每到秋天,葉子紛紛落下,把母親的墳頭遮蓋得嚴(yán)嚴(yán)實(shí)實(shí)。那些在風(fēng)中微微呻吟著的落葉,遠(yuǎn)遠(yuǎn)望去像一群疲倦了的蝴蝶,靜靜地收攏著它們一生的美麗瞬間:一朵紅暈,一個(gè)誓言,或者是簡(jiǎn)單的一聲嘆息。
(選自 2007年第 1期《讀者》,作者朱成玉。有刪節(jié)。)
16、顯然,作者把落葉比喻成“疲倦了的蝴蝶”不僅僅是寫(xiě)落葉,你認(rèn)為作者想借此表達(dá)什么?為什么要這樣表達(dá)?(4分)
17、請(qǐng)你寫(xiě)出⑧段畫(huà)線句的含義。(3分)
18、請(qǐng)你從文中選取一個(gè)富有修辭特色的語(yǔ)句進(jìn)行賞析。(不少于 60字)(4分)
19、⑨段中畫(huà)線句與我們傳統(tǒng)觀念里的“事業(yè)不成誓不回”有較大出入,請(qǐng)你就這一點(diǎn)談?wù)勛约旱目捶ā?4分)
參考答案:
16、作者借落葉像“疲倦了的蝴蝶”來(lái)比喻“我”是一只在外飛倦了想要飛回家去的“蝴蝶”。文章試圖通過(guò)落葉這一環(huán)境的烘托和“疲倦了的蝴蝶”這一比喻,形象生動(dòng)地表達(dá)自己對(duì)故鄉(xiāng)的眷念和對(duì)母親的深切懷念。
17、母親的辛勤勞動(dòng)使家里越來(lái)越殷實(shí)(富有),但歲月(年紀(jì))和勞累卻壓彎了母親的背,使母親變得“越來(lái)越矮”。(意近即可。)
18、示例:“那些在風(fēng)中微微呻吟著的落葉,遠(yuǎn)遠(yuǎn)望去像一群疲倦了的蝴蝶,靜靜地收攏著它們一生的美麗瞬間?!本渥舆\(yùn)用比喻兼擬人的修辭方法,將人的情感賦予落葉,以“呻吟”形象生動(dòng)地寫(xiě)出了“我”對(duì)母親的深切懷念,以“疲倦”形象生動(dòng)地反映了“我”在外漂泊的疲憊,與文章開(kāi)頭形成對(duì)比和呼應(yīng),深化了文章主題。(摘抄出運(yùn)用了修辭的句子得 1分,能寫(xiě)出表達(dá)效果得 3分。)
19、示例:無(wú)論我們?cè)谕饷骊J蕩世界成功與否,心里都要永遠(yuǎn)裝著自己的家鄉(xiāng)和親人,如果為的是“大家”的利益而舍家忘身是值得提倡的,如果僅僅是為“衣錦還鄉(xiāng)”而“不破樓蘭終不回”則不宜大加贊揚(yáng)。
第五篇:修飾求職信
職場(chǎng)上的弱勢(shì)主要是指:頻繁跳槽或更換行業(yè)、畢業(yè)生初出校門(mén)、工作經(jīng)驗(yàn)太少、沒(méi)有學(xué)位或?qū)W歷太低等。求職時(shí)有人可能在潛意識(shí)里想到要在簡(jiǎn)歷和個(gè)人求職信中做假,“修飾”一下自己的求職信,這是千萬(wàn)要不得的,因?yàn)椤凹俚挠肋h(yuǎn)真不了”,而假的一旦被識(shí)破,依靠蒙騙而獲得的“真”也將不復(fù)存在。明智的做法是對(duì)你的簡(jiǎn)歷進(jìn)行科學(xué)取舍,適當(dāng)突出重點(diǎn),合理?yè)P(yáng)棄,這樣,既可使你的求職信或簡(jiǎn)歷更加吸引人,同時(shí)又保持了真實(shí)性。
實(shí)習(xí)寫(xiě)進(jìn)求職信中
其中,實(shí)習(xí)工作應(yīng)作為相應(yīng)的工作經(jīng)驗(yàn)來(lái)寫(xiě),因?yàn)檫@期間的工作性質(zhì)和內(nèi)容與許多工作相似,它們往往需要實(shí)習(xí)者自主完成多項(xiàng)任務(wù)。此外,如果畢業(yè)生在校時(shí)早已學(xué)過(guò)許多與所應(yīng)聘工作有直接關(guān)聯(lián)的知識(shí),則有必要在技術(shù)欄目中體現(xiàn)出來(lái)。如果你熟悉某一領(lǐng)域最新的趨勢(shì)與技術(shù),也應(yīng)毫不謙虛地寫(xiě)出來(lái),以提升自己的人才價(jià)值。當(dāng)然,如果你有其他行業(yè)的工作技巧也不要省略,這些雖然與應(yīng)聘工作關(guān)系不大或沒(méi)有直接的關(guān)系,但其工作經(jīng)驗(yàn)同樣可用于支持你的能力,這至少能夠證明你有學(xué)習(xí)、研究并盡快適應(yīng)各種工作的能力。這樣突出自己的長(zhǎng)處,就是求職信的重點(diǎn)要點(diǎn)。加上寫(xiě)言簡(jiǎn)意賅的求職信也是很重要的。
好范文的劣勢(shì)
對(duì)于初出茅廬的畢業(yè)生,因?yàn)榕c社會(huì)實(shí)際接觸得少,尚未經(jīng)歷過(guò)謀職的挫折,往往自我感覺(jué)都比較好。殊不知,用人單位并不一定樂(lè)于認(rèn)同,很多老板更喜歡有豐富工作經(jīng)驗(yàn)的人。為此,剛畢業(yè)的學(xué)生們將在求職中與那些有相同學(xué)歷但是有更多工作經(jīng)歷的人競(jìng)爭(zhēng)。而因?yàn)闆](méi)有相關(guān)職業(yè)的豐富工作經(jīng)歷,所以,剛出校門(mén)的畢業(yè)生應(yīng)該盡力揚(yáng)其所長(zhǎng)以蓋所短,重點(diǎn)強(qiáng)調(diào)自己最近幾年所受的教育和培訓(xùn)情況,包括那些與應(yīng)聘工作最有直接關(guān)系的特別課程或活動(dòng)。寫(xiě)一封吸引HR求職信此時(shí)是多么的有用呢!
學(xué)歷或?qū)W位低于應(yīng)聘要求時(shí)
現(xiàn)實(shí)生活中,有很多人具有豐富的工作經(jīng)驗(yàn)和超常的實(shí)干能力,卻沒(méi)有相應(yīng)的高等學(xué)歷和學(xué)位,以致在“審”時(shí)便被淘汰,實(shí)在太可惜,也失公平。這就要求有這方面弱勢(shì)的求職者在求職信的教育和經(jīng)驗(yàn)部分慎重行文,揚(yáng)長(zhǎng)避短。如果你具備應(yīng)聘工作所要求的工作經(jīng)歷和專業(yè)技能條件,但卻沒(méi)有良好的教育背景,最聰明也是最簡(jiǎn)單的辦法就是,只列出你曾經(jīng)受到過(guò)的教育和培訓(xùn)的內(nèi)容,以及受訓(xùn)后取得的成績(jī)和應(yīng)用到工作實(shí)踐中的實(shí)績(jī),而不表明你是否具備相關(guān)的學(xué)歷和學(xué)位。這樣做既無(wú)不誠(chéng)實(shí)之嫌,又可以避免你在審查個(gè)人簡(jiǎn)歷這第一關(guān)便被一票否決的噩運(yùn)。如果你能順利通過(guò)初審,在面試中一旦被招聘人員認(rèn)可,他們將會(huì)忽略你的學(xué)歷而認(rèn)同你的能力,甚至或許會(huì)幫助你向老板申請(qǐng)破格錄用。