您的位置 首页 电子

ARM汇编—-伪指令LTORG

LTORG用于声明一个数据缓冲池,(也称为文字池)的开始。在使用伪指令LDR时,常常需要在适当的地方加入LTORG声明数据缓冲池,LDR加载的数据

LTORG用于声明一个数据缓冲池,(也称为文字池)的开端。在运用伪指令LDR时,常常需要在恰当的当地参加LTORG声明数据缓冲池,LDR加载的数据暂时放于数据缓冲池。

语法LTORG

运用说明:

当程序中运用LDR之类的指令时,数据缓冲池的运用或许越界。为避免越界发生,可运用LTONG伪操作界说数据缓冲池。一般大的代码段能够运用多个数据缓冲池。ARM汇编编译器一般把数据缓冲池放在代码段的最后面,即下一代码段开端之前,或许END伪操作之前。LTORG伪操作一般放在无条件跳转指令之后,或许子程序回来指令之后,这样处理器就不会过错的将数据缓冲池中的数据当作指令来履行。

LDR伪指令在汇编时,假如当即数能够用表明的话就替换为MOV或MVN指令;假如不能用其表明则需要将该当即数放到一个文字池中,并生成一条将该文字池内容加载到方针寄存器的LDR指令。而运用LDR指令有必要确保文字池在其能够拜访的地址规模之内,关于ARM指令集来说便是4KB,所以有必要在LDR指令前后4KB的规模内用LTORG显式地在代码段中增加一个文字池。

LTORG是在此指令呈现的当地放一个文本池(literal pool).在ARM汇编中常用到

ldr r0, =instruction将地址instruction载入r0.

此刻编译器将ldr尽或许的改变成mov或mvn指令。

假如改变不成,将发生一个ldr指令,经过pc相对地址从一块保存常数的内存区读出instruction的值。此内存区既是文本池。一般的,文本池放在END指令之后的当地。可是,假如偏移地址大于4k空间, ldr指令会犯错(由于ldr的相对偏移地址为12-bit的值).此刻运用LTORG放到会犯错的ldr指令邻近,以处理此问题。编译器会搜集没有分配的ldr的值放到此文本池中。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/dianzi/257210.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部