
关于传统解释器,编译器和JIT编译器/解释器的说明
我正在学习Java,以下内容对我来说有些混乱。我了解的是: →Java编译器仅将.java程序转换为.class文件,这意味着将我们的源代码转换为字节码(这是使Java平台独立的虚拟机(JVM)的操作码的列表)。 →仅“解释”代码,而 没有 将其转换为本地机器代码。它将一条字节码的每条指令作为一条命令...
2024-01-10
汇编语言中的伪随机生成器
对于在课程中分配的汇编程序,我需要伪随机数生成器算法,并且我希望使用简单的算法。但是,我不能使用外部库。什么是用于汇编的良好,简单的伪随机数生成器算法?回答:一种简单的方法是只选择两个相对大的素数a和b,然后将随机数乘以a并加b。使用模运算符将低位保留为您的随机数,并保...
2024-01-10
使用局部变量的编译器,无需调整RSP
有问题的编译器:了解小型程序生成的汇编代码,编译器使用两个局部变量,而无需调整堆栈指针。不为使用局部变量而对 RSP 进行调整似乎 并不安全 ,因此 中断似乎使编译器依赖于硬件自动切换到系统堆栈。否则,出现的第一个中断会将指令指针压入堆栈,并覆盖局部变量。该问题的代码是:#inc...
2024-01-10
调用由编译器或链接器处理的约定吗?
当我们在函数原型中放入_stdcall(调用者不需要清除堆栈)时,是由编译器还是链接器来处理?调用由编译器或链接器处理的约定吗?回答:调用约定会影响代码生成,因此编译器会处理它。链接器不需要知道这一点。回答:调用约定是如何调用函数(参数编制具体的机器代码,并清理CTACK)和链...
2024-01-10
编译错误
我的工作的Fedora,我的Java家被设定为:编译错误export JAVA_HOME=/home/UserName/java export M3_HOME=/home/UserName/softwares/apache-maven-3.0.3 export PATH=$PATH:/home/UserName/java/bin:/home/Udeshika/softwares/apache-maven-3.0.3/bin 现在,当我尝试运行mvn install Maven的项目,我收到以...
2024-01-10
共享对象编译错误
我想编译一个库libEncryption.so。共享对象编译错误这里是我的make文件conatins什么:cc -g -w -fPIC -c -ISource/Header -I//usr/local/ssl/include -L//usr/local/ssl/lib - lssl -lcrypto Source/Common/C/Encryption.c -DBIT64 -DDBG -DLITTLEENDIAN -DOMS -DRMS mv Encryption.o Objects/Encryptio...
2024-01-10
交叉编译器ldd
我创建了一个交叉编译的arm可执行文件。我想找到可执行文件的库依赖项。我正在使用ubuntu natty并安装了不包含ldd的arm-linux-gnueabi工具链。有没有可用的工具来查看Linux中arm可执行文件库的依赖性。回答:这有点儿混乱,但这是我能找到的最好的解决方案,对于基本用途它确实很好用-只需使用其他交...
2024-01-10
JVM是编译器还是解释器?
我对JVM有一个非常基本的问题:它是编译器还是解释器?如果它是解释器,那么JVM内部存在的JIT编译器怎么办?如果两者都不是,那么JVM到底是什么?(我不希望将字节码转换为机器特定的代码等jVM的基本定义。)回答:首先,让我们对以下术语有一个清晰的认识Javac是Java编译器-将Java代码编译为 J...
2024-01-10
特拉维斯MIPS交叉编译
如何设置一个.travis.yml为MIPS目标交叉编译?对于PowerPC,这是微不足道的:特拉维斯MIPS交叉编译addons: apt: packages: - gcc-powerpc-linux-gnu 由于我有权访问软件包directly。对于MIPS我无法在Ubuntu忠实的找到一个编译器为它:Software Packages in "trusty", Subsection devel即使它似乎被列入白名单:https://g...
2024-01-10
交叉编译时如何使用外部库?
我正在x86 ubuntu机器上为树莓派ARM目标编写一些代码。我正在使用gcc-linaro-armhf工具链。我能够交叉编译并在pi上运行一些独立程序。现在,我想将代码与外部库(例如ncurses)链接。我该如何实现。我应该将程序与主机上现有的ncurseslib链接,然后在ARM上运行吗?(我认为这行不通)我是否需要为arm获取l...
2024-01-10
在ARM交叉编译时,如何选择要链接的静态库?
我在Ubuntu(arm-linux-gnueabi-gcc)中有一个ARM交叉编译器,默认体系结构是ARMv7。但是,我想编译一个ARMv5二进制文件。我通过为编译器提供-march=armv5te选项来实现。到目前为止,一切都很好。由于我的ARM系统使用BusyBox,因此必须编译静态链接的二进制文件。所以我给gcc -static选项。但是,链接器链接到我...
2024-01-10
编译libgcc xgcc错误
我正在尝试安装交叉编译器,当我想制作libgcc时,我只是将其放在make all-target-libgcc 终端中。这使抛出错误checking whether ln -s works... yeschecking for i586-elf-gcc... /usr/src/build-gcc/./gcc/xgcc -B/usr/src/build-gcc/./gcc/ -B/usr/local/cross/i586-elf/bin/ -B/usr/local/cross/i586-el...
2024-01-10
如何使用gcc进行汇编
如何编译为汇编而不是gcc可执行文件。我知道有一个 标志,但是我在makefile中的哪里使用它。例如,如果我使用标志 ,则应将-S标志放在哪里?回答:我建议也使用它,-fverbose-asm因为生成的汇编器具有一些生成的注释,可以“解释”代码。例如:gcc -S -fverbose-asm -O2 foo.c将在foo.s(带有一些注释)中...
2024-01-10
强制gcc在64位平台上编译32位程序
我有一个专有程序,试图在64位系统上使用。当我启动安装程序时,它可以正常运行,但是在尝试更新自身并编译一些模块之后,它无法加载它们。我怀疑这是因为它正在使用gcc,而gcc试图将它们编译为64位系统,因此该程序无法使用这些模块。是否有任何方法(一些环境变量或类似的东西)强制gcc为...
2024-01-10
通用方法上的多个通配符使Java编译器
让我们首先考虑一个简单的场景(请参阅ideone.com上的完整源代码):import java.util.*;public class TwoListsOfUnknowns { static void doNothing(List<?> list1, List<?> list2) { } public static void main(String[] args) { List<String> list1 = null; List<Integer> list2 = ...
2024-01-10
哪些Java编译器使用jsr指令,做什么用?
Java字节码语言具有JSR指令。我使用Java 7编译器编译的代码均未使用此指令。但是,有时我下载的Java二进制文件确实会使用它,尽管很少。我很想知道哪些编译器确实使用该指令,以及哪些Java代码构造会使它们使用该指令。 这不是重复的,因为它引用了JSR字节码指令,而不是Java规范请求回答:实...
2024-01-10
通过Java编译器进行优化
Java编译器(即javac)在生成字节码时不会执行任何优化。是真的吗 如果是这样,那么它可以实现为中间代码生成器以消除冗余并生成最佳代码吗?回答:javac 如果有的话,只会做很少的优化。关键是JIT编译器完成了大部分优化工作-如果它具有很多信息,则效果最佳,如果javac执行优化,其中的一些信...
2024-01-10
用Java编写的编译器:窥孔优化器实现
我正在为Pascal的子集编写编译器。编译器为一台组装好的机器生成机器指令。我想为此机器语言编写一个窥孔优化器,但是我无法替换一些更复杂的模式。窥孔优化器规格我研究了几种编写窥孔优化器的方法,并且选择了后端方法:emit()每当要生成机器指令时,编码器都会调用函数。emit(Instruction cur...
2024-01-10
如何检查Java中的JIT编译器是否已关闭
我想知道如何检查JIT编译器是否已关闭。我有以下代码旨在关闭JIT编译器。问题是,我不确定它是否确实在这样做。所以我想知道是否有一种方法可以检查JIT是否关闭。我看了Compiler类,但没有类似的方法isDisabled/enabled()。码:Compiler.disable();任何帮助或指导将不胜感激。回答:我不相信您可以在运...
2024-01-10
Java编译器选项,即javac -d
我正在编译一个具有package语句的程序。例如package APPC_LU62.Runtime ;我也有一个与package语句匹配的现有目录结构。C:\APPC_LU62\Runtime如何防止javac编译器在预先存在的目录结构中创建相同的目录结构?即C:\APPC_LU62\Runtime\APPC_LU62\Runtime在我看来,编译器应该足够“聪明”,可以在创建目录结构之前先对其...
2024-01-10
CMake抱怨“ CXX编译器标识未知”
我下面这个线程,这一个建立自己的KDE没有须藤权限。由于没有在工作站上安装Git和CMake。我只是将它们都安装在,并将 和 到PATH和LD_LIBRARY_PATH中。由于KDE构建仅支持CMake,因此不进行配置。因此,我必须通过CMake设置前缀,如下所示:cmake~/kde-devel/src/kdelibs -DCMAKE_INSTALL_PREFIX=/home/<user>。在这一点上,我...
2024-01-10
Java为什么会有“无法到达的语句”编译器错误?
我经常在调试程序时发现在代码块中插入return语句很方便(尽管可能是不好的做法)。我可能会在Java中尝试类似的方法....class Test { public static void main(String args[]) { System.out.println("hello world"); return; System.out.println("i think this line might ...
2024-01-10
Java:未解决的编译问题
“ java.lang.Error:未解决的编译问题”的可能原因是什么?附加信息:从现有JAR顶部的版本复制一组更新的JAR文件并重新启动应用程序后,我已经看到了这一点。JAR是使用Maven构建过程构建的。如果接口更改,我希望看到LinkageErrors或ClassNotFound错误。上面的错误提示存在一些较低级别的问题。彻底的重...
2024-01-10
CMake错误设置编译器
由于某些原因,CMake的C和C++编译器默认设置为/usr/bin/qcc。cmake -D CMAKE_C_COMPILER = / usr / bin / gcc -D CMAKE_CXX_COMPILER = / usr/ bin / g ++但我得到了错误CMake错误:源目录[当前目录] / CMAKE_CXX_COMPILER = / usr / bin / g ++“不存在。为什么CMake将命令解释为目录,以及设置CMake编译器的正确方法是什么?回答:您有正...
2024-01-10
c语言编译后生成什么文件
品牌型号:联想拯救者Y9000P系统:Windows 11c语言编译后生成exe文件或者object文件。C语言是目前世界上流行、使用最广泛的面向过程的高级程序设计语言。C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,许多大型应用软件都是用C语言编写的。编译是指将编辑好的源文件翻译成二进制目标代码的过程。编译过程是由编译程序(编译器)完成的。不同操...
2024-01-29
