小编sni*_*per的帖子

Rust 函数“loop{}”返回“->!”有什么不同?并且什么也不返回?

我在 Rust 中遇到了这个函数:

#[no_mangle]
 pub extern "C" fn _start() -> ! {
    loop {}
}
Run Code Online (Sandbox Code Playgroud)

从这里的答案:“->!”是什么意思?在 Rust 中 ,我理解它永远不会返回。

上面的函数和下面没有任何返回的函数有什么区别?

#[no_mangle]
 pub extern "C" fn _start() {
    loop {}
}
Run Code Online (Sandbox Code Playgroud)

我能够编译两者。

rust

6
推荐指数
1
解决办法
102
查看次数

什么是MIPS中的影子寄存器以及它们是如何使用的?

当我读到MIPS架构时,我遇到了影子寄存器,它们被认为是通用寄存器的副本.

我无法理解以下内容:何时使用影子寄存器?

cpu mips cpu-architecture cpu-registers

5
推荐指数
1
解决办法
2944
查看次数

怎么把ELF文件转换成二进制文件?

我的理解是,二进制文件是处理器指令的十六进制代码(可以加载到内存中并从入口点开始执行),而ELF文件与为数据等分配的未固定内存地址相同。 。

现在,如何将ELF转换为二进制文件?

转换如何进行?我的意思是内存地址是如何分配的?

elf

5
推荐指数
1
解决办法
2万
查看次数

如何通过串口传输二进制文件?

我带来了一个新硬件(通过 USB 连接为 /dev/ttyUSB0)。我需要通过串行传输二进制 os.bin 文件。硬件具有内置的 UART 驱动程序。

我下载了 putty,在选项中看不到任何文件传输方法。

但我确实在 Teraterm 中看到了文件传输选项,而且很多:kermit、X、Y & ZMODEM、Quick Van 和 B-Plus。

现在,我不知道上面提到的任何协议。

我希望新硬件只有 UART 驱动程序。(按照手册中指定的波特率115200 8N1)

现在,如何将 os.bin 传输到 HW?& 如果我使用 Teraterm,我应该在 Teraterm 中选择哪个选项?

serial-port teraterm

5
推荐指数
1
解决办法
6万
查看次数

机器模式下mret和ret指令有什么区别?

当RISC-V核心工作在机器模式时,mret和ret指令有什么区别吗?

riscv

5
推荐指数
1
解决办法
3322
查看次数

如何通过gdb获取从链接器导入的全局变量的值?

以下全局变量被导入到汇编文件中。

.global _sbss               /* Start of .bss in RAM */
.global _ebss               /* End+1 of .bss in RAM */
Run Code Online (Sandbox Code Playgroud)

通过gdb,我怎样才能得到这些值?当我尝试打印 _ebss 时,我得到以下信息:

(gdb) print _ebss
$1 = 106 'j'
Run Code Online (Sandbox Code Playgroud)

不明白楼上什么意思。我期待在 RAM 中的地址。

assembly linker gdb

3
推荐指数
1
解决办法
727
查看次数

什么是单核?

我是 unikernels 的新手,以下链接对我理解它们没有多大帮助:

  1. 什么时候使用 unikernel 更好?
  2. 就代码大小而言,unikernel 如何比微内核小?

kernel unikernel

3
推荐指数
2
解决办法
860
查看次数

打印常量字符串的推荐方法是什么?

建议使用以下哪项?

printf("DON>"); 
Run Code Online (Sandbox Code Playgroud)

要么

const char prompt[] = "DON>";
printf("%s", prompt);  
Run Code Online (Sandbox Code Playgroud)

有什么不同?

c

0
推荐指数
1
解决办法
82
查看次数

为什么strcpy使用const char*代替src而不是char*?

我实现了自己的strcpys来查找src与const char*和char*之间是否有任何区别,但是没有发现以下2和两者之间有任何区别.

char * my_strcpy(char*dest, char* src)
{
    while ('\0' != *src)
        *dest++ = *src++;
    *dest++ = '\0';
        return dest;
}

char * my_strcpy2(char*dest, const char* src)
{
    while ('\0' != *src)
        *dest++ = *src++;
    *dest++ = '\0';
    return dest;
}
Run Code Online (Sandbox Code Playgroud)

是否有任何理由strcpy将源指针作为const char*而不是char*?

c pointers

-1
推荐指数
1
解决办法
4146
查看次数