Archive for the ‘Platform’ Tag

GCC C __attribute__ feature

Most of compilers support optimization level in which each level has special significance to optimize the source in terms of size, performance etc. This can be enabled by specified command line arguments, mostly known as options.

Moreover GCC compiler has a special characteristic additionally – declaring attributes of a function. The source can be optimized at programming level. While writing the source, the programmer has a chance to instruct the compiler to what should be taken care.

__attribute__ keyword is used when a function (declared only) is a declared and the corresponding instruction/s is/are mentioned with it.  There are many ways to do nasty things with it found here.

In the embedded system, the code is nicely put together in different sections according to the design/requirements.  The code goes into the text section. It happens that while starting the OS, it is so better to gather the initialization code together that as soon as the initialization is over, the related code can be removed from the main memory.  This can be achieved by combining initialization code into init section i.e  __attribute__ section(“.init”). This is where my journey has started for attribute feature.

This function attibute has been widely used in L4 micro-kernel, which provides a secured approach for embedded systems facilitating the hardware manufactures to protect their patents/innovation without exposing to the outside world.

There are many things can be done using Linux and GCC pair, but today this is enough to start with.

WideStudio IDE

Today it happened to be to find out about WideStudio IDE primarily developed in Japan.  It’s an open source GUI based application development environment providing support for Windows, Linux, FreeBSD and Solaris. It has been developed in C++. The following features really attract the cross platform developers.

  • Multi platform application development. For example, if the application is developed in Windows, can also run in Linux
  • Multi Encoding support for Unicode (UTF8), EUCJP and SJIS. It handles encoding independently of the encoding of the underlying platform.
  • Freely available for personal and business use.  No need to publish the source
  • Application development is possible for Desktop, large server and even for embedded devices
  • Supports C, C++, Java, Perl, Ruby, Python, OCaml
  • Multi Widget Toolkit support

There are many good open source IDEs are available for applicatin development presently.  God bless open source.