谁在Java或C++源代码中执行算术和逻辑运算

Who does the arithmetic and logic operations in the Java or C++ source code?

本文关键字:逻辑运算 执行 Java C++ 源代码 谁在      更新时间:2023-10-16

例如:

int a = 6;
int b = 5;
int c = a + b; // Who does this?

编译器能做到吗?

如果是,那么一个从控制台输入中获取a和b值的程序怎么样在这种情况下,object.exe文件已经创建,编译器只处理源文件,对吗?

在C++中,编译器发出指令供处理器执行。

但是,编译器可以优化常量并发出其他指令。在上述情况下,编译器可能会发出以下指令:

  mov C, 11  ; Move the value 11 into register for the C variable.

使用Java,编译器创建Java字节代码,供Java虚拟机执行。同样,编译器或JVM可以简化或优化指令。

编辑1:从控制台读取
在C++中,编译器为您提供的语句发出指令,以便从控制台读取值。如果程序中没有可从控制台读取的语句,编译器将不会发出任何从编译器读取的指令。

在Java中,类似于C++,但Java字节码是由Java虚拟机(JVM)发出和执行的。

在您介绍的具体示例中,任何最小智能编译器(读取:所有编译器)都会知道结果是常量。因此,c将被赋予11的精确值。

在从控制台读取这些变量的情况下,编译器无法对这些值进行任何假设,因此它将生成所需的处理器指令,以获得这些变量在计算时保持的任何值,然后实际作为程序的任何其他代码进行计算。

int c = a + b;

在这种情况下,处理这个语句可能最好是分两步进行。

1) 分析该语句以了解其含义(将A和B加在一起)

2) 进行实际计算。

#1很难,2很容易#1是慢的,2是快的#1是你在大学级编程中学习的算法,#2只是add处理器指令。

通常,#1是在编译时(由编译器,如gccjavac)完成的,#2是在运行时

如果ab的值来自用户输入,那么这并不会真正改变事情。