日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]Segment Naming Conventions程序段命名約定Cx51編譯器生成的目標(biāo)(程序代碼,程序數(shù)據(jù)和常量數(shù)據(jù))都以程序段的形式存放,段是代碼和數(shù)據(jù)的單元。一個(gè)段可能是可重定位的,也可能地址是絕對(duì)的。每一個(gè)可重定位的段都

Segment Naming Conventions程序段命名約定

Cx51編譯器生成的目標(biāo)(程序代碼,程序數(shù)據(jù)和常量數(shù)據(jù))都以程序段的形式存放,段是代碼和數(shù)據(jù)的單元。一個(gè)段可能是可重定位的,也可能地址是絕對(duì)的。每一個(gè)可重定位的段都有一個(gè)類型和一個(gè)名字。

段名包括:module_name。module_name是聲明這個(gè)段的源文件的名字(不包含驅(qū)動(dòng)器名,路徑和擴(kuò)展名)。為了能適應(yīng)現(xiàn)有的各種各樣的軟件和硬件工具,所有段名都一律大寫。

每個(gè)段名都有一個(gè)前綴,這個(gè)前綴對(duì)應(yīng)于段所用的存儲(chǔ)器類型。這個(gè)前綴放在兩個(gè)問(wèn)號(hào)(?)之間。下面列出幾種標(biāo)準(zhǔn)的段名前綴:

段前綴 存儲(chǔ)器類型 描述

?PR? program 可執(zhí)行的程序代碼

?CO? code 程序存儲(chǔ)器中的常量數(shù)據(jù)

?BI? bit 內(nèi)部數(shù)據(jù)存儲(chǔ)器中的位數(shù)據(jù)

?BA? bdata 內(nèi)部數(shù)據(jù)存儲(chǔ)器中的位可尋址數(shù)據(jù)

?DT? data 內(nèi)部數(shù)據(jù)存儲(chǔ)器Internal data memory

?FD? far far memory (RAM space)

?FC? const far far memory (constant ROM space)

?ID? idata 間接尋址的內(nèi)部數(shù)據(jù)存儲(chǔ)器Indirectly-addressable internal data memory

?PD? pdata 分頁(yè)的外部數(shù)據(jù)存儲(chǔ)器Paged data in external data memory

?XD? xdata 外部數(shù)據(jù)存儲(chǔ)器xdata memory (RAM space)

?XC? const xdata 外部數(shù)據(jù)存儲(chǔ)器xdata memory (常量ROM空間constant ROM space)

Data Objects數(shù)據(jù)對(duì)象

數(shù)據(jù)對(duì)像是在C程序中聲明的變量和常量。Cx51為每個(gè)聲明變量的存儲(chǔ)器類型生成一個(gè)獨(dú)的段。以下是不同的數(shù)據(jù)對(duì)象的段名:

段名 描述Description

?BA?module_name 位可尋址的數(shù)據(jù)對(duì)象

?BI?module_name 位對(duì)象

?CO?module_name 常量(字符串和初始化的變量)

?DT?module_name data存儲(chǔ)區(qū)中的對(duì)象

?XC?module_name const far存儲(chǔ)區(qū)中的對(duì)象 (requires OMF251 directive)

?XD?module_name far存儲(chǔ)區(qū)中的對(duì)象(requires OMF251 directive)

?ID?module_name idata存儲(chǔ)區(qū)中的對(duì)象

?PD?module_name pdata存儲(chǔ)區(qū)中的對(duì)象

?XC?module_name const xdata存儲(chǔ)區(qū)中的對(duì)象

?XD?module_name xdata存儲(chǔ)區(qū)中的對(duì)象

Program Objectst程序?qū)ο?/p>

程序?qū)ο蟀–x 51編譯器用C程序生成的代碼。源程序中每個(gè)函數(shù)都被指定給了一個(gè)獨(dú)立的代碼段,這個(gè)代碼段使用?PR?function_name?module_name命名規(guī)則命名。比如源程序SAMPLE.C中的函數(shù)error_check生成一個(gè)名字為?PR?ERROR_CHECK?SAMPLE的段。

在一個(gè)函數(shù)體中的聲明的局部變量也生成一個(gè)段。這些段名以上面的規(guī)則命名,只是根據(jù)使用的不同存儲(chǔ)器區(qū)域使用不同的前綴

函數(shù)參數(shù)的傳遞使用固定的存儲(chǔ)器區(qū)域。這對(duì)于使用PL/M-51書寫的程序一樣適用。然而,Cx51可以在寄存器中傳遞多達(dá)3個(gè)參數(shù)。其他的參數(shù)據(jù)采用經(jīng)典的固定的存儲(chǔ)器區(qū)域。保留的存儲(chǔ)器空間用來(lái)存放所有的參數(shù),而不論參數(shù)是否通過(guò)寄存器傳遞。這些參數(shù)區(qū)域?qū)τ谡{(diào)用的模塊來(lái)說(shuō)必須是可以訪問(wèn)的。因此,他采用以下段名公開(kāi)地定義:

?function_name?BYTE

?function_name?BIT

例如:如果func1是一個(gè)既可以接受位參數(shù)又可以接受其他數(shù)據(jù)類型的函數(shù)。位參數(shù)的傳遞起始為?FUNC1?BIT,而其他所有參數(shù)的傳遞起始?FUNC1?BYTE。

那些有參數(shù),局部變量或位變量的函數(shù)包括了這些變量的所有附加段。這些段可以被BL51 Linker/Locatot。

他們都根據(jù)存儲(chǔ)器類型生成如下

小存儲(chǔ)器模式段命名規(guī)則

Information Segment Type Segment Name

Program code code ?PR?function_name?module_name

Local variables data ?DT?function_name?module_name

Local bit variables bit ?BI?function_name?module_name

Compact存儲(chǔ)器模式段命名規(guī)則

Information Segment Type Segment Name

Program code code ?PR?function_name?module_name

Local variables pdata ?PD?function_name?module_name

Local bit variables bit ?BI?function_name?module_name

Large存儲(chǔ)器模式段命名規(guī)則

Information Segment Type Segment Name

Program code code ?PR?function_name?module_name

Local variables xdata ?XD?function_name?module_name

Local bit variables bit ?BI?function_name?module_name

為了避免運(yùn)行時(shí)的錯(cuò)誤,寄存器傳遞參數(shù)的函數(shù)和可重入函數(shù)的命名稍微不同。下表列出了這些不同。

Declaration Symbol Description

void func (void) … FUNC沒(méi)有參數(shù)的函數(shù)和不使用寄存器傳遞參數(shù)的函數(shù)轉(zhuǎn)換到目標(biāo)文件時(shí),名字不做任何改變,只是將函數(shù)名大寫

void func1 (char) … _FUNC1 使用寄存器存器傳遞參數(shù)的函數(shù),函數(shù)名字添加一個(gè)下劃線“_”,用來(lái)指明函數(shù)使用CPU寄存器傳遞參數(shù)

void func2 (void) reentrant… _?FUNC2 對(duì)于可重入函數(shù)的,可函數(shù)的名字前添加“_?”,用來(lái)指明是可重入函數(shù)。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

在C語(yǔ)言編程中,結(jié)構(gòu)體內(nèi)存對(duì)齊是一個(gè)容易被忽視卻影響深遠(yuǎn)的關(guān)鍵問(wèn)題。它不僅關(guān)乎程序性能,更直接影響到內(nèi)存占用效率,尤其在嵌入式系統(tǒng)等資源受限環(huán)境中顯得尤為重要。本文將深入探討結(jié)構(gòu)體內(nèi)存對(duì)齊的原理,并分享手動(dòng)調(diào)整與編譯器優(yōu)...

關(guān)鍵字: C語(yǔ)言 內(nèi)存對(duì)齊 編譯器

編譯器不僅是連接硬件與軟件的橋梁,還直接影響MCU的性能優(yōu)化與功能安全。面對(duì)汽車行業(yè)對(duì)高可靠性、低功耗和高算力的需求,編譯器需在確保ASIL-D等嚴(yán)格標(biāo)準(zhǔn)的同時(shí),最大化發(fā)揮RISC-V芯片的潛力。

關(guān)鍵字: 車規(guī)MCU RISC-V 編譯器 HighTec

國(guó)內(nèi)電子信息產(chǎn)業(yè)內(nèi)的廠商正在全球嵌入式系統(tǒng)的發(fā)展浪潮中扮演著越來(lái)越重要的角色,但隨之而來(lái)的是國(guó)內(nèi)嵌入式系統(tǒng)和相關(guān)芯片企業(yè)在出海時(shí)也面臨越來(lái)越多的合規(guī)要求,尤其是在保障用戶、設(shè)備和周邊人與物安全的功能安全領(lǐng)域內(nèi)的合規(guī)要求。...

關(guān)鍵字: 嵌入式系統(tǒng) 智能網(wǎng)聯(lián) 編譯器

【2025年4月11日, 德國(guó)慕尼黑訊】全球功率系統(tǒng)和物聯(lián)網(wǎng)領(lǐng)域的半導(dǎo)體領(lǐng)導(dǎo)者英飛凌科技股份公司(FSE代碼:IFX / OTCQX代碼:IFNNY)推出用于AURIX?、TRAVEO?和PSOC?的可擴(kuò)展軟件包產(chǎn)品組合...

關(guān)鍵字: PSOC 物聯(lián)網(wǎng) 編譯器

瑞典烏普薩拉,2025年3月11日 — 全球領(lǐng)先的嵌入式系統(tǒng)開(kāi)發(fā)軟件解決方案供應(yīng)商IAR在德國(guó)紐倫堡舉辦的embedded world 2025展會(huì)上重磅發(fā)布全新云端平臺(tái)。該平臺(tái)為嵌入式軟件開(kāi)發(fā)人員提供前所未有的自由度與...

關(guān)鍵字: 編譯器 嵌入式 RISC-V

該統(tǒng)一解決方案為Microchip編譯器產(chǎn)品線提供靈活且經(jīng)濟(jì)高效的許可選項(xiàng)

關(guān)鍵字: 編譯器 嵌入式

當(dāng)安全標(biāo)準(zhǔn)相互契合:意法半導(dǎo)體 (ST) Stellar MCU取得了風(fēng)險(xiǎn)管理安全標(biāo)準(zhǔn)等級(jí)最高的ISO 26262 ASIL D 級(jí)認(rèn)證,現(xiàn)在更有達(dá)到同等安全級(jí)別的 HighTec Rust 編譯器的加持

關(guān)鍵字: 微控制器 編譯器

在STM32的開(kāi)發(fā)過(guò)程中,開(kāi)發(fā)者可能會(huì)遇到各種編譯錯(cuò)誤,其中“Program file does not exist”是一個(gè)較為常見(jiàn)且可能由多種原因引起的錯(cuò)誤。這個(gè)錯(cuò)誤通常意味著編譯器在預(yù)期的路徑下沒(méi)有找到可執(zhí)行文件(如...

關(guān)鍵字: STM32 編譯器

基于ARM內(nèi)核的芯片在我們的世界中無(wú)處不在,從簡(jiǎn)單的MCU到高端的應(yīng)用處理器,各行各業(yè)中都有它們的身影。 如今ARM生態(tài)系統(tǒng)非常繁榮,在這繁榮的背后編譯器的作用功不可沒(méi)。

關(guān)鍵字: ARM 編譯器

臺(tái)灣新竹-2024 年 11 月 5 日-新唐科技正式推出免費(fèi)版 Arm? Keil? MDK Nuvoton Edition,成為全球首家提供 Keil MDK 完整版的公司。此專業(yè)工具適用于開(kāi)發(fā)基于Arm Corte...

關(guān)鍵字: 編譯器 微控制器 嵌入式
關(guān)閉