Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more
Download
Standard view
Full view
of .
Save to My Library
Look up keyword
Like this
1Activity
0 of .
Results for:
No results containing your search query
P. 1
C Specific a Ti Nos

C Specific a Ti Nos

Ratings: (0)|Views: 13 |Likes:
Published by api-3711149
C Specification ebook
C Specification ebook

More info:

Published by: api-3711149 on Oct 14, 2008
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

03/18/2014

pdf

text

original

The C-- Language Speci\ufb01cation
Version 2.0
( CVS Revision 1.128 )
Norman Ramsey
Simon Peyton Jones
Christian Lindig
February 23, 2005
1
Revision 1.128
2
Contents
1 Introduction
5
1.1 What C-- is not. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
1.2 Run-time services. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
1.3 A glimpse of C--. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
2 Fundamentals of C--
8
2.1 Classi\ufb01cation of errors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
2.2 C-- procedures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
2.3 Registers and memory. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
2.3.1 Rights to memory. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
2.3.2 Aliasing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9 2.4 The type system. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.5 Kinds. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.6 Compilation units. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.7 Naming and visibility. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.8 The run-time model. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.9 Portability. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3 Syntax
13
3.1 Characterset. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2 Line renumbering. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3.3 Lexemes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.3.1 Whitespace. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.3.2 Lexicalnames. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.3.3 Integerliterals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.3.4 Floating-pointliterals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.3.5 Characterliterals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.3.6 Stringliterals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.3.7 Reservedwords. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.4 Comments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4 Top-level structure of a compilation unit
20

4.1 Import and export. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.2 Constants. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.3 Type de\ufb01nitions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.4 Registervariables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

4.4.1 Globalvariables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.4.2 Localvariables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.5 Data sections. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.5.1 Labels. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Revision 1.128
3

4.6 The data directive. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 4.6.1 Alignment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.6.2 Procedures as section contents. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.6.3 Spans. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

4.7 TargetDirective. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5 Procedures
28

5.1 Procedurede\ufb01nition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 5.2 Procedure body and nested declarations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 5.3 Allocating space on the stack. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.4 Foreign calling conventions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

6 Statements
32

6.1 Span. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 6.2 Empty statement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 6.3 Assignment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 6.4 Conditionalstatement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 6.5 Theswitch statement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 6.6 Control labels andgoto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 6.7 Continuationsandcut to. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 6.8 Procedure calls, tail calls, and returns. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

6.8.1 Calls and tail calls. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.8.2 Returns. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
7 Expressions
40

7.1 Literals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 7.2 Names. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 7.3 References to memory. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

7.3.1 Alignment and memory access. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
7.3.2 Aliasingassertions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

7.4 Applications of primitive operators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
7.4.1 The syntax of primitive operators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
7.4.2 Primitive operators and types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
7.5 Typing rules for expressions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

You're Reading a Free Preview

Download
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->