標籤:
知識點:
馮諾依曼體繫結構結構,它最核心的思想是儲存程式電腦。
cpu通過匯流排與記憶體串連,依靠ip指標依次從記憶體中取出一條指令執行。
API:程式員與電腦的介面介面。
ABI:程式與CPU的介面介面。
寄存器、定址方式和各類指令在學習《深入理解電腦》和《彙編》時已做了詳細瞭解,不再贅述。
實驗:
入下:
原代碼為:
int g(int x)
{
return x+3;
}
int f(int x)
{
return g(x);
}
a
int main(void)
{
return f(8)+1;
}
彙編代碼為:
g:
pushl%ebp
movl%esp, %ebp
movl8(%ebp), %eax
addl$3, %eax
popl%ebp
ret
f:
pushl%ebp
movl%esp, %ebp
subl$4, %esp
movl8(%ebp), %eax
movl%eax, (%esp)
callg
leave
ret
main:
pushl%ebp
movl%esp, %ebp
subl$4, %esp
movl$8, (%esp)
callf
addl$1, %eax
leave
ret
代碼非常簡單,只要記住
pushl %ebp 等價於 subl $4,%esp movl %ebp,(%esp)
leave 等價於 movl %ebp,%esp popl %ebp
popl %ebp 等價於 movl (%esp),%ebp addl $4
call是將返回地址也就是當前eip的值壓入棧頂,然後跳轉到函數的起始地址
ret彈出返回地址到eip繼續執行下面的指令
電腦的工作原理:
就是按照程式的編排,cpu從記憶體中一個一個取出指令和資料並執行。
胡禦風
原創作品轉載請註明出處
《Linux核心分析》MOOC課程http://mooc.study.163.com/course/USTC-1000029000
電腦是如何工作的