我对此很困惑。
你如何实际获得“jal printf”的二进制表示, 假设printf位于0x4000位置且该指令位于0x200位置。
任何人都可以详细解释这个问题吗?
感谢。
答案 0 :(得分:1)
JAL
是J-type instruction,其中包含操作码3(%000011
)。 JAL
不使用PC相对寻址,因此绝对地址存储在指令字的低26位中 - 除了它向右移位两位(因为指令需要字对齐)没有任何意义能够将跳转编码为奇数地址)。这允许您跳转到前2 ^ 28字节内存中的任何字(256 MB)。
因此,您的JAL
地址0x4000将被编码为:
%00001100000000000001000000000000
与
相同 0x0C001000