问题标签 [relative-addressing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
587 浏览

perl - perl 中的相对寻址,使用 open dir

我有以下代码用于列出目录中的所有文件,路径寻址有问题,我的目录是* /tmp/ *,基本上我想要tmp目录中目录中的文件。但我不允许使用 * ,你有什么想法吗?

0 投票
1 回答
716 浏览

assembly - 两遍汇编器如何处理由汇编器扩展的指令?

考虑以下 MIPS 程序集(我正在使用 MIPS,因为这是我的计算机组织和设计书使用的):

因为 MIPS 只使用 16 位作为beq指令中的 PC 相对地址,如果L1离 足够远beq,汇编器必须用两条指令(一个跳转有 26 位地址)和一个新标签来替换它:

如果这还不够,它可能需要多次跳转。

汇编器在知道L1. 由于它最初不知道beq(1 条指令或 2 条指令)的大小,它如何在第一次通过时使位置计数器保持最新?

0 投票
1 回答
345 浏览

android - Android 应用程序本机部分中的相对寻址

我在 Android 应用程序的本机部分创建了一个对象,如下所示:

在纯 c++ 中,您将haarcascade_frontalface_alt2.xml放在haarcascades文件夹中,除了您的源代码。但是现在我真的很困惑它应该放在哪里?在 jni/haarcascades 目录中?或者别的地方?
提前致谢。

0 投票
1 回答
344 浏览

c++ - 无法读取文件并放置在 CUDA 中的二维相对矩阵地址中

我正在使用 malloc 分配一个二维矩阵并尝试在相对地址中插入值。我不明白为什么它是核心转储错误。请看我下面的代码。

我已经制作了上面的示例程序来检查相对地址并将 &x[] 放在 fscanf 中清除了这个问题。

上面的示例 C 代码是由于 Cuda 中的相同读取问题而完成的。当使用相同的二维数组及其相对地址的分配方式时,它正在读取文件,并且在尝试打印相同的文件时..它打印 0 而不是 1,2,3,4.. 我处于 CUDA 的学习阶段. 我看到主机数组没有分配问题并放置在其相对地址中,但是为什么读取的文件打印的是 0?

Cuda程序如下

0 投票
2 回答
31778 浏览

assembly - 为什么ARM PC寄存器指向下一条要执行的指令之后?

根据ARM IC。

在 ARM 状态下,PC 的值是当前指令的地址加上 8 个字节。

在拇指状态:

  • 对于 B、BL、CBNZ 和 CBZ 指令,PC 的值是当前指令的地址加上 4 个字节。
  • 对于所有其他使用标签的指令,PC 的值是当前指令的地址加上 4 个字节,结果的 bit[1] 清零以使其字对齐。

简单地说,PC寄存器的值指向下一条指令之后的指令。这是我不明白的。通常(特别是在 x86 上)程序计数器寄存器用于指向要执行的下一条指令的地址。

那么,这背后的前提是什么?条件执行,可能吗?

0 投票
1 回答
2883 浏览

assembly - ARM指令到十六进制负载,如pc相对LDR

我一直在尝试将 arm 指令转换为包括 PC 寄存器的十六进制,例如

我查了《ARM架构参考手册》,LDR指令的描述如下: 在此处输入图像描述

问题出现了, 1. cond 值,见指令格式,LDR 指令对应的cond 值是0101(PLUS) 还是?2、Rd为PC寄存器,如何用四位来描述PC[15:12]

0 投票
2 回答
5461 浏览

assembly - “mov offset(%rip), %rax”是做什么的?

rax得到偏移量加上这条指令的地址,还是下一条?从微码的角度来看,如果答案是下一条指令,可能会更容易。

0 投票
0 回答
432 浏览

c - 有没有一种方法可以在 C 中本地化文字池,如程序集中的“ltorg”?

我正在实现一个 C 函数,它将在运行时复制到另一个内存位置。

我避免在其中调用函数,只在其中使用纯常量。当我检查汇编输出时,常量访问被转换为 PC 相对寻址指令。然而,相对地址(文字池)在函数之外。(看起来它们是在随机的地方生成的)。

我知道在 ARM 程序集中有一个.ltorg指令可以本地化这些文字池,C 中是否有方法可以做同样的事情?

0 投票
3 回答
719 浏览

java - 编译器生成的相对地址以及它们如何在(最好是 java)字节码中表示?

如果在编译时无法进行地址绑定,则在加载/链接或运行时完成,将相对(或者我们可以称它们为可重定位地址)地址与实际物理地址相关联。此外,CPU 还会在绑定物理地址之前将这些相对地址转换为逻辑地址。

从逻辑到物理的转换对我来说是一个已知的概念。但是,我对那些相对寻址感到困惑(AFAIK,他们称之为相对,因为它们是由编译器相对于零给出/分配的)。我不确定(在字节码中)使用什么相对地址,或者它们是否真的需要,或者它们甚至与逻辑地址相同?

0 投票
1 回答
498 浏览

assembly - 类汇编语言编译器上的 PC 相对寻址

我目前正在为一种自定义的类似 asm 的编程语言编写编译器,我真的很困惑如何为数据标签进行正确的 PC 相关寻址。

上面的伪代码在编译后会产生以下十六进制:

3180,F020F00CLDA,IPTHLT指令。

从代码中可以看出,该LDA指令使用标签hello作为参数。编译后,它变成 value 02,这意味着“Incremented PC + 0x02”(如果您查看代码,那是“Hello, world!”行的位置,相对于LDA调用。事情是:.STR不是指令,因为它只告诉编译器它需要在可执行文件的末尾添加一个(0 终止的)字符串,因此,在hello标签声明之后是否还有其他指令,该偏移量将是错误的。

但是除了让编译器能够穿越时间之外,我找不到计算正确偏移量的方法。我必须“编译”两次吗?首先是数据标签,然后是实际指令?