본문 바로가기

local variable array

(3)
[Java] Java 소스코드 Compile, Hex Dump, Disassemble 컴파일 (Compile)javac [source_code_name].java 명령어를 실행 시켜, 아래의 자바 소스 코드를 바이트 코드로 컴파일하였다..public class ByteCode { public static void main(String[] args) { int x = 5; int y = 32768; int z = x + y; } } 컴파일한 클래스 파일(.class)을 vim 텍스트 편집기로 열어보면, 다음과 같이 사람이 읽기 어려운 바이너리 형태로 저장되어있다.Êþº¾^@^@^@B^@^\^@^B^@^C^G^@^D^L^@^E^@^F^A^@^Pjava/lang/Object^A^@^F^A^@^C()V^C^@^@^@ ^@ ..
[Java] 정수 고정값의 컴파일 최적화 정수(문자도 정수)의 상수(constant)와 리터럴(literal)은 상수 풀(constant pool)에 저장 되지 않고, 명령어의 수행할 연산인 opcode에 포함될수있다. 자바 컴파일러(javac)가 정수의 상수나 리터럴의 크기와 사용 빈도수를 고려하여, 값의 크기가 작고 사용 빈도수가 낮은 바이트 코드에서 명령어의 opcode에 직접 정의된다. 이로써 컴파일러의 최적화에 의하여 메모리에 접근하여 값을 가져오지 않아 보다 빠른 연산 처리를 수행할 수 있다. 다음은 어떻게 컴파일러가 최적화 했는지 확인해보기위해서 소스코드를 작성하고, 바이트 코드로 컴파일하여 확인해볼려고 한다.public class ByteCode { public static void main(String[] args) {..
[Java] 정수형과 지역 변수 배열의 저장 방식 정수형 (Integer Type)의 종류정수형(Integer Type)에는 int, byte, short, long 타입이 있다. 각 타입의 특징은 다음과 같다.int일반적으로 정수형에서는 4byte의 int를 사용한다. byte, short 보다는 int가 연산에 최적화 되어있다. 그 이유는 아래에 설명하였다. bytebyte는 주로 이진 데이터를 다룰때 사용한다. 예전에는 CPU 32bit 아키턱처가 대다수 존재할때는 1byte는 4비트였다. 현재는 1byte는 8비트이다. shortC언어와 호환을 위해 추가되었고, 4byte인 int 기준으로 짧아서 short는 2byte이다. longlong은 8byte로, 4byte인 int 기준 보다 길어 long이다.byte, short 보단 intbyte..