100% found this document useful (1 vote)
71 views50 pages

Thinking Low Level Writing High Level 2nd Edition Randall Hyde 2024 Scribd Download

High

Uploaded by

rerkodurdygr
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
71 views50 pages

Thinking Low Level Writing High Level 2nd Edition Randall Hyde 2024 Scribd Download

High

Uploaded by

rerkodurdygr
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 50

Download the Full Version of textbook for Fast Typing at textbookfull.

com

Thinking Low Level Writing High Level 2nd Edition


Randall Hyde

https://textbookfull.com/product/thinking-low-level-writing-
high-level-2nd-edition-randall-hyde/

OR CLICK BUTTON

DOWNLOAD NOW

Download More textbook Instantly Today - Get Yours Now at textbookfull.com


Recommended digital products (PDF, EPUB, MOBI) that
you can download immediately if you are interested.

Write Great Code Volume 1 2nd Edition Randall Hyde

https://textbookfull.com/product/write-great-code-volume-1-2nd-
edition-randall-hyde/

textboxfull.com

Write Great Code Understanding the Machine 2nd Edition


Randall Hyde

https://textbookfull.com/product/write-great-code-understanding-the-
machine-2nd-edition-randall-hyde/

textboxfull.com

Thinking with Types Type level Programming in Haskell


Sandy Maguire

https://textbookfull.com/product/thinking-with-types-type-level-
programming-in-haskell-sandy-maguire/

textboxfull.com

Inside Writing Level 1 Student Book Arline Burgmeier


Rachel Lange

https://textbookfull.com/product/inside-writing-level-1-student-book-
arline-burgmeier-rachel-lange/

textboxfull.com
Domain Specific High-Level Synthesis for Cryptographic
Workloads Ayesha Khalid

https://textbookfull.com/product/domain-specific-high-level-synthesis-
for-cryptographic-workloads-ayesha-khalid/

textboxfull.com

Write Great Code, Volume 3: Engineering Software 1st


Edition Randall Hyde

https://textbookfull.com/product/write-great-code-
volume-3-engineering-software-1st-edition-randall-hyde/

textboxfull.com

Construction Quality and the Economy A Study at the Firm


Level Low Sui Pheng

https://textbookfull.com/product/construction-quality-and-the-economy-
a-study-at-the-firm-level-low-sui-pheng/

textboxfull.com

Revival Biological Effects of Low Level Exposures to


Chemical and Radiation 1992 First Edition Calabrese

https://textbookfull.com/product/revival-biological-effects-of-low-
level-exposures-to-chemical-and-radiation-1992-first-edition-
calabrese/
textboxfull.com

5 Level Paging and 5 Level EPT White Paper Coll.

https://textbookfull.com/product/5-level-paging-and-5-level-ept-white-
paper-coll/

textboxfull.com
Contents in Detail
1. Cover Page
2. Title Page
3. Copyright Page
4. About the Authors
5. BRIEF CONTENTS
6. CONTENTS IN DETAIL
7. ACKNOWLEDGMENTS
8. INTRODUCTION

1. Performance Characteristics of Great Code


2. The Goal of This Book
3. Chapter Organization
4. Assumptions and Prerequisites
5. The Environment for This Book
6. For More Information

9. 1 THINKING LOW-LEVEL, WRITING HIGH-LEVEL

1. 1.1 Misconceptions About Compiler Quality


2. 1.2 Why Learning Assembly Language Is Still a Good Idea
3. 1.3 Why Learning Assembly Language Isn’t Absolutely Necessary
4. 1.4 Thinking Low-Level
5. 1.5 Writing High-Level
6. 1.6 Language-Neutral Approach
7. 1.7 Additional Tips
8. 1.8 For More Information

10. 2 SHOULDN’T YOU LEARN ASSEMBLY LANGUAGE?

1. 2.1 Benefits and Roadblocks to Learning Assembly Language


2. 2.2 How This Book Can Help
3. 2.3 High-Level Assemblers to the Rescue
4. 2.4 High-Level Assembly Language
5. 2.5 Thinking High-Level, Writing Low-Level
6. 2.6 The Assembly Programming Paradigm (Thinking Low-Level)
7. 2.7 For More Information

11. 3 80X86 ASSEMBLY FOR THE HLL PROGRAMMER


1. 3.1 Learning One Assembly Language Is Good, Learning More Is Better
2. 3.2 80x86 Assembly Syntaxes
3. 3.3 Literal Constants
4. 3.4 Manifest (Symbolic) Constants in Assembly Language
5. 3.5 80x86 Addressing Modes
6. 3.6 Declaring Data in Assembly Language
7. 3.7 Specifying Operand Sizes in Assembly Language
8. 3.8 For More Information
12. 4 COMPILER OPERATION AND CODE GENERATION

1. 4.1 File Types That Programming Languages Use


2. 4.2 Source Files
3. 4.3 Types of Computer Language Processors
4. 4.4 The Translation Process
5. 4.5 Compiler Output
6. 4.6 Object File Formats
7. 4.7 Executable File Formats
8. 4.8 Data and Code Alignment in an Object File
9. 4.9 How Linkers Affect Code
10. 4.10 For More Information

13. 5 TOOLS FOR ANALYZING COMPILER OUTPUT

1. 5.1 Background
2. 5.2 Telling a Compiler to Produce Assembly Output
3. 5.3 Using Object Code Utilities to Analyze Compiler Output
4. 5.4 Using a Disassembler to Analyze Compiler Output
5. 5.5 Using the Java Bytecode Disassembler to Analyze Java Output
6. 5.6 Using the IL Disassembler to Analyze Microsoft C# and Visual Basic
Output
7. 5.7 Using a Debugger to Analyze Compiler Output
8. 5.8 Comparing Output from Two Compilations
9. 5.9 For More Information

14. 6 CONSTANTS AND HIGH-LEVEL LANGUAGES

1. 6.1 Literal Constants and Program Efficiency


2. 6.2 Binding Times
3. 6.3 Literal Constants vs. Manifest Constants
4. 6.4 Constant Expressions
5. 6.5 Manifest Constants vs. Read-Only Memory Objects
6. 6.6 Swift let Statements
7. 6.7 Enumerated Types
8. 6.8 Boolean Constants
9. 6.9 Floating-Point Constants
10. 6.10 String Constants
11. 6.11 Composite Data Type Constants
12. 6.12 Constants Don’t Change
13. 6.13 For More Information
15. 7 VARIABLES IN A HIGH-LEVEL LANGUAGE

1. 7.1 Runtime Memory Organization


2. 7.2 What Is a Variable?
3. 7.3 Variable Storage
4. 7.4 Common Primitive Data Types
5. 7.5 Variable Addresses and High-Level Languages
6. 7.6 Variable Alignment in Memory
7. 7.7 For More Information

16. 8 ARRAY DATA TYPES

1. 8.1 Arrays
2. 8.2 For More Information

17. 9 POINTER DATA TYPES

1. 9.1 The Definition of a Pointer


2. 9.2 Pointer Implementation in High-Level Languages
3. 9.3 Pointers and Dynamic Memory Allocation
4. 9.4 Pointer Operations and Pointer Arithmetic
5. 9.5 A Simple Memory Allocator Example
6. 9.6 Garbage Collection
7. 9.7 The OS and Memory Allocation
8. 9.8 Heap Memory Overhead
9. 9.9 Common Pointer Problems
10. 9.10 Pointers in Modern Languages
11. 9.11 Managed Pointers
12. 9.12 For More Information

18. 10 STRING DATA TYPES

1. 10.1 Character String Formats


2. 10.2 Static, Pseudo-Dynamic, and Dynamic Strings
3. 10.3 Reference Counting for Strings
4. 10.4 Delphi Strings
5. 10.5 Using Strings in a High-Level Language
6. 10.6 Unicode Character Data in Strings
7. 10.7 Unicode String Functions and Performance
8. 10.8 For More Information
19. 11 RECORD, UNION, AND CLASS DATA TYPES

1. 11.1 Records
2. 11.2 Discriminant Unions
3. 11.3 Variant Types
4. 11.4 Namespaces
5. 11.5 Classes and Objects
6. 11.6 Protocols and Interfaces
7. 11.7 Classes, Objects, and Performance
8. 11.8 For More Information

20. 12 ARITHMETIC AND LOGICAL EXPRESSIONS

1. 12.1 Arithmetic Expressions and Computer Architecture


2. 12.2 Optimization of Arithmetic Statements
3. 12.3 Side Effects in Arithmetic Expressions
4. 12.4 Containing Side Effects: Sequence Points
5. 12.5 Avoiding Problems Caused by Side Effects
6. 12.6 Forcing a Particular Order of Evaluation
7. 12.7 Short-Circuit Evaluation
8. 12.8 The Relative Cost of Arithmetic Operations
9. 12.9 For More Information

21. 13 CONTROL STRUCTURES AND PROGRAMMATIC DECISIONS

1. 13.1 How Control Structures Affect a Program’s Efficiency


2. 13.2 Introduction to Low-Level Control Structures
3. 13.3 The goto Statement
4. 13.4 The if Statement
5. 13.5 The switch/case Statement
6. 13.6 For More Information

22. 14 ITERATIVE CONTROL STRUCTURES

1. 14.1 The while Loop


2. 14.2 The repeat..until (do..until/do..while) Loop
3. 14.3 The forever..endfor Loop
4. 14.4 The Definite Loop (for Loops)
5. 14.5 For More Information

23. 15 FUNCTIONS AND PROCEDURES


1. 15.1 Simple Function and Procedure Calls
2. 15.2 Leaf Functions and Procedures
3. 15.3 Macros and Inline Functions
4. 15.4 Passing Parameters to a Function or Procedure
5. 15.5 Activation Records and the Stack
6. 15.6 Parameter-Passing Mechanisms
7. 15.7 Function Return Values
8. 15.8 For More Information
24. AFTERWORD: ENGINEERING SOFTWARE
25. GLOSSARY
26. ONLINE APPENDIXES
27. INDEX
28. FOOTNOTES

1. i
2. ii
3. iii
4. iv
5. v
6. vi
7. vii
8. viii
9. ix
10. x
11. xi
12. xii
13. xiii
14. xiv
15. xv
16. xvi
17. xvii
18. xviii
19. xix
20. xx
21. xxi
22. xxii
23. xxiii
24. xxiv
25. 1
26. 2
27. 3
28. 4
29. 5
30. 6
31. 7
32. 8
33. 9
34. 10
35. 11
36. 12
37. 13
38. 14
39. 15
40. 16
41. 17
42. 18
43. 19
44. 20
45. 21
46. 22
47. 23
48. 24
49. 25
50. 26
51. 27
52. 28
53. 29
54. 30
55. 31
56. 32
57. 33
58. 34
59. 35
60. 36
61. 37
62. 38
63. 39
64. 40
65. 41
66. 42
67. 43
68. 44
69. 45
70. 46
71. 47
72. 48
73. 49
74. 50
75. 51
76. 52
77. 53
78. 54
79. 55
80. 56
81. 57
82. 58
83. 59
84. 60
85. 61
86. 62
87. 63
88. 64
89. 65
90. 66
91. 67
92. 68
93. 69
94. 70
95. 71
96. 72
97. 73
98. 74
99. 75
100. 76
101. 77
102. 78
103. 79
104. 80
105. 81
106. 82
107. 83
108. 84
109. 85
110. 86
111. 87
112. 88
113. 89
114. 90
115. 91
116. 92
117. 93
118. 94
119. 95
120. 96
121. 97
122. 98
123. 99
124. 100
125. 101
126. 102
127. 103
128. 104
129. 105
130. 106
131. 107
132. 108
133. 109
134. 110
135. 111
136. 112
137. 113
138. 114
139. 115
140. 116
141. 117
142. 118
143. 119
144. 120
145. 121
146. 122
147. 123
148. 124
149. 125
150. 126
151. 127
152. 128
153. 129
154. 130
155. 131
156. 132
157. 133
158. 134
159. 135
160. 136
161. 137
162. 138
163. 139
164. 140
165. 141
166. 142
167. 143
168. 144
169. 145
170. 146
171. 147
172. 148
173. 149
174. 150
175. 151
176. 152
177. 153
178. 154
179. 155
180. 156
181. 157
182. 158
183. 159
184. 160
185. 161
186. 162
187. 163
188. 164
189. 165
190. 166
191. 167
192. 168
193. 169
194. 170
195. 171
196. 172
197. 173
198. 174
199. 175
200. 176
201. 177
202. 178
203. 179
204. 180
205. 181
206. 182
207. 183
208. 184
209. 185
210. 186
211. 187
212. 188
213. 189
214. 190
215. 191
216. 192
217. 193
218. 194
219. 195
220. 196
221. 197
222. 198
223. 199
224. 200
225. 201
226. 202
227. 203
228. 204
229. 205
230. 206
231. 207
232. 208
233. 209
234. 210
235. 211
236. 212
237. 213
238. 214
239. 215
240. 216
241. 217
242. 218
243. 219
244. 220
245. 221
246. 222
247. 223
248. 224
249. 225
250. 226
251. 227
252. 228
253. 229
254. 230
255. 231
256. 232
257. 233
258. 234
259. 235
260. 236
261. 237
262. 238
263. 239
264. 240
265. 241
266. 242
267. 243
268. 244
269. 245
270. 246
271. 247
272. 248
273. 249
274. 250
275. 251
276. 252
277. 253
278. 254
279. 255
280. 256
281. 257
282. 258
283. 259
284. 260
285. 261
286. 262
287. 263
288. 264
289. 265
290. 266
291. 267
292. 268
293. 269
294. 270
295. 271
296. 272
297. 273
298. 274
299. 275
300. 276
301. 277
302. 278
303. 279
304. 280
305. 281
306. 282
307. 283
308. 284
309. 285
310. 286
311. 287
312. 288
313. 289
314. 290
315. 291
316. 292
317. 293
318. 294
319. 295
320. 296
321. 297
322. 298
323. 299
324. 300
325. 301
326. 302
327. 303
328. 304
329. 305
330. 306
331. 307
332. 308
333. 309
334. 310
335. 311
336. 312
337. 313
338. 314
339. 315
340. 316
341. 317
342. 318
343. 319
344. 320
345. 321
346. 322
347. 323
348. 324
349. 325
350. 326
351. 327
352. 328
353. 329
354. 330
355. 331
356. 332
357. 333
358. 334
359. 335
360. 336
361. 337
362. 338
363. 339
364. 340
365. 341
366. 342
367. 343
368. 344
369. 345
370. 346
371. 347
372. 348
373. 349
374. 350
375. 351
376. 352
377. 353
378. 354
379. 355
380. 356
381. 357
382. 358
383. 359
384. 360
385. 361
386. 362
387. 363
388. 364
389. 365
390. 366
391. 367
392. 368
393. 369
394. 370
395. 371
396. 372
397. 373
398. 374
399. 375
400. 376
401. 377
402. 378
403. 379
404. 380
405. 381
406. 382
407. 383
408. 384
409. 385
410. 386
411. 387
412. 388
413. 389
414. 390
415. 391
416. 392
417. 393
418. 394
419. 395
420. 396
421. 397
422. 398
423. 399
424. 400
425. 401
426. 402
427. 403
428. 404
429. 405
430. 406
431. 407
432. 408
433. 409
434. 410
435. 411
436. 412
437. 413
438. 414
439. 415
440. 416
441. 417
442. 418
443. 419
444. 420
445. 421
446. 422
447. 423
448. 424
449. 425
450. 426
451. 427
452. 428
453. 429
454. 430
455. 431
456. 432
457. 433
458. 434
459. 435
460. 436
461. 437
462. 438
463. 439
464. 440
465. 441
466. 442
467. 443
468. 444
469. 445
470. 446
471. 447
472. 448
473. 449
474. 450
475. 451
476. 452
477. 453
478. 454
479. 455
480. 456
481. 457
482. 458
483. 459
484. 460
485. 461
486. 462
487. 463
488. 464
489. 465
490. 466
491. 467
492. 468
493. 469
494. 470
495. 471
496. 472
497. 473
498. 474
499. 475
500. 476
501. 477
502. 478
503. 479
504. 480
505. 481
506. 482
507. 483
508. 484
509. 485
510. 486
511. 487
512. 488
513. 489
514. 490
515. 491
516. 492
517. 493
518. 494
519. 495
520. 496
521. 497
522. 498
523. 499
524. 500
525. 501
526. 502
527. 503
528. 504
529. 505
530. 506
531. 507
532. 508
533. 509
534. 510
535. 511
536. 512
537. 513
538. 514
539. 515
540. 516
541. 517
542. 518
543. 519
544. 520
545. 521
546. 522
547. 523
548. 524
549. 525
550. 526
551. 527
552. 528
553. 529
554. 530
555. 531
556. 532
557. 533
558. 534
559. 535
560. 536
561. 537
562. 538
563. 539
564. 540
565. 541
566. 542
567. 543
568. 544
569. 545
570. 546
571. 547
572. 548
573. 549
574. 550
575. 551
576. 552
577. 553
578. 554
579. 555
580. 556
581. 557
582. 558
583. 559
584. 560
585. 561
586. 562
587. 563
588. 564
589. 565
590. 566
591. 567
592. 568
593. 569
594. 570
595. 571
596. 572
597. 573
598. 574
599. 575
600. 576
601. 577
602. 578
603. 579
604. 580
605. 581
606. 582
607. 583
608. 584
609. 585
610. 586
611. 587
612. 588
613. 589
614. 590
615. 591
616. 592
617. 593
618. 594
619. 595
620. 596
621. 597
622. 598
623. 599
624. 600
625. 601
626. 602
627. 603
628. 604
629. 605
630. 606
631. 607
632. 608
633. 609
634. 610
635. 611
636. 612
637. 613
638. 614
639. 615
640. 616
641. 617
642. 618
643. 619
644. 620
645. 621
646. 622
647. 623
648. 624
649. 625
650. 626
651. 627
652. 628
653. 629
654. 630
655. 631
656. 632
657. 633
658. 634
PRAISE FOR THE FIRST EDITION OF
WRITE GREAT CODE, VOLUME 2
“Set aside some money and buy this book, or get a friend to
buy it and get it from them while still in the store. When you
get home, read it TWICE so that you master what is in these
pages. Then read it again.”

—DEVCITY

“Write Great Code, Volume 2, exceeds its goal of helping


developers pay more attention to application performance when
writing applications in high-level languages. This book is a must
for any high-level application developer.”

—FREE SOFTWARE MAGAZINE

“As a high-level-language programmer, if you want to know


what’s really going on with your programs, you need to spend a
little time learning assembly language—and you won’t find an
easier introduction.”

—DEVX

“This is a good book. A very, very good book. Frankly, I’m


blown away at the quality of writing.”

—TORONTO RUBY USER GROUP


WRITE GREAT CODE
VOLUME 2
2ND EDITION

Thinking Low-Level, Writing High-Level

by Randall Hyde

San Francisco
WRITE GREAT CODE, Volume 2: Thinking Low-Level, Writing High-
Level, 2nd Edition.
Copyright © 2020 by Randall Hyde.

All rights reserved. No part of this work may be reproduced or transmitted in


any form or by any means, electronic or mechanical, including photocopying,
recording, or by any information storage or retrieval system, without the
prior written permission of the copyright owner and the publisher.

ISBN-10: 1-718-50038-6
ISBN-13: 978-1-71850-038-9

Publisher: William Pollock


Executive Editor: Barbara Yien
Production Editor: Rachel Monaghan
Developmental Editor: Athabasca Witschi
Project Editor: Dapinder Dosanjh
Cover and Interior Design: Octopod Studios
Technical Reviewer: Anthony Tribelli
Copyeditor: Rachel Monaghan
Compositor: Danielle Foster
Proofreader: James Fraleigh
Illustrator: David Van Ness

For information on distribution, translations, or bulk sales, please contact No


Starch Press, Inc. directly:
No Starch Press, Inc.
245 8th Street, San Francisco, CA 94103
phone: 1.415.863.9900; [email protected]
www.nostarch.com

The Library of Congress issued the following Cataloging-in-Publication Data


for the first edition of Volume 1:

Hyde, Randall.
Write great code : understanding the machine / Randall Hyde.
p. cm.
ISBN 1-59327-003-8
1. Computer programming. 2. Computer architecture. I. Title.
QA76.6.H94 2004
005.1--dc22
2003017502

No Starch Press and the No Starch Press logo are registered trademarks of
No Starch Press, Inc. Other product and company names mentioned herein
may be the trademarks of their respective owners. Rather than use a
trademark symbol with every occurrence of a trademarked name, we are
using the names only in an editorial fashion and to the benefit of the
trademark owner, with no intention of infringement of the trademark.

The information in this book is distributed on an “As Is” basis, without


warranty. While every precaution has been taken in the preparation of this
work, neither the author nor No Starch Press, Inc. shall have any liability to
any person or entity with respect to any loss or damage caused or alleged to
be caused directly or indirectly by the information contained in it.
ABOUT THE AUTHOR
Randall Hyde is the author of The Art of Assembly Language
and Write Great Code, Volumes 1, 2, and 3 (all from No Starch
Press), as well as Using 6502 Assembly Language and P-Source
(Datamost). He is also the coauthor of Microsoft Macro
Assembler 6.0 Bible (The Waite Group). Over the past 40 years,
Hyde has worked as an embedded software/hardware engineer
developing instrumentation for nuclear reactors, traffic control
systems, and other consumer electronics devices. He has also
taught computer science at California State Polytechnic
University, Pomona, and at the University of California,
Riverside. His website is www.randallhyde.com/.

ABOUT THE TECHNICAL REVIEWER


Tony Tribelli has more than 35 years of experience in
software development, including work on embedded device
kernels and molecular modeling. He developed video games for
10 years at Blizzard Entertainment. He is currently a software
development consultant and privately develops applications
utilizing computer vision.
BRIEF CONTENTS
Acknowledgments

Introduction

Chapter 1: Thinking Low-Level, Writing High-Level

Chapter 2: Shouldn’t You Learn Assembly Language?

Chapter 3: 80x86 Assembly for the HLL Programmer

Chapter 4: Compiler Operation and Code Generation

Chapter 5: Tools for Analyzing Compiler Output

Chapter 6: Constants and High-Level Languages

Chapter 7: Variables in a High-Level Language

Chapter 8: Array Data Types

Chapter 9: Pointer Data Types

Chapter 10: String Data Types

Chapter 11: Record, Union, and Class Data Types

Chapter 12: Arithmetic and Logical Expressions

Chapter 13: Control Structures and Programmatic Decisions

Chapter 14: Iterative Control Structures


Chapter 15: Functions and Procedures

Afterword: Engineering Software

Glossary

Online Appendixes

Index
Discovering Diverse Content Through
Random Scribd Documents
*** END OF THE PROJECT GUTENBERG EBOOK THE X BAR X
BOYS AT NUGGET CAMP ***

Updated editions will replace the previous one—the old editions will
be renamed.

Creating the works from print editions not protected by U.S.


copyright law means that no one owns a United States copyright in
these works, so the Foundation (and you!) can copy and distribute it
in the United States without permission and without paying copyright
royalties. Special rules, set forth in the General Terms of Use part of
this license, apply to copying and distributing Project Gutenberg™
electronic works to protect the PROJECT GUTENBERG™ concept
and trademark. Project Gutenberg is a registered trademark, and
may not be used if you charge for an eBook, except by following the
terms of the trademark license, including paying royalties for use of
the Project Gutenberg trademark. If you do not charge anything for
copies of this eBook, complying with the trademark license is very
easy. You may use this eBook for nearly any purpose such as
creation of derivative works, reports, performances and research.
Project Gutenberg eBooks may be modified and printed and given
away—you may do practically ANYTHING in the United States with
eBooks not protected by U.S. copyright law. Redistribution is subject
to the trademark license, especially commercial redistribution.

START: FULL LICENSE


THE FULL PROJECT GUTENBERG LICENSE
PLEASE READ THIS BEFORE YOU DISTRIBUTE OR USE THIS WORK

To protect the Project Gutenberg™ mission of promoting the free


distribution of electronic works, by using or distributing this work (or
any other work associated in any way with the phrase “Project
Gutenberg”), you agree to comply with all the terms of the Full
Project Gutenberg™ License available with this file or online at
www.gutenberg.org/license.

Section 1. General Terms of Use and


Redistributing Project Gutenberg™
electronic works
1.A. By reading or using any part of this Project Gutenberg™
electronic work, you indicate that you have read, understand, agree
to and accept all the terms of this license and intellectual property
(trademark/copyright) agreement. If you do not agree to abide by all
the terms of this agreement, you must cease using and return or
destroy all copies of Project Gutenberg™ electronic works in your
possession. If you paid a fee for obtaining a copy of or access to a
Project Gutenberg™ electronic work and you do not agree to be
bound by the terms of this agreement, you may obtain a refund from
the person or entity to whom you paid the fee as set forth in
paragraph 1.E.8.

1.B. “Project Gutenberg” is a registered trademark. It may only be


used on or associated in any way with an electronic work by people
who agree to be bound by the terms of this agreement. There are a
few things that you can do with most Project Gutenberg™ electronic
works even without complying with the full terms of this agreement.
See paragraph 1.C below. There are a lot of things you can do with
Project Gutenberg™ electronic works if you follow the terms of this
agreement and help preserve free future access to Project
Gutenberg™ electronic works. See paragraph 1.E below.
1.C. The Project Gutenberg Literary Archive Foundation (“the
Foundation” or PGLAF), owns a compilation copyright in the
collection of Project Gutenberg™ electronic works. Nearly all the
individual works in the collection are in the public domain in the
United States. If an individual work is unprotected by copyright law in
the United States and you are located in the United States, we do
not claim a right to prevent you from copying, distributing,
performing, displaying or creating derivative works based on the
work as long as all references to Project Gutenberg are removed. Of
course, we hope that you will support the Project Gutenberg™
mission of promoting free access to electronic works by freely
sharing Project Gutenberg™ works in compliance with the terms of
this agreement for keeping the Project Gutenberg™ name
associated with the work. You can easily comply with the terms of
this agreement by keeping this work in the same format with its
attached full Project Gutenberg™ License when you share it without
charge with others.

1.D. The copyright laws of the place where you are located also
govern what you can do with this work. Copyright laws in most
countries are in a constant state of change. If you are outside the
United States, check the laws of your country in addition to the terms
of this agreement before downloading, copying, displaying,
performing, distributing or creating derivative works based on this
work or any other Project Gutenberg™ work. The Foundation makes
no representations concerning the copyright status of any work in
any country other than the United States.

1.E. Unless you have removed all references to Project Gutenberg:

1.E.1. The following sentence, with active links to, or other


immediate access to, the full Project Gutenberg™ License must
appear prominently whenever any copy of a Project Gutenberg™
work (any work on which the phrase “Project Gutenberg” appears, or
with which the phrase “Project Gutenberg” is associated) is
accessed, displayed, performed, viewed, copied or distributed:
This eBook is for the use of anyone anywhere in the United
States and most other parts of the world at no cost and with
almost no restrictions whatsoever. You may copy it, give it away
or re-use it under the terms of the Project Gutenberg License
included with this eBook or online at www.gutenberg.org. If you
are not located in the United States, you will have to check the
laws of the country where you are located before using this
eBook.

1.E.2. If an individual Project Gutenberg™ electronic work is derived


from texts not protected by U.S. copyright law (does not contain a
notice indicating that it is posted with permission of the copyright
holder), the work can be copied and distributed to anyone in the
United States without paying any fees or charges. If you are
redistributing or providing access to a work with the phrase “Project
Gutenberg” associated with or appearing on the work, you must
comply either with the requirements of paragraphs 1.E.1 through
1.E.7 or obtain permission for the use of the work and the Project
Gutenberg™ trademark as set forth in paragraphs 1.E.8 or 1.E.9.

1.E.3. If an individual Project Gutenberg™ electronic work is posted


with the permission of the copyright holder, your use and distribution
must comply with both paragraphs 1.E.1 through 1.E.7 and any
additional terms imposed by the copyright holder. Additional terms
will be linked to the Project Gutenberg™ License for all works posted
with the permission of the copyright holder found at the beginning of
this work.

1.E.4. Do not unlink or detach or remove the full Project


Gutenberg™ License terms from this work, or any files containing a
part of this work or any other work associated with Project
Gutenberg™.

1.E.5. Do not copy, display, perform, distribute or redistribute this


electronic work, or any part of this electronic work, without
prominently displaying the sentence set forth in paragraph 1.E.1 with
active links or immediate access to the full terms of the Project
Gutenberg™ License.
1.E.6. You may convert to and distribute this work in any binary,
compressed, marked up, nonproprietary or proprietary form,
including any word processing or hypertext form. However, if you
provide access to or distribute copies of a Project Gutenberg™ work
in a format other than “Plain Vanilla ASCII” or other format used in
the official version posted on the official Project Gutenberg™ website
(www.gutenberg.org), you must, at no additional cost, fee or expense
to the user, provide a copy, a means of exporting a copy, or a means
of obtaining a copy upon request, of the work in its original “Plain
Vanilla ASCII” or other form. Any alternate format must include the
full Project Gutenberg™ License as specified in paragraph 1.E.1.

1.E.7. Do not charge a fee for access to, viewing, displaying,


performing, copying or distributing any Project Gutenberg™ works
unless you comply with paragraph 1.E.8 or 1.E.9.

1.E.8. You may charge a reasonable fee for copies of or providing


access to or distributing Project Gutenberg™ electronic works
provided that:

• You pay a royalty fee of 20% of the gross profits you derive from
the use of Project Gutenberg™ works calculated using the
method you already use to calculate your applicable taxes. The
fee is owed to the owner of the Project Gutenberg™ trademark,
but he has agreed to donate royalties under this paragraph to
the Project Gutenberg Literary Archive Foundation. Royalty
payments must be paid within 60 days following each date on
which you prepare (or are legally required to prepare) your
periodic tax returns. Royalty payments should be clearly marked
as such and sent to the Project Gutenberg Literary Archive
Foundation at the address specified in Section 4, “Information
about donations to the Project Gutenberg Literary Archive
Foundation.”

• You provide a full refund of any money paid by a user who


notifies you in writing (or by e-mail) within 30 days of receipt that
s/he does not agree to the terms of the full Project Gutenberg™
License. You must require such a user to return or destroy all
copies of the works possessed in a physical medium and
discontinue all use of and all access to other copies of Project
Gutenberg™ works.

• You provide, in accordance with paragraph 1.F.3, a full refund of


any money paid for a work or a replacement copy, if a defect in
the electronic work is discovered and reported to you within 90
days of receipt of the work.

• You comply with all other terms of this agreement for free
distribution of Project Gutenberg™ works.

1.E.9. If you wish to charge a fee or distribute a Project Gutenberg™


electronic work or group of works on different terms than are set
forth in this agreement, you must obtain permission in writing from
the Project Gutenberg Literary Archive Foundation, the manager of
the Project Gutenberg™ trademark. Contact the Foundation as set
forth in Section 3 below.

1.F.

1.F.1. Project Gutenberg volunteers and employees expend


considerable effort to identify, do copyright research on, transcribe
and proofread works not protected by U.S. copyright law in creating
the Project Gutenberg™ collection. Despite these efforts, Project
Gutenberg™ electronic works, and the medium on which they may
be stored, may contain “Defects,” such as, but not limited to,
incomplete, inaccurate or corrupt data, transcription errors, a
copyright or other intellectual property infringement, a defective or
damaged disk or other medium, a computer virus, or computer
codes that damage or cannot be read by your equipment.

1.F.2. LIMITED WARRANTY, DISCLAIMER OF DAMAGES - Except


for the “Right of Replacement or Refund” described in paragraph
1.F.3, the Project Gutenberg Literary Archive Foundation, the owner
of the Project Gutenberg™ trademark, and any other party
distributing a Project Gutenberg™ electronic work under this
agreement, disclaim all liability to you for damages, costs and
expenses, including legal fees. YOU AGREE THAT YOU HAVE NO
REMEDIES FOR NEGLIGENCE, STRICT LIABILITY, BREACH OF
WARRANTY OR BREACH OF CONTRACT EXCEPT THOSE
PROVIDED IN PARAGRAPH 1.F.3. YOU AGREE THAT THE
FOUNDATION, THE TRADEMARK OWNER, AND ANY
DISTRIBUTOR UNDER THIS AGREEMENT WILL NOT BE LIABLE
TO YOU FOR ACTUAL, DIRECT, INDIRECT, CONSEQUENTIAL,
PUNITIVE OR INCIDENTAL DAMAGES EVEN IF YOU GIVE
NOTICE OF THE POSSIBILITY OF SUCH DAMAGE.

1.F.3. LIMITED RIGHT OF REPLACEMENT OR REFUND - If you


discover a defect in this electronic work within 90 days of receiving it,
you can receive a refund of the money (if any) you paid for it by
sending a written explanation to the person you received the work
from. If you received the work on a physical medium, you must
return the medium with your written explanation. The person or entity
that provided you with the defective work may elect to provide a
replacement copy in lieu of a refund. If you received the work
electronically, the person or entity providing it to you may choose to
give you a second opportunity to receive the work electronically in
lieu of a refund. If the second copy is also defective, you may
demand a refund in writing without further opportunities to fix the
problem.

1.F.4. Except for the limited right of replacement or refund set forth in
paragraph 1.F.3, this work is provided to you ‘AS-IS’, WITH NO
OTHER WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR ANY PURPOSE.

1.F.5. Some states do not allow disclaimers of certain implied


warranties or the exclusion or limitation of certain types of damages.
If any disclaimer or limitation set forth in this agreement violates the
law of the state applicable to this agreement, the agreement shall be
interpreted to make the maximum disclaimer or limitation permitted
by the applicable state law. The invalidity or unenforceability of any
provision of this agreement shall not void the remaining provisions.
1.F.6. INDEMNITY - You agree to indemnify and hold the
Foundation, the trademark owner, any agent or employee of the
Foundation, anyone providing copies of Project Gutenberg™
electronic works in accordance with this agreement, and any
volunteers associated with the production, promotion and distribution
of Project Gutenberg™ electronic works, harmless from all liability,
costs and expenses, including legal fees, that arise directly or
indirectly from any of the following which you do or cause to occur:
(a) distribution of this or any Project Gutenberg™ work, (b)
alteration, modification, or additions or deletions to any Project
Gutenberg™ work, and (c) any Defect you cause.

Section 2. Information about the Mission of


Project Gutenberg™
Project Gutenberg™ is synonymous with the free distribution of
electronic works in formats readable by the widest variety of
computers including obsolete, old, middle-aged and new computers.
It exists because of the efforts of hundreds of volunteers and
donations from people in all walks of life.

Volunteers and financial support to provide volunteers with the


assistance they need are critical to reaching Project Gutenberg™’s
goals and ensuring that the Project Gutenberg™ collection will
remain freely available for generations to come. In 2001, the Project
Gutenberg Literary Archive Foundation was created to provide a
secure and permanent future for Project Gutenberg™ and future
generations. To learn more about the Project Gutenberg Literary
Archive Foundation and how your efforts and donations can help,
see Sections 3 and 4 and the Foundation information page at
www.gutenberg.org.

Section 3. Information about the Project


Gutenberg Literary Archive Foundation
The Project Gutenberg Literary Archive Foundation is a non-profit
501(c)(3) educational corporation organized under the laws of the
state of Mississippi and granted tax exempt status by the Internal
Revenue Service. The Foundation’s EIN or federal tax identification
number is 64-6221541. Contributions to the Project Gutenberg
Literary Archive Foundation are tax deductible to the full extent
permitted by U.S. federal laws and your state’s laws.

The Foundation’s business office is located at 809 North 1500 West,


Salt Lake City, UT 84116, (801) 596-1887. Email contact links and up
to date contact information can be found at the Foundation’s website
and official page at www.gutenberg.org/contact

Section 4. Information about Donations to


the Project Gutenberg Literary Archive
Foundation
Project Gutenberg™ depends upon and cannot survive without
widespread public support and donations to carry out its mission of
increasing the number of public domain and licensed works that can
be freely distributed in machine-readable form accessible by the
widest array of equipment including outdated equipment. Many small
donations ($1 to $5,000) are particularly important to maintaining tax
exempt status with the IRS.

The Foundation is committed to complying with the laws regulating


charities and charitable donations in all 50 states of the United
States. Compliance requirements are not uniform and it takes a
considerable effort, much paperwork and many fees to meet and
keep up with these requirements. We do not solicit donations in
locations where we have not received written confirmation of
compliance. To SEND DONATIONS or determine the status of
compliance for any particular state visit www.gutenberg.org/donate.

While we cannot and do not solicit contributions from states where


we have not met the solicitation requirements, we know of no
prohibition against accepting unsolicited donations from donors in
such states who approach us with offers to donate.

International donations are gratefully accepted, but we cannot make


any statements concerning tax treatment of donations received from
outside the United States. U.S. laws alone swamp our small staff.

Please check the Project Gutenberg web pages for current donation
methods and addresses. Donations are accepted in a number of
other ways including checks, online payments and credit card
donations. To donate, please visit: www.gutenberg.org/donate.

Section 5. General Information About Project


Gutenberg™ electronic works
Professor Michael S. Hart was the originator of the Project
Gutenberg™ concept of a library of electronic works that could be
freely shared with anyone. For forty years, he produced and
distributed Project Gutenberg™ eBooks with only a loose network of
volunteer support.

Project Gutenberg™ eBooks are often created from several printed


editions, all of which are confirmed as not protected by copyright in
the U.S. unless a copyright notice is included. Thus, we do not
necessarily keep eBooks in compliance with any particular paper
edition.

Most people start at our website which has the main PG search
facility: www.gutenberg.org.

This website includes information about Project Gutenberg™,


including how to make donations to the Project Gutenberg Literary
Archive Foundation, how to help produce our new eBooks, and how
to subscribe to our email newsletter to hear about new eBooks.
back
back
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.

Let us accompany you on the journey of exploring knowledge and


personal growth!

textbookfull.com

You might also like