Posts

SPO600 - Final Thoughts

Hey here's a last minute blog post to try and bump up the number of blog posts for April. It's really just a sort of a farewell to this course and some of my thoughts on it.  Overall this course was really neat. I had never worked with assembly language code before and it was certainly something. Honestly it feels really restrictive and generally difficult to work with but it was definitely an enjoyable experience. Though I can't say it's something I want to continue in. But learning more about the compiler and it's optimizations is definitely something I'll take away from this course. I never had the compiler explained to me in any depth before, hell I didn't even realize -Wall meant turning on all warnings. I just always read it very literally as wall and gave it no thought. It was always just something I was told to type to run my program but no one had ever offered any deeper explanation into it (nor did I even think to ask) so it was a cool thing to lea

SPO600 Project - Stage 3: Analysis

  Stage 3 Summary This is my summary post for Stage 3 of the Winter 2022 SPO600 Project. This post will be an analysis of the changes I made to SoX , command line utility that can convert various formats of computer audio files in to other formats. My changes were to implement SVE2 optimizations using autovectorizations. To see the outline for this project click  here . To see my previous blog posts on this project, see the links below. Stage 1 Summary Stage 2 Summary Here are some more useful links: This  is my git repo where I store some of my tests. It is seperated in two folders, changes and noChanges. The former being files created with SoX with my changes active, and the latter being files I made with none of my changes active. Included in these are audio files I converted, and disassemblies of two files where SVE2 instructions were implemented.  This  is my git repo of SoX, which I'm actively making my changes in. Disassembly Analysis In stage 2 to check that my code worked

SPO600 Project - Stage 2: Implementation

 Stage 2 Summary This is my summary post for Stage 2 of the Winter 2022 SPO600 Project. To see my Stage 1 post click here . To see the outline for this project click here . A quick summary of my Stage 1 was I planned to implement SVE2 optimizations in SoX  by using autovectorization. In this stage I will be attempting to implement those changes.  Here are some more useful links: This is my repo where I store the audio files I've made to test SoX. The noChanges folder is for audio files converted before my changes, and the changes folder is for audio files converted after my changes. This is my repo of SoX, which I'm actively making my changes in. Step 1: Implementing Changes First step: implementing those changes. Since I've chosen to do autovectorization this part is honestly a bit quick. I change the CFLAGS variable in SoX's configure script from optimization level 2 to level 3, and add an option to include SVE2 extensions. The original CLFAGS value and the updated

Lab 4 - 64-bit Assembly Language Lab - Part 4

 Welcome to part 3 of lab 4. This lab goes over some basics of 64-bit assembly languages, specifically in the AArch64 and x86_64 platforms. This specific part will be going over the second half of the lab in the AArch64 system. Links for the other parts are listed here: Part 1 - First half in AArch64 Part 2 - First half in x86_64 Part 3 - Second half in AArch64 I'll be outlining the steps in detail as I go along but the full instructions for this lab can be found here . Okay we're in the homestretch. Just like part 3 we're making our loop print from 00-30. I learned my lesson from part 3 and pre-labelled my code, and I was already planning on trying to reduce the overall amount of registers I use but x86_64 seems to have less safe registers anyways so I was somewhat forced to. Major difference here is the div function. The div function in x86_64 calculates the remainder too so that was pretty convenient. It's a bit less intuitive, it takes one argument, a register, a