8.2.1.2 延迟槽填充


文档摘要

8.2.1.2 延迟槽填充 延迟槽填充:当编译器在跳转指令后偷偷塞进一行“不该存在”的代码 你有没有遇到过这样的场景? 一段在模拟器里跑得飞快的 MIPS 汇编代码,烧进真实 FPGA 的龙芯 2K1000(基于 LoongISA 兼容 MIPS32r2)后,功能突然错乱——不是崩溃,不是死锁,而是某个寄存器值比预期早一个周期被覆盖,导致状态机跳转错位;或者更隐蔽地,UART 发送缓冲区的写入时序偏移了半拍,串口终端上每隔三行就丢一个字符。你单步跟踪、查手册、翻流水线图,反复确认指令顺序无误……直到某天凌晨三点,你盯着 后面那条 ,猛然意识到:这不是编译器优化的锅,是硬件在逼你“补洞”。 这个洞,叫延迟槽(delay slot)。


发布者: 作者: 转发
评论区 (0)
U