Quantcast
Channel: Active questions tagged gcc - Stack Overflow
Viewing all articles
Browse latest Browse all 22040

MIPS: what does "lw$28,16($fp)" mean in .s file created by gcc?

$
0
0

I write a simple code for test.

After assembly:

funadd:    addiu   $sp,$sp,-24    sw  $fp,20($sp)    move    $fp,$sp    sw  $4,24($fp)    sw  $5,28($fp)    sw  $0,8($fp)    lw  $3,24($fp)    lw  $2,28($fp)    addu    $2,$3,$2    sw  $2,8($fp)    lw  $2,8($fp)    move    $sp,$fp    lw  $fp,20($sp)    addiu   $sp,$sp,24    jr  $31    nopfun:...    lw  $2,%got(funadd)($28)    move    $25,$2    .reloc  1f,R_MIPS_JALR,funadd1:  jalr    $25    nop    **lw    $28,16($fp)**    sw  $2,28($fp)    lw  $3,28($fp)    lw  $2,24($fp)    subu    $2,$3,$2    sw  $2,28($fp)    lw  $2,28($fp)    move    $sp,$fp    lw  $31,36($sp)    lw  $fp,32($sp)    addiu   $sp,$sp,40    jr  $31    nopmain:...    lw  $2,%got(fun)($28)    move    $25,$2    .reloc  1f,R_MIPS_JALR,fun1:  jalr    $25    nop    **lw    $28,16($fp)**    sw  $2,32($fp)    lw  $5,32($fp)    lw  $2,%got($LC0)($28)    addiu   $4,$2,%lo($LC0)    lw  $2,%call16(printf)($28)    move    $25,$2    .reloc  1f,R_MIPS_JALR,printf1:  jalr    $25    nop    **lw    $28,16($fp)**    lw  $2,32($fp)    move    $sp,$fp    lw  $31,44($sp)    lw  $fp,40($sp)    addiu   $sp,$sp,48    jr  $31    nop...

I realize after each function call, there is a code "lw $28,16($fp)".But I don't see any code related to $28 and 16($fp) in both calling and called function.

What does the code mean? When does 16($fp) be modified and what is the value in 16($fp)?


Viewing all articles
Browse latest Browse all 22040

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>