0
配列の先頭に整数を挿入する方法は?配列の先頭に整数を挿入するMIPS
例:
レジスタ$ S0 = 4(配列の要素の#)
レジスタ$ s1を= 0x10040000(配列の先頭のアドレス)
0x10040000 10
0x10040004 20
0x10040008 30
0x1000400C 40
私が挿入したいですint、たとえば0x10040000で5とし、すべてを下に移動します。
0x10040000 5
0x10040004 10
0x10040008 20
0x1000400C 30
0x10004010 40
配列の前のアドレスに5を挿入するのですが、私ができるようにしたいのは、配列の先頭に5を挿入し、それ以外をすべて移動することです。
あなたがそれを配列として考えるのを止め、2つの "メモリイメージ"を見るだけであれば、何をする必要があるのかは明らかです。メモリ内容を4バイト上に移動( '0x10040000'から4ワード)し、' 0x10040000'に '5 'を書き込む必要があります。この種の 'memmove'は、最適な方法で実行されるのが普通ですが、CPUに特有のものです(MIPSについてはわかりません)が、パフォーマンスに問題がなければ' i = 4; array(i - )array [i + 1] = array [i]; '(配列の最後から移動するので、元の値は移動したもので上書きされません)。 – Ped7g
ところで、これはC++の 'vector <> 'が連続した記憶域の中で空のスロットを作るために配列の残りの部分を移動する必要があるので、挿入のために"遅い "と考えられる理由です。このような挿入ペナルティは後の処理で素早く取り戻されることが多いので、実際の性能を見出すために、使用プロファイリングを推測するのではなく、 'vector <>'構造体のパワーを過小評価しないでください。 'vector <>'型のデータ構造体は通常、初期バージョンのための最良のスタートです。 – Ped7g