Assembly 距离太远?

Assembly 距离太远?,assembly,arm,keil,Assembly,Arm,Keil,我正在Keil uVision 5环境中的飞思卡尔Freedom KL46Z板上用ARM汇编语言编写代码。我的代码相当长,但在代码的主要部分,每当我尝试加载(LDR)常量或变量时,都会出现以下错误: 错误:A1284E:文字池太远,请使用LTORG在4KB内组装它 我不知道这意味着什么,也不知道如何修复它。出现错误的地方都在类似的说明上。例如,第一个错误发生在读取以下内容的指令上: LDR R1,=时间 其中时间定义为: 时空4 该实例是一个变量,但它也发生在已定义的常量上。有人能帮我找出如何修

我正在Keil uVision 5环境中的飞思卡尔Freedom KL46Z板上用ARM汇编语言编写代码。我的代码相当长,但在代码的主要部分,每当我尝试加载(LDR)常量或变量时,都会出现以下错误: 错误:A1284E:文字池太远,请使用LTORG在4KB内组装它 我不知道这意味着什么,也不知道如何修复它。出现错误的地方都在类似的说明上。例如,第一个错误发生在读取以下内容的指令上: LDR R1,=时间 其中时间定义为: 时空4
该实例是一个变量,但它也发生在已定义的常量上。有人能帮我找出如何修复此错误吗?

错误消息或多或少地解释了您需要执行的操作。在给出错误消息的行的4096字节内的某个位置将插入汇编代码。LTORG语句必须与代码位于同一节中,并且不能位于可能执行的代码路径上。它会导致在节中插入常量(文字),如果执行,将导致崩溃或行为异常


一个好的位置是给出错误的函数结束后(或函数的条目标签前)。如果仍然有超过4K的距离,那么您需要在函数中找到一个无条件分支或返回指令,您可以将其放在后面。如果没有这样的指令,那么您就必须插入一条无条件分支指令,该指令除了跳转到代码中某个地方的LTORG语句之外什么都不做。

您能发布到目前为止得到的信息吗?当一条错误消息建议您做某件事时,您是否不首先查找,想知道它是否能解释这个问题?我试着查找LTORG指令,但没有发现它不在可执行的代码区域,如下面的答案。你写了
时空4
作为某种时空是4维的笑话,对吗P现在您已经制作了一个程序,其中
时间
的空间无法访问!现在还有人哼唱MST3K主题曲吗?并在评论中回答。