Bx lrが何をするのか、それがbl(ラベル)とどのように違うのか、頭を悩ませることはできないようです。 bl(ラベル)はその関数の戻りアドレスをリンクレジスタに格納することは知っていますが、bx lrが何をするのかわかりません。
bx
は、 branch and exchange instruction set の略で、LSB(最下位ビット)分岐先アドレスの場合、プロセッサは次の命令をARMまたはthumbとして処理します。
lr
は通常戻りアドレスを保持するため、これは関数からの戻りであることを意味し、lr
のlsbが1の場合、そのアドレスのコードをサムとして扱います。 、ARMとして処理します。