Posted Mar 28, 2011, by Colin Walls
Mentor Graphics has historically been dedicated to providing tools for electronic hardware designers and that still represents a very large proportion of the business. Ever since I was acquired into the company, I have found that the hardware focused guys have a healthy interest in software - embedded software in particular. Often, they are specifically concerned with the boundary between software and … Read More
Tags:
EDGE Compiler,
C
Posted Mar 14, 2011, by Colin Walls
As I am on vacation this week, I thought that I would leave behind a short note, which might provoke some discussion.
The most widely used programming language for embedded systems continues to be C. I observe great interest in the use of C++ and have frequently written and talked about the subject. Its adoption is also progressing steadily, though much more slowly than anticipated a decade ago. With … Read More
Tags:
Development Tools,
EDGE Compiler,
C,
Programming Languages
Posted Jan 24, 2011, by Colin Walls
I am [mostly] a fan of using C++ for embedded applications. I believe its use needs care and I have written about this before. Broadly, I feel that it offers many simple improvements over C and appropriate use of object oriented techniques can be very beneficial. Today I want to talk about the place of C++ as a “better C language”. There are numerous syntactical improvements that can be … Read More
Tags:
Development Tools,
EDGE Compiler,
C,
Programming Languages
Posted Aug 9, 2010, by Colin Walls
When you use a function in C/C++ [or most other programming languages] you are likely to pass it some parameters - data which may be processed by the function or give it information on what action is required. For the majority of programmers, outside of the world of embedded software, parameters are just a fact - no real issues. They are likely to be quite uninterested in how parameters are passed and … Read More
Tags:
C,
Programming Languages,
EDGE Compiler
Posted Jul 5, 2010, by Colin Walls
What is a compiler? Ask an average engineer and you will get an answer something like: “A software tool that translates high level language code into assembly language or machine code.” Although this definition is not incorrect, it is rather incomplete and out of date - so 1970s. A better way to think of a compiler is: “A software tool that translates an algorithm described in a high level language … Read More
Tags:
compiler,
EDGE Compiler,
C
Posted Feb 22, 2010, by Colin Walls
The idea of inlining code - placing the actual code of a small function at each call site - is a well known compiler optimization, which I have discussed before. This technique can provide significant performance improvements, due to the elimination of the call/return sequence. Also, stack usage is reduced. There is a possible cost in terms of increased program memory requirement.
It is reasonable … Read More
Tags:
C,
Optimization,
EDGE Compiler,
Programming Languages,
Inline
Posted Feb 1, 2010, by Colin Walls
What is the key objective when you write some code? The obvious answer is that you want to impart some specific functionality to the device that you are programming. That would be fine, if just designing and writing code was all that a software engineer was required to do. There are several programming languages that would enable code to be written very rapidly. An example, that I have an affection … Read More
Tags:
Programming Languages,
C,
Overloading,
EDGE Compiler,
Forth,
Operators
Posted Jan 11, 2010, by Colin Walls
Life is often about compromise, but embedded developers really are not good at that. Code generation is a context in which compromise is somewhat inevitable and we call it “optimization”. All modern compilers perform optimization, of course. Some do a better job than others. A lot of the time, the compiler simply guesses which optimization will produce the best result without knowing what the designer … Read More
Tags:
C,
Optimization,
EDGE Compiler,
Low Power,
Power
Posted Jan 4, 2010, by Colin Walls
I am interested in programming languages in general and particularly as they apply to embedded systems programming. I have written about this topic before, but I wanted to revisit it and consider the issues from another angle. The most popular programming language for embedded continues to be C. Clearly it offers the capabilities and facilities that most developers need today, but what comes next? I … Read More
Tags:
Programming Languages,
C,
Java,
EDGE Compiler
Posted Dec 7, 2009, by Colin Walls
Last week I attended a conference in Grenoble, France. For some years there has been an annual event focussed on intellectual property [IP] and the broad area hardware design reusability. This year it was extended to encompass embedded systems as well - the last of the three days was largely dedicated to this topic. I submitted some proposals for papers and two were accepted. Hence my attendance. A … Read More
Tags:
Android,
C,
EDGE Compiler,
Dynamic Memory,
Development Tools