[llvm-dev] "BL" or "B" when compiling ARM

Muhui Jiang via llvm-dev llvm-dev at lists.llvm.org
Thu May 23 04:23:21 PDT 2019


I am recently doing research on binaries in ARM architecture.

I noticed that when I compile the source code using thumb instruction set,
llvm will use BL to jump to some basic blocks rather than B, which means
the jump target by BL could also be a basic block rather than function
start. Some disassemblers would directly set the target of BL as  a start
of a function, which is not right.

I am really curious when the compiler would choose to use BL and when the
compiler would choose to use B when the target is a basic block. I noticed
sometimes there might be no differences between these two branch
instructions. Many Thanks

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190523/24845a28/attachment.html>

More information about the llvm-dev mailing list