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

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

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

?? 用c語言開發嵌入實時系統
?? 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 content=text/html;charset=iso-8859-1 http-equiv=content-type>
<META content="MSHTML 5.00.2614.3500" 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 link=#0000ff vLink=#800080>
<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一区二区三区免费野_久草精品视频
亚洲亚洲人成综合网络| 亚洲视频小说图片| 欧洲精品一区二区| 国产综合色在线| 亚洲成年人影院| 18成人在线视频| 欧美精品一区二区三区久久久 | 99热国产精品| 美女在线视频一区| 一区二区三区精品在线观看| 久久女同互慰一区二区三区| 欧美日韩成人综合天天影院| 北条麻妃国产九九精品视频| 激情久久五月天| 午夜精品影院在线观看| 日韩一区欧美一区| 国产女同互慰高潮91漫画| 欧美大片国产精品| 欧美日韩综合在线免费观看| 91尤物视频在线观看| 国产成人综合亚洲网站| 美女视频一区在线观看| 日韩制服丝袜先锋影音| 亚洲制服欧美中文字幕中文字幕| 国产精品美女久久久久高潮| 久久天堂av综合合色蜜桃网| 欧美一级视频精品观看| 在线不卡免费欧美| 欧美精品一二三区| 欧美日韩黄色影视| 欧美日韩视频在线观看一区二区三区| 91蜜桃网址入口| 色综合久久久久久久久久久| 高清成人免费视频| 国产91精品露脸国语对白| 国产精品18久久久久久久久| 激情偷乱视频一区二区三区| 麻豆精品精品国产自在97香蕉| 日本不卡一二三| 青青草成人在线观看| 免费看日韩a级影片| 蜜桃久久久久久久| 激情六月婷婷综合| 国产一区二区三区在线观看精品 | 人妖欧美一区二区| 免费一级欧美片在线观看| 日韩成人av影视| 免费成人在线视频观看| 国产原创一区二区| 成人午夜碰碰视频| 99精品久久免费看蜜臀剧情介绍| 99国产精品久久久久久久久久久| 99精品一区二区三区| 欧美性生活一区| 欧美一级日韩一级| 国产亚洲一区二区三区在线观看 | 久久精品视频一区| 中文字幕中文字幕一区二区| 中文字幕日本不卡| 五月婷婷综合在线| 久久99精品视频| 成人性生交大片免费看视频在线| 成人av网站大全| 欧美图片一区二区三区| 欧美一区二区私人影院日本| 亚洲精品一区二区三区蜜桃下载 | 亚洲综合在线视频| 亚洲成a人v欧美综合天堂| 免费欧美日韩国产三级电影| 国产精品1区2区| 色8久久精品久久久久久蜜| 欧美日韩三级在线| 久久午夜老司机| 亚洲天堂中文字幕| 日本aⅴ精品一区二区三区| 国产精品一二三四五| 色偷偷久久一区二区三区| 91精品国产综合久久久久| 久久丝袜美腿综合| 亚洲国产精品久久人人爱蜜臀| 久久se精品一区二区| 92国产精品观看| 欧美二区三区91| 国产免费观看久久| 五月天激情综合| 国产成人av一区二区| 欧美午夜一区二区| 国产日韩欧美精品综合| 亚洲一区二区精品视频| 国产露脸91国语对白| 欧美综合久久久| 久久久久久影视| 午夜伊人狠狠久久| 成人动漫av在线| 日韩视频免费直播| 亚洲午夜精品17c| 国产999精品久久| 91精品国产欧美日韩| 亚洲欧美日韩国产综合| 激情成人综合网| 欧美美女一区二区在线观看| 国产精品国产精品国产专区不片| 日韩专区在线视频| 一本色道久久综合亚洲精品按摩| 久久综合久色欧美综合狠狠| 亚洲va国产va欧美va观看| 成人黄色在线网站| 精品精品欲导航| 性做久久久久久| 97se亚洲国产综合在线| 久久久综合九色合综国产精品| 午夜影院在线观看欧美| 在线观看av一区二区| 国产精品美女久久福利网站| 国内精品伊人久久久久影院对白| 欧美日韩国产在线观看| 亚洲精品伦理在线| 豆国产96在线|亚洲| 久久人人爽爽爽人久久久| 日韩精品一区第一页| 欧美色男人天堂| 樱花草国产18久久久久| 99久久国产综合精品麻豆| 国产精品剧情在线亚洲| 国产夫妻精品视频| 久久先锋影音av鲁色资源网| 紧缚捆绑精品一区二区| 日韩视频在线永久播放| 蜜桃精品视频在线观看| 欧美一区二区在线不卡| 欧美aaa在线| 日韩欧美成人激情| 久久福利视频一区二区| 91精品国产91综合久久蜜臀| 视频一区二区三区入口| 91精品久久久久久蜜臀| 蜜臀av一级做a爰片久久| 91精品国产综合久久久蜜臀图片| 天天综合日日夜夜精品| 欧美狂野另类xxxxoooo| 日韩中文字幕一区二区三区| 欧美精品视频www在线观看| 日韩国产精品久久| 精品久久久久久久久久久久包黑料| 奇米四色…亚洲| 欧美大片一区二区| 国产成人av网站| 国产精品乱码人人做人人爱| www.日本不卡| 亚洲综合成人在线视频| 欧美久久久久久蜜桃| 奇米精品一区二区三区在线观看| 91精品国产入口| 国产精品资源在线看| 国产精品天干天干在线综合| 成人av网站在线观看免费| 亚洲精品亚洲人成人网| 777亚洲妇女| 国产精品18久久久久| 成人免费视频在线观看| 在线观看91视频| 免费观看成人av| 中文字幕第一区第二区| 91成人看片片| 日本vs亚洲vs韩国一区三区二区 | 国内外精品视频| 中文字幕精品三区| 一本色道**综合亚洲精品蜜桃冫 | 奇米在线7777在线精品| 国产亚洲一区二区三区| 欧美在线观看一区二区| 经典三级视频一区| 亚洲精品日韩专区silk| 日韩精品一区二区三区swag| 国产98色在线|日韩| 午夜精品久久久久久久99水蜜桃 | 极品尤物av久久免费看| 亚洲国产精品ⅴa在线观看| 欧美日韩亚洲不卡| 国产风韵犹存在线视精品| 亚洲国产精品一区二区久久| 精品国产免费一区二区三区四区| 不卡的av电影| 久久国产生活片100| 亚洲激情五月婷婷| 久久久国产精华| 欧美日韩国产成人在线91| 国产99久久精品| 久久狠狠亚洲综合| 夜夜嗨av一区二区三区网页 | 中文一区二区完整视频在线观看| 在线国产电影不卡| 粉嫩av一区二区三区在线播放| 亚洲不卡一区二区三区| 国产精品卡一卡二| xnxx国产精品| 欧美乱妇15p| 91亚洲精品久久久蜜桃网站| 精品一区二区三区免费毛片爱| 一区二区三区四区av|