We may earn an affiliate commission when you visit our partners.
Course image
袁春风

本课程主要介绍高级语言程序中的数据类型及其运算、语句和过程调用等是如何在计算机系统中实现的。主要包含三个主题:(1)表示。不同数据类型(如带符号整数、无符号整数、浮点数、数组、结构等)数据在寄存器或存储器中的表示和存储;指令的格式、编码及其在存储器中的存储;存储地址(指针)的表示。(2)转换。高级语言程序中的过程(函数调用)、循环、选择等语句与机器级代码之间的对应关系。(3)链接。多个可重定位目标文件如何链接生成可执行目标文件并加载到系统中。

Read more

本课程主要介绍高级语言程序中的数据类型及其运算、语句和过程调用等是如何在计算机系统中实现的。主要包含三个主题:(1)表示。不同数据类型(如带符号整数、无符号整数、浮点数、数组、结构等)数据在寄存器或存储器中的表示和存储;指令的格式、编码及其在存储器中的存储;存储地址(指针)的表示。(2)转换。高级语言程序中的过程(函数调用)、循环、选择等语句与机器级代码之间的对应关系。(3)链接。多个可重定位目标文件如何链接生成可执行目标文件并加载到系统中。

通过本课程的学习,使学习者能从程序员角度认识计算机系统,能够建立高级语言程序、ISA、OS、编译器、链接器等之间的相互关联,对指令在硬件上的执行过程和指令的底层硬件执行机制有一定的认识和理解,从而增强在程序调试、性能提升、程序移植和健壮性等方面的能力,并为后续的“计算机组成与设计”、“操作系统”、“编译原理”、“计算机体系结构”等课程打下坚实基础。

学完本课程后,学习者将对以下问题有比较深刻的认识,并能解决相关实际问题。

----程序中处理的数据在机器中如何表示和运算?

----程序中各类控制语句对应的机器级代码结构是怎样的?

----多个程序模块是如何链接起来形成可执行目标文件的?

----机器级代码及构成机器级代码的指令是如何在机器上执行的?

Enroll now

What's inside

Syllabus

WEEK1
首先,通过介绍C语言程序的具体实例,来说明高级语言程序的执行结果与编程语言之外的计算机系统其他方面有关,从而使学生明白为何要学习“计算机系统基础”课程;然后,介绍计算机系统基本组成与基本功能、程序开发和执行过程、计算机系统层次结构等概述性内容;最后,简要说明本课程的主要学习内容。
Read more
WEEK2
首先,介绍进位计数制和编码的基本概念;然后,介绍定点数的编码表示,在此基础上介绍带符号整数和无符号整数的表示;接着,介绍浮点数的编码表示,主要包括IEEE 754单精度和双精度浮点格式标准;随后介绍逻辑值、西文字符和汉字等非数值数据的编码表示;最后,介绍数据的宽度和存储。
WEEK3
首先,介绍布尔代数和数字逻辑电路的基础性内容;然后,介绍C语言中的按位运算以及逻辑运算;接着,介绍高级语言中的整数加减运算及其对应的底层实现电路。
WEEK4
基于运算电路基础,介绍高级语言中的整数乘除运算与底层实现之间的关系;然后介绍浮点数的运算,特别是浮点运算中的精度问题。
WEEK5
首先,介绍高级语言程序与机器级代码之间的关系,以及机器级代码与指令集体系结构(ISA)的关系;然后,介绍IA-32指令系统的概述性内容,包括寄存器组织、寻址方式和指令格式等。
WEEK6
主要介绍IA-32指令系统中常用的几类指令,包括传送、定点算术运算、按位运算、控制转移、x87浮点运算指令,最后简要介绍了MMX及SSE指令集。
WEEK7
主要介绍C语言程序中各类语句被转换为机器级代码后的机器级表示,包括过程(函数)调用的机器级表示、选择和循环语句的机器级表示。
WEEK8
主要介绍C语言程序中数组和指针类型的分配和访问、结构和联合数据类型的分配和访问、数据的对齐存放。最后介绍越界访问和缓冲区溢出攻击。
WEEK9
首先,介绍了x86-64指令系统的概述性内容;然后,介绍了与IA-32指令不同的几种x86-64基本指令;最后,介绍了x86-64中过程(函数)调用的具体的实现。
WEEK10
首先,介绍了在生成可执行文件的过程中所涉及到的概述性内容;然后,介绍了目标文件格式的基本内容;最后,分别介绍ELF文件格式中的可重定位文件格式(链接视图)和可执行文件格式(执行视图)。
WEEK11
主要内容包括符号的概念、符号表的结构、静态库和静态链接、符号解析。
WEEK12
主要内容包括符号的重定位、可执行文件的加载、共享库和动态链接以及位置无关代码(PIC)。

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
适合计算机科学原理的本科生或者研究生选修或参考。
探讨计算机系统中高级语言程序实现的原理,对计算机系统有深入的认识。
帮助学生了解高级语言程序和计算机系统之间的联系,并建立两者之间的相互关联。
覆盖计算机系统基础,数据类型,语句和过程调用等主题。
提供高级语言程序在计算机系统中的实现过程,帮助学生理解程序执行过程和底层硬件执行机制。
为“计算机组成与设计”、“操作系统”、“编译原理”、“计算机体系结构”等后续课程打下坚实基础。

Save this course

Save 计算机系统基础(一) :程序的表示、转换与链接 to your list so you can find it easily later:
Save

Reviews summary

Comprehensive computer systems foundations

This course provides a solid foundation in computer systems, covering topics like data representation, conversion, and linking. Students appreciate the clear explanations and engaging lectures, but some desire more practice problems.
Lectures are interesting
"老师讲的很好"
Concepts explained well
"清晰"
More practice problems needed
"希望能够有一些题目解析"

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in 计算机系统基础(一) :程序的表示、转换与链接 with these activities:
担任同辈导师,帮助其他学生理解课程概念
通过指导和帮助其他学生,巩固自己对课程概念的理解,同时培养沟通和教学技能。
Show steps
  • 主动参与课堂讨论和在线论坛,分享自己的理解。
  • 自愿为有困难的学生提供一对一的辅导或小组学习指导。
  • 创建学习资料或教程,帮助其他学生理解特定概念。
Show all one activities

Career center

Learners who complete 计算机系统基础(一) :程序的表示、转换与链接 will develop knowledge and skills that may be useful to these careers:
Computer Programmer
Computer Programmers write and maintain computer code. They work on a variety of software applications, from operating systems to mobile apps. A strong foundation in computer science is required for this career, and a course in "Foundations of Computer Systems" can help students develop the skills needed for success in this field.
Computer Engineer
Computer engineers design, develop, and maintain computer hardware and software. They work on a variety of computer systems, from small embedded systems to large enterprise systems. A strong foundation in computer science is required for this career, and a course in "Foundations of Computer Systems" can help students develop the skills needed for success in this field.
Computer Architect
Computer architects design the hardware that makes up computers. They work on a variety of computer architectures, from small embedded systems to large supercomputers. A strong foundation in computer science is required for this career, and a course in "Foundations of Computer Systems" can help students develop the skills needed for success in this field.
Software Engineer
Software Engineers design, develop, and maintain software. They work on a variety of software applications, from operating systems to mobile apps. A strong foundation in computer science is required for this career, and a course in "Foundations of Computer Systems" can help students develop the skills needed for success in this field.
Systems Engineer
Systems engineers design, develop, and maintain complex systems. They work on a variety of systems, from small embedded systems to large enterprise systems. A strong foundation in computer science is required for this career, and a course in "Foundations of Computer Systems" can help students develop the skills needed for success in this field.
Security Analyst
Security Analysts identify and mitigate security risks. They work on a variety of security systems, from firewalls to intrusion detection systems. A strong foundation in computer science is required for this career, and a course in "Foundations of Computer Systems" can help students develop the skills needed for success in this field.
Network Administrator
Network Administrators manage and maintain computer networks. They work on a variety of networks, from small home networks to large corporate networks. A strong foundation in computer science is required for this career, and a course in "Foundations of Computer Systems" can help students develop the skills needed for success in this field.
Game Developer
Game Developers design and develop video games. They work on a variety of video games, from small independent games to large AAA games. A strong foundation in computer science is required for this career, and a course in "Foundations of Computer Systems" can help students develop the skills needed for success in this field.
Mobile Developer
Mobile Developers design and develop mobile apps. They work on a variety of mobile apps, from small personal apps to large corporate apps. A strong foundation in computer science is required for this career, and a course in "Foundations of Computer Systems" can help students develop the skills needed for success in this field.
Database Administrator
Database Administrators manage and maintain databases. They work on a variety of database systems, from small desktop databases to large enterprise-wide systems. A strong foundation in computer science is required for this career, and a course in "Foundations of Computer Systems" can help students develop the skills needed for success in this field.
Web Developer
Web Developers design and develop websites. They work on a variety of websites, from small personal websites to large corporate websites. A strong foundation in computer science is required for this career, and a course in "Foundations of Computer Systems" can help students develop the skills needed for success in this field.
Electrical Engineer
Electrical engineers design, develop, and maintain electrical systems. They work on a variety of electrical systems, from small embedded systems to large power systems. A strong foundation in computer science is becoming increasingly important for this career, and a course in "Foundations of Computer Systems" can help students develop the skills needed for success in this field.
Machine Learning Engineer
Machine Learning Engineers design and develop machine learning models. They work on a variety of machine learning applications, from self-driving cars to medical diagnosis. A strong foundation in computer science is required for this career, and a course in "Foundations of Computer Systems" can help students develop the skills needed for success in this field.
Data Scientist
Data Scientists use data to solve problems. They work on a variety of data science problems, from predicting customer behavior to identifying fraud. A strong foundation in computer science is required for this career, and a course in "Foundations of Computer Systems" can help students develop the skills needed for success in this field.
Computer Systems Analyst
Computer Systems Analysts design, implement and maintain computer systems and networks. They analyze the needs of businesses and organizations to develop systems that meet their specific requirements. A background in computer science is commonly required, and a course in "Foundations of Computer Systems" can help build a foundation for this career.

Reading list

We've selected 13 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in 计算机系统基础(一) :程序的表示、转换与链接.
本书涵盖了计算机系统基础的方方面面,内容深入且全面,可以作为本课程的补充读物。
本书是由袁春风教授编写的,是南京大学计算机科学与技术系本科生计算机系统基础课程的教材。本书系统地介绍了计算机系统基础知识,包括计算机硬件、操作系统、编译原理和计算机组成原理。本书内容丰富、深入浅出,既适合作为计算机相关专业的教材,也适合作为计算机爱好者的学习参考书。
本书从硬件和软件的角度对计算机系统进行了深入的讲解,对于理解本课程中的机器级代码和指令执行过程非常有帮助。
本书从量化研究的角度对计算机体系结构进行了深入的探讨,对于理解本课程中涉及到的指令执行过程和性能提升等知识很有帮助。
本书是计算机网络领域的经典教材,全面系统地介绍了计算机网络的原理和实现,有助于理解本课程中涉及的网络相关概念。
本书介绍了数据结构和算法的基础知识,对于理解本课程中涉及到的数据表示和运算很有帮助。
本书是离散数学领域的经典教材,全面系统地介绍了离散数学的基本原理和应用,有助于理解本课程中涉及的离散数学相关概念。
本书从量化研究的角度介绍了计算机体系结构,涵盖了计算机体系结构的各个方面。本书适合作为计算机体系结构课程的教材,也可作为计算机相关专业的参考书。
本书是人工智能领域的经典教材,全面系统地介绍了人工智能的基本原理和应用,有助于理解本课程中涉及的人工智能相关概念。
本书是机器学习领域的经典教材,全面系统地介绍了机器学习的基本原理和应用,有助于理解本课程中涉及的机器学习相关概念。
本书是计算机科学领域的经典著作,全面系统地介绍了计算机程序设计的基本原理和技术。本书内容深入浅出,既适合作为计算机相关专业的教材,也适合作为计算机爱好者的学习参考书。
本书全面介绍了自然语言处理,涵盖了自然语言处理的各个方面。本书适合作为自然语言处理课程的教材,也可作为计算机相关专业的参考书。

Share

Help others find this course page by sharing it with your friends and followers:
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser