阅读赵炯博士的Linux内核分析0.12完全注释笔记(A heavily Commented Linux Kernel Source Code Linux Version 0.11)...

本文主要是介绍阅读赵炯博士的Linux内核分析0.12完全注释笔记(A heavily Commented Linux Kernel Source Code Linux Version 0.11)...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Read the fucking source code  -Linus Bendict Torvalds

基础:

  具备一些基本的 C 语言知识和 Intel CPU 汇编语言知识 有关 C 语言最佳

  参考资料仍是 Brain W. Kernighan 先生和 Dennis M. Ritchie 先生合著的《The C Programming Language》
一书。而汇编语言的资料则可以参考任意一本讲解与 Intel CPU 相关的汇编语言教材。另外还需要一些
嵌入式汇编语言的资料。有关嵌入式汇编的权威信息都包含在 GNU gcc 编译器手册中。

源码下载链接:http://www.oldlinux.org/Linux.old/Linux-0.12/sources/

 

80x86汇编语言程序设计教程 : https://pan.baidu.com/s/1kTC4Ldd

 I/O 端口寻址和访问控制方式:统一编址和独立编址

 

在普通 Linux 系统下通过查看/proc/ioports 文件可以得到相关控制器或设置使用的 I/O 地址范围,见如下所示。

 

 C编译的过程

 

 

如何在C语言中嵌入汇编代码

基本格式如下:

asm(“汇编语句”

: 输出寄存器

: 输入寄存器

: 会被修改的寄存器);

 

  除第 1 行以外,后面带冒号的行若不使用就都可以省略。其中,“asm”是内联汇编语句关键词;“汇
编语句”是你写汇编指令的地方;“输出寄存器”表示当这段嵌入汇编执行完之后,哪些寄存器用于存放
输出数据。此地,这些寄存器会分别对应一 C 语言表达式值或一个内存地址;“输入寄存器”表示在开始
执行汇编代码时,这里指定的一些寄存器中应存放的输入值,它们也分别对应着一 C 变量或常数值。“会
被修改的寄存器”表示你已对其中列出的寄存器中的值进行了改动,gcc 编译器不能再依赖于它原先对这些
寄存器加载的值。如果必要的话,gcc 需要重新加载这些寄存器。因此我们需要把那些没有在输出/输入寄
存器部分列出,但是在汇编语句中明确使用到或隐含使用到的寄存器名列在这个部分中。示例如下:

 

说明:

1. 干什么的 ? 嵌入一个汇编语言宏函数 

2.怎么写?  写在({})中   __asm__ 表示开始   __res 表示 表达式输出的值  斜杠"\" 表示连成一行

 

 

 

转载于:https://www.cnblogs.com/wpgraceii/p/10749676.html

这篇关于阅读赵炯博士的Linux内核分析0.12完全注释笔记(A heavily Commented Linux Kernel Source Code Linux Version 0.11)...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/688874

相关文章

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

Python实现精确小数计算的完全指南

《Python实现精确小数计算的完全指南》在金融计算、科学实验和工程领域,浮点数精度问题一直是开发者面临的重大挑战,本文将深入解析Python精确小数计算技术体系,感兴趣的小伙伴可以了解一下... 目录引言:小数精度问题的核心挑战一、浮点数精度问题分析1.1 浮点数精度陷阱1.2 浮点数误差来源二、基础解决

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

从入门到精通详解Python虚拟环境完全指南

《从入门到精通详解Python虚拟环境完全指南》Python虚拟环境是一个独立的Python运行环境,它允许你为不同的项目创建隔离的Python环境,下面小编就来和大家详细介绍一下吧... 目录什么是python虚拟环境一、使用venv创建和管理虚拟环境1.1 创建虚拟环境1.2 激活虚拟环境1.3 验证虚

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

Python ORM神器之SQLAlchemy基本使用完全指南

《PythonORM神器之SQLAlchemy基本使用完全指南》SQLAlchemy是Python主流ORM框架,通过对象化方式简化数据库操作,支持多数据库,提供引擎、会话、模型等核心组件,实现事务... 目录一、什么是SQLAlchemy?二、安装SQLAlchemy三、核心概念1. Engine(引擎)

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4:

解决Nginx启动报错Job for nginx.service failed because the control process exited with error code问题

《解决Nginx启动报错Jobfornginx.servicefailedbecausethecontrolprocessexitedwitherrorcode问题》Nginx启... 目录一、报错如下二、解决原因三、解决方式总结一、报错如下Job for nginx.service failed bec