Open main menu

CDOT Wiki β

Changes

Fall 2014 SPO600 Weekly Schedule

20 bytes added, 22:54, 4 September 2014
Introduction to the Problem
==== Introduction to the Problem ====
** Most software is written in a '''high-level language''' which can be compiled into [[Machine Language|machine code]] for a specific architecture. However, there is a lot of existing code that contains some architecture-specific code fragments written in [[Assembly Language]] (or, in some cases, machine-specific high-level code).** Reasons for writing code in Assembly Langauge include:*** Performance*** [[Atomic Operation|Atomic Operations]]*** Direct access to hardware features, e.g., CPUID registers** Most of the historical reasons for including assembler are no longer valid. Modern compilers can out-perform most hand-optimized assembly code, atomic operations can be handled by libraries or [[Compiler Intrinsics|compiler intrinsics]], and most hardware access should be performed through the operating system or appropriate libraries.** A new architecture has appeared: Aarch64, which is part of [http://www.arm.com/products/processors/instruction-set-architectures/armv8-architecture.php ARMv8]. This is the first new [[Computer Architecture|computer architecture]] to appear in several years (at least, the first mainstream computer architecture).** There are over 1400 software packages/modules present in GNU Linux systems which contain architecture-specific [[Assembly Language|assembly language code]]. Most of these packages cannot be built on Aarch64 systems without modification.* ==== Course Projects ===== In this course, you will:
*# Select two software packages from a list compiled by Steve Macintyre of Linaro. Each of the packages on this list contains assembly language code which is platform-specific.
*# Prepare a fix/patch for the software so that it will run on 64-bit ARM systems (aarch64). This may be done at either of two levels: