Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Chapter 2 Introduction to Computer Architecture and Assembly Language Computer Architecture • Interface between hardware and the lowest level of software • Assembly language programmer’s view of the processor • 3 major components of a computer 1. CPU (Central Process Unit) 2. Memory 3. I/O Devices • The components are interconnected by System Bus. Assembly Language • A low-level, human-readable representation of the binary code executed by a computer. • A language that controls the primitive operations on binary data. • Basic operations include data movement, addition, subtraction, comparison, shifting and branching. Computer Architecture - Languages Applications High Level Language Low Level language Hardware Assembly Language C, JAVA Word, Excel HHL Complier Assembly Language Assembler Machine Language Von Neumann Machine (Stored Program Computer) • The common memory system stores both the instructions and the data. Address Central Processor Unit (CPU) Data Address path (Address bus) Address Memory Instruction Data Data path (Data bus) Data Memory • Array of cells storing data (data/instructions), each cell has an unique address • Address port, data port, control signals. • Read cycle: data at the specified memory address is placed on the data bus. • Write cycle: data on the data bus is written into the specified memory location. Address transferred from CPU Address 0000 4 0001 27 9 6 0002 Read Write 14 32 Data Data transferred between CPU and memory Central Processor Unit (CPU) • Responsible for reading instructions from the memory and executing them. • Address path: used by CPU to provide memory address of instruction or data to the memory. • Data path: used by CPU/memory to transfer data. Basic von Neumann Instruction Format • An instruction consists of operation code and the operand address – Could have more than one addresses, later … • Operation code (op-code): defines what the instruction does. • Operand address (address): where the operand is located – referred to as the address field Operation Code Operand address Von Neumann machine in Pseudo code Von Neumann machine operates in a two-phase mode, fetch/execute cycles. • Module Von_Neumann I := 0 Repeat Fetch an instruction from memory location I I := I + 1 Execute the instruction Forever END Von_Neumann Pseudo code for execution Module Execute the instruction Decode the instruction IF instruction requires data, THEN Fetch the data from the memory END_IF Perform operation defined by instruction IF instruction requires data to be saved, THEN Save the data in memory END_IF End Execute the instruction Information Flow between CPU and Memory Memory Read Read CPU Read C := A+B Instruction 5 A 6 B 11 C Write CPU Components • Arithmetic and logic unit (ALU): calculation • Control unit (CU): interprets the instruction CPU Address Memory Address bus Registers Control bus CU ALU Data Data bus Address Instruction Instruction : Data : Data CPU Components • Registers: temporary storage – Program counter (PC): holds the address of the next instruction to be executed. – Instruction register (IR): holds instruction – Data registers: hold data – Address registers: hold addresses – Condition code register (CCR): flag bits • Updated to reflect operation result • Used to change flow of program – MAR, MBR, PSW, etc. (later) Register Transfer Language (RTL) • A simple language to describe the operations carried out by CPU. – We will use it to describe the function of instruction • [4] or [M(4)] means the content of memory location 4. • [M(6)] = 4 means the content of memory location 6 is the value 4. • [M(6)] <- 4 means assigning the number 4 to the memory location 6. Assembly Language • A form of the native language of a computer in which - machine code instructions are represented by mnemonics e.g., MOVE, ADD, SUB - addresses and constants are usually written in symbolic form e.g., NEXT, BACK_SP MC68000 Assembler • Valid symbolic name contains up to 8 letters or number. • Name starts with letter. • TempVa123, TempVa127 are recognized as TempVa12 by assembler Files Created by Assembler Source File Editor Assembler Listing File Binary File • Binary file or object file is recognized by machine. • Listing file contains the information of program assembling. • If a program written in more than one files, LINKER is needed to link the object files together before execution. Assembly Language Program • Two types of statements 1. Executable instructions 2. Assembler directives • Executable instruction - translated into machine code by assembler - tells the machine what to do at execution Assembly Language Program • Assembler directives - tell assembler what to do when program assembled - are not translated into machine code, they are non-executable. E.g., EQU, DC, DS, ORG, END Assembly Language Program • Program written in 4 columns: [label] instruction [operand] [comment] - Label: begins in column 1 programmer-defined reference to a line • $50 is 50 , %10 is 00000010, 50 is 50 . 16 10 • Longword 32-bit, Word 16-bit, Byte 8-bit. • A line begins with an ‘*’ in its first column is a comment -> ignored by the assembler BACK_SP DELETE CAR_RET EQU $08 ASCII code for backspace EQU $01 ASCII code for delete EQU $0D ASCII code for carriage return ORG $00400 Data origin LINE DS.B 64 Reserve 64 bytes for line buffer * Input a character and store it in a buffer ORG $001000 Program origin LEA LINE,A2 NEXT BSR GET_DATA CMP.B #BACK_SP,D1 BEQ MOVE_LEFT CMP.B #DELETE,D1 BEQ CANCELL CMP.B #CAR_RET,D1 BEQ EXIT MOVE.B D1,(A2)+ BRA NEXT MOVE_LEFT LEA -1(A2),A2 BRA NEXT CANCEL LEA LINE,A2 BRA NEXT GET_DATA MOVE #5,D1 TRAP #15 RTS EXIT STOP #$2700 END Sample Program How Assembler Works • Two-pass assembler - Source program scanned twice before producing the object code • LC: Assembler’s simulation of PC –When an assembly program is assembled, LC is used to keep track of the “memory location” at which an instruction would be should that instruction be executed. –So that machine code can be generated correctly from assembly code. How Assembler Works • Pass I: - Search source program for symbol definitions and enter these into symbol table • Pass II: - Use symbol table constructed in Pass I and op-code table to generate machine code equivalent to source Pass I (Simplified) START [LC] <- 0 Fetch Next Instruction Y END? N Y Label? N PASS II Add Label to Symbol Table w/ [LC] as its value Increment [LC] Accordingly Pass II (Simplified) START [LC] <- 0 Fetch Next Instruction END? Y STOP N Op-code Lookup Symbol Table Lookup Generate Machine Code Increment [LC] Accordingly 1 2 3 4 5 6 7 8 9 10 11 12 13 LC Machine Code 00001000 00001000 00001004 00001008 0000100A 0000100E 00001012 00001016 0000101A 0000101C Example 00000019 A: 00000004 00001008 2411 139A2000 06450019 67000008 90B81004 60EC 4E722700 00001000 M: N: EXIT: DONE: Assembly Code OPT EQU ORG DS.W DC.L MOVE.L MOVE.B ADDI.W BEQ SUB.L BRA STOP END CRE 25 $1000 2 EXIT (A1),D2 (A2)+,(A1,D2) #A,D5 DONE N,D0 EXIT #$2700 $1000 Lines: 13, Errors: 0, Warnings: 0. SYMBOL TABLE INFORMATION What we care in the symbol table Symbol-name A DONE EXIT M N Type EQU LABEL LABEL LABEL LABEL Value 00000019 0000101C 00001008 00001000 00001004 Decl 2 12 6 4 5 Cross reference line numbers 8. 9. 5, 11. * * NOT USED * * 10. EQU (EQUate) • Link a name to a value Length EQU Width EQU Area 30 25 EQU Length*Width • The code doesn’t need modified, even if the length and the width changed, • It tells reader how the Area is computed. ORG (ORiGin) • Sets up value of location counter (LC) • LC: Assembler’s simulation of PC DC (Define a Constant) • • Define and initialize a variable Qualified by .B, .W, or .L (byte, word, or longword) Memory Map : FIRST ORG $00001000 DC.B 10,66 DC.L $0A1234 ... 001000 0A 42 001001 001002 00 0A 001003 001004 12 34 001005 : : • Loads constant into the memory in hexadecimal • A 16-bit word should not be stored across the even boundary, e.g. at 1001 Demonstration * The memory is addressable by byte, but * the data is fetched in word, 16 bits. FIRST SECOND DATA ORG DC.B DC.B DC.L STOP END $1000 10,66 20 $ABCD #$2700 $1000 >md 1000 001000 0A 42 14 00 00 00 AB CD 4E 72 27 00 00 00 00 00. DS (Define Storage) • Reserves (allocates) storage location in memory • Similar to DC, but no values stored • DC: set up values in memory locations • DS: reserve memory space for variables • Example on page 68 Example 01000 011FF 01200 01201 01202 01203 01204 01205 01206 01207 01208 01209 0120A 0120B 0120C 18000 18001 TABLE POINTER_1 VECTOR_1 00 00 FF FF INIT 41 F9 ENTRY TABLE POINTER_1 VECTOR_1 INIT … ENTRY ORG $001000 DS.W 256 DS.L 1 DS.L 1 DC.W 0,$FFFF ORG $018000 LEA ACIAC,A0 MOVE.B #SETUP1,(A0) END • End of program More on Instruction Format • An instruction is an op-code followed by address(es) – Address means any address in system • General Instruction Formats – Four-address format [Op-code | Src1 | Src2 | Dst | NextInstr] x=y+z Src1: y, Src2: z, Dst: x More on Instruction Format • General Instruction Formats (Cont’d) – Three-address format [Op-code | Src1 | Src2 | Dst] Use program counter for next instruction – Two-address format [Op-code | Src1 | Src2 (and Dst)] x=y+x Src1: y, Src2 and Dst: x 68000 uses two-address format More on Instruction Format • General Instruction Formats (Cont’d) – One-address format [Op-code | Src1] Accumulator (AC) is Src2 and DST [AC] = [AC] + y – Zero-address format [Op-code] Use stack Post-order expression Example •I=J+K – Four-address format ADD J, K, I, NEXT ;I=J+K ; next instruction in location NEXT – Three-address format ADD J, K, I ;I=J+K ; next instruction in PC – Two-address format MOVE J, I ADD K, I ;I=J ;I=K+I How about: ADD K, J MOVE J, I Example •I=J+K – One-address format LOAD J ADD K STORE I ; AC = J ; AC = J + K ; I = AC – Zero-address format, postfix: I = JK+ LOAD J LOAD K ADD STORE I ; push J onto stack ; push K onto stack ; pop and add J and K, result on top ; pop stack top to I More Examples • • • • • • • I I I I I I I = = = = = = = J+K+L J+K*L (J + K) * L (J + K) * L – M J+K*L–M J + K * (L – M) (J + K) * (L – M)