2110206 Assembly Language The first half concerned computer systems, so called computer organisation. The second half concentrated on the understanding of computer at low level abstraction, i.e. the machine level. Including the programming skill at assembly language level. The implication of future of computing will be explored. Lecture outline 1 computer structure 2 number and data representation 3 computer arithmetic 4 computer logic 5 processor and its function 6 computer instruction 7 assembly language 1 8 assembly language 2 9 memory subsystem 10 computing future assessment midter exam 30 final exam 30 four projects 20 homework 10 participation 10 ---- total 100 Tentative projects 1 discussion on computer system 2 concrete study of existing processors 3 assembly language programming 4 study of large computer system of the future Lecture 1 computer structure what is computation? definition of computer abstraction level of computer organisation computer and language computer language computer and society what is computation? computation is a process of transforming from sensed data to affect the real world through effectors. sensors effectors computation what is computer? a computer is a machine that performs computation. computer organisation There are layers of abstraction, applications operating systems computer language instruction set functional units circuits Another view: software ------------- instruction set hardware computer language syntax semantic primitives Pascal, C, C++, Java, C#, Flash, Javascript (my contribution, Som and Nut) programming paradigm procedural (imperative) is based on step-by-step instructions functional is based on algebra logical is based on classical logic object is based on components (aspect) is based on views imperative paradigm is the origin of computer language. It has limit on the reuse, especially the use of program library. object paradigm solved the problem of program library by providing mechanism to "reuse" programs via inheritance and encapsulation. functional paradigm promotes the model of program as algebra hence it is possible of reason about correctness of programs. The use of function abstraction allows composing of functions. logical paradigm lets programmers specify what to be computed and leaves how to compute to the computer system (via logical deduction). language implementation compiler -- the executable code is a static object, the object is preconstructed. interpreter (virtual machine) -- dynamic executable object, can be created on the fly. language design machine efficiency human efficiency References Chongstitvatana, P., "The essence of computer system engineering", in print, 2006. Chongstitvatana, P., "Computer Architecture: a synthesis approach", on web, 2002. Stalling, "Computer organisation", 6th ed. Comers, "Essentials of computer architecture", 2005. My project on computer language (mostly language implementation) Som.