问题标签 [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 投票
1 回答
854 浏览

ip - 第 N 台计算机的 ip 寻址

问题是,计算这些信息:

“ip 子网零,第一个 ip,最后一个 ip,广播,ip 子网掩码”

对于 X 台 PC 的 B 类 IP (172.16.0.0/16),例如,对于 27811 台计算机...

0 投票
2 回答
969 浏览

c - 使用 C 确定地址线的数量和 RAM 字长

谁能告诉我如何使用 C 确定处理器中地址线的数量?这不能等于处理器寄存器的大小,因为地址线的数量可能与寄存器的大小不同(例如,在 8086 中,地址线是 20,而寄存器的大小是 16)。

同理,我们能否通过C程序求出RAM的字长(即每个可寻址位置的大小)?

0 投票
5 回答
396 浏览

c++ - 指针寻址如何在 C++ 中工作

我对指向变量地址的指针感到困惑 图片

它指向最后两个字节这是如何工作的

.

0 投票
3 回答
598 浏览

multithreading - 汇编/多任务处理中的内存寻址

我了解机器代码中的程序如何将内存中的值加载到寄存器中、执行跳转或将寄存器中的值存储到内存中,但我不明白这对多个进程是如何工作的。一个进程是动态分配内存的,所以它必须使用相对寻址吗?这是自动完成的(意味着有执行相对跳转的汇编指令等),还是程序必须“手动”将正确的偏移量添加到它所寻址的每个内存位置。

我还有一个关于多任务处理的问题,这有点相关。未运行的操作系统如何停止线程并继续下一个线程。这是通过定时中断完成的吗?如果是这样,那么如何为线程保留寄存器中的值。在将控制权交给不同的线程之前,它们是否已保存到内存中?或者,不是定时中断,线程只是简单地选择一个放弃控制的好时机。在定时中断的情况下,如果线程被赋予处理器时间而它不需要它会发生什么。它是否必须浪费它,它可以手动调用中断,还是它会提醒操作系统它不需要太多时间?

编辑:或者在运行之前编辑可执行文件以补偿正确的偏移量?

0 投票
1 回答
441 浏览

gcc - 静态和局部变量的寻址模式

为什么直接寻址静态变量而间接寻址局部变量?我看不到本地人的间接来自哪里!

0 投票
3 回答
3661 浏览

c++ - C++ 散列:开放寻址和链接

对于链接:

有人可以向我解释这个概念并提供一个理论示例和一个简单的代码吗?

我得到了“每个表位置都指向散列到该位置的项目的链表(链)”的想法,但我似乎无法说明实际发生了什么。

假设我们有 h(x)(散列函数)= x/10 mod 5。现在散列 12540、51288、90100、41233、54991、45329、14236,会是什么样子?

对于开放寻址(线性探测、二次探测和每个 R 位置的探测),有人也可以向我解释一下吗?我试着用谷歌搜索,但我似乎更困惑了。

0 投票
1 回答
767 浏览

cuda - CUDA 共享内存寻址

我知道当我在内核中声明一个共享内存数组时,所有线程都声明了相同大小的数组。像这样的代码

将在每个线程中创建一个 20 字节的数组。我理解解决共享内存的方式是它在所有线程中都是通用的。所以,如果我按如下方式处理下标 10

它是所有线程中完全相同的内存位置。不同的线程不会为下标10访问不同的共享内存地址。这是正确的吗?编译器当然会抛出下标超出范围的警告。

0 投票
3 回答
12641 浏览

matlab - MATLAB:使用逻辑索引提取子矩阵

我正在寻找一个优雅的解决方案来解决 MATLAB 中这个非常简单的问题。假设我有一个矩阵

和形式的逻辑变量

如果我尝试检索与in 中的值M关联的元素,我会得到一个列向量1I

[5 7 ; 6 13]从这个逻辑索引中获取矩阵的最简单方法是什么?

如果我知道 的非零元素的形状I,我可以在索引后使用重塑,但这不是一般情况。

另外,我知道 MATLAB 中这种类型的索引的默认行为对于非零值I不形成矩阵的情况强制保持一致性,但我想知道是否有针对这种特殊情况的简单解决方案.

0 投票
4 回答
1685 浏览

c++ - 如何在 C/C++ 中从运行时卸载内存偏移计算?

我正在实现一个简单的 VM,目前我正在使用运行时算法来计算单个程序对象地址作为基指针的偏移量。

我今天就这个主题问了几个问题,但我似乎无处可去。

我从问题一中学到了一些东西—— 对象和结构成员访问以及地址偏移量计算——我了解到现代处理器具有虚拟寻址功能,允许计算内存偏移量而无需任何额外的算术周期。

从问题二开始 -在 C/C++ 编译期间地址偏移是否已解决?- 我了解到手动进行偏移时无法保证会发生这种情况。

现在应该很清楚,我想要实现的是利用硬件的虚拟内存寻址特性并从运行时卸载这些特性。

我正在使用 GCC,至于平台 - 我正在 Windows 中的 x86 上进行开发,但由于它是一个 VM,我希望它能够在 GCC 支持的所有平台上有效地运行。

因此,欢迎提供有关该主题的任何信息,并将不胜感激。

提前致谢!

编辑:关于我的程序代码生成的一些概述 - 在设计阶段,程序被构建为树层次结构,然后递归序列化为一个连续的内存块,以及索引对象并计算它们从程序内存块开始的偏移量.

编辑2:这是VM的一些伪代码:

情况 1 是一个接受一个参数的函数,该参数在指令之后立即找到,因此它作为指令的 1 个字节的偏移量传递。指令指针递增 1 + 第一个参数的大小以查找下一条指令。

情况 2 是一个接受两个参数的函数,和之前一样,第一个参数作为 1 字节偏移量传递,第二个参数作为 1 字节偏移量加上第一个参数的大小传递。指令指针然后增加指令的大小加上两个参数的大小。

情况 3 是 goto 语句,指令指针增加一个偏移量,该偏移量紧跟 goto 指令。

编辑3:据我了解,操作系统将为每个进程提供自己专用的虚拟内存寻址空间。如果是这样,这是否意味着第一个地址总是......以及零,所以从内存块的第一个字节的偏移实际上就是这个元素的地址?如果内存地址专用于每个进程,并且我知道我的程序内存块的偏移量以及每个程序对象相对于内存块第一个字节的偏移量,那么对象地址是否在编译时解析?

问题是这些偏移量在 C 代码编译期间不可用,它们在“编译”阶段和转换为字节码期间变得已知。这是否意味着没有办法为“免费”进行对象内存地址计算?

例如,在 Java 中这是如何完成的,只有虚拟机被编译为机器代码,这是否意味着对象地址的计算会因为运行时算法而降低性能?

0 投票
1 回答
126 浏览

assembly - Addressing in x86

I have got a problem with addressing in x86. Can someone tell me what this does: