From c5dfbfc2ba93e417e50bf9ce935b93f5d3607392 Mon Sep 17 00:00:00 2001 From: hailin cai Date: Wed, 24 Feb 2016 12:03:49 -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 3905014..b1d5425 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);