목록전체 글 (77)
Jiyong's STUDY
IA-32 레지스터는 범용 레지스터가 8개 있다. 레지스터를 '변수'로 이해하면 이해하기 쉽다. 정확하게 "변수는 변수인데, CPU가 사용하는 변수다." 레지스터는 EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP로 총 8개다. EAX부터 EDX까지는 ABCD순인데 정확히는 EAX, EDX, ECX, EBX의 순으로 외우는게 맞다. EAX (Extended Accumulator Register) Accumulator. 이 레지스터의 역할을 요약하면 산술 계산을 하며, 리턴값을 전달한다. 쉽게 생각하면 단지 "변수"이며, 구체적으로는 "가장 많이 쓰는 변수"이다. 계산식에 사용되며 사칙연산 등에 자주 등장한다. 함수의 리턴값이나 return 100, return FALSE 등의 코드를 ..
x86 CPU의 기본 구조인 IA-32 기준 IA-32의 기본 형태는 "명령어 + 인자" 로 이루어졌다. 예를 들어 push 337 으로 되어있다면 여기서 mov나 push같은 것을 명령어라고 한다. 이는 옵코드(opcode)라고 한다. 그 뒤에 인자가 들어오는데 인자는 명령어 다음에 "어떤 장소로 값을 넣을 것인지", 또는 "명령어에 해당하는 값" 등이 된다. 이는 오퍼랜드(operand)라고 한다. mov eax, 1 이런식으로 있다면 여기서 옵코드는 mov, 오퍼랜드는 eax와 1 두개가 된다. 참고로 모든 오퍼랜드는 앞의 것이 destination이고 뒤의 것이 source이다. (예시로 memcpy, strcpy)
냉장고에서 물을 꺼내서 마신다는 경우에, C/C++ 코드로 작성한다면 void 물마심(){ bool b0pen = 냉장고문오픈(); if (b0pen){ 물을꺼냄(); 마심(); } } 이런식이 된다. 하지만 이것을 어셈블리어로 표현한다면? _asm{ 냉장고앞으로간다 냉장고문을잡는다 냉장고문을연다 오픈성공: 냉장고안을본다 손을든다 냉장고안에넣는다 물병을잡는다 물병을꺼낸다 뚜껑을연다 물을컵에따른다 컵을손에든다 컵에든것을마신다 이런식이다. 차이점은 간단하게는 "한 가지 동작"을 한다는 것이다. 어셈블리어는 한 번에 한 가지 동작밖에 하지 못한다. 즉 짧은 코드도 어셈블리어로 바꾸면 엄청나게 길어진다는 점이 있는데, 이를 해석하는 방법을 알아야 한다.
crontab 명령어스케줄러와 관련된 명령어 분 / 시 / 일 / 월 / 요일 / 작업 내용 옵션-l : crontab 파일의 목록을 출력-e : 사용자의 crontab 파일을 편집-r : crontab 파일을 삭제
- 명령과 명령 사이[ : ] : 명령의 끝을 나타냄 (이전 명령의 성공 여부와 상관 없이 무조건 다음 명령 실행)|| : 이전의 명령이 실패하면 실행하는 조건문&& : 이전의 명령이 성공하면 실행하는 조건문 - 명령의 끝& : 백그라운드 작업 - 명령어! : 이전에 사용했던 명령을 사용(-를 붙이면 최근에 사용한 명령, 없으면 처음에 사용한 명령부터)! : 가장 최근에 실행한 명령어를 재실행!! : 마지막에 사용한 명령을 재실행
ps 명령어 옵션 -a : 세션 리더를 제외하고 터미널에 종속되지 않은 모든 프로세스의 정보를 출력-e : 시스템에서 실행 중인 모든 프로세스의 정보를 출력-f : 프로세스의 자세한 정보를 출력 -u : 터미널에서 실행한 프로세스의 자세한 정보를 출력-t : 프로세스의 자세한 정보를 출력a : 터미널에서 실행한 프로세스의 정보를 출력 top 명령어 옵션- 아무런 옵션 없이 실행 시 5초에 한번 갱신- 디스크 사용량은 없다 -d : 갱신 딜레이 설정-u : user 소유의 프로세스를 표시-p : 지정한 PID의 프로세스만을 실시간으로 화면에 출력-o : 출력할 항목으로 지정 된 항목들로만 출력 명령 실행 후 사용 가능한 옵션들 l : load average 줄 표시/해제P : CPU 사용량에 따라 정렬하여..