1 / 11

Computer Architecture

Computer Architecture. Lecture 3 C and Assembly. Intro to Assembly Language MIPS and Intel. Variables and Constants int count = 10 , I, j, k; count .word 10 i .word j .word. Count DD 10 i DD ? j DD ?. Byte size variables. char sum = 1, total= 5; char uni[10] =“university”;.

zytka
Download Presentation

Computer Architecture

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Computer Architecture Lecture 3 C and Assembly

  2. Intro to Assembly LanguageMIPS and Intel • Variables and Constants int count = 10, I, j, k; count .word 10 i .word j .word Count DD 10 i DD ? j DD ?

  3. Byte size variables char sum = 1, total= 5; char uni[10] =“university”; sum .byte 1 total .byte 5 uni .byte “u”,”n”, “i” etc; sum db 1 total db 5 uni db “u”,”n”, “i” etc;

  4. Strings string str (“hello world”); str .asciiz “hello world” str db “hello world”

  5. Arrays int age[100]; age .word 0:100 ; 100 words initialized to zero age dw 100 dup(0); 100 words initialized to zero

  6. Assignment count = count +1; .data #Data Part count .word 10 //MIPS Assembly .text # Code part main: la R1, count # (load address works in spim) #R1 has address of count lw R2, 0(R1) # R2 has the value of count addi R2, R2, 1 # Increment sw R2, 0(R1) # Save count, if need be

  7. Another Example i = age[20] +age[0] + count; .data age .word 0:100 ; 100 words initialized to zero .text main: la R3, age #R3 has base address of age; lw R4, 80[R3] #20 * 4 = 80, R4 = age[20] lw R5, 0(R3) #R5 = age[0] add R4, R4, R5 # add R4, R4, R2 #R2 had value of count above

  8. Control (WHILE) count = 0; while (count < 21) { age[count] = age[count+1]; count = count+1; ;count need not assigned a memory location } la R6, age ;R6 = address of age[0] addi R2, R0, 0 ; R2 = count = 0 lable1: mul R4, R2, 4 ; R4 has address of countth element add R5, R6, R4 :R4= count *4 lw R7, 4(R5) ;R7 = age[count+1] sw R7, 0(R5) ; age[count] = R7 addi R2, R2, 1 ; Count = count +1; slti R8, R2, 21 ; R8 = 1 if count<21 bnez R8, label1

  9. For Statement Total = 0; For (i= 0; i<100; i ++) { total = age[i] + total;} la R1, age #R1 has address of count la R22, Total lw R2, 0(R1) # R2 has the value of count addi R5, R0, 0 # i = 0 ; R5 is i addi R15, R0, 0 # R15 is running sum addi R10, R0, 100 # R10 = 100 Xy: slt R11,R5,R10 # check R5 is R5 < R10 (R10 is count) be R11, R0, lable # loop until mul R6, R5, 4 # R6 has address of ith element of age add R6, R6, R1 # R4 = address of age lw R20, 0(R6) #R20 = age[i] add R15, R15, R20 # total = total + age[i] sw R15, 0(R22) # R22 is address of total addi R5,R5,1 # i = i+1; b Xy: # Unconditional branch lable:

  10. IF … then if (count == max) { I = 5;} else { I = 20;} Instructions after if #assume R4 has the value of count, R7 has value of MAX and I is R5 bne R4, R7, else addi R5, R0, 5 b exit else: addi R5, R0, 20 exit: Instructions after if

  11. Classifying Instruction Set Architectures • Stack • Register- Register • Register – Memory • Accumulator • Memory – Memory

More Related