b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

llvm内联函数_内联函数_内联函数例子(2)

电脑杂谈  发布时间:2017-02-25 15:00:00  来源:网络整理

上面代码逻辑很清楚了,循环根据条件修改pf变量,而pf会读取到eax寄存器,然后通过call *%eax进行函数调用,那么如果在call *%eax处内联函数,则根本没法解决到底内联fn1还是fn2的问题。

在gcc O3下生成的汇编如下:

main.o:     file format pe-i386


Disassembly of section .text:

00000000 <__Z3fn1v>:
   0:	55                   	push   %ebp
   1:	89 e5                	mov    %esp,%ebp
   3:	c9                   	leave  
   4:	c3                   	ret    
   5:	8d 76 00             	lea    0x0(%esi),%esi

00000008 <__Z3fn2v>:
   8:	55                   	push   %ebp
   9:	89 e5                	mov    %esp,%ebp
   b:	c9                   	leave  
   c:	c3                   	ret    
   d:	8d 76 00             	lea    0x0(%esi),%esi

00000010 <_main>:
  10:	55                   	push   %ebp
  11:	89 e5                	mov    %esp,%ebp
  13:	83 e4 f0             	and    $0xfffffff0,%esp
  16:	53                   	push   %ebx
  17:	83 ec 0c             	sub    $0xc,%esp
  1a:	e8 00 00 00 00       	call   1f <_main+0xf>
  1f:	31 db                	xor    %ebx,%ebx	//ebx清零
  21:	b8 08 00 00 00       	mov    $0x8,%eax	//函数fn2地址赋予eax
  26:	66 90                	xchg   %ax,%ax		//2字节无用指令对齐地址位(追求4整数地址)?不太确定
  28:	ff d0                	call   *%eax		//调用fn2
  2a:	43                   	inc    %ebx		//i++
  2b:	81 fb e8 03 00 00    	cmp    $0x3e8,%ebx	//判断循环,ebx充当i
  31:	74 15                	je     48 <_main+0x38>	//相等结束循环
  33:	83 fb 14             	cmp    $0x14,%ebx	//i和20比较
  36:	7f 18                	jg     50 <_main+0x40>	//i>20跳转到50
  38:	b8 08 00 00 00       	mov    $0x8,%eax	//函数fn2地址赋予eax
  3d:	ff d0                	call   *%eax		//调用fn2
  3f:	43                   	inc    %ebx
  40:	81 fb e8 03 00 00    	cmp    $0x3e8,%ebx
  46:	75 eb                	jne    33 <_main+0x23>
  48:	31 c0                	xor    %eax,%eax
  4a:	83  0c             	add    $0xc,%esp
  4d:	5b                   	pop    %ebx
  4e:	c9                   	leave  
  4f:	c3                   	ret    
  50:	b8 00 00 00 00       	mov    $0x0,%eax	////函数fn1地址赋予eax
  55:	eb d1                	jmp    28 <_main+0x18>
  57:	90                   	nop


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-34432-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 萧察
      萧察

      它越找你

    • 查慎行
      查慎行

      实际情况根本不是这样也永远不会这样

      • 余迷
        余迷

        就是之前一直荒废着的鬼城的空房子

    • 辛培培
      辛培培

      网友们需要些理智与耐心

    热点图片
    拼命载入中...