d不应延迟初化和赋值小数组

原文

// dmd -betterC

extern(C) void main(int argc, char** argv)
{
    int[4] arr = 1;
}

这是个少得可怜的四个32位存储.把它推导*调用函数*不必要的,编译器应该只需在此发出四个存储.
这不仅适合int类型,其他内置类型也会受益.避免函数调用的上限可能高达512位(对应当前SIMD宽度).

查看当前主分支,看到了吗?没有memset32!:

_D4testQfFZv:
0000:   55              push      RBP
0001:   48 8B EC        mov       RBP,RSP
0004:   48 83 EC 10     sub       RSP,010h
0008:   48 B8 01 00 00 00 00 mov RAX,0100000001h
0012:   48 89 45 F0     mov       -010h[RBP],RAX
0016:   48 89 45 F8     mov       -8[RBP],RAX
001a:   C9              leave
001b:   C3              ret
posted @   zjh6  阅读(16)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示