No používají se různé triky. Pro hodnoty mezi 0 až 32767 a 0 až -32768 se používá instrukce li rd, konstanta, což je jmenný alias na addi rd, r0, konstanta (šestý řádek v tabulce zde http://www.root.cz/clanky/riscova-architektura-powerpc-pokracovani/#k06). Pro konstanty posunuté do bitů 16 až 31 potom instrukce lis, což je opět alias na addis (sedmý řádek v tabulce).
Dále už je to šílenější, například pro neznaménkovou konstantu 0 až 65535 se používá:
xor rd, rd, rd ; vymažeme ori rd, rd, konstanta
No a jiné případy - klasika známá například i z ARMu: prostě se ta konstanta vrazí někam blízko do kódu a adresuje se přes ld se známým offsetem.
No tak sem taky napisu komentar, aby autor nemel pocit, ze to nikoho nezajima. PPC mi sice prijde lehce 'mrtve' (Apple jej opustil, v automotive jej pomalu nahradil TriCore, i kdyz nove se pouziva VLE pro ruzne body fce, v automatizaci mi prijde, ze uz je to taky jine nez byvalo, tak co zustava? Servery IBM ?)
Architektura to je ale hezky navrzena. Moc se mi libi to, jak na rozdil od jinych architektur prepnuti mezi 32->64 bit je vlastne jen jeden priznak, jinak se vubec nic nemeni. Nebo endianita, taky jeden bit. Nebo nektere opravdu zapeklite instrukce, ktere se daji pouzit asi na milion ruznych veci...