From fb2dfef16d4c6f3396b5c6f2e8a21e0674bbc130 Mon Sep 17 00:00:00 2001 From: hailin cai Date: Wed, 24 Feb 2016 12:03:42 -0500 Subject: [PATCH] Update Booting/linux-bootstrap-2.md --- Booting/linux-bootstrap-2.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Booting/linux-bootstrap-2.md b/Booting/linux-bootstrap-2.md index f78162e..3905014 100644 --- a/Booting/linux-bootstrap-2.md +++ b/Booting/linux-bootstrap-2.md @@ -226,7 +226,7 @@ ENDPROC(memcpy) END(name) ``` -`memcpy` 的实现代码是很容易理解的。首先,代码将 `si` 和 `di` 寄存器的值压入堆栈进行保存,这么做的原因是因为后续的代码将修改`si`和`di`寄存器的值。`memcpy`函数(也包括其他定义在copy.s中的其他函数)使用了`fastcall`调用规则,意味着所有的函数调用参数是通过`ax`, `dx`, `cx`寄存器传入的,而不是传统的通过堆栈传入。因此在使用下面的代码调用`memcpy`函数的时候 +`memcpy` 的实现代码是很容易理解的。首先,代码将 `si` 和 `di` 寄存器的值压入堆栈进行保存,这么做的原因是因为后续的代码将修改 `si` 和 `di` 寄存器的值。`memcpy` 函数(也包括其他定义在copy.s中的其他函数)使用了 `fastcall` 调用规则,意味着所有的函数调用参数是通过 `ax`, `dx`, `cx`寄存器传入的,而不是传统的通过堆栈传入。因此在使用下面的代码调用`memcpy`函数的时候 ```c memcpy(&boot_params.hdr, &hdr, sizeof hdr);