200 likes | 472 Views
A Simple but Realistic Assembly Language for a Course in Computer Organization. Eric Larson Moon Ok Kim Seattle University October 25, 2008. Problem. A few years ago we had two computer hardware courses: Assembly Language Programming Computer Organization
E N D
A Simple but Realistic Assembly Language for a Course in Computer Organization Eric Larson Moon Ok Kim Seattle University October 25, 2008
Problem • A few years ago we had two computer hardware courses: • Assembly Language Programming • Computer Organization • Now we only have one course that combines the two courses. • Result: Too much material to cover in one course.
Solution • Use a simple, yet realistic, assembly language (ANNA) throughout the course. • Focus on key concepts of assembly language programming. • Does not burden students with the complexities of large instruction sets. • ANNA can be used in illustrating the datapath and pipelining units.
Outline • Background about the course • ANNA assembly language and tools • How ANNA was used in the course • Feedback and Observations
Computer Organization Course • 5 credit (quarter) sophomore level class • requirement for CS majors • Main topics: • Data representation • Digital logic • Assembly language programming • Datapath and control • Memory hierarchy • Material from other classes: • OS: virtual memory, some I/O • Discrete math: Boolean algebra • Taught using ANNA three times
Assembly Language Concepts Key concepts in assembly language in our course: • Registers and memory • Conditional branches and jumps • Translating high-level languages constructs into assembly: • if-else statements • loops • procedure calls • arrays and pointers • Most importantly – experience actually writing assembly programs
ANNA Assembly Language v1 • Memory is word addressable, words are 16 bits. • Memory is shared by instructions or data. • Data in memory / registers is either an integer or an address. • Can actually store anything – no instruction support for other data types. • Load / store architecture • 16 general purpose registers, register r0 is 0. • Wise to introduce a calling convention that reserves a register for the stack pointer. • 16 instructions (next slide).
ANNA Instruction Set v2 • Added a new add immediate “addi” instruction. • Stack pointer updates • Loop control variables • Removed halt: made it a special case of the output instruction (out r0). • Input / output / halt already greatly simplified • Reduced the number of registers from 16 to 8. • Restricts register usage (function calls in particular). • Increases immediate sizes in the machine code format.
Tools • Assembler: translates assembly language files (.ac) into machine language files (.mc). • Simulator: loads and runs machine language files. • Debugging support: breakpoints, stepping, etc. • First two quarters: used command-line tools on Linux. • Worked fine – students already know Linux and familiar with command line tools. • Last quarter: students could use Windows GUI-based tools or the Linux command line tools. • Most, but not all, chose to use the Windows tools.
Computer Organization: Outline I did not require the students to purchase a textbook.
Computer Organization: Outline I did not require the students to purchase a textbook.
Course Information: Lectures • Assembly Language • Introduction to assembly • Converting C/C++ into assembly • Comparing ANNA to IA-32 instruction set • Overview of the compilation / linking process • Datapath / control • Single cycle datapath (omits I/O instructions) • Control ROM implementation • Pipelining • We no longer cover multiple cycle datapath
Course Information: Assignments • Assembly Language Programming • Find the highest number entered by a user. • Compute the log2 of a number. • Find the mode of a set of numbers entered by the user. • Implement linked list functions. • Control & Datapath • Add instruction X to the datapath and control ROM. • Create a control ROM for a different datapath / instruction set. • Trace the execution of a program in a pipelined implementation.
Students Feedback • Most students felt… • they learned a lot when completing the ANNA programming assignments. • the ANNA tools were easy to use. • there was adequate documentation. • There were several suggestions for improving the Windows tools: • line numbers in the assembler • knowing what addresses labels map to in the simulator
Course Outcomes • Students were asked to judge how well a particular topic was covered. • Scale: 1(not covered) to 5 (very well covered) • Most topics received a 4. • No topic received a 2 or lower.
My Observations • Using the ANNA assembly language helped students learn the important concepts. • No differences between the classes that use the Windows tools and Linux tools except for implementing function calls. • Could be due to improvements in lecture • ANNA, a simple toy assembly language, did not dampen student motivation. • The datapath and design went fairly well. • Some “hand-waving” at times (pun intended) • Some students would benefit from having a textbook. • Most textbooks are tied to particular language.
Questions? More info? Contact me: Eric Larson elarson@seattleu.edu