어셈블리어3 [정보 보안] 6. 어셈블리 언어 Part.3 스택과 함수 스택 - 후입선출의 특성을 가진 자료구조 - 나중에 들어온 데이터가 먼저 나감 (LIFO, Last - in - First - out) - push 연산으로 데이터를 스택에 넣음 - pop 연산으로 데이터를 꺼냄 - 주소상으로 윗부분이 낮은 주소가 됨 push [피연산자 1] - 스택의 최상단에 피연산자 1 삽입 - 스택포인터 감소함 (32bit -> 4, 64bit -> 8) - 피연산자 1에 레지스터, 메모리, 상수 모두 가능 pop [피연산자 1] - 스택의 최상단에 피연산자 1 로 로드 (가져옴) - 스택포인터 증가함 (32bit -> 4, 64bit -> 8) - 피연산자 1에 레지스터, 메모리 가능 call [피연산자 1] - 함수호출 (피연산자 1로 이동) - jmp는 단순이동,.. 2023. 9. 19. [정보 보안] 6. 어셈블리 언어 Part.2 산술연산 음수표현하기 - 최상위 비트는 부호 비트 - 2의 보수는 모든 비트를 반전시키고 1을 더하면 됨 Ex) -1을 표현하기 1. 1의 표현 0 0 0 0 0 0 0 1 2. 1의 모든 비트 뒤집기 1 1 1 1 1 1 1 0 3. 1 더하기 1 1 1 1 1 1 1 1 산술연산 add [피연산자 1] [피연산자 2] - 피연산자 1과 피연산자 2를 더해서 피연산자 1에 저장한다 - 둘다 메모리 X - 피연산자 1은 상수 X sub [피연산자 1] [피연산자 2] - 피연산자 1에서 피연산자 2를 빼서 피연산자 1에 저장한다 - 둘다 메모리 X - 피연산자 1은 상수 X mul [피연산자 1] - 부호없는 정수 (unsigned)의 곱셈을 수행함 ex) mul bl ; ax=al*bl mul bx ;.. 2023. 9. 19. [정보 보안] 6. 어셈블리 언어 Part.1 어셈블리 개요 CPU 아키텍쳐 - 내부 동작 방식 & 구성 요소 정의의 설계 개념 - 아키텍쳐에 따라서 명령어, 레지스터 구조 등이 다름 ex) x86, arm 등 x86 - 원래 32 bit 아키텍쳐이다 - 64 bit 버전은 x64 (amd64, x86_64) - Window, Linux, Mac OS 등에서 사용 arm - 원래 32 bit - 64 bit 버전은 arm64 - 모바일 기기 및 임베디드 시스템에서 사용 어셈블리어: 기계어와 일대일 대응 (저급 언어) 기계어: 0과 1로 이루어진 컴퓨터가 이해하는 언어 (2진수, 16진수 변환 됨) 저급언어: 컴퓨터가 이해하는 언어 (어셈블리어, 기계어) 고급언어: 사람이 이해하는 언어 (C, Java, Python 등) 고급언어 ---- (컴파일러).. 2023. 9. 19. 이전 1 다음