Java Virtual Machine Chapter 5. 제어문 Ps lab 김윤경.

Slides:



Advertisements
Similar presentations
멘토링 2 주차 장 프로그래밍을 위한 자바의 자료형  값이 변하지 않는 상수  메모리 기억공간인 변수.
Advertisements

2013학년도 3-1 정보컴퓨터공학부 컴퓨터 소프트웨어 설계 및 실험
명품 JAVA Programming 제 3 장 반복문, 배열, 예외처리.
제6장 조건문.
어서와 Java는 처음이지! 제3장선택과 반복.
Vision System Lab, Sang-Hun Han
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
10. 예외 처리.
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
C 언어 기초 2 위덕대학교 에너지전기공학부 이 수 형 2009년 2학기.
C++ Espresso 제1장 기초 사항.
IntArray[0] int length 5 intArray 객체 제 3 장 반복문, 배열, 예외처리.
어서와 Java는 처음이지! 제1장 기초 사항.
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
Programming for the java Virtual machine
알기 쉽게 해설한 Java 8th edition
제 4장 문 장 배정문 혼합문 제어문 표준 입출력.
제 7 장 문장 구조화 제어문 지정문 조건문 반복문 GOTO 문 비결정적문.
어서와 Java는 처음이지! 제1장 기초 사항 IT응용시스템공학과 김형진 교수.
제 12장 예외 처리 12.1 설계 쟁점 12.2 PL/I의 ON-조건 12.3 Ada의 예외 처리
제6장 제어(Control) 6.1 구조적 프로그래밍(Structured Programming)
시스템 생명 주기(System Life Cycle)(1/2)
Chapter 11 – 예외 처리 Outline 11.1 설계 쟁점 11.2 Pl/I의 예외 처리 11.3 Ada의 예외 처리
10장 예외 처리 프로그래밍 언어론 10.6 Pascal과 C의 에러 처리 10.1 설계 주제 10.2 PL/I의 예외 처리
2주 실습강의 Java의 기본문법(1) 인공지능연구실.
제7장 제어구조 I – 식과 문장.
[ 단원 08 ] 예외처리와 스레드.
2강. JAVA 프로그래밍이란?-II & 변수 JAVA 프로그램 환경설정과 실행 방법 변수란?
명품 JAVA Essential.
제3장 추가 실습 3장 관련 C 언어 프로그래밍 실습.
Power Java 제4장 자바 프로그래밍 기초.
시스템 생명 주기(System Life Cycle)(1/2)
8장 자바 입출력.
JAVA 프로그래밍 6장 객체지향프로그래밍의 핵심.
자바 가상 기계 (Java Virtual Machine)
자바 가상 기계 (Java Virtual Machine)
Choi, Namseok Java 기초 (Java의 제어문과 배열) Choi, Namseok
Power Java 제15장 예외 처리 (Exception Handling).
Chapter 4. 클래스와 객체 PS Lab. 이지연.
명품 Java Programming.
제 11 장 java.lang 패키지 제 12 장 문자열 제 13 장 유틸리티 제 14 장 입출력 제 15 장 네트워킹
Chap07 예외 처리 7.1 예외의 개요 7.2 예외 관련 클래스 7.3 예외 처리.
2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램
주소록 프로그램.
자바 5.0 프로그래밍.
제1장 서론.
정보컴퓨터공학부 컴퓨터 소프트웨어 설계 및 실험
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
가상함수와 추상 클래스.
제 2장 어휘구조와 자료형 토 큰 리 터 럴 주 석 자 료 형 배 열 형.
Java의 정석 제 2 장 변수(Variable) Java 정석 남궁성 강의
Chap. 14 성능향상시키기 PS Lab. 이지연.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
Java Chapter 4 ~ 주차.
컴퓨터공학실습(I) 3주 인공지능연구실.
자바 가상 머신 프로그래밍 Chap 10. 자바 컴파일링의 안쪽 ② Pslab 오민경.
자바 5.0 프로그래밍.
JA V A W. 07 Sb.L.
Java 3장. 자바의 기본 구조 I : 변수, 자료형, 연산자 public class SumTest {
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
자바 5.0 프로그래밍.
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express Slide 1 (of 28)
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 08. 조건에 따른 흐름의 분기.
11장 다형성과 추상 클래스, 인터페이스 Section 1 객체의 형 변환 Section 2 연산자 Section 3 다형성
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 02. C언어 기반의 C++ 2.
Choi Younghwan CSE HUFS
자바 가상 머신 프로그래밍 Chapter 3. 메소드 작성하기 Pslab 오민경.
PHP 기초문법 PHP를 공부하는데 있어 가장 기초가 되는 PHP기초문법에 대해서 배워 봅니다.
Presentation transcript:

Java Virtual Machine Chapter 5. 제어문 Ps lab 김윤경

5.1 정수의 비교 니모닉 인자 스택 효과 goto label label로 이동 if_icmpeq int1 int2 Int1==int2이면 label로 이동 if_icmpne Int1!=int2이면 label로 이동 if_icmplt Int1<int2이면 label로 이동 if_icmpge Int1>=int2이면 label로 이동 if_icmpgt Int1>int2이면 label로 이동 if_icmple Int1<=int2이면 label로 이동

Ex) Loop : iload_0 bipush 20 if_icmpeq break iinc 0 1 goto loop break:

Ex) bipush 42 bipush 26 isub ifeq same_as_zero 니모닉 인자 스택 효과 ifeq label int1 Int1==0이면 label로 이동 Ifne Int1!=0이면 label로 이동 Iflt Int1<0이면 label로 이동 Ifge Int1>=0이면 label로 이동 Ifgt Int1>0이면 label로 이동 ifle Int1<=0이면 label로 이동 Ex) bipush 42 bipush 26 isub ifeq same_as_zero

*주어진 레이블로 이동하는 것은 하나의 메소드안에서만 가능하고, 따라서 하나의 클래스 안에서 같은 이름의 레이블을 여러 번 사용하는 것이 가능 Ex) .method doSomething() V Loop: goto Loop .end method .method bigBranch()V goto Loop ;에러발생 return .method someOtherMethod ()V .end mehtod

5.2 참조자간의 비교 니모닉 인자 스택 효과 if_acmpeq label ref1 ref2 ref1 참조자가 ref2참조자와 같으면 label로 이동 if_acmpne ref1 참조자가 ref2참조자와 같지않으면 label로 이동 Ifnonnull ref1 ref1 참조자가 null이 아니면 label로 이동 ifnull ref1 참조자가 null이면 label로 이동

Ex) aload_0 if_acmpeq success getstatic Cookie/chocolateChip LCookie; ifnull nocookie ;

5.3 다른 비교 명령어들 니모닉 스택 효과 dcmpg double1 double 2 double1==double2=>0 둘 중하나가 NaN=>1 dcmpl 둘 중하나가 NaN=>-1 fcmpg float1 float2 float1==float2=>0 float1<float2=>-1 float1>float2=>1 두 값이 모두 NaN=>1 fcmpl 두 값이 모두 NaN=>-1 lcmp long1 long2 long1==long2=>0 long1<long2=>-1 long1>long2=>1

5.4 switch명령어 lookupswitch tableswitch -1 -1:less less 0:equal equal 1:greater greater default: fail default: fail * 스택의 최상단에 있는 값이 주어진 값과 일치하지 않을 경우, default뒤에 나오는 레이블로 분기하기 위해 default값은 맨 마지막에 항상 적어 주어야한다.

5.5 서브루틴 Jsr : 분기가 시작된 위치(return address)가 스택의 최상단에 위치 메소드의 여러 부분에서 쓰이는 명령어들을 한 곳에 모아 서브 루틴을 만들 때 사용 – 인자전달은 할 수 없지만, 새로운 스택프 레임을 만들지 않음 state1: jsr get_next_character lookupswitch 65:state1 66:state2 default:state3 get_next_character: astore_3 ret_3

5.6 예외(Exception) 프로그램수행도중 예외발생->athrow명령어는 java/lang/Throwable의 서브클래스의 객체를 피연산자로 하여 예외를 던짐 ->active exception handler active exception handler가 존재하지 않는 경우 : JVM은 메소드를 종료하고 메소드를 호출한 부분에서 예외 핸들러를 찾음.

.class BedtimeRoutine .method goToBed()V .catch SnackException from begin to end using handler invokestatic BedtimeRoutine/putOnPajamas()V begin: invokestatic BedtimeRoutine/haveMidnightSnack()V end: Invokestatic BedtimeRoutine/brushTeeth()V return handler: .end method .method static haveMidnightSnack()V getstatic Refrigerator/midlkQuantity I Ifgt drink_milk new SnackException dup Ldc “Out of milk” Invokespecial SnackException/<init> (Ljava/lang/String)V Athrow ………

5.6.1 여러 개의 예외핸들러 Throwable Error Exception 예외클래스

invokestatic BedtimeRoutine/putonPajamas()V begin2: .catch SnackException from begin2 to end2 using handler2 .catch java/lang/Expcetion from begin1 to end1 using handler1 begin1: invokestatic BedtimeRoutine/putonPajamas()V begin2: invokestatic BedtimeRoutine/haveMidnightSnack()V end2: invokestatic BedtimeRoutine/brushTeeth()V end1: return handler2: handler1:

5.6.2 .trows지시자 .thorws - 메소드에서 어떠한 예외가 던져질 수 있는지를 경고 Ex) .method lateNightSnack()V .throws OutofMilkException .throws OutofCookiesException

5.7 instanceof checkcast instanceof 객체를 주어진 타입으로 바꿀수 없는 경우 ClassCastException을 발생 객체가 주어진 타입과 같을 경우 1, 다른 경우 0을 푸시 객체를 주어진 타입으로 변경 객체가 주어진 타입과 같은지 비교 ->피연산자를 스택으로부터 제거

invokevirtual Movies/getStooge()Lstooge; dup instanceof Curly ifeq notCurly checkcast Curly return notCurly: