Advertisement

编译器涵盖汇编知识

阅读量:

编译器涉及的汇编知识

  • 声明部分
    • 基础概念

    • 函数定义

    • 需注意的事项

      • 操作数的限制条件
      • db, dw, dd
      • idiv
    • 调用外部函数的方法

    • 总结内容

声明

一生所学的知识终究有限,若术语使用不当、方法选择不妥,也无可奈何,毕竟所掌握的内容仅此而已。

基础

参照学长所提供的汇编入门

函数

上述教程可能缺少的是关于函数编写方式的讲解。首先,有两个寄存器具有关键作用,即ebpesp。其中,ebp用于标识当前函数栈空间的起始地址,而esp则指向当前栈顶位置。当执行push操作时,esp的值会减少4,需要注意的是,此处是减法而非加法,因为栈结构是从高地址向低地址方向扩展的。此外,在分配局部变量空间时,也可以通过执行sub esp, 0x4的方式来实现相同的效果。

复制代码
    // 一个递归的函数
    fun(int v1, int v2)
    {
    	v1 = v1 + 1;
    	if (v1 <= v2)
    		v1 = fun(v1, v2);
    	return v1;	
    }
    
    

全部评论 (0)

还没有任何评论哟~