Course Computer Systems for AI-programmers

"Computersystemen voor AI-programmeurs"

Week 6, February 2009

Description

In this class, we peer beneath the layer of abstraction provided by a high-level language and get a view of the machine-level. By letting the compiler generate assembly code of very simple C-functions, we get insight of the instruction set a compiler is working with.

Assembly language is very different from C code. In assembly language, there is minimal distinction between data types. The program is expressed as a sequence of very simple operations. Still, part of the program state, such as registers and run-time stack, are directly visible to the programmer (and the user, after a programming error).

Only the mapping of C onto the Intel 32-bits instruction set is shown, but the same principles hold for other combinations of languages and machines.

In this class the following concepts are introduced:

  • control constructs as conditionals and loops, dissambler
  • arrays, nested arrays, dynamic allocated arrays
  • structures, unions and their allignments
  • understanding pointers

Literature

The class is based on chapter 3 of the book Computer Systems: A programmer's perspective by R.E. Bryant and D.R. O'Hallaron.

Recommanded reading (afterwards, 47 pages, 2 hours):

3.4Accessing Information
3.5Arithmetic and Logical Information
3.6Control
3.8Array Allocation and Access
3.9Heterogeneous Data Structures
3.10Allignment
3.11Putting it Together: Understanding Pointers


Schedule

The class is scheduled in one hours:

  1. Lecture (Recording): 'Computer system - Control in C'
    Practice Problem 3.11: 'Write a goto-version of loop_while().'
    Practice Problem 3.13: 'Identify the case-labels of switch2().
  2. Lecture (Recording): 'Computer system - Data Structures in C'
    Practice Problem 3.23: 'Determine the allignment under Linux/IAS32 for these 5 structures'
  3. Read section 3.11: Putting it Together: Understanding Pointers
    Study Figure 3.26: 'Code illustrating use of pointers in C.'

Links

Last updated March 1, 2010

o This web-page and the list of participants to this course is maintained by Arnoud Visser (arnoud@science.uva.nl)
Faculty of Science
University of Amsterdam

visitors in arnoud@science.uva.nl