3
ทำไมเรายังคงเติบโตสแต็คย้อนหลังได้
เมื่อทำการคอมไพล์รหัส C และดูแอสเซมบลีมันทั้งหมดจะมีสแต็กเติบโตแบบย้อนกลับดังนี้: _main: pushq %rbp movl $5, -4(%rbp) popq %rbp ret -4(%rbp)- หมายความว่าตัวชี้ฐานหรือตัวชี้สแต็คกำลังเคลื่อนย้ายที่อยู่หน่วยความจำแทนที่จะไปขึ้นหรือไม่? ทำไมถึงเป็นอย่างนั้น? ฉันเปลี่ยน$5, -4(%rbp)ไป$5, +4(%rbp)คอมไพล์และรันโค้ดและไม่มีข้อผิดพลาด เหตุใดเราจึงต้องย้อนกลับไปในหน่วยความจำสแต็ค