SPO600 Lab3 Assembler Lab

Hi all, I was assigned to work in my lab for my SPO600 class. Here is the outline of the specifications:

Blog about the programs you’ve written.

Describe the experience of writing and debugging in assembler, as compared to writing in other languages. Contrast x86_64 and aarch64 assembler, your experience with each, and your opinions of each.

Include links to the source code for both of your assembler programs.


This program is used to print a loop that can display a list of text and number.

If we compare this program to other programming languages such as Java, C or C++. This program is written in a much more low-level language. That means the computer can easy understand and execute the program in the fastest way comparing to high-level languages where is much more Human readable language.


The program written in x86_64 can be run on Xerxes. This assembler has a more organizable structure of code comparing to aarch64. Since the program is developed using msg and ASCII to print the message, the x86_64 has an easier reading syntax. for example, labeling with the loop, skip…etc. When moving data from the register using instructions “mov %99, %r10” the data is moved from right to left (put 99 into r10). The other useful feature of x86_64 is call jumping. For example, “jne loop” will take us to the label “loop:” that we were included in the program. this is useful when we have to divide the program into different section such as perform the looping when the value is less than some other value (loop_lt).


The program written in Aarch64 can be run on Betty. This assembler has a different way of organizing the structure of the code. When moving data from the register using instructions “mov r0,99” the data is moved from right to left (load r0 with value 99) is can cause confusion when we have to work with large an amount of code.


The example of this lab is very interesting and useful for the new programmer who is interested in machine code. For me, at first, I have some difficulties with understanding the syntax and the structures of the code. But after working in the group and discussing with each other and spending some time to review the lecture. I have a better understanding of machine languages and how they are implemented to make the program run faster and more efficient.

Here is the link to our work:

Aarch64: https://www.dropbox.com/s/6r9toblje2n7ytx/lab3Bet.s?dl=0

x86_64: https://www.dropbox.com/s/yvpvpl21rxgnaau/lab3Xer.s?dl=0



SPO600 Lab1 Open Source software

Hi all, I was assigned to work on my lab for my SPO600 class. here is the outline of the specifications;

  1. Select any two open source software packages that have different licenses.
  2. Research the procedure used by those projects to accept code (“patches”) from contributors. This may be through a mailing list, bug tracker, or source code management system (SCMS)/version control system (VCS).
  3. Identify one software change (“patch”) successfully submitted in each community, and observe the entire review process from start to finish. Note how many people were involved in the review, the role of those people in the community and project, how long the whole review took, how responsive the participants were to updates in the process, what kinds of issues were discussed, and how issues were resolved.
  4. Write a blog post discussing your findings. Explain how each community’s review process works, the reasons for what you’ve observed, and note the advantages and disadvantages of each approach. Consider what you personally would have to do and learn in order to successfully submit a patch to each community.

Geary (Maling system for Linux)

Link: https://wiki.gnome.org/Apps/Geary/GetIt


According to Geary, Geary is an email application built around conversations, for the GNOME 3 desktop. It allows you to read, find and send an email with a straightforward, modern interface.

  • Quick email account setup
  • Shows related messages together in conversations
  • Fast, full text and keyword search
  • Full-featured HTML and plain text message composer
  • Desktop notification of new mail
  • Compatible with Gmail, Yahoo! Mail, Outlook.com, and another IMAP server

Work Process:

In the GNOME Mail Service List. The software has been solving issues from the user since December 2011 to January 2017.  This is the screenshot of the most recent thread


All in all, This program is very useful when we have to organize a large amount of email from different accounts. I was able to install the program on my computer.



GIMP (GNU Image manipulation program)

Link: https://www.gimp.org/


According to GIMP, GIMP is a cross-platform image editor available for GNU/Linux, OS X, Windows and more operating systems. It is free software, you can change its source code and distribute your changes. Whether you are a graphic designer, photographer, illustrator, or scientist, GIMP provides you with sophisticated tools to get your job done. You can further enhance your productivity with GIMP thanks to many customization options and 3rd party plugins.

Work Process:

In here is a Bugzilla that is found on GNOME Bugzilla website



This bug was reported in 2015. Many users have been contributing the solution to solve this problem. the most recent reply is in 2016.

All in all, This is a very popular program so the number of bugs is a lot. However, The communities are working very hard to resolve the problems and maintaining the software.

SPO600 Lab2 GNU Software

Hi all, I was assigned to work in my lab for my SPO600 class. Here is the outline of the specifications:

  1. Select a software package from the Free Software Foundation’s GNU Project.
  2. Build the software. You may need to install build dependencies (e.g., compilers, tools, and libraries); you can do this (and only this) as the root user.
  3. Test that it works.
  4. Select a second, open source software package that has a different license, and repeat the process with that software.
  5. Blog about the process, your results, your observations, and what you learned.

1. Select a software package from the Free Software Foundation’s GNU Project.

I Download 2 software package from the GNU website.

The first one is Bash.

Link: https://www.gnu.org/software/bash/


According to Bash website, Bash is the GNU Project’s shell. Bash is the Bourne Again SHell. Bash is an sh-compatible shell that incorporates useful features from the Korn shell (ksh) and C shell (csh). It is intended to conform to the IEEE POSIX P1003.2/ISO 9945.2 Shell and Tools standard. It offers functional improvements over sh for both programming and interactive use. In addition, most sh scripts can be run by Bash without modification.

The improvements offered by Bash include:

  • Command line editing
  • Unlimited size command history
  • Job Control
  • Shell Functions and Aliases
  • Indexed arrays of unlimited size
  • Integer arithmetic in any base from two to sixty-four


  1. I started with downloading the file from the website on my Fedora VM.
  2. I went to the folder and open the INSTALL file to find the instruction of the installation.
  3. Then executed the command “$ ./configure ” and it worked nicely.
  4. I followed the instruction to run “$ make ” and it worked
  5. The last step is to run “$ make install” But It was failed because of the installing folder require the permission from the root user so I replace the command with “$ sudo make install ” and it worked nicely again.
  6. I test the program by using these command “$ man bash” to check the manual page, “$ bash –help” to check the version and “$ whereis bash” to check the location.

GLib (aka GTK+)

Link: https://www.gtk.org/


According to gtk, GTK+, or the GIMP Toolkit, is a multi-platform toolkit for creating graphical user interfaces. Offering a complete set of widgets, GTK+ is suitable for projects ranging from small one-off tools to complete application suites.


GTK+ has been developed for over a decade to be able to deliver the enticing features and superb performance that it brings to your application development. GTK+ is supported by a large community of developers and has core maintainers from companies such as Red Hat, Novell, Lanedo, Codethink, Endless Mobile and Intel.


  1. This one took a while to install because it required more dependencies such as cairo-gobject, pango, atk and gdk-pixbuf.
  2. So I ran “$ sudo yum install dependenciesName” for the dependencies in step 1
  3. Then ran some External dependencies: libepoxy, xlib, at-spi2-atk.
  4. After step 3, I had a completed “$ ./configure” command
  5. So I ran “$ make” and $ sudo make install”
  6. So for testing, I had the application be installed and go to the example folder of gtk and run the C program with “$ gcc hello-world.c -o base pkg-config --cflags --libs gtk+-3.0 "