问题标签 [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.
assembly - 为什么有这么多不同的调用约定?
从历史上看,为什么似乎每个人和他们的小弟都定义了自己的调用约定?你有 C、C++、Windows、Pascal、Fortran、Fastcall 以及可能还有无数其他我没想到会提到的东西。对于绝大多数用例来说,一种约定不应该是最有效的吗?有什么好的理由更喜欢其中一个吗?
iphone - iPhone iOS4低级摄像头控制?
有没有办法在 iPhone 4 的 iOS4 中手动设置低级静态相机设置,如快门速度、光圈或 ISO?我认为它不存在于官方 SDK 中,但也许有人找到了一些私有 API 来允许这样做?
我发现我的 iPhone 4 相机无法使用,因为即使在相当不错的照明条件下,它也总是坚持以最慢的 1/15 秒快门速度拍摄,如果拍摄对象在移动,则会导致运动模糊。
谢谢!
windows - 在物理块级别拦截磁盘活动
我想这应该可以通过过滤器驱动程序实现,但我到底需要什么类型?
optimization - OpenGL ES 2.0 中元胞自动机的纹理格式
我需要一些快速的建议。
我想在 GPU 上模拟一个元胞自动机(来自A Simple, Efficient Method for Realistic Animation of Clouds )。但是,我仅限于不支持任何位运算的 OpenGL ES 2.0 着色器(在 WebGL 中)。
由于此元胞自动机中的每个单元都代表一个布尔值,因此每个单元存储 1 位将是理想的。那么在 OpenGL 的纹理格式中表示这些数据的最有效方法是什么?有什么技巧还是我应该坚持使用直接的 RGBA 纹理?
编辑:这是我到目前为止的想法......
目前我正在考虑使用普通的 GL_RGBA8、GL_RGBA4 或 GL_RGB5_A1:
可能我可以选择 GL_RGBA8,并尝试使用浮点运算提取原始位。例如
x*255.0
,给出一个近似整数值。但是,提取单个位有点麻烦(即除以 2 并四舍五入几次)。我也对精度问题保持警惕。如果我选择 GL_RGBA4,我可以为每个组件存储 1.0 或 0.0,但我也可以尝试与之前使用 GL_RGBA8 相同的技巧。在这种情况下,它只是
x*15.0
. 不确定它是否会更快或看不到,因为提取位的操作应该更少,但每次纹理读取的信息更少。使用 GL_RGB5_A1 我可以尝试看看是否可以将我的单元格与一些附加信息打包在一起,例如每个体素的颜色,其中 alpha 通道存储 1 位单元格状态。
optimization - 用于 x86 和 +1 移位的快速 memmove(用于移动到前端变换)
对于快速 MTF(http://en.wikipedia.org/wiki/Move-to-front_transform),我需要更快的版本将 char 从数组内部移动到它的前面:
cachegrind 显示,对于 memmove,这里有很多分支错误预测。
对于其他版本的代码(不是第一个示例中的 memmove,而是这个)
有很多字节读取/写入、条件分支和分支错误预测
i 不是很大,因为它是用于“良好”输入的 MTF - BWT 之后的文本文件(Burrows–Wheeler 变换)
编译器是 GCC。
c++ - 检查 NULL 时要忽略多少位?
以下使用 seg-V 崩溃:
这是因为虽然i
不是NULL
它仍然无效。NULL
如果调用代码从指针中获取数组索引操作的地址,也会发生同样的问题。
对此的一种解决方案是修剪低位:
但是我应该/可以去掉多少位?
编辑,我不担心未定义的行为,因为无论如何我都会在这种情况下中止(但比 seg-v 更干净)。
FWIW:这是一个半假设的情况。导致我想到这一点的错误在我发布之前已修复,但我之前遇到过它并且正在考虑将来如何使用它。
为了论证而可以假设的事情:
- 如果用 seg-v 的东西调用 Set,这是一个错误
- Set 可能会被我不负责修复的代码调用。(例如我提交了一个错误)
- 我试图修复的代码可能会调用 Set 。(例如,我在调试工作中添加了完整性检查。)
- 以不提供有关调用 Set 的位置的信息的方式调用我。(即允许 Get 到 seg-v 不是调试任何东西的有效方法。)
- 代码不需要是可移植的或捕获 100% 的错误指针。它只需要经常在我当前的系统上运行,就足以让我找到哪里出了问题。
c# - C# 中真正的低级声音生成?
任何人都知道在 C# 中创建任意声波并从扬声器播放的明智方法吗?
这个问题多年来一直不时出现,我总是在多次失败后放弃它而没有找到解决方案。
我想做的就像一个反向可视化器,也就是说,我不想从声音中生成“数字”,我想从数字中生成声音。
就像获取我提供的带有采样率、采样大小和声音数据(例如整数数组)的函数,它会从中生成适当的 wav 文件(实时声音播放是理想的,但我我对此也非常满意)。
我知道 wav 文件规范遍布整个互联网,并且确实多次尝试创建上述功能,在低频方面取得了一些成功,但是一旦我开始弄乱每个样本的比特等......它就变成了一个巨大的、无法控制的混乱。
这不是已经以任何方式完成了吗?我不介意它使用什么,只要它有一个 .NET 托管包装器(我可以从最近的 VS 到时间访问它)。XNA 不支持这种方式的低电平音频。还发现了几个声称可以实现类似功能的示例,但它们要么根本不起作用,要么做的事情完全不同。
谢谢你。
operating-system - 是否可以检测到硬件显示是否完成了显示模式切换的过程?
我问的原因是因为我刚买了一个新的 LCD,在显示模式之间切换大约需要 5 秒,例如从 1920x1080x32bpp 到 1280x800x32bpp。是否存在用于检测显示器是否已准备好进行视频输出的编程解决方案?
c# - 为什么 Java 和 C# 有位移运算符?
整数乘法(暂时忘记除法)之间的差异是否仍然有利于移位,如果是,差异有多大?
它似乎只是一个低级别的优化,即使你想要它不应该(C#/Java)到字节码编译器或 jit 在大多数情况下捕获它?
注意:我测试了 C# 的编译输出(使用 gmcs Mono C# 编译器版本 2.6.7.0),即使乘以 2 的倍数,乘法示例也没有使用 shift 进行乘法运算。
C# http://csharp.pastebin.com/hcrRnPrb
cil http://csharp.pastebin.com/0js9F2c1
PS我忘记了在字节上使用它可能会有些用处,但在将它用于数字时仍然遇到一些麻烦。
windows - 分析 .exe/.dll (Windows PE) 文件中的代码膨胀
假设我有一个包含十几个不同模块的项目,这些模块产生一个结果 DLL,我如何分析它以便确定每个模块/函数贡献的实际文件大小?我知道对于已经剥离了很多信息的 Release 版本可能是不可能的,但是如果我有完整的源代码并且可以进行 Debug 版本呢?
另外,如果某处定义了大的静态变量,有没有办法可以轻松找到它们?
额外问题:Linux ELF 文件怎么样?