Git Product home page Git Product logo

writing-an-os-in-rust's People

Contributors

gitniko avatar gwy15 avatar linpingchuan avatar longfangsong avatar luojia65 avatar niguangye avatar psiace avatar readlnh avatar ruhuang2001 avatar sb-child avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

writing-an-os-in-rust's Issues

在做第二篇的时候cargo bootimage出现了报错

error: the legacy LLVM-style asm! syntax is no longer supported
--> /Users/zhouxiaogang/.cargo/registry/src/github.com-1ecc6299db9ec823/x86_64-0.8.3/src/registers/mod.rs:13:9
|
13 | asm!(
| ^---
| |
| help: replace with: llvm_asm!
| |
14 | | "lea (%rip), $0"
15 | | : "=r"(rip) ::: "volatile"
16 | | );
| |
_^
|
= note: consider migrating to the new asm! syntax specified in RFC 2873
= note: alternatively, switch to llvm_asm! to keep your code working as it is

第一章 `mainCRTStartup`容易误大写`Up`

环境信息

OS: Windows 10
rustc: rustc 1.32.0 (9fda7c223 2019-01-16)
toolchain: stable-x86_64-pc-windows-msvc (default), nightly-x86_64-pc-windows-msvc
c++构建工具: VS2017 Community

例程

# cargo.toml
[package]
name = "blog_os"
version = "0.1.0"
authors = ["huangjj27 <[email protected]>"]
edition = "2018"

[profile.dev]
panic = "abort"

[profile.release]
panic = "abort"

[dependencies]
// main.rs
#![no_std]
#![no_main]

use core::panic::PanicInfo;

#[panic_handler]
fn panic(_info: &PanicInfo) -> ! {
    loop {}
}

// 由于在Windows环境下编译, 故只摘抄Windows所需函数
#[no_mangle]
pub extern "C" fn mainCRTStartUp() -> ! {
    main();
}

#[no_mangle]
pub extern "C" fn main() -> ! {
    loop {}
}

报错信息

error: linking with `link.exe` failed: exit code: 1120
  |
  = note: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Tools\\MSVC\\14.14.26428\\bin\\HostX64\\x64\\link.exe" "/NOLOGO" "/NXCOMPAT" "/LIBPATH:C:\\Users\\34937\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "C:\\Users\\34937\\Desktop\\learning-rust\\blog_os\\target\\debug\\deps\\blog_os-d19438c79a36ae28.4gg7n8zj6teng6ow.rcgu.o" "/OUT:C:\\Users\\34937\\Desktop\\learning-rust\\blog_os\\target\\debug\\deps\\blog_os-d19438c79a36ae28.exe" "/OPT:REF,NOICF" "/DEBUG" "/NATVIS:C:\\Users\\34937\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\intrinsic.natvis" "/NATVIS:C:\\Users\\34937\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\liballoc.natvis" "/NATVIS:C:\\Users\\34937\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\libcore.natvis" "/LIBPATH:C:\\Users\\34937\\Desktop\\learning-rust\\blog_os\\target\\debug\\deps" "/LIBPATH:C:\\Users\\34937\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "C:\\Users\\34937\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\librustc_std_workspace_core-78a7055b7313c664.rlib" "C:\\Users\\34937\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcore-b9ee21a1be63ac89.rlib" "C:\\Users\\34937\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcompiler_builtins-82c426bab9a155a3.rlib"
  = note: Non-UTF-8 output: LINK : error LNK2001: \xce\xde\xb7\xa8\xbd\xe2\xce\xf6\xb5\xc4\xcd\xe2\xb2\xbf\xb7\xfb\xba\xc5 mainCRTStartup\r\nC:\\Users\\34937\\Desktop\\learning-rust\\blog_os\\target\\debug\\deps\\blog_os-d19438c79a36ae28.exe : fatal error LNK1120: 1 \xb8\xf6\xce\xde\xb7\xa8\xbd\xe2\xce\xf6\xb5\xc4\xcd\xe2\xb2\xbf\xc3\xfc\xc1\xee\r\n

error: aborting due to previous error

error: Could not compile `blog_os`.

To learn more, run the command again with --verbose.

参考信息

错误信息出现原因请参考: https://docs.microsoft.com/en-us/cpp/error-messages/tool-errors/linker-tools-error-lnk2001?view=vs-2017

另外找到了 可能 类似的rust连接c问题rust-lang/rust#31233
https://stackoverflow.com/questions/40548334/rust-code-cannot-link-with-a-c-library-compiled-on-windows-because-there-is-an-u

需要更新代码示例

从第二章起旧版示例代码已经无法使用最新rust发行版编译,原书示例代码已经更新,需要同步更新一下。
包括第二章去除xbuild依赖以及第三章打印字符range的写法修改

【使用Rust编写操作系统(附录二):禁用红区】翻译问题

原文

On function entry, the stack pointer is adjusted to make room on the stack for the return address and the local variables.

译文

两个指令(instruction)将栈指针调节到合适的位置,以便为返回地址(return address)和局部变量提供内存空间

看上去原文并没有提到 译文 中的两个指令

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.