arm 어셈 질문 2

홈 > 커뮤니티 > 질문 게시판
질문 게시판

arm 어셈 질문 2

2 나는뉴비 2 4446
http://armconverter.com/

이 사이트를 참조하며 arm hex변환에 도움을 받고있었는데

mov r0,0x40000000 (float 2) 은나오지만

mov r0,0x40400000 (float 3) 은 사이트에서 지원이 안되더라고요

혹시 arm자체에서 지원을 안해주는건가요?
2 Comments
M LIN 2019.11.01 16:13  
ARM은 고정적인 4바이트 인스터럭션 구조 때문에 mov immediate의 경우 맨 뒤 12비트만 사용할 수 있습니다.
다음과 같이 연산됩니다.

asm = e3 10 0? ?? (mov r0, ??)
imm8 = asm & 0xFF
rot = 2 * ((asm & 0xf00) >> 8)
output = imm8값을 rot 만큼 ROR(Rotate Right) 합니다. (ROR #rot)

ex) mov r0,0x40000000
e3 a0 01 01 = 1을 ror#2 하면 -> 0x40000000( 0100 0000 .... ) 이 나옵니다.

0x40400000 의 경우 비트로 포현하면 [ 0100 0000 0100 0000 ... ] 값이며, 8비트 ROR연산으로 다음과 같은 비트값을 나타낼 수 없기때문에 변환이 안됩니다.
2 나는뉴비 2019.11.01 19:52  
답변감사합니다 제가 후킹은 해본적이 없어서 간단히 4바이트변경만으로 하려고했는데 흑흑 어쩔수없이 add 를이용한 총 8바이트를 바꿔야하는거군요 그럼