완료됨
산술 연산 문제 중 메모리 계산 관련 질문입니다.
1: add rax, [rbx+rcx8] 가
rax레지스터에 [rbx + rcx8]의 값을 더한다는 것은 알겠습니다만, 제가 16진수 계산 방법을 잘못 알고있는것인지
rbx = 0x555555554000 rcx * 8 = 0x16이므로
rbx + rcx*8 = 0x555555554016이라고 생각하였고, 이제 rax의 값에 이 값을 더해야 한다고 생각했습니다만 이렇게 계산하는 것이 맞는지 확신이 없고 답이 이와 관련된 게 전혀 없으니 잘못 계산한 것으로 보입니다.
어느 부분에서 계산이 잘못되었고 어떻게 계산해야 올바른지 알고 싶습니다.
#리버싱
#배경지식
작성자 정보
답변
1
믕믕이부하
대표 업적 없음
rcx = 0x02 라고 가정하겠습니다.
0x02를 10진수로 바꾸면 2 입니다. 2×8은 16입니다. 16을 다시 16진수로 바꾸면 0x10이 됩니다. 따라서 rrbx + rcx×8 = 0x555555554010이 되야합니다.
10진수는 1~9까지 9개의 수가 있고 이 9개라는 수의 범위를 넘어가면 자릿수가 올라갑니다. (ex: 9+1 -> 10, 99+1 -> 100)
마찬가지로 16진수는 1~f까지 15개의 수가 있고 이 15개라는 수의 범위를 넘어가면 자릿수가 올라갑니다. (ex: 0xf+0x1 -> 0x10, 0xff+0x1 -> 0x100)