.java 源文件要先编译成与操作系统无关的 .class 字节码文件,然后字节码文件再通过 Java 虚拟机解释成机器码运行。 .class 字节码文件面向虚拟机,不面向任何具体操作系统。 不同平台的虚拟机是不同的,但它们给 JDK 提供了相同的接口。 Java 的跨平台依赖于不同系统的 Java ...
分类:
编程语言 时间:
2019-11-11 09:45:00
阅读次数:
104
字节码字节码是一种中间码 字节码通常指的是已经经过编译,但与特定机器码无关,需要直译器转译后才能成为机器码的中间代码。字节码通常不像源码一样可以让人阅读,而是编码后的数值常量、引用、指令等构成的序列。 字节码主要为了实现特定软件运行和软件环境、硬件环境无关。字节码的实现方式是通过编译器和虚拟机器。编 ...
分类:
其他好文 时间:
2019-11-10 10:19:28
阅读次数:
64
有文件link.S,内容如下 经过如下命令编译 arm-linux-gcc -o -c link.S link.o 生成link.o文件 arm-linux-ld -Ttext 0x30000000 link.o -o link_elf_0x30000000 arm-linux-objdump -D ...
分类:
系统相关 时间:
2019-11-10 09:39:51
阅读次数:
95
如何阅读反汇编文件? 以下是一个例子 4bc: e3a0244e mov r2, #1308622848 4c0: e3a0344e mov r3, #1308622848 4c4: e5933000 ldr r3, [r3] 像4bc这些是代码运行的地址, e3a0244e是机器码 那常用的汇编指 ...
分类:
其他好文 时间:
2019-11-10 09:31:30
阅读次数:
117
一、编译型语言 编译型语言是指使用专门的编译器,针对特定平台(操作系统)将某种高级语言源代码一次性“翻译”成可被该平台硬件执行的机器码(包括机器指令和操作数),并包装成该平台所能识别的可执行性程序的格式,这个转换过程称为“编译”。编译生成的可执行性程序可以脱离开发环境,在特定的平台上独立运行。 因为 ...
分类:
编程语言 时间:
2019-11-09 17:56:46
阅读次数:
82
JIT(just in time) 前端vs后端 在编译原理中,通常将编译分为前端和后端。其中前端会对程序进行词法分析、语法分析、语义分析,然后生成一个中间表达形式(称为IR:Intermediate Representation)。后端再讲这个中间表达形式进行优化,最终生成目标机器码。 在Java ...
分类:
其他好文 时间:
2019-11-04 23:20:56
阅读次数:
179
1、Java基本介绍 Java介于编译型语言和解释型语言之间。编译型语言如C、C++,代码是直接编译成机器码执行,但是不同的平台(x86、ARM等)CPU的指令集不同,因此,需要编译出每一种平台的对应机器码。解释型语言如Python、Ruby没有这个问题,可以由解释器直接加载源码然后运行,代价是运行 ...
分类:
编程语言 时间:
2019-10-30 18:23:17
阅读次数:
130
随着Web相关技术的发展,JavaScript所要承担的工作也越来越多,早就超越了“表单验证”的范畴,这就更需要快速的解析和执行JavaScript脚本。V8引擎就是为解决这一问题而生,在node中也是采用该引擎来解析JavaScript。 WebKit是由苹果2005年发起的一个开源项目,引起了众 ...
分类:
其他好文 时间:
2019-10-25 17:58:18
阅读次数:
81
Java虚拟机中有许多附加技术用以提升速度,尤其是与加载器操作相关的,被称为“即时”(Just-In-Time,JIT)编译器的技术。这种技术可以把程序全部或部分翻译成本地机器码(这本来是JVM的工作),程序运行速度因此得以提升。当需要装载某个类时,编译器会先找到其.class文件,然后将该类的字节码装入内存。此时,有两种方案可供选择:(1)一种就是让即时编译器编译所有代码。但这种做法有两个缺陷:
分类:
编程语言 时间:
2019-10-24 09:16:01
阅读次数:
99
Python是一门面向对象的解释性语言(脚本语言),这一类语言的特点就是不用编译,程序在运行的过程中由对应的解释器向CPU进行编译,一边编译一边执行,他属于脚本语言,不像编译型语言那样先将程序编译成二进制在运行。一般来说,由于不是以本地机器码运行,纯粹的解释型语言通常比编译型语言运行的慢。然而,类似 ...
分类:
编程语言 时间:
2019-10-21 13:40:07
阅读次数:
126