어셈블리 루프 명령어를 연구 한 후. OS X에서 작동하는지 여부를 테스트하고 싶습니다.
.data
output:
.asciz "The value is: %d\n"
.text
.globl _main
_main:
movq $0xffffffff, %rcx
movq $0, %rax
loop1:
addq %rcx, %rax
loop loop1
done:
subq $8, %rsp
leaq output(%rip), %rdi
movq %rax, %rsi
call _printf
addq $8, %rsp
subq $8, %rsp
movq $0, %rdi
call _exit
이 코드 단편은 정확하게 올바르게 작동합니다. 그러나 lldb를 사용하여 단계별로 테스트했을 때 이상한 메시지가 쏟아졌습니다. lldb가 인쇄되었습니다.
a.out`___lldb_unnamed_function1$$a.out:
-> 0x1fa4: addq %rcx, %rax
0x1fa7: loop 0x1fa4 ; ___lldb_unnamed_function1$$a.out
a.out`done at main_64.s:16:
0x1fa9: subq $0x8, %rsp
0x1fad: leaq 0x6c(%rip), %rdi ; output
무엇이 잘못 되었나요? 루프 명령을 지원하지 않습니까?
또한 %rcx==0x2
일 때 주소 0x1fa4에 중단 점을 설정하기 위해 br s -a 0x1fa4 -c '$rcx==0x2'
을 사용했지만 프로그램을 다시 계속 한 후 lldb가 제어 불능 상태였습니다. 프롬프트가 즉시 인쇄되었고 CPU가 높게 나타났습니다. 나는 p/x $rcx
을 입력하려고했지만 아무 것도 얻지 못했습니다. 누가 무슨 일이 일어 났는지 말해 줄 수 있니? 고마워요!
답변 해 주셔서 감사합니다. –