小编sad*_*jfh的帖子

使用CMP reg测试寄存器是否为零,0与OR reg,reg?

使用以下代码是否存在任何执行速度差异:

cmp al, 0
je done
Run Code Online (Sandbox Code Playgroud)

以下内容:

or al, al
jz done
Run Code Online (Sandbox Code Playgroud)

我知道JE和JZ指令是相同的,并且使用OR可以提供一个字节的大小改进.但是,我也关心代码速度.逻辑运算符似乎比SUB或CMP更快,但我只是想确定.这可能是规模和速度之间的权衡,或双赢(当然代码将更加不透明).

optimization x86 assembly micro-optimization

13
推荐指数
2
解决办法
3755
查看次数

如何在C中实现stdarg

为了好奇,我想为标准C库中的一些函数编写最小的替换.到目前为止,我已经完成了printf(),strlen(),strcpy(),memcpy(),memset(),等...但是当我尝试使用printf函数,我不知道如何实现stdarg.h!我能做到这一点的方式是什么?

它是使用宏还是实际功能?

我在32位x86上使用gccOR clang,如果它有助于使这更容易回答.

c header-files

5
推荐指数
1
解决办法
1339
查看次数

在C中生成随机bool的简单方法是什么?

我想生成一个随机布尔值用于游戏,因此它不需要加密安全.我将stdbool.h在我的代码中使用,我也已经完成了#include <stdlib.h>.优选地,它应该非常快(因为我将生成其中许多),并且它应该能够在C89中完成(只是偏好).我对C++中的这一切并不感兴趣.

以下是我提出的一些方法:

  • 从/ dev/urandom读取,过滤掉单个数字,> 5 = true,<5 = false.
  • 继续调用rand()并过滤掉低/高值.

c random

5
推荐指数
1
解决办法
5581
查看次数

传递结构指针与传递结构

我最近写了很多程序来struct绕过函数,以避免全局变量.但是,我想知道传递struct自身或其指针是否更有效.它听起来应该是这样,因为指针(在我的64位GNU/Linux系统上)是8个字节,而struct充满指针显然远不止于此.

但是,如果我有这个struct:

struct Point {
    int x;
    int y;
}
Run Code Online (Sandbox Code Playgroud)

这是8个字节,与指针大小相同,是将整个struct传递给函数还是传递指针更好?我非常精通C内存分配,因此malloc在初始化指针时使用和朋友不是问题.

另一个想法是,如果它们很大,直接传递结构会占用大量的堆栈空间.然而,简单地使用指针会耗尽内存,这free很容易编辑.

c linux struct pointers

5
推荐指数
1
解决办法
2458
查看次数

如何在C中创建一个struct数组?

我正在做一个roguelike游戏.我想将地图表示为结构数组,例如在数组中有256个结构.地图是一个16*16的图块网格,每个图块都有属性,例如它上面是否有项目.

所以说我想要一个256个结构的数组tiles:

struct tiles {
        char type; /* e.g. dirt, door, wall, etc... */
        char item; /* item on top of it, if any */
        char enty; /* entity on top of it, e.g. player, orc if any */
}
Run Code Online (Sandbox Code Playgroud)

然后,我需要访问这样的结构数组:

int main(void)
{
        unsigned short int i;
        struct tiles[256];

        for (i = 1; i <= 256; i++) {
                struct tiles[i].type = stuff;
                struct tiles[i].item = morestuff;
                struct tiles[i].enty = evenmorestuff;
        }
}
Run Code Online (Sandbox Code Playgroud)

c arrays struct roguelike

2
推荐指数
3
解决办法
2万
查看次数