码迷,mamicode.com
首页 > 其他好文 > 详细

汇编与JIT编程

时间:2020-02-22 14:01:55      阅读:71      评论:0      收藏:0      [点我收藏+]

标签:指令   ack   strong   uri   jit   any   语言   assembly   编译   

读懂汇编

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

汇编与JIT编程

标签:指令   ack   strong   uri   jit   any   语言   assembly   编译   

原文地址:https://www.cnblogs.com/qccz123456/p/12344972.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!