MIPS では、配列を次のように宣言できることを知っています。
list: .space 20
しかし、ユーザー入力に基づいて異なるサイズの配列を作成したい場合はどうすればよいでしょうか? これは可能ですか?
たとえば、プログラムはユーザーに整数 N を入力し、長さ N の配列を作成するように求めます。
システムコール 9 を使用して、ヒープにメモリを割り当てることができます
li $a0, numbytes
li $v0, 9
syscall
アドレスが返されます$v0
それは良い質問です。アセンブリ言語では、このように宣言された変数は静的に割り当てられます。つまり、アセンブリ時に割り当てられます。実行時にユーザー入力に基づいて変数を割り当てたい場合は、少なくとも 2 つの選択肢があります。スタックに領域を割り当てる (そしてスタック オーバーフローを監視する) か、通常はヒープと呼ばれるメモリ プールから割り当てることです。いずれの場合も、割り当てはアセンブリ時ではなくラム時に行われます。