我应该何时将类型定义为结构或类?
我知道struct是值类型,而类是引用类型.所以我想知道,例如,我应该将堆栈定义为结构还是类?
有没有优化此代码(x86-64)的好方法?
mov dword ptr[rsp], 0;
mov dword ptr[rsp+4], 0
Run Code Online (Sandbox Code Playgroud)
其中立即数可以是任何值,不一定是零,但在这种情况下总是立即数。
原来的那对店还慢吗?硬件中的写入组合和 ?ops 的并行操作可能会使一切变得非常快?我想知道有没有问题可以解决。
我正在考虑类似的事情(不知道以下说明是否存在)
mov qword ptr[rsp], 0
Run Code Online (Sandbox Code Playgroud)
或者
mov eax, 0;
mov qword ptr[rsp], rax ; assuming we can spare a register, a bad idea to corrupt one though
Run Code Online (Sandbox Code Playgroud) 在D中,如何在D中声明指向非常量/可变数据的const或不可变指针?
dlang网站说您不能仅仅将其声明为const,因为这会使指针const及其指向的数据都不可修改。
我已经阅读了与此相关的较早的帖子,表明这根本是不可能的。如果是这样,那么这就是语言设计中的一个大漏洞。应该有可能单独声明指针为不可修改的指针,否则这是疯狂的。使const从指针传播到也隐含const数据可能是有用的默认安全功能。
是否定义了D结构的确切布局?也就是说,每个成员定义的确切偏移量和以编译器无关的方式?这意味着,幸运或遗憾的是,根据您的需要,编译器将被禁止重新排序字段以获得较小项目的最佳打包并最小化所有偏移.
在最近的高端Intel CPU上重新排序x64(x86-64)指令可以获得多少性能提升.在非常时间紧迫的情况下值得打扰吗?
我还想知道通过改变寄存器使用/使用额外的寄存器(如果空闲)来获得收益的可能性,以便在某些奇怪的情况下允许更长距离的代码移动?
函数的返回类型自动引用是什么意思?我只是不理睬它.我从AliÇehreli的在线书籍中选取了一个例子,并尝试以各种方式对其进行了调整,并观察了GDC生成的汇编程序,我仍然没有更明智.(我是一位非常有经验的asm和C程序员,但是D的新手.)你真的需要使用这个功能吗?
在D编译器中," final switch"构造switch在D中提供了哪些额外的优化可能性(如果有的话)?(DLang)
d ×5
assembly ×2
optimization ×2
x86-64 ×2
const ×1
function ×1
immutability ×1
interfacing ×1
layout ×1
pointers ×1
portability ×1
reference ×1
return-type ×1
struct ×1
x86 ×1