9得票3回答
堆栈中的变量如何访问?

假设我们有这些本地变量: int a = 0; int b = 1; int c = 2; int d = 3; 据我所知,这些将被分配在系统堆栈上,如下所示: | | | 3 | d | 2 | c | 1 | b |_0_| a 这是否意味着为了获得a的值,必须首先从堆栈中...

9得票2回答
不同的CPU核心在没有同步的情况下写入相同的RAM地址会发生什么?

假设有2个核心在同一时刻(误差在eta范围内)试图向同一个RAM地址(1字节)写入不同的值,而且没有使用任何交错指令或内存屏障。这种情况下会发生什么,并且主RAM中将写入什么值?第一个胜出吗?最后一个胜出吗?还是行为不确定的?

9得票2回答
实模式下的x86汇编语言:基础是如何完成的?

我目前正在阅读第一个Linux内核的源代码中的boot.s文件(假设0.01确实是第一个公开发布的版本)。 我懂得C语言和汇编语言,但后者比前者要少得多。即便如此,我似乎能够理解并基本掌握源文件中的代码。 然而,这个文件让我感到困惑。我现在意识到这是实模式,而不是保护模式。毋庸置疑,在我出...

9得票7回答
如果语句在晶体管级别上是什么?

我最近学习了数字逻辑课程,学习了AND、OR和其他各种逻辑。然而,我们没有涵盖编程中完全必要的if语句,这让我很好奇它是如何工作的。 我的猜测是它可能只是一个2:1多路选择器,随着添加更多的else语句,它会变成4:1和8:1,但对于这样一个简单的概念来说,这似乎有点太复杂了。 有人知道i...

9得票2回答
如何在PS模式下通过AP重启来检测站点的断开连接状态

我正在为一个无线网卡编写相当底层的驱动程序,虽然大部分规范都很简单,但我还没有理解一个问题:如果我的设备在DTIM帧之间被关闭了接收器并处于省电模式,并且在此期间访问点重启以致于我的关联断开,我该如何检测到呢? 我知道最常见的情况是同步彻底丢失,我将错过多个信标并在此之后回到AP搜索,但是如...

9得票4回答
通过WiFi传输的蓝牙协议?

我希望在Wi-Fi的物理传输上实现蓝牙协议,如果有意义的话。我的手机具备蓝牙功能,而我的笔记本电脑则拥有Wi-Fi卡(802.11a/b/g)。我知道Wi-Fi在2.412 GHz - 2.472 GHz范围内运行,而蓝牙则在2.402 GHz - 2.480 GHz范围内运行。这里似乎存在重...

9得票5回答
什么拥有更好的性能:乘法还是除法?

哪个版本更快:x * 0.5还是x / 2? 我曾经在大学修过一门叫做计算机系统的课程。从那时起,我记得两个值的乘法可以通过相对“简单”的逻辑门来实现,但除法不是一个“本地”操作,需要一个和被除数无限循环比较并递增除数的暂存器。 现在我必须优化一个包含大量除法的算法。不幸的是,它不仅仅是除...

8得票2回答
如何在Code::Blocks中查看反汇编?

我读了一篇关于C/C++底层原理的文章this article,作者通过编译器生成的汇编代码逐行向我们展示。他使用的是VS 2010,而我使用的是Code::Blocks。我该如何在Code::Blocks中查看反汇编呢?当我进入调试器并点击反汇编时,它显示一个空白窗口... 这是我编译的整...

8得票3回答
如何在Windows中打开磁盘并以低级别读取数据?

我知道在Linux中,打开磁盘并从低级别开始读取数据很简单,只需使用/dev/sda命令即可。但在Windows中,如何打开磁盘并开始低级别的数据读取呢? 在Python中,我尝试了以下代码: f = open("K:", "r") 我遇到了这个错误: Traceback (most...

8得票5回答
为什么要使用函数调用而不是变量地址来检测堆栈增长方向?

我看到了关于检测堆栈增长的不同回答,我了解到在现代架构中,堆栈可能会随机增长,可能会在堆上创建等等。 然而,在这个经典的面试问题中,我想要理解为什么人们使用函数调用而不是比较同一函数中的2个本地变量。我认为肯定有某些特殊的原因,但作为一个非C/低级开发者[Java :)],我只是猜测。 这...