[置顶] 泰晓 RISC-V 实验箱,配套 30+ 讲嵌入式 Linux 系统开发公开课
Linux 下通过 Qemu 学习 X86 AT T 汇编语言
by falcon of TinyLab.org 2014/03/16
简介
CS630 是旧金山大学的 Allan B. Cruse 教授开设的一门 Advanced Microcomputer Programming 课程,我在 2008 年左右初次学习,发现这门课程 非常深入 地介绍了 Linux 环境下 Intel X86 平台上的 AT&T 汇编语言开发。
但是比较郁闷地是,这门课程需要用一台裸机进行实验,当时自己只有一台学习和开发用的主机,何况 08 年已经比较难找到合适的 floppy 来做实验了。所以,很快决定务必让这门课程的例子能够在 Qemu 上跑起来,所以折腾了几天,写了几个脚本,改了几行代码,就开始通过 Qemu 做 CS630 上的所有实验了。如果没有记错地话,这门课程的所有汇编的例子应该都能在 Qemu 上工作。
为了感谢 Cruse 教授的 Great work ,我觉得很有必要把学习心得和通过 Qemu 做实验的方法告诉 Cruse 教授,以便更多的学生能够加快实验的过程,提高实验效率,所以那个时候 (9/16/2008) 给他发了一封邮件:
Dear Cruse,
I’m a postgraduate student of Lanzhou University, China. I’m a “student” of your online course: CS630(http://www.cs.usfca.edu/~cruse/cs630f06/).
Thanks very much for your wonderful online course: CS630, It’s the best course about Microcomputer Programming and AT&T assembly Language programming under Linux I have learned. for finishing the exercises of this course, I build a VM-based experiment environment which can simplify the experiment procedure and save the time. I think it will be useful to the other students, so I decide to send it to you.
you can download it from the attachment, which just include several scripts(configure, Makefile, qemu.sh) and a rewritten quickload.s(quickload_floppy.s) for loading floppy image. and there is a document README there to introduce how to use it.
Best regards, Falcon
然后,Cruse 回信了:
Hello, Falcon
I’m amazed to receive your cs630-experiment-on-VM. I think, as an online “student”, you have earned an ‘A’ for this course! I will let some Ubuntu-savvy students here know about what you’ve created, and we’ll see if they find it to be a timesaver, as it ought to be. Thanks for contributing these efforts to the class.
很令人鼓舞,后面我把那些脚本上传到了 兰大开源社区 的论坛,今天,为了让更多的学生能够分享到这门课程,我把当时的脚本和相应的文档做了简单地整理,并在 https://github.com/ 上创建了源码仓库:
准备工作
注:不再推荐通过如下方法使用,请参考最新的文档,基于 Docker,已经可以在 Windows,Linux 和 Mac OSX 下使用 CS630 Qemu Lab。
先 clone 项目源码:
$ git clone https://gitee.com/tinylab/cs630-qemu-lab.git
接着,安装 Qemu:
$ sudo apt-get install qemu
然后,下载课程提供的所有实验资料,包括所有例子:
$ cd cs630-qemu-lab/ $ make update
CS 630: Advanced Microcomputer Programming (Fall 2006) 上的所有资料将下载到 res/ 目录,看看里头有什么:
$ ls res/
通过 Qemu 学 CS630
我写了两个简单的文档,README.md 和 NOTE.md, 介绍了基本用法和注意事项,这里把实模式和保护模式下的两个例子分别介绍一下:
实模式:Real Mode
- 打印 helloworld
$ make boot SRC=src/helloworld.s
- 访问 rtc 并显示时钟
$ make boot SRC=src/rtc.s
保护模式:Protected Mode
- 打印 helloworld
$ make boot SRC=res/pmhello.s
- 访问 rtc 并显示时钟
$ make boot SRC=res/rtcdemo.s
演示截图
这里是保护模式下的 rtcdemo 通过 Qemu 运行的结果:
猜你喜欢:
- 我要投稿:发表原创技术文章,收获福利、挚友与行业影响力
- 知识星球:独家 Linux 实战经验与技巧,订阅「Linux知识星球」
- 视频频道:泰晓学院,B 站,发布各类 Linux 视频课
- 开源小店:欢迎光临泰晓科技自营店,购物支持泰晓原创
- 技术交流:Linux 用户技术交流微信群,联系微信号:tinylab
支付宝打赏 ¥9.68元 | 微信打赏 ¥9.68元 | |
请作者喝杯咖啡吧 |