waiting bin 文件的开头第一个指令,就是 gcc 链接文件使用 ENTRY() 指定的符号的地址所指向的指令,通常为 _start。这是最基本的信息。
你要直接修改二进制文件,需要非常了解汇编二进制指令,也可以借助 objdump 工具把汇编二进制转换成汇编指令语言。并且对于 riscv 这种支持变长指令的指令集,如果修改的指令长度变了,还需要考虑相对地址变化的问题。不建议直接修改二进制指令。
如果想要运行时动态修改代码段,可以通过替换跳转指令实现,比原地替换更好一点。而直接 bin 文件,修改跳转文件还需要修改 .data 段的地址和相关的相对地址。