range of BL instruction in arm state is + or - 32MB as per instruction set.how...........?
i.e. it can go ahead or behind by 8Million instructions , thats it.
Consider for a moment, however obtuse it may seem, that the 16MiB of memory before and after the current instruction may not actually be other instructions. Code and data may live in the same underlying address space. To say that you branch over a certain 'count' of 'instructions' isn't specific, and is in fact somewhat misleading.
In a true Harvard architecture all that can be in the memory either side of the branch is instructions/code space, so you will be branching a number of potential instructions away. But ARM architecture is not a true Harvard architecture.. and even in a Harvard architecture you can leave your instruction address space unpopulated, with no instructions at all. So, a branch range in (Mega)bytes is obviously more specific and less open to confusion, in terms of specification.