어셈블리 - 2장

어셈블리 - 2장

Info iconThis preview shows pages 1–14. Sign up to view the full content.

View Full Document Right Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: SPARC Architecture Instruction Set Architecture Organization Hardware 개요 • Load/Store architecture • 32 개 registers / any one time register size: 32 bits • byte addressable ( memory 접근 ) • 2 30 instructions or integers Load/store architecture ALU REG. FILE PC IR MEMORY MAR MDR CPU CU 레지스터 • 레지스터 분류 : 4 종류 ( 8 개 / 종류 ) • g ( global ) 레지스터 (%r0 - %r7) – % g0 : 붙박이 0, 기록하면 결과 버림 – %g1 - %g7: 전역 데이터 • o ( out ) 레지스터 (%r8 - %r15) – %o0 - %o5: 인자 전달 , 지역 데이터 – % o6 : %sp (stack pointer) – % o7 : return address 저장 레지스터 • l ( local ) 레지스터 (%r16 - %r23) – %l0 - %l7: 지역 변수 • i ( in ) 레지스터 (%r24 - %r31) – %i0 - %i5: 인자 입수 – % i6 : %fp (frame pointer) – % i7 : return address 보관 SPARC registers 레지스터 이름 32 비트 %g0 %g1 : %g7 %l0 %l1 : %l7 레지스터 이름 32 비트 %i0 : %i6(=% fp ) 메모리 주소 %i7 return address %o0 : %o6(=% sp ) 메모리 주소 %o7 return address SPARC 코드의 예 /* y = (x - 1) * ( x - 7) / (x - 11) where x = 9 */ .global main main: save %sp, -96, %sp mov 9, %l0 ! x 초기화 sub %l0, 1, %o0 ! (x - 1) 를 %o0 에 저장 sub %l0, 7, %o1 ! (x - 7) 을 %o1 에 저장 call .mul nop ! 곱셈 결과가 %o0 에 sub %l0, 11, %o1 ! (x - 11) 가 젯수로 %o1 에 저장 call .div nop ! 나눗셈 결과가 %o0 에 mov %o0, %l1 ! 결과를 y 에 저장 mov 1, %g1 ! exit 요청 ta 0 ! 시스템에 trap 어셈블리 프로그래밍 • 줄 단위 구성 : 1 줄에 1 개의 명령어 또는 데이타 정의 • 레이블 : 콜론 ( : ) 으로 끝나는 문자열 • 주석 : C 스타일 (/* … */) 또는 느낌표로 시작 ( 줄 끝까지 ) • 의사 명령어 (pseudo-ops): 마침표로 시작 assembler 에게 정보만 제공 의사명령어의 예 .word: 메모리 할당과 메모리 초기화 .global: 외부로부터 접근 통로 마련 명령어 형식 (1) 1. OP S, A, R ! (R) ← (S) op (A) – S: source register 1 – A: source register 2 또는 immediate value ( 상수 값 ) k – R: destination register – OP: 산술 / 논리 명령 기호 예 : add, sub 상수 k 범위 : -4096 ≤ k < 4096 ( ∵ 13-bit signed number) 예 add %l0, %l1, %l2 add %l0, -5, %l2 ALU REG. FILE PC IR MEMORY MAR MDR CPU %l0 %l1 %l2 CU 명령어 형식 (2) 2 . OP A, R ! (A) (R) – A: source register 또는 immediate value – R: destination register 예 mov %l0, %l1 mov 3, %l1 3 . OP R – R: destination register 또는 주소 값 ( 레이블 ) 예 clr %l0 call .mul 프로그램 예 • < c- 언어 유형의 < 어셈블리프로그램 > 알고리즘 > x = 5 mov 5, %l1 y = 3 mov 3, %l2 w = x + y add %l1, %l2, %l3 z = x - y + w sub %l1, %l2, %l5 add %l5, %l3, %l4 • 가정 : 변수명 레지스터이름 x %l1 y %l2 w %l3 z %l4 산술 명령어 • 덧셈 ( add ) 과 뺄셈 ( sub ) 은 하드웨어 명령 • 곱셈과 나눗셈은...
View Full Document

This note was uploaded on 11/03/2009 for the course CS Assembly taught by Professor Park during the Fall '09 term at 홍익대학교.

Page1 / 78

어셈블리 - 2장

This preview shows document pages 1 - 14. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online