0

return 関数を含むコードはこれで終わりです。

MOVW            R1, #0x7368
ADD             R0, PC  ; 
MOVT.W          R1, #0xF
ADD             R1, PC ; 
LDR             R0, [R0] ; 
LDR             R1, [R1] ; 
LDR             R0, [R4,R0]
BLX             _objc_msgSend
MOVW            R1, #0x7DC4
MOV             R2, R8
MOVT.W          R1, #0xF
MOV             R3, R6
ADD             R1, PC ; 
LDR             R1, [R1] ; "
BLX             _objc_msgSend
LDR.W           R8, [SP+0x10+var_10],#4
POP             {R4-R7,PC}

誰かがそれが何をするのかコメントして、常にTRUEを返すのはPOPだと思うリターン命令を強制する方法を説明してもらえますか!

私が投稿したコードの一部は、何らかの操作を行い、TRUE または FALSE を返すブール関数です。

ありがとう

4

1 に答える 1

2

コンパイラがARMアーキテクチャのプロシージャコール標準に準拠している場合、戻り値はで渡されR0ます。このPOP命令は他のレジスタを復元し、をロードPCして呼び出し元の関数に戻しますが、ロードはしませんR0。関数が常にブール値のtrueを返すようにする場合は、POPをロードする前に命令を追加する必要がありますR0

于 2012-11-28T19:16:28.167 に答える