How to do the ARM state change between 64-bit and 32-bit?

Hi,

The latest 64-bit architecture can on both AArch64 and AArch32 state.

Can someone tell me how to utilize this feature so that I can seamlessly integrate algorithms (which are optimized with 32-bit and 64-bit instructions) with applications which are build for 32-bit and 64-bit modes.

Here is the specifics of situation which I am facing right now.

I want to link an ARM shared library which is optimized with 64-bit instructions with my application which is built in 32 bit mode.

At the time of linking I am getting the following error.  "skipping incompatible xxxx.so file".

My build environment is android and unfortunately I don't have the option to build my application in 64-bit mode.

Appreciate your help with inputs.

Thanks, Prasad

Parents
  • The terms 32-bit and 64-bit refer to the way a computer's processor (also called a CPU), handles information. Processor calls data from Memory i.e. RAM by giving its address to MAR (Memory Address Register). Selector electronics then finds that address in the memory bank and retrieves the data and puts it in MDR (Memory Data Register) This data is recorded in one of the Registers in the Processor for further processing. Thats why size of Data Bus determines the size of Registers in Processor. Now, if my processor has 32 bit register, it can call data of 4 bytes size only, at a time. And if the data size exceeds 32 bits, then it would required two cycles of fetching to have the data in it. This slows down the speed of 32 bit Machine compared to 64 bit, which would complete the operation in ONE fetch cycle only. So, obviosly for the smaller data, it makes no difference if my processors are clocked at the same speed. Again, with 64 bit processor and 64 bit OS, my instructions will be of 64 bit size always... which unnecessarily uses up more memory space.

Reply
  • The terms 32-bit and 64-bit refer to the way a computer's processor (also called a CPU), handles information. Processor calls data from Memory i.e. RAM by giving its address to MAR (Memory Address Register). Selector electronics then finds that address in the memory bank and retrieves the data and puts it in MDR (Memory Data Register) This data is recorded in one of the Registers in the Processor for further processing. Thats why size of Data Bus determines the size of Registers in Processor. Now, if my processor has 32 bit register, it can call data of 4 bytes size only, at a time. And if the data size exceeds 32 bits, then it would required two cycles of fetching to have the data in it. This slows down the speed of 32 bit Machine compared to 64 bit, which would complete the operation in ONE fetch cycle only. So, obviosly for the smaller data, it makes no difference if my processors are clocked at the same speed. Again, with 64 bit processor and 64 bit OS, my instructions will be of 64 bit size always... which unnecessarily uses up more memory space.

Children
No data
More questions in this forum