インテルのみ表示可能 — GUID: iga1409352353800
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: iga1409352353800
Ixiasoft
7.4.4. 関数プロローグ
Nios II C/C++ コンパイラーは、スタックの一時保存と出力引数を保存する関数のスタックフレームを割り当てる関数プロローグを生成します。さらに、各プロローグは、呼び出し関数の状態を保存しなければなりません。これは、特定のレジスターのスタックへの保存を必要とします。これらのレジスター、呼び出し先保存レジスターは、「レジスター使用率」セクションの「Nios II ABI レジスター使用率」の表にリストされています。関数プロローグは、関数がレジスターを使用する場合にのみ、呼び出し先保存レジスターを保存する必要があります。
関数プロローグのアルゴリズムが与えられると、バックトレースを実行時にデバッガーは命令を逆アセンブルして呼び出し関数のプロセッサー状態を再構築できます。
注: プロローグが何を実行したのかを把握するより良い方法は、実行可能でリンク可能なフォーマットである (.elf)ファイルの DWARF-2 デバッギング・フィールドに格納されている情報を使用することです。.
Nios II 関数プロローグで検索可能な命令は、次のタスクを実行します。
- スタックポインターの調整 ( フレームの割り当て )
- フレームへのレジスターの保存
- フレームポインターの保存されるフレームポインターの位置への設定
関数プロローグ
/* Adjust the stack pointer */ addi sp, sp, -16 /* make a 16-byte frame */ /* Store registers to the frame */ stw ra, 12(sp) /* store the return address */ stw fp, 8(sp) /* store the frame pointer*/ stw r16, 4(sp) /* store callee-saved register */ stw r17, 0(sp) /* store callee-saved register */ /* Set the new frame pointer */ addi fp, sp, 8
関連情報