C/C++转换为汇编,低级内存行为:它是如何完成的?

jok*_*oon 6 c c++ memory assembly memory-management

我在游戏编程学校,在这里我们必须学习代码速度,这似乎很重要.

在使用C/C++进行编程时,是否有任何教程或列表需要注意?

我想知道很多事情,例如为什么C的默认行为是通过传递数据而不是引用/地址,或者编译器如何转换对汇编器的引用,或者C循环如何将自身转换为JMP.

我很担心,因为python使用另一种方式,但另一方面,python不使用运算符来复制值,而是一个语法上很重的函数.

我真的不认为知道如何在汇编中编程是非常必要的,因为它很痛苦,我想它只需要了解寄存器等.

Edw*_*nge 6

查找编译器的文档,以便交换机输出asm步骤而不是机器代码.我使用的每个编译器都有一个.使用它向asm发送一些简单的代码并检查它.

当您单步执行代码时,VS还可以选择"查看程序集".

对你的问题没有任何明确的答案.这完全取决于编译器和架构.甚至在提供给编译器的参数上也是如此.

编辑:

对你的问题没有明确答案的事实不会阻止人们做出决定.一个例子是愚蠢的事情,比如通过引用传递一个大对象(如字符串:p)而不是按值返回.对于新的C++开发人员来说,这些事情似乎是合理的.OF COURSE将字符串传递给要填充的函数比构建副本并从该函数返回它只是为了在赋值中再次复制它更快.事实上,事实并非如此; 它是非常依赖于编译器的,但是你可以通过尝试全智能来踩踏编译器的优化能力.

有很多关于使你的代码变得快速的错误信息.拿出一粒盐就可以了.大多数声称知道如何制作快速代码的人都充斥着垃圾.快速代码的唯一合理答案是分析您的代码.在进行微观优化的时候,你会做一堆非常特定于你的目标平台的东西.一般知识,"这是更快,"那些东西对你来说没有任何用处.