assembly code
.BASE 0x1000 POP AX .END .SPACE (4) #在硬碟中的情況 | PUSH AX MOVE AX, 3 MULT AX, 7 MOVE (0x1018), AX CALL print, (0x1018) POP AX #Memory中的內容 |
要改變記憶體位置就得重新compile
Load Time
assembly code
.START PUSH AX MOVE AX, 3 MULT AX, 7 MOVE (.BS+0x18), AX CALL print, (.BS+0x18) POP AX .END .SPACE (4) #在硬碟中的情況 | PUSH AX MOVE AX, 3 MULT AX, 7 MOVE (0x2018), AX CALL print, (0x2018) POP AX #Memory中的內容 |
要改變記憶體位置要重開程式
Execution Time
assembly code
assembly code
.START PUSH AX MOVE AX, 3 MULT AX, 7 MOVE (0x18), AX CALL print, (0x18) POP AX .END .SPACE (4) #在硬碟中的情況 | PUSH AX MOVE AX, 3 MULT AX, 7 MOVE (0x18), AX CALL print, (0x18) POP AX #Memory中的內容 |
不論在實體記憶體中的哪個部分都沒問題,會透過MMU把虛擬的位置轉成實體
Logical Address、Physical Address
在Compile Time和Load Time:Logical Address=Physical Address
Logical Address、Physical Address
在Compile Time和Load Time:Logical Address=Physical Address
在Execution Time:Logical Address!=Physical Address
疑問:如果MMU可以吃超過32個bit,整個OS是不是能調度超過4GB呢?
沒有留言:
張貼留言