본문 바로가기

Programming424

Wnd 운영체제 용어 정리 1 TSS (Task State Segment) 인텔 마이크로프로세서에서는 각 테스크에 TSS 세그먼트가 있으며, 이 세그먼트에는 각 테스크의 제어 이행 또는 테스크 스위칭을 위한 여러가지 정보들이 저장되어 있다. IDT (Interrupt Descriptor Table) 하드웨어 인터럽트 또는 소프트웨어 인터럽트가 발생하였을 때, 마이크로프로세서가 어떤 루틴을 호출 할 것인지를 명시하고 있다. TLB (Translation Lookaside Buffer) 가상 메모리 시스템에서 가상 메모리를 실 메모리로 변환하는 시간을 줄이기 위해 일정 개수의 변환된 주소 값을 저장하고 있는 버퍼 트랩 프레임 (Trap Frame) 에러 당시에 스택에 저장된 레지스터 값 스레드 (Thread) CPU에 의해 명령어가 실행.. 2009. 4. 23.
WinDBG WinDBG WinDBG는 Mirosoft에서 무료로 제공하는 커널 디버거이다. 명령어 !process 지정한 프로세스에 대한 자세한 정보를 출력하여 준다. !thread 지정한 스레드에 대한 자세한 정보를 출력하여 준다. !pte 지정한 메모리의 페이지 디렉토리와 페이지 테이블 정보를 출력하여 준다. !stacks 시스템에 있는 모든 스레드의 스택 백트레이싱 내용을 출력하여 준다. dg (Display Seletor) 지정한 셀렉터에 대한 자세한 정보를 출력하여 준다. dt (Display Type) 지정한 포인터 주소를 지정한 Struct 구조로 보여준다. LN (List Nearest Symbols) 지정한 주소를 가장 근접한 심벌 이름으로 출력하여 준다. !dlls 현재 프로세스에 로드되어 있는 .. 2009. 4. 23.
IDIV IDIV 이전까지의 코드를 수행하게 되면, AL 에 83h 를 넣고, CBW 워드로 확장한다. 그리고, CL 에 10h를 넣는다. 아래와 같은 레지스터 값을 가지게 된다. 그리고 마지막, IDIV CL 을 수행하게 되면 다음과 같이 레지스터 값이 변한다. 미리 예상하기에는, EAX 00000F3F EDX 00000009 가 될것 같지만, 다르게 나온다. 왜일까. 나눠지는 값은 2바이트이다. 그러나, 나누는 값이 1바이트이다. 그래서, 나눠지는 값이 1바이트로 변한다. 83h 를 10진수로 바꾸면, -125이다. 10h 를 10진수로 바꾸면, 16이다. 손수 나눗셈을 해보면, 몫 : -7 나머지: -13 이 나온다. -7을 16진수로 바꾸면, F9 -13을 16진수로 바꾸면, F3 따라서,, 나머지와 몫을.. 2009. 4. 12.
do do 가 실행되는 순서를 보자. 1 2 3 4 5 6 7 8 9 10 print "1"x10 ."\n"; $x = do { print "2"x10 ."\n"; "4" x 10; }; print "3"x10 ."\n"; print $x; Output: 1 2 3 4 1111111111 2222222222 3333333333 4444444444 do는 그 값을 사용될 때 do가 읽혀지는 것이 아니라, 선언(?) 될 때, 읽혀지는 것을 확인할 수 있다. 그리고 do{} 안에서 마지막에 실행된 값이, do 앞의 변수에 저장됨을 알 수 있다. 2009. 4. 10.
ASM 1 ASM 1 - 2009/04/09 지역변수는 ebp - 로 접근 매개변수는 ebp + 로 접근 Add, Sub, Mul, Div # 산술 연산. AND, OR, XOR # 논리 연산 AND EAX, EBX XOR EAX, EAX 스택에 값을 저장한다. 백업 매개변수 전달 pop => 스택의 값을 뒤의 오퍼랜드에 저장. 후, esp - 4 > label || 명령 || Operands || ; 주석 Operands => 피연산자 들의 사이즈는 동일해야 한다. mov esp, ebp / 리눅스는 방향 반대 / 레지스터/메모리주소. || 레지스터/메모리주소/값 세그먼트 레지스터들끼리는 연산을 할 수 없다. mov eax, DS mov CS, eax .586 .model flat, stdcall option c.. 2009. 4. 9.
MASM32 / EditPlus 연동 에디트 플러스 MASM32 연동 - 2009/04/09 도구 -> 사용자 도구 구성 -> 그룹선택 -> 그룹이름 -> 'MASM'으로 변경 -> 추가 -> add new program * 3 -> / Assemble / Link / Execute / 실행시킨다. 끝. 이 글은 스프링노트에서 작성되었습니다. 2009. 4. 9.