Assembly!

Evie·2023년 9월 11일
0

시스템

목록 보기
16/22

🤓 드림핵 x86 Assembly Essential Part 강의를 보고 정리한 공부내용입니다.

맨날맨날 검색하는 어셈블리언어 이제 정리할 때


x64 어셈블리 언어

👾 기본 구조

  • 명령어 (Operation Code, Opcode)

    데이터이동
    산술연산
    논리연산
    비교
    분기
    스택
    프로시져
    시스템 콜

  • 피연산자 (Operand)

    • 상수 (Immediate Value)
    • 레지스터 (Register)
    • 메모리 (Memory)
      -> 크기지정자가 올 수 있음
      • BYTE : 1바이트
      • WORD : 2바이트
      • DWORD : 4바이트
      • QWORD : 8바이트

mov eax. 3
movoax.3
opcodeoperand1operand2
대입해라eax에3을

👾 명령어

데이터 이동

: 어떤 값을 레지스터나 메모리에 옮기도록 지시

  • mov dst, src : src에 들어있는 값을 dst에 대입
  • lea dst, src : src의 주소를 dst에 저장

산술연산

  • add : 더하기
  • sub : 빼기
  • inc : 1증가
  • dec : 1감소

논리 연산

  • and : 두 비트가 모두 1이면 1, 아니면 0
  • or : 비트중 하나라도 1이면 1, 아니면 0
  • xor : 비트가 서로 다르면 1, 같으면 0
  • not : 비트 전부 반전

비교

  • cmp : 두 피연산자를 빼서 대소 비교
    => 같으면 0, ZF (제로) 플래그 설정
  • test : 두 피연산자에 AND 비트연산
    => 0이면 ZF(제로) 플래그 설정

분기

  • jmp : 뒤 addr로 rip을 이동
  • je : 직전에 비교한 두 피연산자가 같으면 점프
  • jg : 직전에 비교한 두 연산자 중 전자가 더 크면 점프
profile
공부합시다

0개의 댓글