草庐IT

ASSEMBLY

全部标签

java - 为什么 "mvn assembly:single"创建一个只有程序集而不是我的代码的 fat jar 子?

我有一个用springroo创建的Maven项目.当我运行mvnassembly:single时,我得到一个包含所有依赖项的fatjar,但不是我编写的实际代码。这是我的pom.xml中的maven-assembly-plugin配置:org.apache.maven.pluginsmaven-assembly-plugin2.2.1jar-with-dependenciesnet.justaprogrammer.poi.cleanser.Cleanser我做错了什么? 最佳答案 解决方案是将单一目标添加到项目生命周期的包阶段。这意

java - C 性能和编译选项

我有两个类似的实现(java和c++),用于像选择排序这样的普通算法。publicinterfaceSortingAlgorithm{publicvoidsort(int[]a);}publicclassSelectionSortimplementsSortingAlgorithm{@Overridepublicvoidsort(int[]a){for(inti=0;i和c一个:inlinevoidswap(int*a,inti,intj);voids_sort(int*a,intsize){inti;for(i=0;i现在,我尝试在一个大数组(100000个随机整数)上测试它们。起初

java - volatile 语句的负载屏障在哪里?

我写了这个简单的Java程序:packagecom.salil.threads;publicclassIncrementClass{staticvolatileintj=0;staticinti=0;publicstaticvoidmain(Stringargs[]){for(inta=0;a这将为i++和j++生成以下反汇编代码(删除剩余的反汇编代码):0x0000000002961a6c:49ba98e8d0d507000000movr10,7d5d0e898h;{oop(a'java/lang/Class'='com/salil/threads/IncrementClass')}

java - 查找与 DLL 中的偏移量匹配的 Delphi 源代码行

我正试图找出我的Java应用程序崩溃的原因。它实际上是JVM的崩溃,由通过JNI调用本地库引起。这是我在生成的hs_err_pidxxxx.log中看到的内容:##AfatalerrorhasbeendetectedbytheJavaRuntimeEnvironment:##EXCEPTION_INT_DIVIDE_BY_ZERO(0xc0000094)atpc=0x4fa19409,pid=1456,tid=4068##JREversion:6.0_30-b12#JavaVM:JavaHotSpot(TM)ClientVM(20.5-b03mixedmodewindows-x86)#

java - 在 jar 旁边使用附加文件在 maven 中创建 zip

我唯一的Maven经验是包括其他库,所以我需要一个非常基本的解释,说明我如何使用Eclipse在Maven中实现一些事情。我想定期创建我的jar。然后我想再拿3个文件并将所有文件放在1个zip文件中。我的zip的内容应该是这样的:A.jarB.txtC.txtD.bat我知道我必须在我的pom.xml文件中插入某些目标。我已经在StackOverflow(即here)上看到关于类似主题的帖子。我还尝试了Maven文档,如here.我是否已经需要任何Maven插件或者仍然是Maven核心的东西?但我的技能还不足以为我的案例传输这些信息。 最佳答案

java - Java 中的代码注入(inject)/程序集内联?

我知道Java是一种安全的语言,但是当需要进行矩阵计算时,我可以尝试更快的方法吗?我正在学习C++中的__asm{}、Digital-Mars编译器和FASM。我想在Java中做同样的事情。如何在函数中内联汇编代码?这可能吗?类似这样的事情(一个向量化循环,使用CPU的AVX支持,将数组的所有元素限制为一个值而无需分支):JavaAsmBlock(#getpointersintoregisterssomehow#andtellJavawhichregisterstheasmclobberssomehowvbroadcastsstwenty_five(%rip),%ymm0xor%edx

java - 为什么Java编译成汇编两次?

这个问题在这里已经有了答案:Whatexactlydoes-XX:-TieredCompilationdo?(3个答案)关闭3年前。我在MacOSX上使用Java8编译了一个简单的Java文件以进行汇编。这是Test.java:publicclassTest{staticvolatileinta=1;publicstaticvoidmain(String[]args){a++;}}我输出汇编代码使用:java-server-Xcomp-XX:+UnlockDiagnosticVMOptions-XX:-Inline-XX:CompileCommand=print,*Test.mainT

c++ - 返回 std::pair 与通过非常量引用传递

为什么返回std::pair或boost::tuple比通过引用返回效率低得多?在我测试过的实际代码中,通过非常量引用而不是通过内部内核中的std::pair设置数据可以将代码速度提高20%。作为实验,我研究了三个最简单的情况,涉及将两个(预定义的)整数与两个整数相加:使用内部内联函数通过引用修改整数使用两个内部的内联函数按值返回整数使用一个内部的内联函数返回一个std::pair,它被复制到结果中。使用g++-c$x-Wall-Wextra-O2-S编译会产生相同的汇编代码,用于按引用传递和按值返回整数:__Z7getPairiRiS_:LFB19:pushq%rbpLCFI0:le

c++ - 为什么有人需要指向指针的指针?

例如,为什么需要char**myVariable;?如果一个指针只是内存中的一个地址,那么如果它是一个指向地址的指针和一个指向字符地址的指针,而不是一个指向一个字符地址的指针,为什么会有什么不同呢?在汇编中不会这样LDRR3,=myVariableLDRR2,=[R3]LDRR1,=[R2]LDRR0,=[R1]单个指针所在的位置LDRR1,=myVariableLDRR0,=[R1]现在R0持有值(value)?显然这种方式更快。 最佳答案 如果您想通过函数修改指针的值,则必须通过引用将指针的地址传递给函数。因此,您将需要指向指针

c++ - 为什么我从函数返回一个对象时得到两个临时对象

这是我的c++代码classCTest{public:intnumber;intarr[10];};CTestReturn(intval){CTestobj;obj.number=val;returnobj;}intmain(){CTestobj=Return(10);return0;}通过查看汇编代码发现有两个临时对象//inmainCTestobj=Return(10);0009F6CEpush0Ah0009F6D0leaeax,[ebp-158h];passthefirsttemporaryobject'saddresstoReturn0009F6D6pusheax0009F6D