2009騰迅校園招聘筆試題:不使用中間變量求const字符串長度,即實(shí)現(xiàn)求字符串長度庫函數(shù)strlen函數(shù)。函數(shù)接口聲明如下:int strlen(const char *p);思路分析:?????“
有一個(gè)很笨但也很簡單的方法 , 步驟如下:1.用AVRStudio在“c:\\temp”建立一個(gè)工程,例如叫“test.apr”,然后加入一個(gè)C程序源文件,例如叫“main.c”,現(xiàn)不要著急編譯。此步的關(guān)鍵之處是在建立工程過
在Keil MDK編譯器編譯后,信息欄都會顯示編譯情況,這其中就包含了FLASH跟SRAM的信息。如下圖所示,/*********************************************************************************************/查看FLASH跟S
詞法分析器的任務(wù)是把源文件的字符流轉(zhuǎn)換成記號流。本質(zhì)上它查看連續(xù)的字符然后把它們識別為“單詞”。
Question:什么是IDL和MIDL??Answer:IDL是接口定義語言。MIDL是Microsoft的IDL編譯器。?在用IDL對接口和組件進(jìn)行了描述后,可以用MIDL進(jìn)行編譯,生成相應(yīng)的代理
?這里并沒不是討論大學(xué)課程中所學(xué)的《編譯原理》,只是寫一些我自己對C++編譯器及鏈接器的工作原理的理解和看法吧,以我的水平,還達(dá)不到講解編譯原理(這個(gè)很復(fù)雜,大學(xué)時(shí)幾乎沒學(xué)明白)。要明白的幾個(gè)概念:?
編譯器內(nèi)部函數(shù)__disable_irq、__enable_irq、__disable_fiq和__enable_fiq用于控制IRQ和FIQ中斷。只有當(dāng)處理器處于特權(quán)模式才可以使用這些內(nèi)部函數(shù),因?yàn)檫@些函數(shù)要改變寄存器CPSR和SPSR(ARM7、ARM9等)或者PRIMAS
Data Types數(shù)據(jù)類型數(shù)據(jù)類型位數(shù)字節(jié)數(shù)值域bit10-1Signed char81-128-+127Unsigned char810-255enum8/161or 2-128-+127 or -32768-+32767Signed short162-32768-+32767Unsigned short1620-65535Signed int162-32768-
Reentrant Functions可重入函數(shù)可重入函數(shù)可以被多個(gè)進(jìn)程同時(shí)調(diào)用。當(dāng)一個(gè)可重入函數(shù)執(zhí)時(shí),其他的處理可以中斷這個(gè)函數(shù)的執(zhí)行,而開始執(zhí)行這同一重入函數(shù)。一般情況下,Cx51中的函數(shù)不能夠被同時(shí)多次調(diào)用或者是重入。
現(xiàn)在的存儲器已經(jīng)不像七八年前那樣昂貴了,但是ram相對于rom和eeprom的價(jià)格還是不可同樣看待的,所以程序中節(jié)省內(nèi)存在現(xiàn)在看來還是非常關(guān)鍵的。原因有以下幾點(diǎn):1.ram的存取速度相對于eeprom的存取速度要快很多倍,不
C程序與匯編的接口Cx51程序可以方便地與8051匯編程序接口。A51匯編器是一個(gè)以O(shè)MF-51格式發(fā)射對象模塊的8051宏匯編器。通過觀察一些編程規(guī)則,你可以在C程序中調(diào)用匯編程序,反之亦然。在匯編模塊中聲明的公有變量在C
Pointers指針Cx51支持使用字符*來聲時(shí)一個(gè)指針類型的變量。Cx51的指針可以完成標(biāo)準(zhǔn)C的所有功能。然而,由于8051及其變種的特殊構(gòu)架,Cx51使用兩種類的指針: memory-specific pointers and generic pointers(特定存
Accessing Absolute Memory Locations絕對存儲器訪問C編程語言并不支持明確地提定一個(gè)靜態(tài)或全部變量的存儲位置。有三種方法可以明確地參考存儲器位置:(1)絕對存儲器訪問宏(2)連接器位置控制(3)關(guān)鍵字_at_Abs
Function Declarations函數(shù)聲明Cx51對標(biāo)準(zhǔn)C進(jìn)行了一定的擴(kuò)展,使用這些擴(kuò)展可以:(1)把一個(gè)函數(shù)聲明為一個(gè)中斷過程(2)選擇使用的寄存器組(3)選擇存儲器模式(4)聲時(shí)可重入(5)聲明外部函數(shù)在函數(shù)聲中包含這些
Register Usage寄存器應(yīng)用匯編程序可以在改變當(dāng)前寄存器組中所有寄存器和ACC,B,DPTR以及PSW中的內(nèi)容。當(dāng)在匯編程序中調(diào)用C函數(shù)時(shí),要注意這些寄存器都有可能被C函數(shù)改變。Overlaying Segments段覆蓋如果程序在連接
Cx51對ANSI標(biāo)準(zhǔn)C進(jìn)行了擴(kuò)展。這些擴(kuò)展的大部分是為了支持8051系統(tǒng)的構(gòu)架。這些擴(kuò)展有:8051上的存儲器類型和區(qū)域l 存儲器模型l 存儲器類型指示l 變量類型指示l 位變量和可位尋址數(shù)據(jù)l 特殊功能寄存器l 指針l 函數(shù)屬性
STM8想用C語言編程,很多人都是用的STVD+COSMIC對于軟件的安裝破解什么的,網(wǎng)上搜搜有一大堆,這里就不解釋了這里說說STVD的編譯的事情,STVD本身只支持匯編語言,想用C還得借助COSMIC,所以一些設(shè)置是必須的,就是在
如果是編譯PIC10、PIC12、PIC16系列單片機(jī),用CCS最好。而PIC18/PIC24/dsPIC/PIC32系列,用MCC最好。PIC單片機(jī)的C編譯器只有HI-TECH公司出品PICC編譯器,和CCS公司的CCS編譯器。還有PIC的生產(chǎn)商Microch
介紹HI-TECH公司C編譯器的原理和PICCl8命令行驅(qū)動器的工作過程,并以解決程序代碼限制和庫文件的生成、使用為例,說明其具體實(shí)現(xiàn)方法,解決采用PICCl8進(jìn)行應(yīng)用的實(shí)際工程問題。
ARM 編譯程序通常將全局變量對齊到自然尺寸邊界上,以便通過使用 LDR和 STR 指令有效地存取這些變量。這種內(nèi)存訪問方式與多數(shù) CISC (Complex Instruction Set Computing)體系結(jié)構(gòu)不同,在CISC體系結(jié)構(gòu)下,指令直接存取未對齊的數(shù)據(jù)。因而,當(dāng)需要將代碼從CISC 體系結(jié)構(gòu)向 ARM 處理器移植時(shí),內(nèi)存訪問的地址對齊問題必須予以注意。在RISC體系結(jié)構(gòu)下,存取未對齊數(shù)據(jù)無論在代碼尺寸或是程序執(zhí)行效率上,都將付出非常大的代價(jià)。