2015년 7월 22일 수요일

C / C++ Programming Environment

As Java is struggling between Oracle and Google since Sun has fallen into Oracle, its language status is not stable though Java itself has improved much. So I decided to move to C / C++ programming as my primary programming environment. Though during my work, I usually used C / C++, it still needs much practice to improve my skills.

The main IDE I selected is Code::Blocks, which is fine and cross-platform environment. I also considered eclipse CDT and netbeans, however they highly depend on Java language itself and since I decided to abandon Java, I'd prefer pure C / C++ environment. There is Visual Studio in Windows platform and XCode for Mac platform, which are very fine environment, but I want cross platform environment so I decide to use Code::Blocks.

The Code::Blocks is very good IDE, and provides easy way to aid programming, especially the GUI designer is also included. I always though GUI part of the programming is tricky part and is not so important, but in many occasions GUI helps people to use the program and command line is not easy for common people. So whenever GUI is required, I decided to use wxWidgets, whch is also cross platform GUI library. I first considered GTK+ as my library, however this library is so complicated and I failed to compile it on my environment (mingw on windows)

To avoid using commercial tools, I decide to use mingw as my primary compilers on windows. If I happen to buy mac book, I might move on to mac environment, but for the moment all the programming environment is mingw on windows.

Here are some libraries I intend to use on C environment; (Java is handy since these libraries are all included in JRE)

  • wxWidgets: GUI library
  • GMP: multi-precision library (used for computing big integers)
  • OpenSSL: crypto library
  • OpenSC: PC/SC library to access smartcard readers
To avoid operating system dependency, I compile those libraries as static library and make one executable.

The Code::Block provides Wizard for wxWidget programs, but it seems not working well. To make it correctly work, I need to adjust include path and library path and library list as follows;
  • include path 
    • <wxWidgets path>/include
    • <wxWIdgets path>/lib/wx/include/msw-unicode-static-3.0
  • library path
    • <wxWidges path>/lib
  • libraries
    • wx_mswu-3.0
    • wxpng-3.0
    • wxjpeg-3.0
    • wxtiff-3.0
    • wxzlib-3.0
    • gdi32
    • comdlg32
    • shell32
    • comctl32
    • ole32
    • uuid
    • oleaut32
    • winspool
The "msw-unicode-static-3.0" and "wx_mswu-3.0" may be different according to configuration of wxWidgets. Some windows libraries should also be specified to avoid missing symbols.

2013년 2월 4일 월요일

Binary Translation / Emulation

I found one interesting software, which is an emulator for Nintendo DS, and surprisingly it works on my Galaxy Note phone who runs on android platform. I'm curious because both hardware Nintendo DS and Galaxy Note uses arm-based CPUs, so I decided to take a look into what's going on in the emulator, and check if there is any possibility to improve the emulation.

Here's the detailed specifications;

  • Galaxy Note
    • CPU: Qualcomm MSM8660 (ARM v7)
    • Screen resolution: 1280 x 800
  • Nintendo 3DS (XL)
    • CPU: 1GHz ARM11 (ARM v6)
    • Screen resolution: 400 x 240 (top screen), 320 x 240 (bottom screen)
  • Nintendo DS
    • CPU: ARM9 (ARM v4)
    • Screen resolution: 256 x 192 (top / bottom screen)

2012년 2월 26일 일요일

Paper Writing

Writing a paper is a painful task, but necessary. To do it as easily as possible, I use several tools, that can help me. (There was none before a decade, but since then a lot of tools are created.) As a lot of time has passed, I almost forgot I already considered the tools. I'll use the following tools.

  • cygwin tex live: the most popular latex package
  • Notepad++: editor to write the actual paper tex file
  • Acroread: to view pdf files
  • make: automatically create the final file .pdf
The creating documents are following .tex -> .dvi -> .pdf sequences. So the final pdf file is to view and examine.

2012년 2월 4일 토요일

Interesting Conferences & Journals


  • Conferences
    • CASES: Conferences on compilers, architectures and synthesis for embedded systems (Submission March, Conference October)
    • CGO: International Symposium on Code Generation and Optimization (Submission September, Conference March)
    • EUC: International Conference on Embedded and Ubiquitous Computing (Submission April, Conference December)
    • ICS: International Conference on Supercomputing (Submission January, Conference June)
    • INTERACT: Interaction between Compilers and Computer Architectures (Submission January, Conference September)
    • LCTES: Conference on Languages, Compilers, and Tools for Embedded Systems (Submission February, Conference June)
    • PACT: Conference on Parallel Architectures and Compilation Techniques (Submission March, Conference September)
    • RTAS: Real-Time and Embedded Technology and Applications Symposium (Submission October, Conference April)
  • Journals
    • SPE: Software: Practice and Experience
    • CLSS: Computer Languages, Systems and Structures
    • TPDS: Transactions on Parallel and Distributed Systems

2011년 11월 2일 수요일

Work Environment

Smartcard related works
  • CPU: NXP chips
  • Memory:
Android related works
  • CPU: ARM Cortex A8 1GHz
  • Memory: 512MB RAM, 16GB Storage
  • Display: 480 X 800
Android virtual machine setup

2011년 6월 9일 목요일

Biography

This page shows biography of SeungIl Lee, whose English name is Steve S. Lee. I'm currently working for UBIVELOX, inc, which recently listed on the Kosdaq, and I'm also one of the founder of the company. My e-mail address is seungil.lee@gmail.com, and you may also contact me by my mobile phone +82-10-2015-5904.

Area of interest
  • Virtual machine
  • Compiler (code optimization)
  • Operating system

History
  • 1994 ~ 1998: Seoul National University (Bachelor's degree)
  • 1999 ~ 2000: Seoul National University (Master's degree)
  • 2000 ~ 2008: Seoul National University (Doctor's degree)
  • 2004 ~ Present: UBIVELOX, inc.

Projects
  • 1998 ~ 2001: LaTTe and VLaTTe: optimized Java VM JIT compilers for RISCs and VLIWs (IBM T. J. Watson Research Center)
  • 2001 ~ 2002: Java Just-in-Time Compilation for Instruction-level Parallelism on EPIC Architectures (Intel)
  • 2000 ~ 2004: JINOS, Java-based mobile phone (UBIVELOX)
  • 2004 ~ 2007: WIPI Platform, standard mobile platform of Korea (UBIVELOX)
  • 2004 ~ 2007: Platform optimization based on ahead-of-time compiler (UBIVELOX)
  • 2007 ~ 2008: i-topping, script-based mobile phone platform (UBIVELOX)
  • 2009 ~ Present: JavaCard platform optimizations (UBIVELOX)
  • 2009 ~ Present: MULTOS smart card platform optimizations (UBIVELOX)

Conference Papers
  • "On-Demand Translation of Java Exception Handlers in the LaTTe JVM Just-in-Time Compiler" by SeungIl Lee, Byung-Sun Yang, Suhyun Kim, Seongbae Park, Soo-Mook Moon, Kemal Ebcioglu, Erik Altman in Proceedings of the 1999 Workshop on Binary Translation (Binary'99), New Port Beach, California, October 1999
  • "LaTTe: A Java VM Just-in-Time Compiler with Fast and Efficient Register Allocation" by Byung-Sun Yang, Soo-Mook Moon, Seongbae Park, Junpyo Lee, SeungIl Lee, Jinpyo Park, Yoo C. Chung, Suhyun Kim, Kemal Ebcioglu, and Erik Altman in Proceedings of the 1999 International Conference on Parallel Architectures and Compilation Techniques (PACT'99), New Port Beach, California, October 1999
  • "Reducing Virtual Call Overheads in a Java VM Just-in-Time Compiler" by Junpyo Lee, Byung-Sun Yang, Suhyun Kim, SeungIl Lee, Yoo C. Chung, Heungbok Lee, Je Hyung Lee, Soo-Mook Moon, Kemal Ebicioglu, Erik Altman in Proceedings of the 1999 Workshop on Interaction between Compilers and Computer Architectures (INTERACT-4), Toulouse, France, January 2000
  • "Efficient Java Exception Handling in Just-in-Time Compilation" by SeungIl Lee, Byung-Sun Yang, Suhyun Kim, Seongbae Park, Soo-Mook Moon, Kemal Ebcioglu, Erik Altman in Proceedings of the ACM 2000 Java Grande Conference, San Francisco, California, June, 2000.
  • "Compatibility Support in Java Static Compiler on Embedded Systems" by Seungil Lee and Soo-Mook Moon in the Proceedings the 10th IEEE Annual International Workshopp on Interaction between Compilers and Computer Architectures (INTERACT-10), Feb 2006

Journal Papers
  • "Efficient Java Exception Handling in Just-in-Time compilation" by Seungil Lee, Byung-Sun Yang and Soo-Mook Moon in Software: Practice and Experience 34(15), pp. 1463-1480, December, 2004
  • "Efficient Register Mapping and Allocation in LaTTe, an Open-Source Java Just-in-Time Compiler" by Byung-Sun Yang, Junpyo Lee, SeungIl Lee, Seongbae Park, Yoo C. Chung, Suhyun Kim, Kemal Ebciogulu, Erik Altman, Soo-Mook Moon in IEEE Transactions on Parallel and Distributed Systems, 18(1), Jan, 2007