我目前工作的一個C++編譯器在JS我Logisim CPU,現在有變量的一個問題:我在RAM來存儲數據定義的空間寫我自己的C++編譯器..停留在變量
/值,並且我已經定義了一個空間來存儲地址到數據空間。我有一個寄存器nx,指針指向最後一個變量,寄存器mx指向最後一個「數據存儲」RAM。但我不知道如何訪問它們,例如在這裏:
修改C++代碼:
int *pointer_test;
int test;
test = 123;
pointer_test = &test;
*pointer_test = 25;
預彙編:
//Allocate new variable <--- int *pointer_test;
add nx, 1
//Set the pointer pointing to zero
sram nx, 0
//Allocate another variable <--- int test;
add nx, 1
//Allocate new storage for the variable
add mx, 1
//Let the variable point to the data <--- test = 123;
sram nx, mx
sram mx, 123
我現在該如何實現:
pointer_test = &test;
我&測試的唯一價值,保存在nx中,因爲它是聲明的最後一個變量,但不是變量/指針的地址「pointer_測試」 ......
我認爲平時堆從0開始增加,它提供了一個簡單的方法來檢查它是否爲空而不知道它的大小。 –
@ J.N。堆棧可能在任何地方開始,因爲進程中的多個線程將擁有自己的堆棧,並且它們都不能從地址0開始,這個地址很可能不會在進程地址空間中。但是,如果堆棧數據結構與索引一起使用,則通常會以索引值0開始,以指示它爲空。 –
@Linuxios對不起,我正在給JN寫信。我認爲你的解釋相當不錯。 –