- 预处理:修改代码。用#include指令添加相关的头文件,编译器可能还需要根据实际情况跳过程序中的某些代码或补充一些代码,可以用#define和#ifdef来实现。编译:转换成汇编代码。计算机只能理解更低层的机器代码指令。而生成机器代码的第一步就是把C语言源代码转化为汇编语言代码。汇编:生成目标代码。编译器把这些汇编代码(都是些符号代码)汇编成机器代码或目标代码,即CP... 预处理:修改代码。用#include指令添加相关的头文件,编译器可能还需要根据实际情况跳过程序中的某些代码或补充一些代码,可以用#define和#ifdef来实现。编译:转换成汇编代码。计算机只能理解更低层的机器代码指令。而生成机器代码的第一步就是把C语言源代码转化为汇编语言代码。汇编:生成目标代码。编译器把这些汇编代码(都是些符号代码)汇编成机器代码或目标代码,即CP...
- 我们通过编译一个程序test.c,代码如下,来了解编译程序的过程。 #include <stdio.h> int main(){ printf("Hello world!"); return 0; } 1234567 1.预处理(Preprocessing) ~/Desktop/test$ gcc -E test.c -o test.i ~/Des... 我们通过编译一个程序test.c,代码如下,来了解编译程序的过程。 #include <stdio.h> int main(){ printf("Hello world!"); return 0; } 1234567 1.预处理(Preprocessing) ~/Desktop/test$ gcc -E test.c -o test.i ~/Des...
- 反汇编一个简单的C程序并分析 C 源码: int g(int x) { return x+1; } int f(int x) { return g(x); } int main(void) { return f(2) + 3; } 1234567891011121314 汇编源码: 1 g: 2 pushl %ebp 3 movl %esp, %... 反汇编一个简单的C程序并分析 C 源码: int g(int x) { return x+1; } int f(int x) { return g(x); } int main(void) { return f(2) + 3; } 1234567891011121314 汇编源码: 1 g: 2 pushl %ebp 3 movl %esp, %...
- 写在最前 笔者在动手写此操作系统时是一名大学本科大二的学生,可能文章中会有好多地方我没有解释清楚,可能也会有许多地方出现错误,我恳请各位读者能提出质疑和纠正我的错误,谢谢! 参考书籍: 《30天自制操作系统》川合秀实《ORANGE’S:一个操作系统的实现》 开发环境 笔者采用以下开发环境 Apple Macbook AirUbuntu 12.04 ... 写在最前 笔者在动手写此操作系统时是一名大学本科大二的学生,可能文章中会有好多地方我没有解释清楚,可能也会有许多地方出现错误,我恳请各位读者能提出质疑和纠正我的错误,谢谢! 参考书籍: 《30天自制操作系统》川合秀实《ORANGE’S:一个操作系统的实现》 开发环境 笔者采用以下开发环境 Apple Macbook AirUbuntu 12.04 ...
- 上几篇文章,我们一直在讨论的都是 GDT 相关的一些问题,现在我们知道在系统在从实模式向保护模式跳转时,GDT 是必须要准备的结构。在介绍这一跳转之前,这篇文章我们来介绍两个概念:一致代码段和非一致代码段。 首先,我们先来看几个问题: 一致代码段和非一致代码段是什么?为什么要有一致代码段和非一致代码段?系统提供怎样的机制来使用户程序访问内核数据?程序如何在... 上几篇文章,我们一直在讨论的都是 GDT 相关的一些问题,现在我们知道在系统在从实模式向保护模式跳转时,GDT 是必须要准备的结构。在介绍这一跳转之前,这篇文章我们来介绍两个概念:一致代码段和非一致代码段。 首先,我们先来看几个问题: 一致代码段和非一致代码段是什么?为什么要有一致代码段和非一致代码段?系统提供怎样的机制来使用户程序访问内核数据?程序如何在...
- 内核编程语言和环境 1. as86汇编器 语法: as[option] –o objfile srcfile .表示编译过程中的位置计数器 Objfile分为三个段(区):正文段(.text):程序的执行代码和只读数据 数据段(.data):可读/写的数据 未初始化数据段(.bss... 内核编程语言和环境 1. as86汇编器 语法: as[option] –o objfile srcfile .表示编译过程中的位置计数器 Objfile分为三个段(区):正文段(.text):程序的执行代码和只读数据 数据段(.data):可读/写的数据 未初始化数据段(.bss...
- 在上一篇文章《环境搭建以及第一个Hello-World》中,笔者讲了如何安装 bochs 以及运行一个 helloworld 操作系统,但是使用上一篇文章中的方法安装的 bochs 是不支持调试的,下面我讲介绍如何使用源码编译的方法来安装 bochs,以及使用 bochs 来调试操作系统。 编译安装 Bochs 下载 bochs 源码 http://so... 在上一篇文章《环境搭建以及第一个Hello-World》中,笔者讲了如何安装 bochs 以及运行一个 helloworld 操作系统,但是使用上一篇文章中的方法安装的 bochs 是不支持调试的,下面我讲介绍如何使用源码编译的方法来安装 bochs,以及使用 bochs 来调试操作系统。 编译安装 Bochs 下载 bochs 源码 http://so...
- 关于系统架构你不知道的那些事之架构设计的历史背景 前言机器语言(1940 年之前)汇编语言(20世纪40年代)高级语言第一次软件危机与结构化程序设计(20 世纪 60 年代~20 世纪 70 年代)第二次软件危机与面向对象(20 世纪 80 年代)软件架构的历史背景总结 前言 我认为,如果想要深入理解一个事物的本质,最好的方式就是去追寻这个事物出现... 关于系统架构你不知道的那些事之架构设计的历史背景 前言机器语言(1940 年之前)汇编语言(20世纪40年代)高级语言第一次软件危机与结构化程序设计(20 世纪 60 年代~20 世纪 70 年代)第二次软件危机与面向对象(20 世纪 80 年代)软件架构的历史背景总结 前言 我认为,如果想要深入理解一个事物的本质,最好的方式就是去追寻这个事物出现...
- 在Windows上,通过Cygwin编译的c程序在运行时,若有内存错误也会产生类似Linux上的core文件,但是该文件一般是以stackdump为后缀的文本文件,且文件提供的信息有限,只包含了程序coredump时函数调用的栈信息,不能像Linux一样使用gdb调试。所以,在Windows平台调试Cygwin编译的c程序不太方便。本文介绍一种方法,通过反汇编c程序,结合程序coredump... 在Windows上,通过Cygwin编译的c程序在运行时,若有内存错误也会产生类似Linux上的core文件,但是该文件一般是以stackdump为后缀的文本文件,且文件提供的信息有限,只包含了程序coredump时函数调用的栈信息,不能像Linux一样使用gdb调试。所以,在Windows平台调试Cygwin编译的c程序不太方便。本文介绍一种方法,通过反汇编c程序,结合程序coredump...
- 本节书摘来自华章计算机《汇编程序设计与计算机体系结构:软件工程师教程》一书中第2章,第2.7节,作者是布莱恩·R. 霍尔(Brian R. Hall)[美] 凯文·J.斯隆卡(Kevin J. Slonka),爱飞翔 译。 本节书摘来自华章计算机《汇编程序设计与计算机体系结构:软件工程师教程》一书中第2章,第2.7节,作者是布莱恩·R. 霍尔(Brian R. Hall)[美] 凯文·J.斯隆卡(Kevin J. Slonka),爱飞翔 译。
- 本节书摘来自华章计算机《汇编程序设计与计算机体系结构:软件工程师教程》一书中第1章,第1.5节,作者是布莱恩·R. 霍尔(Brian R. Hall)[美] 凯文·J.斯隆卡(Kevin J. Slonka),爱飞翔 译。 本节书摘来自华章计算机《汇编程序设计与计算机体系结构:软件工程师教程》一书中第1章,第1.5节,作者是布莱恩·R. 霍尔(Brian R. Hall)[美] 凯文·J.斯隆卡(Kevin J. Slonka),爱飞翔 译。
- 本节书摘来自华章计算机《计算机组成与体系结构(原书第4版)》一书中第2章,第2.4.2节,作者是[美] 琳达·纳尔(Linda Null)朱莉娅·洛博(Julia Lobur)宾夕法尼亚州立大学,张 钢 魏继增 李雪威天津大学 李春阁 何 颖天津大学仁爱学院 译。 本节书摘来自华章计算机《计算机组成与体系结构(原书第4版)》一书中第2章,第2.4.2节,作者是[美] 琳达·纳尔(Linda Null)朱莉娅·洛博(Julia Lobur)宾夕法尼亚州立大学,张 钢 魏继增 李雪威天津大学 李春阁 何 颖天津大学仁爱学院 译。
- 本节书摘来自华章计算机《计算机组成与体系结构(原书第4版)》一书中第1章,第1.6节,作者是[美] 琳达·纳尔(Linda Null)朱莉娅·洛博(Julia Lobur)宾夕法尼亚州立大学,张 钢 魏继增 李雪威天津大学 李春阁 何 颖天津大学仁爱学院 译。 本节书摘来自华章计算机《计算机组成与体系结构(原书第4版)》一书中第1章,第1.6节,作者是[美] 琳达·纳尔(Linda Null)朱莉娅·洛博(Julia Lobur)宾夕法尼亚州立大学,张 钢 魏继增 李雪威天津大学 李春阁 何 颖天津大学仁爱学院 译。
- 本节书摘来自华章计算机《Python语言程序设计》一书中第1章,第1.1.1节,作者是王恺 王志 李涛 朱洪文。 本节书摘来自华章计算机《Python语言程序设计》一书中第1章,第1.1.1节,作者是王恺 王志 李涛 朱洪文。
- 本文转载自公众号 码农翻身1第一天上帝看到人类发明了计算机,但一直在用汇编语言艰难地写程序,很是伤心,就把编译器的秘密告诉了约翰·巴科斯,让他带领大家写出了编译器,从此人类可以用高级语言写程序,然后编译成机器语言去运行了。上帝还教会了人类使用顺序、循环、分支这三种基本的程序结构来编写程序。人类很高兴,写的代码越来越长。2第二天但是人类经常写下臭长臭长的代码,然后把代码Copy得到处都是。上帝... 本文转载自公众号 码农翻身1第一天上帝看到人类发明了计算机,但一直在用汇编语言艰难地写程序,很是伤心,就把编译器的秘密告诉了约翰·巴科斯,让他带领大家写出了编译器,从此人类可以用高级语言写程序,然后编译成机器语言去运行了。上帝还教会了人类使用顺序、循环、分支这三种基本的程序结构来编写程序。人类很高兴,写的代码越来越长。2第二天但是人类经常写下臭长臭长的代码,然后把代码Copy得到处都是。上帝...
上滑加载中
推荐直播
-
2024年川渝职工软件创新应用技能竞赛·开幕式
2024/11/28 周四 09:30-10:30
华为云讲师团
数字川渝,智创未来。2024年川渝职工软件创新应用技能竞赛决赛在即,科技精英蓄势待发!直击开幕式直播现场,共同点燃科技激情!
回顾中 -
基于OpenHarmony的计算机学科人才培养经验分享
2024/11/28 周四 19:00-21:00
华为开发者布道师、兰州大学信息科学与工程学院教授周睿
老师们、同学们,这里有不容错过的精彩! 想了解计算机类人才培养存在哪些挑战?想知道OpenHarmony如何应用于人才培养?本次直播,为你分享基于它的科创实践、专业社团实践和教学实践途径,培养学术型、应用型和复合型精英人才。快来报名,开启提升之旅!
即将直播 -
全面解析华为云EI-API服务:理论基础与实践应用指南
2024/11/29 周五 18:20-20:20
Alex 华为云学堂技术讲师
本期直播给大家带来的是理论与实践结合的华为云EI-API的服务介绍。从“主要功能,应用场景,实践案例,调用流程”四个维度来深入解析“语音交互API,文字识别API,自然语言处理API,图像识别API及图像搜索API”五大场景下API服务,同时结合实验,来加深开发者对API服务理解。
去报名
热门标签