Compare commits

...

11 Commits

Author SHA1 Message Date
ssrlive
1bb2a8374a Merge 88e473433b into 4d7b78069f 2024-04-16 17:48:11 +02:00
Philipp Oppermann
4d7b78069f Merge pull request #1312 from squirrel532/patch-zh-tw
Fix some minor error in zh-tw
2024-04-16 17:48:03 +02:00
Squirrel
56d66b6b24 Update wording, make it fluent 2024-04-13 23:36:50 +08:00
Squirrel
ed38ea1aa0 Update translation of name mangling
Translate "name mangling" to "名稱重整"
https://rust-lang.tw/book-tw/ch19-01-unsafe-rust.html
2024-04-13 22:27:42 +08:00
Squirrel
d8204b05cc Fix wording convention 2024-04-13 22:20:46 +08:00
Squirrel
5f00ca206d Fix typo 2024-04-13 22:09:48 +08:00
ssrlive
88e473433b Merge branch 'phil-opp:main' into main 2024-02-16 22:12:18 +08:00
ssrlive
1a0254b977 minor changes 2024-02-15 00:35:51 +08:00
ssrlive
05dadc1302 minor changes 2024-02-15 00:28:49 +08:00
ssrlive
6041d119db Merge branch 'phil-opp:main' into main 2024-02-15 00:15:31 +08:00
ssrlive
258426b787 minor changes 2024-02-15 00:14:14 +08:00
2 changed files with 2123 additions and 4 deletions

View File

@@ -119,7 +119,7 @@ error: `#[panic_handler]` function required, but not found
error: language item required, but not found: `eh_personality`
```
現在編譯告訴我們缺少 `#[panic_handler]` 函式以及 _language item_
現在編譯告訴我們缺少 `#[panic_handler]` 函式以及 _language item_
## 實作 panic 處理函式
@@ -220,9 +220,9 @@ pub extern "C" fn _start() -> ! {
}
```
我們使用 `no_mangle` 屬性來停用[名字修飾][name mangling],確保 Rust 編譯器輸出的函式名稱會是 `_start`。沒有這個屬性的話,編譯器會產生符號像是 `_ZN3blog_os4_start7hb173fedf945531caE` 來讓每個函式的名稱都是獨一無二的。我們會需要這項屬性的原因是因為我們接下來希望連結器能夠呼叫入口點函式的名稱。
我們使用 `no_mangle` 屬性來停用[名稱重整][name mangling],確保 Rust 編譯器輸出的函式名稱會是 `_start`。沒有這個屬性的話,編譯器會產生符號像是 `_ZN3blog_os4_start7hb173fedf945531caE` 來讓每個函式的名稱都是獨一無二的。我們會需要這項屬性的原因是因為我們接下來希望連結器能夠呼叫入口點函式的名稱。
我們還將函式標記為 `extern "C"` 來告訴編譯器這個函式應當使用 [C 的調用約定][C calling convention],而不是 Rust 的調用約定。而函式名稱選用 `_start` 的原因是因為這是大多數系統的預設入口點名稱。
我們還將函式標記為 `extern "C"` 來告訴編譯器這個函式應當使用 [C 的呼叫慣例][C calling convention],而不是 Rust 的呼叫慣例。而函式名稱選用 `_start` 的原因是因為這是大多數系統的預設入口點名稱。
[name mangling]: https://en.wikipedia.org/wiki/Name_mangling
[C calling convention]: https://en.wikipedia.org/wiki/Calling_convention
@@ -511,7 +511,7 @@ cargo rustc -- -C link-args="/ENTRY:_start /SUBSYSTEM:console"
cargo rustc -- -C link-args="-e __start -static -nostartfiles"
```
注意這只是最小的 Rust 獨立執行檔範例,它還是會賴一些事情發生,像是當 `_start` 函式呼叫時堆疊已經初始化完畢。**所以如果想真的使用這樣的執行檔的話還需要更多步驟。**
注意這只是最小的 Rust 獨立執行檔範例,它還是會賴一些事情,像是當 `_start` 函式呼叫時堆疊已經初始化完畢。**所以如果想真的使用這樣的執行檔的話還需要更多步驟。**
## 接下來呢?

File diff suppressed because it is too large Load Diff