标签: low-level

在D语言中比较两块内存的最有效方法是什么?

我需要一个内存块的比较函数,用于对D编程语言中的字节数组进行二进制搜索.它不需要任何有用的语义.它只需要很快并且是一个有效的比较函数(产生总排序的函数).已知要比较的存储器块具有相同的长度.

C memcmp实际上非常慢,因为它试图保留有用的字符串比较语义,这是我不需要的.以下是迄今为止我提出的最佳方法.有没有人知道更好的事情,最好不要使用非便携式CPU特定指令?

// Faster than C's memcmp because it doesn't preserve any meaningful
// semantics.  It's just a completely arbitrary, but really fast,
// comparison function.
int memoryCompare(const(void)* lhs, const(void)* rhs, size_t n) {
    for(; n >= uint.sizeof; n -= uint.sizeof) {
        if( *(cast(uint*) lhs) < *(cast(uint*) rhs)) {
            return -1;
        } else if( *(cast(uint*) lhs) > *(cast(uint*) rhs)) {
            return 1;
        }
        lhs += uint.sizeof;
        rhs += uint.sizeof;
    }

    for(; n >= ubyte.sizeof; n -= ubyte.sizeof) { …
Run Code Online (Sandbox Code Playgroud)

algorithm performance d binary-search low-level

7
推荐指数
1
解决办法
9829
查看次数

分析.exe/.dll(Windows PE)文件以获取代码膨胀

假设我有一个包含十几个不同模块的项目,它们生成一个结果DLL,我该如何分析它以便我可以识别每个模块/函数所贡献的实际文件大小?我知道在Release版本中可能无法删除大量信息,但是如果我拥有完整的源代码并且可以执行Debug构建怎么样?

另外,如果在某处定义了大的静态变量,有没有办法可以轻松找到它们?

奖金问题:Linux ELF文件怎么样?

windows performance diagnostics low-level dumpbin

7
推荐指数
1
解决办法
1604
查看次数

比较不同大小的位域

如果使用位运算符(会发生什么事&,|等)来比较两个大小不同的位域?

例如,0 1 1 00 0 1 0 0 0 0 1:

0 1 1 0 0 0 0 0 The smaller one is extended with zeros and pushed to the
0 0 1 0 0 0 0 1 most-significant side.
Run Code Online (Sandbox Code Playgroud)

要么...

0 0 0 0 0 1 1 0 The smaller one is extended with zeros and pushed to the
0 0 1 0 0 0 0 1 least-significant side.
Run Code Online (Sandbox Code Playgroud)

要么... …

c++ bit-manipulation low-level bit-fields

7
推荐指数
1
解决办法
5864
查看次数

困惑于内存映射

我最近开始进入低级别的东西,并研究引导加载程序和操作系统等...

据我了解,至少对于ARM处理器,外围设备由引导加载程序初始化,然后映射到物理内存空间.从这里开始,代码只需将值写入映射到外设寄存器的存储空间即可访问外设.稍后,如果芯片具有MMU,则可以将其用于进一步重新映射到虚拟存储器空间.我对吗?

我不明白的是(假设我上面说的是正确的):

  • 如果外围设备尚未映射到地址空间,引导加载程序如何初始化?
  • 通过虚拟内存映射,有一些表可以告诉MMU在哪里映射什么.但是什么决定了外围设备在物理内存中的映射位置?

memory arm low-level

7
推荐指数
1
解决办法
6562
查看次数

如何在Code :: Blocks中查看反汇编?

我读了这篇关于C/C++的一些低级基础的文章,作者基本上是通过编译器生成的汇编代码逐行向我们展示的.他正在使用VS 2010,但我没有,我使用Code :: Blocks.如何在那里查看拆卸?当我进入调试器,然后单击反汇编时,它会显示一个空白窗口...

这是我编译的C++(.cpp)代码(整个代码):

int main()
{
    int x = 1;
    int y = 2;
    int z = 0;

    z = x + y;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c c++ assembly codeblocks low-level

7
推荐指数
1
解决办法
9191
查看次数

如何检查文件描述符是否已关闭?

在POSIX环境中使用系统调用来操作文本文件(open(), close(), read(), write())时,有没有办法检查我在使用时是否实际关闭了文件描述符close(file_descriptor)

示例:

int main(int argc, char **argv)
{
    int input_file; // file descriptor for input file
    int output_file; // file descriptor for output file
    input_file = open(argv[1], O_RDONLY));
    ouput_file = open(argv[2], ...file properties & permissions and crap.....);

    // blah blah blah...

    close(input_file);
    close(output_file);

    // what can I code here to check if the file descriptor was actually closed?
}
Run Code Online (Sandbox Code Playgroud)

c low-level low-level-code low-level-io

7
推荐指数
1
解决办法
1万
查看次数

语言如何处理引擎盖下的印刷浮动?

作为一个个人项目,我一直在为我自己的C语言编写一个编译器来定位我自己设计的CPU模拟器.

作为其中的一部分,我想实现一个标准浮点库(典型的IEEE单精度),但我一直在努力想出一种以易于阅读的方式打印浮点数的方法(如1.2345而不是原始数据整数),我能想到的最好的是生成log 10 2的值并进行一些奇数乘法以获得适合打印的数字.

是否存在将浮点数转换为易于打印的形式或打印浮点数的算法,该浮点数可以在不使用printf("%f",float_value);或类似C语言的类型转换的情况下实现?

c algorithm floating-point decimal low-level

7
推荐指数
2
解决办法
146
查看次数

在Android上访问实时麦克风数据的最低级别

我刚刚编写了一些使用Audio Units的iOS代码,以硬件采样率从麦克风获取单声道浮点流.

它最终成了很多代码!首先,我必须设置一个音频会话,指定所需的48kHz采样率.然后我必须启动会话并检查实际返回的采样率.这将是实际的硬件采样率.然后我必须设置一个音频单元,实现渲染回调.

但我至少能够使用硬件采样率(因此我可以确定通过软件重新采样没有信息丢失).而且我也能够设置尽可能小的缓冲区大小,以便实现最小的延迟.

android上的类似过程是什么?

我怎样才能接通电线?

PS目前还没有提到它,但似乎可以在JNI级别工作.

audio android real-time microphone low-level

7
推荐指数
1
解决办法
420
查看次数

如何使用低级8位标志作为条件?

在我的键盘钩子中,每个按键都会获得一个标志,指示它是否被注入. http://msdn.microsoft.com/en-us/library/ms644967(VS.85).aspx

我从lParam中提取了一个KBDLLHOOKSTRUCT.我可以访问kbd.flags.XXX.我只是不知道如何将这个8位标志转换为if (injected) {...我知道如何使用的条件类型.

如果你们中的一个聪明的计算机科学类型会帮助我,我会非常感激.

    private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
    {
        KBDLLHOOKSTRUCT kbd = new KBDLLHOOKSTRUCT();
        Marshal.PtrToStructure(lParam, kbd);

        //if (injected) {...
Run Code Online (Sandbox Code Playgroud)

干杯!

c# flags low-level

6
推荐指数
2
解决办法
2353
查看次数

F中的F代表什么?

我正在学习汇编语言而且我遇到了FWORD(6个字节).我很好奇这是什么意思F?维基页面上没有任何内容,MSDN上也没有任何内容.

https://en.wikipedia.org/wiki/FWord

https://msdn.microsoft.com/en-us/library/26c4cbza.aspx

x86 assembly definition cpu-word low-level

6
推荐指数
1
解决办法
1655
查看次数