[Arm] ASR(Arithmetic Shift Right) 명령어
16진수인 0x7fffffff는 이진수로는 아래와 같다. 0111 1111 1111 1111 1111 1111 1111 1111 (2진수) 2147483647 (10진수) (static int) __boot_cpu_mode = 2147483647 = 0x7FFFFFFF 0x7fffffff를 'LSR 4'로 수행하면; 0111 1111 1111 1111 1111 1111 1111 1111(0x7FFF FFFF, 2,147,483,647) ( >> 4) 0000 0111 1111 1111 1111 1111 1111 1111(0x07FF FFFF, 134,217,727) 결과는 0x07FF_FFFF, 10진수로는 134,217,727이다. 이제 음수 값을 확인하자. 16진수인 0x80000001는 이진수로는 ..
[ARM프로세서] 'csel' 명령어
이번에는 ARMv8 아키텍처에서 제공하는 명령어 중에 C 언어의 3항 연산자가 연상되는 csel를 알아봅시다. 다음은 분석하려는 코드입니다. 115| printk(!error ? "okay\n" : "failed\n"); MX:FFFFFF8009BB2404|F0FFE748 adrp x8,0xFFFFFF800989D000 MX:FFFFFF8009BB2408|F0FFE289 adrp x9,0xFFFFFF8009805000 MX:FFFFFF8009BB240C|91026108 add x8,x8,#0x98 ; x8,x8,#152 MX:FFFFFF8009BB2410|91192529 add x9,x9,#0x649 ; x9,x9,#1609 MX:FFFFFF8009BB2414|7100027F cmp w19,#0x0 ; ..