Top 10 Bug-Killing Coding Standard Rules
|
|
|
- Ambrose Melton
- 9 years ago
- Views:
Transcription
1 Top 10 Bug-Killing Coding Standard Rules Michael Barr & Dan Smith Webinar: June 3, 2014 MICHAEL BARR, CTO Electrical Engineer (BSEE/MSEE) Experienced Embedded Software Developer Consultant & Trainer (1999-present) Embedded software process and architecture improvement Various industries (e.g., medical devices, industrial controls) Former Adjunct Professor University of Maryland (Design and Use of Operating Systems) Johns Hopkins University 2012 (Embedded Software Architecture) Served as Editor-in-Chief, Columnist, Conference Chair Expert witness (e.g., in re: Toyota unintended acceleration) Author of 3 books and over 70 articles/papers 2 Copyright Barr Group, LLC. Page 1
2 BOOK: EMBEDDED C CODING STANDARD Bugs are expensive to find/kill It s cheaper/easier to keep a bug out Bias toward checkable bug-killers Goals: Safety, security, and reliability These 10 bug-killing rules + more Complementary to MISRA-C guidelines Including our internal stylistic rules 3 BARR GROUP The Embedded Systems Experts Barr Group helps companies make their embedded systems safer and more secure. BARRGROUP.COM 4 Copyright Barr Group, LLC. Page 2
3 UPCOMING PUBLIC TRAININGS Embedded SOFTWARE Boot Camp October in Detroit, Michigan Embedded ANDROID Boot Camp October in Costa Mesa, California Embedded SECURITY Boot Camp November 3-7 in Germantown, Maryland 5 OVERVIEW OF TODAY S WEBINAR Goal Establish that simple coding rules can reduce bugs Key Takeaways 10 easy-to-follow bug-killing rules for coding standards Prerequisites Familiarity with embedded programming in C or C++ 6 Copyright Barr Group, LLC. Page 3
4 DAN SMITH, PRINCIPAL ENGINEER BSEE (comp.eng), Princeton Experienced firmware developer 20+ years of embedded systems design Control systems, telecom/datacom, medical devices, defense, transportation Numerous RTOSes, processors, platforms Engineer, instructor, speaker, consultant Focus on secure, safe, fault-tolerant systems 7 WHY ADOPT A CODING STANDARD? Several good reasons engineers talk about Readability, when all of the code looks a certain way This results when there is a focus on stylistic rules Portability, when C s inconsistencies are managed An even better reason is not talked about enough Certain coding standard rules can keep bugs out! Finding bugs is hard and time-consuming 8 Copyright Barr Group, LLC. Page 4
5 WHERE BUGS COME FROM The original programmer(s) Programming is the step of bugging the code Maintenance programmer(s) By breaking assumptions of the original programmer By misunderstanding the original programmer s intent Both types of bugs can be reduced by following a set of bug-reducing coding rules! 9 MISRA-C GUIDELINES Guidelines for use of the C language in critical systems A carefully-rationalized subset of C We highly recommend following it But MISRA-C is a set of guidelines NOT a coding standard Style is not addressed at all Barr Group s standard is compatible with MISRA-C 10 Copyright Barr Group, LLC. Page 5
6 CODING STANDARD ENFORCEMENT To be effective, coding standards must be both: ENFORCEABLE Favor objective, enforceable rules over unenforceable ones Enforce automatically with tools whenever possible And ENFORCED By the entire team, and its standard processes Few, if any, exceptions allowed (and documented) 11 Rule #1 always use braces Rule: Braces ({ }) shall always surround the blocks of code (also known as compound statements) following if, else, switch, while, do, and for keywords. Single statements and empty statements following these keywords shall also always be surrounded by braces. 12 Copyright Barr Group, LLC. Page 6
7 ALWAYS-BRACES EXAMPLE CODE DON T if (5 == foo) bar(); // Indenting not sufficient; use braces also. always_run(); if (5 == foo) bar(); always_run(); // Will be executed only when foo == 5!! if (5 == foo) bar(); fred(); always_run(); // Will always be executed 13 ALWAYS-BRACES EXAMPLE CODE DO DO if (5 == foo) { // All code inside the braces conditionally executed. bar(); } always_run(); while (!timer.b_done) { // Even an empty statement should have braces. } 14 Copyright Barr Group, LLC. Page 7
8 Rule #2 whenever possible const Rule: The const keyword shall be used whenever possible, including: To declare variables that should not be changed after initialization To define call-by-reference function parameters that should not be modified To define fields in structs and unions that cannot be modified (e.g., in a struct overlay for memory-mapped I/O register) As a strongly typed alternative to #define for numerical constants 15 MAXIMIZE-CONST EXAMPLE CODE DO // Variables that won t be changed & can be stored in ROM. char const * gp_model_name = Acme 9000 ; int const g_build_number = CURRENT_BUILD_NUMBER(); // Function parameters that must not be modified. char * strncpy(char * p_dest, char const * p_src, size_t count) { } // Strongly-typed alternative to #define. size_t const HEAP_SIZE = 8192; 16 Copyright Barr Group, LLC. Page 8
9 Rule #3 whenever possible static Rule: The static keyword shall be used to declare all functions and variables that do not need to be visible outside of the module in which they are declared. Increases encapsulation and data protection Protects long-lived data from cross-module access Reduces coupling, improves maintainability 17 MAXIMIZE-STATIC EXAMPLE CODE DO (timer.c) #include timer.h // Variable with visibility only within this file. static uint32_t g_next_timeout = 0; // Helper function not callable from outside this file. static uint32_t add_timer_to_active_list( ) { ++g_next_timeout = ; } 18 Copyright Barr Group, LLC. Page 9
10 Rule #4 whenever necessary volatile Rule: The volatile keyword shall be used whenever appropriate, including: To declare a global variable accessible (by current use or scope) by any interrupt service routine To declare a global variable accessible (by current use or scope) by two or more tasks To declare a pointer to a memory-mapped I/O peripheral register set Eliminates a whole class of difficult bugs! 19 OPTIMIZATION: REDUNDANT READS What your code says timer.count = 0; timer.control = 0xE000; while (timer.count < 100) { // do stuff } // do more stuff What the optimizer does timer.count = 0; timer.control = 0xE000; while (1) { // do stuff } [saves time and code space] 20 Copyright Barr Group, LLC. Page 10
11 OPTIMIZATION: UNNECESSARY WRITES What your code says led_reg = 0xFE; // LED0: patient dying // code that never reads led_reg led_reg = 0xFF; // LED0: patient stable What the optimizer does [saves time and code space] // code that never reads led_reg led_reg = 0xFF; // LED0: patient stable 21 MORE ON VOLATILE If working code fails first at optimizer enable missing volatile keywords are the likely culprits Solution: review all declarations for missing volatile volatile rarely used outside embedded software Great question to ask prospective firmware hires! Other uses of volatile 22 Data that must be wiped (e.g., plaintext, keys, etc.) Sequencing of operations Copyright Barr Group, LLC. Page 11
12 VOLATILE USAGE - EXAMPLE CODE DO // Every shared global object is volatile uint16_t volatile g_state = SYSTEM_STARTUP; // as is every hardware register. typedef struct { } my_fpga_t; my_fpga_t volatile * const p_timer = ; 23 // Even some types of non-shared data should be uint8_t volatile plaintext[max_plaintext]; Rule #5 don t disable code with comments Rule: Comments shall not be used to disable a block of code, even temporarily. Use the preprocessor s conditional compilation feature. Nested comments not part of C standard Supported on some compilers, not on others Use version control for experimental code changes Don t leave commented out code for next developer 24 Copyright Barr Group, LLC. Page 12
13 COMMENTED-OUT CODE EXAMPLE DON T DO /* outer comment a = a + 1; /* nested comment */ b = b + 1; */ #if 0 a = a + 1; /* nested comment */ b = b + 1; #endif 25 Rule #6 Fixed-width data types Rule #6: Whenever the width, in bits or bytes, of an integer value matters in the program, a fixedwidth data type shall be used in place of char, short, int, long, or long long. Use C99 s signed and unsigned fixed-width data types. Corollaries Keywords short and long shall never be used. Keyword char shall only be used for strings. 26 Copyright Barr Group, LLC. Page 13
14 RECOMMENDED FIXED-WIDTH TYPE NAMES Defined in C99 include file <stdint.h> Integer Width Signed Type Unsigned Type 8 bits / 1 byte int8_t uint8_t 16 bits / 2 bytes int16_t uint16_t 32 bits / 4 bytes int32_t uint32_t 64 bits / 8 bytes int64_t uint64_t Adopt these names even if not a C99 compiler! 27 Rule #7 bit-wise operators Rule: None of the bit-wise operators (&,, ~, <<, and >>) shall be used to manipulate signed types. Doesn t even really make sense Implementation defined Undefined behavior The C standard does not specify the underlying format of signed data (e.g., 2 s complement). Bit-wise operations rely on assumptions! 28 Copyright Barr Group, LLC. Page 14
15 NO BIT-WISE SIGNED EXAMPLE CODE DON T // Division via bit-shift doesn t work when negative. int8_t signed_data = -4; signed_data >>= 1; // not necessarily -2 // Left-shifts of signed data are undefined (in ISO C). int32_t signed_data = -100; signed_data <<= 1; // The meaning of bit flips also varies for signed data. uint8_t max_unsigned = ~0; // 255 (max unsigned) int8_t max_signed = ~0; // -1 (not max signed) 29 Rule #8 don t mix signed & unsigned Rule: Signed integers shall not be combined with unsigned integers in comparisons or expressions. Decimal constants meant to be unsigned should be declared with a u at the end. Several details of manipulation of binary data in signed integer containers are implementationdefined aspects of the ISO C language standard. 30 Results of mixing signed and unsigned data can lead to data-dependent bugs. Often encountered during integration Copyright Barr Group, LLC. Page 15
16 NO MIX-SIGNED EXAMPLE CODE DON T int s = -9; unsigned int u = 6; // WARNING! Dangerous mix of signed and unsigned. if (s + u < 4) { // This correct path should be executed // if (-9 + 6) is -3 < 4, as humans expect. } else { // This incorrect path is actually executed } 31 Rule #9 favor inline over macros Rule: Parameterized macros shall not be used if an inline function can be written to accomplish the same task. C++ compiler-hint keyword inline was added to C as part of C Copyright Barr Group, LLC. Page 16
17 INLINE VS. MACROS EXAMPLE CODE DON T // No type checking; possible unintended side effects. #define SQUARE(A) ((A)*(A)) DO // Inline functions are safer, with no run-time cost. inline uint32_t square(uint16_t a) { return (a * a); } 33 Rule #10 one variable declaration per line Rule: Declare each variable on its own line The comma separator shall not be used within variable declarations. Generated code is identical Compilation isn t any slower either Biggest benefit: Improved readability DON T char * x, y; // Was y supposed to be a pointer too? 34 Copyright Barr Group, LLC. Page 17
18 KEY TAKEAWAYS Different sources of firmware bugs The original programmer creates some Maintenance programmers create others The original programmer has influence over both! Keep bugs out by adopting coding standard rules First, by enforcing bug-limiting rules Enforced automatically, whenever possible Improved portability, readability and maintainability 35 QUESTION & ANSWER 36 Copyright Barr Group, LLC. Page 18
19 ADDITIONAL RESOURCES Paper: Top 10 Bug-Killing Coding Standard Rules barrgroup.com/embedded-systems/how-to/bug-killing-standards-for-embedded-c Book: Embedded C Coding Standard barrgroup.com/coding-standard Kit: Embedded Software Training in a Box barrgroup.com/boot-camp-box Training: Barr Group s Upcoming Public Courses barrgroup.com/training-calendar 37 Copyright Barr Group, LLC. Page 19
Safety-Critical Firmware What can we learn from past failures?
Safety-Critical Firmware What can we learn from past failures? Michael Barr & Dan Smith Webinar: September 9, 2014 MICHAEL BARR, CTO BSEE/MSEE and Firmware Developer Consultant and Trainer (1999-present)
The programming language C. sws1 1
The programming language C sws1 1 The programming language C invented by Dennis Ritchie in early 1970s who used it to write the first Hello World program C was used to write UNIX Standardised as K&C (Kernighan
C Programming. for Embedded Microcontrollers. Warwick A. Smith. Postbus 11. Elektor International Media BV. 6114ZG Susteren The Netherlands
C Programming for Embedded Microcontrollers Warwick A. Smith Elektor International Media BV Postbus 11 6114ZG Susteren The Netherlands 3 the Table of Contents Introduction 11 Target Audience 11 What is
Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C
Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C 1 An essential part of any embedded system design Programming 2 Programming in Assembly or HLL Processor and memory-sensitive
Lecture 22: C Programming 4 Embedded Systems
Lecture 22: C Programming 4 Embedded Systems Today s Goals Basic C programming process Variables and constants in C Pointers to access addresses Using a High Level Language High-level languages More human
How Safe does my Code Need to be? Shawn A. Prestridge, Senior Field Applications Engineer
How Safe does my Code Need to be? Shawn A. Prestridge, Senior Field Applications Engineer Agendum What the benefits of Functional Safety are What the most popular safety certifications are Why you should
Embedded Systems. Review of ANSI C Topics. A Review of ANSI C and Considerations for Embedded C Programming. Basic features of C
Embedded Systems A Review of ANSI C and Considerations for Embedded C Programming Dr. Jeff Jackson Lecture 2-1 Review of ANSI C Topics Basic features of C C fundamentals Basic data types Expressions Selection
CS 241 Data Organization Coding Standards
CS 241 Data Organization Coding Standards Brooke Chenoweth University of New Mexico Spring 2016 CS-241 Coding Standards All projects and labs must follow the great and hallowed CS-241 coding standards.
ECE 341 Coding Standard
Page1 ECE 341 Coding Standard Professor Richard Wall University of Idaho Moscow, ID 83843-1023 [email protected] August 27, 2013 1. Motivation for Coding Standards The purpose of implementing a coding standard
Keil C51 Cross Compiler
Keil C51 Cross Compiler ANSI C Compiler Generates fast compact code for the 8051 and it s derivatives Advantages of C over Assembler Do not need to know the microcontroller instruction set Register allocation
How To Port A Program To Dynamic C (C) (C-Based) (Program) (For A Non Portable Program) (Un Portable) (Permanent) (Non Portable) C-Based (Programs) (Powerpoint)
TN203 Porting a Program to Dynamic C Introduction Dynamic C has a number of improvements and differences compared to many other C compiler systems. This application note gives instructions and suggestions
Coding Rules. Encoding the type of a function into the name (so-called Hungarian notation) is forbidden - it only confuses the programmer.
Coding Rules Section A: Linux kernel style based coding for C programs Coding style for C is based on Linux Kernel coding style. The following excerpts in this section are mostly taken as is from articles
Applied Informatics C++ Coding Style Guide
C++ Coding Style Guide Rules and Recommendations Version 1.4 Purpose of This Document This document describes the C++ coding style employed by Applied Informatics. The document is targeted at developers
MPLAB TM C30 Managed PSV Pointers. Beta support included with MPLAB C30 V3.00
MPLAB TM C30 Managed PSV Pointers Beta support included with MPLAB C30 V3.00 Contents 1 Overview 2 1.1 Why Beta?.............................. 2 1.2 Other Sources of Reference..................... 2 2
TivaWare Utilities Library
TivaWare Utilities Library USER S GUIDE SW-TM4C-UTILS-UG-1.1 Copyright 2013 Texas Instruments Incorporated Copyright Copyright 2013 Texas Instruments Incorporated. All rights reserved. Tiva and TivaWare
The C Programming Language course syllabus associate level
TECHNOLOGIES The C Programming Language course syllabus associate level Course description The course fully covers the basics of programming in the C programming language and demonstrates fundamental programming
Keywords are identifiers having predefined meanings in C programming language. The list of keywords used in standard C are : unsigned void
1. Explain C tokens Tokens are basic building blocks of a C program. A token is the smallest element of a C program that is meaningful to the compiler. The C compiler recognizes the following kinds of
A C Test: The 0x10 Best Questions for Would-be Embedded Programmers
A C Test: The 0x10 Best Questions for Would-be Embedded Programmers Nigel Jones Pencils up, everyone. Here s a test to identify potential embedded programmers or embedded programmers with potential An
C++ for Safety-Critical Systems. DI Günter Obiltschnig Applied Informatics Software Engineering GmbH guenter.obiltschnig@appinf.
C++ for Safety-Critical Systems DI Günter Obiltschnig Applied Informatics Software Engineering GmbH [email protected] A life-critical system or safety-critical system is a system whose failure
Name: Class: Date: 9. The compiler ignores all comments they are there strictly for the convenience of anyone reading the program.
Name: Class: Date: Exam #1 - Prep True/False Indicate whether the statement is true or false. 1. Programming is the process of writing a computer program in a language that the computer can respond to
Object Oriented Software Design II
Object Oriented Software Design II Real Application Design Christian Nastasi http://retis.sssup.it/~lipari http://retis.sssup.it/~chris/cpp Scuola Superiore Sant Anna Pisa April 25, 2012 C. Nastasi (Scuola
How To Write Portable Programs In C
Writing Portable Programs COS 217 1 Goals of Today s Class Writing portable programs in C Sources of heterogeneity Data types, evaluation order, byte order, char set, Reading period and final exam Important
MISRA-C:2012 Standards Model Summary for C / C++
MISRA-C:2012 Standards Model Summary for C / C++ The LDRA tool suite is developed and certified to BS EN ISO 9001:2000. This information is applicable to version 9.4.2 of the LDRA tool suite. It is correct
1 Abstract Data Types Information Hiding
1 1 Abstract Data Types Information Hiding 1.1 Data Types Data types are an integral part of every programming language. ANSI-C has int, double and char to name just a few. Programmers are rarely content
Phys4051: C Lecture 2 & 3. Comment Statements. C Data Types. Functions (Review) Comment Statements Variables & Operators Branching Instructions
Phys4051: C Lecture 2 & 3 Functions (Review) Comment Statements Variables & Operators Branching Instructions Comment Statements! Method 1: /* */! Method 2: // /* Single Line */ //Single Line /* This comment
A deeper look at Inline functions
A deeper look at Inline functions I think it s safe to say that all Overload readers know what C++ inline functions are. When we declare a function or member function as inline we are trying to avoid the
Topics. Introduction. Java History CS 146. Introduction to Programming and Algorithms Module 1. Module Objectives
Introduction to Programming and Algorithms Module 1 CS 146 Sam Houston State University Dr. Tim McGuire Module Objectives To understand: the necessity of programming, differences between hardware and software,
C++ INTERVIEW QUESTIONS
C++ INTERVIEW QUESTIONS http://www.tutorialspoint.com/cplusplus/cpp_interview_questions.htm Copyright tutorialspoint.com Dear readers, these C++ Interview Questions have been designed specially to get
Object Oriented Software Design
Object Oriented Software Design Introduction to Java - II Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa September 14, 2011 G. Lipari (Scuola Superiore Sant Anna) Introduction
MPLAB Harmony System Service Libraries Help
MPLAB Harmony System Service Libraries Help MPLAB Harmony Integrated Software Framework v1.08 All rights reserved. This section provides descriptions of the System Service libraries that are available
Atmel AVR4027: Tips and Tricks to Optimize Your C Code for 8-bit AVR Microcontrollers. 8-bit Atmel Microcontrollers. Application Note.
Atmel AVR4027: Tips and Tricks to Optimize Your C Code for 8-bit AVR Microcontrollers Features Atmel AVR core and Atmel AVR GCC introduction Tips and tricks to reduce code size Tips and tricks to reduce
Programing the Microprocessor in C Microprocessor System Design and Interfacing ECE 362
PURDUE UNIVERSITY Programing the Microprocessor in C Microprocessor System Design and Interfacing ECE 362 Course Staff 1/31/2012 1 Introduction This tutorial is made to help the student use C language
Pemrograman Dasar. Basic Elements Of Java
Pemrograman Dasar Basic Elements Of Java Compiling and Running a Java Application 2 Portable Java Application 3 Java Platform Platform: hardware or software environment in which a program runs. Oracle
ELEG3924 Microprocessor Ch.7 Programming In C
Department of Electrical Engineering University of Arkansas ELEG3924 Microprocessor Ch.7 Programming In C Dr. Jingxian Wu [email protected] OUTLINE 2 Data types and time delay I/O programming and Logic operations
Objective-C Tutorial
Objective-C Tutorial OBJECTIVE-C TUTORIAL Simply Easy Learning by tutorialspoint.com tutorialspoint.com i ABOUT THE TUTORIAL Objective-c tutorial Objective-C is a general-purpose, object-oriented programming
C++ Programming Language
C++ Programming Language Lecturer: Yuri Nefedov 7th and 8th semesters Lectures: 34 hours (7th semester); 32 hours (8th semester). Seminars: 34 hours (7th semester); 32 hours (8th semester). Course abstract
Course Name: ADVANCE COURSE IN SOFTWARE DEVELOPMENT (Specialization:.Net Technologies)
Course Name: ADVANCE COURSE IN SOFTWARE DEVELOPMENT (Specialization:.Net Technologies) Duration of Course: 6 Months Fees: Rs. 25,000/- (including Service Tax) Eligibility: B.E./B.Tech., M.Sc.(IT/ computer
Special Topics for Embedded Programming. Reference: The C Programming Language by Kernighan & Ritchie
1 Special Topics for Embedded Programming Reference: The C Programming Language by Kernighan & Ritchie 1 Overview of Topics 2 Microprocessor architecture Peripherals Registers Memory mapped I/O C programming
AppendixA1A1. Java Language Coding Guidelines. A1.1 Introduction
AppendixA1A1 Java Language Coding Guidelines A1.1 Introduction This coding style guide is a simplified version of one that has been used with good success both in industrial practice and for college courses.
Chapter 7 Accessing Microcontroller Registers
Chapter 7 Accessing Microcontroller Registers Microcontroller programming requires efficient techniques for register access. Registers are used to configure the CPU and peripheral hardware devices such
13. Publishing Component Information to Embedded Software
February 2011 NII52018-10.1.0 13. Publishing Component Information to Embedded Software NII52018-10.1.0 This document describes how to publish SOPC Builder component information for embedded software tools.
ENGI E1112 Departmental Project Report: Computer Science/Computer Engineering
ENGI E1112 Departmental Project Report: Computer Science/Computer Engineering Daniel Estrada Taylor, Dev Harrington, Sekou Harris December 2012 Abstract This document is the final report for ENGI E1112,
Caml Virtual Machine File & data formats Document version: 1.4 http://cadmium.x9c.fr
Caml Virtual Machine File & data formats Document version: 1.4 http://cadmium.x9c.fr Copyright c 2007-2010 Xavier Clerc [email protected] Released under the LGPL version 3 February 6, 2010 Abstract: This
Sistemi Operativi. Lezione 25: JOS processes (ENVS) Corso: Sistemi Operativi Danilo Bruschi A.A. 2015/2016
Sistemi Operativi Lezione 25: JOS processes (ENVS) 1 JOS PCB (ENV) 2 env_status ENV_FREE: Indicates that the Env structure is inactive, and therefore on the env_free_list. ENV_RUNNABLE: Indicates that
Motorola 8- and 16-bit Embedded Application Binary Interface (M8/16EABI)
Motorola 8- and 16-bit Embedded Application Binary Interface (M8/16EABI) SYSTEM V APPLICATION BINARY INTERFACE Motorola M68HC05, M68HC08, M68HC11, M68HC12, and M68HC16 Processors Supplement Version 2.0
El Dorado Union High School District Educational Services
El Dorado Union High School District Course of Study Information Page Course Title: ACE Computer Programming II (#495) Rationale: A continuum of courses, including advanced classes in technology is needed.
PROBLEM SOLVING SEVENTH EDITION WALTER SAVITCH UNIVERSITY OF CALIFORNIA, SAN DIEGO CONTRIBUTOR KENRICK MOCK UNIVERSITY OF ALASKA, ANCHORAGE PEARSON
PROBLEM SOLVING WITH SEVENTH EDITION WALTER SAVITCH UNIVERSITY OF CALIFORNIA, SAN DIEGO CONTRIBUTOR KENRICK MOCK UNIVERSITY OF ALASKA, ANCHORAGE PEARSON Addison Wesley Boston San Francisco New York London
Debouncing Switches. Mechanical switches are one of the most common interfaces to a uc.
Mechanical switches are one of the most common interfaces to a uc. Switch inputs are asynchronous to the uc and are not electrically clean. Asynchronous inputs can be handled with a synchronizer (2 FF's).
Moving from CS 61A Scheme to CS 61B Java
Moving from CS 61A Scheme to CS 61B Java Introduction Java is an object-oriented language. This document describes some of the differences between object-oriented programming in Scheme (which we hope you
ECE 122. Engineering Problem Solving with Java
ECE 122 Engineering Problem Solving with Java Introduction to Electrical and Computer Engineering II Lecture 1 Course Overview Welcome! What is this class about? Java programming somewhat software somewhat
COS 217: Introduction to Programming Systems
COS 217: Introduction to Programming Systems 1 Goals for Todayʼs Class Course overview Introductions Course goals Resources Grading Policies Getting started with C C programming language overview 2 1 Introductions
Java (12 Weeks) Introduction to Java Programming Language
Java (12 Weeks) Topic Lecture No. Introduction to Java Programming Language 1 An Introduction to Java o Java as a Programming Platform, The Java "White Paper" Buzzwords, Java and the Internet, A Short
Performance Tuning for the Teradata Database
Performance Tuning for the Teradata Database Matthew W Froemsdorf Teradata Partner Engineering and Technical Consulting - i - Document Changes Rev. Date Section Comment 1.0 2010-10-26 All Initial document
Numeral Systems. The number twenty-five can be represented in many ways: Decimal system (base 10): 25 Roman numerals:
Numeral Systems Which number is larger? 25 8 We need to distinguish between numbers and the symbols that represent them, called numerals. The number 25 is larger than 8, but the numeral 8 above is larger
NEON. Support in Compilation Tools. Development Article. Copyright 2009 ARM Limited. All rights reserved. DHT 0004A (ID081609)
NEON Support in Compilation Tools Development Article Copyright 2009 ARM Limited. All rights reserved. DHT 0004A () NEON Support in Compilation Tools Development Article Copyright 2009 ARM Limited. All
Topics. Parts of a Java Program. Topics (2) CS 146. Introduction To Computers And Java Chapter Objectives To understand:
Introduction to Programming and Algorithms Module 2 CS 146 Sam Houston State University Dr. Tim McGuire Introduction To Computers And Java Chapter Objectives To understand: the meaning and placement of
Application Note C/C++ Coding Standard
Application Note Document Revision J April 2013 Copyright Quantum Leaps, LLC www.quantum-leaps.com www.state-machine.com Table of Contents 1 Goals... 1 2 General Rules... 1 3 C/C++ Layout... 2 3.1 Expressions...
13 Classes & Objects with Constructors/Destructors
13 Classes & Objects with Constructors/Destructors 13.1 Introduction In object oriented programming, the emphasis is on data rather than function. Class is a way that binds the data & function together.
Data Types in the Kernel
,ch11.3440 Page 288 Thursday, January 20, 2005 9:25 AM CHAPTER 11 Data Types in the Kernel Chapter 11 Before we go on to more advanced topics, we need to stop for a quick note on portability issues. Modern
KITES TECHNOLOGY COURSE MODULE (C, C++, DS)
KITES TECHNOLOGY 360 Degree Solution www.kitestechnology.com/academy.php [email protected] [email protected] Contact: - 8961334776 9433759247 9830639522.NET JAVA WEB DESIGN PHP SQL, PL/SQL
The following document contains information on Cypress products.
The following document contains information on Cypress products. Colophon The products described in this document are designed, developed and manufactured as contemplated for general use, including without
Configuring CoreNet Platform Cache (CPC) as SRAM For Use by Linux Applications
Freescale Semiconductor Document Number:AN4749 Application Note Rev 0, 07/2013 Configuring CoreNet Platform Cache (CPC) as SRAM For Use by Linux Applications 1 Introduction This document provides, with
Jorix kernel: real-time scheduling
Jorix kernel: real-time scheduling Joris Huizer Kwie Min Wong May 16, 2007 1 Introduction As a specialized part of the kernel, we implemented two real-time scheduling algorithms: RM (rate monotonic) and
Fast Arithmetic Coding (FastAC) Implementations
Fast Arithmetic Coding (FastAC) Implementations Amir Said 1 Introduction This document describes our fast implementations of arithmetic coding, which achieve optimal compression and higher throughput by
Object Oriented Software Design II
Object Oriented Software Design II Introduction to C++ Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa February 20, 2012 G. Lipari (Scuola Superiore Sant Anna) C++ Intro February
Lumousoft Visual Programming Language and its IDE
Lumousoft Visual Programming Language and its IDE Xianliang Lu Lumousoft Inc. Waterloo Ontario Canada Abstract - This paper presents a new high-level graphical programming language and its IDE (Integration
JAVA - QUICK GUIDE. Java SE is freely available from the link Download Java. So you download a version based on your operating system.
http://www.tutorialspoint.com/java/java_quick_guide.htm JAVA - QUICK GUIDE Copyright tutorialspoint.com What is Java? Java is: Object Oriented Platform independent: Simple Secure Architectural- neutral
Object Oriented Software Design
Object Oriented Software Design Introduction to Java - II Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa October 28, 2010 G. Lipari (Scuola Superiore Sant Anna) Introduction
Software based Finite State Machine (FSM) with general purpose processors
Software based Finite State Machine (FSM) with general purpose processors White paper Joseph Yiu January 2013 Overview Finite state machines (FSM) are commonly used in electronic designs. FSM can be used
CORBA Programming with TAOX11. The C++11 CORBA Implementation
CORBA Programming with TAOX11 The C++11 CORBA Implementation TAOX11: the CORBA Implementation by Remedy IT TAOX11 simplifies development of CORBA based applications IDL to C++11 language mapping is easy
How to design and implement firmware for embedded systems
How to design and implement firmware for embedded systems Last changes: 17.06.2010 Author: Rico Möckel The very beginning: What should I avoid when implementing firmware for embedded systems? Writing code
C++FA 5.1 PRACTICE MID-TERM EXAM
C++FA 5.1 PRACTICE MID-TERM EXAM This practicemid-term exam covers sections C++FA 1.1 through C++FA 1.4 of C++ with Financial Applications by Ben Van Vliet, available at www.benvanvliet.net. 1.) A pointer
Bachelors of Computer Application Programming Principle & Algorithm (BCA-S102T)
Unit- I Introduction to c Language: C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating
General Software Development Standards and Guidelines Version 3.5
NATIONAL WEATHER SERVICE OFFICE of HYDROLOGIC DEVELOPMENT Science Infusion Software Engineering Process Group (SISEPG) General Software Development Standards and Guidelines 7/30/2007 Revision History Date
Sources: On the Web: Slides will be available on:
C programming Introduction The basics of algorithms Structure of a C code, compilation step Constant, variable type, variable scope Expression and operators: assignment, arithmetic operators, comparison,
Informatica e Sistemi in Tempo Reale
Informatica e Sistemi in Tempo Reale Introduction to C programming Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa October 25, 2010 G. Lipari (Scuola Superiore Sant Anna)
Programming NAND devices
Technical Guide Programming NAND devices Kelly Hirsch, Director of Advanced Technology, Data I/O Corporation Recent Design Trends In the past, embedded system designs have used NAND devices for storing
Lecture 3. Arrays. Name of array. c[0] c[1] c[2] c[3] c[4] c[5] c[6] c[7] c[8] c[9] c[10] c[11] Position number of the element within array c
Lecture 3 Data structures arrays structs C strings: array of chars Arrays as parameters to functions Multiple subscripted arrays Structs as parameters to functions Default arguments Inline functions Redirection
6. Control Structures
- 35 - Control Structures: 6. Control Structures A program is usually not limited to a linear sequence of instructions. During its process it may bifurcate, repeat code or take decisions. For that purpose,
Applying Clang Static Analyzer to Linux Kernel
Applying Clang Static Analyzer to Linux Kernel 2012/6/7 FUJITSU COMPUTER TECHNOLOGIES LIMITED Hiroo MATSUMOTO 管 理 番 号 1154ka1 Copyright 2012 FUJITSU COMPUTER TECHNOLOGIES LIMITED Abstract Now there are
Operator Overloading. Lecture 8. Operator Overloading. Running Example: Complex Numbers. Syntax. What can be overloaded. Syntax -- First Example
Operator Overloading Lecture 8 Operator Overloading C++ feature that allows implementer-defined classes to specify class-specific function for operators Benefits allows classes to provide natural semantics
Programming languages C
INTERNATIONAL STANDARD ISO/IEC 9899:1999 TECHNICAL CORRIGENDUM 2 Published 2004-11-15 INTERNATIONAL ORGANIZATION FOR STANDARDIZATION МЕЖДУНАРОДНАЯ ОРГАНИЗАЦИЯ ПО СТАНДАРТИЗАЦИИ ORGANISATION INTERNATIONALE
Nemo 96HD/HD+ MODBUS
18/12/12 Pagina 1 di 28 MULTIFUNCTION FIRMWARE 2.30 Nemo 96HD/HD+ MODBUS COMMUNICATION PROTOCOL CONTENTS 1.0 ABSTRACT 2.0 DATA MESSAGE DESCRIPTION 2.1 Parameters description 2.2 Data format 2.3 Description
UIL Computer Science for Dummies by Jake Warren and works from Mr. Fleming
UIL Computer Science for Dummies by Jake Warren and works from Mr. Fleming 1 2 Foreword First of all, this book isn t really for dummies. I wrote it for myself and other kids who are on the team. Everything
QA Analysis of the WRF Program
QA Analysis of the WRF Program WRF Workshop, Boulder Colorado, 26-28th June 2012 Mark Anderson 1 John Collins 1,2,3,4 Brian Farrimond 1,2,4 [email protected] [email protected] [email protected]
Bonus ChapteR. Objective-C
Bonus ChapteR Objective-C If you want to develop native ios applications, you must learn Objective-C. For many, this is an intimidating task with a steep learning curve. Objective-C mixes a wide range
Variable Base Interface
Chapter 6 Variable Base Interface 6.1 Introduction Finite element codes has been changed a lot during the evolution of the Finite Element Method, In its early times, finite element applications were developed
WIND RIVER DIAB COMPILER
AN INTEL COMPANY WIND RIVER DIAB COMPILER Boost application performance, reduce memory footprint, and produce high-quality, standards-compliant object code for embedded systems with Wind River Diab Compiler.
TODAY, FEW PROGRAMMERS USE ASSEMBLY LANGUAGE. Higher-level languages such
9 Inline Assembly Code TODAY, FEW PROGRAMMERS USE ASSEMBLY LANGUAGE. Higher-level languages such as C and C++ run on nearly all architectures and yield higher productivity when writing and maintaining
VISUAL GUIDE to. RX Scripting. for Roulette Xtreme - System Designer 2.0
VISUAL GUIDE to RX Scripting for Roulette Xtreme - System Designer 2.0 UX Software - 2009 TABLE OF CONTENTS INTRODUCTION... ii What is this book about?... iii How to use this book... iii Time to start...
Crash Course in Java
Crash Course in Java Based on notes from D. Hollinger Based in part on notes from J.J. Johns also: Java in a Nutshell Java Network Programming and Distributed Computing Netprog 2002 Java Intro 1 What is
CSC230 Getting Starting in C. Tyler Bletsch
CSC230 Getting Starting in C Tyler Bletsch What is C? The language of UNIX Procedural language (no classes) Low-level access to memory Easy to map to machine language Not much run-time stuff needed Surprisingly
sys socketcall: Network systems calls on Linux
sys socketcall: Network systems calls on Linux Daniel Noé April 9, 2008 The method used by Linux for system calls is explored in detail in Understanding the Linux Kernel. However, the book does not adequately
Using C to Access Data Stored in Program Space Memory on the TMS320C24x DSP
Application Report SPRA380 April 2002 Using C to Access Data Stored in Program Space Memory on the TMS320C24x DSP David M. Alter DSP Applications - Semiconductor Group ABSTRACT Efficient utilization of
CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages. Nicki Dell Spring 2014
CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages Nicki Dell Spring 2014 What is a Programming Language? A set of symbols and associated tools that translate (if necessary) collections
MSP430 C/C++ CODE GENERATION TOOLS Compiler Version 3.2.X Parser Error/Warning/Remark List
MSP430 C/C++ CODE GENERATION TOOLS Compiler Version 3.2.X Parser Error/Warning/Remark List This is a list of the error/warning messages generated by the Texas Instruments C/C++ parser (which we license
