Questions tagged «low-level»

7
调用堆栈如何工作?
我试图更深入地了解编程语言的低级操作是如何工作的,尤其是它们如何与OS / CPU交互。我可能已经在Stack Overflow上的每个与堆栈/堆相关的线程中阅读了每个答案,它们都很出色。但是还有一件事我还没有完全理解。 在伪代码中考虑这个函数,它通常是有效的Rust代码;-) fn foo() { let a = 1; let b = 2; let c = 3; let d = 4; // line X doSomething(a, b); doAnotherThing(c, d); } 这就是我假设堆栈看起来像第X行的样子: Stack a +-------------+ | 1 | b +-------------+ | 2 | c +-------------+ | 3 | d …

10
如何在C ++类的内存结构中创建一个“空格”?
问题 在低级别的裸机嵌入式环境中,我想在内存中以C ++结构创建一个空白且没有任何名称的名称,以禁止用户访问此类内存位置。 现在,我通过放置一个丑陋的uint32_t :96;位域(可以方便地代替三个词)来实现它,但是它会引起GCC的警告(位域太大,无法容纳在uint32_t中),这是非常合理的。 虽然可以正常工作,但是当您要分发包含数百种警告的库时,它并不是很干净。 我该怎么做呢? 为什么首先存在问题? 我正在从事的项目包括定义整个微控制器系列(STMicroelectronics STM32)的不同外设的存储器结构。为此,结果是一个类,其中包含多个结构的联合,这些结构定义了所有寄存器,具体取决于目标微控制器。 下面是一个非常简单的外设的简单示例:通用输入/输出(GPIO) union { struct { GPIO_MAP0_MODER; GPIO_MAP0_OTYPER; GPIO_MAP0_OSPEEDR; GPIO_MAP0_PUPDR; GPIO_MAP0_IDR; GPIO_MAP0_ODR; GPIO_MAP0_BSRR; GPIO_MAP0_LCKR; GPIO_MAP0_AFR; GPIO_MAP0_BRR; GPIO_MAP0_ASCR; }; struct { GPIO_MAP1_CRL; GPIO_MAP1_CRH; GPIO_MAP1_IDR; GPIO_MAP1_ODR; GPIO_MAP1_BSRR; GPIO_MAP1_BRR; GPIO_MAP1_LCKR; uint32_t :32; GPIO_MAP1_AFRL; GPIO_MAP1_AFRH; uint32_t :64; }; struct { uint32_t :192; GPIO_MAP2_BSRRL; GPIO_MAP2_BSRRH; uint32_t …

30
为什么要用汇编编程?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 去年关闭。 改善这个问题 我对那里所有的核心低级黑客都有疑问。我在博客中碰到了这句话。我并不真正认为消息来源很重要(如果您真的很在意,那就是Haack),因为这似乎是一种常见的说法。 例如,许多现代的3D游戏都有以C ++和Assembly编写的高性能核心引擎。 就汇编而言,这是用汇编语言编写的,因为您不希望编译器发出额外的指令或使用过多的字节,或者您使用的是无法在C中表达的更好的算法(或者在没有编译器迷惑了他们)? 我完全明白了解底层内容很重要。我只想理解为什么理解汇编后的程序。

9
x << 1或x << 10哪个更快?
我发誓,我不想优化任何事情,我只是出于好奇而问这个问题。我知道,在大多数硬件有位移(例如的组件的命令shl,shr),它是一个命令。但这有多少关系(纳秒级或CPU精巧度)重要?换句话说,以下任一处理器在任何CPU上的运行速度都更快吗? x &lt;&lt; 1; 和 x &lt;&lt; 10; 而且请不要讨厌我这个问题。:)
83 c++  c  performance  cpu  low-level 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.