Forums
처음에 value의 값은 1이지만 나중에는 value의 값이 100이 되는 프로그램입니다.
원본 소스에 나름대로 주석을 달아보았는데 올바른 해석인지 궁금하여 질문을 올립니다.
#movetest2.s - An example of moving register data to memory
.section .data
value:
.int 1 ;value 값을 1로 설정
.section .text
.globl _start
_start:
nop
movl $100, %eax ;100을 eax 레지스터에 저장
movl %eax, value ; eax 레지스터의 값을 value에 이동.
movl $1, %eax ; 초기 value 값인 1을 eax 레지스터로 이동. 따라서, value 값은 100이 된다?
movl $0, %ebx int $0x80
아래 내용은 위 프로그램을 gdb로 분석하는 내용입니다.
(gdb) break *_start+1
Breakpoint 1 ast 0x8048075: file movetest2.s, line 8
(gdb) run
Starting program: /home/westporch/S/movetest2 Breakpoint 1, _start () at movetest2.s:8 8 movl $100, %eax
Current language: auto; currently asm
(gdb) x/d &value
0x804908c : 1
(gdb) s
_start () at movetest2.s:9 9 movl %eax, value
(gdb) s
_start () at movetest2.s:10 10 movl $1, %eax
(gdb) x/d &value
0x804908c : 100
(gdb)