看清华的开发系统的文档,学着学着到用llvm_asm宏了,谁知md给我报错
说llvm_asm!宏找不到,md去翻文档,淦,文章中的llvm_asm!宏在rust1.51就tm废了,现在有的只有asm!宏
没办法只好去读riscv64的开发文档…
知道了ecall的原理
x10
x11
x12
x17
在执行ecall时用到。给这几个寄存器赋值就行了
于是写成:
asm!(
"mv x10, {a}",
"mv x11, {b}",
"mv x12, {c}",
"mv x17, {d}",
"ecall",
"mv {a}, {ret}",
a = inout(reg) args[0],
b = in(reg) args[1],
c = in(reg) args[2],
d = in(reg) id,
ret = out(reg) ret,
);
太完美拉!!!
顺便一说清华在的话维护一下文档啊!!与时俱进一下!!
rustc1.51用起来难受啊!!
能不能兼容一下rust1.56!!
上述过程本人经历两天才解决
(一天读riscv64文档,一天学习llvm_asm!和asm!用法。。。)
快去改文档啊清华!!!!!!!!