我试图对程序和编程语言有一个更全面,更一般和更高级的理解。
我想了解它们的实际功能。我了解最低级别的机器代码是0和1s。然后,您需要装配。然后,您有了另一种高级语言,您想要调用的每个指令/功能/方法/调用/例程都映射到汇编中的某个指令或一组指令,对吗?上级语言无法提供或执行下级语言汇编所提供的正确之外的任何功能?
类似地,由于所有代码都在操作系统上运行,因此该代码只能执行操作系统提供的功能。代码无法执行OS实际提供的正确功能之外的任何功能?
答案 0 :(得分:0)
计算机具有指令集和机器代码,该指令集定义了可以在计算机上完成的操作。汇编代码本质上是一种更方便的表示形式,因此汇编代码可以执行机器可以执行的任何操作。必须在计算机上运行高级编程语言,因此它可能无法执行计算机无法执行的任何操作,尽管它很可能能够更方便地表达它(例如,print "foo"
而不是几十台计算机-代码说明)。该编程语言的编译器是直接生成机器代码,还是生成汇编代码,还是可能需要进一步处理的任何其他形式,都是实现选择的问题。
这使我们想到一个问题,即程序是否可能执行操作系统未明确规定的操作(无论所写的内容是什么)。我发现这是一种奇怪的表达方式,因为编写程序的目的是为您提供以前没有的功能,因此从某种意义上讲,您只为OS并未明确提供的功能编写程序。问题在于定义操作系统“提供”的内容。如果是通用操作系统,则其设计人员可能打算“提供”使您能够编写各种程序的能力。操作系统可以选择提供一些方便的功能(例如,创建文件的功能),但是如果它不提供这样的功能,您可以自己做,只要有适当的动机(对于文件创建示例,它可以做磁盘I / O-可能还需要您写磁盘驱动程序。
答案 1 :(得分:0)
我正在尝试获得更全面,更普遍和更高级的水平 了解程序和编程语言。
我想了解它们的实际功能。
我建议通过对现代硬件的理解来获得良好的性能和能效,例如:
使用subword parallelism
将matrix multiply
提高4倍。
通过展开循环以演示instruction level parallelism
的值来使性能加倍。
通过使用优化缓存来再次提高性能
blocking
。
最后,使用thread-level parallelism
从16个处理器中加速14个。
所有这四个优化总共仅将24行C代码添加到您在
计算机的组织和设计:硬件软件接口(第5版)
或类似书籍。
要指出一点,即使这是一个不错的开端,值得深入研究的不仅仅是“学习python”。因此,了解底层知识确实会在许多方面影响高层编程,这就是您根据自己的问题追求的目标。
实际上不仅有程序集-在本主题中处理的还有硬件描述语言(如VHDL),例如: https://electronics.stackexchange.com/questions/132611/whats-the-motivation-in-using-verilog-or-vhdl-over-c