분류 전체보기(394)
-
어셈블리어-(3)
메모리의 스택은 거꾸로 뒤집혀진 스택 위에서 아래로 쌓임 스택이 늘어난다는 건 아래로 증가한다는 것 스택 포인터는 탑을 가리키고 있다. 위로 갈수록 번지수 증가 pushl %edx // %edx의 값을 스택에 푸쉬-> 스택 4바이트만큼 늘어남-> %esp 메모리번지 4만큼 감소 popl %edx // %edx에 탑의 값 저장-> 스택 4바이트만큼 감소 ->%esp메모리번지 4만큼 증가 * call foo // 리턴 주소를 스택에 푸쉬 후 foo라는 함수 위치로 점프(코드 실행) ->pushl %eip, jump to foo *리턴 주소값: 다음 명령어의 주소값 * ret: 리턴 주소를 스택에서 pop하고 , 그 리턴 주소로 점프(다음 명령어로 이동) * %eip: 다음에 실행할 명령어의 위치(리턴 주소)..
2022.12.12 -
어셈블리어 -(2)
1. cmpl b,a // b랑 a 비교 위해 a-b 계산 -> 캐리 발생하면 CF가 1로 세팅 a==b라면 ZF가 1로 세팅 a-b a&b==0이라면 ZF를 1로 세팅 a&b b이면 Dest를 1로 설정 setge: cmpl b,a 했을 때 a>=b이면 Dest를 1로 설정 cmpl %eax, 8(%ebp): cmpl y,x // x-y 계산으로 비교 setg %a..
2022.12.12 -
어셈블리어 -1
c 파일 컴파일 (gcc -s) -> 어셈블리어 파일(.s) ->오브젝트 파일(.o) (cpu가 인식할 수 있도록 하는 바이너리 파일) -> 실행 파일 바이너리 인코딩 헥사(16진법)으로 formating 되어있음 문자기반의 명령어가 숫자명령어로 변환 *disaseembled: 바이너리 코드를 어셈블리 형태로 바꾸는 것 disassebler: 오브젝트 코드를 검사하는데 유용한 도구 어셈블리 코드로 변환시켜줌 -> objdump -d p 명령으로 .out(실행파일) 또는 .o(오브젝트 파일)에서 실행 가능 1. movl Source,Dest : 소스에 저장된 값을 데스트로 이동하는 명령어 메모리에서 메모리 이동은 안됨 *피연산자 타입:- $표시: 상수 표시 %ecx : 레지스터 ecx반환 // R (%ec..
2022.12.12 -
git - 커밋 가이드라인
1. 공백문자를 깨끗하게 정리하고 커밋해야 한다. 커밋을 하기 전에 git diff --check 명령으로 공백문자에 대한 오류를 확인할 수 있다. 커밋을 하기 전에 공백문자에 대해 검사를 하면 공백으로 불필요하게 커밋되는 것을 막고 이런 커밋으로 인해 불필요하게 다른 개발자들이 신경 쓰는 일을 방지할 수 있다. 2. 최대한 수정사항을 한 주제로 요약할 수 있어야 하고 여러가지 이슈에 대한 수정사항을 하나의 커밋에 담지 않아야 한다. 한 커밋에 이슈 하나만 담기도록 같은 파일의 다른 부분을 수정하는 경우에는 git add --patch 또는 git add -p 명령으로 한 부분씩 나누어 Staging Area에 저장해야 한다. 여러 번 나누어 커밋하는 것이 다른 동료가 수정한 부분을 확인할 때나 각 커밋..
2022.12.11 -
git - 분산 환경에서의 워크플로
1. 중앙집중식 워크플로 주의 할 점: 지신의 일을 커밋하고 Push 하기 전에 서버에 있는 걸 Merge 하자. 그래야 그 전 개발자가 작업한 내용을 덮어 쓰지 않는다. git은 덮어쓰도록 허용하지 않는다. Push 하기 전에 Fetch로 받아서 Merge 한 후 Push 할 수 있다. 2. Integration-Manager 워크플로 다른 개발자는 읽기만 가능하고 자신은 쓰기도 가능한 공개 저장소를 만드는 워크플로 프로젝트 Integration-Manager는 프로젝트 메인 저장소에 Push를 한다 -> 기여자는 메인 저장소를 clone 하고 수정하고 나서 자신의 저장소에 Push 한다. -> 프로젝트 Integration-Manager에게 새 저장소에서 Pull 하라고 요청한다.(변경사항을 적용해달..
2022.12.11 -
git- rebase
rebase 명령으로 한 브랜치에서 변경된 사항을 다른 브랜치에 적용할 수 있다. * rebase 명령어로 일어나는 일 일단 두 브랜치가 나뉘기 전인 공통 커밋으로 이동 -> 그 커밋부터 지금 checkout 한 브랜치가 가리키는 커밋까지 diff를 차례로 만들어 어딘가에 임시저장 -> rebase 할 브랜치(experiment)가 합칠 브랜치(master)가 가리키는 커밋을 가리키게 함 -> 아까 저장해 놓았던 변경사항 diff를 c4'에 차례대로 적용 그리고 나서 master 브랜치를 Fast-forward 시킨다. * rebase로 합치는 게 히스토리가 선형으로 좀 더 깨끗한 히스토리를 만든다. 일을 병렬로 진행해도 rebase 하고 나면 모든 작업이 차례대로 수행된 것처럼 보인다. Rebase를 ..
2022.12.11