我发现这个问题可以解决C ++问题:
如何在gcc中从C / C ++源代码获得汇编程序输出?
Java使用字节码。最相似的是javap
,每个链接的Oracle文档,
该 javap的 命令拆卸一个或多个类文件。其输出取决于所使用的选项。
package com.stackoverflow;
class Main {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
如果我将其编译为Main.class
然后运行,javap -v Main.class
我会得到
Classfile /home/efrisch/workspace/StackOverflow/bin/com/stackoverflow/Main.class
Last modified Jun 18, 2015; size 553 bytes
MD5 checksum de4f987e783aa0f145e7245269504028
Compiled from "Main.java"
class com.stackoverflow.Main
minor version: 0
major version: 52
flags: ACC_SUPER
Constant pool:
#1 = Class #2 // com/stackoverflow/Main
#2 = Utf8 com/stackoverflow/Main
#3 = Class #4 // java/lang/Object
#4 = Utf8 java/lang/Object
#5 = Utf8 <init>
#6 = Utf8 ()V
#7 = Utf8 Code
#8 = Methodref #3.#9 // java/lang/Object."<init>":()V
#9 = NameAndType #5:#6 // "<init>":()V
#10 = Utf8 LineNumberTable
#11 = Utf8 LocalVariableTable
#12 = Utf8 this
#13 = Utf8 Lcom/stackoverflow/Main;
#14 = Utf8 main
#15 = Utf8 ([Ljava/lang/String;)V
#16 = Fieldref #17.#19 // java/lang/System.out:Ljava/io/PrintStream;
#17 = Class #18 // java/lang/System
#18 = Utf8 java/lang/System
#19 = NameAndType #20:#21 // out:Ljava/io/PrintStream;
#20 = Utf8 out
#21 = Utf8 Ljava/io/PrintStream;
#22 = String #23 // Hello, World!
#23 = Utf8 Hello, World!
#24 = Methodref #25.#27 // java/io/PrintStream.println:(Ljava/lang/String;)V
#25 = Class #26 // java/io/PrintStream
#26 = Utf8 java/io/PrintStream
#27 = NameAndType #28:#29 // println:(Ljava/lang/String;)V
#28 = Utf8 println
#29 = Utf8 (Ljava/lang/String;)V
#30 = Utf8 args
#31 = Utf8 [Ljava/lang/String;
#32 = Utf8 SourceFile
#33 = Utf8 Main.java
{
com.stackoverflow.Main();
descriptor: ()V
flags:
Code:
stack=1, locals=1, args_size=1
0: aload_0
1: invokespecial #8 // Method java/lang/Object."<init>":()V
4: return
LineNumberTable:
line 3: 0
LocalVariableTable:
Start Length Slot Name Signature
0 5 0 this Lcom/stackoverflow/Main;
public static void main(java.lang.String[]);
descriptor: ([Ljava/lang/String;)V
flags: ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
0: getstatic #16 // Field java/lang/System.out:Ljava/io/PrintStream;
3: ldc #22 // String Hello, World!
5: invokevirtual #24 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
8: return
LineNumberTable:
line 5: 0
line 6: 8
LocalVariableTable:
Start Length Slot Name Signature
0 9 0 args [Ljava/lang/String;
}
SourceFile: "Main.java"
检查给定行是否为java代码的正确方法是什么? 输入:日志支持。java:44 com/sun/activation/registries/LogSupport日志(Ljava/lang/String;)五、 预期输出:false。 输入:扫描仪输入=新扫描仪(系统输入); 预期输出:true。 我尝试了EclipseJDTASTParser来检查是否可以创建AST。代码如下: 但这是行不通的。有
你能帮我检查任何替代代码来检查我的输入字符串是否已编码?
因此,通常关于通过汇编代码提高性能的问题的答案是“不要打扰,编译器比你聪明”。我明白了。 但是,我注意到优化的线性代数库(例如ACML)可以比标准编译库实现2到5倍的性能改进。例如,在我的8核机器上,与现有的单线程BLAS实现相比,优化的矩阵乘法运行速度快了30倍以上,这意味着,在考虑了由于使用所有内核而提高的8倍之后,仅仅通过优化仍然可以提高4倍。 所以在我看来,优化的汇编代码确实可以带来巨大的
我正在为64位mips机器使用gcc编译器。我注意到生成的一段汇编代码很有趣。下面是详细信息: 通常,bnez将立即跳到0xb0。但在0xb0之后的块中,我确信程序必须使用a1作为参数。但是我们可以看到,在0xb0之后,a1从未出现在块中。 但是a1在0x58中使用,就在bnez(0x54)之后。 那么0x54和0x58指令有可能同时执行吗?超标量处理器通过同时将多条指令分派到处理器上的冗余功能单
我为跳棋游戏创建了两个类。一个是木板,另一个是碎片。我所面临的困难是,对于这些碎片,我似乎无法让它们移动,也无法让它们正确地停留在那个位置,事实上,由于我不了解这里到底出了什么问题,我无法再前进了。有人能纠正我做错了什么吗。 这是拼图课
问题内容: 如何在Java代码中检查用户权限?例如-我想根据角色显示或隐藏用户按钮。有如下注释: 如何用Java代码制作?就像是 : 问题答案: Spring Security 3.0具有此API 使用包装之前,您必须先注入包装纸。 SecurityContextHolderAwareRequestWrapper