最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng)
驅動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

一個簡單的問題

作者:zjsa6 欄目:單片機
一個簡單的問題
我是入門者,帶來一個簡單的問題,請各位幫答
明明兩個變量a,b,怎么給了一個寄存器,調試也是一個。
附上:

void main()
{
unsigned CHAR a,b;
a=22;
b=33;}
/********ambler*************/
.MODULE ddd.c
    .area text(rom, con, rel)
    .dbfile C:\zjs\ddd.c
    .dbfunc e main _main fV
;              b -> R16     /** a,b 均為R16**/
;              a -> R16
    .even
_main::
    .dbline -1
    .dbline 4
;
;
; void main()
; {
    .dbline 6
; unsigned CHAR a,b;
; a=22;
    ldi R16,22
    .dbline 7
; b=33;}
    ldi R16,33
    .dbline -2
    .dbline 7
L1:
    .dbline 0 ; func end
    ret
    .dbsym r b 16 c
    .dbsym r a 16 c
    .dbend


2樓: >>參與討論
john_lee
編譯器優(yōu)化的結果
在編譯優(yōu)化作用下:
1、局部變量的存儲空間是在該變量第一次被訪問時分配的,而不是在申明和定義時。
2、局部變量在最后一次被訪問后,它所占據(jù)的存儲空間就會被編譯器釋放。

由此,不難理解此程序被編譯后的生成結果:

void main()
{
    unsigned CHAR a,b;    // 這句只是a,b的申明和定義,編譯器不會立即為它們分配存儲
    a=22;                 // a變量第一次被訪問,編譯器為它分配了R16寄存器存儲空間
                          // a變量在此后就沒有被訪問了,所以編譯器又釋放了a變量的存儲空間R16
    b=33;                 // b變量第一次被訪問,編譯器為它分配了R16寄存器存儲空間(因為這時R16是空閑的)
}

實際上,有些編譯器優(yōu)化更厲害,它會判斷變量的訪問上下文,并根據(jù)一種復雜的優(yōu)化規(guī)則,對變量的存儲和訪問作更深度的優(yōu)化。如果變量是無意義的(象此文中這樣的變量的定義和訪問),可能被忽略掉(根本不為變量分配存儲,也不生成與該變量有關的訪問代碼)。

3樓: >>參與討論
zjsa6
謝謝
謝謝

參與討論
昵稱:
討論內容:
 
 
相關帖子
買AVR ISP 電纜:,
avr的燒寫速度怎么樣?
4M晶振的低頻干擾問題
AVR的性價比如何,仿真機,燒寫器要多少銀子??
Little endian & Big endian是何意思?
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號