问题标签 [low-level]

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 投票
7 回答
13377 浏览

low-level - CPU 仿真和锁定到特定的时钟速度

如果您阅读了我的另一个问题,您就会知道我在这个周末花了一个 6502 CPU 仿真器作为编程练习。

CPU 模拟器大部分是完整的,从我有限的测试来看似乎相当准确,但是它运行得非常快,我想将它降低到机器的实际时钟速度。

我当前的测试循环是这样的:

如您所知,每个操作码都需要特定的时间才能完成,因此在倒计时 CPU 周期时钟之前,我不会运行下一条指令。这提供了操作码之间的适当时间,只是整个事情运行得很快。

目标 CPU 速度是 1.79mhz,但是我想要解决时钟问题的任何解决方案,以将速度保持在 1.79mhz,即使我增加了复杂性,所以我不必调整它。

有任何想法吗?

0 投票
6 回答
1096 浏览

c - 优化伽罗瓦域算术中的 y = x*x

我有这个 C 代码可以对 GF(8) 进行乘法运算:

这或多或少是教科书的实施。

我想知道如果我可以断言a 总是b,我是否对上述算法有一个聪明的优化,例如我做平方而不是乘法。顺便说一句,我不是在加密使用之后。我只想利用 GF(8) 中的 x*x 将 x 的位与零位一一交错的事实。

已经有非常聪明的方法来进行位交织,但是因为我发现 GF(8) 中的 x*x 做了位交织的事情(偶然)我不能停止尝试将它用于位交织优化。

有任何想法吗?

0 投票
1 回答
7139 浏览

c - GCC 中有固定大小的整数吗?

在 MSVC++ 编译器上,可以对具有特定大小的整数使用__int8__int16__int32类似类型。这对于需要使用低级数据结构(如自定义文件格式、硬件控制数据结构等)的应用程序非常有用。

我可以在 GCC 编译器上使用类似的等效项吗?

0 投票
4 回答
13201 浏览

unicode - 如何在 Unicode 中将字符串设置为大写/小写?

这主要是一个我很好奇的理论问题。(我不是想通过自己编码或任何东西来做到这一点,我不是在重新发明轮子。)

我的问题是大写/小写等价表如何适用于 Unicode。

例如,如果我必须在 ASCII 中执行此操作,我会取一个字符,如果它落在 [az] 范围内,我会将 A 和 a 之间的差相加。

如果它不在那个范围内,我会为 10 个左右的重音字符加上 ñ 提供一个小的等价表。(或者,我可以有一个包含 256 个条目的完全等价数组,其中大部分与输入相同)

但是,我猜有一种更好的方法来指定 Unicode 中的等价,因为有数十万个字符,理论上,可以添加一种新语言或一组字符(我期待你发生这种情况时不需要修补窗口)。

Windows 是否对每个字符都有一个巨大的硬编码等价表?或者这是如何实现的?

一个相关的问题是 SQL Server 如何实现基于 Unicode 的不区分重音和不区分大小写的查询。它是否有一个内部表告诉它 é ë è E É È 和 Ë 都等价于“e”?

在比较字符串时,这听起来不是很快。

它如何快速访问索引?它是否已经索引值转换为它们的“基本”字符,对应于该字段的排序规则?

有谁知道这些东西的内部原理?

谢谢!

0 投票
5 回答
6531 浏览

winapi - 来自 Windows 的低级键盘输入

哪些win32调用可用于从windows服务全局检测按键事件(不仅仅是1个窗口,我想每次按下一个键时都收到一条消息)?

0 投票
9 回答
1052 浏览

c++ - 如何在 PC/Visual C++ 上找出指针是否在堆栈上

[这是专门针对 PC/Visual C++ 的(尽管任何其他答案都会很有启发性:))]

如何判断指针是否来自堆栈中的对象?例如:

所以只有第二个断言(pB)应该跳闸。我正在考虑使用一些内联汇编来确定它是否在 SS 段寄存器或类似的东西中。有谁知道是否有任何内置功能,或者一个简单的方法来做到这一点?

谢谢!钢筋混凝土

0 投票
24 回答
38096 浏览

low-level - 在不使用 + 运算符的情况下添加两个数字的最佳方法是什么?

我和一个朋友在脑筋急转弯中来回走动,我不知道如何解决这个问题。我的假设是使用一些位运算符是可能的,但不确定。

0 投票
4 回答
6353 浏览

python - Python中的按位减法

这是我昨天的问题的后续行动:

CMS 好心地提供了这个使用位运算符在 C 中添加两个数字的示例:

它工作得很好,然后我将它移植到 Python,如下所示:

它们都适用于加法,C 程序也适用于减法。但是,Python 程序会进入一个无限循环进行减法。我试图深入了解并在此处发布程序以供进一步实验:http ://codepad.org/pb8IuLnY

谁能告诉我为什么 C 处理这个问题的方式和 CPython 处理这个问题的方式会有所不同?

0 投票
25 回答
20767 浏览

operating-system - 操作系统是如何“制造”的?

创建操作系统似乎是一个庞大的项目。怎么会有人开始呢?

例如,当我将 Ubuntu 弹出到我的驱动器中时,我的计算机如何才能运行它? (我想,这才是我真正想知道的。)

或者,从另一个角度来看,可以在磁盘上并且仍然作为操作系统“运行”的最少字节数是多少?

(如果这含糊不清,我很抱歉。我这个主题一无所知,所以我不能很具体。我假装对计算机的工作原理有相当多的了解,但我对这个主题一无所知。 )

0 投票
6 回答
3430 浏览

c - C 标准库的更安全替代方案

C 标准库在 I/O 安全方面出了名的差。许多函数都有缓冲区溢出(gets, scanf),或者如果没有给出正确的参数(scanf)会破坏内存,等等。每隔一段时间,我就会遇到一个有进取心的黑客,他编写了自己的库,但没有这些缺陷。

你见过的最好的图书馆是什么?你有没有在生产代码中使用过它们,如果有的话,这不仅仅是业余项目吗?