top of page
Writer's picturearman valaee

Software Portability Project - Stage 1.2 Planning

Updated: Dec 9, 2022

This project can be done in many different programming languages, but the approach is pretty much the same.



Using Language


C++ has been one of my favorite languages throughout my studies of programming languages, and I am more familiar with implementing In-Line Assembler using this language.

Therefore I choose to use it as the language in which I will be implementing this program.



Approach


As explained in the previous blog (1.1 Background), iFunc plays a great role in this project. My first step in approaching this project is to learn deeply about the iFunc feature to be able to implement it in the project.

There are multiple resources provided for this purpose such as the following websites:

Using iFunc we plan to make the assembly codes understandable for the machine, based on the machine that we are using. The program should be able to run on ASIMD, SVE, and SVE2 machines.

Since I do not have access to an SVE2-compatible machine, I will be using the -qemu, which will simulate SVE2 in my current machine.


At this point, I have had some practice with the Aarch64 Assembly language, but I believe my knowledge may not be enough to complete this project.

For this reason, I plan to study deeper into Aarch64 Assembly and try to understand it better.

This would be my second step in approaching this project.


Understanding ASIMD, SVE, and SVE2 may be challenging but with the provided resources and videos, it is not impossible.



Licensing - GNU GPLv3


This project will be an open-source development project, therefore I need to choose a proper license based on my needs and its compatibility.

After some research, I decided to use the GNU GPLv3 license for the following reasons:

  • I care about sharing improvements,

  • Allowing people to do anything on the project's code,

  • And great compatibility, since Many of the most common free-software licenses are GPL-compatible.

Challenges


I am expecting to have many challenges during this project based on my level of knowledge.

Fully understanding the SIMD and Scalable Vector Extensions (SVE, SVE2) is one of these challenging parts.




Compiling


My project codes should be able to compile using the GCC compiler and I am planning to apply the level 2 optimizations, which is the maximum level of safe optimization.

Since Auto Vectorization has been recently declared as a safe optimization method, I do not need to specify it in addition to the level 2 optimization level.



10 views0 comments

Comments


bottom of page