Using frame pointer optimizers

Is this related, but does not match the lack of a frame pointer? Any risk?

I am trying to follow this old (but still relevant article)

http://blogs.msdn.com/b/larryosterman/archive/2007/03/12/fpo.aspx

Larry (author writes)

machines have been fast enough since 1995 so that the performance improvements achieved by FPOs are not enough for the pain in debugging and analysis caused by FPOs

However, in the discussion later on the page, one user writes

Disabling FPO can have both serious code size and efficiency. Tail call optimization should be turned off when a frame pointer is present, which leads to significantly greater stack utilization in the affected paths. Small functions also disproportionately affect prolog / epilogue code. Thirdly, although there are six more registers available with a frame pointer to X86, only three of them are non-volatile with respect to nested calls: EBX, ESI and EDI. Opening a fourth register may drop out of a bunch of spill code.

I have a couple of questions.

  • Spill Code == Record Leak?
  • Is the author correct that FPOs are usually considered pain and the benefits do not exceed the benefits.
  • Is FPO relevant today in x64 architecture, since there are LOT more registers o play with.
  • FPO? ( ) ?

,

http://www.altdevblogaday.com/2012/05/24/x64-abi-intro-to-the-windows-x64-calling-convention/

[ Windows x64].....

, , , . , 4 . 8 , 32 ( 48 ... ). . , :

  • - , .
  • . , , x64 ( point Ill )....... , , , , .

?

+4
2

1.Spill == ?

. , - , . - , .

2. , FPO , .

, , , FPO , , . FPO , . . . epilog . , FP. , . FPO , .

3.Is FPO - x64, LOT o .

, , "", .

4. FPO? ( ) ?

C (20 SLOC), (~ 5%) gcc. , gcc Visual C. . , 5% . , , 5% . .

5. ?

. MS , MS ABI, , .

+1

1) , , .

2) FPO , , . ABI (, ), ( ), . , , , .

3) x86_64 ABI ( , , , C).

4) . .

) , . . , , , . , , , - .

0

Source: https://habr.com/ru/post/1539667/


All Articles