通过字母表并行化迭代

时间:2017-11-08 17:45:49

标签: c c99 brute-force

我必须编写一个从aaaa到zzzz迭代的小代码。 到现在为止,我使用32位整数和朴素的方法

static const char ASCII_A = 'a';
static const char ASCII_Z = 'z';
char C0, C1, C2, C3;

for (C3 = ASCII_A; C3 <= ASCII_Z; C3++) {
    for (C2 = ASCII_A; C2 <= ASCII_Z; C2++) {
        for (C1 = ASCII_A; C1 <= ASCII_Z; C1++) {
            for (C0 = ASCII_A; C0 <= ASCII_Z; C0++) {
                // set in values
                uint32_t w = (C0 << 24) | (C1 << 16) | (C2 << 8) | C3;

我现在想要升级并使用128位向量和SSE2一次平行4个这样的操作,所以w0携带aaaa,w1携带aaab等进行一次循环运行。 仅使用4的步骤不会有效,因为26/4不是整数,因此每次都不会填充向量。 我不能使用任何库,代码必须在C99中编译

0 个答案:

没有答案