CBNZ

Category
아이템: CBNZ(1)
포스트 갯수1

[ARMv8] cbnz 명령어

By Guillermo Austin Kim | 2020년 10월 5일 | 
cbnz 명령어는 Compare Branch None-zero의 약자입니다.명령어의 이름 그대로 레지스터의 값이 0이 아닌 경우, 지정된 주소로 브랜치하는 명령어입니다. 아래 코드를 봅시다. 01 and x2,x1,#0x3F ; x2,x1,#6302 cbnz x2,0xFFFFFF8008083728 ; x2,work_pending 01번째 줄 코드를 봅시다.x1이 0x1이면 x2는 0x1, x1이 0x3f이면 x2는 0x3f가 됩니다. 이 경우 x2는 0x1 혹은 0x3f이므로 0이 아니니, non-zero가 됩니다. 그 다음 02번째 줄을 실행하면 work_pending 레이블의 시작 주소인 0xFFFFFF8008083728로 브랜치합니다. 01~02 번째 줄은 C 코드로