목록분류 전체보기 (427)
안 쓰던 블로그
룩을 이용하여 한 턴만에 체크메이트 하기 과거의 흰색 킹이 있던 자리에 가면 룩은 과거 시간선을 직진으로 뚫으니까 잡을 수 있을 것이다 그런데 이 때 문제는 현재의 흰색 킹이 검은 룩을 위협한다 그래서 아래 시간선의 검은 룩을 같은 위치에 옮겨 준다 흰색 킹이 체크를 피하고자 검은 룩을 잡으면 아래 시간선의 검은 룩에게 체크 당한다 흰색 킹이 검은 룩을 잡지 않으면 과거의 흰색 킹의 체크를 해결할 수 없다 이도저도 안 되기 때문에 체크메이트 끝
gcc -shared -o libmylib.so.1.0.1 sleep.o /usr/bin/ld: sleep.o: relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC sleep.o: error adding symbols: Bad value 리눅스 동적 라이브러리 생성 시 error adding symbols: Bad value 에러 32비트 64비트 호환성 문제로 생기는 에러이다 컴파일 시 -fPIC 옵션을 추가한다 gcc -c sleep.c -fPIC
setting에서 shared folders 허용하고 적용 우분투에서 아래 명령으로 open vm tools 설치 sudo apt-get install open-vm-tools-desktop 재부팅
문제: 1,2,3,4번 입력이 주어질 때 0->1로 바뀌면 해당 번호 출력. 하나도 없으면 0 출력 처음에는 2개씩 묶어서 입력받고 0->1로 바뀌면 해당 번호 아래로 보내고, 아니면 0보내고 아래서는 모두 0이면 0출력, 아니면 번호 출력을 했는데 아래에서 입력을 4번이나 처리하니까 순서가 밀리는 문제가 생김 어떻게 해결하냐면 1번 세그먼트 기준으로, 1. 현재 입력이 0이었으면 다음 입력이 1일 때까지 계속 0보낸 뒤 입력만 받음 2. 그러다가 현재 입력이 1이면 0->1인 경우이므로 1을 보낸 뒤 다음 입력을 받음. 다음 입력이 0이면 (1)로, 아니면 1->1인 경우이므로 0보내고 계속 반복 3. 1번, 2번 세그먼트와 3번 4번 세그먼트를 각각 더함, 그리고 그 둘을 더해서 그냥 출력(0이면 0..
처음에는 위에 사진처럼 sum에다가 3을 더하려고 했는데 무조건 3개씩 보는 게 아니라서 만약 1 1 0 0 0 1 이렇게 들어오면 1 1 0은 출력 0 1 0 0 출력 0 0 0 0 출력 1 0 0 1 출력 0 이렇게 하나씩 띄워야 되니까 너무 복잡해졌음 로직을 잘 보면(1을 그냥 1이상의 수라고 침) 1. 숫자가 들어온다 0? 1? 2. 0이면 +1누적, 다음 숫자를 받고 0? 1?을 한다 3. 1이면 0출력하고 0? 1? 4. 0이 3번이면 1출력. 누적 -1 그러니까 굳이 sum으로 하지 않아도 if(0? 1?) if(0? 1?) if(0? 1?) 이렇게 3중 if문으로 바로 처리할 수 있음 전체 코드 1. 0이 들어올 때까지 계속 0을 출력한다 2. 0이 아닌 수가 들어오면 다음 수를 받고 0이..
64bit의 인자 32bit 아키텍쳐에서는 함수 호출시 인자를 스택에 저장했다 64bit에서는 함수의 인자를 레지스터 6개와 스택에 저장한다 인자를 저장하는 순서는 다음과 같다 ---레지스터--- rdi: 첫 번째 rsi: 두 번째 rdx: 세 번째 rcx: 네 번째 r8: 다섯 번째 r9: 여섯 번째 ---스택--- r10(%rsp): 일곱 번째 r11, 0x8(%rsp): 여덟 번째 ... 예를 들어 만약에 이런 printf코드가 있을 때 printf("%d %d %d %d %d %d", 1,2,3,4,5,6); gdb로 디스어셈블한 결과는 아래처럼 된다 ... push 0x6 #7번 인자, 스택에 저장 mov r9d, 0x5 #6번 인자 mov r8d, 0x4 #5번 인자 mov ecx, 0x3 #..