亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? chapter 4 variables and constants -- valvano.htm

?? DevelopingEmbeddedSoftwareinC 嵌入式開發(fā)叢書 很不錯的
?? HTM
?? 第 1 頁 / 共 5 頁
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0056)http://www.ece.utexas.edu/~valvano/embed/chap4/chap4.htm -->
<HTML><HEAD><TITLE>Chapter 4: Variables and Constants -- Valvano</TITLE>
<META http-equiv=content-type content=text/html;charset=iso-8859-1>
<META content="MSHTML 5.50.3825.1300" name=GENERATOR>
<META content="string literals" name=KEYWORDS>
<META 
content="StarMax HD:Microsoft Office 98:Templates:Web Pages:Blank Web Page" 
name=Template></HEAD>
<BODY vLink=#800080 link=#0000ff>
<P><!--Developing Embedded Software in C using ICC11/ICC12/Hiware by Jonathan W. Valvano--><B><FONT 
face=Helvetica,Arial size=4>Chapter 4: Variables and Constants </FONT></B></P>
<P><B><I><FONT face=Helvetica,Arial>What's in Chapter 4?</FONT></I></B></P>
<DIR>
<P><A href="http://www.ece.utexas.edu/~valvano/embed/chap4/chap4.htm#STATIC">A 
static variable exists permanently</A> <FONT face=Monaco><BR></FONT><A 
href="http://www.ece.utexas.edu/~valvano/embed/chap4/chap4.htm#STATICGLOBAL">A 
static global can be accessed only from within the same file</A> <FONT 
face=Monaco><BR></FONT><A 
href="http://www.ece.utexas.edu/~valvano/embed/chap4/chap4.htm#STATICLOCAL">A 
static local can be accessed only in the function</A><FONT 
face=Monaco><BR></FONT><A 
href="http://www.ece.utexas.edu/~valvano/embed/chap4/chap4.htm#VOLATILE">We 
specify volatile variables when using interrupts and I/O ports</A> <FONT 
face=Monaco><BR></FONT><A 
href="http://www.ece.utexas.edu/~valvano/embed/chap4/chap4.htm#AUTOMATIC">Automatic 
variables are allocated on the stack</A><FONT face=Monaco><BR></FONT><A 
href="http://www.ece.utexas.edu/~valvano/embed/chap4/chap4.htm#IMPLEMENTATION">We 
can understand automatics by looking at the assembly code </A><FONT 
face=Monaco><BR></FONT><A 
href="http://www.ece.utexas.edu/~valvano/embed/chap4/chap4.htm#CONSTANTLOCAL">A 
constant local can not be changed</A> <FONT face=Monaco><BR></FONT><A 
href="http://www.ece.utexas.edu/~valvano/embed/chap4/chap4.htm#EXTERNAL">External 
variables are defined elsewhere</A> <FONT face=Monaco><BR></FONT><A 
href="http://www.ece.utexas.edu/~valvano/embed/chap4/chap4.htm#SCOPE">The scope 
of a variable defines where it can be accessed</A> <FONT 
face=Monaco><BR></FONT><A 
href="http://www.ece.utexas.edu/~valvano/embed/chap4/chap4.htm#DECLARATIONS">Variables 
declarations</A> <FONT face=Monaco><BR></FONT><A 
href="http://www.ece.utexas.edu/~valvano/embed/chap4/chap4.htm#CHARACTER">8-bit 
variables are defined with char</A> <FONT face=Monaco><BR></FONT><A 
href="http://www.ece.utexas.edu/~valvano/embed/chap4/chap4.htm#WHEN">Discussion 
of when to use static versus automatic variables</A><FONT 
face=Monaco><BR></FONT><A 
href="http://www.ece.utexas.edu/~valvano/embed/chap4/chap4.htm#INITIALIZE">Initialization 
of variables and constants</A><FONT face=Monaco><BR></FONT><A 
href="http://www.ece.utexas.edu/~valvano/embed/chap4/chap4.htm#INITIMPLEMENATION">We 
can understand initialization by looking at the assembly code</A> </P></DIR>
<P><FONT face="Times New Roman,Times">The purpose of this chapter is to explain 
how to create and access variables and constants. The storage and retrieval of 
information are critical operations of any computer system. This chapter will 
also present the C syntax and resulting assembly code generated by the 
ImageCraft and Hiware compilers.</FONT></P>
<P><FONT face="Times New Roman,Times">A <I>variable</I> is a named object that 
resides in RAM memory and is capable of being examined and modified. A variable 
is used to hold information critical to the operation of the embedded system. A 
<I>constant</I> is a named object that resides in memory (usually in ROM) and is 
only capable of being examined. As we saw in the last chapter a <I>literal</I> 
is the direct specification of a number character or string. The difference 
between a literal and a constant is that constants are given names so that they 
can be accessed more than once. For example</FONT></P>
<DIR>
<P><CODE>short 
MyVariable;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* 
variable allows read/write access */<BR>const short MyConstant=50;&nbsp;/* 
constant allows only read access */<BR>#define fifty 50<BR>void main(void){ 
<BR>&nbsp;&nbsp;&nbsp;&nbsp;MyVariable=50;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* 
write access to the variable 
*/<BR>&nbsp;&nbsp;&nbsp;&nbsp;OutSDec(MyVariable);&nbsp;&nbsp;&nbsp;/* read 
access to the variable 
*/<BR>&nbsp;&nbsp;&nbsp;&nbsp;OutSDec(MyConstant);&nbsp;&nbsp;&nbsp;/* read 
access to the constant 
*/<BR>&nbsp;&nbsp;&nbsp;&nbsp;OutSDec(50);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* 
"50" is a literal 
*/<BR>&nbsp;&nbsp;&nbsp;&nbsp;OutSDec(fifty);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* 
fifty is also a literal */<BR>}</CODE></P></DIR>
<ADDRESS>Listing 4-1: Example showing a variable, a constant and some 
literals</ADDRESS>
<P><FONT face="Times New Roman,Times">With ICC11 and ICC12 both <B>int</B> and 
<B>short</B> specify to 16-bit parameters, and can be used interchangeably. The 
compiler options in Hiware can be used to select the precision of each of the 
data formats. I recommend using <B>short</B> because on many computers, 
<B>int</B> specifies a 32-bit parameter. As we saw in the last chapter, the 
ICC11 and ICC12 compilers actually implement 32-bit long <A 
href="http://www.ece.utexas.edu/~valvano/embed/chap3/chap3.htm#DECIMALEXAMPLE">integer 
literals</A> and <A 
href="http://www.ece.utexas.edu/~valvano/embed/chap3/chap3.htm#STRING">string 
literals</A> in a way very similar to constants.</FONT></P>
<P><FONT face="Times New Roman,Times">The concepts of <A 
href="http://www.ece.utexas.edu/~valvano/embed/chap3/chap3.htm#BINARY">precision</A> 
and type (<A 
href="http://www.ece.utexas.edu/~valvano/embed/chap3/chap3.htm#BM16BITUNSIGNED">unsigned</A> 
vs. <A 
href="http://www.ece.utexas.edu/~valvano/embed/chap3/chap3.htm#BM16BITSIGNED">signed</A>) 
developed for numbers in the last chapter apply to variables and constants as 
well. In this chapter we will begin the discussion of variables that contain 
integers and characters. Even though pointers are similar in many ways to 16 bit 
unsigned integers, pointers will be treated in detail in <A 
href="http://www.ece.utexas.edu/~valvano/embed/chap7/chap7.htm">Chapter 7</A>. 
Although arrays and structures fit also the definition of a variable, they are 
regarded as collections of variables and will be discussed in <A 
href="http://www.ece.utexas.edu/~valvano/embed/chap8/chap8.htm">Chapter 8</A> 
and <A href="http://www.ece.utexas.edu/~valvano/embed/chap9/chap9.htm">Chapter 
9</A>. </FONT></P>
<P><FONT face="Times New Roman,Times">The term <I>storage class</I> refers to 
the method by which an object is assigned space in memory. The Imagecraft and 
Hiware compilers recognize three storage classes--<A 
href="http://www.ece.utexas.edu/~valvano/embed/chap4/chap4.htm#STATIC">static</A>, 
<A 
href="http://www.ece.utexas.edu/~valvano/embed/chap4/chap4.htm#AUTOMATIC">automatic</A>, 
and <A 
href="http://www.ece.utexas.edu/~valvano/embed/chap4/chap4.htm#EXTERNAL">external</A>. 
In this document we will use the term <I>global variable</I> to mean a regular 
static variable that can be accessed by all other functions. Similarly we will 
use the term <I>local variable</I> to mean an automatic variable that can be 
accessed only by the function that created it. As we will see in the following 
sections there are other possibilities like a <A 
href="http://www.ece.utexas.edu/~valvano/embed/chap4/chap4.htm#STATICGLOBAL">static 
global</A> and <A 
href="http://www.ece.utexas.edu/~valvano/embed/chap4/chap4.htm#STATICLOCAL">static 
local</A>.</FONT></P>
<P><B><I><FONT face=Helvetica,Arial><A 
name=STATIC></A>Statics</FONT></I></B><FONT face=Helvetica,Arial> </FONT></P>
<P><FONT face="Times New Roman,Times">Static variables are given space in memory 
at some fixed location within the program. They exist when the program starts to 
execute and continue to exist throughout the program's entire lifetime. The 
value of a static variable is faithfully maintained until we change it 
deliberately (or remove power from the memory). A constant, which we define by 
adding the modifier <B>const</B>, can be read but not changed.</FONT></P>
<P><FONT face="Times New Roman,Times">In an embedded system we normally wish to 
place all variables in RAM and constants in ROM. In the ICC11/ICC12 compilers we 
specify the starting memory address for the static variables in the 
<I>options_compiler_linker</I> dialog with the data section. The constants and 
program instructions will be placed in the <I>text</I> section. For more 
information on how to set the absolute addresses for statics (<I>data</I> 
section), automatics (stack), and program object codes (text section) using 
ICC12, see <A 
href="http://www.ece.utexas.edu/~valvano/embed/app1/app1.htm#ICC12">ICC12 
options menu for developing software for the Adapt812</A> The ICC11/ICC12 
compilers place the static variables in the bss area, which we can view in the 
assembly listing following the <B>.area bss</B> pseudoop. The ICC11/ICC12 
compilers place the constants and program in the text area, which we can view in 
the assembly listing following the <B>.area text</B> pseudoop.</FONT></P>
<P><FONT face="Times New Roman,Times">At the assembly language ICC11/ICC12 uses 
the<B> .blkb</B><I> </I>directive to define a block of uninitialized bytes. Each 
static variable has a label associated with its <B>.blkb</B> directive. The 
label consists of the variable's name prefixed by a compiler generated 
underscore character. The following example sets a global, called TheGlobal, to 
the value 1000. This global can be referenced by any function from any file in 
the software system. It is truly global.</FONT></P>
<DIR>
<P><CODE>short TheGlobal;&nbsp;&nbsp;&nbsp;/* a regular global 
variable*/<BR>void main(void){ 
<BR>&nbsp;&nbsp;&nbsp;&nbsp;TheGlobal=1000;&nbsp;&nbsp;&nbsp;&nbsp;<BR>}</CODE></P></DIR>
<ADDRESS>Listing 4-2: Example showing a regular global variable</ADDRESS>
<P><FONT face="Times New Roman,Times">In assembly language the ICC11 assembler 
defines a label to be global (can be accessed from modules in other files) using 
the <I>.global</I> pseudoop. The 6811 code generated by the ICC11 (Version 4) 
compiler is as follows</FONT></P>
<DIR>
<P><CODE>&nbsp;&nbsp;&nbsp;&nbsp;.area text <BR>&nbsp;&nbsp;&nbsp;&nbsp;.global 
_main<BR>_main:<BR>&nbsp;&nbsp;&nbsp;&nbsp;ldd #1000 
<BR>&nbsp;&nbsp;&nbsp;&nbsp;std _TheGlobal <BR>&nbsp;&nbsp;&nbsp;&nbsp;rts 
<BR>&nbsp;&nbsp;&nbsp;&nbsp;.area bss <BR>&nbsp;&nbsp;&nbsp;&nbsp;.global 
_TheGlobal <BR>_TheGlobal: .blkb 2 </CODE></P></DIR>
<P><FONT face="Times New Roman,Times">In assembly language the ICC12 assembler 
defines a label to be global (can be accessed from modules in other files) using 
the<B> ::</B><I> </I>symbol after the label. The 6812 code generated by the 
ICC12 (Version 5.1) compiler is as follows</FONT></P>
<DIR>
<P><CODE>&nbsp;&nbsp;&nbsp;&nbsp;.area text <BR>_main:: 
<BR>&nbsp;&nbsp;&nbsp;&nbsp;movw #1000,_TheGlobal 
<BR>&nbsp;&nbsp;&nbsp;&nbsp;rts <BR>&nbsp;&nbsp;&nbsp;&nbsp;.area bss 
<BR>_TheGlobal:: .blkb 2 </CODE></P></DIR>
<P><FONT face="Times New Roman,Times">The 6812 code generated by the Hiware 
compiler is as follows</FONT></P>
<DIR>
<P><CODE>main: <BR>&nbsp;&nbsp;&nbsp;&nbsp;LDD #1000 
<BR>&nbsp;&nbsp;&nbsp;&nbsp;STD TheGlobal <BR>&nbsp;&nbsp;&nbsp;&nbsp;RTS 
<BR></CODE></P></DIR>
<P><FONT face="Times New Roman,Times">The fact that these types of variables 
exist in permanently reserved memory means that static variables exist for the 
entire life of the program. When the power is first applied to an embedded 
computer, the values in its RAM are usually undefined. Therefore, initializing 
global variables requires special run-time software consideration. The 
ICC11/ICC12 compilers will attach the assembly code in the CRT11.s/CRT12.s file 
to the beginning of every program. This software is executed first, before our 
<B>main()</B> program is started. We can see by observing the CRT11.s/CRT12.s 
file that the ICC11/ICC12 compilers will clear all statics to zero immediately 
after a hardware reset. See <A 
href="http://www.ece.utexas.edu/~valvano/embed/chap4/chap4.htm#INITIALIZE">the 
section on initialization</A> for more about initializing variables and 
constants.</FONT></P>
<P><FONT face="Times New Roman,Times"><A name=STATICGLOBAL></A>A <B>static 
global</B> is very similar to a regular global. In both cases, the variable is 
defined in RAM permanently. The assembly language access is identical. The only 
difference is the scope. The static global can only be accessed within the file 
where it is defined. The following example also sets a global, called 
<B>TheGlobal</B>, to the value 1000. This global can not be referenced by 
modules in other files. In particular, notice the line <I>.global _TheGlobal</I> 
is missing in the 6811 code. Similarly, notice the double colon,<B> ::</B>, is 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人成人成人在线视频| 精品一区中文字幕| 亚洲欧美韩国综合色| 国产精品国产自产拍高清av王其 | 亚洲色大成网站www久久九九| 中文字幕一区二区三区视频| 久久免费午夜影院| 久久影院午夜片一区| 久久精品日韩一区二区三区| 国产欧美一区二区三区鸳鸯浴| 精品国产91洋老外米糕| 亚洲精品一区二区精华| 国产婷婷一区二区| 亚洲欧洲99久久| 亚洲精品伦理在线| 日精品一区二区三区| 激情文学综合网| 国产成人午夜99999| 94-欧美-setu| 欧美久久一二区| 久久久亚洲欧洲日产国码αv| 久久综合九色综合欧美98 | 99精品偷自拍| 欧美久久久久久久久中文字幕| 制服丝袜日韩国产| 久久久不卡网国产精品二区| 国产精品久久久久久亚洲伦| 成人免费一区二区三区在线观看 | 欧美一区二区三区在| 日韩欧美另类在线| 欧美激情在线一区二区| 午夜精品福利在线| 国产凹凸在线观看一区二区| 韩国v欧美v日本v亚洲v| 成人久久视频在线观看| 精品视频一区二区不卡| 久久久精品人体av艺术| 亚洲成人av免费| 国产成人无遮挡在线视频| 欧美精品九九99久久| 久久人人97超碰com| 亚洲一级在线观看| 国产成人av电影在线| 欧美精品高清视频| 国产精品电影院| 久久精品国产久精国产爱| 99久久777色| 国产日韩一级二级三级| 日本在线观看不卡视频| 91性感美女视频| 国产午夜精品福利| 麻豆成人在线观看| 精品视频免费在线| 一区二区在线免费| 国产99久久精品| 久久婷婷色综合| 日韩精彩视频在线观看| 日本高清免费不卡视频| 国产精品久久久久久久久免费樱桃| 亚洲一区二区三区免费视频| 国产一区激情在线| 69堂成人精品免费视频| 国产精品理论片在线观看| 蜜臀91精品一区二区三区| 国产精品一二一区| 精品日韩av一区二区| 奇米一区二区三区| 日韩欧美一区二区视频| 另类小说图片综合网| 欧美福利视频一区| 精品久久久久香蕉网| 日韩av网站在线观看| 欧美色视频一区| 一区二区不卡在线播放| 色欧美乱欧美15图片| 欧美高清在线精品一区| 东方欧美亚洲色图在线| 欧美国产精品v| 成人激情免费电影网址| 国产精品少妇自拍| 99久久精品免费看国产| 亚洲色图在线视频| 91国偷自产一区二区开放时间 | 视频在线在亚洲| 91久久香蕉国产日韩欧美9色| 亚洲欧美激情小说另类| 日本精品裸体写真集在线观看| 亚洲另类色综合网站| 91在线观看一区二区| 亚洲色图色小说| 欧美三电影在线| 美女视频网站久久| 国产日韩影视精品| 99国产精品久久久久久久久久| 亚洲日本电影在线| 久久亚洲捆绑美女| 成人一区二区三区视频| 亚洲精品久久久蜜桃| 91色综合久久久久婷婷| 日韩二区三区在线观看| 久久午夜老司机| 色噜噜狠狠色综合中国| 天堂在线一区二区| 日韩精品中文字幕一区二区三区 | 中文字幕高清一区| 色国产综合视频| 裸体歌舞表演一区二区| 国产精品理论在线观看| 欧美裸体bbwbbwbbw| 国产剧情一区二区| 亚洲综合一区在线| 国产欧美一区二区精品性色| 97se亚洲国产综合自在线| 中文字幕的久久| 9191久久久久久久久久久| 国产91精品露脸国语对白| 亚洲一区二区影院| 久久精品网站免费观看| 欧美日韩一区二区欧美激情| 国产精品自拍毛片| 日精品一区二区三区| 国产精品久久久久婷婷 | 亚洲久本草在线中文字幕| 欧美日韩免费电影| heyzo一本久久综合| 麻豆高清免费国产一区| 亚洲一区二区在线视频| 国产精品白丝在线| 欧美在线免费观看亚洲| 免费在线欧美视频| 五月婷婷综合激情| 亚洲精品一二三区| 国产精品久久久久久久久图文区| 日韩三级视频在线观看| 欧美日韩综合在线| 日本高清视频一区二区| 99久久99久久精品免费看蜜桃| 95精品视频在线| 国产一区二区三区香蕉| 免费观看日韩av| 日产国产欧美视频一区精品| 一区二区三区在线播放| 日韩毛片高清在线播放| 国产精品久久久久影院亚瑟 | 成人国产精品免费观看视频| 日韩二区三区四区| 日韩成人午夜精品| 日韩国产成人精品| 三级欧美在线一区| 一区二区三区四区av| 亚洲三级免费电影| 国产精品国产精品国产专区不片| 2021久久国产精品不只是精品| 欧美日韩国产精品自在自线| 一本大道久久a久久精品综合| 久草精品在线观看| 国产激情一区二区三区四区| 国产在线精品一区二区夜色| 国产乱码精品一品二品| 国产99精品视频| 91婷婷韩国欧美一区二区| av中文字幕一区| 色琪琪一区二区三区亚洲区| 欧洲在线/亚洲| 欧美日韩二区三区| 欧美一区二区三区免费视频| 欧美一区永久视频免费观看| 欧美一卡二卡三卡四卡| 精品国产一区二区在线观看| 日韩一二三四区| 精品剧情在线观看| 国产精品久久久久久久岛一牛影视 | 美女mm1313爽爽久久久蜜臀| 免费成人在线播放| 成人在线综合网站| 99久精品国产| 欧美日韩国产高清一区二区 | 麻豆精品精品国产自在97香蕉| 蜜臀av一级做a爰片久久| 国产一区二区三区日韩 | 欧美精品久久一区二区三区| 91精品午夜视频| 欧美激情在线看| 视频一区二区三区在线| 国内精品久久久久影院色| 成人综合日日夜夜| 欧美一区二区视频免费观看| 日韩午夜精品电影| 日韩一区日韩二区| 久久国产精品99久久人人澡| 成人午夜伦理影院| 在线观看欧美黄色| 久久久噜噜噜久久中文字幕色伊伊 | 蜜臀a∨国产成人精品| 成人永久免费视频| 欧美一区二区美女| 亚洲激情自拍偷拍| 国产风韵犹存在线视精品| 欧美日本视频在线| 亚洲婷婷综合色高清在线|