インテルのみ表示可能 — GUID: iga1409352505303
Ixiasoft
3.4.2.1. status レジスター
3.4.2.2. estatus レジスター
3.4.2.3. bstatus レジスター
3.4.2.4. ienable レジスター
3.4.2.5. ipending レジスター
3.4.2.6. cpuid レジスター
3.4.2.7. exception レジスター
3.4.2.8. pteaddr レジスター
3.4.2.9. tlbacc レジスター
3.4.2.10. tlbmisc レジスター
3.4.2.11. badaddr レジスター
3.4.2.12. config レジスター
3.4.2.13. mpubase レジスター
3.4.2.14. mpuacc レジスター
8.5.1. add
8.5.2. addi
8.5.3. and
8.5.4. andhi
8.5.5. andi
8.5.6. beq
8.5.7. bge
8.5.8. bgeu
8.5.9. bgt
8.5.10. bgtu
8.5.11. ble
8.5.12. bleu
8.5.13. blt
8.5.14. bltu
8.5.15. bne
8.5.16. br
8.5.17. break
8.5.18. bret
8.5.19. call
8.5.20. callr
8.5.21. cmpeq
8.5.22. cmpeqi
8.5.23. cmpge
8.5.24. cmpgei
8.5.25. cmpgeu
8.5.26. cmpgeui
8.5.27. cmpgt
8.5.28. cmpgti
8.5.29. cmpgtu
8.5.30. cmpgtui
8.5.31. cmple
8.5.32. cmplei
8.5.33. cmpleu
8.5.34. cmpleui
8.5.35. cmplt
8.5.36. cmplti
8.5.37. cmpltu
8.5.38. cmpltui
8.5.39. cmpne
8.5.40. cmpnei
8.5.41. custom
8.5.42. div
8.5.43. divu
8.5.44. eret
8.5.45. flushd
8.5.46. flushda
8.5.47. flushi
8.5.48. flushp
8.5.49. initd
8.5.50. initda
8.5.51. initi
8.5.52. jmp
8.5.53. jmpi
8.5.54. ldb / ldbio
8.5.55. ldbu / ldbuio
8.5.56. ldh / ldhio
8.5.57. ldhu / ldhuio
8.5.58. ldw / ldwio
8.5.59. mov
8.5.60. movhi
8.5.61. movi
8.5.62. movia
8.5.63. movui
8.5.64. mul
8.5.65. muli
8.5.66. mulxss
8.5.67. mulxsu
8.5.68. mulxuu
8.5.69. nextpc
8.5.70. nop
8.5.71. nor
8.5.72. or
8.5.73. orhi
8.5.74. ori
8.5.75. rdctl
8.5.76. rdprs
8.5.77. ret
8.5.78. rol
8.5.79. roli
8.5.80. ror
8.5.81. sll
8.5.82. slli
8.5.83. sra
8.5.84. srai
8.5.85. srl
8.5.86. srli
8.5.87. stb / stbio l
8.5.88. sth / sthio
8.5.89. stw / stwio
8.5.90. sub
8.5.91. subi
8.5.92. sync
8.5.93. trap
8.5.94. wrctl
8.5.95. wrprs
8.5.96. xor
8.5.97. xorhi
8.5.98. xori
インテルのみ表示可能 — GUID: iga1409352505303
Ixiasoft
7.8. 再配置
Nios II オブジェクト・ファイルでは、各再配置可能なアドレス参照に再配置型があります。再配置型は、再配置アドレスを計算する方法を指定します。ビットマスクは、命令内でアドレスがどこにあるかを指定します。
名称 | 値 | オーバーフロー check 46 |
再配置アドレス R |
ビットマスク M |
ビットシフト B |
---|---|---|---|---|---|
R_NIOS2_NONE | 0 | N/A | なし | N/A | N/A |
R_NIOS2_S16 | 1 | チェックあり | S + A | 0x003FFFC0 | 6 |
R_NIOS2_U16 | 2 | チェックあり | S + A | 0x003FFFC0 | 6 |
R_NIOS2_PCREL16 | 3 | チェックあり | ((S + A) – 4) – PC | 0x003FFFC0 | 6 |
R_NIOS2_CALL2647 | 4 | チェックあり | (S + A) >> 2 | 0xFFFFFFC0 | 6 |
R_NIOS2_CALL26_NOAT | 41 | チェックなし | (S + A) >> 2 | 0xFFFFFFC0 | 6 |
R_NIOS2_IMM5 | 5 | チェックあり | (S + A) & 0x1F | 0x000007C0 | 6 |
R_NIOS2_CACHE_OPX | 6 | チェックあり | (S + A) & 0x1F | 0x07C00000 | 22 |
R_NIOS2_IMM6 | 7 | チェックあり | (S + A) & 0x3F | 0x00000FC0 | 6 |
R_NIOS2_IMM8 | 8 | チェックあり | (S + A) & 0xFF | 0x00003FC0 | 6 |
R_NIOS2_HI16 | 9 | チェックなし | ((S + A) >> 16) & 0xFFFF | 0x003FFFC0 | 6 |
R_NIOS2_LO16 | 10 | チェックなし | (S + A) & 0xFFFF | 0x003FFFC0 | 6 |
R_NIOS2_HIADJ16 | 11 | チェックなし | Adj(S+A) | 0x003FFFC0 | 6 |
R_NIOS2_BFD_RELOC_32 | 12 | チェックなし | S + A | 0xFFFFFFFF | 0 |
R_NIOS2_BFD_RELOC_16 | 13 | チェックあり | (S + A) & 0xFFFF | 0x0000FFFF | 0 |
R_NIOS2_BFD_RELOC_8 | 14 | チェックあり | (S + A) & 0xFF | 0x000000FF | 0 |
R_NIOS2_GPREL | 15 | チェックなし | (S + A – GP) & 0xFFFF | 0x003FFFC0 | 6 |
R_NIOS2_GNU_VTINHERIT | 16 | N/A | なし | N/A | N/A |
R_NIOS2_GNU_VTENTRY | 17 | N/A | なし | N/A | N/A |
R_NIOS2_UJMP | 18 | チェックなし | ((S + A) >> 16) & 0xFFFF, (S + A + 4) & 0xFFFF |
0x003FFFC0 | 6 |
R_NIOS2_CJMP | 19 | チェックなし | ((S + A) >> 16) & 0xFFFF, (S + A + 4) & 0xFFFF |
0x003FFFC0 | 6 |
R_NIOS2_CALLR | 20 | チェックなし | ((S + A) >> 16) & 0xFFFF) (S + A + 4) & 0xFFFF |
0x003FFFC0 | 6 |
R_NIOS2_ALIGN | 21 | N/A | なし | N/A | N/A |
R_NIOS2_GOT16 | 2248 | チェックあり | G | 0x003FFFC0 | 6 |
R_NIOS2_CALL16 | 2348 | チェックあり | G | 0x003FFFC0 | 6 |
R_NIOS2_GOTOFF_LO | 2448 | チェックなし | (S + A – GOT) & 0xFFFF | 0x003FFFC0 | 6 |
R_NIOS2_GOTOFF_HA | 2548 | チェックなし | Adj (S + A – GOT) | 0x003FFFC0 | 6 |
R_NIOS2_PCREL_LO | 2648 | チェックなし | (S + A – PC) & 0xFFFF | 0x003FFFC0 | 6 |
R_NIOS2_PCREL_HA | 2748 | チェックなし | Adj (S + A – PC) | 0x003FFFC0 | 6 |
R_NIOS2_TLS_GD16 | 2848 | チェックあり | Thread-Local Storage セクションを参照 | 0x003FFFC0 | 6 |
R_NIOS2_TLS_LDM16 | 2948 | チェックあり | Thread-Local Storage セクションを参照 | 0x003FFFC0 | 6 |
R_NIOS2_TLS_LDO16 | 3048 | チェックあり | Thread-Local Storage セクションを参照 | 0x003FFFC0 | 6 |
R_NIOS2_TLS_IE16 | 3148 | チェックあり | Thread-Local Storage セクションを参照 | 0x003FFFC0 | 6 |
R_NIOS2_TLS_LE16 | 3248 | チェックあり | Thread-Local Storage セクションを参照 | 0x003FFFC0 | 6 |
R_NIOS2_TLS_DTPMOD | 3348 | チェックなし | Thread-Local Storage セクションを参照 | 0xFFFFFFFF | 0 |
R_NIOS2_TLS_DTPREL | 3448 | チェックなし | Thread-Local Storage セクションを参照 | 0xFFFFFFFF | 0 |
R_NIOS2_TLS_TPREL | 3548 | チェックなし | Thread-Local Storage セクションを参照 | 0xFFFFFFFF | 0 |
R_NIOS2_COPY | 3648 | チェックなし | Copy Relocation セクションを参照 | N/A | N/A |
R_NIOS2_GLOB_DAT | 3748 | チェックなし | S | 0xFFFFFFFF | 0 |
R_NIOS2_JUMP_SLOT | 3848 | チェックなし | Jump Slot Relocation セクションを参照 | 0xFFFFFFFF | 0 |
R_NIOS2_RELATIVE | 3948 | チェックなし | BA+A | 0xFFFFFFFF | 0 |
R_NIOS2_GOTOFF | 4048 | チェックなし | S+A | 0xFFFFFFFF | 0 |
R_NIOS2_GOT_LO | 4248 | チェックなし | G & 0xFFFF | 0x003FFFC0 | 6 |
R_NIOS2_GOT_HA | 4348 | チェックなし | Adj(G) | 0x003FFFC0 | 6 |
R_NIOS2_CALL_LO | 4448 | チェックなし | G & 0xFFFF | 0x003FFFC0 | 6 |
R_NIOS2_CALL_HA | 4548 | チェックなし | Adj(G) | 0x003FFFC0 | 6 |
上の表の規定は、次の表現を使用しています。
- S: シンボルアドレス
- A: 加数
- PC: プログラムカウンター
- GP: グローバルポインター
- Adj(X): (((X >> 16) & 0xFFFF) + ((X >> 15) & 0x1)) & 0xFFFF
- BA: 共有ライブラリーがロードされるベースアドレス
- GOT: グローバル・オフセット・テーブル (GOT) ポインターの値 (Linux のみ )
- G: シンボル S の GOT スロットの GOT 内へのオフセット (Linux のみ )
上の表の情報を使用し、次のようにどの Nios II 命令も符号なし 32 ビット整数として操作し、再配置することができます。
Xr = (( R << B ) & M | ( X & ~M ));
ここでの各表記は次のとおりです。
- R : 上の表で計算された再配置アドレス
- B : ビットシフト
- M : ビットマスク
- X : 元の命令
- Xr : 再配置された命令
46 オーバーフロー・チェックが行われない再配置型の場合、再配置アドレスは命令に合わせて切り捨てられます。
47 リンカーはオーバーフローを解決する過程でレジスター AT を壊すことが許可されています。
48 再配置サポートは Linux システムで提供されています。