【ARM】DQ9で学ぶARMアセンブル【逆汗】

このエントリーをはてなブックマークに追加
64名無しさん@そうだ選挙に行こう
■ location( r1: Rank) 関数
戻り値: r0=場所値(1〜0x96=160:十進)

>:020A7BB4 E92D4008 stmdb r13!,{r3,r14}
>:020A7BB8 E3500051 cmp r0,#0x51
>:020A7BBC 3A000007 bcc 020A7BE0
>:020A7BC0 E35000F8 cmp r0,#0xF8
>:020A7BC4 8A000005 bhi 020A7BE0 //あり得ないと思うがw

【Rank >= 0x51】
>:020A7BC8 E3A00001 mov r0,#0x1 ;r0=1(0x1)
>:020A7BCC E3A01096 mov r1,#0x96 ;r1=150(0x96)
>:020A7BD0 EBFFF809 bl 020A5BFC // 1〜150の範囲で乱数を振る
>:020A7BD4 E1A00800 mov r0,r0,lsl #0x10
>:020A7BD8 E1A00820 mov r0,r0,lsr #0x10   // 上位16bitクリア
>:020A7BDC E8BD8008 ldmia r13!,{r3,r15}  //RETURN

【Rank >= 0x33】
>:020A7BE0 E3500033 cmp r0,#0x33
>:020A7BE4 3A000007 bcc 020A7C08
>:020A7BE8 E3500050 cmp r0,#0x50
>:020A7BEC 8A000005 bhi 020A7C08
>:020A7BF0 E3A00001 mov r0,#0x1 ;r0=1(0x1)
>:020A7BF4 E3A01083 mov r1,#0x83 ;r1=131(0x83)
>:020A7BF8 EBFFF7FF bl 020A5BFC   //1〜131の範囲で乱数を振る
>:020A7BFC E1A00800 mov r0,r0,lsl #0x10
>:020A7C00 E1A00820 mov r0,r0,lsr #0x10   // 上位16bitクリア
>:020A7C04 E8BD8008 ldmia r13!,{r3,r15}  //RETURN

【Rank それ以下】
>:020A7C08 E3A00001 mov r0,#0x1 ;r0=1(0x1)
>:020A7C0C E3A0102F mov r1,#0x2F ;r1=47(0x2f)
>:020A7C10 EBFFF7F9 bl 020A5BFC   //1〜47の範囲で乱数を振る
>:020A7C14 E1A00800 mov r0,r0,lsl #0x10
>:020A7C18 E1A00820 mov r0,r0,lsr #0x10   // 上位16bitクリア
>:020A7C1C E8BD8008 ldmia r13!,{r3,r15}  //RETURN