汇编与JIT编程
读懂汇编
1 什么是汇编?
??计算机能运行的是二进制的指令,如00000011
,为了解决可读性和方便编辑的问题,就诞生了汇编语言,所以汇编语言是二进制指令的文本形式,与二进制指令一一对应,如00000011
代表ADD
,二进制与汇编语言都是最底层的低级语言。
由CPU指令和指令对应的运算子构成一条汇编语句,如:
mov %ebx, [%esp+12] add %eax, %ebx
?? 汇编 assembling 的过程,是由汇编器将汇编语言 assembly language (asm) 编译成二进制。
2 汇编程序的运行过程
int add_a_and_b(int a, int b) { return a + b; } int main() { return add_a_and_b(2, 3); }
通过 gcc -S example.c
将C程序得到简化的汇编程序:
_add_a_and_b: push %ebx mov %eax, [%esp+8] mov %ebx, [%esp+12] add %eax, %ebx pop %ebx ret _main: push 3 push 2 call _add_a_and_b add %esp, 8 ret
Stack 与 帧 的概念
mov 指令:
push 指令:
add 指令:
pop 指令:
ret 指令:
即时编译 JIT code 的编写
以 AVX512 为例
reference:http://www.ruanyifeng.com/blog/2018/01/assembly-language-primer.html
相关推荐
李辉 2020-04-07
duling 2020-03-03
ithzhang 2020-01-04
mohanzb 2019-11-03
风月无古今 2019-10-22
PLA 2019-02-25
shuixuan 2019-04-17
githubphpnobug 2016-01-27
MobileDeviceTalks 2018-05-08
BitTigerio 2018-03-06
明学的白板 2017-12-24
风月无古今 2020-06-28
andyljn 2020-02-13
风月无古今 2020-01-18
LychieFan 2020-04-30
choupiaoyi 2020-04-19
lpkwxl 2015-05-05
wutheringwind 2016-12-08