A Tool for the Computation of Worst Case Task Execution Times

Size: px
Start display at page:

Download "A Tool for the Computation of Worst Case Task Execution Times"

Transcription

1 A Tool for the Computation of Worst Case Task Execution Times P. Puschner and A. Schedl Institut fur Technische Informatik Technical University of Vienna Vienna, A-1040 Austria Abstract In modern programming environments for real-time software the presence of task timing analysis tools has become state of the art. Upon the results produced by these tools programmers judge whether software being developed meets the specified timing requirements. In this paper we present a new task taming analysis tool for MARS. This tool not only allows to compute worst case execution time bounds of high quality. It also produces detailed information about the extent to which every statement contributes to this bound and allows to experiment with hypothetical times. These properties of the timing analysis tool allow to make execution time information an integral part of the entire programming process. 1 Introduction One of the central parameters in the design and implementation of predictable real-time applications is the maximum execution time (MAXT) of the tasks involved. During the design estimates for the MAXTs of tasks are used to make feasibility studies, to determine the needed resources, to plan the timing of interactions between tasks, and to allocate tasks to processing units. In the implementation phase, these estimates become time budgets that have to be met by the tasks. The MAXTs of those tasks must not exceed the allotted times. Several research projects yielded methodologies and tools for the computation of task execution time bounds [l, 3, 4, 6, 71. While these approaches are very valuable to compute the execution time of entire, fully implemented tasks, we want to give the programmer more detailed information about the code s timing. Also, we want to let the programmer know about the timing during the whole programming process, not just at the end. A promising way to achieve the above-mentioned goal is to provide a programming environment that allows an easy exchange of information about a task s behavior and detailed timing information between the user and the environment. This demand establishes requirements for the task timing analysis tool of the programming environment: This timing analysis tool must be able to a) process programs supplemented with constructs which describe restrictions on the possible execution paths, b) compute bounds for the worst case execution times of programs and program parts that are close to the real execution times, and c) provide information to identify those parts of a program whose improvements are most promising to get along with the given amount of time. This paper describes a novel task execution time analysis tool, the MAXT analyzer, which fulfills the above-mentioned requirements. It takes into account knowledge about limitations of the control flow through a program, such as loop bounds, break- and -statements, and additional user-supplied information about impossible paths. From this input it does not only compute tight execution time bounds, but it also shows to which extent every single piece of code contributes to the overall worst case execution time. The paper is structured as follows: In Section 2 we describe our assumptions about the task model. Section 3 sketches the requirements for the MAXT analyzer. In Section 4 and 5, the main part of this work, we describe the representation of timing data and the MAXT calculation algorithm. The paper is concluded in Section 6. 2 Framework and Assumptions The described timing analysis tool is part of the MARS programming environment [5] for the MARS system [2]. It makes the following assumptions about tasks: /93 $ JEEE 224

2 0 After initialization tasks repeatedly receive a set of messages, perform a calculation (task body), and send a set of messages. Messages may only be received before and sent after the calculation part. In the task body itself no communication, synchronization, or unpredictable delays may occur. 0 All tasks and procedures are written in MOD- ULA/R, a programming language which guarantees that the worst case execution times of every piece of code can be bounded. The pre-runtime scheduler guarantees that a task does not have to wait for a message. Moreover, the use of nonboundable constructs (recursions, unlimited delays, gotos, unbounded loops, etc.) is prohibited. The programming environment is composed of a user interface with text and time editor, a compiler, and the task timing analysis tool. These components of the environment are tightly connected. They communicate via a central data structure, called timing tree. The timing tree represents all information needed for task timing analysis and the detailed documentation of a task s timing behavior. 3 Requirements for the Task Timing Analysis Tool We established the following list of requirements for our new MAXT analyzer. Computability: First of all, an upper bound for the worst case execution time of a task must be computable. This problem has been discussed and solved: The language Real-Time Euclid restricts constructs to those boundable in time [l], and [7, 61 present methods for the calculation of execution time bounds. Quality: The computed bound has to be tight, i.e., the difference between the computed MAXT bound and the real worst case execution time must be small. This is necessary to achieve a good utilization of all involved resources. 0 Feedback Support: MAXT analysis has to produce output that allows for a detailed documentation of a program s timing behavior - the computation of a single MAXT value is not sufficient for that purpose. Only this detailed information showing the execution time and contribution of each program part to the overall execution time allows the programmer to judge the timing of the code and gives him the necessary feedback for possible code improvements. Modelability: The programming environment should support the programmer in judging whether planned code improvements can yield the expected benefits. If the user assumes he can achieve a certain execution time for a program section, the environment should be able to present the consequences of this assumption on the program s overall execution time. The MAXT analyzer must therefore support the assessment of the consequences of program changes before they are actually implemented. 4 The Timing Tree The timing tree is the data structure that holds all details that are relevant for the calculation and display of timing information. The structure of the program s timing tree is related with the syntax tree the compiler generates for the program [8]. Only, the leaves of the timing tree represent statement sequences rather than operands and operators of single statements. Also, the timing tree s nodes hold information about the execution times of the respective program sections. The tree representation was chosen for the following reasons: 0 The similarity to the syntax tree allows to establish a mapping between the respective nodes of both data structures. 0 Maintaining the timing information in a data structure that reflects the structure of the source program gives us the possibility to relate the source code and timing information to each other. To play around and model execution times the programmer can set hypothetical times for all displayed program parts and observe the effects on other parts of the code. 0 Since all tools of the programming environment can directly access the timing tree, the turnaround cycles during programming can be kept short. 4.1 Structure of the Timing Tree A timing tree represents the structure and temporal behavior of a program or subroutine. Its leave nodes represent those parts of the source code that 225

3 the compiler translates into basic blocks, i.e., pieces of sequential assembler code. They hold the actual and hypothetical execution times for these instruction sequences. The inner nodes keep the knowledge about the structure of and the possible execution paths through the code. These nodes represent loops, alternatives (if-statements), -statements, break-statements, procedure calls, as well as scopes, markers, and loop sequences [6]. Inner nodes contain the following pieces of timing information: 0 Control flow times, e.g., the time for the conditional jump around a branch of an if-statement. 0 Actual worst case execution times of composite statements and their parts. 0 Hypothetical execution times for the purpose of modeling. 0 Restrictions on the control flow as expressed by loop bounds, scopes, markers, and loop sequences. 0 Contribution of the construct to the worst case execution time. This number illustrates how many executions of the construct are accounted for in the worst case execution time. 0 The do-not-display flag is used to mark constructs which are generated by the compiler, i.e., they do not appear in the source code, and are not to be shown to the programmer. 5 MAXT Analysis This section describes the MAXT calculation method of the MAXT analyzer. Section 5.1 explains the principles of the calculation method. It also shows how the analyzer processes information about infeasible paths. The treatment of - and breakstatements, which are also considered in our approach, is sketched in Section 5.2. Section 5.3 works out the possibilities and problems when displaying information about the timing behavior for every single program segment. 5.1 Computation of the MAXT The principle of the MAXT-analysis is to traverse the timing-tree by calculating the MAXT for the various constructs from the knowledge about the control flow plus the execution time of basic blocks. In order to be able to compute the execution time of loops, an upper bound for the number of iterations has to be specified by the programmer. That upper bound is called the maxcount of the loop. In addition to these loop bounds the timing tree may describe additional bounds which express limits on the number of possible paths through loops and branches. E.g., within nested loops it often occurs that some paths through the program can under no circumstances be executed for the maximal number of iterations. Additional bounds give the user the opportunity to rule out such paths. This draws the calculated MAXT closer to the real MAXT of the implemented task. Mostly the so described bounds are only valid for a certain scope of the program. It is easier to concentrate on that scope and to ignore the rest of the program when specifying additional bounds. The restrictions on specific program parts within a scope are described by markers. Both, scopes and markers are represented by inner nodes of the timing tree. The main challenge with these extensions is the MAXT-calculation of loops. Our strategy proposes to search for the most time-consuming path through the loop and to calculate the maximal number of possible executions of that path. If the maxcount is the only bound specified in the loop, the execution time of the most time-consuming path has to be multiplied with the mazcount to get the calculated MAXT of the whole loop. If, on the other hand, an additional bound limits the execution number of the most timeconsuming path, the contribution of that path to the MAXT of the entire loop is restricted to that number of times. In this case two or even more different paths - each with a possible limit - contribute to the MAXT of that loop. The piece of pseudo-code in Figure 1 illustrates the MAXT calculati on for loops. seurch-mazt-puth() searches the most timeconsuming path which is not marked as used. huwoften(puth) gives the maximal number of possible passes through path. MAXT (path) gives the maximum execution time of path. mrk-used-puth(puth) marks path as used in order to ignore it in the next execution of search-mazt-puth(). 5.2 Returns and Breaks There are constructs which cause a premature termination of a procedure or loop. The algorithm ofthe 226

4 maxt := 0 to-consume := maxcount while ( to-consume > 0 ) do maxt -pat h : = search-max t -pat h() possible := how-often(maxt-path) if ( possible > to-consume ) then maxt := maat + to-consume*maxt(maxt-path) to-consume := 0 else maat := maxt + possible*maxt(maxt-path) to-consume := to-consume - possible endif mark -used-pat h( maxt -pat h) endwhile Figure 1: Pseudo-code for the MAXT-calculation of Loops 20 cyc Figure 3: Loop with Return statements in their bodies has to be considered. A simple example is given in Figure 3. To get a valid result for the MAXT, the maximal utilization of iterations is required. The MAXT for the given example is obtained when the then-branch is run through for maxcount - 1 times and the else-branch is executed in the last iteration of the loop. MAXT-analyzer takes - in addition to what is presented above - also into account the effects of and break-statements. A procedure which arrives at a -statement during its execution terminates immediately. All subsequent statements are not executed. To get tight results these premature termination has to be taken into consideration. 25 cyc 1 10 cyc 1 Figure 2: If with Return Return-statements exercise an influence on the MAXT-calculation of branches. If one alternative of an if-statement contains a, the most timeconsuming branch cannot be used automatically for MAXT calculation. Figure 2 shows an example, which explains the main issue of that problem (cyc,,.machine cycles). The else-branch consumes more time than the then-branch, but less time than the then-branch increased by the MAXT of the subsequent statements. Also, the analysis of loops which include - Some small modifications of the algorithm are sufficient to take the mentioned items into account. These modifications must allow to compare the worst case execution time of a path that stops execution at a -statement with paths that end at the last statement of the procedure (or other -statements). To this end, the MAXT of the statements following a block with s must already be known when the influence of these s on the global execution time is analyzed. The trick is to calculate the MAXT of a procedure not starting with the first, but with the last statement. That strategy allows to compare the MAXT of a -branch (i.e., a branch containing a -statement) with the sum of the MAXTs of the other branch and the subsequent statements. As said above, analyzing loops means to search for the maxcount most time-consuming paths in that loop. This is also true for loops containing s. Yet within loops we have to take care that only one path can be executed. Since the order in which we sum up the times of the most time-consuming statements does not have to equal the order in which they will be executed at run-time, the code shown in Figure 1 can be used without modification to calculate the MAXT for loops with -statements. The treatment of breabstatements is very similar to -t the treatment of s and we do therefore not de- scribe it here. The only difference is that the effects of breaks are local to one loop, while a terminates a whole subroutine. 227

5 5.3 Information for the Programmer In the previous section we described how the MAXTs of entire procedures are calculated. We did, however, not yet mention the kinds of information the MAXT analyier generates to support the real-time programmer. A significant support for the user is that, apart from the MAXT of the whole procedures, the MAXT of every single statement is calculated and shown. Simple blocks always take a given amount of time, which can be displayed easily. If- and loop-statements require more than one display component to give detailed information about their timing behavior. Both types of statements require one display component for the MAXT of the condition. Apart from that ifstatements contain the following components: one for the MAXT of the then-, one for the else-branch, and one for the MAXT of the whole if-statement. Additional display components for loops are: one for the loop-body and one for the entire loop. All these components are represented in the timing-tree. Their values are calculated by the MAXT-analyzer. When the MAXTs for all parts of a program have to be displayed, some problems arise. As the examm 200 cyc 20 cyc 100 cyc Figure 4: A Sample Display Problem ple in Figure 4 depicts, the displayed times must not always simply be added to receive the MAXT of the whole sequence. Since the inclusion of - and break-statements into our calculations is a central item of our work, we have to consider that these statements normally destroy the sequential control flow through a task. In our example the MAXT of the sequence preceding the is 200 cycles. The branch affects the MAXT of the whole piece of code, whereas the other branch (20 cyc) and the subsequent statement (100 cyc) do not contribute to the MAXT. Therefore an improvement of the latter would not improve the total MAXT at all. A different problem occurs when the MAXTs of loops are displayed (see Figure 5). Obviously the I maxcount: cyc I I I Figure 5: Loop with Return MAXT of the loop is calculated by adding the branch (50 cyc) once and the non--branch (20 cyc) 9 times. The display component for the loopbody always contains the time of the most timeconsuming path, i.e., the MAXT of the -branch. Nevertheless an improvement of n cycles in the non-branch would decrease the MAXT of the loop by 9 x n cycles. An equal improvement in the branch would lower total MAXT only by n cycles. To search for those parts whose improvement is most promising each node of the timing tree contains additional components where its contribution to the MAXT is stored. This information is computed for every single statement during the MAXT calculation. It can be used for display in order to tell the programmer how often the execution time of any particular statement is included in the MAXT of the whole procedure. 6 Conclusion In this paper we described a novel task timing analysis tool for the MARS programming environment. A prototype of this tool has been implemented. It is special in that it computes tight execution time bounds, supports a detailed documentation of a program s timing behavior, and allows to calculate execution time bounds under the assumption of hypothetical execution times for deliberate program parts. Our tool can compute tight execution time bounds for two reasons. First, it makes use of control flow information provided by scope, marker and loop sequence constructs to exclude infeasible paths from the calculation. Second, the tool takes advantage of the knowledge about - and break-statements. Documentation of a program s timing behavior is specifically supported by the data structure that represents the timing information. The nodes of this socalled timing tree hold information of the execution 228

6 times of the code sections they represent and indicate to which extent these constructs contribute to the overall worst case execution time. These pieces of information and the similarity of the timing tree to the program s syntax tree allow to establish an exact mapping of timing information to code sections. Thus, code pieces which consume too much time and have to be improved can be located easily. The possibility to replace actual execution times in the timing tree by hypothetical values allows the programmer to check the consequences of possible changes before actually implementing them. This saves time in cases where useless code improvements would otherwise be tried. A prototype version of the described MAXT tool has been implemented and is currently evaluated. dictable timing. IEEE Software, 9(5):35-44, Sep [6] P. Puschner and Ch. Koza. Calculating the maximum execution time of real-time programs. Real- Time Systems, 1(2): , Sep [7] A. C. Shaw. Reasoning about time in higher-level language software. IEEE Transactions on Software Engineering, SE- 15 (7) : , July [8] A. Vrchoticky. Integrating compilation and timing analysis. Research Report 1/93, Institut fur Technische Informatik, Technische Universitat Wien, Vienna, Austria, Jan Acknowledgements This work has been supported by the Austrian Science Foundation (Fonds zur Forderung der wissenschaftlichen Forschung) under contract P8002- TEC. We are grateful to Gerhard Fohler, Emmerich Fuchs, and Alexander Vrchoticky for their valuable comments on an earlier version of this paper. References [l] E. Kligerman and A. Stoyenko. Real-time euclid: A language for reliable real-time systems. IEEE Transactions on Software Engineering, SE- 12(9): , Sep [2] H. Kopetz, A. Damm, Ch. Koza, M. Mulazzani, W. Schwabl, Ch. Senft, and R. Zainlinger. Distributed fault-tolerant real-time systems: The MARS Approach. IEEE Micro, 9(1):25-40, Feb [3] A. K. Mok, P. Amerasinghe, M. Chen, and K. Tantisirivat. Evaluating tight execution time bounds of programs by annotations. In Proc. 6th IEEE Workshop on Real- Time Operating Systems and Software, pages 74-80, Pittsburgh, PA, USA, May [4] C. Park and A. C. Shaw. Experiments with a program timing tool based on source-level timing schema. IEEE Computer, 24(5):48-57, May [5] G. Pospischil, P. Puschner, A. Vrchoticky, and R. Zainlinger. Developing real-time tasks with pre- 229

FROM TIME-TRIGGERED TO TIME-DETERMINISTIC REAL-TIME SYSTEMS

FROM TIME-TRIGGERED TO TIME-DETERMINISTIC REAL-TIME SYSTEMS FROM TIME-TRIGGERED TO TIME-DETERMINISTIC REAL-TIME SYSTEMS Peter Puschner and Raimund Kirner Vienna University of Technology, A-1040 Vienna, Austria {peter, raimund}@vmars.tuwien.ac.at Abstract Keywords:

More information

Eliminating Annotations by Automatic Flow Analysis of Real-Time Programs

Eliminating Annotations by Automatic Flow Analysis of Real-Time Programs Eliminating Annotations by Automatic Flow Analysis of Real-Time Programs Jan Gustafsson Department of Computer Engineering, Mälardalen University Box 883, S-721 23 Västerås, Sweden jangustafsson@mdhse

More information

Predicting the Worst-Case Execution Time of the Concurrent Execution. of Instructions and Cycle-Stealing DMA I/O Operations

Predicting the Worst-Case Execution Time of the Concurrent Execution. of Instructions and Cycle-Stealing DMA I/O Operations ACM SIGPLAN Workshop on Languages, Compilers and Tools for Real-Time Systems, La Jolla, California, June 1995. Predicting the Worst-Case Execution Time of the Concurrent Execution of Instructions and Cycle-Stealing

More information

signature i-1 signature i instruction j j+1 branch adjustment value "if - path" initial value signature i signature j instruction exit signature j+1

signature i-1 signature i instruction j j+1 branch adjustment value if - path initial value signature i signature j instruction exit signature j+1 CONTROL FLOW MONITORING FOR A TIME-TRIGGERED COMMUNICATION CONTROLLER Thomas M. Galla 1, Michael Sprachmann 2, Andreas Steininger 1 and Christopher Temple 1 Abstract A novel control ow monitoring scheme

More information

IMPROVING TIMING ANALYZABILITY THROUGH SOURCE CODE ANALYSIS AND TESTABILITY TRANSFORMATIONS IN REAL-TIME SYSTEMS. David Barrientos Velasco

IMPROVING TIMING ANALYZABILITY THROUGH SOURCE CODE ANALYSIS AND TESTABILITY TRANSFORMATIONS IN REAL-TIME SYSTEMS. David Barrientos Velasco IMPROVING TIMING ANALYZABILITY THROUGH SOURCE CODE ANALYSIS AND TESTABILITY TRANSFORMATIONS IN REAL-TIME SYSTEMS David Barrientos Velasco IMPROVING TIMING ANALYZABILITY THROUGH SOURCE CODE ANALYSIS AND

More information

Classification of Code Annotations and Discussion of Compiler-Support for Worst-Case Execution Time Analysis

Classification of Code Annotations and Discussion of Compiler-Support for Worst-Case Execution Time Analysis Proceedings of the 5th Intl Workshop on Worst-Case Execution Time (WCET) Analysis Page 41 of 49 Classification of Code Annotations and Discussion of Compiler-Support for Worst-Case Execution Time Analysis

More information

An Operating System for a Time-Predictable Computing Node

An Operating System for a Time-Predictable Computing Node An Operating System for a Time-Predictable Computing Node Guenter Khyo, Peter Puschner, and Martin Delvai Vienna University of Technology Institute of Computer Enginering A1040 Vienna, Austria peter@vmars.tuwien.ac.at

More information

Calculating the Maximum. P. Puschner, Ch. Koza. Institut fur Technische Informatik. Technische Universitat Wien.

Calculating the Maximum. P. Puschner, Ch. Koza. Institut fur Technische Informatik. Technische Universitat Wien. Calculating the Maximum Execution Time of Real-Time Programs P. Puschner, Ch. Koza Institut fur Technische Informatik Technische Universitat Wien peter@vmars.uucp, koza@vmars.uucp Version 1 April 7, 1989

More information

Transforming Execution-Time Boundable Code into Temporally Predictable Code

Transforming Execution-Time Boundable Code into Temporally Predictable Code Transforming Execution-Time Boundable Code into Temporally Predictable Code Peter Puschner Institut for Technische Informatik. Technische Universitdt Wien, Austria Abstract: Traditional Worst-Case Execution-Time

More information

Time Triggered and Event Triggered; Off-line Scheduling

Time Triggered and Event Triggered; Off-line Scheduling Time Triggered and Event Triggered; Off-line Scheduling Real-Time Architectures -TUe Gerhard Fohler 2004 Mälardalen University, Sweden gerhard.fohler@mdh.se Real-time: TT and ET Gerhard Fohler 2004 1 Activation

More information

TuBound A tool for Worst-Case Execution Time Analysis

TuBound A tool for Worst-Case Execution Time Analysis TuBound A Conceptually New Tool for Worst-Case Execution Time Analysis 1 Adrian Prantl, Markus Schordan, Jens Knoop {adrian,markus,knoop}@complang.tuwien.ac.at Institut für Computersprachen Technische

More information

G Programming Languages - Fall 2012

G Programming Languages - Fall 2012 G22.2110-003 Programming Languages - Fall 2012 Lecture 3 Thomas Wies New York University Review Last week Names and Bindings Lifetimes and Allocation Garbage Collection Scope Outline Control Flow Sequencing

More information

Ch 1: The Architecture Business Cycle

Ch 1: The Architecture Business Cycle Ch 1: The Architecture Business Cycle For decades, software designers have been taught to build systems based exclusively on the technical requirements. Software architecture encompasses the structures

More information

The Influence of Real-time Constraints on the Design of FlexRay-based Systems

The Influence of Real-time Constraints on the Design of FlexRay-based Systems The Influence of Real-time Constraints on the Design of FlexRay-based Systems Stephan Reichelt Oliver Scheickl Gökhan Tabanoglu Audi Electronics Venture GmbH BMW Car IT GmbH Volkswagen AG Abstract This

More information

Static WCET Analysis: Methods and Tools

Static WCET Analysis: Methods and Tools Static WCET Analysis: Methods and Tools Timo Lilja April 28, 2011 Timo Lilja () Static WCET Analysis: Methods and Tools April 28, 2011 1 / 23 1 Methods 2 Tools 3 Summary 4 References Timo Lilja () Static

More information

Single-Path Code Generation and Input-Data Dependence Analysis

Single-Path Code Generation and Input-Data Dependence Analysis Single-Path Code Generation and Input-Data Dependence Analysis Daniel Prokesch daniel@vmars.tuwien.ac.at July 10 th, 2014 Project Workshop Madrid D. Prokesch TUV T-CREST Workshop, Madrid July 10 th, 2014

More information

Automatic flow analysis using symbolic execution and path enumeration

Automatic flow analysis using symbolic execution and path enumeration Automatic flow analysis using symbolic execution path enumeration D. Kebbal Institut de Recherche en Informatique de Toulouse 8 route de Narbonne - F-62 Toulouse Cedex 9 France Djemai.Kebbal@iut-tarbes.fr

More information

Principle of Complier Design Prof. Y. N. Srikant Department of Computer Science and Automation Indian Institute of Science, Bangalore

Principle of Complier Design Prof. Y. N. Srikant Department of Computer Science and Automation Indian Institute of Science, Bangalore Principle of Complier Design Prof. Y. N. Srikant Department of Computer Science and Automation Indian Institute of Science, Bangalore Lecture - 20 Intermediate code generation Part-4 Run-time environments

More information

A Time-Triggered View. Peter PUSCHNER

A Time-Triggered View. Peter PUSCHNER Predictable Timing on MPSoC A Time-Triggered View Peter PUSCHNER 1 st Workshop on Mapping Applications to MPSoCs Schloss Rheinfels, Germany June 2008 Focus goal: build safety-critical hard real-time systems

More information

Load Balancing for Problems with Good Bisectors, and Applications in Finite Element Simulations

Load Balancing for Problems with Good Bisectors, and Applications in Finite Element Simulations Load Balancing for Problems with Good Bisectors, and Applications in Finite Element Simulations Stefan Bischof, Ralf Ebner, and Thomas Erlebach Institut für Informatik Technische Universität München D-80290

More information

MAKING JAVA HARD REAL-TIME

MAKING JAVA HARD REAL-TIME MAKING JAVA HARD REAL-TIME Peter Puschner Institut für Technische Informatik Technische Universität Wien A-1040 Wien, Austria Email: peter@vmars.tuwien.ac.at Guillem Bernat and Andy Wellings Department

More information

Framework for replica selection in fault-tolerant distributed systems

Framework for replica selection in fault-tolerant distributed systems Framework for replica selection in fault-tolerant distributed systems Daniel Popescu Computer Science Department University of Southern California Los Angeles, CA 90089-0781 {dpopescu}@usc.edu Abstract.

More information

Data-Flow Based Detection of Loop Bounds

Data-Flow Based Detection of Loop Bounds Data-Flow Based Detection of Loop Bounds Christoph Cullmann and Florian Martin AbsInt Angewandte Informatik GmbH Science Park 1, D-66123 Saarbrücken, Germany cullmann,florian@absint.com, http://www.absint.com

More information

Announcements. Lab Friday, 1-2:30 and 3-4:30 in Boot your laptop and start Forte, if you brought your laptop

Announcements. Lab Friday, 1-2:30 and 3-4:30 in Boot your laptop and start Forte, if you brought your laptop Announcements Lab Friday, 1-2:30 and 3-4:30 in 26-152 Boot your laptop and start Forte, if you brought your laptop Create an empty file called Lecture4 and create an empty main() method in a class: 1.00

More information

Single-Path Programming on a Chip-Multiprocessor System

Single-Path Programming on a Chip-Multiprocessor System Single-Path Programming on a Chip-Multiprocessor System Martin Schoeberl, Peter Puschner, and Raimund Kirner Vienna University of Technology, Austria mschoebe@mail.tuwien.ac.at, {peter,raimund}@vmars.tuwien.ac.at

More information

WCET-Aware C Compiler: WCC

WCET-Aware C Compiler: WCC 12 WCET-Aware C Compiler: WCC Jian-Jia Chen (slides are based on Prof. Heiko Falk) TU Dortmund, Informatik 12 2015 年 05 月 05 日 These slides use Microsoft clip arts. Microsoft copyright restrictions apply.

More information

PROBLEM SOLVING AND PYTHON PROGRAMMING

PROBLEM SOLVING AND PYTHON PROGRAMMING ALGORITHM UNIT-1 It is defined as a sequence of instructions that describe a method for solving a problem. In other words it is a step by step procedure for solving a problem. Properties of Algorithms

More information

Chapter 2 Overview of the Design Methodology

Chapter 2 Overview of the Design Methodology Chapter 2 Overview of the Design Methodology This chapter presents an overview of the design methodology which is developed in this thesis, by identifying global abstraction levels at which a distributed

More information

Writing Temporally Predictable Code

Writing Temporally Predictable Code Writing Temporally Predictable Code Peter Puschner Benedikt Huber slides credits: P. Puschner, R. Kirner, B. Huber VU 2.0 182.101 SS 2015 Task Execution Time a 1 a 2 a 3 a 4 a 5 a 6 a 7 a 9 a 8 1. Sequence

More information

ECE 2574: Data Structures and Algorithms - Recursion Part I. C. L. Wyatt

ECE 2574: Data Structures and Algorithms - Recursion Part I. C. L. Wyatt ECE 2574: Data Structures and Algorithms - Recursion Part I C. L. Wyatt Today we will introduce the notion of recursion, look at some examples, and see how to implement them in code. Introduction to recursion

More information

Performance Analysis of Embedded Software Using Implicit Path Enumeration

Performance Analysis of Embedded Software Using Implicit Path Enumeration Performance Analysis of Embedded Software Using Implicit Path Enumeration Yau-Tsun Steven Li Sharad Malik Department of Electrical Engineering, Princeton University, NJ 08544, USA. Abstract Embedded computer

More information

In examining performance Interested in several things Exact times if computable Bounded times if exact not computable Can be measured

In examining performance Interested in several things Exact times if computable Bounded times if exact not computable Can be measured System Performance Analysis Introduction Performance Means many things to many people Important in any design Critical in real time systems 1 ns can mean the difference between system Doing job expected

More information

Algorithms and Flowcharts

Algorithms and Flowcharts UNIT 2 Chapter 1 Algorithms and Flowcharts After studying this lesson, the students will be able to understand the need of Algorithm and Flowcharts; solve problems by using algorithms and flowcharts; get

More information

5th World Congress for Software Quality Shanghai, China November 2011

5th World Congress for Software Quality Shanghai, China November 2011 Yoshihiro Kita University of Miyazaki Miyazaki, Japan kita@earth.cs.miyazaki-u.ac.jp Proposal of Execution Paths Indication Method for Integration Testing by Using an Automatic Visualization Tool Avis

More information

Optimizing Closures in O(0) time

Optimizing Closures in O(0) time Optimizing Closures in O(0 time Andrew W. Keep Cisco Systems, Inc. Indiana Univeristy akeep@cisco.com Alex Hearn Indiana University adhearn@cs.indiana.edu R. Kent Dybvig Cisco Systems, Inc. Indiana University

More information

Lecture Notes on Dataflow Analysis

Lecture Notes on Dataflow Analysis Lecture Notes on Dataflow Analysis 15-411: Compiler Design Frank Pfenning Lecture 5 September 9, 2008 1 Introduction In this lecture we first extend liveness analysis to handle memory references and then

More information

Real-Time Component Software. slide credits: H. Kopetz, P. Puschner

Real-Time Component Software. slide credits: H. Kopetz, P. Puschner Real-Time Component Software slide credits: H. Kopetz, P. Puschner Overview OS services Task Structure Task Interaction Input/Output Error Detection 2 Operating System and Middleware Application Software

More information

Timing Anomalies and WCET Analysis. Ashrit Triambak

Timing Anomalies and WCET Analysis. Ashrit Triambak Timing Anomalies and WCET Analysis Ashrit Triambak October 20, 2014 Contents 1 Abstract 2 2 Introduction 2 3 Timing Anomalies 3 3.1 Retated work........................... 4 3.2 Limitations of Previous

More information

DESIGN AND ANALYSIS OF ALGORITHMS. Unit 1 Chapter 4 ITERATIVE ALGORITHM DESIGN ISSUES

DESIGN AND ANALYSIS OF ALGORITHMS. Unit 1 Chapter 4 ITERATIVE ALGORITHM DESIGN ISSUES DESIGN AND ANALYSIS OF ALGORITHMS Unit 1 Chapter 4 ITERATIVE ALGORITHM DESIGN ISSUES http://milanvachhani.blogspot.in USE OF LOOPS As we break down algorithm into sub-algorithms, sooner or later we shall

More information

Keywords: Worst-case execution time (WCET) analysis, annotation languages, WCET annotation language challenge.

Keywords: Worst-case execution time (WCET) analysis, annotation languages, WCET annotation language challenge. TOWARDS A COMMON WCET ANNOTATION LANGUAGE: ESSENTIAL INGREDIENTS 1 Raimund Kirner, Albrecht Kadlec and Peter Puschner 2 Adrian Prantl, Markus Schordan and Jens Knoop 3 Abstract Within the last years, ambitions

More information

A MACHINE INDEPENDENT WCET PREDICTOR FOR MICROCONTROLLERS AND DSPS

A MACHINE INDEPENDENT WCET PREDICTOR FOR MICROCONTROLLERS AND DSPS A MACHINE INDEPENDENT WCET PREDICTOR FOR MICROCONTROLLERS AND DSPS Adriano José Tavares Department of Industrial Electronics, University of Minho, 4800 Guimarães, Portugal e-mail: atavares@dei.uminho.pt,

More information

x = 3 * y + 1; // x becomes 3 * y + 1 a = b = 0; // multiple assignment: a and b both get the value 0

x = 3 * y + 1; // x becomes 3 * y + 1 a = b = 0; // multiple assignment: a and b both get the value 0 6 Statements 43 6 Statements The statements of C# do not differ very much from those of other programming languages. In addition to assignments and method calls there are various sorts of selections and

More information

Unit 1 Chapter 4 ITERATIVE ALGORITHM DESIGN ISSUES

Unit 1 Chapter 4 ITERATIVE ALGORITHM DESIGN ISSUES DESIGN AND ANALYSIS OF ALGORITHMS Unit 1 Chapter 4 ITERATIVE ALGORITHM DESIGN ISSUES http://milanvachhani.blogspot.in USE OF LOOPS As we break down algorithm into sub-algorithms, sooner or later we shall

More information

In this chapter you ll learn:

In this chapter you ll learn: Much that I bound, I could not free; Much that I freed returned to me. Lee Wilson Dodd Will you walk a little faster? said a whiting to a snail, There s a porpoise close behind us, and he s treading on

More information

TuBound A Conceptually New Tool for Worst-Case Execution Time Analysis 1

TuBound A Conceptually New Tool for Worst-Case Execution Time Analysis 1 TuBound A Conceptually New Tool for Worst-Case Execution Time Analysis 1 Adrian Prantl, Markus Schordan and Jens Knoop Institute of Computer Languages, Vienna University of Technology, Austria email: {adrian,markus,knoop@complang.tuwien.ac.at

More information

19 Much that I bound, I could not free; Much that I freed returned to me. Lee Wilson Dodd

19 Much that I bound, I could not free; Much that I freed returned to me. Lee Wilson Dodd 19 Much that I bound, I could not free; Much that I freed returned to me. Lee Wilson Dodd Will you walk a little faster? said a whiting to a snail, There s a porpoise close behind us, and he s treading

More information

Lecture #12 February 25, 2004 Ugly Programming Tricks

Lecture #12 February 25, 2004 Ugly Programming Tricks Lecture #12 February 25, 2004 Ugly Programming Tricks In this lecture we will visit a number of tricks available in assembly language not normally seen in high-level languages. Some of the techniques are

More information

CHAPTER : 9 FLOW OF CONTROL

CHAPTER : 9 FLOW OF CONTROL CHAPTER 9 FLOW OF CONTROL Statements-Statements are the instructions given to the Computer to perform any kind of action. Null Statement-A null statement is useful in those case where syntax of the language

More information

An algorithm for Performance Analysis of Single-Source Acyclic graphs

An algorithm for Performance Analysis of Single-Source Acyclic graphs An algorithm for Performance Analysis of Single-Source Acyclic graphs Gabriele Mencagli September 26, 2011 In this document we face with the problem of exploiting the performance analysis of acyclic graphs

More information

Extended Dataflow Model For Automated Parallel Execution Of Algorithms

Extended Dataflow Model For Automated Parallel Execution Of Algorithms Extended Dataflow Model For Automated Parallel Execution Of Algorithms Maik Schumann, Jörg Bargenda, Edgar Reetz and Gerhard Linß Department of Quality Assurance and Industrial Image Processing Ilmenau

More information

Ar r ays and Pointer s

Ar r ays and Pointer s Ar r ays and Pointer s Using Bloodshed Dev-C++ Heejin Park Hanyang University 2 Introduction Arrays Multidimensional Arrays Pointers and Arrays Functions, Arrays, and Pointers Pointer Operations Protecting

More information

Predicated Software Pipelining Technique for Loops with Conditions

Predicated Software Pipelining Technique for Loops with Conditions Predicated Software Pipelining Technique for Loops with Conditions Dragan Milicev and Zoran Jovanovic University of Belgrade E-mail: emiliced@ubbg.etf.bg.ac.yu Abstract An effort to formalize the process

More information

Handling Cyclic Execution Paths in Timing Analysis of Component-based Software

Handling Cyclic Execution Paths in Timing Analysis of Component-based Software Handling Cyclic Execution Paths in Timing Analysis of Component-based Software Luka Lednicki, Jan Carlson Mälardalen Real-time Research Centre Mälardalen University Västerås, Sweden Email: {luka.lednicki,

More information

Scheduling in Multiprocessor System Using Genetic Algorithms

Scheduling in Multiprocessor System Using Genetic Algorithms Scheduling in Multiprocessor System Using Genetic Algorithms Keshav Dahal 1, Alamgir Hossain 1, Benzy Varghese 1, Ajith Abraham 2, Fatos Xhafa 3, Atanasi Daradoumis 4 1 University of Bradford, UK, {k.p.dahal;

More information

ICSA 2017 Tutorial Runtime Modeling and Visualization -- Introduction to Palladio

ICSA 2017 Tutorial Runtime Modeling and Visualization -- Introduction to Palladio DFG Priority Programme 1593 Design For Future - Managed Software Evolution ICSA 2017 Tutorial Runtime Modeling and Visualization -- Introduction to Palladio R. Heinrich ICSA 2017 Tutorial Introduction

More information

A Top-Down Visual Approach to GUI development

A Top-Down Visual Approach to GUI development A Top-Down Visual Approach to GUI development ROSANNA CASSINO, GENNY TORTORA, MAURIZIO TUCCI, GIULIANA VITIELLO Dipartimento di Matematica e Informatica Università di Salerno Via Ponte don Melillo 84084

More information

Combining Algebraic Constraints with Graph-based Intelligent Testbench Automation by Mike Andrews, Verification Technologist, Mentor Graphics

Combining Algebraic Constraints with Graph-based Intelligent Testbench Automation by Mike Andrews, Verification Technologist, Mentor Graphics Combining Algebraic Constraints with Graph-based Intelligent Testbench Automation by Mike Andrews, Verification Technologist, Mentor Graphics 22 Abstract: The Questa infact intelligent testbench automation

More information

Scheme of work Cambridge International AS & A Level Computing (9691)

Scheme of work Cambridge International AS & A Level Computing (9691) Scheme of work Cambridge International AS & A Level Computing (9691) Unit 2: Practical programming techniques Recommended prior knowledge Students beginning this course are not expected to have studied

More information

easel LANGUAGE REFERENCE MANUAL

easel LANGUAGE REFERENCE MANUAL easel LANGUAGE REFERENCE MANUAL Manager Danielle Crosswell dac2182 Language Guru Tyrus Cukavac thc2125 System Architect Yuan-Chao Chou yc3211 Tester Xiaofei Chen xc2364 Table of Contents 1. Introduction...

More information

3.4 Data-Centric workflow

3.4 Data-Centric workflow 3.4 Data-Centric workflow One of the most important activities in a S-DWH environment is represented by data integration of different and heterogeneous sources. The process of extract, transform, and load

More information

Abstract. 1. Introduction

Abstract. 1. Introduction MINIMOS - Abstract A PROGRAM PACKAGE TO FACILITATE MOS DEVICE DESIGN AND ANALYSIS S.Selberherr, W.Fichtner and H.W.Potzl Institut fur Physikalische Elektronik Technische Universitat Wien Gusshausstrasse

More information

PRINCIPLES OF COMPILER DESIGN UNIT I INTRODUCTION TO COMPILERS

PRINCIPLES OF COMPILER DESIGN UNIT I INTRODUCTION TO COMPILERS Objective PRINCIPLES OF COMPILER DESIGN UNIT I INTRODUCTION TO COMPILERS Explain what is meant by compiler. Explain how the compiler works. Describe various analysis of the source program. Describe the

More information

Fundamentals of Programming Session 13

Fundamentals of Programming Session 13 Fundamentals of Programming Session 13 Instructor: Reza Entezari-Maleki Email: entezari@ce.sharif.edu 1 Fall 2014 These slides have been created using Deitel s slides Sharif University of Technology Outlines

More information

Thunks. A Way of Compiling Procedure Statements with Some Comments on Procedure Declarations* P. Z. Ingerman

Thunks. A Way of Compiling Procedure Statements with Some Comments on Procedure Declarations* P. Z. Ingerman Reprinted from the~communications OF THE ASSOCIATION FOR COMPUTING MACHINERY Volume 4, Number 1, January 1961 Made in U.S.A. Thunks A Way of Compiling Procedure Statements with Some Comments on Procedure

More information

The Encoding Complexity of Network Coding

The Encoding Complexity of Network Coding The Encoding Complexity of Network Coding Michael Langberg Alexander Sprintson Jehoshua Bruck California Institute of Technology Email: mikel,spalex,bruck @caltech.edu Abstract In the multicast network

More information

ait: WORST-CASE EXECUTION TIME PREDICTION BY STATIC PROGRAM ANALYSIS

ait: WORST-CASE EXECUTION TIME PREDICTION BY STATIC PROGRAM ANALYSIS ait: WORST-CASE EXECUTION TIME PREDICTION BY STATIC PROGRAM ANALYSIS Christian Ferdinand and Reinhold Heckmann AbsInt Angewandte Informatik GmbH, Stuhlsatzenhausweg 69, D-66123 Saarbrucken, Germany info@absint.com

More information

RTC: Language Support for Real-Time Concurrency

RTC: Language Support for Real-Time Concurrency RTC: Language Support for Real-Time Concurrency Insup Lee, Susan Davidson, and Victor Wolfe 1 Introduction The RTC (Real-Time Concurrency) programming concepts and language constructs for expressing timing

More information

Test Data Generation based on Binary Search for Class-level Testing

Test Data Generation based on Binary Search for Class-level Testing Test Data Generation based on Binary Search for Class-level Testing Sami Beydeda, Volker Gruhn University of Leipzig Faculty of Mathematics and Computer Science Department of Computer Science Applied Telematics

More information

Analyzing Real-Time Systems

Analyzing Real-Time Systems Analyzing Real-Time Systems Reference: Burns and Wellings, Real-Time Systems and Programming Languages 17-654/17-754: Analysis of Software Artifacts Jonathan Aldrich Real-Time Systems Definition Any system

More information

Direct Functions in Dyalog APL

Direct Functions in Dyalog APL Direct Functions in Dyalog APL John Scholes Dyalog Ltd. john@dyalog.com A Direct Function (dfn) is a new function definition style, which bridges the gap between named function expressions such as and

More information

The PCAT Programming Language Reference Manual

The PCAT Programming Language Reference Manual The PCAT Programming Language Reference Manual Andrew Tolmach and Jingke Li Dept. of Computer Science Portland State University September 27, 1995 (revised October 15, 2002) 1 Introduction The PCAT language

More information

Building a Runnable Program and Code Improvement. Dario Marasco, Greg Klepic, Tess DiStefano

Building a Runnable Program and Code Improvement. Dario Marasco, Greg Klepic, Tess DiStefano Building a Runnable Program and Code Improvement Dario Marasco, Greg Klepic, Tess DiStefano Building a Runnable Program Review Front end code Source code analysis Syntax tree Back end code Target code

More information

CIS 890: Safety Critical Systems

CIS 890: Safety Critical Systems CIS 890: Safety Critical Systems Lecture: SPARK -- Analysis Tools Copyright 2007, John Hatcliff. The syllabus and all lectures for this course are copyrighted materials and may not be used in other course

More information

2386 IEEE TRANSACTIONS ON INFORMATION THEORY, VOL. 52, NO. 6, JUNE 2006

2386 IEEE TRANSACTIONS ON INFORMATION THEORY, VOL. 52, NO. 6, JUNE 2006 2386 IEEE TRANSACTIONS ON INFORMATION THEORY, VOL. 52, NO. 6, JUNE 2006 The Encoding Complexity of Network Coding Michael Langberg, Member, IEEE, Alexander Sprintson, Member, IEEE, and Jehoshua Bruck,

More information

TUBOUND A CONCEPTUALLY NEW TOOL FOR WORST-CASE EXECUTION TIME ANALYSIS 1 Adrian Prantl, 2 Markus Schordan 2 and Jens Knoop 2

TUBOUND A CONCEPTUALLY NEW TOOL FOR WORST-CASE EXECUTION TIME ANALYSIS 1 Adrian Prantl, 2 Markus Schordan 2 and Jens Knoop 2 TUBOUND A CONCEPTUALLY NEW TOOL FOR WORST-CASE EXECUTION TIME ANALYSIS 1 Adrian Prantl, 2 Markus Schordan 2 and Jens Knoop 2 Abstract TUBOUND is a conceptually new tool for the worst-case execution time

More information

Chapter 1. Fundamentals of Higher Order Programming

Chapter 1. Fundamentals of Higher Order Programming Chapter 1 Fundamentals of Higher Order Programming 1 The Elements of Programming Any powerful language features: so does Scheme primitive data procedures combinations abstraction We will see that Scheme

More information

EMBEDDED SYSTEMS PROGRAMMING Language Basics

EMBEDDED SYSTEMS PROGRAMMING Language Basics EMBEDDED SYSTEMS PROGRAMMING 2015-16 Language Basics "The tower of Babel" by Pieter Bruegel the Elder Kunsthistorisches Museum, Vienna (PROGRAMMING) LANGUAGES ABOUT THE LANGUAGES C (1972) Designed to replace

More information

Language Translation. Compilation vs. interpretation. Compilation diagram. Step 1: compile. Step 2: run. compiler. Compiled program. program.

Language Translation. Compilation vs. interpretation. Compilation diagram. Step 1: compile. Step 2: run. compiler. Compiled program. program. Language Translation Compilation vs. interpretation Compilation diagram Step 1: compile program compiler Compiled program Step 2: run input Compiled program output Language Translation compilation is translation

More information

COMP 161 Lecture Notes 16 Analyzing Search and Sort

COMP 161 Lecture Notes 16 Analyzing Search and Sort COMP 161 Lecture Notes 16 Analyzing Search and Sort In these notes we analyze search and sort. Counting Operations When we analyze the complexity of procedures we re determine the order of the number of

More information

Allowing Cycle-Stealing Direct Memory Access I/O. Concurrent with Hard-Real-Time Programs

Allowing Cycle-Stealing Direct Memory Access I/O. Concurrent with Hard-Real-Time Programs To appear in: Int. Conf. on Parallel and Distributed Systems, ICPADS'96, June 3-6, 1996, Tokyo Allowing Cycle-Stealing Direct Memory Access I/O Concurrent with Hard-Real-Time Programs Tai-Yi Huang, Jane

More information

What are Embedded Systems? Lecture 1 Introduction to Embedded Systems & Software

What are Embedded Systems? Lecture 1 Introduction to Embedded Systems & Software What are Embedded Systems? 1 Lecture 1 Introduction to Embedded Systems & Software Roopa Rangaswami October 9, 2002 Embedded systems are computer systems that monitor, respond to, or control an external

More information

History-based Schemes and Implicit Path Enumeration

History-based Schemes and Implicit Path Enumeration History-based Schemes and Implicit Path Enumeration Claire Burguière and Christine Rochange Institut de Recherche en Informatique de Toulouse Université Paul Sabatier 6 Toulouse cedex 9, France {burguier,rochange}@irit.fr

More information

142

142 Scope Rules Thus, storage duration does not affect the scope of an identifier. The only identifiers with function-prototype scope are those used in the parameter list of a function prototype. As mentioned

More information

Intermediate Code Generation

Intermediate Code Generation Intermediate Code Generation In the analysis-synthesis model of a compiler, the front end analyzes a source program and creates an intermediate representation, from which the back end generates target

More information

Bisection Debugging. 1 Introduction. Thomas Gross. Carnegie Mellon University. Preliminary version

Bisection Debugging. 1 Introduction. Thomas Gross. Carnegie Mellon University. Preliminary version Bisection Debugging Thomas Gross School of Computer Science Carnegie Mellon University Pittsburgh, PA 15213 Institut für Computer Systeme ETH Zürich CH 8092 Zürich Preliminary version Abstract This paper

More information

Algorithm Design And Analysis Asst. Prof. Ali Kadhum Idrees The Sum-of-Subsets Problem Department of Computer Science College of Science for Women

Algorithm Design And Analysis Asst. Prof. Ali Kadhum Idrees The Sum-of-Subsets Problem Department of Computer Science College of Science for Women The Sum-of-Subsets Problem In this problem, there is a set of items the thief can steal, and each item has its own weight and profit. The thief's knapsack will break if the total weight of the items in

More information

High Performance Computer Architecture Prof. Ajit Pal Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur

High Performance Computer Architecture Prof. Ajit Pal Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur High Performance Computer Architecture Prof. Ajit Pal Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture - 18 Dynamic Instruction Scheduling with Branch Prediction

More information

BYZANTINE AGREEMENT CH / $ IEEE. by H. R. Strong and D. Dolev. IBM Research Laboratory, K55/281 San Jose, CA 95193

BYZANTINE AGREEMENT CH / $ IEEE. by H. R. Strong and D. Dolev. IBM Research Laboratory, K55/281 San Jose, CA 95193 BYZANTINE AGREEMENT by H. R. Strong and D. Dolev IBM Research Laboratory, K55/281 San Jose, CA 95193 ABSTRACT Byzantine Agreement is a paradigm for problems of reliable consistency and synchronization

More information

CHAPTER 5 GENERATING TEST SCENARIOS AND TEST CASES FROM AN EVENT-FLOW MODEL

CHAPTER 5 GENERATING TEST SCENARIOS AND TEST CASES FROM AN EVENT-FLOW MODEL CHAPTER 5 GENERATING TEST SCENARIOS AND TEST CASES FROM AN EVENT-FLOW MODEL 5.1 INTRODUCTION The survey presented in Chapter 1 has shown that Model based testing approach for automatic generation of test

More information

A CAN-Based Architecture for Highly Reliable Communication Systems

A CAN-Based Architecture for Highly Reliable Communication Systems A CAN-Based Architecture for Highly Reliable Communication Systems H. Hilmer Prof. Dr.-Ing. H.-D. Kochs Gerhard-Mercator-Universität Duisburg, Germany E. Dittmar ABB Network Control and Protection, Ladenburg,

More information

is easing the creation of new ontologies by promoting the reuse of existing ones and automating, as much as possible, the entire ontology

is easing the creation of new ontologies by promoting the reuse of existing ones and automating, as much as possible, the entire ontology Preface The idea of improving software quality through reuse is not new. After all, if software works and is needed, just reuse it. What is new and evolving is the idea of relative validation through testing

More information

A Single-Path Chip-Multiprocessor System

A Single-Path Chip-Multiprocessor System A Single-Path Chip-Multiprocessor System Martin Schoeberl, Peter Puschner, and Raimund Kirner Institute of Computer Engineering Vienna University of Technology, Austria mschoebe@mail.tuwien.ac.at, {peter,raimund}@vmars.tuwien.ac.at

More information

UNIT 3

UNIT 3 UNIT 3 Presentation Outline Sequence control with expressions Conditional Statements, Loops Exception Handling Subprogram definition and activation Simple and Recursive Subprogram Subprogram Environment

More information

Unit 3. Operators. School of Science and Technology INTRODUCTION

Unit 3. Operators. School of Science and Technology INTRODUCTION INTRODUCTION Operators Unit 3 In the previous units (unit 1 and 2) you have learned about the basics of computer programming, different data types, constants, keywords and basic structure of a C program.

More information

Control Structures. Code can be purely arithmetic assignments. At some point we will need some kind of control or decision making process to occur

Control Structures. Code can be purely arithmetic assignments. At some point we will need some kind of control or decision making process to occur Control Structures Code can be purely arithmetic assignments At some point we will need some kind of control or decision making process to occur C uses the if keyword as part of it s control structure

More information

Loops. Lather, Rinse, Repeat. CS4410: Spring 2013

Loops. Lather, Rinse, Repeat. CS4410: Spring 2013 Loops or Lather, Rinse, Repeat CS4410: Spring 2013 Program Loops Reading: Appel Ch. 18 Loop = a computation repeatedly executed until a terminating condition is reached High-level loop constructs: While

More information

Examples of Code Roaches. First Draft List Cem Kaner September 11, 2005

Examples of Code Roaches. First Draft List Cem Kaner September 11, 2005 Examples of Code Roaches First Draft List Cem Kaner September 11, 2005 Why a Potential-Bug List? Given a potential error, you can develop a method to test for it Foundation for Code inspections Glass box

More information

Programming Languages Third Edition. Chapter 9 Control I Expressions and Statements

Programming Languages Third Edition. Chapter 9 Control I Expressions and Statements Programming Languages Third Edition Chapter 9 Control I Expressions and Statements Objectives Understand expressions Understand conditional statements and guards Understand loops and variation on WHILE

More information

Typing Data. Chapter Recursive Types Declaring Recursive Types

Typing Data. Chapter Recursive Types Declaring Recursive Types Chapter 27 Typing Data 27.1 Recursive Types 27.1.1 Declaring Recursive Types We saw in the previous lecture how rec was necessary to write recursive programs. But what about defining recursive types? Recursive

More information

Little Man Computer (LMC)

Little Man Computer (LMC) Little Man Computer (LMC) A-level Computing Independent Study Project Part Two The Little Man Computer (LMC) is a simulator which models the basic features of a modern computer. It features a central processing

More information