我在 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)
我能够编译两者。
当我读到MIPS架构时,我遇到了影子寄存器,它们被认为是通用寄存器的副本.
我无法理解以下内容:何时使用影子寄存器?
我的理解是,二进制文件是处理器指令的十六进制代码(可以加载到内存中并从入口点开始执行),而ELF文件与为数据等分配的未固定内存地址相同。 。
现在,如何将ELF转换为二进制文件?
转换如何进行?我的意思是内存地址是如何分配的?
我带来了一个新硬件(通过 USB 连接为 /dev/ttyUSB0)。我需要通过串行传输二进制 os.bin 文件。硬件具有内置的 UART 驱动程序。
我下载了 putty,在选项中看不到任何文件传输方法。
但我确实在 Teraterm 中看到了文件传输选项,而且很多:kermit、X、Y & ZMODEM、Quick Van 和 B-Plus。
现在,我不知道上面提到的任何协议。
我希望新硬件只有 UART 驱动程序。(按照手册中指定的波特率115200 8N1)
现在,如何将 os.bin 传输到 HW?& 如果我使用 Teraterm,我应该在 Teraterm 中选择哪个选项?
以下全局变量被导入到汇编文件中。
.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 中的地址。
我是 unikernels 的新手,以下链接对我理解它们没有多大帮助:
建议使用以下哪项?
printf("DON>");
Run Code Online (Sandbox Code Playgroud)
要么
const char prompt[] = "DON>";
printf("%s", prompt);
Run Code Online (Sandbox Code Playgroud)
有什么不同?
我实现了自己的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*?