Thursday, December 29, 2011

GCC vector intrinsics example

typedef int v4si __attribute__ ((vector_size(16)));

typedef int RGBA[4];

void diff(const RGBA & a, const RGBA & b, RGBA & out) {
#if 0
    for(int i = 0; i < 4; ++i)
        out[i] = a[i] - b[i];
   
    for(int i = 0; i < 4; ++i) {
        int v = out[i];
        if (v < 0) v =0;
        if (v > 255) v = 255;
        out[i] = v;
    }
#else
v4si va = *(v4si*)a;//{a[0], a[1], a[2], a[3]};
v4si vb = *(v4si*)b;//{b[0], b[1], b[2], b[3]};
v4si vr;
    vr = __builtin_ia32_psubd128(va, vb);
    *(v4si*)(&out[0]) = vr;
   
#endif
   
}

Wednesday, December 28, 2011

nimrod programming language

Found this interesting:

http://force7.de/nimrod/download.html

Integer division optimization

The idea is to replace division with multiplication and bit shift.

Found it interesting (GCC does it for you, but FPC not):
 
http://www.codeproject.com/KB/cs/FindMulShift.aspx

http://libdivide.com/

Thursday, December 22, 2011

Memory Leaks

Nice article on the topic: http://www.delphibasics.co.uk/Article.asp?Name=Memory

By the way, Pascal's manner of declaring variables in a single place ('var section') seems unproductive for C/C++ fans but it is very helpful in tracking resources (class references) -- look for the known block in a function and check if all of the references are properly freed on return.

Saturday, December 17, 2011

Lazarus problem solution for Ubuntu 11.10

" Lazarus applications have problems to run on latest Ubuntu 11.10 where the reason is new Taskbar menu and scrollbar.

To get application running like on older Ubuntu we have to remove some functionality from Ubuntu using by this command:

sudo apt-get remove appmenu-gtk3 appmenu-gtk appmenu-qt
liboverlay-scrollbar-0.2-0 "

http://62.166.198.202/view.php?id=20520

Monday, December 12, 2011

LG Optimus One P500 factory menu

Working solution for GPS problem for LG P500 Optimus after update to Gingerbread lies in hidden menu which can be opened with 3845#*500# combination in Dialer. Then choose GPS Test > gpsApp Main Menu > Settings > GPS Type and choose Standalone instead of A-GPS (as shown on picture).

http://muj.trus.cz/post/9622985470/working-solution-for-gps-problem-for-lg-p500

Sunday, December 11, 2011

FreePascal experience

Tried FPC 2.4.4 recently, what I must say, Lazarus and console fpide are unusable under Ubuntu 11.10 and MacOSX -- crash all the time, no debugger support and strange GUI bugs, although I have not tried them under Windows.

However, the big POSITIVE side is that the compiler (FPC) is a lightning fast one and easy to install at any platform. It's even faster than javac. I'm really impressed. And GDB understands well pascal programs, tried to debug and it's amazingly feature rich. The language is plain simple and you can easily program in any decent text editor. I really enjoyed playing around with it. The generated applications are lightweight like in good old times, native, fast, not so hungry for memory and cpu resources. Also FPCMAKE is a good tool if you plan to develop a more or less complex application.

FPDOC tool is not what I like to use (it requires documentation not in the source comments but in a separate xml file), better to pick pasdoc (http://pasdoc.sipsolutions.net/) for those who used to javadoc and doxygen.


As for the Pascal programs I've used -- they are not pretty stable, I think it's the fault of the poor memory management strategy applied. It's better to use reference-counting techniques like in GNUstep/Cocoa than TComponent's sole ownership and dangling pointers.

Playing with the compiler I have tried to implement a base class to do that counting and one more to track weak references. It was a success, so it's not the language fault but the programmers who use it, because my solution looks good and I plan to publish a library on GitHub if I ever program in FP.

One more deficiency is the lack of Unicode strings support in OS calls, e.g. for file names on Windows. Although it's no problem under Linux and/or MacOSX.

Generally FPC is a great tool, and there are a lot of useful libraries to make life easy.

jEdit performance workaround

Runs slow on my Ubuntu, but if I make

jEdit global options -> Appearance -> Show the systray icon to OFF.

it runs as fast as native. Strange bug on Gnome 3.

Wednesday, December 7, 2011

D language status, LDC2

https://github.com/ldc-developers/ldc

http://www.digitalmars.com/d/archives/digitalmars/D/State_of_LDC_148791.html


Sunday, December 4, 2011

FreePascal status

Unicode is supported by LCL (Lazarus) via UTF-8. There are several functions to convert from system encoding strings (codepage on Windows) to utf-8 strings.

http://wiki.freepascal.org/LCL_Unicode_Support

According to the docs, fpc supports MacOSX 32 and 64-bit, iOS targets.http://wiki.freepascal.org/LCL_Unicode_Support