$\newcommand{\defeq}{\mathrel{\mathop:}=}$

## 2007/10/12

### Home-Brewed

cyy 今年的 "Computer Organization and Assembly Languages" 內容看起來又更秀色可餐了 ─ 在 GBA 上寫程式耶！下面轉貼課程網頁的描述

This course is about computer organization and assembly languages. You might wonder why learning assembly languages. After all, who will write assembly programs these days. Actually, people still write assembly for faster codes (compiler is not as smart as men yet), smaller codes (for devices with limited amount of memory such as mobile devices) and specific architectures (in which there are not even compilers, for example, early GPUs). With these in mind, other than the fundamentals about assembly programming, this course emphasizes on code optimization techniques on writing fast and small codes. This course is divided into three parts:

• TOY. we will teach a virtual machine called TOY, developed by Princeton. This is a machine with ancient designs. However, most computers today evolve from such simple designs and share the same princeples with TOY. By learning TOY, you will understand why computers work in the way they work. In addition, you will have you first bite of assembly programming using our own home-brewed TOY assembler and emulator.
• ARM. ARM processors is a widely used processor for its power saving capability. It has been used in Gameboy Advance, iPod, mobile phones, iPhone and many other devices. It is a RISC machine as its name suggests. Thus, the instruction set is of moderate size and the architecture is simple. You will develop your first real assembly program for ARMs. In addition, we will teach the architecture and programming for Gameboy Advance (GBA). GBA is a good platform to learn low-level programming as your program has to control everythings itself. In addition, there is nothing with more fun than seeing your programming running on such as lovely console.
• Intel. For the third part, we will move to Intel x86 assembly programming. Such processors are widely available on your desktop. In addition to the fundamental programming for x86, we will also cover advanced topics such as float-point programming and SIMD programming.

--

Labels: