[C, Assembly] movq 예제

2025. 4. 7. 19:45·CS:APP

movq 학습내용은 아래에

 

mov 인스트럭션 - CS:APP 3.4.2

메모리 ↔ 레지스터 ↔ 즉시값(상수) 간 데이터를 복사하는 명령어모든 조작의 기본 단위기본 형태mov[b|w|l|q] S, D ; D S : Source operand (어디서 가져올지)D : Destination operand (어디다 저장할지)가능한

ahpicl.tistory.com

 

long exchange(long *xp, long y)
{
    long x = *xp;
    *xp = y;
    return x;
}
  • 포인터 xp가 가리키는 값을 읽어서 x에 저장
  • 그 메모리 위치에 y를 다시 씀
  • 원래 있던 값 (x)를 반환

어셈블리 코드

exchange:
    movq    (%rdi), %rax    ; x = *xp → xp는 %rdi에 있음
    movq    %rsi, (%rdi)    ; *xp = y → y는 %rsi에 있음
    ret                     ; return x → 결과는 %rax
[C 메모리]         [레지스터]          [어셈블리 코드]
------------      --------------   --------------------------
*xp (주소 rdi) ───▶ %rax              movq (%rdi), %rax
%rsi (y 값) ─────▶ *xp               movq %rsi, (%rdi)
%rax (x 값) ─────▶ 반환               ret
728x90

'CS:APP' 카테고리의 다른 글

함수는 추상화의 결과다 - CS:APP 3.7 프로시저 호출  (0) 2025.04.08
스택은 사실 아래로 자란다(push,pop) - CS:APP 3.4.4  (0) 2025.04.07
mov 인스트럭션 - CS:APP 3.4.2  (0) 2025.04.07
오퍼랜드 식별자(operand specifier 어셈블리의 시작과 끝 - CS:APP 3.4.1  (0) 2025.04.07
레지스터가 뭔데 - CS:APP 3.4  (0) 2025.04.07
'CS:APP' 카테고리의 다른 글
  • 함수는 추상화의 결과다 - CS:APP 3.7 프로시저 호출
  • 스택은 사실 아래로 자란다(push,pop) - CS:APP 3.4.4
  • mov 인스트럭션 - CS:APP 3.4.2
  • 오퍼랜드 식별자(operand specifier 어셈블리의 시작과 끝 - CS:APP 3.4.1
ahpicl64
ahpicl64
in the clouds
  • ahpicl64
    구름
    ahpicl64
  • 전체
    오늘
    어제
    • 분류 전체보기 (95)
      • WIL (4)
      • Jungle (36)
      • AWS (2)
      • SQL (2)
      • CS:APP (17)
      • Algorithm (10)
      • K8s (7)
      • 자료 구조 (10)
      • Spring (4)
      • React (0)
      • 운영체제 (1)
      • 기타등등 (2)
      • 이야기 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    어셈블리
    자료구조
    DevOps
    queue
    python
    부하테스트
    k8s
    AWS
    github actions
    S3
    CSAPP
    CloudFront
    DB
    EC2
    트러블슈팅
    컴퓨터시스템
    Spring
    Spring boot
    IAM
    알고리즘
  • 02-21 06:16
  • hELLO· Designed By정상우.v4.10.3
ahpicl64
[C, Assembly] movq 예제
상단으로

티스토리툴바