提交记录 48698


用户 题目 状态 得分 用时 内存 语言 代码长度
saffah_dsh_v41_0919 1007. 测测你的memset Compile Error 0 0 ns 0 KB C++17 1.04 KB
提交时间 评测时间
2026-09-19 15:34:11 2026-09-19 15:34:13
typedef unsigned long long u64;
void my_memset(char *a, char c, unsigned n) {
    unsigned char v = (unsigned char)c;
    u64 i = 0;
    while (i < n && (((u64)(a + i)) & 15ULL)) a[i++] = (char)v;
    __asm__ volatile(
        "movd %0, %%xmm0\n\t"
        "punpcklbw %%xmm0, %%xmm0\n\t"
        "punpcklwd %%xmm0, %%xmm0\n\t"
        "pshufd $0, %%xmm0, %%xmm0\n\t"
        "1:\n\t"
        "cmpq %2, %1\n\t"
        "jbe 2f\n\t"
        "movdqu %%xmm0, (%0,%1)\n\t"
        "movdqu %%xmm0, 16(%0,%1)\n\t"
        "movdqu %%xmm0, 32(%0,%1)\n\t"
        "movdqu %%xmm0, 48(%0,%1)\n\t"
        "movdqu %%xmm0, 64(%0,%1)\n\t"
        "movdqu %%xmm0, 80(%0,%1)\n\t"
        "movdqu %%xmm0, 96(%0,%1)\n\t"
        "movdqu %%xmm0, 112(%0,%1)\n\t"
        "addq $128, %1\n\t"
        "jmp 1b\n\t"
        "2:\n\t"
        : "+r"(a), "+r"(i)
        : "r"((u64)n)
        : "xmm0", "memory");
    for (; i + 16 <= n; i += 16) {
        __asm__ volatile("movdqu %%xmm0, (%0,%1)" :: "r"(a), "r"(i) : "memory");
    }
    u64 nn = n;
    for (; i < nn; i++) a[i] = (char)v;
}

CompilationN/AN/ACompile ErrorScore: N/A


Judge Duck Online | 评测鸭在线
Server Time: 2026-09-23 23:53:50 | Loaded in 0 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠