Bu muhtemelen göremediğim basit, açık bir şey, ancak MIPS64 işlemcisine nasıl adres yüklerim? Bir MIPS32 işlemcisinde aşağıdaki montajcı sözde talimat: içineMIPS64'de adres yükleme
la $at, LabelAddr
genişletir:
lui $at, LabelAddr[31:16]
ori $at,$at, LabelAddr[15:0]
MIPS64 komut kümesi bakınca
lui
hala üst yarısında içine 16 bit hemen yükler görüyoruz 32 bitlik bir kelime. Herhangi bir yerde, 64 bitlik bir kelimenin üst kısmına anında yüklenen herhangi bir genişletilmiş talimat görünmüyor.
lui $at, LabelAddr[63:48]
ori $at, $at, LabelAddr[47:32]
sll $at, 16
ori $at, $at, LabelAddr[31:16]
sll $at, 16
ori $at, $at, LabelAddr[15:0]
Bu biraz olarak beni vurur ... yükleme gibi temel olarak bir şey için dolambaçlı: Bu daha sonra, ben gibi kod içine bir şey genişletmek gerekiyordu bir la
sözde talimat eşdeğer yapmak, görünüyor bir adres bu yüzden beni bir şey gözden kaçırdığına inandırdı.
Neyi göz ardı ettim (bir şey varsa)?
Bu RISC mimarileri ile ortak bir sorundur - PowerPC da 64 bit acil adres/değer yüklemek için talimatlar benzer sayıda sürer. Bunun için muhtemelen bir makro isteyeceksiniz. –
Kısacası, aslında hiçbir şeyi gözden kaçırmadım. Bu aslında biraz rahatlama. –
Muhtemelen hayır - MIPS64'te bunu yapmanın biraz daha özlü bir yolu olabilir, bu yüzden şimdilik bir makroda saklarsanız, daha sonra her zaman iyileştirebilirsiniz. –