インテルのみ表示可能 — GUID: iga1409352504102
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: iga1409352504102
Ixiasoft
7.5.2. 戻り値
r2とr3には最大 8 バイトの型の戻り値が返されます。8 バイト以上の戻り値の場合、呼び出し元は結果にメモリーを割り当てる必要があり、結果メモリーのアドレスを隠しゼロ引数として渡す必要があります。
隠しゼロ引数は、例を使って説明するのが一番です。
構造体返し
/* b() computes a structure-type result and returns it */ STRUCT b(int i, int j) { ... return result; } void a(...) { ... value = b(i, j); }
上記の例では、結果の型が 8 バイト以下の場合、b()は結果をr2とr3に返します。
戻り型が 8 バイトより大きい場合、Nios II C/C++ コンパイラーはa()がb()へのポインターを渡したかのようにこのプログラムを処理します。下の例は、Nios II C/C++ コンパイラーが上記の構造体返しのコードでどのようにコードを見ているかを示しています。
構造体返しは 8 バイト以上
void b(STRUCT *p_result, int i, int j) { ... *p_result = result; } void a(...) { STRUCT value; ... b(&value, i, j); }