Immanuel Mboowa About Computers

I am passionate about Computers and Art. I show my skills and passion through Computational Biology, Computer Graphics, and Computer Science Projects. I specialize in Python and C programming languages but seldom tap the Assembly world. I aim to contribute to these fields of Computers.

Computer Science

Python

C

ARM Assembly

Computer Graphics

Blender

ARM Assembly

start.s

.global _main        // main global to CPU
.align 4

_main:
  adr X3, name       // one argument needed for get_length
  bl get_length      // call get_length
  adr X5, name       // give the arguments needed by printf
  mov X6, X0
  bl printf          // call our sweet printf(legends in C)
  mov X4, #0         // make X0 == 0
start:
  cmp X4, #3         // cmp is X0 == 5
  bge end_loop       // 1 bge end_loop 0 none
  adr X3, greet
  bl get_length
  adr X5, greet
  mov X6, X0
  bl printf
  add X4, X4, #1     // add 1 to X4(counter)
  b start            // branch to start
get_length:
  mov X0, #0         // initialize counter to 0
  mov X1, X3         // get arguments into parameter
loop:
  ldrb W7, [X3, X0]  // load the lower byte(char) -> reset of space, zeroed out(memory friendly)
  cmp W7, #0         // check if value in W7 is null terminator(0) at some point
  add X0, X0, #1     // increment offset(index)/(counter)
  bne loop           // if not equal to counter, loop again
  ret                // else, return
printf:
  mov X0, #1         // make stdout fd -> 1
  mov X1, X5         // prep MEM address -> name
  mov X2, X6         // get length of MEM
  mov X16, #4        // write name
  svc 0              // syscall
  ret
end_loop:
  mov X16, #1        // exit 1 == success
  mov X0, #0         // return 0 -> success
  svc 0              // syscall

name:
  .ascii "for loop\n\0"
greet:
  .ascii "Hello, World!\n\0"
              

main.s

.global _main

.align 4

_main:
  b open_file      // Branch To open_file

open_file:
  adr X0, fileName // Get The Address Of The File Name
  mov X1, #577     // Flag To Open
  mov X2, #420
  mov X16, #5      // Open File
  svc 0
  mov X9, X0       // Save File Descriptor

write:
  mov X0, X9       // Load Saved File Descriptor
  adr X1, buffer   // Load What To Write
  mov X2, #45
  mov X16, #4      // Write To File
  svc 0

close:
  mov X0, X9       // Load Saved File Descriptor
  mov X16, #6      // Close File
  svc 0

end:
  mov X16, #1      // Exit Program
  svc 0

buffer:
  .asciz "Hello,\n\nFrom A Text Pester\nSee ya\n"
fileName:
  .asciz "output.txt"
            
Contact
Github LinkedIn