전체 글109 [Reversing] Stack 구조와 Stack Frame 스택(Stack)이란? - 위 사진에서 가장 아래 쪽에 있는 영역이 스택 영역이다. - 한 쪽 끝에서만 자료를 넣고 뺄 수 있는 LIFO(Last In First Out, 후입선출) 형식의 자료 구조이다. - 프로그램이 자동으로 사용하는 임시 메모리 영역으로 함수의 호출과 관계되는 지역변수, 매개변수, 리턴 값 등의 임시 데이터를 저장하는데 사용된다. 1) 코드(텍스트) 영역 - 실행할 프로그램의 소스 코드가 저장되어 있는 영역 - 실행 파일을 구성하는 명령어(함수, 제어문, 상수 등)들이 저장된다 - 저장된 명령어를 CPU에서 하나씩 가져가 처리한다 2) 데이터 영역 - 전역변수와 static 변수, 배열, 구조체 등이 할당되는 영역 - 프로그램 시작과 동시에 할당되고 프로그램이 종료되어야 메모리가 소.. 2020. 9. 8. [Reversing] 32bit 레지스터의 종류와 특징 레지스터란? - CPU의 요청을 처리하는 데 필요한 데이터를 일시적으로 저장하는 기억장치이고 처리 결과 역시 이 곳에 저장된다. - 공간은 작지만 CPU와 직접 연결되어 있어 연산 속도가 메모리보다 훨씬 빠르다. - 종류 > 범용 레지스터 > 인덱스 레지스터 > 포인터 레지스터 > 세그먼트 레지스터 > 플래그 레지스터 1) 범용 레지스터 - 범용적으로 막 쓰는 레지스터로 어셈블리 명령어에서 특정 레지스터를 조작하는데 사용하기도 한다. - 32bit 크기의 레지스터 8개로 구성되어 상수/주소를 저장할 때 쓰인다. - 인덱스 레지스터와 포인터 레지스터는 범용 레지스터에 포함된다. (1) EAX 레지스터 (Extended Accumulator Register) - 누산기라고 불리며 데이터 전송(입출력) 및 연.. 2020. 9. 7. [백준 BOJ] 2839번 설탕 배달 문제 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다. 상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다. 상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오. 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그.. 2020. 9. 6. [백준 BOJ] 1110번 더하기 사이클 문제 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자. 26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 = 12이다. 새로운 수는 42이다. 4+2 = 6이다. 새로운 수는 26이다. 위의 예는 4번만에 원래 수로 돌아올 수 있다. 따라서 26의 사이클의 길이는 4이다. N이 주어졌을 때, N의 사이클의 길이를 구하는 프로그램을 작성하시오. 1110번:.. 2020. 9. 5. [Go언어] 암호화, 프로토콜 사용 교재 : 가장 빨리 만나는 Go언어 5주차 : UNIT 52 ~ 60 [UNIT 52] 압축 사용하기 - 압축 알고리즘은 파일, 네트워크 패킷을 압축해 용량을 줄이고 압축된 파일, 네트워크 패킷을 해제할 때 사용 - compress/gzip 패키지에서 제공하는 압축 함수 > func NewReader(r io.Reader) (*Reader, error) : io.Reader 인터페이스로 io.Reader 인터페이스를 따르는 압축 해제 인스턴스 생성 > func NewWriter(w io.Writer) *Writer : io.Writer 인터페이스로 io.Writer 인터페이스를 따르는 압축 인스턴스 생성 - io/ioutil 패키지에서 제공하는 데이터 읽기 함수 > func ReadAll(r io... 2020. 8. 17. [Go언어] 동기화 객체, 파일처리, JSON 사용 교재 : 가장 빨리 만나는 Go언어 3주차 : UNIT 35 ~ 51 [UNIT 35] 동기화 객체 사용하기 - 동기화 객체 > Mutex : 상호 배제라고도 하며 여러 스레드에서 공유되는 데이터를 보호할 때 사용 > RWMutex : 읽기/쓰기 뮤텍스., 읽기와 쓰기 동작을 나누어 잠금을 걸 수 있다 > Cond : 조건 변수, 대기하고 있는 하나의 객체를 깨울 수 있고 여러 개를 동시에 깨울 수 있다 > Pool : 멀티 스레드에서 사용할 수 있는 객체, 자주 사용하는 객체를 품에 보관했다 다시 사용한다 > WaitGroup : 고루틴이 모두 끝날 때까지 기다리는 기능 > Atomic : 원자적 연산, 더 이상 쪼갤 수 없는 연산이라는 뜻으로 멀티 스레드, 멀티 코어 환경에서 안전하게 값을 연산.. 2020. 8. 8. 이전 1 ··· 12 13 14 15 16 17 18 19 다음