Linux內核分析— —計算機是如何工作的(20135213林涵錦)

實驗部分

(以下命令為實驗樓64位Linux虛擬機環境下適用,32位Linux環境可能會稍有不同)

使用

  1. gcc?–S?–o?main.s?main.c?-m32

命令編譯成匯編代碼,

  1. int?g(int?x)
  2. {
  3. ??return?x?+?6;
  4. }
  5. ?
  6. int?f(int?x)
  7. {
  8. ??return?g(x);
  9. }
  10. ?
  11. int?main(void)
  12. {
  13. ??return?f(13)?+2;
  14. }

?

1. 實驗截圖

復制代碼到實驗樓

編譯,打開main.s(打開前忘記截圖,改完后截的圖)

刪完冗余部分,剩下的匯編代碼

? ? ? ? ? ?

2.分析匯編代碼的工作過程中堆棧的變化

?

3.總結部分需要闡明自己對“計算機是如何工作的”理解。

首先是了解計算機的工作模型://圖以及解說源自百度

(馮·諾依曼體系結構:把程序本身當作數據來對待,程序和該程序處理的數據用同樣的方式儲存。數字計算機的數制采用二進制;計算機應該按照程序順序執行。)

按老師給的圖也挺好理解://圖及解說源自云課堂截圖

IP:寄存器,總是指向內存的代碼段。 ? ? ? ? ? ? ? ? ? ? ? 內存:保存數據和指令。

CPU:CPU從IP指向的內存地址取指令執行,執行之后IP自加一,然后繼續執行。

然后我們可以大概了解計算機是如何工作的:

先在內存中運行第一條指令,然后根據其指令的內容及要求,從存儲器中取出相應的數據在CPU中執行,最后根據地址將結果返回到內存之中。

重復這樣的步驟直到停止指令出現或完成所有指令。

?

?

注:

姓名:林涵錦?

?《Linux內核分析》MOOC課程http://mooc.study.163.com/course/USTC-1000029000?

轉載于:https://www.cnblogs.com/20135213lhj/p/5225247.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/255897.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/255897.shtml
英文地址,請注明出處:http://en.pswp.cn/news/255897.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

apache域名跳轉

①編輯虛擬主機配置文件/usr/local/apache2.4/conf/extra/httpd-vhosts.conf如下<VirtualHost *:80>DocumentRoot "/data/wwwroot/111.com"ServerName 111.comServerAlias www.example.com 2111.com.cnErrorLog "logs/111.com-error_log"CustomLog …

php 畫圖片2

<?php// 使用php操作gd庫做圖// 1. 創建一個畫布資源$im imagecreatetruecolor(200, 50);// 2. 創建背景色// 2.1 得到背景顏色$bg_color imagecolorallocate($im, mt_rand(200, 255), mt_rand(200, 255), mt_rand(200, 255));// 2.2 填充畫布imagefill($im, 0, 0, $bg_c…

ABB機器人ROBOTSTUDIO中軌跡與二次開發的問答

問&#xff1a; 在視頻學習里&#xff0c;robotstudio可以提取物體的某條輪廓來直接生成路徑。請問&#xff0c;1.如果要提取的是模型兩邊的中心線&#xff0c;也能直接生成路徑嗎&#xff1f;2.robotstudio有二次開發的功能嗎&#xff0c;比如對數據進行運算。我也不知道我說的…

【Python數據結構】——二叉平衡樹AVL(查找、構建、刪除、插入、打印、遍歷)

#!/usr/bin/env python # -*- coding: utf-8 -*- # Time : 2021/7/28 20:57 # Author : linlianqin # Site : # File : 二叉平衡樹專題&#xff08;創建、插入、查找&#xff09;.py # Software: PyCharm # description:二叉平衡樹的特點&#xff1a;在二叉查找樹的…

隨筆速記

LVM增加與縮小Swap分區操作 http://blog.sina.com.cn/s/blog_5f2ca1ed0101ebw8.html Ubuntu刪除多余內核 # dpkg --get-selections | grep linux # apt-get purge linux-headers-3.0.0-12 linux-image-3.0.0-12-generic # update-grub Ubuntu清理安裝包、已卸載軟件、已卸載軟件…

【測試開發】測試用例講解

文章目錄 目錄 文章目錄 前言 一、測試用例的基本要素 二、測試用例的設計方法 1.基于需求的設計方法 對日歷根據web界面的功能布局分析出的功能框圖如下&#xff1a; 繼續舉一個例子百度云盤非功能測試的案例&#xff1a; 2.等價類 3.邊界值 5.正交表 6.場景設計法 7…

Linux下進行Web服務器壓力(并發)測試工具http_load、webbench、ab、Siege、autobench簡單使用教程(轉)...

一、http_load 程序非常小&#xff0c;解壓后也不到100K http_load以并行復用的方式運行&#xff0c;用以測試web服務器的吞吐量與負載。但是它不同于大多數壓力測試工 具&#xff0c;它可以以一個單一的進程運行&#xff0c;一般不會把客戶機搞死。還可以測試HTTPS類的網站請求…

【Python數據結構】——并查集的實現(查找、合并、集合、實例)

#!/usr/bin/env python # -*- coding: utf-8 -*- # Time : 2021/7/30 23:12 # Author : linlianqin # Site : # File : 并查集專題&#xff08;合并、查找、集合&#xff09;.py # Software: PyCharm # description: 并查集其實就是多個數組&#xff0c;每一個數組都…

如何實現ABB機器人與老式焊機的連接控制

問題&#xff1a; 請教一個機器人與老式焊機如何連接&#xff0c;如何設置。 我現在是用SET指令設DO為1再外接繼電器來控制焊機工作的&#xff0c;用RESET指令來使焊機停止工作的。現在可 以焊接&#xff0c;但是如果中間停止或機器人報錯停止不動&#xff0c;焊機始終處于工作…

gitlab 雜記

GitLab 編譯部署 1&#xff0c;請盡量不要在國內主機上部署&#xff0c;中途天朝很有可能導致gem執行出現問題&#xff0c;以下在AWS上部署&#xff1b; 2&#xff0c;系統中必須要有swap分區&#xff0c;不然會出現500錯誤&#xff1b; 系統版本&#xff1a;CentOS 6.x x86_6…

Hadoop分布式系統的安裝部署

1、關于虛擬機的復制 新建一臺虛擬機&#xff0c;系統為CentOS7&#xff0c;再克隆兩臺&#xff0c;組成一個三臺機器的小集群。正常情況下一般需要五臺機器&#xff08;一個Name節點&#xff0c;一個SecondName節點&#xff0c;三個Data節點。&#xff09; 此外&#xff0c;為…

Windows線程調度學習(一)

前言 Windows 線程調度器的實現分散在內核各處&#xff0c;并且與許多組件都有關聯&#xff0c;很難進行系統地學習&#xff0c;所以我打算寫幾篇文章來記錄下自己學習過程中的思考和分析&#xff0c;同時也方便日后查閱&#xff0c;此文可以看作是《Windows內核原理與實現》中…

機器人的有效負荷

問題&#xff1a; 假如我想在程序里做多幾個有效載荷,但在手動操縱畫面上只能加一個,其它要怎樣用?給個實際例子給我啊. 回答&#xff1a; 在搬運中&#xff0c;確實是有載荷發生變化的情況&#xff0c;如兩抓(A B)的夾具&#xff0c;有三種載荷情況&#xff0c;1、A抓有載荷…

【Python生成readme文件】——Markdown語法

鏈接&#xff1a;https://www.cnblogs.com/wj-1314/p/8547763.html

編程之美2.13子數組的最大乘積

題目&#xff1a; 給定一個長度為N的數組&#xff0c;只許用乘法&#xff0c;不許用除法&#xff0c;計算任意&#xff08;N-1&#xff09;個數的組合中乘積最大的一個組&#xff0c;并寫出算法的時間復雜度。 如果把所可能的乘積找出來&#xff0c;共有&#xff08;N-1&#x…

[SceneKit專題]11-Reference-Nodes引用節點

說明 本系列文章是對<3D Apple Games by Tutorials>一書的學習記錄和體會 此書對應的代碼地址 SceneKit系列文章目錄 本文將完成一個完整的node節點,帶有完整貼圖,并將其導入其他場景中,成為其中的一個引用節點.這樣可以更方便的組織場景,并能復用場景中的節點,正類似于面…

scapy 安裝及簡單測試

關于scapy Scapy的是一個強大的交互式數據包處理程序&#xff08;使用python編寫&#xff09;。它能夠偽造或者解碼大量的網絡協議數據包&#xff0c;能夠發送、捕捉、匹配請求和回復包等等。它可以很容易地處理一些典型操作&#xff0c;比如端口掃描&#xff0c;tracerouting&…

MoveAbsJ在使用時和MOVEJ有什么區別

問 題&#xff1a; MoveAbsJ在使用時和MOVEJ有什么區別 回 答&#xff1a; MoveAbsJ的目標點是用六個軸伺服電機的偏轉角度值來指定的。 MOVEJ和MOVEL的目標點是用坐標系X Y Z的值來指定的。

Python中的序列操作

Python中的序列操作 分類: python undefined 官方手冊&#xff1a;https://docs.python.org/3.7/library/stdtypes.html#sequence-types-list-tuple-range 序列簡介 序列是指按照位置順序來存儲數據的數據結構&#xff0c;也就是說能通過數值索引進行操作。實際上&#x…

automaticallyAdjustsScrollViewInsets的作用

簡單點說就是automaticallyAdjustsScrollViewInsets根據按所在界面的status bar&#xff0c;navigationbar&#xff0c;與tabbar的高度&#xff0c;自動調整scrollview的 inset,設置為no&#xff0c;不讓viewController調整&#xff0c;我們自己修改布局即可~轉載于:https://ww…