<div>Hi Hao Lee,</div><div>Really appreciate your help.</div><div>:-)</div><div>Regards,</div><div>Larry</div><div><br></div><div><div><br></div><div><br></div><div style="font-size: 12px;font-family: Arial Narrow;padding:2px 0 2px 0;">------------------ Original ------------------</div><div style="font-size: 12px;background:#efefef;padding:8px;"><div><b>From: </b> "haolee.swjtu"<haolee.swjtu@gmail.com>;</div><div><b>Date: </b> Mon, Feb 26, 2018 00:17 AM</div><div><b>To: </b> "ÂäºÛ"<losemyheaven@foxmail.com>;<wbr></div><div><b>Cc: </b> "kernelnewbies"<kernelnewbies@kernelnewbies.org>; <wbr></div><div><b>Subject: </b> Re: A question about decompressing kernel on boot</div></div><div><br></div><div dir="ltr"><br>
</div><blockquote><div dir="ltr">   leaq    (_bss-8)(%rip), %rsi<br>
</div></blockquote>
<blockquote><div dir="ltr">       leaq    (_bss-8)(%rbx), %rdi<br>
</div></blockquote>
<blockquote><div dir="ltr">       movq    $_bss /* - $startup_32 */, %rcx<br>
</div></blockquote>
<blockquote><div dir="ltr">       shrq    $3, %rcx<br>
</div></blockquote>
<blockquote><div dir="ltr">       std<br>
</div></blockquote>
<blockquote><div dir="ltr">       rep     movsq<br>
</div></blockquote>
<blockquote><div dir="ltr">       cld<br>
</div></blockquote>
<div dir="ltr"><br>
</div><div dir="ltr">The movsq instruction copys 8 bytes each time and for the first time it will copy [_bss-8, _bss) to the new location. If we don't minus 8, the data in [_bss, _bss+8) will also be copied on the first execution of movsq. Obviously, we don't want to copy the bss section.<br>
</div><div dir="ltr"><br>
Regards,<br>
Hao Lee</div></div>