MARS 소개및실행 어셈블리프로그램실행예 순천향대학교컴퓨터공학과이상정 1 MARS 소개및실행 순천향대학교컴퓨터공학과 2
MARS 소개 MARS MIPS Assembler and Runtime Simulator MIPS 어셈블리언어를위한소프트웨어시뮬레이터 미주리대학 (Missouri State Univ.) 의 Ken Vollmar 등이자바로개발한교육용시뮬레이터 http://courses.missouristate.edu/kenvollmar/mars edu/kenvollmar/mars 주요특징 GUI 기반통합개발환경 (IDE) 스프레드시트모양의레지스터, 메모리값표시및수정 다양한속도의단일스텝실행 (single-step execution) MARS 실행데이터에연동한디바이스시뮬레이션툴제공 MIPS X-Ray, 명령어통계, MIPS 데이터패스, 캐시, BHT 등 순천향대학교컴퓨터공학과 3 MARS 다운로드및실행 다운로드 http://courses.missouristate.edu/kenvollmar/mars/download.htm 에서다운로드 MARS v4.5 (2015년 8월기준 ) 자바아카이브파일, Mars4_5.jar 실행 윈도우 cmd 창의다운로드된폴더에서다음명령실행 java jar Mars4_5.jar 순천향대학교컴퓨터공학과 4
MARS 통합개발환경 (1) 3 1 2 4 1. Edit display is indicated by highlighted tab. 2, 3. Typical edit and execute operations are available through icons and menus, dimmed-out when unavailable or not applicable. 4. WYSIWYG editor for MIPS assembly language code. 순천향대학교컴퓨터공학과 5 MARS 통합개발환경 (2) 1 9 2 6 8 3 4 5 7 1. Execute display is indicated by highlighted tab. 2. Assembly code is displayed with its address, machine code, assembly code, and the corresponding line from the source code file. (Source code and assembly code will differ when pseudoinstructions have been used.) 3. The values stored in Memory are directly editable (similar to a spreadsheet). 4. The window onto the Memory display is controlled in several ways: previous/next arrows and a menu of common locations (e.g., top of stack). 5. The numeric base used for the display of data values and addresses (memory and registers) is selectable between decimal and hexadecimal. 6. Addresses of labels l and data declarations are available. Typically, these are used only when single-stepping stepping to verify that an address is as expected. 7. The values stored in Registers are directly editable (similar to a spreadsheet). 8. Breakpoints are set by a checkbox for each assembly instruction. These checkboxes are always displayed and available. 9. Selectable speed of execution allows the user to watch the action instead of the assembly program finishing directly. 순천향대학교컴퓨터공학과 6
어셈블리프로그램실행예 순천향대학교컴퓨터공학과 7 예제 1: dest = src1 + src2 # add.asm.data src1:.word 10 src2:.word 20 dest:.word 0 # 데이터섹션.text # 텍스트섹션.globl main main: lw $t0, src1 lw $t1, src2 add $t2, $t0, $t1 sw $t2, dest 순천향대학교컴퓨터공학과 8
어셈블러지시어 어셈블러지시어 (assembler directive) 는기계어로변환되지않고어셈블러에게정보를전달하는지시어 "." 으로시작 주요지시어 섹션 ( 세그먼트 ) 시작 :.text.data 전역심볼선언 :.globl 데이터표시.byte.half.word.ascii.asciiz.float.double 워드경계로정렬 :.align.byte 10.align <- 3바이트삽입, 0, 0, 0. word 123456 순천향대학교컴퓨터공학과 9 프로그램과데이터의메모리할당 텍스트세그먼트 (text segment) 프로그램코드 정적데이터세그먼트 (static data segment) 상수, 정적변수, 배열과문자열 동적데이터세그먼트 (dynamic data segment) 힙 (heap) 이라고도함 동적할당된데이터 Ex) malloc in C, new in Java 스택 (stack) 지역변수 순천향대학교컴퓨터공학과 10
MARS 메모리할당 순천향대학교컴퓨터공학과 11 프로그램작성및실행 MARS 실행 c: > java jar Mars4_5.jar add.asm 프로그램작성및실행 파일생성: File -> New 메뉴또는아이콘 프로그램작성 : Edit 탭, 작성 파일저장 : File -> Save 메뉴또는아이콘 어셈블 : Run -> Assemble 메뉴또는아이콘 Execute 탭 텍스트세그먼트, 데이터세그먼트, 레지스터표시 실행 : Run -> Go 메뉴또는 아이콘 Run -> Step 메뉴또는 아이콘 순천향대학교컴퓨터공학과 12
순천향대학교컴퓨터공학과 13 예제 1: 어셈블 순천향대학교컴퓨터공학과 14
예제 1: 라벨심볼보기설정 순천향대학교컴퓨터공학과 15 예제 1: 실행전 순천향대학교컴퓨터공학과 16
예제 1: 실행중단점 (breakpoint) 설정후실행 (Go) 순천향대학교컴퓨터공학과 17 예제 1: 한명령실행 (Step), add 순천향대학교컴퓨터공학과 18
예제 1: 두명령실행 (Step, Step ), sw 순천향대학교컴퓨터공학과 19 MIPS 시스템호출 순천향대학교컴퓨터공학과 20
시스템호출 (system call) syscall 명령으로운영체제의서비스를호출 시스템호출처리방법 시스템호출코드를 $v0 레지스터에저장 전달할인수를 $a0 $a3 레지스터에저장 시스템호출의결과는 $v0 레지스터에저장 예 화면에 Hello World! 출력 msg:.asciiz "Hello World!" li $v0, 4 # print string 서비스호출 la $a0, msg syscall 순천향대학교컴퓨터공학과 21 MIPS 시스템호출 Help -> MIPS-> Syscalls 메뉴 순천향대학교컴퓨터공학과 22
예제 2: 합의결과출력 (1) # addprint.asm.data # 데이터섹션 src1:.word 10 src2:.word 20 dest:.word 0 msg:.asciiz "sum = ".text # 텍스트섹션.globl main main: lw $t0, src1 lw $t1, src2 add $t2, $t0, $t1 sw $t2, dest li $v0, 4 # print string 서비스호출 la $a0, msg syscall 순천향대학교컴퓨터공학과 23 예제 2: 합의결과출력 (2) li $v0, 1 # print_int 서비스콜 move $a0, $t2 syscall li $v0, 10 # exit 서비스콜 syscall 순천향대학교컴퓨터공학과 24
예제 2: 실행 어셈블 Run -> Assemble 메뉴또는아이콘 Execute 탭 텍스트세그먼트, 데이터세그먼트, 레지스터표시 실행 Run -> Go 메뉴또는아이콘 실행결과 Mars Message 윈도우에출력 프로그램실행자동종료 순천향대학교컴퓨터공학과 25 예제 2: 실행결과 순천향대학교컴퓨터공학과 26