diff --git a/.gitignore b/.gitignore index 32e3be424..977f3432c 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,10 @@ __MACOSX .idea **/ebook **/bbs -.gitignore \ No newline at end of file +.gitignore +_static +_templates +*.swp +*.pyc +__pycache__ +thu_cst_cracker.egg-info diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..d0c3cbf10 --- /dev/null +++ b/Makefile @@ -0,0 +1,20 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line, and also +# from the environment for the first two. +SPHINXOPTS ?= +SPHINXBUILD ?= sphinx-build +SOURCEDIR = source +BUILDDIR = build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/README.md b/README.md index 1e20e0686..4ab439423 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,8 @@ [![](https://img.shields.io/github/issues-pr-closed-raw/PKUanonym/REKCARC-TSC-UHT.svg?style=flat)](https://github.com/PKUanonym/REKCARC-TSC-UHT/issues) ![](https://img.shields.io/github/repo-size/PKUanonym/REKCARC-TSC-UHT.svg?style=flat) +Web page: [REKCARC-TSC-UHT.readthedocs.io](https://REKCARC-TSC-UHT.readthedocs.io) + 受[浙江大学相关项目](https://github.com/QSCTech/zju-icicles)启发,创立了本项目。 由于本仓库未启用`git-lfs`,因此请不要上传单个超过100M的文件,否则commit无效。 @@ -14,7 +16,7 @@ 如果您是清华大学学生,可移步 https://git.tsinghua.edu.cn/pkuanonym/REKCARC-TSC-UHT 进行查看并且能节约不少流量。 -感谢对本项目贡献的同学:[Trinkle23897](https://github.com/trinkle23897)、[LJSthu](https://github.com/ljsthu)、[shyoshyo](https://github.com/shyoshyo)、[wuhaozhe](https://github.com/wuhaozhe)、[choumartin1234](https://github.com/choumartin1234)、[FztTony](https://github.com/FztTony/)、[VicaYang](https://github.com/VicaYang/)、[duzx16](https://github.com/duzx16/)、[zerotrac](https://github.com/zerotrac)、[gjz010](https://github.com/gjz010/)、[Recursion](https://github.com/RecursionSheep)、[linusboyle](https://github.com/linusboyle)、[namasikanam](https://github.com/namasikanam)、[JamesZhengYuyu](https://github.com/JamesZhengYuyu)、[zx1239856](https://github.com/zx1239856)、[yaoqs](https://github.com/yaoqs)、[heheda12345](https://github.com/heheda12345)、[MashPlant](https://github.com/MashPlant)、[lwpie](https://github.com/lwpie)、[cht33](https://github.com/cht33)、[chenweize1998](https://github.com/chenweize1998)、[will7101](https://github.com/will7101)、[UNIDY2002](https://github.com/UNIDY2002)……以及电脑前的您! +感谢对本项目贡献的同学:[Trinkle23897](https://github.com/trinkle23897)、[LJSthu](https://github.com/ljsthu)、[shyoshyo](https://github.com/shyoshyo)、[wuhaozhe](https://github.com/wuhaozhe)、[choumartin1234](https://github.com/choumartin1234)、[FztTony](https://github.com/FztTony/)、[VicaYang](https://github.com/VicaYang/)、[duzx16](https://github.com/duzx16/)、[zerotrac](https://github.com/zerotrac)、[gjz010](https://github.com/gjz010/)、[Recursion](https://github.com/RecursionSheep)、[linusboyle](https://github.com/linusboyle)、[namasikanam](https://github.com/namasikanam)、[JamesZhengYuyu](https://github.com/JamesZhengYuyu)、[zx1239856](https://github.com/zx1239856)、[yaoqs](https://github.com/yaoqs)、[heheda12345](https://github.com/heheda12345)、[MashPlant](https://github.com/MashPlant)、[lwpie](https://github.com/lwpie)、[cht33](https://github.com/cht33)、[chenweize1998](https://github.com/chenweize1998)、[will7101](https://github.com/will7101)、[UNIDY2002](https://github.com/UNIDY2002)、[yinhaoxuan](https://github.com/yinhaoxuan)、[zhengkw18](https://github.com/zhengkw18)、[rcy17](https://github.com/rcy17)、[prnake](https://github.com/prnake)、[qky18](https://github.com/qky18)……以及电脑前的您! ## 前言 diff --git a/make.bat b/make.bat new file mode 100644 index 000000000..6247f7e23 --- /dev/null +++ b/make.bat @@ -0,0 +1,35 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set SOURCEDIR=source +set BUILDDIR=build + +if "%1" == "" goto help + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% + +:end +popd diff --git a/setup.py b/setup.py new file mode 100644 index 000000000..051eae56c --- /dev/null +++ b/setup.py @@ -0,0 +1,12 @@ +#!/usr/bin/env python3 + +import os, subprocess +from setuptools import setup + +subprocess.check_call('python3 ./source/gen.py --root . --output source'.split()) + +setup( + name='thu-cst-cracker', + description='frontend generator', + install_requires=['sphinx-markdown-tables'], +) diff --git a/source/conf.py b/source/conf.py new file mode 100644 index 000000000..d29462ca4 --- /dev/null +++ b/source/conf.py @@ -0,0 +1,70 @@ +# Configuration file for the Sphinx documentation builder. +# +# This file only contains a selection of the most common options. For a full +# list see the documentation: +# https://www.sphinx-doc.org/en/master/usage/configuration.html + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +# import os +# import sys +# sys.path.insert(0, os.path.abspath('.')) + + +# -- Project information ----------------------------------------------------- + +project = 'THU-CST-Cracker' +copyright = '2020, PKUanonym' +author = 'PKUanonym' + + +# -- General configuration --------------------------------------------------- +'''import recommonmark +from recommonmark.transform import AutoStructify + +# At the bottom of conf.py +def setup(app): + app.add_config_value('recommonmark_config', { + 'url_resolver': lambda url: github_doc_root + url, + 'auto_toc_tree_section': 'Contents', + }, True) + app.add_transform(AutoStructify) +'''# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = ['recommonmark', 'sphinx_markdown_tables'] +source_suffix = ['.rst', '.md'] +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = 'zh' + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] + + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +import sphinx_rtd_theme +html_theme = "sphinx_rtd_theme" +html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] +master_doc = 'index' diff --git a/source/gen.py b/source/gen.py new file mode 100755 index 000000000..1b228d6c6 --- /dev/null +++ b/source/gen.py @@ -0,0 +1,106 @@ +#!/usr/bin/env python3 + +import os, argparse +from os.path import sep + +EXCLUDE = ['.git', '.gitignore', 'LICENSE', 'Makefile', 'make.bat', 'setup.py', 'source', 'thu_cst_cracker.egg-info'] +README_MD = ['README.md', 'readme.md'] +EXT = '.md' +PREFIX = 'https://github.com/PKUanonym/REKCARC-TSC-UHT/blob/master/' +rst = '''Welcome to THU-CST-Cracker! +=========================================== + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + TOC + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` +''' + +def name_filter(s): + return s.replace('_', '\\_') + +def url_filter(s, p): + c = 'tree' if os.path.isdir(s) else 'blob' + return PREFIX.replace('blob', c) + s.replace(p, sep.join(p.split(sep)[-2:])).replace('(', '%28').replace(')', '%29').replace(' ', '%20').replace(EXT, '%2e%6d%64') + +def get_all(d): + _all = [os.path.join(d, i) for i in os.listdir(d)] + files = [i for i in _all if os.path.isfile(i)] + dirs = [i for i in _all if os.path.isdir(i)] + files.sort() + dirs.sort() + return files, dirs + +def get_course(root, cur, depth=0, threshold=30): + files, dirs = get_all(cur) + file_num = 0 + md_dir, md_file = '', '' + for i in dirs: + d_md, d_num = get_course(root, i, depth + 1) + if depth >= 2 and d_num > threshold: + files.append(i) + print(depth, d_num, i) + else: + md_dir += f'{" " * depth}- [{name_filter(i.split(sep)[-1])}]({url_filter(i, root)})\n' + md_dir += d_md + file_num += d_num + files.sort() + for i in files: + file_num += 1 + if i.split(sep)[-1] in README_MD and depth == 0: + md_file = open(i).read().replace('#', '\t') + '\n\n' + md_file + else: + md_file += f'{" " * depth}- [{name_filter(i.split(sep)[-1])}]({url_filter(i, root)})\n' + md = md_file + md_dir + return md, file_num + +def get_semester(cur): + md = '' + files, dirs = get_all(cur) + for i in files: + if i.endswith(EXT): + md += f'{open(i).read()}\n\n' + for i in files: + if not i.endswith(EXT): + md += f'[{name_filter(i.split(sep)[-1])}]({url_filter(i, cur)})\n\n' + for i in dirs: + d_md, d_num = get_course(i, i) + md += f'## [{name_filter(i.split(sep)[-1])}]({url_filter(i, cur)})\n\n{d_md}\n\n' + return md + +def gen_md(d, n, m): + if 'README' not in n: + m = f'# {n.replace(EXT, "").split(sep)[-1]}\n\n{m}' + if not n.endswith(EXT): + n += EXT + print(d, n) + open(os.path.join(d, n), 'w').write(m) + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument("--root", type=str, default='REKCARC-TSC-UHT') + parser.add_argument("--output", type=str, default='.') + args = parser.parse_args() + files, dirs = get_all(args.root) + files = [i for i in files if i.split(sep)[-1] not in EXCLUDE] + dirs = [i for i in dirs if i.split(sep)[-1] not in EXCLUDE] + print(files) + print(dirs) + if not os.path.exists(args.output): + os.makedirs(args.output) + for i in files: + gen_md(args.output, i.replace(args.root, '.'), open(i).read()) + for i in dirs: + gen_md(args.output, i.replace(args.root, '.'), get_semester(i)) + _all = [i.replace(EXT, '').split(sep)[-1] for i in files + dirs] + rst = rst.replace('TOC', '\n '.join(_all)) + rst = rst.replace('二', '无').replace('三', '二').replace('无', '三') + open(os.path.join(args.output, 'index.rst'), 'w').write(rst) diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_1-Qt/exam/QTExam2019/~$Exam-2019.doc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_1-Qt/exam/QTExam2019/~$Exam-2019.doc" deleted file mode 100644 index 8d153d3cb..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_1-Qt/exam/QTExam2019/~$Exam-2019.doc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2015/calc/add/__pycache__/__init__.cpython-35.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2015/calc/add/__pycache__/__init__.cpython-35.pyc" deleted file mode 100644 index 092ddfee4..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2015/calc/add/__pycache__/__init__.cpython-35.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2015/calc/add/__pycache__/admin.cpython-35.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2015/calc/add/__pycache__/admin.cpython-35.pyc" deleted file mode 100644 index ae5113ed6..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2015/calc/add/__pycache__/admin.cpython-35.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2015/calc/add/__pycache__/models.cpython-35.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2015/calc/add/__pycache__/models.cpython-35.pyc" deleted file mode 100644 index 79c4f0c16..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2015/calc/add/__pycache__/models.cpython-35.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2015/calc/add/__pycache__/views.cpython-35.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2015/calc/add/__pycache__/views.cpython-35.pyc" deleted file mode 100644 index 73a4d9d65..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2015/calc/add/__pycache__/views.cpython-35.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2015/calc/add/migrations/__pycache__/__init__.cpython-35.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2015/calc/add/migrations/__pycache__/__init__.cpython-35.pyc" deleted file mode 100644 index 237a4d4f3..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2015/calc/add/migrations/__pycache__/__init__.cpython-35.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2015/calc/calc/__pycache__/__init__.cpython-35.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2015/calc/calc/__pycache__/__init__.cpython-35.pyc" deleted file mode 100644 index 42fa9af7e..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2015/calc/calc/__pycache__/__init__.cpython-35.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2015/calc/calc/__pycache__/settings.cpython-35.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2015/calc/calc/__pycache__/settings.cpython-35.pyc" deleted file mode 100644 index dc83ea4b5..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2015/calc/calc/__pycache__/settings.cpython-35.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2015/calc/calc/__pycache__/urls.cpython-35.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2015/calc/calc/__pycache__/urls.cpython-35.pyc" deleted file mode 100644 index c2f8c9087..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2015/calc/calc/__pycache__/urls.cpython-35.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2015/calc/calc/__pycache__/wsgi.cpython-35.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2015/calc/calc/__pycache__/wsgi.cpython-35.pyc" deleted file mode 100644 index d380724be..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2015/calc/calc/__pycache__/wsgi.cpython-35.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2016/2015011334_week3/3/mysite/mysite/__pycache__/__init__.cpython-35.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2016/2015011334_week3/3/mysite/mysite/__pycache__/__init__.cpython-35.pyc" deleted file mode 100644 index e8f015e2b..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2016/2015011334_week3/3/mysite/mysite/__pycache__/__init__.cpython-35.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2016/2015011334_week3/3/mysite/mysite/__pycache__/settings.cpython-35.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2016/2015011334_week3/3/mysite/mysite/__pycache__/settings.cpython-35.pyc" deleted file mode 100644 index f8381c01f..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2016/2015011334_week3/3/mysite/mysite/__pycache__/settings.cpython-35.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2016/2015011334_week3/3/mysite/mysite/__pycache__/urls.cpython-35.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2016/2015011334_week3/3/mysite/mysite/__pycache__/urls.cpython-35.pyc" deleted file mode 100644 index 9d612f496..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2016/2015011334_week3/3/mysite/mysite/__pycache__/urls.cpython-35.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2016/2015011334_week3/3/mysite/mysite/__pycache__/wsgi.cpython-35.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2016/2015011334_week3/3/mysite/mysite/__pycache__/wsgi.cpython-35.pyc" deleted file mode 100644 index a2184f080..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2016/2015011334_week3/3/mysite/mysite/__pycache__/wsgi.cpython-35.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2016/2015011334_week3/3/mysite/searchengine/__pycache__/__init__.cpython-35.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2016/2015011334_week3/3/mysite/searchengine/__pycache__/__init__.cpython-35.pyc" deleted file mode 100644 index 6e950745e..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2016/2015011334_week3/3/mysite/searchengine/__pycache__/__init__.cpython-35.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2016/2015011334_week3/3/mysite/searchengine/__pycache__/admin.cpython-35.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2016/2015011334_week3/3/mysite/searchengine/__pycache__/admin.cpython-35.pyc" deleted file mode 100644 index 7a5436877..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2016/2015011334_week3/3/mysite/searchengine/__pycache__/admin.cpython-35.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2016/2015011334_week3/3/mysite/searchengine/__pycache__/apps.cpython-35.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2016/2015011334_week3/3/mysite/searchengine/__pycache__/apps.cpython-35.pyc" deleted file mode 100644 index 0c1310836..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2016/2015011334_week3/3/mysite/searchengine/__pycache__/apps.cpython-35.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2016/2015011334_week3/3/mysite/searchengine/__pycache__/models.cpython-35.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2016/2015011334_week3/3/mysite/searchengine/__pycache__/models.cpython-35.pyc" deleted file mode 100644 index 06b062aa9..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2016/2015011334_week3/3/mysite/searchengine/__pycache__/models.cpython-35.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2016/2015011334_week3/3/mysite/searchengine/__pycache__/urls.cpython-35.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2016/2015011334_week3/3/mysite/searchengine/__pycache__/urls.cpython-35.pyc" deleted file mode 100644 index 6c1ba6ed1..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2016/2015011334_week3/3/mysite/searchengine/__pycache__/urls.cpython-35.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2016/2015011334_week3/3/mysite/searchengine/__pycache__/views.cpython-35.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2016/2015011334_week3/3/mysite/searchengine/__pycache__/views.cpython-35.pyc" deleted file mode 100644 index 2b6ffbbf6..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2016/2015011334_week3/3/mysite/searchengine/__pycache__/views.cpython-35.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2016/2015011334_week3/3/mysite/searchengine/migrations/__pycache__/0001_initial.cpython-35.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2016/2015011334_week3/3/mysite/searchengine/migrations/__pycache__/0001_initial.cpython-35.pyc" deleted file mode 100644 index 82e4f4541..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2016/2015011334_week3/3/mysite/searchengine/migrations/__pycache__/0001_initial.cpython-35.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2016/2015011334_week3/3/mysite/searchengine/migrations/__pycache__/0002_auto_20160909_1144.cpython-35.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2016/2015011334_week3/3/mysite/searchengine/migrations/__pycache__/0002_auto_20160909_1144.cpython-35.pyc" deleted file mode 100644 index 874b889a1..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2016/2015011334_week3/3/mysite/searchengine/migrations/__pycache__/0002_auto_20160909_1144.cpython-35.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2016/2015011334_week3/3/mysite/searchengine/migrations/__pycache__/__init__.cpython-35.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2016/2015011334_week3/3/mysite/searchengine/migrations/__pycache__/__init__.cpython-35.pyc" deleted file mode 100644 index dcab483f1..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2016/2015011334_week3/3/mysite/searchengine/migrations/__pycache__/__init__.cpython-35.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/add/__pycache__/__init__.cpython-35.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/add/__pycache__/__init__.cpython-35.pyc" deleted file mode 100644 index 969d289cf..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/add/__pycache__/__init__.cpython-35.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/add/__pycache__/__init__.cpython-36.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/add/__pycache__/__init__.cpython-36.pyc" deleted file mode 100644 index 4438d4080..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/add/__pycache__/__init__.cpython-36.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/add/__pycache__/admin.cpython-35.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/add/__pycache__/admin.cpython-35.pyc" deleted file mode 100644 index ac38dbde5..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/add/__pycache__/admin.cpython-35.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/add/__pycache__/admin.cpython-36.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/add/__pycache__/admin.cpython-36.pyc" deleted file mode 100644 index 5666fb228..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/add/__pycache__/admin.cpython-36.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/add/__pycache__/models.cpython-35.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/add/__pycache__/models.cpython-35.pyc" deleted file mode 100644 index eb79d763c..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/add/__pycache__/models.cpython-35.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/add/__pycache__/models.cpython-36.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/add/__pycache__/models.cpython-36.pyc" deleted file mode 100644 index cf1322d2d..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/add/__pycache__/models.cpython-36.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/add/__pycache__/views.cpython-35.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/add/__pycache__/views.cpython-35.pyc" deleted file mode 100644 index 2669c51a0..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/add/__pycache__/views.cpython-35.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/add/__pycache__/views.cpython-36.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/add/__pycache__/views.cpython-36.pyc" deleted file mode 100644 index a20ad95b6..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/add/__pycache__/views.cpython-36.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/add/migrations/__pycache__/__init__.cpython-35.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/add/migrations/__pycache__/__init__.cpython-35.pyc" deleted file mode 100644 index 9cd1b90b7..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/add/migrations/__pycache__/__init__.cpython-35.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/add/migrations/__pycache__/__init__.cpython-36.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/add/migrations/__pycache__/__init__.cpython-36.pyc" deleted file mode 100644 index 12652f2eb..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/add/migrations/__pycache__/__init__.cpython-36.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/calc/__pycache__/__init__.cpython-35.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/calc/__pycache__/__init__.cpython-35.pyc" deleted file mode 100644 index 30ba37136..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/calc/__pycache__/__init__.cpython-35.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/calc/__pycache__/__init__.cpython-36.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/calc/__pycache__/__init__.cpython-36.pyc" deleted file mode 100644 index d95174b0c..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/calc/__pycache__/__init__.cpython-36.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/calc/__pycache__/settings.cpython-35.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/calc/__pycache__/settings.cpython-35.pyc" deleted file mode 100644 index 9a4708339..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/calc/__pycache__/settings.cpython-35.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/calc/__pycache__/settings.cpython-36.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/calc/__pycache__/settings.cpython-36.pyc" deleted file mode 100644 index be433ad75..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/calc/__pycache__/settings.cpython-36.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/calc/__pycache__/urls.cpython-35.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/calc/__pycache__/urls.cpython-35.pyc" deleted file mode 100644 index d64d0c0e8..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/calc/__pycache__/urls.cpython-35.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/calc/__pycache__/urls.cpython-36.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/calc/__pycache__/urls.cpython-36.pyc" deleted file mode 100644 index 56d3650c5..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/calc/__pycache__/urls.cpython-36.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/calc/__pycache__/wsgi.cpython-35.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/calc/__pycache__/wsgi.cpython-35.pyc" deleted file mode 100644 index 2c5e7cbda..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/calc/__pycache__/wsgi.cpython-35.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/calc/__pycache__/wsgi.cpython-36.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/calc/__pycache__/wsgi.cpython-36.pyc" deleted file mode 100644 index abffe0fc2..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2017/3/calc/calc/__pycache__/wsgi.cpython-36.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2019/3/exam3/__pycache__/__init__.cpython-36.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2019/3/exam3/__pycache__/__init__.cpython-36.pyc" deleted file mode 100644 index cf19f0b01..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2019/3/exam3/__pycache__/__init__.cpython-36.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2019/3/exam3/__pycache__/settings.cpython-36.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2019/3/exam3/__pycache__/settings.cpython-36.pyc" deleted file mode 100644 index 141328aa5..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2019/3/exam3/__pycache__/settings.cpython-36.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2019/3/exam3/__pycache__/urls.cpython-36.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2019/3/exam3/__pycache__/urls.cpython-36.pyc" deleted file mode 100644 index be9cb32b9..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2019/3/exam3/__pycache__/urls.cpython-36.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2019/3/exam3/__pycache__/view.cpython-36.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2019/3/exam3/__pycache__/view.cpython-36.pyc" deleted file mode 100644 index dd3839184..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2019/3/exam3/__pycache__/view.cpython-36.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2019/3/exam3/__pycache__/wsgi.cpython-36.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2019/3/exam3/__pycache__/wsgi.cpython-36.pyc" deleted file mode 100644 index eab29ef12..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/exam/2019/3/exam3/__pycache__/wsgi.cpython-36.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/hw/2016/lzl/form/__pycache__/__init__.cpython-35.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/hw/2016/lzl/form/__pycache__/__init__.cpython-35.pyc" deleted file mode 100644 index 5a73e9323..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/hw/2016/lzl/form/__pycache__/__init__.cpython-35.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/hw/2016/lzl/form/__pycache__/admin.cpython-35.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/hw/2016/lzl/form/__pycache__/admin.cpython-35.pyc" deleted file mode 100644 index 39edaecb4..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/hw/2016/lzl/form/__pycache__/admin.cpython-35.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/hw/2016/lzl/form/__pycache__/models.cpython-35.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/hw/2016/lzl/form/__pycache__/models.cpython-35.pyc" deleted file mode 100644 index 8b635d062..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/hw/2016/lzl/form/__pycache__/models.cpython-35.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/hw/2016/lzl/form/__pycache__/urls.cpython-35.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/hw/2016/lzl/form/__pycache__/urls.cpython-35.pyc" deleted file mode 100644 index b14a0aad3..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/hw/2016/lzl/form/__pycache__/urls.cpython-35.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/hw/2016/lzl/form/__pycache__/views.cpython-35.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/hw/2016/lzl/form/__pycache__/views.cpython-35.pyc" deleted file mode 100644 index a8cff99ff..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/hw/2016/lzl/form/__pycache__/views.cpython-35.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/hw/2016/lzl/mysite/__pycache__/__init__.cpython-35.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/hw/2016/lzl/mysite/__pycache__/__init__.cpython-35.pyc" deleted file mode 100644 index 622fc953e..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/hw/2016/lzl/mysite/__pycache__/__init__.cpython-35.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/hw/2016/lzl/mysite/__pycache__/settings.cpython-35.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/hw/2016/lzl/mysite/__pycache__/settings.cpython-35.pyc" deleted file mode 100644 index 349658c8f..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/hw/2016/lzl/mysite/__pycache__/settings.cpython-35.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/hw/2016/lzl/mysite/__pycache__/urls.cpython-35.pyc" "b/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/hw/2016/lzl/mysite/__pycache__/urls.cpython-35.pyc" deleted file mode 100644 index 4061cd58e..000000000 Binary files "a/\345\244\247\344\270\200\345\260\217\345\255\246\346\234\237/Week_3-Python/hw/2016/lzl/mysite/__pycache__/urls.cpython-35.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/938508712_3_decaf_PA2.zip" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/938508712_3_decaf_PA2.zip" deleted file mode 100644 index 6db401a6a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/938508712_3_decaf_PA2.zip" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/Lex&yacc/Bison Manual.pdf" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/Lex&yacc/Bison Manual.pdf" deleted file mode 100644 index f82e16769..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/Lex&yacc/Bison Manual.pdf" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/Lex&yacc/Compiler Construction Using Flex and Bison.pdf" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/Lex&yacc/Compiler Construction Using Flex and Bison.pdf" deleted file mode 100644 index 4db9778bc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/Lex&yacc/Compiler Construction Using Flex and Bison.pdf" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/Lex&yacc/Flex Manual.pdf" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/Lex&yacc/Flex Manual.pdf" deleted file mode 100644 index 66f4612a5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/Lex&yacc/Flex Manual.pdf" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/Lex&yacc/JFlex Manual.pdf" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/Lex&yacc/JFlex Manual.pdf" deleted file mode 100644 index 5bdc065fd..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/Lex&yacc/JFlex Manual.pdf" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/Lex&yacc/Lex and Yacc_868506244.rar" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/Lex&yacc/Lex and Yacc_868506244.rar" deleted file mode 100644 index 0fa1dc956..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/Lex&yacc/Lex and Yacc_868506244.rar" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/Lex&yacc/YACC--Yet Another Compiler-Compiler(\344\270\255\346\226\207\347\211\210).html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/Lex&yacc/YACC--Yet Another Compiler-Compiler(\344\270\255\346\226\207\347\211\210).html" deleted file mode 100644 index 8515288dc..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/Lex&yacc/YACC--Yet Another Compiler-Compiler(\344\270\255\346\226\207\347\211\210).html" +++ /dev/null @@ -1,1908 +0,0 @@ - - - - - - - - - - -Yacc: Yet Another Compiler-Compiler - - - - - - - - - - - -
- -

Yacc: һı -

- -

Stephen C. Johnson
- Bell Laboratories
- Murray Hill
, New - Jersey 07974

- -

ʿ

- -
- -


-
߶IJκε߶IJӵκȨҲκκ
-
ԭģ
http://cm.bell-labs.com/7thEdMan/vol2/yacc.bun

- -

ժҪ

- -

ͨijֽṹʵϣΪÿҪļ򶼶һܵԿôӣһеô򵥡ҵǣͨʩ޵ġʹõģڼǵЧԡ

- -

Yacc ṩһͨù롣Yacc û涨ĽṹͬʶÿֽṹʱõĴ롣Yacc Ĺ涨תɲ봦һ̴̣ûӦеĶǷʵġ

- -

Yacc ɵ̵ûṩһһĿ(item)ԣûԵַķʽԸ߲㹹ֺķʽ 涨롣ͨûṩ̻Դõעͺ()ԼЩ͵Υ׵ķ涨

- -

Yacc ÿֲ C дɵġܵĹ涨ǷdzһԵ: ȥ LALR(1) ķ

- -

CAPLPascalRATFOR ȱ֮⣬Yacc ڷdzԣһŰԡһЩԡһĵϵͳһ Fortran ϵͳ

- -
- -

July 31,1978

- -
- -
- -
- -

Ŀ¼

- - - -
- -
- -
- -

0:

- -

Yacc ṩһͨùڼʩӽṹYacc û׼봦Ĺ涨ṹĹʶЩʱõĴ룬һͲ̡Yacc һ봦(parser)ûṩĵͲ(ʷ(analyzer))ѡ ȡĿ(Ǻ(token))ݽķṹ֯ЩǺţʶЩеijһʱ򣬽ŵΪṩĽ -û룻ֵʹֵ

- -

Yacc C[1] ԵһֲдɵģҶҲһʹ C ԡ⣬Yacc ĺܶ﷨Լ C ԡ

- -

涨һķÿһĽṹһ֡磬ķ

- -
        date  :  month_name  day  ','  year   ;
- -

datemonth_nameday year ʾ봦ȤЩṹmonth_nameday -year طġ,Χڵ֮Уⰵʾ˶Ϊ(literal)ֵġðźͷֺֻdz䵱еıţԿû塣ԣȷ

- -
        July  4, 1776
- -

ƥ

- -

봦һҪɴʷû̶ȡʶͲṹЩǺŴﵽʷԭ򣬴ʷʶĽṹս(terminal symbol)ʶĽṹս(nonterminal -symbol)Ϊ˱սͨƺΪǺš

- -

ʹôʷʹķ֮൱ɹ۵Ļء磬

- -
        month_name  :  'J' 'a' 'n'   ;
        month_name  :  'F' 'e' 'b'   ;
 
                 . . .
 
        month_name  :  'D' 'e' 'c'   ;
- -

ӡķֻҪʶ𵥸ĸ month_name һսֵͲ˷ʱͿռ䣬ʹӵóԽ Yacc Ĵͨģʷʶ·֣ؼ -month_name һָʾ£month_name һǺš

- -

ַ,ҲͨʷݣҲǺš

- -

涨ļǷdzġӹ׵

- -
        date  :  month '/' day '/' year   ;
- -

- -
        7 / 4 / 1776
- -

Ϊ

- -
        July 4, 1776
- -

ͬ֡ڶ£¹ϵͳУСŬͻִĺСΣԡ

- -

ȡе 涨⵽Щͬɨһ磻ԣֻdzֵļ˶ȡ㲻ݵĿԣͨԿٵķ -ݡΪ涨һṩĴݵ룬֮봦

- -

һЩ£Yacc ڸijһ涨ʱ޷ɽ磬涨ìܣҪ Yacc ṩĸǿʶơǰʾƴ󣻺ͨʹʷǿдijЩķ Yacc ܴпܵĹ涨˳ͬϵͳȽϣ⣬Yacc ڴĹ쾭ҲദġһЩûǵȷЧ Yacc 涨¶˳򿪷ڵĸƴ

- -

Yacc ײѾط[2, 3, 4]ˡYacc ѾڴʵӦй㷺ʹˣ lint[5]ֲ C [6]һŰѧϵͳ[7]

- -

½׼ Yacc 涨Ļ̣ 1 ׼ķ򣬵 2 ׼ЩûṩĶ 3 ׼ʷ 4 IJ 5 -Yacc п޷ӹ涨ɽĸԭͶԴҪЩʲô 6 ʽв(operator)ȼ(precedence)ļ򵥻ơ 7 ۴޸ 8 Yacc ɵĽIJ 9 ڸ涨ʽЧʵһЩ顣 10 һЩ߼⣬ 11 ڸл¼ A һ򵥵ӣ¼ B -Yacc ﷨ܽᡣ¼ C ʹ Yacc ijЩ߼һӣ󣬸¼ D ͬ Yacc ϰ汾ʷԶṩIJٻԾֵ֧Ļƺ﷨ -

- -

1:

- -

ֳνǼǺŻս֮һYacc ͬҪǺ֡⣬ڵ 3 ۵ԭ򣬾ҪѴʷΪ涨ļһ֣ͬҲ԰õijԣÿ涨ļ: (ķ)ͳʹ˫ذٷֺ%% ָΡ(ٷֺ% Yacc 涨һת(escape)ַ)

- -

仰˵Ĺ涨ļ

- -
        
        %%
        
        %%
        
- -

οΪա⣬ʡ˳Σڶ %% Ҳʡԣ

- -

ԣСĺϷ Yacc

- -
        %%
        
- -

˲ַֻ֮ܳ⣬հסtab ͻбԡעͿԳǺϷκεطDZΧ /* . . . */ Уͬ C -PL/I һ

- -

һķ򹹳ɡķ¸ʽ:

- -
        A  :  BODY  ;
- -

A ʾһս֣ BODY -һеֺ֡ðźͷֺ Yacc š

- -

ֿⳤȣĸ.»_ͲͷɡִдСдĸķʹõֿԴǺŻս

- -

ɰΧڵ'еַɡͬ C һб\תַʶ C ת塣

- -
        '\n'    
        '\r'    س
        '\''     ``'''
        '\\'    б ``\''
        '\t'    tab
        '\b'    backspace
        '\f'    form feed
        '\xxx'  ``xxx'' ˽
- -

һЩԭNUL ַ('\0' - 0)ķвӦʹá

- -

һЩķֶͬˣʹ|дֶˡ⣬ڹĩ˵ķֺ֮ǰȥԸ Yacc ķ

- -
        A       :       B  C  D   ;
        A       :       E  F   ;
        A       :       G   ;
- -

дΪ

- -
        A       :       B  C  D
                |       E  F
                |       G
                ;
- -

ķֶͬ˵ķһDZģʹӿɶڸı䡣

- -

һսƥַԵķʽָʾ:

- -
        empty :   ;
- -

Ǻŵֱ뱻򵥵ľд

- -
        %token   name1  name2 . . .
- -

(۲μ½ 35 6)ٶûжÿֶǷսÿսһֶ˳֡

- -

зսУһʼŵرҪʶʼţŴķһĽṹȱʡģڹʹʼΪһķʹ %start ؼʽʼַǿܵģʵҪ:

- -
        %start   symbol
- -

ͨ(endmarker)Ǻֱ֪ͨǵļǺγͬʼƥһṹڼ֮󷵻صĵߡκмǣһ

- -

ʵʱ򷵻ؽûṩĴʷĹμĵ 3 ڡͨǴij൱Ե I/O ״̬ļ¼

- -

2:

- -

ÿķûԹ봦ÿʶʱеĶЩԷֵԻôǰ涯صֵ⣬ʷԷؼǺŵֵҪĻ

- -

C 䣬ͬӳ򣬺͸ⲿͱָΪΧڻ{}еһ䡣磬

- -
        A       :       '('  B  ')'
                                {       hello( 1, "abc" );  }
- -

- -
        XXX     :       YYY  ZZZ
                                {       printf("a message\n");
                                        flag = 25;   }
- -

Ǵжķ

- -

Ϊ˱ڶͽ֮ͨţԶҪ΢ĸĶʹԪ$Ϊ Yacc һźš

- -

Ҫֵͨα(pseudo-variable)$$Ϊijֵ磬κµֵ 1 Ķ

- -
        {  $$ = 1;  }
- -

Ҫǰ涯ʹʷķֵʹα $1$2. . .ἰǹֶ˵IJ(component)ķֵǴҶȡġԣ -

- -
        A       :       B  C  D   ;
- -

$2 ӵ C صֵ $3 D صֵ

- -

Ϊһӣǹ

- -
        expr    :       '('  expr  ')'   ;
- -

򷵻صֵͨԲе expr ֵָʾΪ

- -
        expr    :        '('  expr  ')'         {  $$ = $2 ;  }
- -

ȱʡģֵеһԪ($1)ֵԣʽķ

- -
        A       :       B    ;
- -

ҪʽĶ

- -

УжڹĩˡʱҪһȫ֮ǰÿȨYacc ڹмͬĩһдٶ(ԭ)һֵĶͨƽĻƷεģԷ涯ķֵԣ

- -
        A       :       B
                                {  $$ = 1;  }
                        C
                                {   x = $2;   y = $3;  }
                ;
- -

Ч x Ϊ 1 y Ϊ C صֵ

- -

Yacc ͨһµķս֣Ͱƥ䵽ַһ¹սһĶڲͨʶӵĹĶYacc ʵ϶ԴͬдΪ:

- -
        $ACT    :       /* empty */
                                {  $$ = 1;  }
                ;
 
        A       :       B  $ACT  C
                                {   x = $2;   y = $3;  }
                ;
- -

ںܶӦУֱӵתڴйһһݽṹ֮ǰӦñ任첢άҪụ̃́رڹ졣磬ٶдһ C node

- -
        node( L, n1, n2 )
- -

бǩ L ͺڵ n1 n2 һڵ㣬½ڵڹ涨пͨṩ¶:

- -
        expr    :       expr  '+'  expr
                                {  $$ = node( '+', $1, $3 );  }
- -

ûԶ嶯ʹõͶԳУΧڱ%{%}֮䡣ЩͶȫǿԱʹʷ֪磬

- -
        %{   int variable = 0;   %}
- -

ԷõУʹ variable жǿԷʵġYacc ֻʹyyʼ֣ûӦʹ֡

- -

ЩУб: ͵ֵۿ½ 10 -ҵ

- -

3: ʷ

- -

ûṩһʷȡѼǺ(ֵҪĻ)ﵽʷʹ yylex ֵĺ һļǺűţʾȡļǺŵࡣǺŹһֵӦⲿ yylval

- -

ΪʹͨŵԷʹʷڼǺűϴһ¡ſ Yacc ûѡ£ʹ C Ե# defineʷʹ÷Щš磬ٶ Yacc 涨ļѾǺ DIGITʷزֿܿ:

- -
        yylex(){
                extern int yylval;
                int c;
                . . .
                c = getchar();
                . . .
                switch( c ) {
                        . . .
                case '0':
                case '1':
                  . . .
                case '9':
                        yylval = c-'0';
                        return( DIGIT );
                        . . .
                        }
                . . .
- -

ͼǷһ DIGIT Ǻűţ͵ֵֵһֵʷλڹ涨ļijΣʶ DIGIT ΪǺ DIGIT ļǺűš

- -

ֻƵġ޸ĵĴʷΨһȱķҪʹκ C ԻбĻļǺ֣磬ʹüǺ if while һᵼ±ʷʱϾѡǺ error Ӧʹ(μ½ 7)

- -

ͬǺűſ Yacc ûѡȱʡ£ Yacc ѡַȱʡǺűڱַеֵַָ -257 ʼļǺűš

- -

ҪһǺűŸһǺ()мǺŻֵĵһγʱֱӸһǸΪֵֻļǺűšֻͨƶֱֺǵȱʡ塣мǺűŶDzͬǺҪġ

- -

ʷԭ򣬽DZмǺű 0 ǺűŲûض壻ԣдʷڵǵʱӦ׼ 0 ΪǺűš

- -

ʷһõĹ Mike Lesk[8] -Lex Щʷ Yacc ЭЩʷĹ涨ʹʽķ򡣿׵ Lex ɷdzӵĴʷһЩ( FORTRAN)ӦκۿܣĴʷֹ

- -

4: ι

- -

Yacc ѹ涨ļת C ݸĹ涨롣ӹ涨ת㷨ǸӵģͲ(Ϣμ)ǣԼˣιģܲϸģʹ޸崦ø⡣

- -

Yacc ṩĽɴһջ״̬Զɡȡͼס(ǰ(lookahead)Ǻ)һǺšǰ״̬ջ״̬Զ״̬һСǩ(label)ʱ״̬ 0 £ջֻ״̬ 0ûжȡǰǺš

- -

ֻܻĸƽ(shift)Լ(reduce)ܺʹ󡣽ƶ¹:

- -
- -

1. ĵǰ״̬ǷҪһǰǺӦʲôҪûжȡ yylex һǺš

- -

2. ʹõǰ״̬ͳǰǺ(ҪĻ)һ״̬ܵ״̬ѹջУջе͵³ǰǺű

- -
- -

ƽǽĶƽʱһǰǺš磬״̬ 56 ôһ:

- -
                IF      shift 34
- -

˵״̬ 56 £ǰַ IFǰ״̬(56)ջбѹȥ״̬ 34 Ϊǰ״̬(ջ)ǰַ

- -

ԼֹջƵڽѾһķֶ˵ʱԼʵģ׼Ѿһʵ (instance)ֶ滻ֶˡпҪοǰǺǷԼͨҪʵϣȱʡ(ʾΪ.) һԼ

- -

Լ뵥ķķҲС⵼һЩ

- -
        .       reduce 18
- -

ἰķ 18

- -
        IF      shift 34
- -

ἰ״̬ 34

- -

ٶҪԼĹ

- -
        A : x y z ;
- -

Լֶ˷(symbol)( A)ֶ˷ŵĿ( 3)ҪԼȴջе״̬(һģ״̬Ŀڹֶ˷ŵĿ)ЧϣЩ״̬ʶʶ xy z ʱѹջеģκôڵЩ״̬֮󣬿ʼ֮ǰڱ¶(uncovered)״̬¡ʹ¶״̬ڹֶ˵ķţʵЧϵƽ -Aһ״̬ѹջУڴֶ˷źͼǺŵͨƽ֮һҪת(goto)رǣƽǰǺţתӰꣶ״̬һĿ:

- -
        A       goto 20
- -

״̬ 20 ѹջУΪǰ״̬

- -

ЧϣԼڽӲջе״̬Դ˻ص״μֶ˵Ǹ״̬תͬѾڴʱֶֶΪգ򲻴ջе״̬: ¶״̬ʵϾǵǰ״̬

- -

ԼûṩĶֵĴҲǺҪġһ򱻹Լʱڵջ֮ǰִṩĴ롣˳״̬ջ֮⣬һջУдӴʷЩصֵڷƽʱ򣬰ⲿ yylval Ƶֵջϡڴû뷵֮ɹԼתʱ򣬰ⲿ yyval Ƶֵջϡα $1$2 ἰľֵջ

- -

ڸϷdz򵥡ָܶʾѾ鿴˲涨ƥ䡣ֻڳǰǺǽǵʱָ֣ʾ ɹĹһ棬ʾټݹ涨״ѾǺţ볬ǰǺһ𣬲ѭºϷ -κζһ󣬲Իָ״̬¿ʼ: ޸(ڴ)ڵ 7

- -

Ǹӵʱ! й涨

- -
        %token  DING  DONG  DELL
        %%
        rhyme   :       sound  place
                ;
        sound   :       DING  DONG
                ;
        place   :       DELL
                ;
- -

ʹ -v ѡ Yacc ʱһ y.output ļԽɶӦķ -y.output ļ(ȥ˽βһЩͳ):

- -
        state 0
                $accept  :  _rhyme  $end
 
                DING  shift 3
                .  error
 
                rhyme  goto 1
                sound  goto 2
 
        state 1
                $accept  :   rhyme_$end
 
                $end  accept
                .  error
 
        state 2
                rhyme  :   sound_place
 
                DELL  shift 5
                .  error
 
                place   goto 4
 
        state 3
                sound   :   DING_DONG
 
                DONG  shift 6
                .  error
 
        state 4
                rhyme  :   sound  place_    (1)
 
                .   reduce  1
 
        state 5
                place  :   DELL_    (3)
 
                .   reduce  3
 
        state 6
                sound   :   DING  DONG_    (2)
 
                .   reduce  2
- -

ע⣬ÿ״̬ĸ֮⣬ÿ״̬лжڴеĽʹ -_ ַָʾÿмʲôʲôδ֡ٶ

- -
        DING  DONG  DELL
- -

ٽڴڼIJнġ

- -

ǰ״̬ 0Ҫ״̬ 0 ܻõĶԶ˵һǺ DINGΪǰǺš״̬ 0 ¶ԼǺ DING Ķshift 3״̬ 3 ѹջУǰǺű״̬ 3 Ϊǰ״̬һǺ DONGΪǰǺš״̬ 3 ¶ԼǺ DONG Ķshift 6״̬ 6 ѹջУǰǺűջڰ 03 6 ״̬ 6 £òοǰǺţ 2 Լ

- -
        sound  :   DING  DONG
- -

ֶšԴջе״̬ 6 3¶״̬ 0״̬ 0 Ҷ sound ת

- -
        sound   goto 2
- -

״̬ 2 ѹУΪǰ״̬

- -

״̬ 2 £ȡһǺ DELLshift 5״̬ 5 ѹջУջ 02 5ǰǺű״̬ 5 £ΨһĶǰ 3 ԼֶһţԴջеһ״̬ 5¶״̬ 2״̬ 2 ¶Թ 3 ֶ place ת״̬ -4ջ 02 4״̬ 4 £ΨһĶǰ -1 Լ 1 ֶţԴջе״̬ٴα¶״̬ 0״̬ 0 £ rhyme һת·״̬ 1״̬ 1 £ȡ룬˽ǣ y.output $endָʾ״̬ 1 ڼʱĶǽܣɹĽ˽

- -

߿ܼе֪Բȷַ DING DONG DONGDING DONGDING DONG DELL DELL ȵʱιж໨ʱ䣬ڸӵгʱͿˡ -

- -

5: ͳͻ

- -

ijЩַ԰ֻ෽ʽ죬ķġ磬ķ

- -
        expr    :       expr  '-'  expr
- -

DZʽһȻķʽʽһмķһžγʽҵǣķûȫĹ涨иķʽ磬 -

- -
        expr  -  expr  -  expr
- -

뱻Ϊ

- -
        (  expr  -  expr  )  -  expr
- -

- -
        expr  -  (  expr  -  expr  )
- -

(һ(association)ڶҽ)

- -

Yacc Խʱ塣ڸʱԵн

- -
        expr  -  expr  -  expr
- -

ڶ expr ʱѾ:

- -
        expr  -  expr
- -

ƥķֶˡͨӦԼ룻Ӧ֮뱻Լ expr(ֶ)ԽŶȡ󲿷:

- -
        -  expr
- -

ٴιԼЧDzϽ͡

- -

ɹѡģڽ

- -
        expr - expr
- -

ӳӦù򣬲ȡֱ

- -
        expr  -  expr  -  expr
- -

ԽҵӦù򣬰ǹԼ expr

- -
        expr  -  expr
- -

ٴιԼЧDzҽϽ͡ԣȡ

- -
        expr  -  expr
- -

ֺϷ飬һƽһιԼ֮޷ƽ/ԼͻҲܷѡϷԼ飻Լ/ԼͻעԶʲôƽ/ƽͻ

- -

ƽ/ԼԼ/ԼͻʱYacc ȻɽͨҪѡطѡЧ֮һɵġһ״ξĹȥ

- -

Yacc ȱʡĵȥ:

- -
- -

1. ƽ/ԼͻУȱʡƽ

- -

2. ڹԼ/ԼͻУȱʡǹԼ(˳)ȵķ

- -
- -

1 ʾֻҪѡƳٹԼƽ 2 ûԽµΪķdzֲڵĿƣǹԼ/ԼͻӦܵı⡣

- -

ͻԭ߼еĴҲΪķһµġҪ Yacc ܹĸӸӵĽʹڹڵĶҲܵ³ͻڽȷʶĸ֮ǰĻЩ£ȥӦDzʵģ²ȷĽΪˣYacc DZ 1 ͹ 2 ƽ/Լ͹Լ/ԼͻĿ

- -

һ˵ֻҪпӦȥȷĽпдķʹͬûгͻΪˣǰĽΪͻǵľдЩȻģɸĽ Yacc ʹгͻ»ɽ

- -

ȥһǣ漰if-then-elseıԵһƬ:

- -
        stat    :       IF  '('  cond  ')'  stat
                |       IF  '('  cond  ')'  stat  ELSE  stat
                ;
- -

ЩУIF ELSE ǼǺţcond (߼)ʽķսţ stat ķսšһ-if 򣬵ڶ if-else

- -

γһ幹죬Ϊʽ

- -
        IF  (  C1  )  IF  (  C2  )  S1  ELSE  S2
- -

ַʽ:

- -
        IF  (  C1  )  {
                IF  (  C2  )  S1
                }
        ELSE  S2
- -

- -
        IF  (  C1  )  {
                IF  (  C2  )  S1
                ELSE  S2
                }
- -

ڶǶԶĽ͡ÿ ELSE ǰû ELSE IF ϡУǽ -

- -
        IF  (  C1  )  IF  (  C2  )  S1
- -

ڲ鿴 ELSE ״-if Լõ

- -
        IF  (  C1  )  stat
- -

Ŷȡµ룬

- -
        ELSE  S2
- -

if-else Լ

- -
        IF  (  C1  )  stat  ELSE  S2
- -

⵼ϵĵһ

- -

һ棬ELSE Աƽȡ S2Ű

- -
        IF  (  C1  )  IF  (  C2  )  S1  ELSE  S2
- -

沿ְ if-else Լõ

- -
        IF  (  C1  )  stat
- -

԰-if Լ⵼ϵĵڶͨҪġ

- -

һЧ - ƽ/ԼͻӦȥ 1 ߽ƽ⵼Ҫϡ

- -

ƽ/Լͻֻضĵǰ ELSEضѾʱ򣬱 -

- -
        IF  (  C1  )  IF  (  C2  )  S1
- -

¡һ˵кֳܶͻÿͬһźһǰʹý״̬Щǰ롣

- -

ͨ(-v)ѡļ Yacc ijͻϢġ磬Ӧͻ:

- -
        23: shift/reduce conflict (shift 45, reduce 18) on ELSE
 
        state 23
 
        stat : IF ( cond ) stat_ (18)
        stat : IF ( cond ) stat_ELSE stat
 
        ELSE shift 45
         . reduce 18
- -

һͻ״̬šͨ״̬״̬лԾķͽ»߱dzķѾIJ֡У״̬ 23 нѾӦ

- -
        IF  (  cond  )  stat
- -

չʾڴʱԾķ򡣽ֿܵ顣 -ELSEƽ״̬ 45״̬ 45 һ -

- -
        stat  :  IF  (  cond  )  stat  ELSE_stat
- -

Ϊ״̬ ELSE Ѿƽص״̬ 23 У.һɹѡĶûȷἰԣ£Ų ELSEķ 18 Լ:

- -
        stat  :  IF  '('  cond  ')'  stat
- -

ٴעshift֮ἰ״̬Լἰķš -y.output ļУڿԱԼЩ֮ӡڶ״̬УпܴڹԼȱʡδƽ/ԼͻûԲ鿴 ȱʡǷʡļ£ûҪ֪︲ǵĸĽΪ͹졣£Բο[2, 3, 4]ѯؼҲǺʵġ

- -

6: ȼ

- -

һֳ£ͻĹDzֵģⷢڷʽСʽжʹõĹòȼ (notion)ͬҽ(associativity)ϢȻʹôʵȥķĽʹ -ķĽٺдǶҪжԪһԪдʽķ

- -
        expr  :  expr  OP  expr
- -

- -
        expr  :  UNARY  expr
- -

⽨һdzķкܶͻΪȥûָвȼճǿȣͶԪĽԡϢ㹻 Yacc ЩͻʵҪȼͽԵĽ

- -

аȼͽԸӵǺϡڿʼ Yacc ؼ: -%left%right %nonassocżǺбļǺŶͬһеļǺŶٶͬȼͽԣЩаȼճǿȴг -

- -
        %left  '+'  '-'
        %left  '*'  '/'
- -

ĸ()ȼͽԡӷͼϵģбǺźбܸ͵ȼǶϵġʹùؼ %right ҽϲʹùؼ %nonassoc ϵIJ Fortran .LT.ԣ

- -
        A  .LT.  B  .LT.  C
- -

Fortran ǷǷģֲ Yacc ùؼ %nonassoc ΪЩΪӣ -

- -
        %right  '='
        %left  '+'  '-'
        %left  '*'  '/'
 
        %%
 
        expr    :       expr  '='  expr
                |       expr  '+'  expr
                |       expr  '-'  expr
                |       expr  '*'  expr
                |       expr  '/'  expr
                |       NAME
                ;
- -

- -
        a  =  b  =  c*d  -  e  -  f*g
- -

Ϊ:

- -
        a = ( b = ( ((c*d)-e) - (f*g) ) )
- -

ʹƵʱһԪһһȼʱһԪͶԪͬķֱʾвͬȼһһԪͶԪ-һԪԸͬ˷ͬĽǿȣߣԪбȳ˷͵Ľǿȡؼ %prec ıضķȼ%prec ֱӳķ֮ڶķֺ֮ǰһǺֻ֡ķȼļǺֵֻȼ磬ҪʹһԪ˷ͬȼ:

- -
        %left  '+'  '-'
        %left  '*'  '/'
 
        %%
 
        expr    :       expr  '+'  expr
                |       expr  '-'  expr
                |       expr  '*'  expr
                |       expr  '/'  expr
                |       '-'  expr      %prec  '*'
                |       NAME
                ;
- -

%left%right %nonassoc ļǺŲҪ %token ͬ

- -

Yacc ʹȼͽͻȥʽϣ:

- -
- -

1. ΪЩǺż¼ȼͽԡ

- -

2. ȼͽÿķļǺŻֵȼͽԡʹ %prec 죬ȱʡһЩķû֮ȼͽԡ

- -

3. йԼ/Լͻʱ򣬻ƽ/ԼͻŻķ֮һûȼͽԵʱʹ½ڿʼȥ򣬲ͻ

- -

4. ƽ/Լͻķ֮ȼͽԣڹŸȼĶ(ƽԼ)ķʽͻȼͬʹýԣϰʾԼҽϰʾƽ޽ϰʾ -

- -
- -

ȼijͻ Yacc ƽ/ԼͻСζȼ涨еĴķеĴ󣻶ȼóֱص̬ȣԱϵʽʹǣֱijЩ顣жʵǷʱ y.output ļǷdzõġ

- -

7:

- -

һdzѵ򣬺ܶ⡣磬ҵһʱ򣬿ܱջؽ洢ɾķűĿ͵͵ÿɽһ

- -

ҵһʱֹͣдǺܱܣɨҵһ﷨Ǹõġ⵼һ֮ʹ⡣µij㷨漰ַжһЩǺţͳԵԼ

- -

Ϊ ûijЩƣYacc ṩһ򵥵൱һԵǺerror˴ֿķУЧϣԤڵĴ޸λ áջֱǺerrorϷһ״̬űֵͬǺerrorǵǰǰǺһĶǰǺŽ -ΪļǺšûָĴڼ⵽ʱֹͣ

- -

Ϊ˷ֹ(cascade)ĴϢڼ⵽һ֮󣬱ڴ״ֱ̬ɹĶȡƽǺšڽѾڴ״̬µʱ⵽һ򲻸ϢҰɾǺš -

- -

ΪһӣʽĹ

- -
        stat    :       error
- -

Чϣζ﷨ʱ򣬽м䡣ȷеģǰɨ裬ҿܺϷһ -ǺţеһϿʼֵܳıĿʼһʧܵĿʼڱڶ󣬶ʵûд

- -

ЩĴʹöЩԳ³ʼջطűռȡ

- -

ĴǷdzһģڿơ΢Щ

- -
        stat    :       error  ';'
- -

һʱ򣬽䣬һ;֮һ;֮ǰмǺŶƽڼ;ʱ򽫱Լ֮κ

- -

һʽڽʽӦУҪһ֮¼һСһֿܵĴ

- -
        input   :       error  '\n'  {  printf( "Reenter last line: " );  }  input
                                {       $$  =  $4;  }
- -

ַʽһDZڵѣڳѾڴ֮ȷ֮ͬǰȷĴǺš¼ǰǺ -󣬽ɾЩļǺţϢԵDzɽܵġΪˣʹһֻǿƽŴѾȫ޸ˡ

- -
        yyerrok ;
- -

һ÷Ϊ״̬ӿдΪõ

- -
        input   :       error  '\n'
                                {       yyerrok;
                                        printf( "Reenter last line: " );   }
                        input
                                {       $$  =  $4;  }
                ;
- -

ͬἰһerror֮ļǺ޸˴ǺšʱDzǡģ磬޸ԼеҵָȷλõĹ£ǰijǰǺšڶ -

- -
        yyclearin ;
- -

Ч磬ٶڴ֮ĶҪûṩijָӵ̣ͬ԰ǰһЧĿʼڵ֮yylex صһǺŴŻһϷĵһǺţɵķǷǺű뱻Ĺ

- -
        stat    :       error
                                {       resynch();
                                        yyerrok ;
                                        yyclearin ;   }
                ;
- -

޿ɷЩǴֲڵģӺܶм򵥶ЧĻָ⣬ûԻÿȨȥͨĴö

- -

8: Yacc

- -

û Yacc 涨ʱڶϵͳļǽ -y.tab.c һ C ļ(ΪļϵͳڲͬװпDzͬ)Yacc ɵĺ -yyparseֵĺڵõʱظĵûṩĴʷ yylex(μ½ 3)ǺšգҪôǼ⵽һ(ûд޸ǿܵ) yyparse ֵ 1ҪôʷؽǼǺŲҽܡ£yyparse ֵ 0

- -

ûΪṩضĻһij磬ͬÿ C һ뱻õ main()յ yyparse yyerror һڼ⵽﷨ʱӡһϢ

- -

ûijʽṩ̡Ϊ˼ʹ Yacc Ŭṩ˴ȱʡ汾 main yyerror һ⡣ϵͳģںܶϵͳʹõװ -ly ⡣ԴչʾЩȱʡ:

- -
        main(){
                return( yyparse() );
                }
- -

- -
        # include <stdio.h>
 
        yyerror(s) char *s; {
                fprintf( stderr, "%s\n", s );
                }
- -

yyerror IJǰϢַַͨsyntax error һӦÿҪõϢͨ⵽﷨һӡⲿ yychar ڼ⵽ʱǰǺŵıţԸõкôΪ -main (Ҫȵ)ʱûṩġYacc ֻСĿĿڽ׶á

- -

ⲿ yydebug ͨΪ 0ΪֵĶһѾĸźͽʲôۡڲϵͳͨʹõϵͳ -

- -

9: ׼涨ʾ

- -

ڰ׼ЧġڱĺĹ涨ĻӵʾСڶٵĶ

- -

ʽ

- -

ṩʵʶĹ򲢱һɶĹ涨ļѵġʽʾ鹦 Brian Kernighan -

- -
- -

a. ΪǺʹȫĴдĸΪսʹȫСдĸбʱ֪˭Ĺʧ

- -

b. ķͶڷֿϡκһԶҪıһ

- -

c. ֶͬ˵йһֶֻһΣкĹһܿʼ

- -

d. ֻڴиֶ˵һĹ֮һֺţѷֺŷõС׵¹

- -

e. tab ͣ壬 tab ͣ塣

- -
- -

ڸ¼ A еʽдɣеҲ(ڿռĵط)ûʽϵԼǣĵʹڶԿɼġ

- -

ݹ

- -

Yacc ʹõ㷨νݹķ: ʽĹ

- -
        name    :       name  rest_of_rule  ;
- -

дкб涨ʱ򾭳ֹ:

- -
        list    :       item
                |       list  ','  item
                ;
- -

- -
        seq     :       item
                |       seq  item
                ;
- -

ÿ£һֻԵһĿԼڶԵڶĿԼ

- -

ʹҵݹ򣬱

- -
        seq     :       item
                |       item  seq
                ;
- -

Ŀļ͹ԼصǣǷdzУڲջΣաԣֻҪϺûӦʹݹ顣

- -

ԪصǷκֵÿǵģУдпչй涨:

- -
        seq     :       /* empty */
                |       seq  item
                ;
- -

һΣһڶһĿ֮ǰԼһΣŵڶΪÿĿԼһΡоǿ˵һԡǣҪ Yacc ȥǸоͿܷͻʱûм㹻Ķȥ֪! -

- -

ʷ

- -

һЩʷġ磬ʷͨҪɾհףڱõַеĿհײɾеֿ¼뵽űУʽеֲ¼롣

- -

״һַʽǽһȫֱ־(flag)ʷ磬 0 0 ɵһ򡣿:

- -
        %{
                int dflag;
        %}
          ...  other declarations ...
 
        %%
 
        prog    :       decls  stats
                ;
 
        decls   :       /* empty */
                                {       dflag = 1;  }
                |       decls  declaration
                ;
 
        stats   :       /* empty */
                                {       dflag = 0;  }
                |       stats  statement
                ;
 
            ...  other rules ...
- -

־ dflag ڶʱ 0ڶʱ 1ڵһеһǺų⡣ ǺűڽԶ϶ѾѾʼ֮ǰںܶ£һļǺⲻӰʷɨ衣

- -

ʽܾϸкij̶ȡijЩѵķ򲻵ѣʽ

- -

- -

һЩûʹͨifΪǩ֣÷Щڱз÷ͻĻ Yacc ĿôǷdzѵģʷϢifʵǹؼ֣ǸʵDZʹǰһСĻƣûijԣѵġ

- -

кüЩĽС۳֮ǰؼñ˵ֹ֮֡ƫǿķϵɡ

- -

10: ߼

- -

Yacc һЩ߼

- -

ڶģͽ

- -

Ĵͽܶڶʹú YYACCEPT -YYERROR ģ⡣YYACCEPT yyparse -ֵ 0YYERROR ½ֵͬǰ﷨һ yyerror޸ͷʹЩģǻص﷨Ľ

- -

Χеֵ

- -

õǰĹĶֵֻƼͨĶȫͬʹøһֵԪţֿ 0

- -
        sent    :       adj  noun  verb  adj  noun
                                {  look at the sentence . . .  }
                ;
 
        adj     :       THE             {       $$ = THE;  }
                |       YOUNG   {       $$ = YOUNG;  }
                . . .
                ;
 
        noun    :       DOG
                                {       $$ = DOG;  }
                |       CRONE
                                {       if( $0 == YOUNG ){
                                                printf( "what?\n" );
                                                }
                                        $$ = CRONE;
                                        }
                ;
                . . .
- -

ڽ CRONE ĶУǰƽļǺŲ YOUNG ļ顣Եģֻ֪ noun ʲôʱǿܵġŲͬѰ֯ɫȻʱֻʡȥ鷳رҪĽṹųһЩϵʱ -

- -

ֵ֧

- -

ȱʡģʹʷصֵYacc ֧͵ֵṹ⣬Yacc ͣȷϳԱ֣ԽĽϸͼ顣Yacc -ֵջ(μ½ 4)ΪҪֵ͵ϡûϣϳԱֵֹÿǺźͷսϡͨ $$ $n ֵʱYacc -ԶIJȷϳԱ֣Բת⣬ͼ Lint[5] ԽķӦǷdzƽġ -

- -

ַʽṩͻơȣһַʽϣûΪرǴʷ֪ϳԱ֡ΣһַʽϳԱֹǺźͷսϡһֻ Yacc ׾͵Щټֵ͡

- -

Ҫϣûа:

- -
        %union  {
                body of union ...
                }
- -

Yacc ֵջⲿ -yylval yyval еϵ͡ʹ --d ѡ YaccƵ y.tab.h ļСѡһģҲͷļʹ typedef YYSTYPE ȥʾϡԣͷļ¶:

- -
        typedef union {
                body of union ...
                } YYSTYPE;
- -

ͷļͨʹ %{ %} С

- -

һ YYSTYPEϳԱֹսͷսϡʹù

- -
        < name >
- -

ָʾһϳԱ֡Źؼ %token%left%right -%nonassoc ֮һϳԱֹгļǺϡд

- -
        %left  <optype>  '+'  '-'
- -

¶ǺŷֵκöǩϳԱ optypeʹһƵĹؼ %type ϳԱֹսϡԣд

- -
        %type  <nodetype>  expr  stat
- -

ԲһЩЩDzֵġڹڲһصֵû͡Ƶģĵֵ( $0 - μǰС)û Yacc ֪͵׵ķʽ£ͨڵһ $ ֮ŵ < > ֮ϳԱ֣ʩһ͡÷һ -

- -
        rule    :       aaa  {  $<intval>$  =  3;  } bbb
                                {       fun( $<intval>2, $<other>0 );  }
                ;
- -

﷨κٳ֡

- -

ڸ¼ C иһ涨Сеʩʹ֮ǰDz: -رǣʹ %type ͻῪֻơʹǵʱһַdzϸļ鼶磬ʹ $n $$ ûж͵һЩᱻϳЩʩûбʹ Yacc ֵջ int ͣʷͬġ

- -

11: л

- -

Yacc ں̶ܴϹ鹦ûд̼ԵľףǶٶһ޾̽УʹҳԽҵı⣬ԽҵյIJԸ ѧҵķʽ飬Ұǵķʽ飻ʱǶԵġB. W. KernighanP. J. PlaugerS. I. FeldmanC. ImagnaM. E. Lesk A. Snyder ڵǰ Yacc 汾ܷijЩǵ뷨C. B. Haley ˴޸㷨D. M. RitchieB. W. Kernighan M. O. Harris ҰѱĵӢġҪرл Al AhoΪɽȤĶᵽºĬǰ -

- -

- -

1. B. W. Kernighan and D. M. Ritchie, The C Programming -Language, Prentice-Hall, Englewood Cliffs, New Jersey, 1978.

- -

2. A. V. Aho and S. C. Johnson, "LR Parsing," -Comp. Surveys, vol. 6, no. 2, pp. 99-124, June 1974.

- -

3. A. V. Aho, S. C. Johnson, and J. D. Ullman, -"Deterministic Parsing of Ambiguous Grammars," Comm. Assoc. Comp. -Mach., vol. 18, no. 8, pp. 441-452, August 1975.

- -

4. A. V. Aho and J. D. Ullman, Principles of Compiler -Design, Addison-Wesley, Reading, Mass., 1977.

- -

5. S. C. Johnson, "Lint, a C Program Checker," -Comp. Sci. Tech. Rep. No. 65, 1978 .]. updated version TM 78-1273-3

- -

6. S. C. Johnson, "A Portable Compiler: Theory and -Practice," Proc. 5th ACM Symp. on Principles of Programming Languages, pp. -97-104, January 1978.

- -

7. B. W. Kernighan and L. L. Cherry, "A System for -Typesetting Mathematics," Comm. Assoc. Comp. Mach., vol. 18, pp. 151-157, -Bell Laboratories, Murray Hill, New Jersey, March 1975 .].

- -

8. M. E. Lesk, "Lex - A Lexical Analyzer -Generator," Comp. Sci. Tech. Rep. No. 39, Bell Laboratories, Murray Hill, -New Jersey, October 1975 .].

- -

¼ A: 򵥵

- -

ӸǶһС Yacc 26 ĴǩΪazʽIJ +-*/%(ģ)&(λ)|(λ)͸ֵıʽǸֵ򲻴ӡֵӡͬ C һ 0()ʼٶΪ˽ƣٶΪʮơ

- -

Ϊ Yacc 涨һӣչʾʹȼ壬ʾ˼򵥵Ĵ޸ҪĹȼǴʷ׶αȶӦöҪ򵥣ɵģһнһСע﷨ķʽȡʮƺͰ˽ɴʷɡ -

- -
%{
#  include  <stdio.h>
#  include  <ctype.h>
 
int  regs[26];
int  base;
 
%}
 
%start  list
 
%token  DIGIT  LETTER
 
%left  '|'
%left  '&'
%left  '+'  '-'
%left  '*'  '/'  '%'
%left  UMINUS      /*  supplies  precedence  for  unary  minus  */
 
%%      /*  beginning  of  rules  section  */
 
list :    /*  empty  */
     |    list  stat  '\n'
     |    list  error  '\n'
               {    yyerrok;  }
     ;
 
stat :    expr
               {    printf( "%d\n", $1 );  }
     |    LETTER  '='  expr
               {    regs[$1]  =  $3;  }
     ;
 
 
expr :    '('  expr  ')'
               {    $$  =  $2;  }
     |    expr  '+'  expr
               {    $$  =  $1  +  $3;  }
     |    expr  '-'  expr
               {    $$  =  $1  -  $3;  }
     |    expr  '*'  expr
               {    $$  =  $1  *  $3;  }
     |    expr  '/'  expr
               {    $$  =  $1  /  $3;  }
     |    expr  '%'  expr
               {    $$  =  $1  %  $3;  }
     |    expr  '&'  expr
               {    $$  =  $1  &  $3;  }
     |    expr  '|'  expr
               {    $$  =  $1  |  $3;  }
     |    '-'  expr        %prec  UMINUS
               {    $$  =  -  $2;  }
     |    LETTER
               {    $$  =  regs[$1];  }
     |    number
     ;
 
number    :    DIGIT
               {    $$ = $1;    base  =  ($1==0)  ?  8  :  10;  }
     |    number  DIGIT
               {    $$  =  base * $1  +  $2;  }
     ;
 
%%      /*  start  of  programs  */
 
yylex() {      /*  lexical  analysis  routine  */
              /*  returns  LETTER  for  a  lower  case  letter,  yylval = 0  through  25  */
              /*  return  DIGIT  for  a  digit,  yylval = 0  through  9  */
              /*  all  other  characters  are  returned  immediately  */
 
     int  c;
 
     while(  (c=getchar())  ==  ' '  )  {/*  skip  blanks  */  }
 
     /*  c  is  now  nonblank  */
 
     if(  islower(  c  )  )  {
          yylval  =  c  -  'a';
          return  (  LETTER  );
          }
     if(  isdigit(  c  )  )  {
          yylval  =  c  -  '0';
          return(  DIGIT  );
          }
     return(  c  );
     }
- -

¼ B: Yacc

- -

¼ Yacc Yacc ص﷨Ϊ̣Yacc 涨Ϊ LR(2) ķ涨ȻģճԵIJֳڹм˱ʶһʱʶһðţһĿʼ -ǵǰֻǶ˶ʱʵֵʱ򣬴ʷڼʶ֮ǰ鿴һǺ(հסСע -)ǷðšǣؼǺ C_IDENTIFIER IDENTIFIER(õַ)ҲΪ IDENTIFIER C_IDENTIFIER Ľɫ

- -
            /*  grammar  for  the  input  to  Yacc  */
 
      /*  basic  entities  */
%token      IDENTIFIER  /*   includes  identifiers   and  literals  */
%token      C_IDENTIFIER      /*    identifier  (but  not  literal)  followed  by  colon    */
%token      NUMBER            /*    [0-9]+    */
 
      /*  reserved  words:    %type  =>  TYPE,  %left  =>  LEFT,  etc.  */
 
%token      LEFT  RIGHT  NONASSOC  TOKEN  PREC  TYPE  START  UNION
 
%token      MARK  /*  the  %%  mark  */
%token      LCURL /*  the  %{  mark  */
%token      RCURL /*  the  %}  mark  */
 
      /*  ascii  character  literals  stand  for  themselves  */
 
%start      spec
 
%%
 
spec  :     defs  MARK  rules  tail
      ;
 
tail  :     MARK  {    In  this  action,  eat  up  the  rest  of  the  file    }
      |     /*  empty:  the  second  MARK  is  optional  */
      ;
 
defs  :     /*  empty  */
      |     defs  def
      ;
 
def   :     START  IDENTIFIER
      |     UNION  {  Copy union  definition  to  output  }
      |     LCURL  {  Copy  C  code  to  output  file   }  RCURL
      |     ndefs  rword  tag  nlist
      ;
 
rword :     TOKEN
      |     LEFT
      |     RIGHT
      |     NONASSOC
      |     TYPE
      ;
 
tag   :     /*  empty:  union  tag  is  optional  */
      |     '<'  IDENTIFIER  '>'
      ;
 
nlist :     nmno
      |     nlist  nmno
      |     nlist  ','  nmno
      ;
 
nmno  :     IDENTIFIER        /*  NOTE:  literal  illegal  with  %type  */
      |     IDENTIFIER  NUMBER      /*  NOTE:  illegal  with  %type  */
      ;
 
      /*  rules  section  */
 
rules :     C_IDENTIFIER  rbody  prec
      |     rules  rule
      ;
 
rule  :     C_IDENTIFIER  rbody  prec
      |     '|'  rbody  prec
      ;
 
rbody :     /*  empty  */
      |     rbody  IDENTIFIER
      |     rbody  act
      ;
 
act   :     '{'  {  Copy  action,  translate  $$,  etc.  }  '}'
      ;
 
prec  :     /*  empty  */
      |     PREC  IDENTIFIER
      |     PREC  IDENTIFIER  act
      |     prec  ';'
      ;
- -

¼ C: ߼

- -

¼ʹڵ 10 ۵ĸ߼ķӡ޸ĸ¼ A ṩ⸡㳣 -+-*/һԪ - = (ֵ)дaz 26 ⣬䣬дΪ -

- -
        ( x , y )
- -

x Сڵ yʹôAZ 26 ֵ÷ڸ¼ Aֵֵӡʽӡ()ֵ

- -

̽ Yacc C һЩȤʾΪɴ洢Ϊ˫ȵҶ˵ֵɵĽṹͨʹ -typedef ṹһ INTERVALYacc -ֵջ԰(бֵ)עȫЩǿҵܹ C Ըֵṹϡʵϣܶදͬĵ÷ؽṹĺ

- -

ֵעĻʹ YYERROR Ĵ״: ԰ 0 䣬Դ䡣ЧϣYacc Ĵ޸Ще²ֵġ

- -

ֵջ͵ĻϣķչʾȤ﷨ãнʽ(DZ)עҪһֵԶΪ䡣ͨ Yacc ķʱ´ijͻ: 18 ƽ/Լ 26 Լ/Լͻ鿴оܼ:

- -
        2.5 + ( 3.5 - 4. )
- -

- -
        2.5 + ( 3.5 , 4. )
- -

עڵڶ 2.5 ҪһֵʽУʵDz֪һֱ,ʱ2.5 Ѿˣܻȥı뷨һģҪǰ鿴ĿļǺǷһת䡣ͨÿԪֵʹ -: (operand)DZʱһֵʱһڵڶ£Ҳһ䣬ԽԶӦת -ܣкܶӦҲԲתͻͨڹ涨ļгĹַʽ£ڱֱֵʽıֵ ֱDZ뱻ǿƳΪķϽͻ

- -

͵ַʽǷdzнģǺһԵġкֱܶʽͶֻ֣ҪĹĿϷԵͻĿϷԡ -ԣнģڸıԻаϢΪֵһ֡ΪķһǸʵõġ

- -

˵һ´ʷΨһѰǸ㳣Ĵáʹ -C atof ַ˫ֵʵתʷ⵽һͨķǷǷһǺΪӦڽеһ﷨󣬲޸ -

- -
%{
 
#  include  <stdio.h>
#  include  <ctype.h>
 
typedef  struct  interval  {
        double  lo,  hi;
        }  INTERVAL;
 
INTERVAL  vmul(),  vdiv();
 
double  atof();
 
double  dreg[ 26 ];
INTERVAL  vreg[ 26 ];
 
%}
 
%start    lines
 
%union    {
        int  ival;
        double  dval;
        INTERVAL  vval;
        }
 
%token  <ival>  DREG  VREG      /*  indices  into  dreg,  vreg  arrays  */
 
%token  <dval>  CONST           /*  floating  point  constant  */
 
%type  <dval>  dexp             /*  expression  */
 
%type  <vval>  vexp             /*  interval  expression  */
 
        /*  precedence  information  about  the  operators  */
 
%left   '+'  '-'
%left   '*'  '/'
%left   UMINUS        /*  precedence  for  unary  minus  */
 
%%
 
lines   :       /*  empty  */
        |       lines  line
        ;
 
line    :       dexp  '\n'
                        {       printf(  "%15.8f\n",  $1  );  }
        |       vexp  '\n'
                        {       printf(  "(%15.8f  ,  %15.8f  )\n",  $1.lo,  $1.hi  );  }
        |       DREG  '='  dexp  '\n'
                        {       dreg[$1]  =  $3;  }
        |       VREG  '='  vexp  '\n'
                        {       vreg[$1]  =  $3;  }
        |       error  '\n'
                        {       yyerrok;  }
        ;
 
dexp    :       CONST
        |       DREG
                        {       $$  =  dreg[$1];  }
        |       dexp  '+'  dexp
                        {       $$  =  $1  +  $3;  }
        |       dexp  '-'  dexp
                        {       $$  =  $1  -  $3;  }
        |       dexp  '*'  dexp
                        {       $$  =  $1  *  $3;  }
        |       dexp  '/'  dexp
                        {       $$  =  $1  /  $3;  }
        |       '-'  dexp       %prec  UMINUS
                        {       $$  =  - $2;  }
        |       '('  dexp  ')'
                        {       $$  =  $2;  }
        ;
 
vexp    :       dexp
                        {       $$.hi  =  $$.lo  =  $1;  }
        |       '('  dexp  ','  dexp  ')'
                        {
                        $$.lo  =  $2;
                        $$.hi  =  $4;
                        if(  $$.lo  >  $$.hi  ){
                                printf(  "interval  out  of  order\n"  );
                                YYERROR;
                                }
                        }
        |       VREG
                        {       $$  =  vreg[$1];    }
        |       vexp  '+'  vexp
                        {       $$.hi  =  $1.hi  +  $3.hi;
                                $$.lo  =  $1.lo  +  $3.lo;    }
        |       dexp  '+'  vexp
                        {       $$.hi  =  $1  +  $3.hi;
                                $$.lo  =  $1  +  $3.lo;    }
        |       vexp  '-'  vexp
                        {       $$.hi  =  $1.hi  -  $3.lo;
                                $$.lo  =  $1.lo  -  $3.hi;    }
        |       dexp  '-'  vexp
                        {       $$.hi  =  $1  -  $3.lo;
                                $$.lo  =  $1  -  $3.hi;    }
        |       vexp  '*'  vexp
                        {       $$  =  vmul(  $1.lo,  $1.hi,  $3  );  }
        |       dexp  '*'  vexp
                        {       $$  =  vmul(  $1,  $1,  $3  );  }
        |       vexp  '/'  vexp
                        {       if(  dcheck(  $3  )  )  YYERROR;
                                $$  =  vdiv(  $1.lo,  $1.hi,  $3  );  }
        |       dexp  '/'  vexp
                        {       if(  dcheck(  $3  )  )  YYERROR;
                                $$  =  vdiv(  $1,  $1,  $3  );  }
        |       '-'  vexp       %prec  UMINUS
                        {       $$.hi  =  -$2.lo;    $$.lo  =  -$2.hi;    }
        |       '('  vexp  ')'
                        {       $$  =  $2;  }
        ;
 
%%
 
#  define  BSZ  50        /*  buffer  size  for  floating  point  numbers  */
 
        /*  lexical  analysis  */
 
yylex(){
        register  c;
 
        while(  (c=getchar())  ==  ' '  ){  /*  skip  over  blanks  */  }
 
        if(  isupper(  c  )  ){
                yylval.ival  =  c  -  'A';
                return(  VREG  );
                }
        if(  islower(  c  )  ){
                yylval.ival  =  c  -  'a';
                return(  DREG  );
                }
 
        if(  isdigit(  c  )  ||  c=='.'  ){
                /*  gobble  up  digits,  points,  exponents  */
 
                char  buf[BSZ+1],  *cp  =  buf;
                int  dot  =  0,  exp  =  0;
 
                for(  ;  (cp-buf)<BSZ  ;  ++cp,c=getchar()  ){
 
                        *cp  =  c;
                        if(  isdigit(  c  )  )  continue;
                        if(  c  ==  '.'  ){
                                if(  dot++  ||  exp  )  return(  '.'  );    /*  will  cause  syntax  error  */
                                continue;
                                }
 
                        if(  c  ==  'e'  ){
                                if(  exp++  )  return(  'e'  );    /*  will  cause  syntax  error  */
                                continue;
                                }
 
                        /*  end  of  number  */
                        break;
                        }
                *cp  =  '\0';
 
                if(  (cp-buf)  >=  BSZ  )  printf(  "constant  too  long:  truncated\n"  );
                else  ungetc(  c,  stdin  );    /*  push  back  last  char  read  */
                yylval.dval  =  atof(  buf  );
                return(  CONST  );
                }
        return(  c  );
        }
 
INTERVAL  hilo(  a,  b,  c,  d  )  double  a,  b,  c,  d;  {
        /*  returns  the  smallest  interval  containing  a,  b,  c,  and  d  */
        /*  used  by  *,  /  routines  */
        INTERVAL  v;
 
        if(  a>b  )  {  v.hi  =  a;    v.lo  =  b;  }
        else  {  v.hi  =  b;    v.lo  =  a;  }
 
        if(  c>d  )  {
                if(  c>v.hi  )  v.hi  =  c;
                if(  d<v.lo  )  v.lo  =  d;
                }
        else  {
                if(  d>v.hi  )  v.hi  =  d;
                if(  c<v.lo  )  v.lo  =  c;
                }
        return(  v  );
        }
 
INTERVAL  vmul(  a,  b,  v  )  double  a,  b;    INTERVAL  v;  {
        return(  hilo(  a*v.hi,  a*v.lo,  b*v.hi,  b*v.lo  )  );
        }
 
dcheck(  v  )  INTERVAL  v;  {
        if(  v.hi  >=  0.  &&  v.lo  <=  0.  ){
                printf(  "divisor  interval  contains  0.\n"  );
                return(  1  );
                }
        return(  0  );
        }
 
INTERVAL  vdiv(  a,  b,  v  )  double  a,  b;    INTERVAL  v;  {
        return(  hilo(  a/v.hi,  a/v.lo,  b/v.hi,  b/v.lo  )  );
        }
- -

¼ D: ֵ֧ľ

- -

¼漰ΪʷԶֵֺ֧ͬڸԭ򲻹ʹá

- -
- -

1. Ҳ˫"

- -

2. ҲԶһַַĸ֡ _ֵͱţͬûаΧһҵֵֵ

- -

ֵַʹ˲Ϥ Yacc ˣΪʾ Yacc ʵϴʷĹ

- -

3. % ϷĶλãб\Ҳáرǣ\\ ͬ %%\left ͬ %left ȵȡ

- -

4. һЩͬ:

- -
- -

%< ͬ %left
-%>
ͬ %right
-%binary
%2 ͬ %nonassoc
-%0
%term ͬ %token
-%=
ͬ %prec

- -
- -

5. Ҳʽ

- -
             ={ . . . }
- -

һһ C Ҳȥ

- -

6. %{ -%} ֮ C ߳ڹεͷ֣ͬһ

- -
- -

 

- -
- - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/Lex&yacc/YACC--Yet Another Compiler-Compiler.pdf" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/Lex&yacc/YACC--Yet Another Compiler-Compiler.pdf" deleted file mode 100644 index 29f46b7ac..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/Lex&yacc/YACC--Yet Another Compiler-Compiler.pdf" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/Driver$1.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/Driver$1.class" deleted file mode 100644 index 6df2acff8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/Driver$1.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/Driver.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/Driver.class" deleted file mode 100644 index 031085a2c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/Driver.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/Location.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/Location.class" deleted file mode 100644 index 3af1de5dc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/Location.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/Option$Level.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/Option$Level.class" deleted file mode 100644 index cd57a54fd..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/Option$Level.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/Option.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/Option.class" deleted file mode 100644 index 587df0bd8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/Option.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/BadArgCountError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/BadArgCountError.class" deleted file mode 100644 index 62d4c7e5a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/BadArgCountError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/BadArgTypeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/BadArgTypeError.class" deleted file mode 100644 index e7ab06ac5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/BadArgTypeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/BadArrElementError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/BadArrElementError.class" deleted file mode 100644 index ab43b7306..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/BadArrElementError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/BadInheritanceError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/BadInheritanceError.class" deleted file mode 100644 index 231953b26..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/BadInheritanceError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/BadLengthArgError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/BadLengthArgError.class" deleted file mode 100644 index a774247a2..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/BadLengthArgError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/BadLengthError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/BadLengthError.class" deleted file mode 100644 index b4d946ed3..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/BadLengthError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/BadNewArrayLength.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/BadNewArrayLength.class" deleted file mode 100644 index b868a4bc5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/BadNewArrayLength.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/BadOverrideError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/BadOverrideError.class" deleted file mode 100644 index 77df4ddb9..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/BadOverrideError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/BadPrintArgError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/BadPrintArgError.class" deleted file mode 100644 index 06069b8d7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/BadPrintArgError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/BadReturnTypeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/BadReturnTypeError.class" deleted file mode 100644 index eee796086..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/BadReturnTypeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/BadTestExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/BadTestExpr.class" deleted file mode 100644 index 3708efa02..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/BadTestExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/BadVarTypeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/BadVarTypeError.class" deleted file mode 100644 index 8536cf723..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/BadVarTypeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/BreakOutOfLoopError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/BreakOutOfLoopError.class" deleted file mode 100644 index 596de2e0c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/BreakOutOfLoopError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/ClassNotFoundError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/ClassNotFoundError.class" deleted file mode 100644 index a513b49ac..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/ClassNotFoundError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/DecafError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/DecafError.class" deleted file mode 100644 index 8d792b1b7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/DecafError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/DeclConflictError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/DeclConflictError.class" deleted file mode 100644 index f125b9b92..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/DeclConflictError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/FieldNotAccessError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/FieldNotAccessError.class" deleted file mode 100644 index 1903553c4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/FieldNotAccessError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/FieldNotFoundError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/FieldNotFoundError.class" deleted file mode 100644 index c7791c9cf..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/FieldNotFoundError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/IncompatBinOpError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/IncompatBinOpError.class" deleted file mode 100644 index c3595bbda..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/IncompatBinOpError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/IncompatUnOpError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/IncompatUnOpError.class" deleted file mode 100644 index a86e3f449..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/IncompatUnOpError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/IntTooLargeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/IntTooLargeError.class" deleted file mode 100644 index 598a0b28c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/IntTooLargeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/MsgError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/MsgError.class" deleted file mode 100644 index 60ccd4898..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/MsgError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/NewlineInStrError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/NewlineInStrError.class" deleted file mode 100644 index 6568e7683..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/NewlineInStrError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/NoMainClassError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/NoMainClassError.class" deleted file mode 100644 index b3717b7f4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/NoMainClassError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/NotArrayError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/NotArrayError.class" deleted file mode 100644 index fb86c4eb6..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/NotArrayError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/NotClassError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/NotClassError.class" deleted file mode 100644 index f69933161..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/NotClassError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/NotClassFieldError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/NotClassFieldError.class" deleted file mode 100644 index 05ce115b1..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/NotClassFieldError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/NotClassMethodError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/NotClassMethodError.class" deleted file mode 100644 index 238090b9c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/NotClassMethodError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/OverridingVarError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/OverridingVarError.class" deleted file mode 100644 index 41fb1522a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/OverridingVarError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/RefNonStaticError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/RefNonStaticError.class" deleted file mode 100644 index 20adfbb06..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/RefNonStaticError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/RuntimeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/RuntimeError.class" deleted file mode 100644 index 899393a9e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/RuntimeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/SubNotIntError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/SubNotIntError.class" deleted file mode 100644 index 1c042cda4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/SubNotIntError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/ThisInStaticFuncError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/ThisInStaticFuncError.class" deleted file mode 100644 index 7751be2e5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/ThisInStaticFuncError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/UndeclVarError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/UndeclVarError.class" deleted file mode 100644 index fe57e45e2..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/UndeclVarError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/UnrecogCharError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/UnrecogCharError.class" deleted file mode 100644 index cb9cc03ed..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/UnrecogCharError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/UntermStrError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/UntermStrError.class" deleted file mode 100644 index 4ef47d6b4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/error/UntermStrError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/frontend/BaseLexer.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/frontend/BaseLexer.class" deleted file mode 100644 index 0fc4c1a67..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/frontend/BaseLexer.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/frontend/BaseParser.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/frontend/BaseParser.class" deleted file mode 100644 index 9bbc7df94..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/frontend/BaseParser.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/frontend/Lexer.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/frontend/Lexer.class" deleted file mode 100644 index 3d5537276..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/frontend/Lexer.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/frontend/Lexer.l" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/frontend/Lexer.l" deleted file mode 100644 index 72c0af5d4..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/frontend/Lexer.l" +++ /dev/null @@ -1,114 +0,0 @@ -/* - * 本文件是构造Decaf编译器所需要的JFlex输入脚本。 - * 在第一阶段,你需要完成这个脚本的内容,请参考"JFlex Manual"中关于如何编写JFlex脚本的说明。 - * - * 注意:在UNIX系统下你需要保证这个文件使用UNIX文本格式,可使用dos2unix命令进行文本各式转换。 - */ - -package decaf.frontend; - -import decaf.Location; -import decaf.error.*; -import decaf.utils.MiscUtils; - -%% -%public -%class Lexer -%extends BaseLexer -%byaccj -%line -%column -%switch -%unicode - -%{ - private Location sloc = null; - private StringBuilder buffer = new StringBuilder(); - - public Location getLocation() { - return new decaf.Location(yyline + 1, yycolumn + 1); - } -%} - -NEWLINE = (\r|\n|\r\n) -DIGIT = ([0-9]) -HEX_DIGIT = ([0-9A-Fa-f]) -HEX_INTEGER = (0[Xx]{HEX_DIGIT}+) -DEC_INTEGER = ({DIGIT}+) -INTEGER = ({HEX_INTEGER}|{DEC_INTEGER}) -IDENTIFIER = ([A-Za-z][_0-9A-Za-z]*) -SIMPLE_OPERATOR = ("+"|"-"|"*"|"/"|"%"|"="|"<"|">"|"."|","|";"|"!"|"("|")"|"["|"]"|"{"|"}"|"?"|":") -S_COMMENT = ("//"[^\r\n]*{NEWLINE}) -WHITESPACE = ([ \t]+) - - // 开始条件S表示字符串 -%x S - -%% - // 识别注释和空白字符的规则 -{WHITESPACE} { /* Just ignore */ } -{NEWLINE} { /* Just ignore */ } -{S_COMMENT} { /* Just ignore */ } - - - // 识别关键字的规则 -"void" { return keyword(Parser.VOID); } -"int" { return keyword(Parser.INT); } -"bool" { return keyword(Parser.BOOL); } -"string" { return keyword(Parser.STRING); } -"new" { return keyword(Parser.NEW); } -"null" { return keyword(Parser.NULL); } -"class" { return keyword(Parser.CLASS); } -"extends" { return keyword(Parser.EXTENDS); } -"this" { return keyword(Parser.THIS); } -"while" { return keyword(Parser.WHILE); } -"for" { return keyword(Parser.FOR); } -"if" { return keyword(Parser.IF); } -"else" { return keyword(Parser.ELSE); } -"return" { return keyword(Parser.RETURN); } -"break" { return keyword(Parser.BREAK); } -"Print" { return keyword(Parser.PRINT); } -"ReadInteger" { return keyword(Parser.READ_INTEGER); } -"ReadLine" { return keyword(Parser.READ_LINE); } -"static" { return keyword(Parser.STATIC); } -"instanceof" { return keyword(Parser.INSTANCEOF); } -"numinstances" { return keyword(Parser.NUMINSTANCES); } -"fi" { return keyword(Parser.FI); } -"od" { return keyword(Parser.OD); } -"do" { return keyword(Parser.DO); } - - // 识别操作符的规则 -"<=" { return operator(Parser.LESS_EQUAL); } -">=" { return operator(Parser.GREATER_EQUAL);} -"==" { return operator(Parser.EQUAL); } -"!=" { return operator(Parser.NOT_EQUAL); } -"&&" { return operator(Parser.AND); } -"||" { return operator(Parser.OR); } -"++" { return operator(Parser.DOUBLE_PLUS); } -"--" { return operator(Parser.DOUBLE_MINUS); } -{SIMPLE_OPERATOR} { return operator((int)yycharat(0)); } -"|||" { return keyword(Parser.TRIBLE_OR); } - - // 识别常数的规则 -"true" { return boolConst(true); } -"false" { return boolConst(false); } -{INTEGER} { return intConst(yytext()); } -\" { sloc = getLocation(); - yybegin(S); - buffer = new StringBuilder(); } -{NEWLINE} { issueError(new NewlineInStrError(sloc, MiscUtils.quote(buffer.toString())));} -<> { issueError(new UntermStrError(sloc, MiscUtils.quote(buffer.toString()))); - yybegin(YYINITIAL); } -\" { yybegin(YYINITIAL); - return StringConst(buffer.toString(), sloc); } -"\\n" { buffer.append('\n'); } -"\\t" { buffer.append('\t'); } -"\\\"" { buffer.append('"'); } -"\\\\" { buffer.append('\\'); } -. { buffer.append(yytext()); } - - // 识别标识符的规则 -{IDENTIFIER} { return identifier(yytext()); } - - // 上面规则不能识别的字符怎么处理 -. { issueError(new UnrecogCharError(getLocation(), yycharat(0))); } diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/frontend/Parser.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/frontend/Parser.class" deleted file mode 100644 index c396048d3..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/frontend/Parser.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/frontend/Parser.output" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/frontend/Parser.output" deleted file mode 100644 index 42d4894b4..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/frontend/Parser.output" +++ /dev/null @@ -1,3898 +0,0 @@ - 0 $accept : Program $end - - 1 Program : ClassList - - 2 ClassList : ClassList ClassDef - 3 | ClassDef - - 4 VariableDef : Variable ';' - - 5 Variable : Type IDENTIFIER - - 6 Type : INT - 7 | VOID - 8 | BOOL - 9 | STRING - 10 | CLASS IDENTIFIER - 11 | Type '[' ']' - - 12 ClassDef : CLASS IDENTIFIER ExtendsClause '{' FieldList '}' - - 13 ExtendsClause : EXTENDS IDENTIFIER - 14 | - - 15 FieldList : FieldList VariableDef - 16 | FieldList FunctionDef - 17 | - - 18 Formals : VariableList - 19 | - - 20 VariableList : VariableList ',' Variable - 21 | Variable - - 22 FunctionDef : STATIC Type IDENTIFIER '(' Formals ')' StmtBlock - 23 | Type IDENTIFIER '(' Formals ')' StmtBlock - - 24 StmtBlock : '{' StmtList '}' - - 25 StmtList : StmtList Stmt - 26 | - - 27 Stmt : VariableDef - 28 | SimpleStmt ';' - 29 | IfStmt - 30 | WhileStmt - 31 | ForStmt - 32 | ReturnStmt ';' - 33 | PrintStmt ';' - 34 | BreakStmt ';' - 35 | StmtBlock - 36 | GuardedIFStmt - 37 | GuaededDOStmt - - 38 GuardedES : Expr ':' Stmt - - 39 GuardedStmts : GuardedES - 40 | GuardedStmts TRIBLE_OR GuardedES - - 41 GuardedIFStmt : IF GuardedStmts FI - - 42 GuaededDOStmt : DO GuardedStmts OD - - 43 SimpleStmt : LValue '=' Expr - 44 | Call - 45 | - - 46 Receiver : Expr '.' - 47 | - - 48 LValue : Receiver IDENTIFIER - 49 | Expr '[' Expr ']' - - 50 Call : Receiver IDENTIFIER '(' Actuals ')' - - 51 Expr : LValue - 52 | Call - 53 | Constant - 54 | Expr '+' Expr - 55 | Expr '-' Expr - 56 | Expr '*' Expr - 57 | Expr '/' Expr - 58 | Expr '%' Expr - 59 | Expr EQUAL Expr - 60 | Expr NOT_EQUAL Expr - 61 | Expr '<' Expr - 62 | Expr '>' Expr - 63 | Expr LESS_EQUAL Expr - 64 | Expr GREATER_EQUAL Expr - 65 | Expr AND Expr - 66 | Expr OR Expr - 67 | '(' Expr ')' - 68 | '-' Expr - 69 | '!' Expr - 70 | READ_INTEGER '(' ')' - 71 | READ_LINE '(' ')' - 72 | THIS - 73 | NEW IDENTIFIER '(' ')' - 74 | NEW Type '[' Expr ']' - 75 | INSTANCEOF '(' Expr ',' IDENTIFIER ')' - 76 | '(' CLASS IDENTIFIER ')' Expr - 77 | Expr DOUBLE_PLUS - 78 | DOUBLE_PLUS Expr - 79 | Expr DOUBLE_MINUS - 80 | DOUBLE_MINUS Expr - 81 | Expr '?' Expr ':' Expr - 82 | NUMINSTANCES '(' IDENTIFIER ')' - - 83 Constant : LITERAL - 84 | NULL - - 85 Actuals : ExprList - 86 | - - 87 ExprList : ExprList ',' Expr - 88 | Expr - - 89 WhileStmt : WHILE '(' Expr ')' Stmt - - 90 ForStmt : FOR '(' SimpleStmt ';' Expr ';' SimpleStmt ')' Stmt - - 91 BreakStmt : BREAK - - 92 IfStmt : IF '(' Expr ')' Stmt ElseClause - - 93 ElseClause : ELSE Stmt - 94 | - - 95 ReturnStmt : RETURN Expr - 96 | RETURN - - 97 PrintStmt : PRINT '(' ExprList ')' - -state 0 - $accept : . Program $end (0) - - CLASS shift 1 - . error - - Program goto 2 - ClassList goto 3 - ClassDef goto 4 - - -state 1 - ClassDef : CLASS . IDENTIFIER ExtendsClause '{' FieldList '}' (12) - - IDENTIFIER shift 5 - . error - - -state 2 - $accept : Program . $end (0) - - $end accept - - -state 3 - Program : ClassList . (1) - ClassList : ClassList . ClassDef (2) - - CLASS shift 1 - $end reduce 1 - - ClassDef goto 6 - - -state 4 - ClassList : ClassDef . (3) - - . reduce 3 - - -state 5 - ClassDef : CLASS IDENTIFIER . ExtendsClause '{' FieldList '}' (12) - ExtendsClause : . (14) - - EXTENDS shift 7 - '{' reduce 14 - - ExtendsClause goto 8 - - -state 6 - ClassList : ClassList ClassDef . (2) - - . reduce 2 - - -state 7 - ExtendsClause : EXTENDS . IDENTIFIER (13) - - IDENTIFIER shift 9 - . error - - -state 8 - ClassDef : CLASS IDENTIFIER ExtendsClause . '{' FieldList '}' (12) - - '{' shift 10 - . error - - -state 9 - ExtendsClause : EXTENDS IDENTIFIER . (13) - - . reduce 13 - - -state 10 - ClassDef : CLASS IDENTIFIER ExtendsClause '{' . FieldList '}' (12) - FieldList : . (17) - - . reduce 17 - - FieldList goto 11 - - -state 11 - ClassDef : CLASS IDENTIFIER ExtendsClause '{' FieldList . '}' (12) - FieldList : FieldList . VariableDef (15) - FieldList : FieldList . FunctionDef (16) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - STATIC shift 17 - '}' shift 18 - . error - - VariableDef goto 19 - Variable goto 20 - Type goto 21 - FunctionDef goto 22 - - -state 12 - Type : VOID . (7) - - . reduce 7 - - -state 13 - Type : BOOL . (8) - - . reduce 8 - - -state 14 - Type : INT . (6) - - . reduce 6 - - -state 15 - Type : STRING . (9) - - . reduce 9 - - -state 16 - Type : CLASS . IDENTIFIER (10) - - IDENTIFIER shift 23 - . error - - -state 17 - FunctionDef : STATIC . Type IDENTIFIER '(' Formals ')' StmtBlock (22) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - . error - - Type goto 24 - - -state 18 - ClassDef : CLASS IDENTIFIER ExtendsClause '{' FieldList '}' . (12) - - . reduce 12 - - -state 19 - FieldList : FieldList VariableDef . (15) - - . reduce 15 - - -state 20 - VariableDef : Variable . ';' (4) - - ';' shift 25 - . error - - -state 21 - Variable : Type . IDENTIFIER (5) - Type : Type . '[' ']' (11) - FunctionDef : Type . IDENTIFIER '(' Formals ')' StmtBlock (23) - - IDENTIFIER shift 26 - '[' shift 27 - . error - - -state 22 - FieldList : FieldList FunctionDef . (16) - - . reduce 16 - - -state 23 - Type : CLASS IDENTIFIER . (10) - - . reduce 10 - - -state 24 - Type : Type . '[' ']' (11) - FunctionDef : STATIC Type . IDENTIFIER '(' Formals ')' StmtBlock (22) - - IDENTIFIER shift 28 - '[' shift 27 - . error - - -state 25 - VariableDef : Variable ';' . (4) - - . reduce 4 - - -state 26 - Variable : Type IDENTIFIER . (5) - FunctionDef : Type IDENTIFIER . '(' Formals ')' StmtBlock (23) - - '(' shift 29 - ';' reduce 5 - - -state 27 - Type : Type '[' . ']' (11) - - ']' shift 30 - . error - - -state 28 - FunctionDef : STATIC Type IDENTIFIER . '(' Formals ')' StmtBlock (22) - - '(' shift 31 - . error - - -state 29 - FunctionDef : Type IDENTIFIER '(' . Formals ')' StmtBlock (23) - Formals : . (19) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - ')' reduce 19 - - Variable goto 32 - Type goto 33 - Formals goto 34 - VariableList goto 35 - - -state 30 - Type : Type '[' ']' . (11) - - . reduce 11 - - -state 31 - FunctionDef : STATIC Type IDENTIFIER '(' . Formals ')' StmtBlock (22) - Formals : . (19) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - ')' reduce 19 - - Variable goto 32 - Type goto 33 - Formals goto 36 - VariableList goto 35 - - -state 32 - VariableList : Variable . (21) - - . reduce 21 - - -state 33 - Variable : Type . IDENTIFIER (5) - Type : Type . '[' ']' (11) - - IDENTIFIER shift 37 - '[' shift 27 - . error - - -state 34 - FunctionDef : Type IDENTIFIER '(' Formals . ')' StmtBlock (23) - - ')' shift 38 - . error - - -state 35 - Formals : VariableList . (18) - VariableList : VariableList . ',' Variable (20) - - ',' shift 39 - ')' reduce 18 - - -state 36 - FunctionDef : STATIC Type IDENTIFIER '(' Formals . ')' StmtBlock (22) - - ')' shift 40 - . error - - -state 37 - Variable : Type IDENTIFIER . (5) - - . reduce 5 - - -state 38 - FunctionDef : Type IDENTIFIER '(' Formals ')' . StmtBlock (23) - - '{' shift 41 - . error - - StmtBlock goto 42 - - -state 39 - VariableList : VariableList ',' . Variable (20) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - . error - - Variable goto 43 - Type goto 33 - - -state 40 - FunctionDef : STATIC Type IDENTIFIER '(' Formals ')' . StmtBlock (22) - - '{' shift 41 - . error - - StmtBlock goto 44 - - -state 41 - StmtBlock : '{' . StmtList '}' (24) - StmtList : . (26) - - . reduce 26 - - StmtList goto 45 - - -state 42 - FunctionDef : Type IDENTIFIER '(' Formals ')' StmtBlock . (23) - - . reduce 23 - - -state 43 - VariableList : VariableList ',' Variable . (20) - - . reduce 20 - - -state 44 - FunctionDef : STATIC Type IDENTIFIER '(' Formals ')' StmtBlock . (22) - - . reduce 22 - - -state 45 - StmtBlock : '{' StmtList . '}' (24) - StmtList : StmtList . Stmt (25) - SimpleStmt : . (45) - Receiver : . (47) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - NULL shift 46 - THIS shift 47 - WHILE shift 48 - FOR shift 49 - IF shift 50 - RETURN shift 51 - BREAK shift 52 - NEW shift 53 - PRINT shift 54 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - DO shift 62 - '-' shift 63 - '!' shift 64 - '(' shift 65 - '{' shift 41 - '}' shift 66 - IDENTIFIER reduce 47 - ';' reduce 45 - - VariableDef goto 67 - Variable goto 20 - Type goto 33 - StmtBlock goto 68 - Stmt goto 69 - SimpleStmt goto 70 - IfStmt goto 71 - WhileStmt goto 72 - ForStmt goto 73 - ReturnStmt goto 74 - PrintStmt goto 75 - BreakStmt goto 76 - GuardedIFStmt goto 77 - GuaededDOStmt goto 78 - Expr goto 79 - LValue goto 80 - Call goto 81 - Receiver goto 82 - Constant goto 83 - - -state 46 - Constant : NULL . (84) - - . reduce 84 - - -state 47 - Expr : THIS . (72) - - . reduce 72 - - -state 48 - WhileStmt : WHILE . '(' Expr ')' Stmt (89) - - '(' shift 84 - . error - - -state 49 - ForStmt : FOR . '(' SimpleStmt ';' Expr ';' SimpleStmt ')' Stmt (90) - - '(' shift 85 - . error - - -state 50 - GuardedIFStmt : IF . GuardedStmts FI (41) - IfStmt : IF . '(' Expr ')' Stmt ElseClause (92) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 86 - IDENTIFIER reduce 47 - - GuardedES goto 87 - Expr goto 88 - GuardedStmts goto 89 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 51 - ReturnStmt : RETURN . Expr (95) - ReturnStmt : RETURN . (96) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - ';' reduce 96 - - Expr goto 92 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 52 - BreakStmt : BREAK . (91) - - . reduce 91 - - -state 53 - Expr : NEW . IDENTIFIER '(' ')' (73) - Expr : NEW . Type '[' Expr ']' (74) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - IDENTIFIER shift 93 - . error - - Type goto 94 - - -state 54 - PrintStmt : PRINT . '(' ExprList ')' (97) - - '(' shift 95 - . error - - -state 55 - Expr : READ_INTEGER . '(' ')' (70) - - '(' shift 96 - . error - - -state 56 - Expr : READ_LINE . '(' ')' (71) - - '(' shift 97 - . error - - -state 57 - Constant : LITERAL . (83) - - . reduce 83 - - -state 58 - Expr : INSTANCEOF . '(' Expr ',' IDENTIFIER ')' (75) - - '(' shift 98 - . error - - -state 59 - Expr : NUMINSTANCES . '(' IDENTIFIER ')' (82) - - '(' shift 99 - . error - - -state 60 - Expr : DOUBLE_PLUS . Expr (78) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 100 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 61 - Expr : DOUBLE_MINUS . Expr (80) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 101 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 62 - GuaededDOStmt : DO . GuardedStmts OD (42) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - GuardedES goto 87 - Expr goto 88 - GuardedStmts goto 102 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 63 - Expr : '-' . Expr (68) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 103 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 64 - Expr : '!' . Expr (69) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 104 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 65 - Expr : '(' . Expr ')' (67) - Expr : '(' . CLASS IDENTIFIER ')' Expr (76) - Receiver : . (47) - - CLASS shift 105 - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 106 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 66 - StmtBlock : '{' StmtList '}' . (24) - - . reduce 24 - - -state 67 - Stmt : VariableDef . (27) - - . reduce 27 - - -state 68 - Stmt : StmtBlock . (35) - - . reduce 35 - - -state 69 - StmtList : StmtList Stmt . (25) - - . reduce 25 - - -state 70 - Stmt : SimpleStmt . ';' (28) - - ';' shift 107 - . error - - -state 71 - Stmt : IfStmt . (29) - - . reduce 29 - - -state 72 - Stmt : WhileStmt . (30) - - . reduce 30 - - -state 73 - Stmt : ForStmt . (31) - - . reduce 31 - - -state 74 - Stmt : ReturnStmt . ';' (32) - - ';' shift 108 - . error - - -state 75 - Stmt : PrintStmt . ';' (33) - - ';' shift 109 - . error - - -state 76 - Stmt : BreakStmt . ';' (34) - - ';' shift 110 - . error - - -state 77 - Stmt : GuardedIFStmt . (36) - - . reduce 36 - - -state 78 - Stmt : GuaededDOStmt . (37) - - . reduce 37 - - -state 79 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - '?' shift 128 - . error - - -state 80 - SimpleStmt : LValue . '=' Expr (43) - Expr : LValue . (51) - - '=' shift 129 - AND reduce 51 - OR reduce 51 - LESS_EQUAL reduce 51 - GREATER_EQUAL reduce 51 - EQUAL reduce 51 - NOT_EQUAL reduce 51 - DOUBLE_PLUS reduce 51 - DOUBLE_MINUS reduce 51 - '+' reduce 51 - '-' reduce 51 - '*' reduce 51 - '/' reduce 51 - '%' reduce 51 - '>' reduce 51 - '<' reduce 51 - '.' reduce 51 - '[' reduce 51 - '?' reduce 51 - - -state 81 - SimpleStmt : Call . (44) - Expr : Call . (52) - - AND reduce 52 - OR reduce 52 - LESS_EQUAL reduce 52 - GREATER_EQUAL reduce 52 - EQUAL reduce 52 - NOT_EQUAL reduce 52 - DOUBLE_PLUS reduce 52 - DOUBLE_MINUS reduce 52 - '+' reduce 52 - '-' reduce 52 - '*' reduce 52 - '/' reduce 52 - '%' reduce 52 - '>' reduce 52 - '<' reduce 52 - '.' reduce 52 - ';' reduce 44 - ')' reduce 44 - '[' reduce 52 - '?' reduce 52 - - -state 82 - LValue : Receiver . IDENTIFIER (48) - Call : Receiver . IDENTIFIER '(' Actuals ')' (50) - - IDENTIFIER shift 130 - . error - - -state 83 - Expr : Constant . (53) - - . reduce 53 - - -state 84 - WhileStmt : WHILE '(' . Expr ')' Stmt (89) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 131 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 85 - ForStmt : FOR '(' . SimpleStmt ';' Expr ';' SimpleStmt ')' Stmt (90) - SimpleStmt : . (45) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - ';' reduce 45 - - SimpleStmt goto 132 - Expr goto 79 - LValue goto 80 - Call goto 81 - Receiver goto 82 - Constant goto 83 - - -state 86 - Expr : '(' . Expr ')' (67) - Expr : '(' . CLASS IDENTIFIER ')' Expr (76) - IfStmt : IF '(' . Expr ')' Stmt ElseClause (92) - Receiver : . (47) - - CLASS shift 105 - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 133 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 87 - GuardedStmts : GuardedES . (39) - - . reduce 39 - - -state 88 - GuardedES : Expr . ':' Stmt (38) - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - '?' shift 128 - ':' shift 134 - . error - - -state 89 - GuardedStmts : GuardedStmts . TRIBLE_OR GuardedES (40) - GuardedIFStmt : IF GuardedStmts . FI (41) - - FI shift 135 - TRIBLE_OR shift 136 - . error - - -state 90 - Expr : LValue . (51) - - . reduce 51 - - -state 91 - Expr : Call . (52) - - . reduce 52 - - -state 92 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - ReturnStmt : RETURN Expr . (95) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - '?' shift 128 - ';' reduce 95 - - -state 93 - Expr : NEW IDENTIFIER . '(' ')' (73) - - '(' shift 137 - . error - - -state 94 - Type : Type . '[' ']' (11) - Expr : NEW Type . '[' Expr ']' (74) - - '[' shift 138 - . error - - -state 95 - PrintStmt : PRINT '(' . ExprList ')' (97) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 139 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - ExprList goto 140 - - -state 96 - Expr : READ_INTEGER '(' . ')' (70) - - ')' shift 141 - . error - - -state 97 - Expr : READ_LINE '(' . ')' (71) - - ')' shift 142 - . error - - -state 98 - Expr : INSTANCEOF '(' . Expr ',' IDENTIFIER ')' (75) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 143 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 99 - Expr : NUMINSTANCES '(' . IDENTIFIER ')' (82) - - IDENTIFIER shift 144 - . error - - -state 100 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : DOUBLE_PLUS Expr . (78) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - '.' shift 126 - '[' shift 127 - AND reduce 78 - OR reduce 78 - LESS_EQUAL reduce 78 - GREATER_EQUAL reduce 78 - EQUAL reduce 78 - NOT_EQUAL reduce 78 - '+' reduce 78 - '-' reduce 78 - '*' reduce 78 - '/' reduce 78 - '%' reduce 78 - '>' reduce 78 - '<' reduce 78 - ',' reduce 78 - ';' reduce 78 - ')' reduce 78 - ']' reduce 78 - '?' reduce 78 - ':' reduce 78 - - -state 101 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : DOUBLE_MINUS Expr . (80) - Expr : Expr . '?' Expr ':' Expr (81) - - '.' shift 126 - '[' shift 127 - AND reduce 80 - OR reduce 80 - LESS_EQUAL reduce 80 - GREATER_EQUAL reduce 80 - EQUAL reduce 80 - NOT_EQUAL reduce 80 - '+' reduce 80 - '-' reduce 80 - '*' reduce 80 - '/' reduce 80 - '%' reduce 80 - '>' reduce 80 - '<' reduce 80 - ',' reduce 80 - ';' reduce 80 - ')' reduce 80 - ']' reduce 80 - '?' reduce 80 - ':' reduce 80 - - -state 102 - GuardedStmts : GuardedStmts . TRIBLE_OR GuardedES (40) - GuaededDOStmt : DO GuardedStmts . OD (42) - - TRIBLE_OR shift 136 - OD shift 145 - . error - - -state 103 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : '-' Expr . (68) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '.' shift 126 - '[' shift 127 - AND reduce 68 - OR reduce 68 - LESS_EQUAL reduce 68 - GREATER_EQUAL reduce 68 - EQUAL reduce 68 - NOT_EQUAL reduce 68 - '+' reduce 68 - '-' reduce 68 - '*' reduce 68 - '/' reduce 68 - '%' reduce 68 - '>' reduce 68 - '<' reduce 68 - ',' reduce 68 - ';' reduce 68 - ')' reduce 68 - ']' reduce 68 - '?' reduce 68 - ':' reduce 68 - - -state 104 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : '!' Expr . (69) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '.' shift 126 - '[' shift 127 - AND reduce 69 - OR reduce 69 - LESS_EQUAL reduce 69 - GREATER_EQUAL reduce 69 - EQUAL reduce 69 - NOT_EQUAL reduce 69 - '+' reduce 69 - '-' reduce 69 - '*' reduce 69 - '/' reduce 69 - '%' reduce 69 - '>' reduce 69 - '<' reduce 69 - ',' reduce 69 - ';' reduce 69 - ')' reduce 69 - ']' reduce 69 - '?' reduce 69 - ':' reduce 69 - - -state 105 - Expr : '(' CLASS . IDENTIFIER ')' Expr (76) - - IDENTIFIER shift 146 - . error - - -state 106 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : '(' Expr . ')' (67) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - ')' shift 147 - '[' shift 127 - '?' shift 128 - . error - - -state 107 - Stmt : SimpleStmt ';' . (28) - - . reduce 28 - - -state 108 - Stmt : ReturnStmt ';' . (32) - - . reduce 32 - - -state 109 - Stmt : PrintStmt ';' . (33) - - . reduce 33 - - -state 110 - Stmt : BreakStmt ';' . (34) - - . reduce 34 - - -state 111 - Expr : Expr AND . Expr (65) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 148 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 112 - Expr : Expr OR . Expr (66) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 149 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 113 - Expr : Expr LESS_EQUAL . Expr (63) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 150 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 114 - Expr : Expr GREATER_EQUAL . Expr (64) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 151 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 115 - Expr : Expr EQUAL . Expr (59) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 152 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 116 - Expr : Expr NOT_EQUAL . Expr (60) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 153 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 117 - Expr : Expr DOUBLE_PLUS . (77) - - . reduce 77 - - -state 118 - Expr : Expr DOUBLE_MINUS . (79) - - . reduce 79 - - -state 119 - Expr : Expr '+' . Expr (54) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 154 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 120 - Expr : Expr '-' . Expr (55) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 155 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 121 - Expr : Expr '*' . Expr (56) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 156 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 122 - Expr : Expr '/' . Expr (57) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 157 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 123 - Expr : Expr '%' . Expr (58) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 158 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 124 - Expr : Expr '>' . Expr (62) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 159 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 125 - Expr : Expr '<' . Expr (61) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 160 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 126 - Receiver : Expr '.' . (46) - - . reduce 46 - - -state 127 - LValue : Expr '[' . Expr ']' (49) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 161 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 128 - Expr : Expr '?' . Expr ':' Expr (81) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 162 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 129 - SimpleStmt : LValue '=' . Expr (43) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 163 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 130 - LValue : Receiver IDENTIFIER . (48) - Call : Receiver IDENTIFIER . '(' Actuals ')' (50) - - '(' shift 164 - AND reduce 48 - OR reduce 48 - LESS_EQUAL reduce 48 - GREATER_EQUAL reduce 48 - EQUAL reduce 48 - NOT_EQUAL reduce 48 - DOUBLE_PLUS reduce 48 - DOUBLE_MINUS reduce 48 - '+' reduce 48 - '-' reduce 48 - '*' reduce 48 - '/' reduce 48 - '%' reduce 48 - '=' reduce 48 - '>' reduce 48 - '<' reduce 48 - '.' reduce 48 - ',' reduce 48 - ';' reduce 48 - ')' reduce 48 - '[' reduce 48 - ']' reduce 48 - '?' reduce 48 - ':' reduce 48 - - -state 131 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - WhileStmt : WHILE '(' Expr . ')' Stmt (89) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - ')' shift 165 - '[' shift 127 - '?' shift 128 - . error - - -state 132 - ForStmt : FOR '(' SimpleStmt . ';' Expr ';' SimpleStmt ')' Stmt (90) - - ';' shift 166 - . error - - -state 133 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : '(' Expr . ')' (67) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - IfStmt : IF '(' Expr . ')' Stmt ElseClause (92) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - ')' shift 167 - '[' shift 127 - '?' shift 128 - . error - - -state 134 - GuardedES : Expr ':' . Stmt (38) - SimpleStmt : . (45) - Receiver : . (47) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - NULL shift 46 - THIS shift 47 - WHILE shift 48 - FOR shift 49 - IF shift 50 - RETURN shift 51 - BREAK shift 52 - NEW shift 53 - PRINT shift 54 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - DO shift 62 - '-' shift 63 - '!' shift 64 - '(' shift 65 - '{' shift 41 - IDENTIFIER reduce 47 - ';' reduce 45 - - VariableDef goto 67 - Variable goto 20 - Type goto 33 - StmtBlock goto 68 - Stmt goto 168 - SimpleStmt goto 70 - IfStmt goto 71 - WhileStmt goto 72 - ForStmt goto 73 - ReturnStmt goto 74 - PrintStmt goto 75 - BreakStmt goto 76 - GuardedIFStmt goto 77 - GuaededDOStmt goto 78 - Expr goto 79 - LValue goto 80 - Call goto 81 - Receiver goto 82 - Constant goto 83 - - -state 135 - GuardedIFStmt : IF GuardedStmts FI . (41) - - . reduce 41 - - -state 136 - GuardedStmts : GuardedStmts TRIBLE_OR . GuardedES (40) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - GuardedES goto 169 - Expr goto 88 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 137 - Expr : NEW IDENTIFIER '(' . ')' (73) - - ')' shift 170 - . error - - -state 138 - Type : Type '[' . ']' (11) - Expr : NEW Type '[' . Expr ']' (74) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - ']' shift 30 - IDENTIFIER reduce 47 - - Expr goto 171 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 139 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - ExprList : Expr . (88) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - '?' shift 128 - ',' reduce 88 - ')' reduce 88 - - -state 140 - ExprList : ExprList . ',' Expr (87) - PrintStmt : PRINT '(' ExprList . ')' (97) - - ',' shift 172 - ')' shift 173 - . error - - -state 141 - Expr : READ_INTEGER '(' ')' . (70) - - . reduce 70 - - -state 142 - Expr : READ_LINE '(' ')' . (71) - - . reduce 71 - - -state 143 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : INSTANCEOF '(' Expr . ',' IDENTIFIER ')' (75) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - ',' shift 174 - '[' shift 127 - '?' shift 128 - . error - - -state 144 - Expr : NUMINSTANCES '(' IDENTIFIER . ')' (82) - - ')' shift 175 - . error - - -state 145 - GuaededDOStmt : DO GuardedStmts OD . (42) - - . reduce 42 - - -state 146 - Expr : '(' CLASS IDENTIFIER . ')' Expr (76) - - ')' shift 176 - . error - - -state 147 - Expr : '(' Expr ')' . (67) - - . reduce 67 - - -state 148 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr AND Expr . (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - AND reduce 65 - OR reduce 65 - ',' reduce 65 - ';' reduce 65 - ')' reduce 65 - ']' reduce 65 - '?' reduce 65 - ':' reduce 65 - - -state 149 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr OR Expr . (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - AND shift 111 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - OR reduce 66 - ',' reduce 66 - ';' reduce 66 - ')' reduce 66 - ']' reduce 66 - '?' reduce 66 - ':' reduce 66 - - -state 150 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr LESS_EQUAL Expr . (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '.' shift 126 - '[' shift 127 - AND reduce 63 - OR reduce 63 - EQUAL reduce 63 - NOT_EQUAL reduce 63 - ',' reduce 63 - ';' reduce 63 - ')' reduce 63 - ']' reduce 63 - '?' reduce 63 - ':' reduce 63 - - -state 151 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr GREATER_EQUAL Expr . (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '.' shift 126 - '[' shift 127 - AND reduce 64 - OR reduce 64 - EQUAL reduce 64 - NOT_EQUAL reduce 64 - ',' reduce 64 - ';' reduce 64 - ')' reduce 64 - ']' reduce 64 - '?' reduce 64 - ':' reduce 64 - - -state 152 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr EQUAL Expr . (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - AND reduce 59 - OR reduce 59 - ',' reduce 59 - ';' reduce 59 - ')' reduce 59 - ']' reduce 59 - '?' reduce 59 - ':' reduce 59 - - -state 153 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr NOT_EQUAL Expr . (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - AND reduce 60 - OR reduce 60 - ',' reduce 60 - ';' reduce 60 - ')' reduce 60 - ']' reduce 60 - '?' reduce 60 - ':' reduce 60 - - -state 154 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr '+' Expr . (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '.' shift 126 - '[' shift 127 - AND reduce 54 - OR reduce 54 - LESS_EQUAL reduce 54 - GREATER_EQUAL reduce 54 - EQUAL reduce 54 - NOT_EQUAL reduce 54 - '+' reduce 54 - '-' reduce 54 - '>' reduce 54 - '<' reduce 54 - ',' reduce 54 - ';' reduce 54 - ')' reduce 54 - ']' reduce 54 - '?' reduce 54 - ':' reduce 54 - - -state 155 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr '-' Expr . (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '.' shift 126 - '[' shift 127 - AND reduce 55 - OR reduce 55 - LESS_EQUAL reduce 55 - GREATER_EQUAL reduce 55 - EQUAL reduce 55 - NOT_EQUAL reduce 55 - '+' reduce 55 - '-' reduce 55 - '>' reduce 55 - '<' reduce 55 - ',' reduce 55 - ';' reduce 55 - ')' reduce 55 - ']' reduce 55 - '?' reduce 55 - ':' reduce 55 - - -state 156 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr '*' Expr . (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '.' shift 126 - '[' shift 127 - AND reduce 56 - OR reduce 56 - LESS_EQUAL reduce 56 - GREATER_EQUAL reduce 56 - EQUAL reduce 56 - NOT_EQUAL reduce 56 - '+' reduce 56 - '-' reduce 56 - '*' reduce 56 - '/' reduce 56 - '%' reduce 56 - '>' reduce 56 - '<' reduce 56 - ',' reduce 56 - ';' reduce 56 - ')' reduce 56 - ']' reduce 56 - '?' reduce 56 - ':' reduce 56 - - -state 157 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr '/' Expr . (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '.' shift 126 - '[' shift 127 - AND reduce 57 - OR reduce 57 - LESS_EQUAL reduce 57 - GREATER_EQUAL reduce 57 - EQUAL reduce 57 - NOT_EQUAL reduce 57 - '+' reduce 57 - '-' reduce 57 - '*' reduce 57 - '/' reduce 57 - '%' reduce 57 - '>' reduce 57 - '<' reduce 57 - ',' reduce 57 - ';' reduce 57 - ')' reduce 57 - ']' reduce 57 - '?' reduce 57 - ':' reduce 57 - - -state 158 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr '%' Expr . (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '.' shift 126 - '[' shift 127 - AND reduce 58 - OR reduce 58 - LESS_EQUAL reduce 58 - GREATER_EQUAL reduce 58 - EQUAL reduce 58 - NOT_EQUAL reduce 58 - '+' reduce 58 - '-' reduce 58 - '*' reduce 58 - '/' reduce 58 - '%' reduce 58 - '>' reduce 58 - '<' reduce 58 - ',' reduce 58 - ';' reduce 58 - ')' reduce 58 - ']' reduce 58 - '?' reduce 58 - ':' reduce 58 - - -state 159 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr '>' Expr . (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '.' shift 126 - '[' shift 127 - AND reduce 62 - OR reduce 62 - EQUAL reduce 62 - NOT_EQUAL reduce 62 - ',' reduce 62 - ';' reduce 62 - ')' reduce 62 - ']' reduce 62 - '?' reduce 62 - ':' reduce 62 - - -state 160 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr '<' Expr . (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '.' shift 126 - '[' shift 127 - AND reduce 61 - OR reduce 61 - EQUAL reduce 61 - NOT_EQUAL reduce 61 - ',' reduce 61 - ';' reduce 61 - ')' reduce 61 - ']' reduce 61 - '?' reduce 61 - ':' reduce 61 - - -state 161 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - LValue : Expr '[' Expr . ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - ']' shift 177 - '?' shift 128 - . error - - -state 162 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - Expr : Expr '?' Expr . ':' Expr (81) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - '?' shift 128 - ':' shift 178 - . error - - -state 163 - SimpleStmt : LValue '=' Expr . (43) - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - '?' shift 128 - ';' reduce 43 - ')' reduce 43 - - -state 164 - Call : Receiver IDENTIFIER '(' . Actuals ')' (50) - Receiver : . (47) - Actuals : . (86) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - ')' reduce 86 - - Expr goto 139 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Actuals goto 179 - Constant goto 83 - ExprList goto 180 - - -state 165 - WhileStmt : WHILE '(' Expr ')' . Stmt (89) - SimpleStmt : . (45) - Receiver : . (47) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - NULL shift 46 - THIS shift 47 - WHILE shift 48 - FOR shift 49 - IF shift 50 - RETURN shift 51 - BREAK shift 52 - NEW shift 53 - PRINT shift 54 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - DO shift 62 - '-' shift 63 - '!' shift 64 - '(' shift 65 - '{' shift 41 - IDENTIFIER reduce 47 - ';' reduce 45 - - VariableDef goto 67 - Variable goto 20 - Type goto 33 - StmtBlock goto 68 - Stmt goto 181 - SimpleStmt goto 70 - IfStmt goto 71 - WhileStmt goto 72 - ForStmt goto 73 - ReturnStmt goto 74 - PrintStmt goto 75 - BreakStmt goto 76 - GuardedIFStmt goto 77 - GuaededDOStmt goto 78 - Expr goto 79 - LValue goto 80 - Call goto 81 - Receiver goto 82 - Constant goto 83 - - -state 166 - ForStmt : FOR '(' SimpleStmt ';' . Expr ';' SimpleStmt ')' Stmt (90) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 182 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 167 - Expr : '(' Expr ')' . (67) - IfStmt : IF '(' Expr ')' . Stmt ElseClause (92) - SimpleStmt : . (45) - Receiver : . (47) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - NULL shift 46 - THIS shift 47 - WHILE shift 48 - FOR shift 49 - IF shift 50 - RETURN shift 51 - BREAK shift 52 - NEW shift 53 - PRINT shift 54 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DO shift 62 - '!' shift 64 - '(' shift 65 - '{' shift 41 - IDENTIFIER reduce 47 - AND reduce 67 - OR reduce 67 - LESS_EQUAL reduce 67 - GREATER_EQUAL reduce 67 - EQUAL reduce 67 - NOT_EQUAL reduce 67 - DOUBLE_PLUS reduce 67 - DOUBLE_MINUS reduce 67 - '+' reduce 67 - '-' reduce 67 - '*' reduce 67 - '/' reduce 67 - '%' reduce 67 - '>' reduce 67 - '<' reduce 67 - '.' reduce 67 - ';' reduce 45 - '[' reduce 67 - '?' reduce 67 - ':' reduce 67 - - VariableDef goto 67 - Variable goto 20 - Type goto 33 - StmtBlock goto 68 - Stmt goto 183 - SimpleStmt goto 70 - IfStmt goto 71 - WhileStmt goto 72 - ForStmt goto 73 - ReturnStmt goto 74 - PrintStmt goto 75 - BreakStmt goto 76 - GuardedIFStmt goto 77 - GuaededDOStmt goto 78 - Expr goto 79 - LValue goto 80 - Call goto 81 - Receiver goto 82 - Constant goto 83 - - -state 168 - GuardedES : Expr ':' Stmt . (38) - - . reduce 38 - - -state 169 - GuardedStmts : GuardedStmts TRIBLE_OR GuardedES . (40) - - . reduce 40 - - -state 170 - Expr : NEW IDENTIFIER '(' ')' . (73) - - . reduce 73 - - -state 171 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : NEW Type '[' Expr . ']' (74) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - ']' shift 184 - '?' shift 128 - . error - - -state 172 - ExprList : ExprList ',' . Expr (87) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 185 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 173 - PrintStmt : PRINT '(' ExprList ')' . (97) - - . reduce 97 - - -state 174 - Expr : INSTANCEOF '(' Expr ',' . IDENTIFIER ')' (75) - - IDENTIFIER shift 186 - . error - - -state 175 - Expr : NUMINSTANCES '(' IDENTIFIER ')' . (82) - - . reduce 82 - - -state 176 - Expr : '(' CLASS IDENTIFIER ')' . Expr (76) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 187 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 177 - LValue : Expr '[' Expr ']' . (49) - - . reduce 49 - - -state 178 - Expr : Expr '?' Expr ':' . Expr (81) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 188 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 179 - Call : Receiver IDENTIFIER '(' Actuals . ')' (50) - - ')' shift 189 - . error - - -state 180 - Actuals : ExprList . (85) - ExprList : ExprList . ',' Expr (87) - - ',' shift 172 - ')' reduce 85 - - -state 181 - WhileStmt : WHILE '(' Expr ')' Stmt . (89) - - . reduce 89 - - -state 182 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - ForStmt : FOR '(' SimpleStmt ';' Expr . ';' SimpleStmt ')' Stmt (90) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - ';' shift 190 - '[' shift 127 - '?' shift 128 - . error - - -state 183 - IfStmt : IF '(' Expr ')' Stmt . ElseClause (92) - ElseClause : . (94) - - ELSE shift 191 - VOID reduce 94 - BOOL reduce 94 - INT reduce 94 - STRING reduce 94 - CLASS reduce 94 - NULL reduce 94 - THIS reduce 94 - WHILE reduce 94 - FOR reduce 94 - IF reduce 94 - RETURN reduce 94 - BREAK reduce 94 - NEW reduce 94 - PRINT reduce 94 - READ_INTEGER reduce 94 - READ_LINE reduce 94 - LITERAL reduce 94 - IDENTIFIER reduce 94 - INSTANCEOF reduce 94 - NUMINSTANCES reduce 94 - DOUBLE_PLUS reduce 94 - DOUBLE_MINUS reduce 94 - FI reduce 94 - TRIBLE_OR reduce 94 - DO reduce 94 - OD reduce 94 - '-' reduce 94 - ';' reduce 94 - '!' reduce 94 - '(' reduce 94 - '{' reduce 94 - '}' reduce 94 - - ElseClause goto 192 - - -state 184 - Expr : NEW Type '[' Expr ']' . (74) - - . reduce 74 - - -state 185 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - ExprList : ExprList ',' Expr . (87) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - '?' shift 128 - ',' reduce 87 - ')' reduce 87 - - -state 186 - Expr : INSTANCEOF '(' Expr ',' IDENTIFIER . ')' (75) - - ')' shift 193 - . error - - -state 187 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : '(' CLASS IDENTIFIER ')' Expr . (76) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - . reduce 76 - - -188: shift/reduce conflict (shift 111, reduce 81) on AND -188: shift/reduce conflict (shift 112, reduce 81) on OR -188: shift/reduce conflict (shift 113, reduce 81) on LESS_EQUAL -188: shift/reduce conflict (shift 114, reduce 81) on GREATER_EQUAL -188: shift/reduce conflict (shift 115, reduce 81) on EQUAL -188: shift/reduce conflict (shift 116, reduce 81) on NOT_EQUAL -188: shift/reduce conflict (shift 117, reduce 81) on DOUBLE_PLUS -188: shift/reduce conflict (shift 118, reduce 81) on DOUBLE_MINUS -188: shift/reduce conflict (shift 119, reduce 81) on '+' -188: shift/reduce conflict (shift 120, reduce 81) on '-' -188: shift/reduce conflict (shift 121, reduce 81) on '*' -188: shift/reduce conflict (shift 122, reduce 81) on '/' -188: shift/reduce conflict (shift 123, reduce 81) on '%' -188: shift/reduce conflict (shift 124, reduce 81) on '>' -188: shift/reduce conflict (shift 125, reduce 81) on '<' -188: shift/reduce conflict (shift 126, reduce 81) on '.' -188: shift/reduce conflict (shift 127, reduce 81) on '[' -188: shift/reduce conflict (shift 128, reduce 81) on '?' -state 188 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - Expr : Expr '?' Expr ':' Expr . (81) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - '?' shift 128 - ',' reduce 81 - ';' reduce 81 - ')' reduce 81 - ']' reduce 81 - ':' reduce 81 - - -state 189 - Call : Receiver IDENTIFIER '(' Actuals ')' . (50) - - . reduce 50 - - -state 190 - ForStmt : FOR '(' SimpleStmt ';' Expr ';' . SimpleStmt ')' Stmt (90) - SimpleStmt : . (45) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - ')' reduce 45 - - SimpleStmt goto 194 - Expr goto 79 - LValue goto 80 - Call goto 81 - Receiver goto 82 - Constant goto 83 - - -state 191 - ElseClause : ELSE . Stmt (93) - SimpleStmt : . (45) - Receiver : . (47) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - NULL shift 46 - THIS shift 47 - WHILE shift 48 - FOR shift 49 - IF shift 50 - RETURN shift 51 - BREAK shift 52 - NEW shift 53 - PRINT shift 54 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - DO shift 62 - '-' shift 63 - '!' shift 64 - '(' shift 65 - '{' shift 41 - IDENTIFIER reduce 47 - ';' reduce 45 - - VariableDef goto 67 - Variable goto 20 - Type goto 33 - StmtBlock goto 68 - Stmt goto 195 - SimpleStmt goto 70 - IfStmt goto 71 - WhileStmt goto 72 - ForStmt goto 73 - ReturnStmt goto 74 - PrintStmt goto 75 - BreakStmt goto 76 - GuardedIFStmt goto 77 - GuaededDOStmt goto 78 - Expr goto 79 - LValue goto 80 - Call goto 81 - Receiver goto 82 - Constant goto 83 - - -state 192 - IfStmt : IF '(' Expr ')' Stmt ElseClause . (92) - - . reduce 92 - - -state 193 - Expr : INSTANCEOF '(' Expr ',' IDENTIFIER ')' . (75) - - . reduce 75 - - -state 194 - ForStmt : FOR '(' SimpleStmt ';' Expr ';' SimpleStmt . ')' Stmt (90) - - ')' shift 196 - . error - - -state 195 - ElseClause : ELSE Stmt . (93) - - . reduce 93 - - -state 196 - ForStmt : FOR '(' SimpleStmt ';' Expr ';' SimpleStmt ')' . Stmt (90) - SimpleStmt : . (45) - Receiver : . (47) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - NULL shift 46 - THIS shift 47 - WHILE shift 48 - FOR shift 49 - IF shift 50 - RETURN shift 51 - BREAK shift 52 - NEW shift 53 - PRINT shift 54 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - DO shift 62 - '-' shift 63 - '!' shift 64 - '(' shift 65 - '{' shift 41 - IDENTIFIER reduce 47 - ';' reduce 45 - - VariableDef goto 67 - Variable goto 20 - Type goto 33 - StmtBlock goto 68 - Stmt goto 197 - SimpleStmt goto 70 - IfStmt goto 71 - WhileStmt goto 72 - ForStmt goto 73 - ReturnStmt goto 74 - PrintStmt goto 75 - BreakStmt goto 76 - GuardedIFStmt goto 77 - GuaededDOStmt goto 78 - Expr goto 79 - LValue goto 80 - Call goto 81 - Receiver goto 82 - Constant goto 83 - - -state 197 - ForStmt : FOR '(' SimpleStmt ';' Expr ';' SimpleStmt ')' Stmt . (90) - - . reduce 90 - - -State 188 contains 18 shift/reduce conflicts. - - -59 terminals, 34 nonterminals -98 grammar rules, 198 states diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/frontend/Parser.y" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/frontend/Parser.y" deleted file mode 100644 index f537e6d31..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/frontend/Parser.y" +++ /dev/null @@ -1,508 +0,0 @@ -/* - * 本文件提供实现Decaf编译器所需要的BYACC脚本。 - * 在第一阶段中你需要补充完整这个文件中的语法规则。 - * 请参考"YACC--Yet Another Compiler Compiler"中关于如何编写BYACC脚本的说明。 - * - * Keltin Leung - * DCST, Tsinghua University - */ - -%{ -package decaf.frontend; - -import decaf.tree.Tree; -import decaf.tree.Tree.*; -import decaf.error.*; -import java.util.*; -%} - -%Jclass Parser -%Jextends BaseParser -%Jsemantic SemValue -%Jimplements ReduceListener -%Jnorun -%Jnodebug -%Jnoconstruct - -%token VOID BOOL INT STRING CLASS -%token NULL EXTENDS THIS WHILE FOR -%token IF ELSE RETURN BREAK NEW -%token PRINT READ_INTEGER READ_LINE -%token LITERAL -%token IDENTIFIER AND OR STATIC INSTANCEOF -%token NUMINSTANCES -%token LESS_EQUAL GREATER_EQUAL EQUAL NOT_EQUAL -%token DOUBLE_PLUS DOUBLE_MINUS -%token FI TRIBLE_OR DO OD -%token '+' '-' '*' '/' '%' '=' '>' '<' '.' -%token ',' ';' '!' '(' ')' '[' ']' '{' '}' -%token '?' ':' - -%right '?' -%left OR -%left AND -%nonassoc EQUAL NOT_EQUAL -%nonassoc LESS_EQUAL GREATER_EQUAL '<' '>' -%left '+' '-' -%left '*' '/' '%' -%nonassoc UMINUS '!' -%nonassoc DOUBLE_PLUS DOUBLE_MINUS -%nonassoc '[' '.' -%nonassoc ')' EMPTY -%nonassoc ELSE - -%start Program - -%% -Program : ClassList - { - tree = new Tree.TopLevel($1.clist, $1.loc); - } - ; - -ClassList : ClassList ClassDef - { - $$.clist.add($2.cdef); - } - | ClassDef - { - $$.clist = new ArrayList(); - $$.clist.add($1.cdef); - } - ; - -VariableDef : Variable ';' - ; - -Variable : Type IDENTIFIER - { - $$.vdef = new Tree.VarDef($2.ident, $1.type, $2.loc); - } - ; - -Type : INT - { - $$.type = new Tree.TypeIdent(Tree.INT, $1.loc); - } - | VOID - { - $$.type = new Tree.TypeIdent(Tree.VOID, $1.loc); - } - | BOOL - { - $$.type = new Tree.TypeIdent(Tree.BOOL, $1.loc); - } - | STRING - { - $$.type = new Tree.TypeIdent(Tree.STRING, $1.loc); - } - | CLASS IDENTIFIER - { - $$.type = new Tree.TypeClass($2.ident, $1.loc); - } - | Type '[' ']' - { - $$.type = new Tree.TypeArray($1.type, $1.loc); - } - ; - -ClassDef : CLASS IDENTIFIER ExtendsClause '{' FieldList '}' - { - $$.cdef = new Tree.ClassDef($2.ident, $3.ident, $5.flist, $1.loc); - } - ; - -ExtendsClause : EXTENDS IDENTIFIER - { - $$.ident = $2.ident; - } - | /* empty */ - { - $$ = new SemValue(); - } - ; - -FieldList : FieldList VariableDef - { - $$.flist.add($2.vdef); - } - | FieldList FunctionDef - { - $$.flist.add($2.fdef); - } - | /* empty */ - { - $$ = new SemValue(); - $$.flist = new ArrayList(); - } - ; - -Formals : VariableList - | /* empty */ - { - $$ = new SemValue(); - $$.vlist = new ArrayList(); - } - ; - -VariableList : VariableList ',' Variable - { - $$.vlist.add($3.vdef); - } - | Variable - { - $$.vlist = new ArrayList(); - $$.vlist.add($1.vdef); - } - ; - -FunctionDef : STATIC Type IDENTIFIER '(' Formals ')' StmtBlock - { - $$.fdef = new MethodDef(true, $3.ident, $2.type, $5.vlist, (Block) $7.stmt, $3.loc); - } - | Type IDENTIFIER '(' Formals ')' StmtBlock - { - $$.fdef = new MethodDef(false, $2.ident, $1.type, $4.vlist, (Block) $6.stmt, $2.loc); - } - ; - -StmtBlock : '{' StmtList '}' - { - $$.stmt = new Block($2.slist, $1.loc); - } - ; - -StmtList : StmtList Stmt - { - $$.slist.add($2.stmt); - } - | /* empty */ - { - $$ = new SemValue(); - $$.slist = new ArrayList(); - } - ; - -Stmt : VariableDef - { - $$.stmt = $1.vdef; - } - - | SimpleStmt ';' - { - if ($$.stmt == null) { - $$.stmt = new Tree.Skip($2.loc); - } - } - | IfStmt - | WhileStmt - | ForStmt - | ReturnStmt ';' - | PrintStmt ';' - | BreakStmt ';' - | StmtBlock - | GuardedIFStmt - | GuaededDOStmt - ; - -GuardedES : Expr ':' Stmt - { - $$.guardedES = new Tree.GuardedES($1.expr , $3.stmt , $2.loc); - } - ; - -GuardedStmts : GuardedES - { - - $$.myList = new ArrayList(); - $$.myList.add($1.guardedES); - } - | - GuardedStmts TRIBLE_OR GuardedES - { - - $$.myList.add($3.guardedES); - } - ; - -GuardedIFStmt : IF GuardedStmts FI - { - $$.stmt = new Tree.GuardedIFStmt($2.myList , $1.loc); - } - ; - -GuaededDOStmt : DO GuardedStmts OD - { - $$.stmt = new Tree.GuardedDOStmt($2.myList , $1.loc); - } - ; - -SimpleStmt : LValue '=' Expr - { - $$.stmt = new Tree.Assign($1.lvalue, $3.expr, $2.loc); - } - | Call - { - $$.stmt = new Tree.Exec($1.expr, $1.loc); - } - | /* empty */ - { - $$ = new SemValue(); - } - ; - -Receiver : Expr '.' - | /* empty */ - { - $$ = new SemValue(); - } - ; - -LValue : Receiver IDENTIFIER - { - $$.lvalue = new Tree.Ident($1.expr, $2.ident, $2.loc); - if ($1.loc == null) { - $$.loc = $2.loc; - } - } - | Expr '[' Expr ']' - { - $$.lvalue = new Tree.Indexed($1.expr, $3.expr, $1.loc); - } - ; - -Call : Receiver IDENTIFIER '(' Actuals ')' - { - $$.expr = new Tree.CallExpr($1.expr, $2.ident, $4.elist, $2.loc); - if ($1.loc == null) { - $$.loc = $2.loc; - } - } - ; - -Expr : LValue - { - $$.expr = $1.lvalue; - } - | Call - | Constant - | Expr '+' Expr - { - $$.expr = new Tree.Binary(Tree.PLUS, $1.expr, $3.expr, $2.loc); - } - | Expr '-' Expr - { - $$.expr = new Tree.Binary(Tree.MINUS, $1.expr, $3.expr, $2.loc); - } - | Expr '*' Expr - { - $$.expr = new Tree.Binary(Tree.MUL, $1.expr, $3.expr, $2.loc); - } - | Expr '/' Expr - { - $$.expr = new Tree.Binary(Tree.DIV, $1.expr, $3.expr, $2.loc); - } - | Expr '%' Expr - { - $$.expr = new Tree.Binary(Tree.MOD, $1.expr, $3.expr, $2.loc); - } - | Expr EQUAL Expr - { - $$.expr = new Tree.Binary(Tree.EQ, $1.expr, $3.expr, $2.loc); - } - | Expr NOT_EQUAL Expr - { - $$.expr = new Tree.Binary(Tree.NE, $1.expr, $3.expr, $2.loc); - } - | Expr '<' Expr - { - $$.expr = new Tree.Binary(Tree.LT, $1.expr, $3.expr, $2.loc); - } - | Expr '>' Expr - { - $$.expr = new Tree.Binary(Tree.GT, $1.expr, $3.expr, $2.loc); - } - | Expr LESS_EQUAL Expr - { - $$.expr = new Tree.Binary(Tree.LE, $1.expr, $3.expr, $2.loc); - } - | Expr GREATER_EQUAL Expr - { - $$.expr = new Tree.Binary(Tree.GE, $1.expr, $3.expr, $2.loc); - } - | Expr AND Expr - { - $$.expr = new Tree.Binary(Tree.AND, $1.expr, $3.expr, $2.loc); - } - | Expr OR Expr - { - $$.expr = new Tree.Binary(Tree.OR, $1.expr, $3.expr, $2.loc); - } - | '(' Expr ')' - { - $$ = $2; - } - | '-' Expr %prec UMINUS - { - $$.expr = new Tree.Unary(Tree.NEG, $2.expr, $1.loc); - } - | '!' Expr - { - $$.expr = new Tree.Unary(Tree.NOT, $2.expr, $1.loc); - } - | READ_INTEGER '(' ')' - { - $$.expr = new Tree.ReadIntExpr($1.loc); - } - | READ_LINE '(' ')' - { - $$.expr = new Tree.ReadLineExpr($1.loc); - } - | THIS - { - $$.expr = new Tree.ThisExpr($1.loc); - } - | NEW IDENTIFIER '(' ')' - { - $$.expr = new Tree.NewClass($2.ident, $1.loc); - } - | NEW Type '[' Expr ']' - { - $$.expr = new Tree.NewArray($2.type, $4.expr, $1.loc); - } - | INSTANCEOF '(' Expr ',' IDENTIFIER ')' - { - $$.expr = new Tree.TypeTest($3.expr, $5.ident, $1.loc); - } - | '(' CLASS IDENTIFIER ')' Expr - { - $$.expr = new Tree.TypeCast($3.ident, $5.expr, $5.loc); - } - | Expr DOUBLE_PLUS - { - $$.expr = new Tree.Unary(Tree.POSTINC, $1.expr, $2.loc); - } - | DOUBLE_PLUS Expr - { - $$.expr = new Tree.Unary(Tree.PREINC, $2.expr, $1.loc); - } - | Expr DOUBLE_MINUS - { - $$.expr = new Tree.Unary(Tree.POSTDEC, $1.expr, $2.loc); - } - | DOUBLE_MINUS Expr - { - $$.expr = new Tree.Unary(Tree.PREDEC, $2.expr, $1.loc); - } - | Expr '?' Expr ':' Expr - { - $$.expr = new Tree.QuestionAndColon(Tree.QUESTION_COLON, $1.expr, $3.expr, $5.expr, $1.loc); - } - | NUMINSTANCES '(' IDENTIFIER ')' - { - $$.expr = new Tree.NumTest($3.ident, $1.loc); - } - ; - -Constant : LITERAL - { - $$.expr = new Tree.Literal($1.typeTag, $1.literal, $1.loc); - } - | NULL - { - $$.expr = new Null($1.loc); - } - ; - -Actuals : ExprList - | /* empty */ - { - $$ = new SemValue(); - $$.elist = new ArrayList(); - } - ; - -ExprList : ExprList ',' Expr - { - $$.elist.add($3.expr); - } - | Expr - { - $$.elist = new ArrayList(); - $$.elist.add($1.expr); - } - ; - -WhileStmt : WHILE '(' Expr ')' Stmt - { - $$.stmt = new Tree.WhileLoop($3.expr, $5.stmt, $1.loc); - } - ; - -ForStmt : FOR '(' SimpleStmt ';' Expr ';' SimpleStmt ')' Stmt - { - $$.stmt = new Tree.ForLoop($3.stmt, $5.expr, $7.stmt, $9.stmt, $1.loc); - } - ; - -BreakStmt : BREAK - { - $$.stmt = new Tree.Break($1.loc); - } - ; - -IfStmt : IF '(' Expr ')' Stmt ElseClause - { - $$.stmt = new Tree.If($3.expr, $5.stmt, $6.stmt, $1.loc); - } - ; - -ElseClause : ELSE Stmt - { - $$.stmt = $2.stmt; - } - | /* empty */ %prec EMPTY - { - $$ = new SemValue(); - } - ; - -ReturnStmt : RETURN Expr - { - $$.stmt = new Tree.Return($2.expr, $1.loc); - } - | RETURN - { - $$.stmt = new Tree.Return(null, $1.loc); - } - ; - -PrintStmt : PRINT '(' ExprList ')' - { - $$.stmt = new Print($3.elist, $1.loc); - } - ; - -%% - - /** - * 打印当前归约所用的语法规则
- * 请勿修改。 - */ - public boolean onReduce(String rule) { - if (rule.startsWith("$$")) - return false; - else - rule = rule.replaceAll(" \\$\\$\\d+", ""); - - if (rule.endsWith(":")) - System.out.println(rule + " "); - else - System.out.println(rule); - return false; - } - - public void diagnose() { - addReduceListener(this); - yyparse(); - } \ No newline at end of file diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/frontend/ParserHelper.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/frontend/ParserHelper.class" deleted file mode 100644 index f59f53bb0..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/frontend/ParserHelper.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/frontend/ReduceListener.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/frontend/ReduceListener.class" deleted file mode 100644 index dbc983372..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/frontend/ReduceListener.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/frontend/SemValue.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/frontend/SemValue.class" deleted file mode 100644 index a767bf30f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/frontend/SemValue.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Apply.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Apply.class" deleted file mode 100644 index f3b2a59c6..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Apply.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Assign.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Assign.class" deleted file mode 100644 index f1121e34f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Assign.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Binary.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Binary.class" deleted file mode 100644 index 2b0bc164d..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Binary.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Block.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Block.class" deleted file mode 100644 index 12c4a5769..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Block.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Break.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Break.class" deleted file mode 100644 index 3447eda6f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Break.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$CallExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$CallExpr.class" deleted file mode 100644 index b517b368e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$CallExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$ClassDef.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$ClassDef.class" deleted file mode 100644 index 9869b3094..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$ClassDef.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Exec.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Exec.class" deleted file mode 100644 index 7bf7ea541..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Exec.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Expr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Expr.class" deleted file mode 100644 index dabdc585b..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Expr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$ForLoop.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$ForLoop.class" deleted file mode 100644 index 025574abb..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$ForLoop.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$GuardedDOStmt.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$GuardedDOStmt.class" deleted file mode 100644 index 77ca4ed4c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$GuardedDOStmt.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$GuardedES.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$GuardedES.class" deleted file mode 100644 index de79ce0f8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$GuardedES.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$GuardedIFStmt.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$GuardedIFStmt.class" deleted file mode 100644 index 0de7db93b..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$GuardedIFStmt.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Ident.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Ident.class" deleted file mode 100644 index c0af5cfb8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Ident.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$If.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$If.class" deleted file mode 100644 index 4dd73e07f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$If.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Indexed.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Indexed.class" deleted file mode 100644 index a3873444d..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Indexed.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$LValue$Kind.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$LValue$Kind.class" deleted file mode 100644 index 5202a64c8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$LValue$Kind.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$LValue.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$LValue.class" deleted file mode 100644 index 62758d5db..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$LValue.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Literal.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Literal.class" deleted file mode 100644 index e692b4d64..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Literal.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$MethodDef.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$MethodDef.class" deleted file mode 100644 index f460205dd..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$MethodDef.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$NewArray.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$NewArray.class" deleted file mode 100644 index 3d68537b3..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$NewArray.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$NewClass.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$NewClass.class" deleted file mode 100644 index fac18d740..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$NewClass.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Null.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Null.class" deleted file mode 100644 index a8038a127..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Null.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$NumTest.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$NumTest.class" deleted file mode 100644 index 2743edc25..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$NumTest.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Print.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Print.class" deleted file mode 100644 index d37262c88..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Print.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$QuestionAndColon.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$QuestionAndColon.class" deleted file mode 100644 index b32d1e545..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$QuestionAndColon.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$ReadIntExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$ReadIntExpr.class" deleted file mode 100644 index 67befdb4d..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$ReadIntExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$ReadLineExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$ReadLineExpr.class" deleted file mode 100644 index b381c0551..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$ReadLineExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Return.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Return.class" deleted file mode 100644 index b200c68d0..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Return.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Skip.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Skip.class" deleted file mode 100644 index a29eda939..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Skip.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$ThisExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$ThisExpr.class" deleted file mode 100644 index 931dc0710..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$ThisExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$TopLevel.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$TopLevel.class" deleted file mode 100644 index 2050ebdb0..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$TopLevel.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$TypeArray.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$TypeArray.class" deleted file mode 100644 index 9dad10b42..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$TypeArray.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$TypeCast.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$TypeCast.class" deleted file mode 100644 index 2d972555d..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$TypeCast.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$TypeClass.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$TypeClass.class" deleted file mode 100644 index 0d21b9e87..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$TypeClass.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$TypeIdent.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$TypeIdent.class" deleted file mode 100644 index 2d5121b44..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$TypeIdent.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$TypeLiteral.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$TypeLiteral.class" deleted file mode 100644 index 409be14ab..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$TypeLiteral.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$TypeTest.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$TypeTest.class" deleted file mode 100644 index 06f3fcc09..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$TypeTest.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Unary.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Unary.class" deleted file mode 100644 index af45d8f7f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Unary.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$VarDef.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$VarDef.class" deleted file mode 100644 index e922a5ded..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$VarDef.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Visitor.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Visitor.class" deleted file mode 100644 index b26674ff6..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$Visitor.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$WhileLoop.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$WhileLoop.class" deleted file mode 100644 index 284d9243f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree$WhileLoop.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree.class" deleted file mode 100644 index 5c0beb044..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/tree/Tree.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/utils/IndentPrintWriter.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/utils/IndentPrintWriter.class" deleted file mode 100644 index 0bd6a13a7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/utils/IndentPrintWriter.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/utils/MiscUtils.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/utils/MiscUtils.class" deleted file mode 100644 index e0645130f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/bin/decaf/utils/MiscUtils.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/Driver$1.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/Driver$1.class" deleted file mode 100644 index f034aaafe..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/Driver$1.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/Driver.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/Driver.class" deleted file mode 100644 index 7d54021f1..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/Driver.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/Location.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/Location.class" deleted file mode 100644 index 6badcb17c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/Location.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/Option$Level.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/Option$Level.class" deleted file mode 100644 index b785ae7c5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/Option$Level.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/Option.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/Option.class" deleted file mode 100644 index fd8e166a4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/Option.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/BadArgCountError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/BadArgCountError.class" deleted file mode 100644 index f662e0cf8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/BadArgCountError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/BadArgTypeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/BadArgTypeError.class" deleted file mode 100644 index 393dc7353..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/BadArgTypeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/BadArrElementError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/BadArrElementError.class" deleted file mode 100644 index 4401c85dd..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/BadArrElementError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/BadInheritanceError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/BadInheritanceError.class" deleted file mode 100644 index 25c822cb7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/BadInheritanceError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/BadLengthArgError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/BadLengthArgError.class" deleted file mode 100644 index 40a61d226..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/BadLengthArgError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/BadLengthError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/BadLengthError.class" deleted file mode 100644 index 6522300bb..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/BadLengthError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/BadNewArrayLength.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/BadNewArrayLength.class" deleted file mode 100644 index 4896b6f26..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/BadNewArrayLength.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/BadOverrideError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/BadOverrideError.class" deleted file mode 100644 index 0736b0cfb..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/BadOverrideError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/BadPrintArgError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/BadPrintArgError.class" deleted file mode 100644 index 4d3a7cffc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/BadPrintArgError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/BadReturnTypeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/BadReturnTypeError.class" deleted file mode 100644 index 5ae7b14de..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/BadReturnTypeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/BadTestExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/BadTestExpr.class" deleted file mode 100644 index 877a9c2ca..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/BadTestExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/BadVarTypeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/BadVarTypeError.class" deleted file mode 100644 index c50206763..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/BadVarTypeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/BreakOutOfLoopError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/BreakOutOfLoopError.class" deleted file mode 100644 index dd1b42e05..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/BreakOutOfLoopError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/ClassNotFoundError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/ClassNotFoundError.class" deleted file mode 100644 index 8c23cd0c6..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/ClassNotFoundError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/DecafError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/DecafError.class" deleted file mode 100644 index 56d8b7084..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/DecafError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/DeclConflictError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/DeclConflictError.class" deleted file mode 100644 index f4b87bcc4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/DeclConflictError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/FieldNotAccessError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/FieldNotAccessError.class" deleted file mode 100644 index 96111e8a6..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/FieldNotAccessError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/FieldNotFoundError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/FieldNotFoundError.class" deleted file mode 100644 index f1560c48f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/FieldNotFoundError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/IncompatBinOpError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/IncompatBinOpError.class" deleted file mode 100644 index 4bbed59e7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/IncompatBinOpError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/IncompatUnOpError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/IncompatUnOpError.class" deleted file mode 100644 index f5a9e31bc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/IncompatUnOpError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/IntTooLargeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/IntTooLargeError.class" deleted file mode 100644 index 44931104f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/IntTooLargeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/MsgError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/MsgError.class" deleted file mode 100644 index 080cb6161..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/MsgError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/NewlineInStrError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/NewlineInStrError.class" deleted file mode 100644 index 250e6b9ac..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/NewlineInStrError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/NoMainClassError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/NoMainClassError.class" deleted file mode 100644 index 4e709a981..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/NoMainClassError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/NotArrayError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/NotArrayError.class" deleted file mode 100644 index 28d40b882..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/NotArrayError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/NotClassError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/NotClassError.class" deleted file mode 100644 index 4ea6c47bc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/NotClassError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/NotClassFieldError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/NotClassFieldError.class" deleted file mode 100644 index bc05ae05a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/NotClassFieldError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/NotClassMethodError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/NotClassMethodError.class" deleted file mode 100644 index b6f9e584f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/NotClassMethodError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/OverridingVarError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/OverridingVarError.class" deleted file mode 100644 index 9f7e77981..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/OverridingVarError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/RefNonStaticError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/RefNonStaticError.class" deleted file mode 100644 index 73a781b4a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/RefNonStaticError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/RuntimeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/RuntimeError.class" deleted file mode 100644 index 55e3b77cf..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/RuntimeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/SubNotIntError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/SubNotIntError.class" deleted file mode 100644 index 364a3889a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/SubNotIntError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/ThisInStaticFuncError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/ThisInStaticFuncError.class" deleted file mode 100644 index e84ffa395..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/ThisInStaticFuncError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/UndeclVarError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/UndeclVarError.class" deleted file mode 100644 index d1945f289..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/UndeclVarError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/UnrecogCharError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/UnrecogCharError.class" deleted file mode 100644 index cf7857e28..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/UnrecogCharError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/UntermStrError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/UntermStrError.class" deleted file mode 100644 index 93edd524e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/error/UntermStrError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/frontend/BaseLexer.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/frontend/BaseLexer.class" deleted file mode 100644 index 106927055..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/frontend/BaseLexer.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/frontend/BaseParser.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/frontend/BaseParser.class" deleted file mode 100644 index b6feb2d2b..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/frontend/BaseParser.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/frontend/Lexer.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/frontend/Lexer.class" deleted file mode 100644 index 9e54762b3..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/frontend/Lexer.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/frontend/Parser.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/frontend/Parser.class" deleted file mode 100644 index 8cc059a98..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/frontend/Parser.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/frontend/ParserHelper.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/frontend/ParserHelper.class" deleted file mode 100644 index 73f1690c2..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/frontend/ParserHelper.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/frontend/ReduceListener.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/frontend/ReduceListener.class" deleted file mode 100644 index 8dc1e198c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/frontend/ReduceListener.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/frontend/SemValue.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/frontend/SemValue.class" deleted file mode 100644 index 260dadcd0..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/frontend/SemValue.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Apply.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Apply.class" deleted file mode 100644 index af0f810d3..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Apply.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Assign.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Assign.class" deleted file mode 100644 index 89a4ce9ff..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Assign.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Binary.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Binary.class" deleted file mode 100644 index 0b2b2e81c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Binary.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Block.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Block.class" deleted file mode 100644 index 5dfb9f980..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Block.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Break.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Break.class" deleted file mode 100644 index d5dfe7bb8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Break.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$CallExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$CallExpr.class" deleted file mode 100644 index 29e414622..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$CallExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$ClassDef.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$ClassDef.class" deleted file mode 100644 index 88d2846ef..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$ClassDef.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Exec.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Exec.class" deleted file mode 100644 index e61cbfa05..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Exec.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Expr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Expr.class" deleted file mode 100644 index 77d43a129..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Expr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$ForLoop.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$ForLoop.class" deleted file mode 100644 index 47e97962a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$ForLoop.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$GuardedDOStmt.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$GuardedDOStmt.class" deleted file mode 100644 index 86476f4f7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$GuardedDOStmt.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$GuardedES.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$GuardedES.class" deleted file mode 100644 index 752f2eda2..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$GuardedES.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$GuardedIFStmt.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$GuardedIFStmt.class" deleted file mode 100644 index 3ba5ebce1..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$GuardedIFStmt.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Ident.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Ident.class" deleted file mode 100644 index 2528211d1..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Ident.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$If.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$If.class" deleted file mode 100644 index a993da595..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$If.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Indexed.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Indexed.class" deleted file mode 100644 index 71b05b27e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Indexed.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$LValue$Kind.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$LValue$Kind.class" deleted file mode 100644 index c9e5aa410..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$LValue$Kind.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$LValue.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$LValue.class" deleted file mode 100644 index c332b86c7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$LValue.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Literal.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Literal.class" deleted file mode 100644 index 77d3f4912..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Literal.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$MethodDef.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$MethodDef.class" deleted file mode 100644 index 42d611ab8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$MethodDef.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$NewArray.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$NewArray.class" deleted file mode 100644 index 018610fd3..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$NewArray.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$NewClass.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$NewClass.class" deleted file mode 100644 index 1ecbc75d6..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$NewClass.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Null.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Null.class" deleted file mode 100644 index 9157e7766..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Null.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$NumTest.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$NumTest.class" deleted file mode 100644 index ae6a0bd28..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$NumTest.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Print.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Print.class" deleted file mode 100644 index 5c53f460b..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Print.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$QuestionAndColon.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$QuestionAndColon.class" deleted file mode 100644 index 8531d7f19..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$QuestionAndColon.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$ReadIntExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$ReadIntExpr.class" deleted file mode 100644 index b05c744e1..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$ReadIntExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$ReadLineExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$ReadLineExpr.class" deleted file mode 100644 index 176f7a402..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$ReadLineExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Return.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Return.class" deleted file mode 100644 index 555d539cc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Return.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Skip.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Skip.class" deleted file mode 100644 index 8646abaed..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Skip.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$ThisExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$ThisExpr.class" deleted file mode 100644 index 4f7832702..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$ThisExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$TopLevel.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$TopLevel.class" deleted file mode 100644 index 10d7e1452..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$TopLevel.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$TypeArray.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$TypeArray.class" deleted file mode 100644 index 7e020ea27..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$TypeArray.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$TypeCast.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$TypeCast.class" deleted file mode 100644 index 6f4dcc7b8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$TypeCast.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$TypeClass.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$TypeClass.class" deleted file mode 100644 index 379c016f2..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$TypeClass.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$TypeIdent.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$TypeIdent.class" deleted file mode 100644 index c1f1b6063..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$TypeIdent.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$TypeLiteral.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$TypeLiteral.class" deleted file mode 100644 index 405713dbd..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$TypeLiteral.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$TypeTest.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$TypeTest.class" deleted file mode 100644 index 03c1f7481..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$TypeTest.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Unary.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Unary.class" deleted file mode 100644 index 7a4d21e7e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Unary.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$VarDef.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$VarDef.class" deleted file mode 100644 index 09bbab495..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$VarDef.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Visitor.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Visitor.class" deleted file mode 100644 index a267ebd4d..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$Visitor.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$WhileLoop.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$WhileLoop.class" deleted file mode 100644 index d672b72e6..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree$WhileLoop.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree.class" deleted file mode 100644 index 9ddce6a4f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/tree/Tree.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/utils/IndentPrintWriter.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/utils/IndentPrintWriter.class" deleted file mode 100644 index 5b7d47cfe..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/utils/IndentPrintWriter.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/utils/MiscUtils.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/utils/MiscUtils.class" deleted file mode 100644 index c8920db8c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA1/result/bin/decaf/utils/MiscUtils.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/Driver$1.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/Driver$1.class" deleted file mode 100644 index 97974addf..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/Driver$1.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/Driver.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/Driver.class" deleted file mode 100644 index 98d9547f0..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/Driver.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/Location.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/Location.class" deleted file mode 100644 index 3af1de5dc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/Location.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/Option$Level.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/Option$Level.class" deleted file mode 100644 index cd57a54fd..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/Option$Level.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/Option.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/Option.class" deleted file mode 100644 index 587df0bd8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/Option.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/BadArgCountError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/BadArgCountError.class" deleted file mode 100644 index 62d4c7e5a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/BadArgCountError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/BadArgTypeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/BadArgTypeError.class" deleted file mode 100644 index e7ab06ac5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/BadArgTypeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/BadArrElementError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/BadArrElementError.class" deleted file mode 100644 index ab43b7306..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/BadArrElementError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/BadInheritanceError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/BadInheritanceError.class" deleted file mode 100644 index 231953b26..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/BadInheritanceError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/BadLengthArgError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/BadLengthArgError.class" deleted file mode 100644 index a774247a2..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/BadLengthArgError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/BadLengthError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/BadLengthError.class" deleted file mode 100644 index b4d946ed3..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/BadLengthError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/BadNewArrayLength.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/BadNewArrayLength.class" deleted file mode 100644 index b868a4bc5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/BadNewArrayLength.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/BadOverrideError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/BadOverrideError.class" deleted file mode 100644 index 77df4ddb9..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/BadOverrideError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/BadPrintArgError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/BadPrintArgError.class" deleted file mode 100644 index 06069b8d7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/BadPrintArgError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/BadReturnTypeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/BadReturnTypeError.class" deleted file mode 100644 index eee796086..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/BadReturnTypeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/BadTestExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/BadTestExpr.class" deleted file mode 100644 index 3708efa02..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/BadTestExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/BadVarTypeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/BadVarTypeError.class" deleted file mode 100644 index 8536cf723..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/BadVarTypeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/BreakOutOfLoopError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/BreakOutOfLoopError.class" deleted file mode 100644 index 596de2e0c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/BreakOutOfLoopError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/ClassNotFoundError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/ClassNotFoundError.class" deleted file mode 100644 index a513b49ac..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/ClassNotFoundError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/DecafError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/DecafError.class" deleted file mode 100644 index 8d792b1b7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/DecafError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/DeclConflictError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/DeclConflictError.class" deleted file mode 100644 index f125b9b92..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/DeclConflictError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/DifferentTypeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/DifferentTypeError.class" deleted file mode 100644 index 71a044a01..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/DifferentTypeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/FieldNotAccessError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/FieldNotAccessError.class" deleted file mode 100644 index 1903553c4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/FieldNotAccessError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/FieldNotFoundError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/FieldNotFoundError.class" deleted file mode 100644 index c7791c9cf..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/FieldNotFoundError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/IncompatBinOpError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/IncompatBinOpError.class" deleted file mode 100644 index c3595bbda..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/IncompatBinOpError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/IncompatUnOpError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/IncompatUnOpError.class" deleted file mode 100644 index a86e3f449..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/IncompatUnOpError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/IntTooLargeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/IntTooLargeError.class" deleted file mode 100644 index 598a0b28c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/IntTooLargeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/MsgError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/MsgError.class" deleted file mode 100644 index 60ccd4898..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/MsgError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/NewlineInStrError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/NewlineInStrError.class" deleted file mode 100644 index 6568e7683..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/NewlineInStrError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/NoMainClassError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/NoMainClassError.class" deleted file mode 100644 index b3717b7f4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/NoMainClassError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/NotArrayError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/NotArrayError.class" deleted file mode 100644 index fb86c4eb6..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/NotArrayError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/NotClassError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/NotClassError.class" deleted file mode 100644 index f69933161..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/NotClassError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/NotClassFieldError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/NotClassFieldError.class" deleted file mode 100644 index 05ce115b1..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/NotClassFieldError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/NotClassMethodError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/NotClassMethodError.class" deleted file mode 100644 index 238090b9c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/NotClassMethodError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/OverridingVarError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/OverridingVarError.class" deleted file mode 100644 index 41fb1522a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/OverridingVarError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/RefNonStaticError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/RefNonStaticError.class" deleted file mode 100644 index 20adfbb06..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/RefNonStaticError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/RuntimeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/RuntimeError.class" deleted file mode 100644 index 899393a9e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/RuntimeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/SubNotIntError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/SubNotIntError.class" deleted file mode 100644 index 1c042cda4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/SubNotIntError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/ThisInStaticFuncError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/ThisInStaticFuncError.class" deleted file mode 100644 index 7751be2e5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/ThisInStaticFuncError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/UndeclVarError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/UndeclVarError.class" deleted file mode 100644 index fe57e45e2..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/UndeclVarError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/UnrecogCharError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/UnrecogCharError.class" deleted file mode 100644 index cb9cc03ed..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/UnrecogCharError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/UntermStrError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/UntermStrError.class" deleted file mode 100644 index 4ef47d6b4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/error/UntermStrError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/frontend/BaseLexer.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/frontend/BaseLexer.class" deleted file mode 100644 index 0fc4c1a67..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/frontend/BaseLexer.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/frontend/BaseParser.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/frontend/BaseParser.class" deleted file mode 100644 index d6b562318..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/frontend/BaseParser.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/frontend/Lexer.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/frontend/Lexer.class" deleted file mode 100644 index 3d5537276..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/frontend/Lexer.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/frontend/Lexer.l" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/frontend/Lexer.l" deleted file mode 100644 index 72c0af5d4..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/frontend/Lexer.l" +++ /dev/null @@ -1,114 +0,0 @@ -/* - * 本文件是构造Decaf编译器所需要的JFlex输入脚本。 - * 在第一阶段,你需要完成这个脚本的内容,请参考"JFlex Manual"中关于如何编写JFlex脚本的说明。 - * - * 注意:在UNIX系统下你需要保证这个文件使用UNIX文本格式,可使用dos2unix命令进行文本各式转换。 - */ - -package decaf.frontend; - -import decaf.Location; -import decaf.error.*; -import decaf.utils.MiscUtils; - -%% -%public -%class Lexer -%extends BaseLexer -%byaccj -%line -%column -%switch -%unicode - -%{ - private Location sloc = null; - private StringBuilder buffer = new StringBuilder(); - - public Location getLocation() { - return new decaf.Location(yyline + 1, yycolumn + 1); - } -%} - -NEWLINE = (\r|\n|\r\n) -DIGIT = ([0-9]) -HEX_DIGIT = ([0-9A-Fa-f]) -HEX_INTEGER = (0[Xx]{HEX_DIGIT}+) -DEC_INTEGER = ({DIGIT}+) -INTEGER = ({HEX_INTEGER}|{DEC_INTEGER}) -IDENTIFIER = ([A-Za-z][_0-9A-Za-z]*) -SIMPLE_OPERATOR = ("+"|"-"|"*"|"/"|"%"|"="|"<"|">"|"."|","|";"|"!"|"("|")"|"["|"]"|"{"|"}"|"?"|":") -S_COMMENT = ("//"[^\r\n]*{NEWLINE}) -WHITESPACE = ([ \t]+) - - // 开始条件S表示字符串 -%x S - -%% - // 识别注释和空白字符的规则 -{WHITESPACE} { /* Just ignore */ } -{NEWLINE} { /* Just ignore */ } -{S_COMMENT} { /* Just ignore */ } - - - // 识别关键字的规则 -"void" { return keyword(Parser.VOID); } -"int" { return keyword(Parser.INT); } -"bool" { return keyword(Parser.BOOL); } -"string" { return keyword(Parser.STRING); } -"new" { return keyword(Parser.NEW); } -"null" { return keyword(Parser.NULL); } -"class" { return keyword(Parser.CLASS); } -"extends" { return keyword(Parser.EXTENDS); } -"this" { return keyword(Parser.THIS); } -"while" { return keyword(Parser.WHILE); } -"for" { return keyword(Parser.FOR); } -"if" { return keyword(Parser.IF); } -"else" { return keyword(Parser.ELSE); } -"return" { return keyword(Parser.RETURN); } -"break" { return keyword(Parser.BREAK); } -"Print" { return keyword(Parser.PRINT); } -"ReadInteger" { return keyword(Parser.READ_INTEGER); } -"ReadLine" { return keyword(Parser.READ_LINE); } -"static" { return keyword(Parser.STATIC); } -"instanceof" { return keyword(Parser.INSTANCEOF); } -"numinstances" { return keyword(Parser.NUMINSTANCES); } -"fi" { return keyword(Parser.FI); } -"od" { return keyword(Parser.OD); } -"do" { return keyword(Parser.DO); } - - // 识别操作符的规则 -"<=" { return operator(Parser.LESS_EQUAL); } -">=" { return operator(Parser.GREATER_EQUAL);} -"==" { return operator(Parser.EQUAL); } -"!=" { return operator(Parser.NOT_EQUAL); } -"&&" { return operator(Parser.AND); } -"||" { return operator(Parser.OR); } -"++" { return operator(Parser.DOUBLE_PLUS); } -"--" { return operator(Parser.DOUBLE_MINUS); } -{SIMPLE_OPERATOR} { return operator((int)yycharat(0)); } -"|||" { return keyword(Parser.TRIBLE_OR); } - - // 识别常数的规则 -"true" { return boolConst(true); } -"false" { return boolConst(false); } -{INTEGER} { return intConst(yytext()); } -\" { sloc = getLocation(); - yybegin(S); - buffer = new StringBuilder(); } -{NEWLINE} { issueError(new NewlineInStrError(sloc, MiscUtils.quote(buffer.toString())));} -<> { issueError(new UntermStrError(sloc, MiscUtils.quote(buffer.toString()))); - yybegin(YYINITIAL); } -\" { yybegin(YYINITIAL); - return StringConst(buffer.toString(), sloc); } -"\\n" { buffer.append('\n'); } -"\\t" { buffer.append('\t'); } -"\\\"" { buffer.append('"'); } -"\\\\" { buffer.append('\\'); } -. { buffer.append(yytext()); } - - // 识别标识符的规则 -{IDENTIFIER} { return identifier(yytext()); } - - // 上面规则不能识别的字符怎么处理 -. { issueError(new UnrecogCharError(getLocation(), yycharat(0))); } diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/frontend/Parser.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/frontend/Parser.class" deleted file mode 100644 index 5b0cc686b..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/frontend/Parser.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/frontend/Parser.output" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/frontend/Parser.output" deleted file mode 100644 index 42d4894b4..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/frontend/Parser.output" +++ /dev/null @@ -1,3898 +0,0 @@ - 0 $accept : Program $end - - 1 Program : ClassList - - 2 ClassList : ClassList ClassDef - 3 | ClassDef - - 4 VariableDef : Variable ';' - - 5 Variable : Type IDENTIFIER - - 6 Type : INT - 7 | VOID - 8 | BOOL - 9 | STRING - 10 | CLASS IDENTIFIER - 11 | Type '[' ']' - - 12 ClassDef : CLASS IDENTIFIER ExtendsClause '{' FieldList '}' - - 13 ExtendsClause : EXTENDS IDENTIFIER - 14 | - - 15 FieldList : FieldList VariableDef - 16 | FieldList FunctionDef - 17 | - - 18 Formals : VariableList - 19 | - - 20 VariableList : VariableList ',' Variable - 21 | Variable - - 22 FunctionDef : STATIC Type IDENTIFIER '(' Formals ')' StmtBlock - 23 | Type IDENTIFIER '(' Formals ')' StmtBlock - - 24 StmtBlock : '{' StmtList '}' - - 25 StmtList : StmtList Stmt - 26 | - - 27 Stmt : VariableDef - 28 | SimpleStmt ';' - 29 | IfStmt - 30 | WhileStmt - 31 | ForStmt - 32 | ReturnStmt ';' - 33 | PrintStmt ';' - 34 | BreakStmt ';' - 35 | StmtBlock - 36 | GuardedIFStmt - 37 | GuaededDOStmt - - 38 GuardedES : Expr ':' Stmt - - 39 GuardedStmts : GuardedES - 40 | GuardedStmts TRIBLE_OR GuardedES - - 41 GuardedIFStmt : IF GuardedStmts FI - - 42 GuaededDOStmt : DO GuardedStmts OD - - 43 SimpleStmt : LValue '=' Expr - 44 | Call - 45 | - - 46 Receiver : Expr '.' - 47 | - - 48 LValue : Receiver IDENTIFIER - 49 | Expr '[' Expr ']' - - 50 Call : Receiver IDENTIFIER '(' Actuals ')' - - 51 Expr : LValue - 52 | Call - 53 | Constant - 54 | Expr '+' Expr - 55 | Expr '-' Expr - 56 | Expr '*' Expr - 57 | Expr '/' Expr - 58 | Expr '%' Expr - 59 | Expr EQUAL Expr - 60 | Expr NOT_EQUAL Expr - 61 | Expr '<' Expr - 62 | Expr '>' Expr - 63 | Expr LESS_EQUAL Expr - 64 | Expr GREATER_EQUAL Expr - 65 | Expr AND Expr - 66 | Expr OR Expr - 67 | '(' Expr ')' - 68 | '-' Expr - 69 | '!' Expr - 70 | READ_INTEGER '(' ')' - 71 | READ_LINE '(' ')' - 72 | THIS - 73 | NEW IDENTIFIER '(' ')' - 74 | NEW Type '[' Expr ']' - 75 | INSTANCEOF '(' Expr ',' IDENTIFIER ')' - 76 | '(' CLASS IDENTIFIER ')' Expr - 77 | Expr DOUBLE_PLUS - 78 | DOUBLE_PLUS Expr - 79 | Expr DOUBLE_MINUS - 80 | DOUBLE_MINUS Expr - 81 | Expr '?' Expr ':' Expr - 82 | NUMINSTANCES '(' IDENTIFIER ')' - - 83 Constant : LITERAL - 84 | NULL - - 85 Actuals : ExprList - 86 | - - 87 ExprList : ExprList ',' Expr - 88 | Expr - - 89 WhileStmt : WHILE '(' Expr ')' Stmt - - 90 ForStmt : FOR '(' SimpleStmt ';' Expr ';' SimpleStmt ')' Stmt - - 91 BreakStmt : BREAK - - 92 IfStmt : IF '(' Expr ')' Stmt ElseClause - - 93 ElseClause : ELSE Stmt - 94 | - - 95 ReturnStmt : RETURN Expr - 96 | RETURN - - 97 PrintStmt : PRINT '(' ExprList ')' - -state 0 - $accept : . Program $end (0) - - CLASS shift 1 - . error - - Program goto 2 - ClassList goto 3 - ClassDef goto 4 - - -state 1 - ClassDef : CLASS . IDENTIFIER ExtendsClause '{' FieldList '}' (12) - - IDENTIFIER shift 5 - . error - - -state 2 - $accept : Program . $end (0) - - $end accept - - -state 3 - Program : ClassList . (1) - ClassList : ClassList . ClassDef (2) - - CLASS shift 1 - $end reduce 1 - - ClassDef goto 6 - - -state 4 - ClassList : ClassDef . (3) - - . reduce 3 - - -state 5 - ClassDef : CLASS IDENTIFIER . ExtendsClause '{' FieldList '}' (12) - ExtendsClause : . (14) - - EXTENDS shift 7 - '{' reduce 14 - - ExtendsClause goto 8 - - -state 6 - ClassList : ClassList ClassDef . (2) - - . reduce 2 - - -state 7 - ExtendsClause : EXTENDS . IDENTIFIER (13) - - IDENTIFIER shift 9 - . error - - -state 8 - ClassDef : CLASS IDENTIFIER ExtendsClause . '{' FieldList '}' (12) - - '{' shift 10 - . error - - -state 9 - ExtendsClause : EXTENDS IDENTIFIER . (13) - - . reduce 13 - - -state 10 - ClassDef : CLASS IDENTIFIER ExtendsClause '{' . FieldList '}' (12) - FieldList : . (17) - - . reduce 17 - - FieldList goto 11 - - -state 11 - ClassDef : CLASS IDENTIFIER ExtendsClause '{' FieldList . '}' (12) - FieldList : FieldList . VariableDef (15) - FieldList : FieldList . FunctionDef (16) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - STATIC shift 17 - '}' shift 18 - . error - - VariableDef goto 19 - Variable goto 20 - Type goto 21 - FunctionDef goto 22 - - -state 12 - Type : VOID . (7) - - . reduce 7 - - -state 13 - Type : BOOL . (8) - - . reduce 8 - - -state 14 - Type : INT . (6) - - . reduce 6 - - -state 15 - Type : STRING . (9) - - . reduce 9 - - -state 16 - Type : CLASS . IDENTIFIER (10) - - IDENTIFIER shift 23 - . error - - -state 17 - FunctionDef : STATIC . Type IDENTIFIER '(' Formals ')' StmtBlock (22) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - . error - - Type goto 24 - - -state 18 - ClassDef : CLASS IDENTIFIER ExtendsClause '{' FieldList '}' . (12) - - . reduce 12 - - -state 19 - FieldList : FieldList VariableDef . (15) - - . reduce 15 - - -state 20 - VariableDef : Variable . ';' (4) - - ';' shift 25 - . error - - -state 21 - Variable : Type . IDENTIFIER (5) - Type : Type . '[' ']' (11) - FunctionDef : Type . IDENTIFIER '(' Formals ')' StmtBlock (23) - - IDENTIFIER shift 26 - '[' shift 27 - . error - - -state 22 - FieldList : FieldList FunctionDef . (16) - - . reduce 16 - - -state 23 - Type : CLASS IDENTIFIER . (10) - - . reduce 10 - - -state 24 - Type : Type . '[' ']' (11) - FunctionDef : STATIC Type . IDENTIFIER '(' Formals ')' StmtBlock (22) - - IDENTIFIER shift 28 - '[' shift 27 - . error - - -state 25 - VariableDef : Variable ';' . (4) - - . reduce 4 - - -state 26 - Variable : Type IDENTIFIER . (5) - FunctionDef : Type IDENTIFIER . '(' Formals ')' StmtBlock (23) - - '(' shift 29 - ';' reduce 5 - - -state 27 - Type : Type '[' . ']' (11) - - ']' shift 30 - . error - - -state 28 - FunctionDef : STATIC Type IDENTIFIER . '(' Formals ')' StmtBlock (22) - - '(' shift 31 - . error - - -state 29 - FunctionDef : Type IDENTIFIER '(' . Formals ')' StmtBlock (23) - Formals : . (19) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - ')' reduce 19 - - Variable goto 32 - Type goto 33 - Formals goto 34 - VariableList goto 35 - - -state 30 - Type : Type '[' ']' . (11) - - . reduce 11 - - -state 31 - FunctionDef : STATIC Type IDENTIFIER '(' . Formals ')' StmtBlock (22) - Formals : . (19) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - ')' reduce 19 - - Variable goto 32 - Type goto 33 - Formals goto 36 - VariableList goto 35 - - -state 32 - VariableList : Variable . (21) - - . reduce 21 - - -state 33 - Variable : Type . IDENTIFIER (5) - Type : Type . '[' ']' (11) - - IDENTIFIER shift 37 - '[' shift 27 - . error - - -state 34 - FunctionDef : Type IDENTIFIER '(' Formals . ')' StmtBlock (23) - - ')' shift 38 - . error - - -state 35 - Formals : VariableList . (18) - VariableList : VariableList . ',' Variable (20) - - ',' shift 39 - ')' reduce 18 - - -state 36 - FunctionDef : STATIC Type IDENTIFIER '(' Formals . ')' StmtBlock (22) - - ')' shift 40 - . error - - -state 37 - Variable : Type IDENTIFIER . (5) - - . reduce 5 - - -state 38 - FunctionDef : Type IDENTIFIER '(' Formals ')' . StmtBlock (23) - - '{' shift 41 - . error - - StmtBlock goto 42 - - -state 39 - VariableList : VariableList ',' . Variable (20) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - . error - - Variable goto 43 - Type goto 33 - - -state 40 - FunctionDef : STATIC Type IDENTIFIER '(' Formals ')' . StmtBlock (22) - - '{' shift 41 - . error - - StmtBlock goto 44 - - -state 41 - StmtBlock : '{' . StmtList '}' (24) - StmtList : . (26) - - . reduce 26 - - StmtList goto 45 - - -state 42 - FunctionDef : Type IDENTIFIER '(' Formals ')' StmtBlock . (23) - - . reduce 23 - - -state 43 - VariableList : VariableList ',' Variable . (20) - - . reduce 20 - - -state 44 - FunctionDef : STATIC Type IDENTIFIER '(' Formals ')' StmtBlock . (22) - - . reduce 22 - - -state 45 - StmtBlock : '{' StmtList . '}' (24) - StmtList : StmtList . Stmt (25) - SimpleStmt : . (45) - Receiver : . (47) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - NULL shift 46 - THIS shift 47 - WHILE shift 48 - FOR shift 49 - IF shift 50 - RETURN shift 51 - BREAK shift 52 - NEW shift 53 - PRINT shift 54 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - DO shift 62 - '-' shift 63 - '!' shift 64 - '(' shift 65 - '{' shift 41 - '}' shift 66 - IDENTIFIER reduce 47 - ';' reduce 45 - - VariableDef goto 67 - Variable goto 20 - Type goto 33 - StmtBlock goto 68 - Stmt goto 69 - SimpleStmt goto 70 - IfStmt goto 71 - WhileStmt goto 72 - ForStmt goto 73 - ReturnStmt goto 74 - PrintStmt goto 75 - BreakStmt goto 76 - GuardedIFStmt goto 77 - GuaededDOStmt goto 78 - Expr goto 79 - LValue goto 80 - Call goto 81 - Receiver goto 82 - Constant goto 83 - - -state 46 - Constant : NULL . (84) - - . reduce 84 - - -state 47 - Expr : THIS . (72) - - . reduce 72 - - -state 48 - WhileStmt : WHILE . '(' Expr ')' Stmt (89) - - '(' shift 84 - . error - - -state 49 - ForStmt : FOR . '(' SimpleStmt ';' Expr ';' SimpleStmt ')' Stmt (90) - - '(' shift 85 - . error - - -state 50 - GuardedIFStmt : IF . GuardedStmts FI (41) - IfStmt : IF . '(' Expr ')' Stmt ElseClause (92) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 86 - IDENTIFIER reduce 47 - - GuardedES goto 87 - Expr goto 88 - GuardedStmts goto 89 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 51 - ReturnStmt : RETURN . Expr (95) - ReturnStmt : RETURN . (96) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - ';' reduce 96 - - Expr goto 92 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 52 - BreakStmt : BREAK . (91) - - . reduce 91 - - -state 53 - Expr : NEW . IDENTIFIER '(' ')' (73) - Expr : NEW . Type '[' Expr ']' (74) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - IDENTIFIER shift 93 - . error - - Type goto 94 - - -state 54 - PrintStmt : PRINT . '(' ExprList ')' (97) - - '(' shift 95 - . error - - -state 55 - Expr : READ_INTEGER . '(' ')' (70) - - '(' shift 96 - . error - - -state 56 - Expr : READ_LINE . '(' ')' (71) - - '(' shift 97 - . error - - -state 57 - Constant : LITERAL . (83) - - . reduce 83 - - -state 58 - Expr : INSTANCEOF . '(' Expr ',' IDENTIFIER ')' (75) - - '(' shift 98 - . error - - -state 59 - Expr : NUMINSTANCES . '(' IDENTIFIER ')' (82) - - '(' shift 99 - . error - - -state 60 - Expr : DOUBLE_PLUS . Expr (78) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 100 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 61 - Expr : DOUBLE_MINUS . Expr (80) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 101 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 62 - GuaededDOStmt : DO . GuardedStmts OD (42) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - GuardedES goto 87 - Expr goto 88 - GuardedStmts goto 102 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 63 - Expr : '-' . Expr (68) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 103 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 64 - Expr : '!' . Expr (69) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 104 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 65 - Expr : '(' . Expr ')' (67) - Expr : '(' . CLASS IDENTIFIER ')' Expr (76) - Receiver : . (47) - - CLASS shift 105 - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 106 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 66 - StmtBlock : '{' StmtList '}' . (24) - - . reduce 24 - - -state 67 - Stmt : VariableDef . (27) - - . reduce 27 - - -state 68 - Stmt : StmtBlock . (35) - - . reduce 35 - - -state 69 - StmtList : StmtList Stmt . (25) - - . reduce 25 - - -state 70 - Stmt : SimpleStmt . ';' (28) - - ';' shift 107 - . error - - -state 71 - Stmt : IfStmt . (29) - - . reduce 29 - - -state 72 - Stmt : WhileStmt . (30) - - . reduce 30 - - -state 73 - Stmt : ForStmt . (31) - - . reduce 31 - - -state 74 - Stmt : ReturnStmt . ';' (32) - - ';' shift 108 - . error - - -state 75 - Stmt : PrintStmt . ';' (33) - - ';' shift 109 - . error - - -state 76 - Stmt : BreakStmt . ';' (34) - - ';' shift 110 - . error - - -state 77 - Stmt : GuardedIFStmt . (36) - - . reduce 36 - - -state 78 - Stmt : GuaededDOStmt . (37) - - . reduce 37 - - -state 79 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - '?' shift 128 - . error - - -state 80 - SimpleStmt : LValue . '=' Expr (43) - Expr : LValue . (51) - - '=' shift 129 - AND reduce 51 - OR reduce 51 - LESS_EQUAL reduce 51 - GREATER_EQUAL reduce 51 - EQUAL reduce 51 - NOT_EQUAL reduce 51 - DOUBLE_PLUS reduce 51 - DOUBLE_MINUS reduce 51 - '+' reduce 51 - '-' reduce 51 - '*' reduce 51 - '/' reduce 51 - '%' reduce 51 - '>' reduce 51 - '<' reduce 51 - '.' reduce 51 - '[' reduce 51 - '?' reduce 51 - - -state 81 - SimpleStmt : Call . (44) - Expr : Call . (52) - - AND reduce 52 - OR reduce 52 - LESS_EQUAL reduce 52 - GREATER_EQUAL reduce 52 - EQUAL reduce 52 - NOT_EQUAL reduce 52 - DOUBLE_PLUS reduce 52 - DOUBLE_MINUS reduce 52 - '+' reduce 52 - '-' reduce 52 - '*' reduce 52 - '/' reduce 52 - '%' reduce 52 - '>' reduce 52 - '<' reduce 52 - '.' reduce 52 - ';' reduce 44 - ')' reduce 44 - '[' reduce 52 - '?' reduce 52 - - -state 82 - LValue : Receiver . IDENTIFIER (48) - Call : Receiver . IDENTIFIER '(' Actuals ')' (50) - - IDENTIFIER shift 130 - . error - - -state 83 - Expr : Constant . (53) - - . reduce 53 - - -state 84 - WhileStmt : WHILE '(' . Expr ')' Stmt (89) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 131 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 85 - ForStmt : FOR '(' . SimpleStmt ';' Expr ';' SimpleStmt ')' Stmt (90) - SimpleStmt : . (45) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - ';' reduce 45 - - SimpleStmt goto 132 - Expr goto 79 - LValue goto 80 - Call goto 81 - Receiver goto 82 - Constant goto 83 - - -state 86 - Expr : '(' . Expr ')' (67) - Expr : '(' . CLASS IDENTIFIER ')' Expr (76) - IfStmt : IF '(' . Expr ')' Stmt ElseClause (92) - Receiver : . (47) - - CLASS shift 105 - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 133 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 87 - GuardedStmts : GuardedES . (39) - - . reduce 39 - - -state 88 - GuardedES : Expr . ':' Stmt (38) - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - '?' shift 128 - ':' shift 134 - . error - - -state 89 - GuardedStmts : GuardedStmts . TRIBLE_OR GuardedES (40) - GuardedIFStmt : IF GuardedStmts . FI (41) - - FI shift 135 - TRIBLE_OR shift 136 - . error - - -state 90 - Expr : LValue . (51) - - . reduce 51 - - -state 91 - Expr : Call . (52) - - . reduce 52 - - -state 92 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - ReturnStmt : RETURN Expr . (95) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - '?' shift 128 - ';' reduce 95 - - -state 93 - Expr : NEW IDENTIFIER . '(' ')' (73) - - '(' shift 137 - . error - - -state 94 - Type : Type . '[' ']' (11) - Expr : NEW Type . '[' Expr ']' (74) - - '[' shift 138 - . error - - -state 95 - PrintStmt : PRINT '(' . ExprList ')' (97) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 139 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - ExprList goto 140 - - -state 96 - Expr : READ_INTEGER '(' . ')' (70) - - ')' shift 141 - . error - - -state 97 - Expr : READ_LINE '(' . ')' (71) - - ')' shift 142 - . error - - -state 98 - Expr : INSTANCEOF '(' . Expr ',' IDENTIFIER ')' (75) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 143 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 99 - Expr : NUMINSTANCES '(' . IDENTIFIER ')' (82) - - IDENTIFIER shift 144 - . error - - -state 100 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : DOUBLE_PLUS Expr . (78) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - '.' shift 126 - '[' shift 127 - AND reduce 78 - OR reduce 78 - LESS_EQUAL reduce 78 - GREATER_EQUAL reduce 78 - EQUAL reduce 78 - NOT_EQUAL reduce 78 - '+' reduce 78 - '-' reduce 78 - '*' reduce 78 - '/' reduce 78 - '%' reduce 78 - '>' reduce 78 - '<' reduce 78 - ',' reduce 78 - ';' reduce 78 - ')' reduce 78 - ']' reduce 78 - '?' reduce 78 - ':' reduce 78 - - -state 101 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : DOUBLE_MINUS Expr . (80) - Expr : Expr . '?' Expr ':' Expr (81) - - '.' shift 126 - '[' shift 127 - AND reduce 80 - OR reduce 80 - LESS_EQUAL reduce 80 - GREATER_EQUAL reduce 80 - EQUAL reduce 80 - NOT_EQUAL reduce 80 - '+' reduce 80 - '-' reduce 80 - '*' reduce 80 - '/' reduce 80 - '%' reduce 80 - '>' reduce 80 - '<' reduce 80 - ',' reduce 80 - ';' reduce 80 - ')' reduce 80 - ']' reduce 80 - '?' reduce 80 - ':' reduce 80 - - -state 102 - GuardedStmts : GuardedStmts . TRIBLE_OR GuardedES (40) - GuaededDOStmt : DO GuardedStmts . OD (42) - - TRIBLE_OR shift 136 - OD shift 145 - . error - - -state 103 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : '-' Expr . (68) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '.' shift 126 - '[' shift 127 - AND reduce 68 - OR reduce 68 - LESS_EQUAL reduce 68 - GREATER_EQUAL reduce 68 - EQUAL reduce 68 - NOT_EQUAL reduce 68 - '+' reduce 68 - '-' reduce 68 - '*' reduce 68 - '/' reduce 68 - '%' reduce 68 - '>' reduce 68 - '<' reduce 68 - ',' reduce 68 - ';' reduce 68 - ')' reduce 68 - ']' reduce 68 - '?' reduce 68 - ':' reduce 68 - - -state 104 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : '!' Expr . (69) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '.' shift 126 - '[' shift 127 - AND reduce 69 - OR reduce 69 - LESS_EQUAL reduce 69 - GREATER_EQUAL reduce 69 - EQUAL reduce 69 - NOT_EQUAL reduce 69 - '+' reduce 69 - '-' reduce 69 - '*' reduce 69 - '/' reduce 69 - '%' reduce 69 - '>' reduce 69 - '<' reduce 69 - ',' reduce 69 - ';' reduce 69 - ')' reduce 69 - ']' reduce 69 - '?' reduce 69 - ':' reduce 69 - - -state 105 - Expr : '(' CLASS . IDENTIFIER ')' Expr (76) - - IDENTIFIER shift 146 - . error - - -state 106 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : '(' Expr . ')' (67) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - ')' shift 147 - '[' shift 127 - '?' shift 128 - . error - - -state 107 - Stmt : SimpleStmt ';' . (28) - - . reduce 28 - - -state 108 - Stmt : ReturnStmt ';' . (32) - - . reduce 32 - - -state 109 - Stmt : PrintStmt ';' . (33) - - . reduce 33 - - -state 110 - Stmt : BreakStmt ';' . (34) - - . reduce 34 - - -state 111 - Expr : Expr AND . Expr (65) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 148 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 112 - Expr : Expr OR . Expr (66) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 149 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 113 - Expr : Expr LESS_EQUAL . Expr (63) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 150 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 114 - Expr : Expr GREATER_EQUAL . Expr (64) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 151 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 115 - Expr : Expr EQUAL . Expr (59) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 152 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 116 - Expr : Expr NOT_EQUAL . Expr (60) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 153 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 117 - Expr : Expr DOUBLE_PLUS . (77) - - . reduce 77 - - -state 118 - Expr : Expr DOUBLE_MINUS . (79) - - . reduce 79 - - -state 119 - Expr : Expr '+' . Expr (54) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 154 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 120 - Expr : Expr '-' . Expr (55) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 155 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 121 - Expr : Expr '*' . Expr (56) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 156 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 122 - Expr : Expr '/' . Expr (57) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 157 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 123 - Expr : Expr '%' . Expr (58) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 158 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 124 - Expr : Expr '>' . Expr (62) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 159 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 125 - Expr : Expr '<' . Expr (61) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 160 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 126 - Receiver : Expr '.' . (46) - - . reduce 46 - - -state 127 - LValue : Expr '[' . Expr ']' (49) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 161 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 128 - Expr : Expr '?' . Expr ':' Expr (81) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 162 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 129 - SimpleStmt : LValue '=' . Expr (43) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 163 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 130 - LValue : Receiver IDENTIFIER . (48) - Call : Receiver IDENTIFIER . '(' Actuals ')' (50) - - '(' shift 164 - AND reduce 48 - OR reduce 48 - LESS_EQUAL reduce 48 - GREATER_EQUAL reduce 48 - EQUAL reduce 48 - NOT_EQUAL reduce 48 - DOUBLE_PLUS reduce 48 - DOUBLE_MINUS reduce 48 - '+' reduce 48 - '-' reduce 48 - '*' reduce 48 - '/' reduce 48 - '%' reduce 48 - '=' reduce 48 - '>' reduce 48 - '<' reduce 48 - '.' reduce 48 - ',' reduce 48 - ';' reduce 48 - ')' reduce 48 - '[' reduce 48 - ']' reduce 48 - '?' reduce 48 - ':' reduce 48 - - -state 131 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - WhileStmt : WHILE '(' Expr . ')' Stmt (89) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - ')' shift 165 - '[' shift 127 - '?' shift 128 - . error - - -state 132 - ForStmt : FOR '(' SimpleStmt . ';' Expr ';' SimpleStmt ')' Stmt (90) - - ';' shift 166 - . error - - -state 133 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : '(' Expr . ')' (67) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - IfStmt : IF '(' Expr . ')' Stmt ElseClause (92) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - ')' shift 167 - '[' shift 127 - '?' shift 128 - . error - - -state 134 - GuardedES : Expr ':' . Stmt (38) - SimpleStmt : . (45) - Receiver : . (47) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - NULL shift 46 - THIS shift 47 - WHILE shift 48 - FOR shift 49 - IF shift 50 - RETURN shift 51 - BREAK shift 52 - NEW shift 53 - PRINT shift 54 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - DO shift 62 - '-' shift 63 - '!' shift 64 - '(' shift 65 - '{' shift 41 - IDENTIFIER reduce 47 - ';' reduce 45 - - VariableDef goto 67 - Variable goto 20 - Type goto 33 - StmtBlock goto 68 - Stmt goto 168 - SimpleStmt goto 70 - IfStmt goto 71 - WhileStmt goto 72 - ForStmt goto 73 - ReturnStmt goto 74 - PrintStmt goto 75 - BreakStmt goto 76 - GuardedIFStmt goto 77 - GuaededDOStmt goto 78 - Expr goto 79 - LValue goto 80 - Call goto 81 - Receiver goto 82 - Constant goto 83 - - -state 135 - GuardedIFStmt : IF GuardedStmts FI . (41) - - . reduce 41 - - -state 136 - GuardedStmts : GuardedStmts TRIBLE_OR . GuardedES (40) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - GuardedES goto 169 - Expr goto 88 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 137 - Expr : NEW IDENTIFIER '(' . ')' (73) - - ')' shift 170 - . error - - -state 138 - Type : Type '[' . ']' (11) - Expr : NEW Type '[' . Expr ']' (74) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - ']' shift 30 - IDENTIFIER reduce 47 - - Expr goto 171 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 139 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - ExprList : Expr . (88) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - '?' shift 128 - ',' reduce 88 - ')' reduce 88 - - -state 140 - ExprList : ExprList . ',' Expr (87) - PrintStmt : PRINT '(' ExprList . ')' (97) - - ',' shift 172 - ')' shift 173 - . error - - -state 141 - Expr : READ_INTEGER '(' ')' . (70) - - . reduce 70 - - -state 142 - Expr : READ_LINE '(' ')' . (71) - - . reduce 71 - - -state 143 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : INSTANCEOF '(' Expr . ',' IDENTIFIER ')' (75) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - ',' shift 174 - '[' shift 127 - '?' shift 128 - . error - - -state 144 - Expr : NUMINSTANCES '(' IDENTIFIER . ')' (82) - - ')' shift 175 - . error - - -state 145 - GuaededDOStmt : DO GuardedStmts OD . (42) - - . reduce 42 - - -state 146 - Expr : '(' CLASS IDENTIFIER . ')' Expr (76) - - ')' shift 176 - . error - - -state 147 - Expr : '(' Expr ')' . (67) - - . reduce 67 - - -state 148 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr AND Expr . (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - AND reduce 65 - OR reduce 65 - ',' reduce 65 - ';' reduce 65 - ')' reduce 65 - ']' reduce 65 - '?' reduce 65 - ':' reduce 65 - - -state 149 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr OR Expr . (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - AND shift 111 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - OR reduce 66 - ',' reduce 66 - ';' reduce 66 - ')' reduce 66 - ']' reduce 66 - '?' reduce 66 - ':' reduce 66 - - -state 150 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr LESS_EQUAL Expr . (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '.' shift 126 - '[' shift 127 - AND reduce 63 - OR reduce 63 - EQUAL reduce 63 - NOT_EQUAL reduce 63 - ',' reduce 63 - ';' reduce 63 - ')' reduce 63 - ']' reduce 63 - '?' reduce 63 - ':' reduce 63 - - -state 151 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr GREATER_EQUAL Expr . (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '.' shift 126 - '[' shift 127 - AND reduce 64 - OR reduce 64 - EQUAL reduce 64 - NOT_EQUAL reduce 64 - ',' reduce 64 - ';' reduce 64 - ')' reduce 64 - ']' reduce 64 - '?' reduce 64 - ':' reduce 64 - - -state 152 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr EQUAL Expr . (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - AND reduce 59 - OR reduce 59 - ',' reduce 59 - ';' reduce 59 - ')' reduce 59 - ']' reduce 59 - '?' reduce 59 - ':' reduce 59 - - -state 153 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr NOT_EQUAL Expr . (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - AND reduce 60 - OR reduce 60 - ',' reduce 60 - ';' reduce 60 - ')' reduce 60 - ']' reduce 60 - '?' reduce 60 - ':' reduce 60 - - -state 154 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr '+' Expr . (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '.' shift 126 - '[' shift 127 - AND reduce 54 - OR reduce 54 - LESS_EQUAL reduce 54 - GREATER_EQUAL reduce 54 - EQUAL reduce 54 - NOT_EQUAL reduce 54 - '+' reduce 54 - '-' reduce 54 - '>' reduce 54 - '<' reduce 54 - ',' reduce 54 - ';' reduce 54 - ')' reduce 54 - ']' reduce 54 - '?' reduce 54 - ':' reduce 54 - - -state 155 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr '-' Expr . (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '.' shift 126 - '[' shift 127 - AND reduce 55 - OR reduce 55 - LESS_EQUAL reduce 55 - GREATER_EQUAL reduce 55 - EQUAL reduce 55 - NOT_EQUAL reduce 55 - '+' reduce 55 - '-' reduce 55 - '>' reduce 55 - '<' reduce 55 - ',' reduce 55 - ';' reduce 55 - ')' reduce 55 - ']' reduce 55 - '?' reduce 55 - ':' reduce 55 - - -state 156 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr '*' Expr . (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '.' shift 126 - '[' shift 127 - AND reduce 56 - OR reduce 56 - LESS_EQUAL reduce 56 - GREATER_EQUAL reduce 56 - EQUAL reduce 56 - NOT_EQUAL reduce 56 - '+' reduce 56 - '-' reduce 56 - '*' reduce 56 - '/' reduce 56 - '%' reduce 56 - '>' reduce 56 - '<' reduce 56 - ',' reduce 56 - ';' reduce 56 - ')' reduce 56 - ']' reduce 56 - '?' reduce 56 - ':' reduce 56 - - -state 157 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr '/' Expr . (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '.' shift 126 - '[' shift 127 - AND reduce 57 - OR reduce 57 - LESS_EQUAL reduce 57 - GREATER_EQUAL reduce 57 - EQUAL reduce 57 - NOT_EQUAL reduce 57 - '+' reduce 57 - '-' reduce 57 - '*' reduce 57 - '/' reduce 57 - '%' reduce 57 - '>' reduce 57 - '<' reduce 57 - ',' reduce 57 - ';' reduce 57 - ')' reduce 57 - ']' reduce 57 - '?' reduce 57 - ':' reduce 57 - - -state 158 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr '%' Expr . (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '.' shift 126 - '[' shift 127 - AND reduce 58 - OR reduce 58 - LESS_EQUAL reduce 58 - GREATER_EQUAL reduce 58 - EQUAL reduce 58 - NOT_EQUAL reduce 58 - '+' reduce 58 - '-' reduce 58 - '*' reduce 58 - '/' reduce 58 - '%' reduce 58 - '>' reduce 58 - '<' reduce 58 - ',' reduce 58 - ';' reduce 58 - ')' reduce 58 - ']' reduce 58 - '?' reduce 58 - ':' reduce 58 - - -state 159 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr '>' Expr . (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '.' shift 126 - '[' shift 127 - AND reduce 62 - OR reduce 62 - EQUAL reduce 62 - NOT_EQUAL reduce 62 - ',' reduce 62 - ';' reduce 62 - ')' reduce 62 - ']' reduce 62 - '?' reduce 62 - ':' reduce 62 - - -state 160 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr '<' Expr . (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '.' shift 126 - '[' shift 127 - AND reduce 61 - OR reduce 61 - EQUAL reduce 61 - NOT_EQUAL reduce 61 - ',' reduce 61 - ';' reduce 61 - ')' reduce 61 - ']' reduce 61 - '?' reduce 61 - ':' reduce 61 - - -state 161 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - LValue : Expr '[' Expr . ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - ']' shift 177 - '?' shift 128 - . error - - -state 162 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - Expr : Expr '?' Expr . ':' Expr (81) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - '?' shift 128 - ':' shift 178 - . error - - -state 163 - SimpleStmt : LValue '=' Expr . (43) - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - '?' shift 128 - ';' reduce 43 - ')' reduce 43 - - -state 164 - Call : Receiver IDENTIFIER '(' . Actuals ')' (50) - Receiver : . (47) - Actuals : . (86) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - ')' reduce 86 - - Expr goto 139 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Actuals goto 179 - Constant goto 83 - ExprList goto 180 - - -state 165 - WhileStmt : WHILE '(' Expr ')' . Stmt (89) - SimpleStmt : . (45) - Receiver : . (47) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - NULL shift 46 - THIS shift 47 - WHILE shift 48 - FOR shift 49 - IF shift 50 - RETURN shift 51 - BREAK shift 52 - NEW shift 53 - PRINT shift 54 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - DO shift 62 - '-' shift 63 - '!' shift 64 - '(' shift 65 - '{' shift 41 - IDENTIFIER reduce 47 - ';' reduce 45 - - VariableDef goto 67 - Variable goto 20 - Type goto 33 - StmtBlock goto 68 - Stmt goto 181 - SimpleStmt goto 70 - IfStmt goto 71 - WhileStmt goto 72 - ForStmt goto 73 - ReturnStmt goto 74 - PrintStmt goto 75 - BreakStmt goto 76 - GuardedIFStmt goto 77 - GuaededDOStmt goto 78 - Expr goto 79 - LValue goto 80 - Call goto 81 - Receiver goto 82 - Constant goto 83 - - -state 166 - ForStmt : FOR '(' SimpleStmt ';' . Expr ';' SimpleStmt ')' Stmt (90) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 182 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 167 - Expr : '(' Expr ')' . (67) - IfStmt : IF '(' Expr ')' . Stmt ElseClause (92) - SimpleStmt : . (45) - Receiver : . (47) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - NULL shift 46 - THIS shift 47 - WHILE shift 48 - FOR shift 49 - IF shift 50 - RETURN shift 51 - BREAK shift 52 - NEW shift 53 - PRINT shift 54 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DO shift 62 - '!' shift 64 - '(' shift 65 - '{' shift 41 - IDENTIFIER reduce 47 - AND reduce 67 - OR reduce 67 - LESS_EQUAL reduce 67 - GREATER_EQUAL reduce 67 - EQUAL reduce 67 - NOT_EQUAL reduce 67 - DOUBLE_PLUS reduce 67 - DOUBLE_MINUS reduce 67 - '+' reduce 67 - '-' reduce 67 - '*' reduce 67 - '/' reduce 67 - '%' reduce 67 - '>' reduce 67 - '<' reduce 67 - '.' reduce 67 - ';' reduce 45 - '[' reduce 67 - '?' reduce 67 - ':' reduce 67 - - VariableDef goto 67 - Variable goto 20 - Type goto 33 - StmtBlock goto 68 - Stmt goto 183 - SimpleStmt goto 70 - IfStmt goto 71 - WhileStmt goto 72 - ForStmt goto 73 - ReturnStmt goto 74 - PrintStmt goto 75 - BreakStmt goto 76 - GuardedIFStmt goto 77 - GuaededDOStmt goto 78 - Expr goto 79 - LValue goto 80 - Call goto 81 - Receiver goto 82 - Constant goto 83 - - -state 168 - GuardedES : Expr ':' Stmt . (38) - - . reduce 38 - - -state 169 - GuardedStmts : GuardedStmts TRIBLE_OR GuardedES . (40) - - . reduce 40 - - -state 170 - Expr : NEW IDENTIFIER '(' ')' . (73) - - . reduce 73 - - -state 171 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : NEW Type '[' Expr . ']' (74) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - ']' shift 184 - '?' shift 128 - . error - - -state 172 - ExprList : ExprList ',' . Expr (87) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 185 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 173 - PrintStmt : PRINT '(' ExprList ')' . (97) - - . reduce 97 - - -state 174 - Expr : INSTANCEOF '(' Expr ',' . IDENTIFIER ')' (75) - - IDENTIFIER shift 186 - . error - - -state 175 - Expr : NUMINSTANCES '(' IDENTIFIER ')' . (82) - - . reduce 82 - - -state 176 - Expr : '(' CLASS IDENTIFIER ')' . Expr (76) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 187 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 177 - LValue : Expr '[' Expr ']' . (49) - - . reduce 49 - - -state 178 - Expr : Expr '?' Expr ':' . Expr (81) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 188 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 179 - Call : Receiver IDENTIFIER '(' Actuals . ')' (50) - - ')' shift 189 - . error - - -state 180 - Actuals : ExprList . (85) - ExprList : ExprList . ',' Expr (87) - - ',' shift 172 - ')' reduce 85 - - -state 181 - WhileStmt : WHILE '(' Expr ')' Stmt . (89) - - . reduce 89 - - -state 182 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - ForStmt : FOR '(' SimpleStmt ';' Expr . ';' SimpleStmt ')' Stmt (90) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - ';' shift 190 - '[' shift 127 - '?' shift 128 - . error - - -state 183 - IfStmt : IF '(' Expr ')' Stmt . ElseClause (92) - ElseClause : . (94) - - ELSE shift 191 - VOID reduce 94 - BOOL reduce 94 - INT reduce 94 - STRING reduce 94 - CLASS reduce 94 - NULL reduce 94 - THIS reduce 94 - WHILE reduce 94 - FOR reduce 94 - IF reduce 94 - RETURN reduce 94 - BREAK reduce 94 - NEW reduce 94 - PRINT reduce 94 - READ_INTEGER reduce 94 - READ_LINE reduce 94 - LITERAL reduce 94 - IDENTIFIER reduce 94 - INSTANCEOF reduce 94 - NUMINSTANCES reduce 94 - DOUBLE_PLUS reduce 94 - DOUBLE_MINUS reduce 94 - FI reduce 94 - TRIBLE_OR reduce 94 - DO reduce 94 - OD reduce 94 - '-' reduce 94 - ';' reduce 94 - '!' reduce 94 - '(' reduce 94 - '{' reduce 94 - '}' reduce 94 - - ElseClause goto 192 - - -state 184 - Expr : NEW Type '[' Expr ']' . (74) - - . reduce 74 - - -state 185 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - ExprList : ExprList ',' Expr . (87) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - '?' shift 128 - ',' reduce 87 - ')' reduce 87 - - -state 186 - Expr : INSTANCEOF '(' Expr ',' IDENTIFIER . ')' (75) - - ')' shift 193 - . error - - -state 187 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : '(' CLASS IDENTIFIER ')' Expr . (76) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - . reduce 76 - - -188: shift/reduce conflict (shift 111, reduce 81) on AND -188: shift/reduce conflict (shift 112, reduce 81) on OR -188: shift/reduce conflict (shift 113, reduce 81) on LESS_EQUAL -188: shift/reduce conflict (shift 114, reduce 81) on GREATER_EQUAL -188: shift/reduce conflict (shift 115, reduce 81) on EQUAL -188: shift/reduce conflict (shift 116, reduce 81) on NOT_EQUAL -188: shift/reduce conflict (shift 117, reduce 81) on DOUBLE_PLUS -188: shift/reduce conflict (shift 118, reduce 81) on DOUBLE_MINUS -188: shift/reduce conflict (shift 119, reduce 81) on '+' -188: shift/reduce conflict (shift 120, reduce 81) on '-' -188: shift/reduce conflict (shift 121, reduce 81) on '*' -188: shift/reduce conflict (shift 122, reduce 81) on '/' -188: shift/reduce conflict (shift 123, reduce 81) on '%' -188: shift/reduce conflict (shift 124, reduce 81) on '>' -188: shift/reduce conflict (shift 125, reduce 81) on '<' -188: shift/reduce conflict (shift 126, reduce 81) on '.' -188: shift/reduce conflict (shift 127, reduce 81) on '[' -188: shift/reduce conflict (shift 128, reduce 81) on '?' -state 188 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - Expr : Expr '?' Expr ':' Expr . (81) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - '?' shift 128 - ',' reduce 81 - ';' reduce 81 - ')' reduce 81 - ']' reduce 81 - ':' reduce 81 - - -state 189 - Call : Receiver IDENTIFIER '(' Actuals ')' . (50) - - . reduce 50 - - -state 190 - ForStmt : FOR '(' SimpleStmt ';' Expr ';' . SimpleStmt ')' Stmt (90) - SimpleStmt : . (45) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - ')' reduce 45 - - SimpleStmt goto 194 - Expr goto 79 - LValue goto 80 - Call goto 81 - Receiver goto 82 - Constant goto 83 - - -state 191 - ElseClause : ELSE . Stmt (93) - SimpleStmt : . (45) - Receiver : . (47) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - NULL shift 46 - THIS shift 47 - WHILE shift 48 - FOR shift 49 - IF shift 50 - RETURN shift 51 - BREAK shift 52 - NEW shift 53 - PRINT shift 54 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - DO shift 62 - '-' shift 63 - '!' shift 64 - '(' shift 65 - '{' shift 41 - IDENTIFIER reduce 47 - ';' reduce 45 - - VariableDef goto 67 - Variable goto 20 - Type goto 33 - StmtBlock goto 68 - Stmt goto 195 - SimpleStmt goto 70 - IfStmt goto 71 - WhileStmt goto 72 - ForStmt goto 73 - ReturnStmt goto 74 - PrintStmt goto 75 - BreakStmt goto 76 - GuardedIFStmt goto 77 - GuaededDOStmt goto 78 - Expr goto 79 - LValue goto 80 - Call goto 81 - Receiver goto 82 - Constant goto 83 - - -state 192 - IfStmt : IF '(' Expr ')' Stmt ElseClause . (92) - - . reduce 92 - - -state 193 - Expr : INSTANCEOF '(' Expr ',' IDENTIFIER ')' . (75) - - . reduce 75 - - -state 194 - ForStmt : FOR '(' SimpleStmt ';' Expr ';' SimpleStmt . ')' Stmt (90) - - ')' shift 196 - . error - - -state 195 - ElseClause : ELSE Stmt . (93) - - . reduce 93 - - -state 196 - ForStmt : FOR '(' SimpleStmt ';' Expr ';' SimpleStmt ')' . Stmt (90) - SimpleStmt : . (45) - Receiver : . (47) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - NULL shift 46 - THIS shift 47 - WHILE shift 48 - FOR shift 49 - IF shift 50 - RETURN shift 51 - BREAK shift 52 - NEW shift 53 - PRINT shift 54 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - DO shift 62 - '-' shift 63 - '!' shift 64 - '(' shift 65 - '{' shift 41 - IDENTIFIER reduce 47 - ';' reduce 45 - - VariableDef goto 67 - Variable goto 20 - Type goto 33 - StmtBlock goto 68 - Stmt goto 197 - SimpleStmt goto 70 - IfStmt goto 71 - WhileStmt goto 72 - ForStmt goto 73 - ReturnStmt goto 74 - PrintStmt goto 75 - BreakStmt goto 76 - GuardedIFStmt goto 77 - GuaededDOStmt goto 78 - Expr goto 79 - LValue goto 80 - Call goto 81 - Receiver goto 82 - Constant goto 83 - - -state 197 - ForStmt : FOR '(' SimpleStmt ';' Expr ';' SimpleStmt ')' Stmt . (90) - - . reduce 90 - - -State 188 contains 18 shift/reduce conflicts. - - -59 terminals, 34 nonterminals -98 grammar rules, 198 states diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/frontend/Parser.y" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/frontend/Parser.y" deleted file mode 100644 index 5a31697dc..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/frontend/Parser.y" +++ /dev/null @@ -1,508 +0,0 @@ -/* - * 本文件提供实现Decaf编译器所需要的BYACC脚本。 - * 在第一阶段中你需要补充完整这个文件中的语法规则。 - * 请参考"YACC--Yet Another Compiler Compiler"中关于如何编写BYACC脚本的说明。 - * - * Keltin Leung - * DCST, Tsinghua University - */ - -%{ -package decaf.frontend; - -import decaf.tree.Tree; -import decaf.tree.Tree.*; -import decaf.error.*; -import java.util.*; -%} - -%Jclass Parser -%Jextends BaseParser -%Jsemantic SemValue -%Jimplements ReduceListener -%Jnorun -%Jnodebug -%Jnoconstruct - -%token VOID BOOL INT STRING CLASS -%token NULL EXTENDS THIS WHILE FOR -%token IF ELSE RETURN BREAK NEW -%token PRINT READ_INTEGER READ_LINE -%token LITERAL -%token IDENTIFIER AND OR STATIC INSTANCEOF -%token NUMINSTANCES -%token LESS_EQUAL GREATER_EQUAL EQUAL NOT_EQUAL -%token DOUBLE_PLUS DOUBLE_MINUS -%token FI TRIBLE_OR DO OD -%token '+' '-' '*' '/' '%' '=' '>' '<' '.' -%token ',' ';' '!' '(' ')' '[' ']' '{' '}' -%token '?' ':' - -%right '?' -%left OR -%left AND -%nonassoc EQUAL NOT_EQUAL -%nonassoc LESS_EQUAL GREATER_EQUAL '<' '>' -%left '+' '-' -%left '*' '/' '%' -%nonassoc UMINUS '!' -%nonassoc DOUBLE_PLUS DOUBLE_MINUS -%nonassoc '[' '.' -%nonassoc ')' EMPTY -%nonassoc ELSE - -%start Program - -%% -Program : ClassList - { - tree = new Tree.TopLevel($1.clist, $1.loc); - } - ; - -ClassList : ClassList ClassDef - { - $$.clist.add($2.cdef); - } - | ClassDef - { - $$.clist = new ArrayList(); - $$.clist.add($1.cdef); - } - ; - -VariableDef : Variable ';' - ; - -Variable : Type IDENTIFIER - { - $$.vdef = new Tree.VarDef($2.ident, $1.type, $2.loc); - } - ; - -Type : INT - { - $$.type = new Tree.TypeIdent(Tree.INT, $1.loc); - } - | VOID - { - $$.type = new Tree.TypeIdent(Tree.VOID, $1.loc); - } - | BOOL - { - $$.type = new Tree.TypeIdent(Tree.BOOL, $1.loc); - } - | STRING - { - $$.type = new Tree.TypeIdent(Tree.STRING, $1.loc); - } - | CLASS IDENTIFIER - { - $$.type = new Tree.TypeClass($2.ident, $1.loc); - } - | Type '[' ']' - { - $$.type = new Tree.TypeArray($1.type, $1.loc); - } - ; - -ClassDef : CLASS IDENTIFIER ExtendsClause '{' FieldList '}' - { - $$.cdef = new Tree.ClassDef($2.ident, $3.ident, $5.flist, $1.loc); - } - ; - -ExtendsClause : EXTENDS IDENTIFIER - { - $$.ident = $2.ident; - } - | /* empty */ - { - $$ = new SemValue(); - } - ; - -FieldList : FieldList VariableDef - { - $$.flist.add($2.vdef); - } - | FieldList FunctionDef - { - $$.flist.add($2.fdef); - } - | /* empty */ - { - $$ = new SemValue(); - $$.flist = new ArrayList(); - } - ; - -Formals : VariableList - | /* empty */ - { - $$ = new SemValue(); - $$.vlist = new ArrayList(); - } - ; - -VariableList : VariableList ',' Variable - { - $$.vlist.add($3.vdef); - } - | Variable - { - $$.vlist = new ArrayList(); - $$.vlist.add($1.vdef); - } - ; - -FunctionDef : STATIC Type IDENTIFIER '(' Formals ')' StmtBlock - { - $$.fdef = new MethodDef(true, $3.ident, $2.type, $5.vlist, (Block) $7.stmt, $3.loc); - } - | Type IDENTIFIER '(' Formals ')' StmtBlock - { - $$.fdef = new MethodDef(false, $2.ident, $1.type, $4.vlist, (Block) $6.stmt, $2.loc); - } - ; - -StmtBlock : '{' StmtList '}' - { - $$.stmt = new Block($2.slist, $1.loc); - } - ; - -StmtList : StmtList Stmt - { - $$.slist.add($2.stmt); - } - | /* empty */ - { - $$ = new SemValue(); - $$.slist = new ArrayList(); - } - ; - -Stmt : VariableDef - { - $$.stmt = $1.vdef; - } - - | SimpleStmt ';' - { - if ($$.stmt == null) { - $$.stmt = new Tree.Skip($2.loc); - } - } - | IfStmt - | WhileStmt - | ForStmt - | ReturnStmt ';' - | PrintStmt ';' - | BreakStmt ';' - | StmtBlock - | GuardedIFStmt - | GuaededDOStmt - ; - -GuardedES : Expr ':' Stmt - { - $$.guardedES = new Tree.GuardedES($1.expr , $3.stmt , $2.loc); - } - ; - -GuardedStmts : GuardedES - { - - $$.myList = new ArrayList(); - $$.myList.add($1.guardedES); - } - | - GuardedStmts TRIBLE_OR GuardedES - { - - $$.myList.add($3.guardedES); - } - ; - -GuardedIFStmt : IF GuardedStmts FI - { - $$.stmt = new Tree.GuardedIFStmt($2.myList , $1.loc); - } - ; - -GuaededDOStmt : DO GuardedStmts OD - { - $$.stmt = new Tree.GuardedDOStmt($2.myList , $1.loc); - } - ; - -SimpleStmt : LValue '=' Expr - { - $$.stmt = new Tree.Assign($1.lvalue, $3.expr, $2.loc); - } - | Call - { - $$.stmt = new Tree.Exec($1.expr, $1.loc); - } - | /* empty */ - { - $$ = new SemValue(); - } - ; - -Receiver : Expr '.' - | /* empty */ - { - $$ = new SemValue(); - } - ; - -LValue : Receiver IDENTIFIER - { - $$.lvalue = new Tree.Ident($1.expr, $2.ident, $2.loc); - if ($1.loc == null) { - $$.loc = $2.loc; - } - } - | Expr '[' Expr ']' - { - $$.lvalue = new Tree.Indexed($1.expr, $3.expr, $1.loc); - } - ; - -Call : Receiver IDENTIFIER '(' Actuals ')' - { - $$.expr = new Tree.CallExpr($1.expr, $2.ident, $4.elist, $2.loc); - if ($1.loc == null) { - $$.loc = $2.loc; - } - } - ; - -Expr : LValue - { - $$.expr = $1.lvalue; - } - | Call - | Constant - | Expr '+' Expr - { - $$.expr = new Tree.Binary(Tree.PLUS, $1.expr, $3.expr, $2.loc); - } - | Expr '-' Expr - { - $$.expr = new Tree.Binary(Tree.MINUS, $1.expr, $3.expr, $2.loc); - } - | Expr '*' Expr - { - $$.expr = new Tree.Binary(Tree.MUL, $1.expr, $3.expr, $2.loc); - } - | Expr '/' Expr - { - $$.expr = new Tree.Binary(Tree.DIV, $1.expr, $3.expr, $2.loc); - } - | Expr '%' Expr - { - $$.expr = new Tree.Binary(Tree.MOD, $1.expr, $3.expr, $2.loc); - } - | Expr EQUAL Expr - { - $$.expr = new Tree.Binary(Tree.EQ, $1.expr, $3.expr, $2.loc); - } - | Expr NOT_EQUAL Expr - { - $$.expr = new Tree.Binary(Tree.NE, $1.expr, $3.expr, $2.loc); - } - | Expr '<' Expr - { - $$.expr = new Tree.Binary(Tree.LT, $1.expr, $3.expr, $2.loc); - } - | Expr '>' Expr - { - $$.expr = new Tree.Binary(Tree.GT, $1.expr, $3.expr, $2.loc); - } - | Expr LESS_EQUAL Expr - { - $$.expr = new Tree.Binary(Tree.LE, $1.expr, $3.expr, $2.loc); - } - | Expr GREATER_EQUAL Expr - { - $$.expr = new Tree.Binary(Tree.GE, $1.expr, $3.expr, $2.loc); - } - | Expr AND Expr - { - $$.expr = new Tree.Binary(Tree.AND, $1.expr, $3.expr, $2.loc); - } - | Expr OR Expr - { - $$.expr = new Tree.Binary(Tree.OR, $1.expr, $3.expr, $2.loc); - } - | '(' Expr ')' - { - $$ = $2; - } - | '-' Expr %prec UMINUS - { - $$.expr = new Tree.Unary(Tree.NEG, $2.expr, $1.loc); - } - | '!' Expr - { - $$.expr = new Tree.Unary(Tree.NOT, $2.expr, $1.loc); - } - | READ_INTEGER '(' ')' - { - $$.expr = new Tree.ReadIntExpr($1.loc); - } - | READ_LINE '(' ')' - { - $$.expr = new Tree.ReadLineExpr($1.loc); - } - | THIS - { - $$.expr = new Tree.ThisExpr($1.loc); - } - | NEW IDENTIFIER '(' ')' - { - $$.expr = new Tree.NewClass($2.ident, $1.loc); - } - | NEW Type '[' Expr ']' - { - $$.expr = new Tree.NewArray($2.type, $4.expr, $1.loc); - } - | INSTANCEOF '(' Expr ',' IDENTIFIER ')' - { - $$.expr = new Tree.TypeTest($3.expr, $5.ident, $1.loc); - } - | '(' CLASS IDENTIFIER ')' Expr - { - $$.expr = new Tree.TypeCast($3.ident, $5.expr, $5.loc); - } - | Expr DOUBLE_PLUS - { - $$.expr = new Tree.Unary(Tree.POSTINC, $1.expr, $1.loc); - } - | DOUBLE_PLUS Expr - { - $$.expr = new Tree.Unary(Tree.PREINC, $2.expr, $2.loc); - } - | Expr DOUBLE_MINUS - { - $$.expr = new Tree.Unary(Tree.POSTDEC, $1.expr, $1.loc); - } - | DOUBLE_MINUS Expr - { - $$.expr = new Tree.Unary(Tree.PREDEC, $2.expr, $2.loc); - } - | Expr '?' Expr ':' Expr - { - $$.expr = new Tree.QuestionAndColon(Tree.QUESTION_COLON, $1.expr, $3.expr, $5.expr, $1.loc); - } - | NUMINSTANCES '(' IDENTIFIER ')' - { - $$.expr = new Tree.NumTest($3.ident, $1.loc); - } - ; - -Constant : LITERAL - { - $$.expr = new Tree.Literal($1.typeTag, $1.literal, $1.loc); - } - | NULL - { - $$.expr = new Null($1.loc); - } - ; - -Actuals : ExprList - | /* empty */ - { - $$ = new SemValue(); - $$.elist = new ArrayList(); - } - ; - -ExprList : ExprList ',' Expr - { - $$.elist.add($3.expr); - } - | Expr - { - $$.elist = new ArrayList(); - $$.elist.add($1.expr); - } - ; - -WhileStmt : WHILE '(' Expr ')' Stmt - { - $$.stmt = new Tree.WhileLoop($3.expr, $5.stmt, $1.loc); - } - ; - -ForStmt : FOR '(' SimpleStmt ';' Expr ';' SimpleStmt ')' Stmt - { - $$.stmt = new Tree.ForLoop($3.stmt, $5.expr, $7.stmt, $9.stmt, $1.loc); - } - ; - -BreakStmt : BREAK - { - $$.stmt = new Tree.Break($1.loc); - } - ; - -IfStmt : IF '(' Expr ')' Stmt ElseClause - { - $$.stmt = new Tree.If($3.expr, $5.stmt, $6.stmt, $1.loc); - } - ; - -ElseClause : ELSE Stmt - { - $$.stmt = $2.stmt; - } - | /* empty */ %prec EMPTY - { - $$ = new SemValue(); - } - ; - -ReturnStmt : RETURN Expr - { - $$.stmt = new Tree.Return($2.expr, $1.loc); - } - | RETURN - { - $$.stmt = new Tree.Return(null, $1.loc); - } - ; - -PrintStmt : PRINT '(' ExprList ')' - { - $$.stmt = new Print($3.elist, $1.loc); - } - ; - -%% - - /** - * 打印当前归约所用的语法规则
- * 请勿修改。 - */ - public boolean onReduce(String rule) { - if (rule.startsWith("$$")) - return false; - else - rule = rule.replaceAll(" \\$\\$\\d+", ""); - - if (rule.endsWith(":")) - System.out.println(rule + " "); - else - System.out.println(rule); - return false; - } - - public void diagnose() { - addReduceListener(this); - yyparse(); - } \ No newline at end of file diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/frontend/ParserHelper.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/frontend/ParserHelper.class" deleted file mode 100644 index f59f53bb0..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/frontend/ParserHelper.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/frontend/ReduceListener.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/frontend/ReduceListener.class" deleted file mode 100644 index dbc983372..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/frontend/ReduceListener.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/frontend/SemValue.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/frontend/SemValue.class" deleted file mode 100644 index a767bf30f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/frontend/SemValue.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/scope/ClassScope.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/scope/ClassScope.class" deleted file mode 100644 index c3a17ae14..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/scope/ClassScope.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/scope/FormalScope.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/scope/FormalScope.class" deleted file mode 100644 index c192a50a2..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/scope/FormalScope.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/scope/GlobalScope.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/scope/GlobalScope.class" deleted file mode 100644 index 60a1aedf2..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/scope/GlobalScope.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/scope/LocalScope.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/scope/LocalScope.class" deleted file mode 100644 index fe8c0e7d5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/scope/LocalScope.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/scope/Scope$Kind.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/scope/Scope$Kind.class" deleted file mode 100644 index 126c52633..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/scope/Scope$Kind.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/scope/Scope.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/scope/Scope.class" deleted file mode 100644 index eb8ba9f55..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/scope/Scope.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/scope/ScopeStack.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/scope/ScopeStack.class" deleted file mode 100644 index a1a4a6ac8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/scope/ScopeStack.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/symbol/Class.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/symbol/Class.class" deleted file mode 100644 index 2e05e845a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/symbol/Class.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/symbol/Function.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/symbol/Function.class" deleted file mode 100644 index e79990884..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/symbol/Function.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/symbol/Symbol$1.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/symbol/Symbol$1.class" deleted file mode 100644 index b67897634..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/symbol/Symbol$1.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/symbol/Symbol$2.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/symbol/Symbol$2.class" deleted file mode 100644 index 365779170..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/symbol/Symbol$2.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/symbol/Symbol.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/symbol/Symbol.class" deleted file mode 100644 index 4e9f68b6f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/symbol/Symbol.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/symbol/Variable.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/symbol/Variable.class" deleted file mode 100644 index 8840c4ef8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/symbol/Variable.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Apply.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Apply.class" deleted file mode 100644 index 4392c988b..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Apply.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Assign.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Assign.class" deleted file mode 100644 index 8c7342da3..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Assign.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Binary.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Binary.class" deleted file mode 100644 index a654d0c7f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Binary.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Block.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Block.class" deleted file mode 100644 index 35e4f8e18..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Block.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Break.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Break.class" deleted file mode 100644 index 0ba459f6b..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Break.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$CallExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$CallExpr.class" deleted file mode 100644 index 9715279a7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$CallExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$ClassDef.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$ClassDef.class" deleted file mode 100644 index b58bb1666..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$ClassDef.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Exec.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Exec.class" deleted file mode 100644 index fdee04c30..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Exec.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Expr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Expr.class" deleted file mode 100644 index 7a7b6618c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Expr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$ForLoop.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$ForLoop.class" deleted file mode 100644 index d6803d5f9..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$ForLoop.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$GuardedDOStmt.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$GuardedDOStmt.class" deleted file mode 100644 index c7054f133..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$GuardedDOStmt.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$GuardedES.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$GuardedES.class" deleted file mode 100644 index 8482d838b..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$GuardedES.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$GuardedIFStmt.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$GuardedIFStmt.class" deleted file mode 100644 index 945d094c0..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$GuardedIFStmt.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Ident.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Ident.class" deleted file mode 100644 index 175910c97..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Ident.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$If.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$If.class" deleted file mode 100644 index 93f829f2e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$If.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Indexed.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Indexed.class" deleted file mode 100644 index f7d24ffea..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Indexed.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$LValue$Kind.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$LValue$Kind.class" deleted file mode 100644 index 1122a2fc7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$LValue$Kind.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$LValue.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$LValue.class" deleted file mode 100644 index 61a6ba6bf..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$LValue.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Literal.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Literal.class" deleted file mode 100644 index b6f421f64..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Literal.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$MethodDef.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$MethodDef.class" deleted file mode 100644 index d1432f2f2..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$MethodDef.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$NewArray.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$NewArray.class" deleted file mode 100644 index e2769b7f1..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$NewArray.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$NewClass.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$NewClass.class" deleted file mode 100644 index c938fc56e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$NewClass.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Null.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Null.class" deleted file mode 100644 index 569cdd5ea..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Null.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$NumTest.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$NumTest.class" deleted file mode 100644 index bf5784a09..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$NumTest.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Print.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Print.class" deleted file mode 100644 index a89fbebfa..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Print.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$QuestionAndColon.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$QuestionAndColon.class" deleted file mode 100644 index a9f915283..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$QuestionAndColon.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$ReadIntExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$ReadIntExpr.class" deleted file mode 100644 index dee468ed3..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$ReadIntExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$ReadLineExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$ReadLineExpr.class" deleted file mode 100644 index a9996e198..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$ReadLineExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Return.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Return.class" deleted file mode 100644 index 9260b02d2..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Return.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Skip.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Skip.class" deleted file mode 100644 index adf24e32b..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Skip.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$ThisExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$ThisExpr.class" deleted file mode 100644 index 6c0c45d43..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$ThisExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$TopLevel.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$TopLevel.class" deleted file mode 100644 index 6c23937bf..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$TopLevel.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$TypeArray.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$TypeArray.class" deleted file mode 100644 index e38b2ef29..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$TypeArray.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$TypeCast.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$TypeCast.class" deleted file mode 100644 index 8a5179f43..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$TypeCast.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$TypeClass.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$TypeClass.class" deleted file mode 100644 index 3dcc3ebcc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$TypeClass.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$TypeIdent.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$TypeIdent.class" deleted file mode 100644 index 8b945bfcb..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$TypeIdent.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$TypeLiteral.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$TypeLiteral.class" deleted file mode 100644 index 7063a3b36..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$TypeLiteral.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$TypeTest.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$TypeTest.class" deleted file mode 100644 index 7ab40730a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$TypeTest.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Unary.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Unary.class" deleted file mode 100644 index 2a107e4ec..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Unary.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$VarDef.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$VarDef.class" deleted file mode 100644 index 4a7d0dd62..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$VarDef.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Visitor.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Visitor.class" deleted file mode 100644 index 3f946eba5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$Visitor.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$WhileLoop.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$WhileLoop.class" deleted file mode 100644 index c5c20b083..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree$WhileLoop.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree.class" deleted file mode 100644 index 4364b09e1..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/tree/Tree.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/type/ArrayType.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/type/ArrayType.class" deleted file mode 100644 index eb9d71b4d..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/type/ArrayType.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/type/BaseType.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/type/BaseType.class" deleted file mode 100644 index d23009203..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/type/BaseType.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/type/ClassType.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/type/ClassType.class" deleted file mode 100644 index 9b69c54c1..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/type/ClassType.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/type/FuncType.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/type/FuncType.class" deleted file mode 100644 index bcab2bdda..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/type/FuncType.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/type/Type.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/type/Type.class" deleted file mode 100644 index 30ef7ae03..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/type/Type.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/typecheck/BuildSym.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/typecheck/BuildSym.class" deleted file mode 100644 index 9c6d74771..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/typecheck/BuildSym.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/typecheck/TypeCheck.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/typecheck/TypeCheck.class" deleted file mode 100644 index f97c6bc9c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/typecheck/TypeCheck.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/utils/IndentPrintWriter.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/utils/IndentPrintWriter.class" deleted file mode 100644 index 0bd6a13a7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/utils/IndentPrintWriter.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/utils/MiscUtils.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/utils/MiscUtils.class" deleted file mode 100644 index e0645130f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/bin/decaf/utils/MiscUtils.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/Driver$1.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/Driver$1.class" deleted file mode 100644 index ac967cc1c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/Driver$1.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/Driver.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/Driver.class" deleted file mode 100644 index 349b67695..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/Driver.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/Location.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/Location.class" deleted file mode 100644 index 6badcb17c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/Location.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/Option$Level.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/Option$Level.class" deleted file mode 100644 index b785ae7c5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/Option$Level.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/Option.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/Option.class" deleted file mode 100644 index fd8e166a4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/Option.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/BadArgCountError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/BadArgCountError.class" deleted file mode 100644 index f662e0cf8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/BadArgCountError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/BadArgTypeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/BadArgTypeError.class" deleted file mode 100644 index 393dc7353..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/BadArgTypeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/BadArrElementError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/BadArrElementError.class" deleted file mode 100644 index 4401c85dd..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/BadArrElementError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/BadInheritanceError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/BadInheritanceError.class" deleted file mode 100644 index 25c822cb7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/BadInheritanceError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/BadLengthArgError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/BadLengthArgError.class" deleted file mode 100644 index 40a61d226..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/BadLengthArgError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/BadLengthError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/BadLengthError.class" deleted file mode 100644 index 6522300bb..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/BadLengthError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/BadNewArrayLength.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/BadNewArrayLength.class" deleted file mode 100644 index 4896b6f26..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/BadNewArrayLength.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/BadOverrideError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/BadOverrideError.class" deleted file mode 100644 index 0736b0cfb..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/BadOverrideError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/BadPrintArgError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/BadPrintArgError.class" deleted file mode 100644 index 4d3a7cffc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/BadPrintArgError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/BadReturnTypeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/BadReturnTypeError.class" deleted file mode 100644 index 5ae7b14de..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/BadReturnTypeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/BadTestExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/BadTestExpr.class" deleted file mode 100644 index 877a9c2ca..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/BadTestExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/BadVarTypeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/BadVarTypeError.class" deleted file mode 100644 index c50206763..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/BadVarTypeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/BreakOutOfLoopError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/BreakOutOfLoopError.class" deleted file mode 100644 index dd1b42e05..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/BreakOutOfLoopError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/ClassNotFoundError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/ClassNotFoundError.class" deleted file mode 100644 index 8c23cd0c6..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/ClassNotFoundError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/DecafError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/DecafError.class" deleted file mode 100644 index 56d8b7084..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/DecafError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/DeclConflictError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/DeclConflictError.class" deleted file mode 100644 index f4b87bcc4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/DeclConflictError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/DifferentTypeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/DifferentTypeError.class" deleted file mode 100644 index 969c0c63d..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/DifferentTypeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/FieldNotAccessError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/FieldNotAccessError.class" deleted file mode 100644 index 96111e8a6..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/FieldNotAccessError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/FieldNotFoundError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/FieldNotFoundError.class" deleted file mode 100644 index f1560c48f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/FieldNotFoundError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/IncompatBinOpError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/IncompatBinOpError.class" deleted file mode 100644 index 4bbed59e7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/IncompatBinOpError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/IncompatUnOpError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/IncompatUnOpError.class" deleted file mode 100644 index f5a9e31bc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/IncompatUnOpError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/IntTooLargeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/IntTooLargeError.class" deleted file mode 100644 index 44931104f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/IntTooLargeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/MsgError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/MsgError.class" deleted file mode 100644 index 080cb6161..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/MsgError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/NewlineInStrError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/NewlineInStrError.class" deleted file mode 100644 index 250e6b9ac..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/NewlineInStrError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/NoMainClassError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/NoMainClassError.class" deleted file mode 100644 index 4e709a981..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/NoMainClassError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/NotArrayError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/NotArrayError.class" deleted file mode 100644 index 28d40b882..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/NotArrayError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/NotClassError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/NotClassError.class" deleted file mode 100644 index 4ea6c47bc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/NotClassError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/NotClassFieldError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/NotClassFieldError.class" deleted file mode 100644 index bc05ae05a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/NotClassFieldError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/NotClassMethodError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/NotClassMethodError.class" deleted file mode 100644 index b6f9e584f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/NotClassMethodError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/OverridingVarError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/OverridingVarError.class" deleted file mode 100644 index 9f7e77981..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/OverridingVarError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/RefNonStaticError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/RefNonStaticError.class" deleted file mode 100644 index 73a781b4a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/RefNonStaticError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/RuntimeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/RuntimeError.class" deleted file mode 100644 index 55e3b77cf..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/RuntimeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/SubNotIntError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/SubNotIntError.class" deleted file mode 100644 index 364a3889a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/SubNotIntError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/ThisInStaticFuncError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/ThisInStaticFuncError.class" deleted file mode 100644 index e84ffa395..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/ThisInStaticFuncError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/UndeclVarError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/UndeclVarError.class" deleted file mode 100644 index d1945f289..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/UndeclVarError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/UnrecogCharError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/UnrecogCharError.class" deleted file mode 100644 index cf7857e28..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/UnrecogCharError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/UntermStrError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/UntermStrError.class" deleted file mode 100644 index 93edd524e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/error/UntermStrError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/frontend/BaseLexer.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/frontend/BaseLexer.class" deleted file mode 100644 index 106927055..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/frontend/BaseLexer.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/frontend/BaseParser.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/frontend/BaseParser.class" deleted file mode 100644 index 889ba4816..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/frontend/BaseParser.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/frontend/Lexer.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/frontend/Lexer.class" deleted file mode 100644 index 9e54762b3..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/frontend/Lexer.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/frontend/Parser.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/frontend/Parser.class" deleted file mode 100644 index e25bcc1ba..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/frontend/Parser.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/frontend/ParserHelper.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/frontend/ParserHelper.class" deleted file mode 100644 index 73f1690c2..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/frontend/ParserHelper.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/frontend/ReduceListener.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/frontend/ReduceListener.class" deleted file mode 100644 index 8dc1e198c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/frontend/ReduceListener.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/frontend/SemValue.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/frontend/SemValue.class" deleted file mode 100644 index 260dadcd0..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/frontend/SemValue.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/scope/ClassScope.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/scope/ClassScope.class" deleted file mode 100644 index 15a4b2480..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/scope/ClassScope.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/scope/FormalScope.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/scope/FormalScope.class" deleted file mode 100644 index 7f9d488bf..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/scope/FormalScope.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/scope/GlobalScope.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/scope/GlobalScope.class" deleted file mode 100644 index 500ab21fa..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/scope/GlobalScope.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/scope/LocalScope.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/scope/LocalScope.class" deleted file mode 100644 index b64836098..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/scope/LocalScope.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/scope/Scope$Kind.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/scope/Scope$Kind.class" deleted file mode 100644 index 3b4b6351a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/scope/Scope$Kind.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/scope/Scope.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/scope/Scope.class" deleted file mode 100644 index b57fdca02..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/scope/Scope.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/scope/ScopeStack$1.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/scope/ScopeStack$1.class" deleted file mode 100644 index a0f3b4987..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/scope/ScopeStack$1.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/scope/ScopeStack.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/scope/ScopeStack.class" deleted file mode 100644 index 1fcef768a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/scope/ScopeStack.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/symbol/Class.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/symbol/Class.class" deleted file mode 100644 index 23bb4ecdf..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/symbol/Class.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/symbol/Function.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/symbol/Function.class" deleted file mode 100644 index f0eebd662..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/symbol/Function.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/symbol/Symbol$1.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/symbol/Symbol$1.class" deleted file mode 100644 index e3693dbed..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/symbol/Symbol$1.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/symbol/Symbol$2.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/symbol/Symbol$2.class" deleted file mode 100644 index 80499c303..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/symbol/Symbol$2.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/symbol/Symbol.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/symbol/Symbol.class" deleted file mode 100644 index 1ff6891b4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/symbol/Symbol.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/symbol/Variable.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/symbol/Variable.class" deleted file mode 100644 index 223552560..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/symbol/Variable.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Apply.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Apply.class" deleted file mode 100644 index d09723a9e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Apply.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Assign.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Assign.class" deleted file mode 100644 index c9a1f58c8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Assign.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Binary.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Binary.class" deleted file mode 100644 index 0a2a2cae0..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Binary.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Block.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Block.class" deleted file mode 100644 index 08729653b..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Block.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Break.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Break.class" deleted file mode 100644 index a22ee38d8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Break.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$CallExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$CallExpr.class" deleted file mode 100644 index 5b011bfc9..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$CallExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$ClassDef.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$ClassDef.class" deleted file mode 100644 index 04ec8e86d..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$ClassDef.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Exec.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Exec.class" deleted file mode 100644 index 54f6737e5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Exec.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Expr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Expr.class" deleted file mode 100644 index 5b87daa78..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Expr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$ForLoop.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$ForLoop.class" deleted file mode 100644 index 8255dece0..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$ForLoop.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$GuardedDOStmt.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$GuardedDOStmt.class" deleted file mode 100644 index bd6c7fe0a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$GuardedDOStmt.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$GuardedES.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$GuardedES.class" deleted file mode 100644 index 173ef0ff7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$GuardedES.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$GuardedIFStmt.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$GuardedIFStmt.class" deleted file mode 100644 index 87e210050..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$GuardedIFStmt.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Ident.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Ident.class" deleted file mode 100644 index 7d5f3a0d0..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Ident.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$If.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$If.class" deleted file mode 100644 index 3db3e64fa..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$If.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Indexed.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Indexed.class" deleted file mode 100644 index 7fe909ebf..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Indexed.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$LValue$Kind.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$LValue$Kind.class" deleted file mode 100644 index ec909c113..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$LValue$Kind.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$LValue.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$LValue.class" deleted file mode 100644 index 52b7bd68b..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$LValue.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Literal.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Literal.class" deleted file mode 100644 index 92358e09e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Literal.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$MethodDef.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$MethodDef.class" deleted file mode 100644 index 8bd61f56f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$MethodDef.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$NewArray.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$NewArray.class" deleted file mode 100644 index 4f0bece6a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$NewArray.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$NewClass.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$NewClass.class" deleted file mode 100644 index 4483d941b..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$NewClass.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Null.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Null.class" deleted file mode 100644 index 79038e0f6..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Null.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$NumTest.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$NumTest.class" deleted file mode 100644 index 54a2881f3..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$NumTest.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Print.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Print.class" deleted file mode 100644 index 439991af4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Print.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$QuestionAndColon.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$QuestionAndColon.class" deleted file mode 100644 index bb2b6e184..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$QuestionAndColon.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$ReadIntExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$ReadIntExpr.class" deleted file mode 100644 index 8d790b4f7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$ReadIntExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$ReadLineExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$ReadLineExpr.class" deleted file mode 100644 index 102c31e6b..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$ReadLineExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Return.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Return.class" deleted file mode 100644 index 2f06c409b..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Return.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Skip.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Skip.class" deleted file mode 100644 index 4bde23fe5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Skip.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$ThisExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$ThisExpr.class" deleted file mode 100644 index 821045108..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$ThisExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$TopLevel.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$TopLevel.class" deleted file mode 100644 index 5263a8107..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$TopLevel.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$TypeArray.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$TypeArray.class" deleted file mode 100644 index c85a1e58c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$TypeArray.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$TypeCast.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$TypeCast.class" deleted file mode 100644 index 74c0b1d26..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$TypeCast.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$TypeClass.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$TypeClass.class" deleted file mode 100644 index 73c4508d9..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$TypeClass.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$TypeIdent.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$TypeIdent.class" deleted file mode 100644 index e13e14558..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$TypeIdent.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$TypeLiteral.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$TypeLiteral.class" deleted file mode 100644 index ae3723b1c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$TypeLiteral.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$TypeTest.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$TypeTest.class" deleted file mode 100644 index 749632b52..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$TypeTest.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Unary.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Unary.class" deleted file mode 100644 index 03b7e5fa9..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Unary.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$VarDef.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$VarDef.class" deleted file mode 100644 index 9e0040aeb..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$VarDef.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Visitor.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Visitor.class" deleted file mode 100644 index 4d1472416..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$Visitor.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$WhileLoop.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$WhileLoop.class" deleted file mode 100644 index dd6fc0eb4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree$WhileLoop.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree.class" deleted file mode 100644 index 1888722d9..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/tree/Tree.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/type/ArrayType.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/type/ArrayType.class" deleted file mode 100644 index 6f547e5a5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/type/ArrayType.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/type/BaseType.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/type/BaseType.class" deleted file mode 100644 index af07ac7fc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/type/BaseType.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/type/ClassType.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/type/ClassType.class" deleted file mode 100644 index 68ff18a99..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/type/ClassType.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/type/FuncType.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/type/FuncType.class" deleted file mode 100644 index dcd6be087..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/type/FuncType.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/type/Type.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/type/Type.class" deleted file mode 100644 index 88f93ceb8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/type/Type.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/typecheck/BuildSym.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/typecheck/BuildSym.class" deleted file mode 100644 index dd2dd631b..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/typecheck/BuildSym.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/typecheck/TypeCheck.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/typecheck/TypeCheck.class" deleted file mode 100644 index 83e793993..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/typecheck/TypeCheck.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/utils/IndentPrintWriter.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/utils/IndentPrintWriter.class" deleted file mode 100644 index 5b7d47cfe..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/utils/IndentPrintWriter.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/utils/MiscUtils.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/utils/MiscUtils.class" deleted file mode 100644 index c8920db8c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA2/result/bin/decaf/utils/MiscUtils.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/Driver$1.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/Driver$1.class" deleted file mode 100644 index 3ebcbcefb..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/Driver$1.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/Driver.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/Driver.class" deleted file mode 100644 index 8cb563934..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/Driver.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/Location.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/Location.class" deleted file mode 100644 index 3af1de5dc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/Location.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/Option$Level.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/Option$Level.class" deleted file mode 100644 index cd57a54fd..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/Option$Level.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/Option.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/Option.class" deleted file mode 100644 index 587df0bd8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/Option.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/backend/OffsetCounter$Kind.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/backend/OffsetCounter$Kind.class" deleted file mode 100644 index 3d14d4efb..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/backend/OffsetCounter$Kind.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/backend/OffsetCounter.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/backend/OffsetCounter.class" deleted file mode 100644 index 3a80a2eb5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/backend/OffsetCounter.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/BadArgCountError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/BadArgCountError.class" deleted file mode 100644 index 62d4c7e5a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/BadArgCountError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/BadArgTypeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/BadArgTypeError.class" deleted file mode 100644 index e7ab06ac5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/BadArgTypeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/BadArrElementError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/BadArrElementError.class" deleted file mode 100644 index ab43b7306..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/BadArrElementError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/BadInheritanceError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/BadInheritanceError.class" deleted file mode 100644 index 231953b26..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/BadInheritanceError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/BadLengthArgError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/BadLengthArgError.class" deleted file mode 100644 index a774247a2..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/BadLengthArgError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/BadLengthError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/BadLengthError.class" deleted file mode 100644 index b4d946ed3..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/BadLengthError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/BadNewArrayLength.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/BadNewArrayLength.class" deleted file mode 100644 index b868a4bc5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/BadNewArrayLength.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/BadOverrideError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/BadOverrideError.class" deleted file mode 100644 index 77df4ddb9..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/BadOverrideError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/BadPrintArgError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/BadPrintArgError.class" deleted file mode 100644 index 06069b8d7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/BadPrintArgError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/BadReturnTypeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/BadReturnTypeError.class" deleted file mode 100644 index eee796086..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/BadReturnTypeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/BadTestExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/BadTestExpr.class" deleted file mode 100644 index 3708efa02..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/BadTestExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/BadVarTypeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/BadVarTypeError.class" deleted file mode 100644 index 8536cf723..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/BadVarTypeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/BreakOutOfLoopError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/BreakOutOfLoopError.class" deleted file mode 100644 index 596de2e0c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/BreakOutOfLoopError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/ClassNotFoundError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/ClassNotFoundError.class" deleted file mode 100644 index a513b49ac..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/ClassNotFoundError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/DecafError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/DecafError.class" deleted file mode 100644 index 8d792b1b7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/DecafError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/DeclConflictError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/DeclConflictError.class" deleted file mode 100644 index f125b9b92..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/DeclConflictError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/DifferentTypeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/DifferentTypeError.class" deleted file mode 100644 index 71a044a01..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/DifferentTypeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/FieldNotAccessError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/FieldNotAccessError.class" deleted file mode 100644 index 1903553c4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/FieldNotAccessError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/FieldNotFoundError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/FieldNotFoundError.class" deleted file mode 100644 index c7791c9cf..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/FieldNotFoundError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/IncompatBinOpError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/IncompatBinOpError.class" deleted file mode 100644 index c3595bbda..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/IncompatBinOpError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/IncompatUnOpError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/IncompatUnOpError.class" deleted file mode 100644 index a86e3f449..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/IncompatUnOpError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/IntTooLargeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/IntTooLargeError.class" deleted file mode 100644 index 598a0b28c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/IntTooLargeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/MsgError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/MsgError.class" deleted file mode 100644 index 60ccd4898..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/MsgError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/NewlineInStrError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/NewlineInStrError.class" deleted file mode 100644 index 6568e7683..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/NewlineInStrError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/NoMainClassError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/NoMainClassError.class" deleted file mode 100644 index b3717b7f4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/NoMainClassError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/NotArrayError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/NotArrayError.class" deleted file mode 100644 index fb86c4eb6..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/NotArrayError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/NotClassError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/NotClassError.class" deleted file mode 100644 index f69933161..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/NotClassError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/NotClassFieldError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/NotClassFieldError.class" deleted file mode 100644 index 05ce115b1..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/NotClassFieldError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/NotClassMethodError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/NotClassMethodError.class" deleted file mode 100644 index 238090b9c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/NotClassMethodError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/OverridingVarError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/OverridingVarError.class" deleted file mode 100644 index 41fb1522a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/OverridingVarError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/RefNonStaticError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/RefNonStaticError.class" deleted file mode 100644 index 20adfbb06..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/RefNonStaticError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/RuntimeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/RuntimeError.class" deleted file mode 100644 index 6d31028c9..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/RuntimeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/SubNotIntError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/SubNotIntError.class" deleted file mode 100644 index 1c042cda4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/SubNotIntError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/ThisInStaticFuncError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/ThisInStaticFuncError.class" deleted file mode 100644 index 7751be2e5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/ThisInStaticFuncError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/UndeclVarError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/UndeclVarError.class" deleted file mode 100644 index fe57e45e2..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/UndeclVarError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/UnrecogCharError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/UnrecogCharError.class" deleted file mode 100644 index cb9cc03ed..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/UnrecogCharError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/UntermStrError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/UntermStrError.class" deleted file mode 100644 index 4ef47d6b4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/error/UntermStrError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/frontend/BaseLexer.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/frontend/BaseLexer.class" deleted file mode 100644 index 0fc4c1a67..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/frontend/BaseLexer.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/frontend/BaseParser.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/frontend/BaseParser.class" deleted file mode 100644 index d6b562318..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/frontend/BaseParser.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/frontend/Lexer.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/frontend/Lexer.class" deleted file mode 100644 index 3d5537276..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/frontend/Lexer.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/frontend/Lexer.l" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/frontend/Lexer.l" deleted file mode 100644 index 72c0af5d4..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/frontend/Lexer.l" +++ /dev/null @@ -1,114 +0,0 @@ -/* - * 本文件是构造Decaf编译器所需要的JFlex输入脚本。 - * 在第一阶段,你需要完成这个脚本的内容,请参考"JFlex Manual"中关于如何编写JFlex脚本的说明。 - * - * 注意:在UNIX系统下你需要保证这个文件使用UNIX文本格式,可使用dos2unix命令进行文本各式转换。 - */ - -package decaf.frontend; - -import decaf.Location; -import decaf.error.*; -import decaf.utils.MiscUtils; - -%% -%public -%class Lexer -%extends BaseLexer -%byaccj -%line -%column -%switch -%unicode - -%{ - private Location sloc = null; - private StringBuilder buffer = new StringBuilder(); - - public Location getLocation() { - return new decaf.Location(yyline + 1, yycolumn + 1); - } -%} - -NEWLINE = (\r|\n|\r\n) -DIGIT = ([0-9]) -HEX_DIGIT = ([0-9A-Fa-f]) -HEX_INTEGER = (0[Xx]{HEX_DIGIT}+) -DEC_INTEGER = ({DIGIT}+) -INTEGER = ({HEX_INTEGER}|{DEC_INTEGER}) -IDENTIFIER = ([A-Za-z][_0-9A-Za-z]*) -SIMPLE_OPERATOR = ("+"|"-"|"*"|"/"|"%"|"="|"<"|">"|"."|","|";"|"!"|"("|")"|"["|"]"|"{"|"}"|"?"|":") -S_COMMENT = ("//"[^\r\n]*{NEWLINE}) -WHITESPACE = ([ \t]+) - - // 开始条件S表示字符串 -%x S - -%% - // 识别注释和空白字符的规则 -{WHITESPACE} { /* Just ignore */ } -{NEWLINE} { /* Just ignore */ } -{S_COMMENT} { /* Just ignore */ } - - - // 识别关键字的规则 -"void" { return keyword(Parser.VOID); } -"int" { return keyword(Parser.INT); } -"bool" { return keyword(Parser.BOOL); } -"string" { return keyword(Parser.STRING); } -"new" { return keyword(Parser.NEW); } -"null" { return keyword(Parser.NULL); } -"class" { return keyword(Parser.CLASS); } -"extends" { return keyword(Parser.EXTENDS); } -"this" { return keyword(Parser.THIS); } -"while" { return keyword(Parser.WHILE); } -"for" { return keyword(Parser.FOR); } -"if" { return keyword(Parser.IF); } -"else" { return keyword(Parser.ELSE); } -"return" { return keyword(Parser.RETURN); } -"break" { return keyword(Parser.BREAK); } -"Print" { return keyword(Parser.PRINT); } -"ReadInteger" { return keyword(Parser.READ_INTEGER); } -"ReadLine" { return keyword(Parser.READ_LINE); } -"static" { return keyword(Parser.STATIC); } -"instanceof" { return keyword(Parser.INSTANCEOF); } -"numinstances" { return keyword(Parser.NUMINSTANCES); } -"fi" { return keyword(Parser.FI); } -"od" { return keyword(Parser.OD); } -"do" { return keyword(Parser.DO); } - - // 识别操作符的规则 -"<=" { return operator(Parser.LESS_EQUAL); } -">=" { return operator(Parser.GREATER_EQUAL);} -"==" { return operator(Parser.EQUAL); } -"!=" { return operator(Parser.NOT_EQUAL); } -"&&" { return operator(Parser.AND); } -"||" { return operator(Parser.OR); } -"++" { return operator(Parser.DOUBLE_PLUS); } -"--" { return operator(Parser.DOUBLE_MINUS); } -{SIMPLE_OPERATOR} { return operator((int)yycharat(0)); } -"|||" { return keyword(Parser.TRIBLE_OR); } - - // 识别常数的规则 -"true" { return boolConst(true); } -"false" { return boolConst(false); } -{INTEGER} { return intConst(yytext()); } -\" { sloc = getLocation(); - yybegin(S); - buffer = new StringBuilder(); } -{NEWLINE} { issueError(new NewlineInStrError(sloc, MiscUtils.quote(buffer.toString())));} -<> { issueError(new UntermStrError(sloc, MiscUtils.quote(buffer.toString()))); - yybegin(YYINITIAL); } -\" { yybegin(YYINITIAL); - return StringConst(buffer.toString(), sloc); } -"\\n" { buffer.append('\n'); } -"\\t" { buffer.append('\t'); } -"\\\"" { buffer.append('"'); } -"\\\\" { buffer.append('\\'); } -. { buffer.append(yytext()); } - - // 识别标识符的规则 -{IDENTIFIER} { return identifier(yytext()); } - - // 上面规则不能识别的字符怎么处理 -. { issueError(new UnrecogCharError(getLocation(), yycharat(0))); } diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/frontend/Parser.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/frontend/Parser.class" deleted file mode 100644 index c396048d3..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/frontend/Parser.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/frontend/Parser.output" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/frontend/Parser.output" deleted file mode 100644 index 42d4894b4..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/frontend/Parser.output" +++ /dev/null @@ -1,3898 +0,0 @@ - 0 $accept : Program $end - - 1 Program : ClassList - - 2 ClassList : ClassList ClassDef - 3 | ClassDef - - 4 VariableDef : Variable ';' - - 5 Variable : Type IDENTIFIER - - 6 Type : INT - 7 | VOID - 8 | BOOL - 9 | STRING - 10 | CLASS IDENTIFIER - 11 | Type '[' ']' - - 12 ClassDef : CLASS IDENTIFIER ExtendsClause '{' FieldList '}' - - 13 ExtendsClause : EXTENDS IDENTIFIER - 14 | - - 15 FieldList : FieldList VariableDef - 16 | FieldList FunctionDef - 17 | - - 18 Formals : VariableList - 19 | - - 20 VariableList : VariableList ',' Variable - 21 | Variable - - 22 FunctionDef : STATIC Type IDENTIFIER '(' Formals ')' StmtBlock - 23 | Type IDENTIFIER '(' Formals ')' StmtBlock - - 24 StmtBlock : '{' StmtList '}' - - 25 StmtList : StmtList Stmt - 26 | - - 27 Stmt : VariableDef - 28 | SimpleStmt ';' - 29 | IfStmt - 30 | WhileStmt - 31 | ForStmt - 32 | ReturnStmt ';' - 33 | PrintStmt ';' - 34 | BreakStmt ';' - 35 | StmtBlock - 36 | GuardedIFStmt - 37 | GuaededDOStmt - - 38 GuardedES : Expr ':' Stmt - - 39 GuardedStmts : GuardedES - 40 | GuardedStmts TRIBLE_OR GuardedES - - 41 GuardedIFStmt : IF GuardedStmts FI - - 42 GuaededDOStmt : DO GuardedStmts OD - - 43 SimpleStmt : LValue '=' Expr - 44 | Call - 45 | - - 46 Receiver : Expr '.' - 47 | - - 48 LValue : Receiver IDENTIFIER - 49 | Expr '[' Expr ']' - - 50 Call : Receiver IDENTIFIER '(' Actuals ')' - - 51 Expr : LValue - 52 | Call - 53 | Constant - 54 | Expr '+' Expr - 55 | Expr '-' Expr - 56 | Expr '*' Expr - 57 | Expr '/' Expr - 58 | Expr '%' Expr - 59 | Expr EQUAL Expr - 60 | Expr NOT_EQUAL Expr - 61 | Expr '<' Expr - 62 | Expr '>' Expr - 63 | Expr LESS_EQUAL Expr - 64 | Expr GREATER_EQUAL Expr - 65 | Expr AND Expr - 66 | Expr OR Expr - 67 | '(' Expr ')' - 68 | '-' Expr - 69 | '!' Expr - 70 | READ_INTEGER '(' ')' - 71 | READ_LINE '(' ')' - 72 | THIS - 73 | NEW IDENTIFIER '(' ')' - 74 | NEW Type '[' Expr ']' - 75 | INSTANCEOF '(' Expr ',' IDENTIFIER ')' - 76 | '(' CLASS IDENTIFIER ')' Expr - 77 | Expr DOUBLE_PLUS - 78 | DOUBLE_PLUS Expr - 79 | Expr DOUBLE_MINUS - 80 | DOUBLE_MINUS Expr - 81 | Expr '?' Expr ':' Expr - 82 | NUMINSTANCES '(' IDENTIFIER ')' - - 83 Constant : LITERAL - 84 | NULL - - 85 Actuals : ExprList - 86 | - - 87 ExprList : ExprList ',' Expr - 88 | Expr - - 89 WhileStmt : WHILE '(' Expr ')' Stmt - - 90 ForStmt : FOR '(' SimpleStmt ';' Expr ';' SimpleStmt ')' Stmt - - 91 BreakStmt : BREAK - - 92 IfStmt : IF '(' Expr ')' Stmt ElseClause - - 93 ElseClause : ELSE Stmt - 94 | - - 95 ReturnStmt : RETURN Expr - 96 | RETURN - - 97 PrintStmt : PRINT '(' ExprList ')' - -state 0 - $accept : . Program $end (0) - - CLASS shift 1 - . error - - Program goto 2 - ClassList goto 3 - ClassDef goto 4 - - -state 1 - ClassDef : CLASS . IDENTIFIER ExtendsClause '{' FieldList '}' (12) - - IDENTIFIER shift 5 - . error - - -state 2 - $accept : Program . $end (0) - - $end accept - - -state 3 - Program : ClassList . (1) - ClassList : ClassList . ClassDef (2) - - CLASS shift 1 - $end reduce 1 - - ClassDef goto 6 - - -state 4 - ClassList : ClassDef . (3) - - . reduce 3 - - -state 5 - ClassDef : CLASS IDENTIFIER . ExtendsClause '{' FieldList '}' (12) - ExtendsClause : . (14) - - EXTENDS shift 7 - '{' reduce 14 - - ExtendsClause goto 8 - - -state 6 - ClassList : ClassList ClassDef . (2) - - . reduce 2 - - -state 7 - ExtendsClause : EXTENDS . IDENTIFIER (13) - - IDENTIFIER shift 9 - . error - - -state 8 - ClassDef : CLASS IDENTIFIER ExtendsClause . '{' FieldList '}' (12) - - '{' shift 10 - . error - - -state 9 - ExtendsClause : EXTENDS IDENTIFIER . (13) - - . reduce 13 - - -state 10 - ClassDef : CLASS IDENTIFIER ExtendsClause '{' . FieldList '}' (12) - FieldList : . (17) - - . reduce 17 - - FieldList goto 11 - - -state 11 - ClassDef : CLASS IDENTIFIER ExtendsClause '{' FieldList . '}' (12) - FieldList : FieldList . VariableDef (15) - FieldList : FieldList . FunctionDef (16) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - STATIC shift 17 - '}' shift 18 - . error - - VariableDef goto 19 - Variable goto 20 - Type goto 21 - FunctionDef goto 22 - - -state 12 - Type : VOID . (7) - - . reduce 7 - - -state 13 - Type : BOOL . (8) - - . reduce 8 - - -state 14 - Type : INT . (6) - - . reduce 6 - - -state 15 - Type : STRING . (9) - - . reduce 9 - - -state 16 - Type : CLASS . IDENTIFIER (10) - - IDENTIFIER shift 23 - . error - - -state 17 - FunctionDef : STATIC . Type IDENTIFIER '(' Formals ')' StmtBlock (22) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - . error - - Type goto 24 - - -state 18 - ClassDef : CLASS IDENTIFIER ExtendsClause '{' FieldList '}' . (12) - - . reduce 12 - - -state 19 - FieldList : FieldList VariableDef . (15) - - . reduce 15 - - -state 20 - VariableDef : Variable . ';' (4) - - ';' shift 25 - . error - - -state 21 - Variable : Type . IDENTIFIER (5) - Type : Type . '[' ']' (11) - FunctionDef : Type . IDENTIFIER '(' Formals ')' StmtBlock (23) - - IDENTIFIER shift 26 - '[' shift 27 - . error - - -state 22 - FieldList : FieldList FunctionDef . (16) - - . reduce 16 - - -state 23 - Type : CLASS IDENTIFIER . (10) - - . reduce 10 - - -state 24 - Type : Type . '[' ']' (11) - FunctionDef : STATIC Type . IDENTIFIER '(' Formals ')' StmtBlock (22) - - IDENTIFIER shift 28 - '[' shift 27 - . error - - -state 25 - VariableDef : Variable ';' . (4) - - . reduce 4 - - -state 26 - Variable : Type IDENTIFIER . (5) - FunctionDef : Type IDENTIFIER . '(' Formals ')' StmtBlock (23) - - '(' shift 29 - ';' reduce 5 - - -state 27 - Type : Type '[' . ']' (11) - - ']' shift 30 - . error - - -state 28 - FunctionDef : STATIC Type IDENTIFIER . '(' Formals ')' StmtBlock (22) - - '(' shift 31 - . error - - -state 29 - FunctionDef : Type IDENTIFIER '(' . Formals ')' StmtBlock (23) - Formals : . (19) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - ')' reduce 19 - - Variable goto 32 - Type goto 33 - Formals goto 34 - VariableList goto 35 - - -state 30 - Type : Type '[' ']' . (11) - - . reduce 11 - - -state 31 - FunctionDef : STATIC Type IDENTIFIER '(' . Formals ')' StmtBlock (22) - Formals : . (19) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - ')' reduce 19 - - Variable goto 32 - Type goto 33 - Formals goto 36 - VariableList goto 35 - - -state 32 - VariableList : Variable . (21) - - . reduce 21 - - -state 33 - Variable : Type . IDENTIFIER (5) - Type : Type . '[' ']' (11) - - IDENTIFIER shift 37 - '[' shift 27 - . error - - -state 34 - FunctionDef : Type IDENTIFIER '(' Formals . ')' StmtBlock (23) - - ')' shift 38 - . error - - -state 35 - Formals : VariableList . (18) - VariableList : VariableList . ',' Variable (20) - - ',' shift 39 - ')' reduce 18 - - -state 36 - FunctionDef : STATIC Type IDENTIFIER '(' Formals . ')' StmtBlock (22) - - ')' shift 40 - . error - - -state 37 - Variable : Type IDENTIFIER . (5) - - . reduce 5 - - -state 38 - FunctionDef : Type IDENTIFIER '(' Formals ')' . StmtBlock (23) - - '{' shift 41 - . error - - StmtBlock goto 42 - - -state 39 - VariableList : VariableList ',' . Variable (20) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - . error - - Variable goto 43 - Type goto 33 - - -state 40 - FunctionDef : STATIC Type IDENTIFIER '(' Formals ')' . StmtBlock (22) - - '{' shift 41 - . error - - StmtBlock goto 44 - - -state 41 - StmtBlock : '{' . StmtList '}' (24) - StmtList : . (26) - - . reduce 26 - - StmtList goto 45 - - -state 42 - FunctionDef : Type IDENTIFIER '(' Formals ')' StmtBlock . (23) - - . reduce 23 - - -state 43 - VariableList : VariableList ',' Variable . (20) - - . reduce 20 - - -state 44 - FunctionDef : STATIC Type IDENTIFIER '(' Formals ')' StmtBlock . (22) - - . reduce 22 - - -state 45 - StmtBlock : '{' StmtList . '}' (24) - StmtList : StmtList . Stmt (25) - SimpleStmt : . (45) - Receiver : . (47) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - NULL shift 46 - THIS shift 47 - WHILE shift 48 - FOR shift 49 - IF shift 50 - RETURN shift 51 - BREAK shift 52 - NEW shift 53 - PRINT shift 54 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - DO shift 62 - '-' shift 63 - '!' shift 64 - '(' shift 65 - '{' shift 41 - '}' shift 66 - IDENTIFIER reduce 47 - ';' reduce 45 - - VariableDef goto 67 - Variable goto 20 - Type goto 33 - StmtBlock goto 68 - Stmt goto 69 - SimpleStmt goto 70 - IfStmt goto 71 - WhileStmt goto 72 - ForStmt goto 73 - ReturnStmt goto 74 - PrintStmt goto 75 - BreakStmt goto 76 - GuardedIFStmt goto 77 - GuaededDOStmt goto 78 - Expr goto 79 - LValue goto 80 - Call goto 81 - Receiver goto 82 - Constant goto 83 - - -state 46 - Constant : NULL . (84) - - . reduce 84 - - -state 47 - Expr : THIS . (72) - - . reduce 72 - - -state 48 - WhileStmt : WHILE . '(' Expr ')' Stmt (89) - - '(' shift 84 - . error - - -state 49 - ForStmt : FOR . '(' SimpleStmt ';' Expr ';' SimpleStmt ')' Stmt (90) - - '(' shift 85 - . error - - -state 50 - GuardedIFStmt : IF . GuardedStmts FI (41) - IfStmt : IF . '(' Expr ')' Stmt ElseClause (92) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 86 - IDENTIFIER reduce 47 - - GuardedES goto 87 - Expr goto 88 - GuardedStmts goto 89 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 51 - ReturnStmt : RETURN . Expr (95) - ReturnStmt : RETURN . (96) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - ';' reduce 96 - - Expr goto 92 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 52 - BreakStmt : BREAK . (91) - - . reduce 91 - - -state 53 - Expr : NEW . IDENTIFIER '(' ')' (73) - Expr : NEW . Type '[' Expr ']' (74) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - IDENTIFIER shift 93 - . error - - Type goto 94 - - -state 54 - PrintStmt : PRINT . '(' ExprList ')' (97) - - '(' shift 95 - . error - - -state 55 - Expr : READ_INTEGER . '(' ')' (70) - - '(' shift 96 - . error - - -state 56 - Expr : READ_LINE . '(' ')' (71) - - '(' shift 97 - . error - - -state 57 - Constant : LITERAL . (83) - - . reduce 83 - - -state 58 - Expr : INSTANCEOF . '(' Expr ',' IDENTIFIER ')' (75) - - '(' shift 98 - . error - - -state 59 - Expr : NUMINSTANCES . '(' IDENTIFIER ')' (82) - - '(' shift 99 - . error - - -state 60 - Expr : DOUBLE_PLUS . Expr (78) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 100 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 61 - Expr : DOUBLE_MINUS . Expr (80) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 101 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 62 - GuaededDOStmt : DO . GuardedStmts OD (42) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - GuardedES goto 87 - Expr goto 88 - GuardedStmts goto 102 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 63 - Expr : '-' . Expr (68) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 103 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 64 - Expr : '!' . Expr (69) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 104 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 65 - Expr : '(' . Expr ')' (67) - Expr : '(' . CLASS IDENTIFIER ')' Expr (76) - Receiver : . (47) - - CLASS shift 105 - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 106 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 66 - StmtBlock : '{' StmtList '}' . (24) - - . reduce 24 - - -state 67 - Stmt : VariableDef . (27) - - . reduce 27 - - -state 68 - Stmt : StmtBlock . (35) - - . reduce 35 - - -state 69 - StmtList : StmtList Stmt . (25) - - . reduce 25 - - -state 70 - Stmt : SimpleStmt . ';' (28) - - ';' shift 107 - . error - - -state 71 - Stmt : IfStmt . (29) - - . reduce 29 - - -state 72 - Stmt : WhileStmt . (30) - - . reduce 30 - - -state 73 - Stmt : ForStmt . (31) - - . reduce 31 - - -state 74 - Stmt : ReturnStmt . ';' (32) - - ';' shift 108 - . error - - -state 75 - Stmt : PrintStmt . ';' (33) - - ';' shift 109 - . error - - -state 76 - Stmt : BreakStmt . ';' (34) - - ';' shift 110 - . error - - -state 77 - Stmt : GuardedIFStmt . (36) - - . reduce 36 - - -state 78 - Stmt : GuaededDOStmt . (37) - - . reduce 37 - - -state 79 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - '?' shift 128 - . error - - -state 80 - SimpleStmt : LValue . '=' Expr (43) - Expr : LValue . (51) - - '=' shift 129 - AND reduce 51 - OR reduce 51 - LESS_EQUAL reduce 51 - GREATER_EQUAL reduce 51 - EQUAL reduce 51 - NOT_EQUAL reduce 51 - DOUBLE_PLUS reduce 51 - DOUBLE_MINUS reduce 51 - '+' reduce 51 - '-' reduce 51 - '*' reduce 51 - '/' reduce 51 - '%' reduce 51 - '>' reduce 51 - '<' reduce 51 - '.' reduce 51 - '[' reduce 51 - '?' reduce 51 - - -state 81 - SimpleStmt : Call . (44) - Expr : Call . (52) - - AND reduce 52 - OR reduce 52 - LESS_EQUAL reduce 52 - GREATER_EQUAL reduce 52 - EQUAL reduce 52 - NOT_EQUAL reduce 52 - DOUBLE_PLUS reduce 52 - DOUBLE_MINUS reduce 52 - '+' reduce 52 - '-' reduce 52 - '*' reduce 52 - '/' reduce 52 - '%' reduce 52 - '>' reduce 52 - '<' reduce 52 - '.' reduce 52 - ';' reduce 44 - ')' reduce 44 - '[' reduce 52 - '?' reduce 52 - - -state 82 - LValue : Receiver . IDENTIFIER (48) - Call : Receiver . IDENTIFIER '(' Actuals ')' (50) - - IDENTIFIER shift 130 - . error - - -state 83 - Expr : Constant . (53) - - . reduce 53 - - -state 84 - WhileStmt : WHILE '(' . Expr ')' Stmt (89) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 131 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 85 - ForStmt : FOR '(' . SimpleStmt ';' Expr ';' SimpleStmt ')' Stmt (90) - SimpleStmt : . (45) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - ';' reduce 45 - - SimpleStmt goto 132 - Expr goto 79 - LValue goto 80 - Call goto 81 - Receiver goto 82 - Constant goto 83 - - -state 86 - Expr : '(' . Expr ')' (67) - Expr : '(' . CLASS IDENTIFIER ')' Expr (76) - IfStmt : IF '(' . Expr ')' Stmt ElseClause (92) - Receiver : . (47) - - CLASS shift 105 - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 133 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 87 - GuardedStmts : GuardedES . (39) - - . reduce 39 - - -state 88 - GuardedES : Expr . ':' Stmt (38) - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - '?' shift 128 - ':' shift 134 - . error - - -state 89 - GuardedStmts : GuardedStmts . TRIBLE_OR GuardedES (40) - GuardedIFStmt : IF GuardedStmts . FI (41) - - FI shift 135 - TRIBLE_OR shift 136 - . error - - -state 90 - Expr : LValue . (51) - - . reduce 51 - - -state 91 - Expr : Call . (52) - - . reduce 52 - - -state 92 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - ReturnStmt : RETURN Expr . (95) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - '?' shift 128 - ';' reduce 95 - - -state 93 - Expr : NEW IDENTIFIER . '(' ')' (73) - - '(' shift 137 - . error - - -state 94 - Type : Type . '[' ']' (11) - Expr : NEW Type . '[' Expr ']' (74) - - '[' shift 138 - . error - - -state 95 - PrintStmt : PRINT '(' . ExprList ')' (97) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 139 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - ExprList goto 140 - - -state 96 - Expr : READ_INTEGER '(' . ')' (70) - - ')' shift 141 - . error - - -state 97 - Expr : READ_LINE '(' . ')' (71) - - ')' shift 142 - . error - - -state 98 - Expr : INSTANCEOF '(' . Expr ',' IDENTIFIER ')' (75) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 143 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 99 - Expr : NUMINSTANCES '(' . IDENTIFIER ')' (82) - - IDENTIFIER shift 144 - . error - - -state 100 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : DOUBLE_PLUS Expr . (78) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - '.' shift 126 - '[' shift 127 - AND reduce 78 - OR reduce 78 - LESS_EQUAL reduce 78 - GREATER_EQUAL reduce 78 - EQUAL reduce 78 - NOT_EQUAL reduce 78 - '+' reduce 78 - '-' reduce 78 - '*' reduce 78 - '/' reduce 78 - '%' reduce 78 - '>' reduce 78 - '<' reduce 78 - ',' reduce 78 - ';' reduce 78 - ')' reduce 78 - ']' reduce 78 - '?' reduce 78 - ':' reduce 78 - - -state 101 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : DOUBLE_MINUS Expr . (80) - Expr : Expr . '?' Expr ':' Expr (81) - - '.' shift 126 - '[' shift 127 - AND reduce 80 - OR reduce 80 - LESS_EQUAL reduce 80 - GREATER_EQUAL reduce 80 - EQUAL reduce 80 - NOT_EQUAL reduce 80 - '+' reduce 80 - '-' reduce 80 - '*' reduce 80 - '/' reduce 80 - '%' reduce 80 - '>' reduce 80 - '<' reduce 80 - ',' reduce 80 - ';' reduce 80 - ')' reduce 80 - ']' reduce 80 - '?' reduce 80 - ':' reduce 80 - - -state 102 - GuardedStmts : GuardedStmts . TRIBLE_OR GuardedES (40) - GuaededDOStmt : DO GuardedStmts . OD (42) - - TRIBLE_OR shift 136 - OD shift 145 - . error - - -state 103 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : '-' Expr . (68) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '.' shift 126 - '[' shift 127 - AND reduce 68 - OR reduce 68 - LESS_EQUAL reduce 68 - GREATER_EQUAL reduce 68 - EQUAL reduce 68 - NOT_EQUAL reduce 68 - '+' reduce 68 - '-' reduce 68 - '*' reduce 68 - '/' reduce 68 - '%' reduce 68 - '>' reduce 68 - '<' reduce 68 - ',' reduce 68 - ';' reduce 68 - ')' reduce 68 - ']' reduce 68 - '?' reduce 68 - ':' reduce 68 - - -state 104 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : '!' Expr . (69) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '.' shift 126 - '[' shift 127 - AND reduce 69 - OR reduce 69 - LESS_EQUAL reduce 69 - GREATER_EQUAL reduce 69 - EQUAL reduce 69 - NOT_EQUAL reduce 69 - '+' reduce 69 - '-' reduce 69 - '*' reduce 69 - '/' reduce 69 - '%' reduce 69 - '>' reduce 69 - '<' reduce 69 - ',' reduce 69 - ';' reduce 69 - ')' reduce 69 - ']' reduce 69 - '?' reduce 69 - ':' reduce 69 - - -state 105 - Expr : '(' CLASS . IDENTIFIER ')' Expr (76) - - IDENTIFIER shift 146 - . error - - -state 106 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : '(' Expr . ')' (67) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - ')' shift 147 - '[' shift 127 - '?' shift 128 - . error - - -state 107 - Stmt : SimpleStmt ';' . (28) - - . reduce 28 - - -state 108 - Stmt : ReturnStmt ';' . (32) - - . reduce 32 - - -state 109 - Stmt : PrintStmt ';' . (33) - - . reduce 33 - - -state 110 - Stmt : BreakStmt ';' . (34) - - . reduce 34 - - -state 111 - Expr : Expr AND . Expr (65) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 148 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 112 - Expr : Expr OR . Expr (66) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 149 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 113 - Expr : Expr LESS_EQUAL . Expr (63) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 150 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 114 - Expr : Expr GREATER_EQUAL . Expr (64) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 151 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 115 - Expr : Expr EQUAL . Expr (59) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 152 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 116 - Expr : Expr NOT_EQUAL . Expr (60) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 153 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 117 - Expr : Expr DOUBLE_PLUS . (77) - - . reduce 77 - - -state 118 - Expr : Expr DOUBLE_MINUS . (79) - - . reduce 79 - - -state 119 - Expr : Expr '+' . Expr (54) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 154 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 120 - Expr : Expr '-' . Expr (55) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 155 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 121 - Expr : Expr '*' . Expr (56) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 156 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 122 - Expr : Expr '/' . Expr (57) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 157 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 123 - Expr : Expr '%' . Expr (58) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 158 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 124 - Expr : Expr '>' . Expr (62) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 159 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 125 - Expr : Expr '<' . Expr (61) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 160 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 126 - Receiver : Expr '.' . (46) - - . reduce 46 - - -state 127 - LValue : Expr '[' . Expr ']' (49) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 161 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 128 - Expr : Expr '?' . Expr ':' Expr (81) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 162 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 129 - SimpleStmt : LValue '=' . Expr (43) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 163 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 130 - LValue : Receiver IDENTIFIER . (48) - Call : Receiver IDENTIFIER . '(' Actuals ')' (50) - - '(' shift 164 - AND reduce 48 - OR reduce 48 - LESS_EQUAL reduce 48 - GREATER_EQUAL reduce 48 - EQUAL reduce 48 - NOT_EQUAL reduce 48 - DOUBLE_PLUS reduce 48 - DOUBLE_MINUS reduce 48 - '+' reduce 48 - '-' reduce 48 - '*' reduce 48 - '/' reduce 48 - '%' reduce 48 - '=' reduce 48 - '>' reduce 48 - '<' reduce 48 - '.' reduce 48 - ',' reduce 48 - ';' reduce 48 - ')' reduce 48 - '[' reduce 48 - ']' reduce 48 - '?' reduce 48 - ':' reduce 48 - - -state 131 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - WhileStmt : WHILE '(' Expr . ')' Stmt (89) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - ')' shift 165 - '[' shift 127 - '?' shift 128 - . error - - -state 132 - ForStmt : FOR '(' SimpleStmt . ';' Expr ';' SimpleStmt ')' Stmt (90) - - ';' shift 166 - . error - - -state 133 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : '(' Expr . ')' (67) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - IfStmt : IF '(' Expr . ')' Stmt ElseClause (92) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - ')' shift 167 - '[' shift 127 - '?' shift 128 - . error - - -state 134 - GuardedES : Expr ':' . Stmt (38) - SimpleStmt : . (45) - Receiver : . (47) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - NULL shift 46 - THIS shift 47 - WHILE shift 48 - FOR shift 49 - IF shift 50 - RETURN shift 51 - BREAK shift 52 - NEW shift 53 - PRINT shift 54 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - DO shift 62 - '-' shift 63 - '!' shift 64 - '(' shift 65 - '{' shift 41 - IDENTIFIER reduce 47 - ';' reduce 45 - - VariableDef goto 67 - Variable goto 20 - Type goto 33 - StmtBlock goto 68 - Stmt goto 168 - SimpleStmt goto 70 - IfStmt goto 71 - WhileStmt goto 72 - ForStmt goto 73 - ReturnStmt goto 74 - PrintStmt goto 75 - BreakStmt goto 76 - GuardedIFStmt goto 77 - GuaededDOStmt goto 78 - Expr goto 79 - LValue goto 80 - Call goto 81 - Receiver goto 82 - Constant goto 83 - - -state 135 - GuardedIFStmt : IF GuardedStmts FI . (41) - - . reduce 41 - - -state 136 - GuardedStmts : GuardedStmts TRIBLE_OR . GuardedES (40) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - GuardedES goto 169 - Expr goto 88 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 137 - Expr : NEW IDENTIFIER '(' . ')' (73) - - ')' shift 170 - . error - - -state 138 - Type : Type '[' . ']' (11) - Expr : NEW Type '[' . Expr ']' (74) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - ']' shift 30 - IDENTIFIER reduce 47 - - Expr goto 171 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 139 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - ExprList : Expr . (88) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - '?' shift 128 - ',' reduce 88 - ')' reduce 88 - - -state 140 - ExprList : ExprList . ',' Expr (87) - PrintStmt : PRINT '(' ExprList . ')' (97) - - ',' shift 172 - ')' shift 173 - . error - - -state 141 - Expr : READ_INTEGER '(' ')' . (70) - - . reduce 70 - - -state 142 - Expr : READ_LINE '(' ')' . (71) - - . reduce 71 - - -state 143 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : INSTANCEOF '(' Expr . ',' IDENTIFIER ')' (75) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - ',' shift 174 - '[' shift 127 - '?' shift 128 - . error - - -state 144 - Expr : NUMINSTANCES '(' IDENTIFIER . ')' (82) - - ')' shift 175 - . error - - -state 145 - GuaededDOStmt : DO GuardedStmts OD . (42) - - . reduce 42 - - -state 146 - Expr : '(' CLASS IDENTIFIER . ')' Expr (76) - - ')' shift 176 - . error - - -state 147 - Expr : '(' Expr ')' . (67) - - . reduce 67 - - -state 148 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr AND Expr . (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - AND reduce 65 - OR reduce 65 - ',' reduce 65 - ';' reduce 65 - ')' reduce 65 - ']' reduce 65 - '?' reduce 65 - ':' reduce 65 - - -state 149 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr OR Expr . (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - AND shift 111 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - OR reduce 66 - ',' reduce 66 - ';' reduce 66 - ')' reduce 66 - ']' reduce 66 - '?' reduce 66 - ':' reduce 66 - - -state 150 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr LESS_EQUAL Expr . (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '.' shift 126 - '[' shift 127 - AND reduce 63 - OR reduce 63 - EQUAL reduce 63 - NOT_EQUAL reduce 63 - ',' reduce 63 - ';' reduce 63 - ')' reduce 63 - ']' reduce 63 - '?' reduce 63 - ':' reduce 63 - - -state 151 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr GREATER_EQUAL Expr . (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '.' shift 126 - '[' shift 127 - AND reduce 64 - OR reduce 64 - EQUAL reduce 64 - NOT_EQUAL reduce 64 - ',' reduce 64 - ';' reduce 64 - ')' reduce 64 - ']' reduce 64 - '?' reduce 64 - ':' reduce 64 - - -state 152 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr EQUAL Expr . (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - AND reduce 59 - OR reduce 59 - ',' reduce 59 - ';' reduce 59 - ')' reduce 59 - ']' reduce 59 - '?' reduce 59 - ':' reduce 59 - - -state 153 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr NOT_EQUAL Expr . (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - AND reduce 60 - OR reduce 60 - ',' reduce 60 - ';' reduce 60 - ')' reduce 60 - ']' reduce 60 - '?' reduce 60 - ':' reduce 60 - - -state 154 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr '+' Expr . (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '.' shift 126 - '[' shift 127 - AND reduce 54 - OR reduce 54 - LESS_EQUAL reduce 54 - GREATER_EQUAL reduce 54 - EQUAL reduce 54 - NOT_EQUAL reduce 54 - '+' reduce 54 - '-' reduce 54 - '>' reduce 54 - '<' reduce 54 - ',' reduce 54 - ';' reduce 54 - ')' reduce 54 - ']' reduce 54 - '?' reduce 54 - ':' reduce 54 - - -state 155 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr '-' Expr . (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '.' shift 126 - '[' shift 127 - AND reduce 55 - OR reduce 55 - LESS_EQUAL reduce 55 - GREATER_EQUAL reduce 55 - EQUAL reduce 55 - NOT_EQUAL reduce 55 - '+' reduce 55 - '-' reduce 55 - '>' reduce 55 - '<' reduce 55 - ',' reduce 55 - ';' reduce 55 - ')' reduce 55 - ']' reduce 55 - '?' reduce 55 - ':' reduce 55 - - -state 156 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr '*' Expr . (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '.' shift 126 - '[' shift 127 - AND reduce 56 - OR reduce 56 - LESS_EQUAL reduce 56 - GREATER_EQUAL reduce 56 - EQUAL reduce 56 - NOT_EQUAL reduce 56 - '+' reduce 56 - '-' reduce 56 - '*' reduce 56 - '/' reduce 56 - '%' reduce 56 - '>' reduce 56 - '<' reduce 56 - ',' reduce 56 - ';' reduce 56 - ')' reduce 56 - ']' reduce 56 - '?' reduce 56 - ':' reduce 56 - - -state 157 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr '/' Expr . (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '.' shift 126 - '[' shift 127 - AND reduce 57 - OR reduce 57 - LESS_EQUAL reduce 57 - GREATER_EQUAL reduce 57 - EQUAL reduce 57 - NOT_EQUAL reduce 57 - '+' reduce 57 - '-' reduce 57 - '*' reduce 57 - '/' reduce 57 - '%' reduce 57 - '>' reduce 57 - '<' reduce 57 - ',' reduce 57 - ';' reduce 57 - ')' reduce 57 - ']' reduce 57 - '?' reduce 57 - ':' reduce 57 - - -state 158 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr '%' Expr . (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '.' shift 126 - '[' shift 127 - AND reduce 58 - OR reduce 58 - LESS_EQUAL reduce 58 - GREATER_EQUAL reduce 58 - EQUAL reduce 58 - NOT_EQUAL reduce 58 - '+' reduce 58 - '-' reduce 58 - '*' reduce 58 - '/' reduce 58 - '%' reduce 58 - '>' reduce 58 - '<' reduce 58 - ',' reduce 58 - ';' reduce 58 - ')' reduce 58 - ']' reduce 58 - '?' reduce 58 - ':' reduce 58 - - -state 159 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr '>' Expr . (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '.' shift 126 - '[' shift 127 - AND reduce 62 - OR reduce 62 - EQUAL reduce 62 - NOT_EQUAL reduce 62 - ',' reduce 62 - ';' reduce 62 - ')' reduce 62 - ']' reduce 62 - '?' reduce 62 - ':' reduce 62 - - -state 160 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr '<' Expr . (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '.' shift 126 - '[' shift 127 - AND reduce 61 - OR reduce 61 - EQUAL reduce 61 - NOT_EQUAL reduce 61 - ',' reduce 61 - ';' reduce 61 - ')' reduce 61 - ']' reduce 61 - '?' reduce 61 - ':' reduce 61 - - -state 161 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - LValue : Expr '[' Expr . ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - ']' shift 177 - '?' shift 128 - . error - - -state 162 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - Expr : Expr '?' Expr . ':' Expr (81) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - '?' shift 128 - ':' shift 178 - . error - - -state 163 - SimpleStmt : LValue '=' Expr . (43) - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - '?' shift 128 - ';' reduce 43 - ')' reduce 43 - - -state 164 - Call : Receiver IDENTIFIER '(' . Actuals ')' (50) - Receiver : . (47) - Actuals : . (86) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - ')' reduce 86 - - Expr goto 139 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Actuals goto 179 - Constant goto 83 - ExprList goto 180 - - -state 165 - WhileStmt : WHILE '(' Expr ')' . Stmt (89) - SimpleStmt : . (45) - Receiver : . (47) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - NULL shift 46 - THIS shift 47 - WHILE shift 48 - FOR shift 49 - IF shift 50 - RETURN shift 51 - BREAK shift 52 - NEW shift 53 - PRINT shift 54 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - DO shift 62 - '-' shift 63 - '!' shift 64 - '(' shift 65 - '{' shift 41 - IDENTIFIER reduce 47 - ';' reduce 45 - - VariableDef goto 67 - Variable goto 20 - Type goto 33 - StmtBlock goto 68 - Stmt goto 181 - SimpleStmt goto 70 - IfStmt goto 71 - WhileStmt goto 72 - ForStmt goto 73 - ReturnStmt goto 74 - PrintStmt goto 75 - BreakStmt goto 76 - GuardedIFStmt goto 77 - GuaededDOStmt goto 78 - Expr goto 79 - LValue goto 80 - Call goto 81 - Receiver goto 82 - Constant goto 83 - - -state 166 - ForStmt : FOR '(' SimpleStmt ';' . Expr ';' SimpleStmt ')' Stmt (90) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 182 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 167 - Expr : '(' Expr ')' . (67) - IfStmt : IF '(' Expr ')' . Stmt ElseClause (92) - SimpleStmt : . (45) - Receiver : . (47) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - NULL shift 46 - THIS shift 47 - WHILE shift 48 - FOR shift 49 - IF shift 50 - RETURN shift 51 - BREAK shift 52 - NEW shift 53 - PRINT shift 54 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DO shift 62 - '!' shift 64 - '(' shift 65 - '{' shift 41 - IDENTIFIER reduce 47 - AND reduce 67 - OR reduce 67 - LESS_EQUAL reduce 67 - GREATER_EQUAL reduce 67 - EQUAL reduce 67 - NOT_EQUAL reduce 67 - DOUBLE_PLUS reduce 67 - DOUBLE_MINUS reduce 67 - '+' reduce 67 - '-' reduce 67 - '*' reduce 67 - '/' reduce 67 - '%' reduce 67 - '>' reduce 67 - '<' reduce 67 - '.' reduce 67 - ';' reduce 45 - '[' reduce 67 - '?' reduce 67 - ':' reduce 67 - - VariableDef goto 67 - Variable goto 20 - Type goto 33 - StmtBlock goto 68 - Stmt goto 183 - SimpleStmt goto 70 - IfStmt goto 71 - WhileStmt goto 72 - ForStmt goto 73 - ReturnStmt goto 74 - PrintStmt goto 75 - BreakStmt goto 76 - GuardedIFStmt goto 77 - GuaededDOStmt goto 78 - Expr goto 79 - LValue goto 80 - Call goto 81 - Receiver goto 82 - Constant goto 83 - - -state 168 - GuardedES : Expr ':' Stmt . (38) - - . reduce 38 - - -state 169 - GuardedStmts : GuardedStmts TRIBLE_OR GuardedES . (40) - - . reduce 40 - - -state 170 - Expr : NEW IDENTIFIER '(' ')' . (73) - - . reduce 73 - - -state 171 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : NEW Type '[' Expr . ']' (74) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - ']' shift 184 - '?' shift 128 - . error - - -state 172 - ExprList : ExprList ',' . Expr (87) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 185 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 173 - PrintStmt : PRINT '(' ExprList ')' . (97) - - . reduce 97 - - -state 174 - Expr : INSTANCEOF '(' Expr ',' . IDENTIFIER ')' (75) - - IDENTIFIER shift 186 - . error - - -state 175 - Expr : NUMINSTANCES '(' IDENTIFIER ')' . (82) - - . reduce 82 - - -state 176 - Expr : '(' CLASS IDENTIFIER ')' . Expr (76) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 187 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 177 - LValue : Expr '[' Expr ']' . (49) - - . reduce 49 - - -state 178 - Expr : Expr '?' Expr ':' . Expr (81) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - - Expr goto 188 - LValue goto 90 - Call goto 91 - Receiver goto 82 - Constant goto 83 - - -state 179 - Call : Receiver IDENTIFIER '(' Actuals . ')' (50) - - ')' shift 189 - . error - - -state 180 - Actuals : ExprList . (85) - ExprList : ExprList . ',' Expr (87) - - ',' shift 172 - ')' reduce 85 - - -state 181 - WhileStmt : WHILE '(' Expr ')' Stmt . (89) - - . reduce 89 - - -state 182 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - ForStmt : FOR '(' SimpleStmt ';' Expr . ';' SimpleStmt ')' Stmt (90) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - ';' shift 190 - '[' shift 127 - '?' shift 128 - . error - - -state 183 - IfStmt : IF '(' Expr ')' Stmt . ElseClause (92) - ElseClause : . (94) - - ELSE shift 191 - VOID reduce 94 - BOOL reduce 94 - INT reduce 94 - STRING reduce 94 - CLASS reduce 94 - NULL reduce 94 - THIS reduce 94 - WHILE reduce 94 - FOR reduce 94 - IF reduce 94 - RETURN reduce 94 - BREAK reduce 94 - NEW reduce 94 - PRINT reduce 94 - READ_INTEGER reduce 94 - READ_LINE reduce 94 - LITERAL reduce 94 - IDENTIFIER reduce 94 - INSTANCEOF reduce 94 - NUMINSTANCES reduce 94 - DOUBLE_PLUS reduce 94 - DOUBLE_MINUS reduce 94 - FI reduce 94 - TRIBLE_OR reduce 94 - DO reduce 94 - OD reduce 94 - '-' reduce 94 - ';' reduce 94 - '!' reduce 94 - '(' reduce 94 - '{' reduce 94 - '}' reduce 94 - - ElseClause goto 192 - - -state 184 - Expr : NEW Type '[' Expr ']' . (74) - - . reduce 74 - - -state 185 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - ExprList : ExprList ',' Expr . (87) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - '?' shift 128 - ',' reduce 87 - ')' reduce 87 - - -state 186 - Expr : INSTANCEOF '(' Expr ',' IDENTIFIER . ')' (75) - - ')' shift 193 - . error - - -state 187 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : '(' CLASS IDENTIFIER ')' Expr . (76) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - - . reduce 76 - - -188: shift/reduce conflict (shift 111, reduce 81) on AND -188: shift/reduce conflict (shift 112, reduce 81) on OR -188: shift/reduce conflict (shift 113, reduce 81) on LESS_EQUAL -188: shift/reduce conflict (shift 114, reduce 81) on GREATER_EQUAL -188: shift/reduce conflict (shift 115, reduce 81) on EQUAL -188: shift/reduce conflict (shift 116, reduce 81) on NOT_EQUAL -188: shift/reduce conflict (shift 117, reduce 81) on DOUBLE_PLUS -188: shift/reduce conflict (shift 118, reduce 81) on DOUBLE_MINUS -188: shift/reduce conflict (shift 119, reduce 81) on '+' -188: shift/reduce conflict (shift 120, reduce 81) on '-' -188: shift/reduce conflict (shift 121, reduce 81) on '*' -188: shift/reduce conflict (shift 122, reduce 81) on '/' -188: shift/reduce conflict (shift 123, reduce 81) on '%' -188: shift/reduce conflict (shift 124, reduce 81) on '>' -188: shift/reduce conflict (shift 125, reduce 81) on '<' -188: shift/reduce conflict (shift 126, reduce 81) on '.' -188: shift/reduce conflict (shift 127, reduce 81) on '[' -188: shift/reduce conflict (shift 128, reduce 81) on '?' -state 188 - Receiver : Expr . '.' (46) - LValue : Expr . '[' Expr ']' (49) - Expr : Expr . '+' Expr (54) - Expr : Expr . '-' Expr (55) - Expr : Expr . '*' Expr (56) - Expr : Expr . '/' Expr (57) - Expr : Expr . '%' Expr (58) - Expr : Expr . EQUAL Expr (59) - Expr : Expr . NOT_EQUAL Expr (60) - Expr : Expr . '<' Expr (61) - Expr : Expr . '>' Expr (62) - Expr : Expr . LESS_EQUAL Expr (63) - Expr : Expr . GREATER_EQUAL Expr (64) - Expr : Expr . AND Expr (65) - Expr : Expr . OR Expr (66) - Expr : Expr . DOUBLE_PLUS (77) - Expr : Expr . DOUBLE_MINUS (79) - Expr : Expr . '?' Expr ':' Expr (81) - Expr : Expr '?' Expr ':' Expr . (81) - - AND shift 111 - OR shift 112 - LESS_EQUAL shift 113 - GREATER_EQUAL shift 114 - EQUAL shift 115 - NOT_EQUAL shift 116 - DOUBLE_PLUS shift 117 - DOUBLE_MINUS shift 118 - '+' shift 119 - '-' shift 120 - '*' shift 121 - '/' shift 122 - '%' shift 123 - '>' shift 124 - '<' shift 125 - '.' shift 126 - '[' shift 127 - '?' shift 128 - ',' reduce 81 - ';' reduce 81 - ')' reduce 81 - ']' reduce 81 - ':' reduce 81 - - -state 189 - Call : Receiver IDENTIFIER '(' Actuals ')' . (50) - - . reduce 50 - - -state 190 - ForStmt : FOR '(' SimpleStmt ';' Expr ';' . SimpleStmt ')' Stmt (90) - SimpleStmt : . (45) - Receiver : . (47) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - '-' shift 63 - '!' shift 64 - '(' shift 65 - IDENTIFIER reduce 47 - ')' reduce 45 - - SimpleStmt goto 194 - Expr goto 79 - LValue goto 80 - Call goto 81 - Receiver goto 82 - Constant goto 83 - - -state 191 - ElseClause : ELSE . Stmt (93) - SimpleStmt : . (45) - Receiver : . (47) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - NULL shift 46 - THIS shift 47 - WHILE shift 48 - FOR shift 49 - IF shift 50 - RETURN shift 51 - BREAK shift 52 - NEW shift 53 - PRINT shift 54 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - DO shift 62 - '-' shift 63 - '!' shift 64 - '(' shift 65 - '{' shift 41 - IDENTIFIER reduce 47 - ';' reduce 45 - - VariableDef goto 67 - Variable goto 20 - Type goto 33 - StmtBlock goto 68 - Stmt goto 195 - SimpleStmt goto 70 - IfStmt goto 71 - WhileStmt goto 72 - ForStmt goto 73 - ReturnStmt goto 74 - PrintStmt goto 75 - BreakStmt goto 76 - GuardedIFStmt goto 77 - GuaededDOStmt goto 78 - Expr goto 79 - LValue goto 80 - Call goto 81 - Receiver goto 82 - Constant goto 83 - - -state 192 - IfStmt : IF '(' Expr ')' Stmt ElseClause . (92) - - . reduce 92 - - -state 193 - Expr : INSTANCEOF '(' Expr ',' IDENTIFIER ')' . (75) - - . reduce 75 - - -state 194 - ForStmt : FOR '(' SimpleStmt ';' Expr ';' SimpleStmt . ')' Stmt (90) - - ')' shift 196 - . error - - -state 195 - ElseClause : ELSE Stmt . (93) - - . reduce 93 - - -state 196 - ForStmt : FOR '(' SimpleStmt ';' Expr ';' SimpleStmt ')' . Stmt (90) - SimpleStmt : . (45) - Receiver : . (47) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - NULL shift 46 - THIS shift 47 - WHILE shift 48 - FOR shift 49 - IF shift 50 - RETURN shift 51 - BREAK shift 52 - NEW shift 53 - PRINT shift 54 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - NUMINSTANCES shift 59 - DOUBLE_PLUS shift 60 - DOUBLE_MINUS shift 61 - DO shift 62 - '-' shift 63 - '!' shift 64 - '(' shift 65 - '{' shift 41 - IDENTIFIER reduce 47 - ';' reduce 45 - - VariableDef goto 67 - Variable goto 20 - Type goto 33 - StmtBlock goto 68 - Stmt goto 197 - SimpleStmt goto 70 - IfStmt goto 71 - WhileStmt goto 72 - ForStmt goto 73 - ReturnStmt goto 74 - PrintStmt goto 75 - BreakStmt goto 76 - GuardedIFStmt goto 77 - GuaededDOStmt goto 78 - Expr goto 79 - LValue goto 80 - Call goto 81 - Receiver goto 82 - Constant goto 83 - - -state 197 - ForStmt : FOR '(' SimpleStmt ';' Expr ';' SimpleStmt ')' Stmt . (90) - - . reduce 90 - - -State 188 contains 18 shift/reduce conflicts. - - -59 terminals, 34 nonterminals -98 grammar rules, 198 states diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/frontend/Parser.y" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/frontend/Parser.y" deleted file mode 100644 index f537e6d31..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/frontend/Parser.y" +++ /dev/null @@ -1,508 +0,0 @@ -/* - * 本文件提供实现Decaf编译器所需要的BYACC脚本。 - * 在第一阶段中你需要补充完整这个文件中的语法规则。 - * 请参考"YACC--Yet Another Compiler Compiler"中关于如何编写BYACC脚本的说明。 - * - * Keltin Leung - * DCST, Tsinghua University - */ - -%{ -package decaf.frontend; - -import decaf.tree.Tree; -import decaf.tree.Tree.*; -import decaf.error.*; -import java.util.*; -%} - -%Jclass Parser -%Jextends BaseParser -%Jsemantic SemValue -%Jimplements ReduceListener -%Jnorun -%Jnodebug -%Jnoconstruct - -%token VOID BOOL INT STRING CLASS -%token NULL EXTENDS THIS WHILE FOR -%token IF ELSE RETURN BREAK NEW -%token PRINT READ_INTEGER READ_LINE -%token LITERAL -%token IDENTIFIER AND OR STATIC INSTANCEOF -%token NUMINSTANCES -%token LESS_EQUAL GREATER_EQUAL EQUAL NOT_EQUAL -%token DOUBLE_PLUS DOUBLE_MINUS -%token FI TRIBLE_OR DO OD -%token '+' '-' '*' '/' '%' '=' '>' '<' '.' -%token ',' ';' '!' '(' ')' '[' ']' '{' '}' -%token '?' ':' - -%right '?' -%left OR -%left AND -%nonassoc EQUAL NOT_EQUAL -%nonassoc LESS_EQUAL GREATER_EQUAL '<' '>' -%left '+' '-' -%left '*' '/' '%' -%nonassoc UMINUS '!' -%nonassoc DOUBLE_PLUS DOUBLE_MINUS -%nonassoc '[' '.' -%nonassoc ')' EMPTY -%nonassoc ELSE - -%start Program - -%% -Program : ClassList - { - tree = new Tree.TopLevel($1.clist, $1.loc); - } - ; - -ClassList : ClassList ClassDef - { - $$.clist.add($2.cdef); - } - | ClassDef - { - $$.clist = new ArrayList(); - $$.clist.add($1.cdef); - } - ; - -VariableDef : Variable ';' - ; - -Variable : Type IDENTIFIER - { - $$.vdef = new Tree.VarDef($2.ident, $1.type, $2.loc); - } - ; - -Type : INT - { - $$.type = new Tree.TypeIdent(Tree.INT, $1.loc); - } - | VOID - { - $$.type = new Tree.TypeIdent(Tree.VOID, $1.loc); - } - | BOOL - { - $$.type = new Tree.TypeIdent(Tree.BOOL, $1.loc); - } - | STRING - { - $$.type = new Tree.TypeIdent(Tree.STRING, $1.loc); - } - | CLASS IDENTIFIER - { - $$.type = new Tree.TypeClass($2.ident, $1.loc); - } - | Type '[' ']' - { - $$.type = new Tree.TypeArray($1.type, $1.loc); - } - ; - -ClassDef : CLASS IDENTIFIER ExtendsClause '{' FieldList '}' - { - $$.cdef = new Tree.ClassDef($2.ident, $3.ident, $5.flist, $1.loc); - } - ; - -ExtendsClause : EXTENDS IDENTIFIER - { - $$.ident = $2.ident; - } - | /* empty */ - { - $$ = new SemValue(); - } - ; - -FieldList : FieldList VariableDef - { - $$.flist.add($2.vdef); - } - | FieldList FunctionDef - { - $$.flist.add($2.fdef); - } - | /* empty */ - { - $$ = new SemValue(); - $$.flist = new ArrayList(); - } - ; - -Formals : VariableList - | /* empty */ - { - $$ = new SemValue(); - $$.vlist = new ArrayList(); - } - ; - -VariableList : VariableList ',' Variable - { - $$.vlist.add($3.vdef); - } - | Variable - { - $$.vlist = new ArrayList(); - $$.vlist.add($1.vdef); - } - ; - -FunctionDef : STATIC Type IDENTIFIER '(' Formals ')' StmtBlock - { - $$.fdef = new MethodDef(true, $3.ident, $2.type, $5.vlist, (Block) $7.stmt, $3.loc); - } - | Type IDENTIFIER '(' Formals ')' StmtBlock - { - $$.fdef = new MethodDef(false, $2.ident, $1.type, $4.vlist, (Block) $6.stmt, $2.loc); - } - ; - -StmtBlock : '{' StmtList '}' - { - $$.stmt = new Block($2.slist, $1.loc); - } - ; - -StmtList : StmtList Stmt - { - $$.slist.add($2.stmt); - } - | /* empty */ - { - $$ = new SemValue(); - $$.slist = new ArrayList(); - } - ; - -Stmt : VariableDef - { - $$.stmt = $1.vdef; - } - - | SimpleStmt ';' - { - if ($$.stmt == null) { - $$.stmt = new Tree.Skip($2.loc); - } - } - | IfStmt - | WhileStmt - | ForStmt - | ReturnStmt ';' - | PrintStmt ';' - | BreakStmt ';' - | StmtBlock - | GuardedIFStmt - | GuaededDOStmt - ; - -GuardedES : Expr ':' Stmt - { - $$.guardedES = new Tree.GuardedES($1.expr , $3.stmt , $2.loc); - } - ; - -GuardedStmts : GuardedES - { - - $$.myList = new ArrayList(); - $$.myList.add($1.guardedES); - } - | - GuardedStmts TRIBLE_OR GuardedES - { - - $$.myList.add($3.guardedES); - } - ; - -GuardedIFStmt : IF GuardedStmts FI - { - $$.stmt = new Tree.GuardedIFStmt($2.myList , $1.loc); - } - ; - -GuaededDOStmt : DO GuardedStmts OD - { - $$.stmt = new Tree.GuardedDOStmt($2.myList , $1.loc); - } - ; - -SimpleStmt : LValue '=' Expr - { - $$.stmt = new Tree.Assign($1.lvalue, $3.expr, $2.loc); - } - | Call - { - $$.stmt = new Tree.Exec($1.expr, $1.loc); - } - | /* empty */ - { - $$ = new SemValue(); - } - ; - -Receiver : Expr '.' - | /* empty */ - { - $$ = new SemValue(); - } - ; - -LValue : Receiver IDENTIFIER - { - $$.lvalue = new Tree.Ident($1.expr, $2.ident, $2.loc); - if ($1.loc == null) { - $$.loc = $2.loc; - } - } - | Expr '[' Expr ']' - { - $$.lvalue = new Tree.Indexed($1.expr, $3.expr, $1.loc); - } - ; - -Call : Receiver IDENTIFIER '(' Actuals ')' - { - $$.expr = new Tree.CallExpr($1.expr, $2.ident, $4.elist, $2.loc); - if ($1.loc == null) { - $$.loc = $2.loc; - } - } - ; - -Expr : LValue - { - $$.expr = $1.lvalue; - } - | Call - | Constant - | Expr '+' Expr - { - $$.expr = new Tree.Binary(Tree.PLUS, $1.expr, $3.expr, $2.loc); - } - | Expr '-' Expr - { - $$.expr = new Tree.Binary(Tree.MINUS, $1.expr, $3.expr, $2.loc); - } - | Expr '*' Expr - { - $$.expr = new Tree.Binary(Tree.MUL, $1.expr, $3.expr, $2.loc); - } - | Expr '/' Expr - { - $$.expr = new Tree.Binary(Tree.DIV, $1.expr, $3.expr, $2.loc); - } - | Expr '%' Expr - { - $$.expr = new Tree.Binary(Tree.MOD, $1.expr, $3.expr, $2.loc); - } - | Expr EQUAL Expr - { - $$.expr = new Tree.Binary(Tree.EQ, $1.expr, $3.expr, $2.loc); - } - | Expr NOT_EQUAL Expr - { - $$.expr = new Tree.Binary(Tree.NE, $1.expr, $3.expr, $2.loc); - } - | Expr '<' Expr - { - $$.expr = new Tree.Binary(Tree.LT, $1.expr, $3.expr, $2.loc); - } - | Expr '>' Expr - { - $$.expr = new Tree.Binary(Tree.GT, $1.expr, $3.expr, $2.loc); - } - | Expr LESS_EQUAL Expr - { - $$.expr = new Tree.Binary(Tree.LE, $1.expr, $3.expr, $2.loc); - } - | Expr GREATER_EQUAL Expr - { - $$.expr = new Tree.Binary(Tree.GE, $1.expr, $3.expr, $2.loc); - } - | Expr AND Expr - { - $$.expr = new Tree.Binary(Tree.AND, $1.expr, $3.expr, $2.loc); - } - | Expr OR Expr - { - $$.expr = new Tree.Binary(Tree.OR, $1.expr, $3.expr, $2.loc); - } - | '(' Expr ')' - { - $$ = $2; - } - | '-' Expr %prec UMINUS - { - $$.expr = new Tree.Unary(Tree.NEG, $2.expr, $1.loc); - } - | '!' Expr - { - $$.expr = new Tree.Unary(Tree.NOT, $2.expr, $1.loc); - } - | READ_INTEGER '(' ')' - { - $$.expr = new Tree.ReadIntExpr($1.loc); - } - | READ_LINE '(' ')' - { - $$.expr = new Tree.ReadLineExpr($1.loc); - } - | THIS - { - $$.expr = new Tree.ThisExpr($1.loc); - } - | NEW IDENTIFIER '(' ')' - { - $$.expr = new Tree.NewClass($2.ident, $1.loc); - } - | NEW Type '[' Expr ']' - { - $$.expr = new Tree.NewArray($2.type, $4.expr, $1.loc); - } - | INSTANCEOF '(' Expr ',' IDENTIFIER ')' - { - $$.expr = new Tree.TypeTest($3.expr, $5.ident, $1.loc); - } - | '(' CLASS IDENTIFIER ')' Expr - { - $$.expr = new Tree.TypeCast($3.ident, $5.expr, $5.loc); - } - | Expr DOUBLE_PLUS - { - $$.expr = new Tree.Unary(Tree.POSTINC, $1.expr, $2.loc); - } - | DOUBLE_PLUS Expr - { - $$.expr = new Tree.Unary(Tree.PREINC, $2.expr, $1.loc); - } - | Expr DOUBLE_MINUS - { - $$.expr = new Tree.Unary(Tree.POSTDEC, $1.expr, $2.loc); - } - | DOUBLE_MINUS Expr - { - $$.expr = new Tree.Unary(Tree.PREDEC, $2.expr, $1.loc); - } - | Expr '?' Expr ':' Expr - { - $$.expr = new Tree.QuestionAndColon(Tree.QUESTION_COLON, $1.expr, $3.expr, $5.expr, $1.loc); - } - | NUMINSTANCES '(' IDENTIFIER ')' - { - $$.expr = new Tree.NumTest($3.ident, $1.loc); - } - ; - -Constant : LITERAL - { - $$.expr = new Tree.Literal($1.typeTag, $1.literal, $1.loc); - } - | NULL - { - $$.expr = new Null($1.loc); - } - ; - -Actuals : ExprList - | /* empty */ - { - $$ = new SemValue(); - $$.elist = new ArrayList(); - } - ; - -ExprList : ExprList ',' Expr - { - $$.elist.add($3.expr); - } - | Expr - { - $$.elist = new ArrayList(); - $$.elist.add($1.expr); - } - ; - -WhileStmt : WHILE '(' Expr ')' Stmt - { - $$.stmt = new Tree.WhileLoop($3.expr, $5.stmt, $1.loc); - } - ; - -ForStmt : FOR '(' SimpleStmt ';' Expr ';' SimpleStmt ')' Stmt - { - $$.stmt = new Tree.ForLoop($3.stmt, $5.expr, $7.stmt, $9.stmt, $1.loc); - } - ; - -BreakStmt : BREAK - { - $$.stmt = new Tree.Break($1.loc); - } - ; - -IfStmt : IF '(' Expr ')' Stmt ElseClause - { - $$.stmt = new Tree.If($3.expr, $5.stmt, $6.stmt, $1.loc); - } - ; - -ElseClause : ELSE Stmt - { - $$.stmt = $2.stmt; - } - | /* empty */ %prec EMPTY - { - $$ = new SemValue(); - } - ; - -ReturnStmt : RETURN Expr - { - $$.stmt = new Tree.Return($2.expr, $1.loc); - } - | RETURN - { - $$.stmt = new Tree.Return(null, $1.loc); - } - ; - -PrintStmt : PRINT '(' ExprList ')' - { - $$.stmt = new Print($3.elist, $1.loc); - } - ; - -%% - - /** - * 打印当前归约所用的语法规则
- * 请勿修改。 - */ - public boolean onReduce(String rule) { - if (rule.startsWith("$$")) - return false; - else - rule = rule.replaceAll(" \\$\\$\\d+", ""); - - if (rule.endsWith(":")) - System.out.println(rule + " "); - else - System.out.println(rule); - return false; - } - - public void diagnose() { - addReduceListener(this); - yyparse(); - } \ No newline at end of file diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/frontend/ParserHelper.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/frontend/ParserHelper.class" deleted file mode 100644 index f59f53bb0..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/frontend/ParserHelper.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/frontend/ReduceListener.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/frontend/ReduceListener.class" deleted file mode 100644 index dbc983372..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/frontend/ReduceListener.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/frontend/SemValue.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/frontend/SemValue.class" deleted file mode 100644 index a767bf30f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/frontend/SemValue.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/machdesc/Intrinsic.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/machdesc/Intrinsic.class" deleted file mode 100644 index 2f892d310..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/machdesc/Intrinsic.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/scope/ClassScope.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/scope/ClassScope.class" deleted file mode 100644 index c3a17ae14..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/scope/ClassScope.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/scope/FormalScope.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/scope/FormalScope.class" deleted file mode 100644 index c192a50a2..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/scope/FormalScope.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/scope/GlobalScope.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/scope/GlobalScope.class" deleted file mode 100644 index 60a1aedf2..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/scope/GlobalScope.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/scope/LocalScope.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/scope/LocalScope.class" deleted file mode 100644 index fe8c0e7d5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/scope/LocalScope.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/scope/Scope$Kind.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/scope/Scope$Kind.class" deleted file mode 100644 index 126c52633..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/scope/Scope$Kind.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/scope/Scope.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/scope/Scope.class" deleted file mode 100644 index eb8ba9f55..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/scope/Scope.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/scope/ScopeStack.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/scope/ScopeStack.class" deleted file mode 100644 index a1a4a6ac8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/scope/ScopeStack.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/symbol/Class.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/symbol/Class.class" deleted file mode 100644 index 91f60a949..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/symbol/Class.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/symbol/Function.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/symbol/Function.class" deleted file mode 100644 index 4bb5d15f8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/symbol/Function.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/symbol/Symbol$1.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/symbol/Symbol$1.class" deleted file mode 100644 index b67897634..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/symbol/Symbol$1.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/symbol/Symbol$2.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/symbol/Symbol$2.class" deleted file mode 100644 index 365779170..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/symbol/Symbol$2.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/symbol/Symbol.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/symbol/Symbol.class" deleted file mode 100644 index 4e9f68b6f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/symbol/Symbol.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/symbol/Variable.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/symbol/Variable.class" deleted file mode 100644 index 2e80cecb4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/symbol/Variable.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tac/Functy.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tac/Functy.class" deleted file mode 100644 index f1dff6623..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tac/Functy.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tac/Label.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tac/Label.class" deleted file mode 100644 index 3ff5c1e98..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tac/Label.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tac/Tac$Kind.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tac/Tac$Kind.class" deleted file mode 100644 index aee0961d1..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tac/Tac$Kind.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tac/Tac.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tac/Tac.class" deleted file mode 100644 index 384e7d556..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tac/Tac.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tac/Temp$1.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tac/Temp$1.class" deleted file mode 100644 index 4e64b6f92..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tac/Temp$1.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tac/Temp.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tac/Temp.class" deleted file mode 100644 index 7717aeb8a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tac/Temp.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tac/VTable.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tac/VTable.class" deleted file mode 100644 index c1f987796..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tac/VTable.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/translate/TransPass1.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/translate/TransPass1.class" deleted file mode 100644 index f9427078a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/translate/TransPass1.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/translate/TransPass2.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/translate/TransPass2.class" deleted file mode 100644 index 177141ccb..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/translate/TransPass2.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/translate/Translater.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/translate/Translater.class" deleted file mode 100644 index 398810581..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/translate/Translater.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Apply.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Apply.class" deleted file mode 100644 index 4a69afbaf..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Apply.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Assign.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Assign.class" deleted file mode 100644 index 9e612ffff..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Assign.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Binary.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Binary.class" deleted file mode 100644 index a4714f575..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Binary.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Block.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Block.class" deleted file mode 100644 index 9334b9994..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Block.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Break.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Break.class" deleted file mode 100644 index c394c7416..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Break.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$CallExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$CallExpr.class" deleted file mode 100644 index 59f1200ac..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$CallExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$ClassDef.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$ClassDef.class" deleted file mode 100644 index 1a0fa9e22..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$ClassDef.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Exec.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Exec.class" deleted file mode 100644 index a85f484b0..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Exec.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Expr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Expr.class" deleted file mode 100644 index ed237a529..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Expr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$ForLoop.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$ForLoop.class" deleted file mode 100644 index 2d25c3b94..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$ForLoop.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$GuardedDOStmt.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$GuardedDOStmt.class" deleted file mode 100644 index 6ae10e85f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$GuardedDOStmt.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$GuardedES.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$GuardedES.class" deleted file mode 100644 index 81329ee18..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$GuardedES.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$GuardedIFStmt.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$GuardedIFStmt.class" deleted file mode 100644 index 1963b65bb..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$GuardedIFStmt.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Ident.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Ident.class" deleted file mode 100644 index 28c9f8b2d..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Ident.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$If.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$If.class" deleted file mode 100644 index abe52e132..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$If.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Indexed.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Indexed.class" deleted file mode 100644 index 6e3b61257..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Indexed.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$LValue$Kind.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$LValue$Kind.class" deleted file mode 100644 index 434cbd6a8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$LValue$Kind.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$LValue.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$LValue.class" deleted file mode 100644 index 64c659344..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$LValue.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Literal.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Literal.class" deleted file mode 100644 index df93208a8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Literal.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$MethodDef.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$MethodDef.class" deleted file mode 100644 index eafa40a13..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$MethodDef.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$NewArray.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$NewArray.class" deleted file mode 100644 index 7140a3386..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$NewArray.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$NewClass.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$NewClass.class" deleted file mode 100644 index 3c36942bb..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$NewClass.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Null.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Null.class" deleted file mode 100644 index 524653c82..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Null.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$NumTest.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$NumTest.class" deleted file mode 100644 index 2f3c2d1c8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$NumTest.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Print.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Print.class" deleted file mode 100644 index 229c9747f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Print.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$QuestionAndColon.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$QuestionAndColon.class" deleted file mode 100644 index b76ebf702..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$QuestionAndColon.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$ReadIntExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$ReadIntExpr.class" deleted file mode 100644 index fa99021d3..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$ReadIntExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$ReadLineExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$ReadLineExpr.class" deleted file mode 100644 index 96ed0435a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$ReadLineExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Return.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Return.class" deleted file mode 100644 index 05a869d85..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Return.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Skip.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Skip.class" deleted file mode 100644 index 82d40b960..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Skip.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$ThisExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$ThisExpr.class" deleted file mode 100644 index ae0a9b918..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$ThisExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$TopLevel.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$TopLevel.class" deleted file mode 100644 index c1aa50dce..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$TopLevel.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$TypeArray.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$TypeArray.class" deleted file mode 100644 index 61f9736e7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$TypeArray.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$TypeCast.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$TypeCast.class" deleted file mode 100644 index 13a1d3b4c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$TypeCast.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$TypeClass.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$TypeClass.class" deleted file mode 100644 index 516ef99bb..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$TypeClass.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$TypeIdent.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$TypeIdent.class" deleted file mode 100644 index babccf373..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$TypeIdent.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$TypeLiteral.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$TypeLiteral.class" deleted file mode 100644 index 6aa08dbcd..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$TypeLiteral.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$TypeTest.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$TypeTest.class" deleted file mode 100644 index bfe60984b..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$TypeTest.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Unary.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Unary.class" deleted file mode 100644 index d558cdd93..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Unary.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$VarDef.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$VarDef.class" deleted file mode 100644 index 3da62cb8d..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$VarDef.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Visitor.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Visitor.class" deleted file mode 100644 index 31a5627b4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$Visitor.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$WhileLoop.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$WhileLoop.class" deleted file mode 100644 index 744143b97..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree$WhileLoop.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree.class" deleted file mode 100644 index 3b85f5058..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/tree/Tree.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/type/ArrayType.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/type/ArrayType.class" deleted file mode 100644 index eb9d71b4d..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/type/ArrayType.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/type/BaseType.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/type/BaseType.class" deleted file mode 100644 index d23009203..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/type/BaseType.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/type/ClassType.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/type/ClassType.class" deleted file mode 100644 index 9b69c54c1..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/type/ClassType.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/type/FuncType.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/type/FuncType.class" deleted file mode 100644 index bcab2bdda..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/type/FuncType.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/type/Type.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/type/Type.class" deleted file mode 100644 index 30ef7ae03..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/type/Type.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/typecheck/BuildSym.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/typecheck/BuildSym.class" deleted file mode 100644 index 9c6d74771..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/typecheck/BuildSym.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/typecheck/TypeCheck.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/typecheck/TypeCheck.class" deleted file mode 100644 index ee25dd6a9..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/typecheck/TypeCheck.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/utils/IndentPrintWriter.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/utils/IndentPrintWriter.class" deleted file mode 100644 index 0bd6a13a7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/utils/IndentPrintWriter.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/utils/MiscUtils.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/utils/MiscUtils.class" deleted file mode 100644 index e0645130f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/bin/decaf/utils/MiscUtils.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/Driver$1.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/Driver$1.class" deleted file mode 100644 index 6c105bf7d..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/Driver$1.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/Driver.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/Driver.class" deleted file mode 100644 index b403e4286..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/Driver.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/Location.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/Location.class" deleted file mode 100644 index 6badcb17c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/Location.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/Option$Level.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/Option$Level.class" deleted file mode 100644 index b785ae7c5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/Option$Level.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/Option.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/Option.class" deleted file mode 100644 index fd8e166a4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/Option.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/backend/OffsetCounter$Kind.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/backend/OffsetCounter$Kind.class" deleted file mode 100644 index 7bab4ff72..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/backend/OffsetCounter$Kind.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/backend/OffsetCounter.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/backend/OffsetCounter.class" deleted file mode 100644 index f4ee6ce27..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/backend/OffsetCounter.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/BadArgCountError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/BadArgCountError.class" deleted file mode 100644 index f662e0cf8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/BadArgCountError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/BadArgTypeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/BadArgTypeError.class" deleted file mode 100644 index 393dc7353..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/BadArgTypeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/BadArrElementError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/BadArrElementError.class" deleted file mode 100644 index 4401c85dd..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/BadArrElementError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/BadInheritanceError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/BadInheritanceError.class" deleted file mode 100644 index 25c822cb7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/BadInheritanceError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/BadLengthArgError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/BadLengthArgError.class" deleted file mode 100644 index 40a61d226..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/BadLengthArgError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/BadLengthError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/BadLengthError.class" deleted file mode 100644 index 6522300bb..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/BadLengthError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/BadNewArrayLength.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/BadNewArrayLength.class" deleted file mode 100644 index 4896b6f26..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/BadNewArrayLength.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/BadOverrideError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/BadOverrideError.class" deleted file mode 100644 index 0736b0cfb..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/BadOverrideError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/BadPrintArgError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/BadPrintArgError.class" deleted file mode 100644 index 4d3a7cffc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/BadPrintArgError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/BadReturnTypeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/BadReturnTypeError.class" deleted file mode 100644 index 5ae7b14de..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/BadReturnTypeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/BadTestExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/BadTestExpr.class" deleted file mode 100644 index 877a9c2ca..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/BadTestExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/BadVarTypeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/BadVarTypeError.class" deleted file mode 100644 index c50206763..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/BadVarTypeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/BreakOutOfLoopError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/BreakOutOfLoopError.class" deleted file mode 100644 index dd1b42e05..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/BreakOutOfLoopError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/ClassNotFoundError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/ClassNotFoundError.class" deleted file mode 100644 index 8c23cd0c6..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/ClassNotFoundError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/DecafError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/DecafError.class" deleted file mode 100644 index 56d8b7084..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/DecafError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/DeclConflictError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/DeclConflictError.class" deleted file mode 100644 index f4b87bcc4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/DeclConflictError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/DifferentTypeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/DifferentTypeError.class" deleted file mode 100644 index 969c0c63d..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/DifferentTypeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/FieldNotAccessError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/FieldNotAccessError.class" deleted file mode 100644 index 96111e8a6..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/FieldNotAccessError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/FieldNotFoundError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/FieldNotFoundError.class" deleted file mode 100644 index f1560c48f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/FieldNotFoundError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/IncompatBinOpError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/IncompatBinOpError.class" deleted file mode 100644 index 4bbed59e7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/IncompatBinOpError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/IncompatUnOpError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/IncompatUnOpError.class" deleted file mode 100644 index f5a9e31bc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/IncompatUnOpError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/IntTooLargeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/IntTooLargeError.class" deleted file mode 100644 index 44931104f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/IntTooLargeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/MsgError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/MsgError.class" deleted file mode 100644 index 080cb6161..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/MsgError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/NewlineInStrError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/NewlineInStrError.class" deleted file mode 100644 index 250e6b9ac..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/NewlineInStrError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/NoMainClassError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/NoMainClassError.class" deleted file mode 100644 index 4e709a981..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/NoMainClassError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/NotArrayError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/NotArrayError.class" deleted file mode 100644 index 28d40b882..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/NotArrayError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/NotClassError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/NotClassError.class" deleted file mode 100644 index 4ea6c47bc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/NotClassError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/NotClassFieldError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/NotClassFieldError.class" deleted file mode 100644 index bc05ae05a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/NotClassFieldError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/NotClassMethodError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/NotClassMethodError.class" deleted file mode 100644 index b6f9e584f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/NotClassMethodError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/OverridingVarError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/OverridingVarError.class" deleted file mode 100644 index 9f7e77981..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/OverridingVarError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/RefNonStaticError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/RefNonStaticError.class" deleted file mode 100644 index 73a781b4a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/RefNonStaticError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/RuntimeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/RuntimeError.class" deleted file mode 100644 index 71a9f876a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/RuntimeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/SubNotIntError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/SubNotIntError.class" deleted file mode 100644 index 364a3889a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/SubNotIntError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/ThisInStaticFuncError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/ThisInStaticFuncError.class" deleted file mode 100644 index e84ffa395..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/ThisInStaticFuncError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/UndeclVarError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/UndeclVarError.class" deleted file mode 100644 index d1945f289..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/UndeclVarError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/UnrecogCharError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/UnrecogCharError.class" deleted file mode 100644 index cf7857e28..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/UnrecogCharError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/UntermStrError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/UntermStrError.class" deleted file mode 100644 index 93edd524e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/error/UntermStrError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/frontend/BaseLexer.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/frontend/BaseLexer.class" deleted file mode 100644 index 106927055..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/frontend/BaseLexer.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/frontend/BaseParser.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/frontend/BaseParser.class" deleted file mode 100644 index 889ba4816..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/frontend/BaseParser.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/frontend/Lexer.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/frontend/Lexer.class" deleted file mode 100644 index 9e54762b3..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/frontend/Lexer.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/frontend/Parser.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/frontend/Parser.class" deleted file mode 100644 index 8cc059a98..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/frontend/Parser.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/frontend/ParserHelper.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/frontend/ParserHelper.class" deleted file mode 100644 index 73f1690c2..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/frontend/ParserHelper.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/frontend/ReduceListener.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/frontend/ReduceListener.class" deleted file mode 100644 index 8dc1e198c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/frontend/ReduceListener.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/frontend/SemValue.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/frontend/SemValue.class" deleted file mode 100644 index 260dadcd0..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/frontend/SemValue.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/machdesc/Intrinsic.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/machdesc/Intrinsic.class" deleted file mode 100644 index ea463a1c5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/machdesc/Intrinsic.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/scope/ClassScope.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/scope/ClassScope.class" deleted file mode 100644 index 15a4b2480..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/scope/ClassScope.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/scope/FormalScope.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/scope/FormalScope.class" deleted file mode 100644 index 7f9d488bf..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/scope/FormalScope.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/scope/GlobalScope.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/scope/GlobalScope.class" deleted file mode 100644 index 500ab21fa..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/scope/GlobalScope.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/scope/LocalScope.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/scope/LocalScope.class" deleted file mode 100644 index b64836098..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/scope/LocalScope.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/scope/Scope$Kind.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/scope/Scope$Kind.class" deleted file mode 100644 index 3b4b6351a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/scope/Scope$Kind.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/scope/Scope.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/scope/Scope.class" deleted file mode 100644 index b57fdca02..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/scope/Scope.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/scope/ScopeStack$1.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/scope/ScopeStack$1.class" deleted file mode 100644 index a0f3b4987..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/scope/ScopeStack$1.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/scope/ScopeStack.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/scope/ScopeStack.class" deleted file mode 100644 index 1fcef768a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/scope/ScopeStack.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/symbol/Class.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/symbol/Class.class" deleted file mode 100644 index f14c1e49e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/symbol/Class.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/symbol/Function.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/symbol/Function.class" deleted file mode 100644 index 363d32d66..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/symbol/Function.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/symbol/Symbol$1.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/symbol/Symbol$1.class" deleted file mode 100644 index e3693dbed..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/symbol/Symbol$1.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/symbol/Symbol$2.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/symbol/Symbol$2.class" deleted file mode 100644 index 80499c303..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/symbol/Symbol$2.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/symbol/Symbol.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/symbol/Symbol.class" deleted file mode 100644 index 1ff6891b4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/symbol/Symbol.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/symbol/Variable.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/symbol/Variable.class" deleted file mode 100644 index c58f8316e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/symbol/Variable.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tac/Functy.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tac/Functy.class" deleted file mode 100644 index 7e72f32e2..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tac/Functy.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tac/Label.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tac/Label.class" deleted file mode 100644 index 2aab0a003..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tac/Label.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tac/Tac$1.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tac/Tac$1.class" deleted file mode 100644 index 6b28663f2..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tac/Tac$1.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tac/Tac$Kind.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tac/Tac$Kind.class" deleted file mode 100644 index e59c8cbfc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tac/Tac$Kind.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tac/Tac.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tac/Tac.class" deleted file mode 100644 index 1898cd644..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tac/Tac.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tac/Temp$1.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tac/Temp$1.class" deleted file mode 100644 index 3ea19ce23..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tac/Temp$1.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tac/Temp.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tac/Temp.class" deleted file mode 100644 index 65848f0bc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tac/Temp.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tac/VTable.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tac/VTable.class" deleted file mode 100644 index 1b6d4147e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tac/VTable.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/translate/TransPass1.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/translate/TransPass1.class" deleted file mode 100644 index 80b508208..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/translate/TransPass1.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/translate/TransPass2$1.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/translate/TransPass2$1.class" deleted file mode 100644 index ce9a3d6fd..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/translate/TransPass2$1.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/translate/TransPass2.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/translate/TransPass2.class" deleted file mode 100644 index 9839f2c85..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/translate/TransPass2.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/translate/Translater.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/translate/Translater.class" deleted file mode 100644 index 0ec3585dd..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/translate/Translater.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Apply.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Apply.class" deleted file mode 100644 index 56cd1515d..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Apply.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Assign.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Assign.class" deleted file mode 100644 index 775e59d88..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Assign.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Binary.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Binary.class" deleted file mode 100644 index da6ca393b..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Binary.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Block.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Block.class" deleted file mode 100644 index 456a6b3fc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Block.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Break.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Break.class" deleted file mode 100644 index ea6c73350..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Break.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$CallExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$CallExpr.class" deleted file mode 100644 index 287624411..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$CallExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$ClassDef.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$ClassDef.class" deleted file mode 100644 index df8664af5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$ClassDef.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Exec.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Exec.class" deleted file mode 100644 index 34fc3386c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Exec.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Expr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Expr.class" deleted file mode 100644 index 4575be3aa..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Expr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$ForLoop.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$ForLoop.class" deleted file mode 100644 index 6f67a3f21..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$ForLoop.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$GuardedDOStmt.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$GuardedDOStmt.class" deleted file mode 100644 index a0b797da5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$GuardedDOStmt.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$GuardedES.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$GuardedES.class" deleted file mode 100644 index ab6a0886e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$GuardedES.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$GuardedIFStmt.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$GuardedIFStmt.class" deleted file mode 100644 index ad3249493..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$GuardedIFStmt.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Ident.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Ident.class" deleted file mode 100644 index fd46e22dd..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Ident.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$If.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$If.class" deleted file mode 100644 index 090b287a9..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$If.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Indexed.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Indexed.class" deleted file mode 100644 index 460e7664a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Indexed.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$LValue$Kind.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$LValue$Kind.class" deleted file mode 100644 index 96fa65ae0..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$LValue$Kind.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$LValue.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$LValue.class" deleted file mode 100644 index 6c5e0652e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$LValue.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Literal.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Literal.class" deleted file mode 100644 index 1e485dfba..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Literal.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$MethodDef.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$MethodDef.class" deleted file mode 100644 index bb366375f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$MethodDef.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$NewArray.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$NewArray.class" deleted file mode 100644 index 5df63c3ec..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$NewArray.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$NewClass.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$NewClass.class" deleted file mode 100644 index b65de168f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$NewClass.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Null.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Null.class" deleted file mode 100644 index 16f501aac..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Null.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$NumTest.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$NumTest.class" deleted file mode 100644 index 5b7192ee7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$NumTest.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Print.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Print.class" deleted file mode 100644 index c59a3e53e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Print.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$QuestionAndColon.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$QuestionAndColon.class" deleted file mode 100644 index 73a05fe67..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$QuestionAndColon.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$ReadIntExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$ReadIntExpr.class" deleted file mode 100644 index a6c8a2ea8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$ReadIntExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$ReadLineExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$ReadLineExpr.class" deleted file mode 100644 index df19f517f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$ReadLineExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Return.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Return.class" deleted file mode 100644 index 64088d4ad..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Return.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Skip.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Skip.class" deleted file mode 100644 index 5ab805324..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Skip.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$ThisExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$ThisExpr.class" deleted file mode 100644 index 6d8e261a7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$ThisExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$TopLevel.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$TopLevel.class" deleted file mode 100644 index 309dab42c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$TopLevel.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$TypeArray.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$TypeArray.class" deleted file mode 100644 index 49239e4bc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$TypeArray.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$TypeCast.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$TypeCast.class" deleted file mode 100644 index a83acfffe..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$TypeCast.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$TypeClass.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$TypeClass.class" deleted file mode 100644 index 523c65548..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$TypeClass.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$TypeIdent.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$TypeIdent.class" deleted file mode 100644 index 36f55f945..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$TypeIdent.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$TypeLiteral.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$TypeLiteral.class" deleted file mode 100644 index bd06eac60..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$TypeLiteral.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$TypeTest.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$TypeTest.class" deleted file mode 100644 index 6ffaf2ec6..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$TypeTest.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Unary.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Unary.class" deleted file mode 100644 index af4256363..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Unary.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$VarDef.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$VarDef.class" deleted file mode 100644 index 9ceb9c061..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$VarDef.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Visitor.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Visitor.class" deleted file mode 100644 index ea6e57c7e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$Visitor.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$WhileLoop.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$WhileLoop.class" deleted file mode 100644 index ea630f196..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree$WhileLoop.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree.class" deleted file mode 100644 index 6656c3866..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/tree/Tree.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/type/ArrayType.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/type/ArrayType.class" deleted file mode 100644 index 6f547e5a5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/type/ArrayType.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/type/BaseType.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/type/BaseType.class" deleted file mode 100644 index af07ac7fc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/type/BaseType.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/type/ClassType.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/type/ClassType.class" deleted file mode 100644 index 68ff18a99..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/type/ClassType.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/type/FuncType.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/type/FuncType.class" deleted file mode 100644 index dcd6be087..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/type/FuncType.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/type/Type.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/type/Type.class" deleted file mode 100644 index 88f93ceb8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/type/Type.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/typecheck/BuildSym.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/typecheck/BuildSym.class" deleted file mode 100644 index dd2dd631b..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/typecheck/BuildSym.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/typecheck/TypeCheck.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/typecheck/TypeCheck.class" deleted file mode 100644 index 042aa2caf..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/typecheck/TypeCheck.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/utils/IndentPrintWriter.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/utils/IndentPrintWriter.class" deleted file mode 100644 index 5b7d47cfe..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/utils/IndentPrintWriter.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/utils/MiscUtils.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/utils/MiscUtils.class" deleted file mode 100644 index c8920db8c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/PA3/result/bin/decaf/utils/MiscUtils.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/byacc/byacc.exe" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/byacc/byacc.exe" deleted file mode 100644 index 12525c10b..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/byacc/byacc.exe" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/byacc/byacc.linux" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/byacc/byacc.linux" deleted file mode 100644 index 43ae37e6f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/byacc/byacc.linux" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/byacc/byacc.linux.amd64" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/byacc/byacc.linux.amd64" deleted file mode 100644 index 07504b0ee..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/byacc/byacc.linux.amd64" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/byacc/byacc.mac" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/byacc/byacc.mac" deleted file mode 100644 index 548c63582..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/byacc/byacc.mac" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/byacc/byaccj1.13-extended.tar.gz" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/byacc/byaccj1.13-extended.tar.gz" deleted file mode 100644 index 343a8033c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/byacc/byaccj1.13-extended.tar.gz" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/jflex-byacc_660003920.zip" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/jflex-byacc_660003920.zip" deleted file mode 100644 index ef2025115..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/jflex-byacc_660003920.zip" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/jflex-byaccj\347\256\200\344\273\213_276009514.pdf" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/jflex-byaccj\347\256\200\344\273\213_276009514.pdf" deleted file mode 100644 index 4a5fc258e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/jflex-byaccj\347\256\200\344\273\213_276009514.pdf" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/jflex/JFlex.jar" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/jflex/JFlex.jar" deleted file mode 100644 index d82e9d6c8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2015_\345\210\230\346\231\272\345\263\260_PA/jflex/JFlex.jar" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/Driver$1.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/Driver$1.class" deleted file mode 100644 index ac967cc1c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/Driver$1.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/Driver.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/Driver.class" deleted file mode 100644 index 349b67695..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/Driver.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/Location.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/Location.class" deleted file mode 100644 index 6badcb17c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/Location.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/Option$Level.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/Option$Level.class" deleted file mode 100644 index b785ae7c5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/Option$Level.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/Option.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/Option.class" deleted file mode 100644 index fd8e166a4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/Option.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/BadArgCountError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/BadArgCountError.class" deleted file mode 100644 index f662e0cf8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/BadArgCountError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/BadArgTypeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/BadArgTypeError.class" deleted file mode 100644 index 393dc7353..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/BadArgTypeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/BadArrElementError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/BadArrElementError.class" deleted file mode 100644 index 4401c85dd..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/BadArrElementError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/BadInheritanceError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/BadInheritanceError.class" deleted file mode 100644 index 25c822cb7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/BadInheritanceError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/BadLengthArgError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/BadLengthArgError.class" deleted file mode 100644 index 40a61d226..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/BadLengthArgError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/BadLengthError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/BadLengthError.class" deleted file mode 100644 index 6522300bb..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/BadLengthError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/BadNewArrayLength.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/BadNewArrayLength.class" deleted file mode 100644 index 4896b6f26..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/BadNewArrayLength.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/BadOverrideError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/BadOverrideError.class" deleted file mode 100644 index 0736b0cfb..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/BadOverrideError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/BadPrintArgError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/BadPrintArgError.class" deleted file mode 100644 index 4d3a7cffc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/BadPrintArgError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/BadReturnTypeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/BadReturnTypeError.class" deleted file mode 100644 index 5ae7b14de..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/BadReturnTypeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/BadTestExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/BadTestExpr.class" deleted file mode 100644 index 877a9c2ca..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/BadTestExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/BadVarTypeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/BadVarTypeError.class" deleted file mode 100644 index c50206763..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/BadVarTypeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/BreakOutOfLoopError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/BreakOutOfLoopError.class" deleted file mode 100644 index dd1b42e05..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/BreakOutOfLoopError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/CaseLabelNotConstError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/CaseLabelNotConstError.class" deleted file mode 100644 index 6320fc0ee..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/CaseLabelNotConstError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/ClassNotFoundError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/ClassNotFoundError.class" deleted file mode 100644 index 8c23cd0c6..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/ClassNotFoundError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/ContinueOutOfLoopError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/ContinueOutOfLoopError.class" deleted file mode 100644 index bb4668673..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/ContinueOutOfLoopError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/DecafError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/DecafError.class" deleted file mode 100644 index 56d8b7084..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/DecafError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/DeclConflictError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/DeclConflictError.class" deleted file mode 100644 index f4b87bcc4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/DeclConflictError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/FieldNotAccessError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/FieldNotAccessError.class" deleted file mode 100644 index 96111e8a6..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/FieldNotAccessError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/FieldNotFoundError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/FieldNotFoundError.class" deleted file mode 100644 index f1560c48f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/FieldNotFoundError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/IncompatBinOpError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/IncompatBinOpError.class" deleted file mode 100644 index 4bbed59e7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/IncompatBinOpError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/IncompatCondExprError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/IncompatCondExprError.class" deleted file mode 100644 index b7a753f05..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/IncompatCondExprError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/IncompatUnOpError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/IncompatUnOpError.class" deleted file mode 100644 index f5a9e31bc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/IncompatUnOpError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/IntTooLargeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/IntTooLargeError.class" deleted file mode 100644 index 44931104f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/IntTooLargeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/MsgError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/MsgError.class" deleted file mode 100644 index 080cb6161..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/MsgError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/NewlineInStrError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/NewlineInStrError.class" deleted file mode 100644 index 250e6b9ac..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/NewlineInStrError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/NoMainClassError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/NoMainClassError.class" deleted file mode 100644 index 4e709a981..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/NoMainClassError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/NotArrayError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/NotArrayError.class" deleted file mode 100644 index 28d40b882..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/NotArrayError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/NotClassError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/NotClassError.class" deleted file mode 100644 index 4ea6c47bc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/NotClassError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/NotClassFieldError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/NotClassFieldError.class" deleted file mode 100644 index bc05ae05a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/NotClassFieldError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/NotClassMethodError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/NotClassMethodError.class" deleted file mode 100644 index b6f9e584f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/NotClassMethodError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/OverridingVarError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/OverridingVarError.class" deleted file mode 100644 index 9f7e77981..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/OverridingVarError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/RefNonStaticError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/RefNonStaticError.class" deleted file mode 100644 index 73a781b4a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/RefNonStaticError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/RuntimeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/RuntimeError.class" deleted file mode 100644 index 55e3b77cf..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/RuntimeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/SubNotIntError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/SubNotIntError.class" deleted file mode 100644 index 364a3889a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/SubNotIntError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/SwitchVarNotInt.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/SwitchVarNotInt.class" deleted file mode 100644 index 152124242..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/SwitchVarNotInt.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/TestExprNotBoolError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/TestExprNotBoolError.class" deleted file mode 100644 index bbfe262c5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/TestExprNotBoolError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/ThisInStaticFuncError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/ThisInStaticFuncError.class" deleted file mode 100644 index e84ffa395..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/ThisInStaticFuncError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/UndeclVarError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/UndeclVarError.class" deleted file mode 100644 index d1945f289..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/UndeclVarError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/UnrecogCharError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/UnrecogCharError.class" deleted file mode 100644 index cf7857e28..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/UnrecogCharError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/UntermStrError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/UntermStrError.class" deleted file mode 100644 index 93edd524e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/error/UntermStrError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/frontend/BaseLexer.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/frontend/BaseLexer.class" deleted file mode 100644 index 106927055..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/frontend/BaseLexer.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/frontend/BaseParser.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/frontend/BaseParser.class" deleted file mode 100644 index 1b2dceb51..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/frontend/BaseParser.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/frontend/Lexer.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/frontend/Lexer.class" deleted file mode 100644 index 56ac34f45..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/frontend/Lexer.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/frontend/Parser.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/frontend/Parser.class" deleted file mode 100644 index 0e755ae4d..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/frontend/Parser.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/frontend/ParserHelper.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/frontend/ParserHelper.class" deleted file mode 100644 index cac8eeeca..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/frontend/ParserHelper.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/frontend/ReduceListener.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/frontend/ReduceListener.class" deleted file mode 100644 index 8dc1e198c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/frontend/ReduceListener.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/frontend/SemValue.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/frontend/SemValue.class" deleted file mode 100644 index 53b9fdeb8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/frontend/SemValue.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/scope/ClassScope.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/scope/ClassScope.class" deleted file mode 100644 index 15a4b2480..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/scope/ClassScope.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/scope/FormalScope.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/scope/FormalScope.class" deleted file mode 100644 index 7f9d488bf..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/scope/FormalScope.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/scope/GlobalScope.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/scope/GlobalScope.class" deleted file mode 100644 index 500ab21fa..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/scope/GlobalScope.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/scope/LocalScope.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/scope/LocalScope.class" deleted file mode 100644 index d8bea5ac7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/scope/LocalScope.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/scope/Scope$Kind.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/scope/Scope$Kind.class" deleted file mode 100644 index 3b4b6351a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/scope/Scope$Kind.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/scope/Scope.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/scope/Scope.class" deleted file mode 100644 index b57fdca02..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/scope/Scope.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/scope/ScopeStack$1.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/scope/ScopeStack$1.class" deleted file mode 100644 index a0f3b4987..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/scope/ScopeStack$1.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/scope/ScopeStack.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/scope/ScopeStack.class" deleted file mode 100644 index 1fcef768a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/scope/ScopeStack.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/symbol/Class.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/symbol/Class.class" deleted file mode 100644 index 23bb4ecdf..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/symbol/Class.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/symbol/Function.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/symbol/Function.class" deleted file mode 100644 index f0eebd662..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/symbol/Function.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/symbol/Symbol$1.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/symbol/Symbol$1.class" deleted file mode 100644 index e3693dbed..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/symbol/Symbol$1.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/symbol/Symbol$2.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/symbol/Symbol$2.class" deleted file mode 100644 index 80499c303..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/symbol/Symbol$2.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/symbol/Symbol.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/symbol/Symbol.class" deleted file mode 100644 index 1ff6891b4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/symbol/Symbol.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/symbol/Variable.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/symbol/Variable.class" deleted file mode 100644 index 223552560..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/symbol/Variable.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Apply.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Apply.class" deleted file mode 100644 index 921b0b3b1..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Apply.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Assign.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Assign.class" deleted file mode 100644 index af9ae9bc0..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Assign.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Binary.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Binary.class" deleted file mode 100644 index 71c066ff5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Binary.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Block.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Block.class" deleted file mode 100644 index af25d31c2..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Block.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Break.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Break.class" deleted file mode 100644 index a1397303f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Break.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$CallExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$CallExpr.class" deleted file mode 100644 index 62d24147e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$CallExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Case.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Case.class" deleted file mode 100644 index 2fa466e6b..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Case.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$ClassDef.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$ClassDef.class" deleted file mode 100644 index 163d7dc9f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$ClassDef.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Continue.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Continue.class" deleted file mode 100644 index ced7c7962..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Continue.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Exec.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Exec.class" deleted file mode 100644 index b1335a795..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Exec.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Expr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Expr.class" deleted file mode 100644 index b39980982..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Expr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$ForLoop.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$ForLoop.class" deleted file mode 100644 index ae56e67f6..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$ForLoop.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Ident.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Ident.class" deleted file mode 100644 index 0cfd4887f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Ident.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$If.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$If.class" deleted file mode 100644 index b804a8300..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$If.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Indexed.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Indexed.class" deleted file mode 100644 index bd1679bea..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Indexed.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$LValue$Kind.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$LValue$Kind.class" deleted file mode 100644 index 3f3ed05d2..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$LValue$Kind.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$LValue.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$LValue.class" deleted file mode 100644 index f0371c1e3..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$LValue.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Literal.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Literal.class" deleted file mode 100644 index 3c8472a45..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Literal.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$MethodDef.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$MethodDef.class" deleted file mode 100644 index 215ee3880..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$MethodDef.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$NewArray.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$NewArray.class" deleted file mode 100644 index 2c513d37c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$NewArray.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$NewClass.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$NewClass.class" deleted file mode 100644 index a0049fb49..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$NewClass.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Null.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Null.class" deleted file mode 100644 index 5ea32cc07..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Null.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Print.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Print.class" deleted file mode 100644 index 311ca3cd5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Print.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$ReadIntExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$ReadIntExpr.class" deleted file mode 100644 index 407dfcb44..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$ReadIntExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$ReadLineExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$ReadLineExpr.class" deleted file mode 100644 index 2e9bb01b7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$ReadLineExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Repeat.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Repeat.class" deleted file mode 100644 index 7e18ced51..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Repeat.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Return.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Return.class" deleted file mode 100644 index b033cc9a8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Return.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Skip.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Skip.class" deleted file mode 100644 index d989daea3..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Skip.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Switch.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Switch.class" deleted file mode 100644 index 465a20de0..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Switch.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Ternary.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Ternary.class" deleted file mode 100644 index 415c00b2d..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Ternary.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$ThisExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$ThisExpr.class" deleted file mode 100644 index becf019fa..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$ThisExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$TopLevel.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$TopLevel.class" deleted file mode 100644 index 8eb0e3939..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$TopLevel.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$TypeArray.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$TypeArray.class" deleted file mode 100644 index d901fa578..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$TypeArray.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$TypeCast.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$TypeCast.class" deleted file mode 100644 index 81822a038..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$TypeCast.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$TypeClass.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$TypeClass.class" deleted file mode 100644 index 05dbd9480..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$TypeClass.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$TypeIdent.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$TypeIdent.class" deleted file mode 100644 index b7c2f70ee..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$TypeIdent.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$TypeLiteral.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$TypeLiteral.class" deleted file mode 100644 index 8cca518a8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$TypeLiteral.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$TypeTest.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$TypeTest.class" deleted file mode 100644 index 6af7ed3e7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$TypeTest.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Unary.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Unary.class" deleted file mode 100644 index 579f0678e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Unary.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$VarDef.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$VarDef.class" deleted file mode 100644 index 5b2075e0f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$VarDef.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Visitor.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Visitor.class" deleted file mode 100644 index 7e295c98a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$Visitor.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$WhileLoop.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$WhileLoop.class" deleted file mode 100644 index a86a19d5c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree$WhileLoop.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree.class" deleted file mode 100644 index e79b023ac..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/tree/Tree.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/type/ArrayType.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/type/ArrayType.class" deleted file mode 100644 index 6f547e5a5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/type/ArrayType.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/type/BaseType.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/type/BaseType.class" deleted file mode 100644 index af07ac7fc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/type/BaseType.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/type/ClassType.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/type/ClassType.class" deleted file mode 100644 index 68ff18a99..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/type/ClassType.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/type/FuncType.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/type/FuncType.class" deleted file mode 100644 index dcd6be087..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/type/FuncType.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/type/Type.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/type/Type.class" deleted file mode 100644 index 88f93ceb8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/type/Type.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/typecheck/BuildSym.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/typecheck/BuildSym.class" deleted file mode 100644 index 63600481a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/typecheck/BuildSym.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/typecheck/TypeCheck.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/typecheck/TypeCheck.class" deleted file mode 100644 index c60f50f8c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/typecheck/TypeCheck.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/utils/IndentPrintWriter.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/utils/IndentPrintWriter.class" deleted file mode 100644 index 5b7d47cfe..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/utils/IndentPrintWriter.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/utils/MiscUtils.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/utils/MiscUtils.class" deleted file mode 100644 index c8920db8c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/bin/decaf/utils/MiscUtils.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/decaf.jar" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/decaf.jar" deleted file mode 100644 index b9c8510c5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/20603895_3_decaf_PA2/result/decaf.jar" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/Driver$1.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/Driver$1.class" deleted file mode 100644 index 6c105bf7d..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/Driver$1.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/Driver.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/Driver.class" deleted file mode 100644 index b403e4286..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/Driver.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/Location.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/Location.class" deleted file mode 100644 index 6badcb17c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/Location.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/Option$Level.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/Option$Level.class" deleted file mode 100644 index b785ae7c5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/Option$Level.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/Option.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/Option.class" deleted file mode 100644 index fd8e166a4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/Option.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/backend/OffsetCounter$Kind.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/backend/OffsetCounter$Kind.class" deleted file mode 100644 index 7bab4ff72..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/backend/OffsetCounter$Kind.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/backend/OffsetCounter.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/backend/OffsetCounter.class" deleted file mode 100644 index f4ee6ce27..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/backend/OffsetCounter.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/BadArgCountError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/BadArgCountError.class" deleted file mode 100644 index f662e0cf8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/BadArgCountError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/BadArgTypeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/BadArgTypeError.class" deleted file mode 100644 index 393dc7353..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/BadArgTypeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/BadArrElementError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/BadArrElementError.class" deleted file mode 100644 index 4401c85dd..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/BadArrElementError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/BadInheritanceError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/BadInheritanceError.class" deleted file mode 100644 index 25c822cb7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/BadInheritanceError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/BadLengthArgError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/BadLengthArgError.class" deleted file mode 100644 index 40a61d226..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/BadLengthArgError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/BadLengthError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/BadLengthError.class" deleted file mode 100644 index 6522300bb..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/BadLengthError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/BadNewArrayLength.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/BadNewArrayLength.class" deleted file mode 100644 index 4896b6f26..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/BadNewArrayLength.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/BadOverrideError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/BadOverrideError.class" deleted file mode 100644 index 0736b0cfb..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/BadOverrideError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/BadPrintArgError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/BadPrintArgError.class" deleted file mode 100644 index 4d3a7cffc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/BadPrintArgError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/BadReturnTypeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/BadReturnTypeError.class" deleted file mode 100644 index 5ae7b14de..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/BadReturnTypeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/BadTestExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/BadTestExpr.class" deleted file mode 100644 index 877a9c2ca..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/BadTestExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/BadVarTypeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/BadVarTypeError.class" deleted file mode 100644 index c50206763..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/BadVarTypeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/BreakOutOfLoopError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/BreakOutOfLoopError.class" deleted file mode 100644 index dd1b42e05..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/BreakOutOfLoopError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/CaseLabelNotConstError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/CaseLabelNotConstError.class" deleted file mode 100644 index 6320fc0ee..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/CaseLabelNotConstError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/ClassNotFoundError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/ClassNotFoundError.class" deleted file mode 100644 index 8c23cd0c6..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/ClassNotFoundError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/ContinueOutOfLoopError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/ContinueOutOfLoopError.class" deleted file mode 100644 index bb4668673..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/ContinueOutOfLoopError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/DecafError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/DecafError.class" deleted file mode 100644 index 56d8b7084..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/DecafError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/DeclConflictError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/DeclConflictError.class" deleted file mode 100644 index f4b87bcc4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/DeclConflictError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/FieldNotAccessError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/FieldNotAccessError.class" deleted file mode 100644 index 96111e8a6..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/FieldNotAccessError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/FieldNotFoundError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/FieldNotFoundError.class" deleted file mode 100644 index f1560c48f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/FieldNotFoundError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/IncompatBinOpError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/IncompatBinOpError.class" deleted file mode 100644 index 4bbed59e7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/IncompatBinOpError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/IncompatCondExprError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/IncompatCondExprError.class" deleted file mode 100644 index b7a753f05..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/IncompatCondExprError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/IncompatUnOpError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/IncompatUnOpError.class" deleted file mode 100644 index f5a9e31bc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/IncompatUnOpError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/IntTooLargeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/IntTooLargeError.class" deleted file mode 100644 index 44931104f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/IntTooLargeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/MsgError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/MsgError.class" deleted file mode 100644 index 080cb6161..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/MsgError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/NewlineInStrError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/NewlineInStrError.class" deleted file mode 100644 index 250e6b9ac..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/NewlineInStrError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/NoMainClassError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/NoMainClassError.class" deleted file mode 100644 index 4e709a981..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/NoMainClassError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/NotArrayError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/NotArrayError.class" deleted file mode 100644 index 28d40b882..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/NotArrayError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/NotClassError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/NotClassError.class" deleted file mode 100644 index 4ea6c47bc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/NotClassError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/NotClassFieldError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/NotClassFieldError.class" deleted file mode 100644 index bc05ae05a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/NotClassFieldError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/NotClassMethodError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/NotClassMethodError.class" deleted file mode 100644 index b6f9e584f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/NotClassMethodError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/OverridingVarError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/OverridingVarError.class" deleted file mode 100644 index 9f7e77981..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/OverridingVarError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/RefNonStaticError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/RefNonStaticError.class" deleted file mode 100644 index 73a781b4a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/RefNonStaticError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/RuntimeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/RuntimeError.class" deleted file mode 100644 index 55e3b77cf..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/RuntimeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/SubNotIntError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/SubNotIntError.class" deleted file mode 100644 index 364a3889a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/SubNotIntError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/SwitchVarNotInt.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/SwitchVarNotInt.class" deleted file mode 100644 index 152124242..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/SwitchVarNotInt.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/ThisInStaticFuncError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/ThisInStaticFuncError.class" deleted file mode 100644 index e84ffa395..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/ThisInStaticFuncError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/UndeclVarError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/UndeclVarError.class" deleted file mode 100644 index d1945f289..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/UndeclVarError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/UnrecogCharError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/UnrecogCharError.class" deleted file mode 100644 index cf7857e28..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/UnrecogCharError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/UntermStrError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/UntermStrError.class" deleted file mode 100644 index 93edd524e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/error/UntermStrError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/frontend/BaseLexer.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/frontend/BaseLexer.class" deleted file mode 100644 index 106927055..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/frontend/BaseLexer.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/frontend/BaseParser.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/frontend/BaseParser.class" deleted file mode 100644 index 1b2dceb51..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/frontend/BaseParser.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/frontend/Lexer.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/frontend/Lexer.class" deleted file mode 100644 index 56ac34f45..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/frontend/Lexer.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/frontend/Lexer.l" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/frontend/Lexer.l" deleted file mode 100644 index 8d65efdd9..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/frontend/Lexer.l" +++ /dev/null @@ -1,114 +0,0 @@ -/* - * 本文件是构造Decaf编译器所需要的JFlex输入脚本。 - * 在第一阶段,你需要完成这个脚本的内容,请参考"JFlex Manual"中关于如何编写JFlex脚本的说明。 - * - * 注意:在UNIX系统下你需要保证这个文件使用UNIX文本格式,可使用dos2unix命令进行文本各式转换。 - */ - -package decaf.frontend; - -import decaf.Location; -import decaf.error.*; -import decaf.utils.MiscUtils; - -%% -%public -%class Lexer -%extends BaseLexer -%byaccj -%line -%column -%switch -%unicode - -%{ - private Location sloc = null; - private StringBuilder buffer = new StringBuilder(); - - public Location getLocation() { - return new decaf.Location(yyline + 1, yycolumn + 1); - } -%} - -NEWLINE = (\r|\n|\r\n) -DIGIT = ([0-9]) -HEX_DIGIT = ([0-9A-Fa-f]) -HEX_INTEGER = (0[Xx]{HEX_DIGIT}+) -DEC_INTEGER = ({DIGIT}+) -INTEGER = ({HEX_INTEGER}|{DEC_INTEGER}) -IDENTIFIER = ([A-Za-z][_0-9A-Za-z]*) -SIMPLE_OPERATOR = ("+"|"-"|"*"|"/"|"%"|"="|"<"|">"|"."|","|";"|"!"|"("|")"|"["|"]"|"{"|"}"|"?"|":") -S_COMMENT = ("//"[^\r\n]*{NEWLINE}) -WHITESPACE = ([ \t]+) - - // 开始条件S表示字符串 -%x S - -%% - // 识别注释和空白字符的规则 -{WHITESPACE} { /* Just ignore */ } -{NEWLINE} { /* Just ignore */ } -{S_COMMENT} { /* Just ignore */ } - - - // 识别关键字的规则 -"void" { return keyword(Parser.VOID); } -"int" { return keyword(Parser.INT); } -"bool" { return keyword(Parser.BOOL); } -"string" { return keyword(Parser.STRING); } -"new" { return keyword(Parser.NEW); } -"null" { return keyword(Parser.NULL); } -"class" { return keyword(Parser.CLASS); } -"extends" { return keyword(Parser.EXTENDS); } -"this" { return keyword(Parser.THIS); } -"while" { return keyword(Parser.WHILE); } -"for" { return keyword(Parser.FOR); } -"if" { return keyword(Parser.IF); } -"else" { return keyword(Parser.ELSE); } -"return" { return keyword(Parser.RETURN); } -"break" { return keyword(Parser.BREAK); } -"Print" { return keyword(Parser.PRINT); } -"ReadInteger" { return keyword(Parser.READ_INTEGER); } -"ReadLine" { return keyword(Parser.READ_LINE); } -"static" { return keyword(Parser.STATIC); } -"instanceof" { return keyword(Parser.INSTANCEOF); } -"switch" { return keyword(Parser.SWITCH); } -"case" { return keyword(Parser.CASE); } -"default" { return keyword(Parser.DEFAULT); } -"repeat" { return keyword(Parser.REPEAT); } -"until" { return keyword(Parser.UNTIL); } -"continue" { return keyword(Parser.CONTINUE); } - - // 识别操作符的规则 -"<=" { return operator(Parser.LESS_EQUAL); } -">=" { return operator(Parser.GREATER_EQUAL);} -"==" { return operator(Parser.EQUAL); } -"!=" { return operator(Parser.NOT_EQUAL); } -"&&" { return operator(Parser.AND); } -"||" { return operator(Parser.OR); } -"<<" { return operator(Parser.PCLONE); } -{SIMPLE_OPERATOR} { return operator((int)yycharat(0)); } - - // 识别常数的规则 -"true" { return boolConst(true); } -"false" { return boolConst(false); } -{INTEGER} { return intConst(yytext()); } -\" { sloc = getLocation(); - yybegin(S); - buffer = new StringBuilder(); } -{NEWLINE} { issueError(new NewlineInStrError(sloc, MiscUtils.quote(buffer.toString())));} -<> { issueError(new UntermStrError(sloc, MiscUtils.quote(buffer.toString()))); - yybegin(YYINITIAL); } -\" { yybegin(YYINITIAL); - return StringConst(buffer.toString(), sloc); } -"\\n" { buffer.append('\n'); } -"\\t" { buffer.append('\t'); } -"\\\"" { buffer.append('"'); } -"\\\\" { buffer.append('\\'); } -. { buffer.append(yytext()); } - - // 识别标识符的规则 -{IDENTIFIER} { return identifier(yytext()); } - - // 上面规则不能识别的字符怎么处理 -. { issueError(new UnrecogCharError(getLocation(), yycharat(0))); } diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/frontend/Parser.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/frontend/Parser.class" deleted file mode 100644 index 0e755ae4d..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/frontend/Parser.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/frontend/Parser.output" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/frontend/Parser.output" deleted file mode 100644 index 157aee224..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/frontend/Parser.output" +++ /dev/null @@ -1,3810 +0,0 @@ - 0 $accept : Program $end - - 1 Program : ClassList - - 2 ClassList : ClassList ClassDef - 3 | ClassDef - - 4 VariableDef : Variable ';' - - 5 Variable : Type IDENTIFIER - - 6 Type : INT - 7 | VOID - 8 | BOOL - 9 | STRING - 10 | CLASS IDENTIFIER - 11 | Type '[' ']' - - 12 ClassDef : CLASS IDENTIFIER ExtendsClause '{' FieldList '}' - - 13 ExtendsClause : EXTENDS IDENTIFIER - 14 | - - 15 FieldList : FieldList VariableDef - 16 | FieldList FunctionDef - 17 | - - 18 Formals : VariableList - 19 | - - 20 VariableList : VariableList ',' Variable - 21 | Variable - - 22 FunctionDef : STATIC Type IDENTIFIER '(' Formals ')' StmtBlock - 23 | Type IDENTIFIER '(' Formals ')' StmtBlock - - 24 StmtBlock : '{' StmtList '}' - - 25 StmtList : StmtList Stmt - 26 | - - 27 Stmt : VariableDef - 28 | SimpleStmt ';' - 29 | IfStmt - 30 | WhileStmt - 31 | ForStmt - 32 | SwitchStmt - 33 | RepeatStmt ';' - 34 | ReturnStmt ';' - 35 | PrintStmt ';' - 36 | BreakStmt ';' - 37 | ContinueStmt ';' - 38 | StmtBlock - - 39 SimpleStmt : LValue '=' Expr - 40 | Call - 41 | - - 42 Receiver : Expr '.' - 43 | - - 44 LValue : Receiver IDENTIFIER - 45 | Expr '[' Expr ']' - - 46 Call : Receiver IDENTIFIER '(' Actuals ')' - - 47 Expr : LValue - 48 | Call - 49 | Constant - 50 | Expr '+' Expr - 51 | Expr '-' Expr - 52 | Expr '*' Expr - 53 | Expr '/' Expr - 54 | Expr '%' Expr - 55 | Expr EQUAL Expr - 56 | Expr NOT_EQUAL Expr - 57 | Expr '<' Expr - 58 | Expr '>' Expr - 59 | Expr LESS_EQUAL Expr - 60 | Expr GREATER_EQUAL Expr - 61 | Expr AND Expr - 62 | Expr OR Expr - 63 | '(' Expr ')' - 64 | '-' Expr - 65 | '!' Expr - 66 | READ_INTEGER '(' ')' - 67 | READ_LINE '(' ')' - 68 | THIS - 69 | NEW IDENTIFIER '(' ')' - 70 | NEW Type '[' Expr ']' - 71 | INSTANCEOF '(' Expr ',' IDENTIFIER ')' - 72 | '(' CLASS IDENTIFIER ')' Expr - 73 | Expr '?' Expr ':' Expr - 74 | Expr PCLONE Expr - - 75 Constant : LITERAL - 76 | NULL - - 77 Actuals : ExprList - 78 | - - 79 ExprList : ExprList ',' Expr - 80 | Expr - - 81 WhileStmt : WHILE '(' Expr ')' Stmt - - 82 ForStmt : FOR '(' SimpleStmt ';' Expr ';' SimpleStmt ')' Stmt - - 83 BreakStmt : BREAK - - 84 ContinueStmt : CONTINUE - - 85 IfStmt : IF '(' Expr ')' Stmt ElseClause - - 86 SwitchStmt : SWITCH '(' Expr ')' '{' CaseStmtList DefaultStmt '}' - - 87 CaseStmtList : CaseStmtList CaseStmt - 88 | - - 89 CaseStmt : CASE Constant ':' StmtList - - 90 DefaultStmt : DEFAULT ':' StmtList - 91 | - - 92 RepeatStmt : REPEAT StmtList UNTIL '(' Expr ')' - - 93 ElseClause : ELSE Stmt - 94 | - - 95 ReturnStmt : RETURN Expr - 96 | RETURN - - 97 PrintStmt : PRINT '(' ExprList ')' - -state 0 - $accept : . Program $end (0) - - CLASS shift 1 - . error - - Program goto 2 - ClassList goto 3 - ClassDef goto 4 - - -state 1 - ClassDef : CLASS . IDENTIFIER ExtendsClause '{' FieldList '}' (12) - - IDENTIFIER shift 5 - . error - - -state 2 - $accept : Program . $end (0) - - $end accept - - -state 3 - Program : ClassList . (1) - ClassList : ClassList . ClassDef (2) - - CLASS shift 1 - $end reduce 1 - - ClassDef goto 6 - - -state 4 - ClassList : ClassDef . (3) - - . reduce 3 - - -state 5 - ClassDef : CLASS IDENTIFIER . ExtendsClause '{' FieldList '}' (12) - ExtendsClause : . (14) - - EXTENDS shift 7 - '{' reduce 14 - - ExtendsClause goto 8 - - -state 6 - ClassList : ClassList ClassDef . (2) - - . reduce 2 - - -state 7 - ExtendsClause : EXTENDS . IDENTIFIER (13) - - IDENTIFIER shift 9 - . error - - -state 8 - ClassDef : CLASS IDENTIFIER ExtendsClause . '{' FieldList '}' (12) - - '{' shift 10 - . error - - -state 9 - ExtendsClause : EXTENDS IDENTIFIER . (13) - - . reduce 13 - - -state 10 - ClassDef : CLASS IDENTIFIER ExtendsClause '{' . FieldList '}' (12) - FieldList : . (17) - - . reduce 17 - - FieldList goto 11 - - -state 11 - ClassDef : CLASS IDENTIFIER ExtendsClause '{' FieldList . '}' (12) - FieldList : FieldList . VariableDef (15) - FieldList : FieldList . FunctionDef (16) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - STATIC shift 17 - '}' shift 18 - . error - - VariableDef goto 19 - Variable goto 20 - Type goto 21 - FunctionDef goto 22 - - -state 12 - Type : VOID . (7) - - . reduce 7 - - -state 13 - Type : BOOL . (8) - - . reduce 8 - - -state 14 - Type : INT . (6) - - . reduce 6 - - -state 15 - Type : STRING . (9) - - . reduce 9 - - -state 16 - Type : CLASS . IDENTIFIER (10) - - IDENTIFIER shift 23 - . error - - -state 17 - FunctionDef : STATIC . Type IDENTIFIER '(' Formals ')' StmtBlock (22) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - . error - - Type goto 24 - - -state 18 - ClassDef : CLASS IDENTIFIER ExtendsClause '{' FieldList '}' . (12) - - . reduce 12 - - -state 19 - FieldList : FieldList VariableDef . (15) - - . reduce 15 - - -state 20 - VariableDef : Variable . ';' (4) - - ';' shift 25 - . error - - -state 21 - Variable : Type . IDENTIFIER (5) - Type : Type . '[' ']' (11) - FunctionDef : Type . IDENTIFIER '(' Formals ')' StmtBlock (23) - - IDENTIFIER shift 26 - '[' shift 27 - . error - - -state 22 - FieldList : FieldList FunctionDef . (16) - - . reduce 16 - - -state 23 - Type : CLASS IDENTIFIER . (10) - - . reduce 10 - - -state 24 - Type : Type . '[' ']' (11) - FunctionDef : STATIC Type . IDENTIFIER '(' Formals ')' StmtBlock (22) - - IDENTIFIER shift 28 - '[' shift 27 - . error - - -state 25 - VariableDef : Variable ';' . (4) - - . reduce 4 - - -state 26 - Variable : Type IDENTIFIER . (5) - FunctionDef : Type IDENTIFIER . '(' Formals ')' StmtBlock (23) - - '(' shift 29 - ';' reduce 5 - - -state 27 - Type : Type '[' . ']' (11) - - ']' shift 30 - . error - - -state 28 - FunctionDef : STATIC Type IDENTIFIER . '(' Formals ')' StmtBlock (22) - - '(' shift 31 - . error - - -state 29 - FunctionDef : Type IDENTIFIER '(' . Formals ')' StmtBlock (23) - Formals : . (19) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - ')' reduce 19 - - Variable goto 32 - Type goto 33 - Formals goto 34 - VariableList goto 35 - - -state 30 - Type : Type '[' ']' . (11) - - . reduce 11 - - -state 31 - FunctionDef : STATIC Type IDENTIFIER '(' . Formals ')' StmtBlock (22) - Formals : . (19) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - ')' reduce 19 - - Variable goto 32 - Type goto 33 - Formals goto 36 - VariableList goto 35 - - -state 32 - VariableList : Variable . (21) - - . reduce 21 - - -state 33 - Variable : Type . IDENTIFIER (5) - Type : Type . '[' ']' (11) - - IDENTIFIER shift 37 - '[' shift 27 - . error - - -state 34 - FunctionDef : Type IDENTIFIER '(' Formals . ')' StmtBlock (23) - - ')' shift 38 - . error - - -state 35 - Formals : VariableList . (18) - VariableList : VariableList . ',' Variable (20) - - ',' shift 39 - ')' reduce 18 - - -state 36 - FunctionDef : STATIC Type IDENTIFIER '(' Formals . ')' StmtBlock (22) - - ')' shift 40 - . error - - -state 37 - Variable : Type IDENTIFIER . (5) - - . reduce 5 - - -state 38 - FunctionDef : Type IDENTIFIER '(' Formals ')' . StmtBlock (23) - - '{' shift 41 - . error - - StmtBlock goto 42 - - -state 39 - VariableList : VariableList ',' . Variable (20) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - . error - - Variable goto 43 - Type goto 33 - - -state 40 - FunctionDef : STATIC Type IDENTIFIER '(' Formals ')' . StmtBlock (22) - - '{' shift 41 - . error - - StmtBlock goto 44 - - -state 41 - StmtBlock : '{' . StmtList '}' (24) - StmtList : . (26) - - . reduce 26 - - StmtList goto 45 - - -state 42 - FunctionDef : Type IDENTIFIER '(' Formals ')' StmtBlock . (23) - - . reduce 23 - - -state 43 - VariableList : VariableList ',' Variable . (20) - - . reduce 20 - - -state 44 - FunctionDef : STATIC Type IDENTIFIER '(' Formals ')' StmtBlock . (22) - - . reduce 22 - - -state 45 - StmtBlock : '{' StmtList . '}' (24) - StmtList : StmtList . Stmt (25) - SimpleStmt : . (41) - Receiver : . (43) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - NULL shift 46 - THIS shift 47 - WHILE shift 48 - FOR shift 49 - IF shift 50 - RETURN shift 51 - BREAK shift 52 - NEW shift 53 - PRINT shift 54 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - SWITCH shift 59 - REPEAT shift 60 - CONTINUE shift 61 - '-' shift 62 - '!' shift 63 - '(' shift 64 - '{' shift 41 - '}' shift 65 - IDENTIFIER reduce 43 - ';' reduce 41 - - VariableDef goto 66 - Variable goto 20 - Type goto 33 - StmtBlock goto 67 - Stmt goto 68 - SimpleStmt goto 69 - IfStmt goto 70 - WhileStmt goto 71 - ForStmt goto 72 - SwitchStmt goto 73 - RepeatStmt goto 74 - ReturnStmt goto 75 - PrintStmt goto 76 - BreakStmt goto 77 - ContinueStmt goto 78 - LValue goto 79 - Expr goto 80 - Call goto 81 - Receiver goto 82 - Constant goto 83 - - -state 46 - Constant : NULL . (76) - - . reduce 76 - - -state 47 - Expr : THIS . (68) - - . reduce 68 - - -state 48 - WhileStmt : WHILE . '(' Expr ')' Stmt (81) - - '(' shift 84 - . error - - -state 49 - ForStmt : FOR . '(' SimpleStmt ';' Expr ';' SimpleStmt ')' Stmt (82) - - '(' shift 85 - . error - - -state 50 - IfStmt : IF . '(' Expr ')' Stmt ElseClause (85) - - '(' shift 86 - . error - - -state 51 - ReturnStmt : RETURN . Expr (95) - ReturnStmt : RETURN . (96) - Receiver : . (43) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - '-' shift 62 - '!' shift 63 - '(' shift 64 - IDENTIFIER reduce 43 - ';' reduce 96 - - LValue goto 87 - Expr goto 88 - Call goto 89 - Receiver goto 82 - Constant goto 83 - - -state 52 - BreakStmt : BREAK . (83) - - . reduce 83 - - -state 53 - Expr : NEW . IDENTIFIER '(' ')' (69) - Expr : NEW . Type '[' Expr ']' (70) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - IDENTIFIER shift 90 - . error - - Type goto 91 - - -state 54 - PrintStmt : PRINT . '(' ExprList ')' (97) - - '(' shift 92 - . error - - -state 55 - Expr : READ_INTEGER . '(' ')' (66) - - '(' shift 93 - . error - - -state 56 - Expr : READ_LINE . '(' ')' (67) - - '(' shift 94 - . error - - -state 57 - Constant : LITERAL . (75) - - . reduce 75 - - -state 58 - Expr : INSTANCEOF . '(' Expr ',' IDENTIFIER ')' (71) - - '(' shift 95 - . error - - -state 59 - SwitchStmt : SWITCH . '(' Expr ')' '{' CaseStmtList DefaultStmt '}' (86) - - '(' shift 96 - . error - - -state 60 - RepeatStmt : REPEAT . StmtList UNTIL '(' Expr ')' (92) - StmtList : . (26) - - . reduce 26 - - StmtList goto 97 - - -state 61 - ContinueStmt : CONTINUE . (84) - - . reduce 84 - - -state 62 - Expr : '-' . Expr (64) - Receiver : . (43) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - '-' shift 62 - '!' shift 63 - '(' shift 64 - IDENTIFIER reduce 43 - - LValue goto 87 - Expr goto 98 - Call goto 89 - Receiver goto 82 - Constant goto 83 - - -state 63 - Expr : '!' . Expr (65) - Receiver : . (43) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - '-' shift 62 - '!' shift 63 - '(' shift 64 - IDENTIFIER reduce 43 - - LValue goto 87 - Expr goto 99 - Call goto 89 - Receiver goto 82 - Constant goto 83 - - -state 64 - Expr : '(' . Expr ')' (63) - Expr : '(' . CLASS IDENTIFIER ')' Expr (72) - Receiver : . (43) - - CLASS shift 100 - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - '-' shift 62 - '!' shift 63 - '(' shift 64 - IDENTIFIER reduce 43 - - LValue goto 87 - Expr goto 101 - Call goto 89 - Receiver goto 82 - Constant goto 83 - - -state 65 - StmtBlock : '{' StmtList '}' . (24) - - . reduce 24 - - -state 66 - Stmt : VariableDef . (27) - - . reduce 27 - - -state 67 - Stmt : StmtBlock . (38) - - . reduce 38 - - -state 68 - StmtList : StmtList Stmt . (25) - - . reduce 25 - - -state 69 - Stmt : SimpleStmt . ';' (28) - - ';' shift 102 - . error - - -state 70 - Stmt : IfStmt . (29) - - . reduce 29 - - -state 71 - Stmt : WhileStmt . (30) - - . reduce 30 - - -state 72 - Stmt : ForStmt . (31) - - . reduce 31 - - -state 73 - Stmt : SwitchStmt . (32) - - . reduce 32 - - -state 74 - Stmt : RepeatStmt . ';' (33) - - ';' shift 103 - . error - - -state 75 - Stmt : ReturnStmt . ';' (34) - - ';' shift 104 - . error - - -state 76 - Stmt : PrintStmt . ';' (35) - - ';' shift 105 - . error - - -state 77 - Stmt : BreakStmt . ';' (36) - - ';' shift 106 - . error - - -state 78 - Stmt : ContinueStmt . ';' (37) - - ';' shift 107 - . error - - -state 79 - SimpleStmt : LValue . '=' Expr (39) - Expr : LValue . (47) - - '=' shift 108 - AND reduce 47 - OR reduce 47 - LESS_EQUAL reduce 47 - GREATER_EQUAL reduce 47 - EQUAL reduce 47 - NOT_EQUAL reduce 47 - '+' reduce 47 - '-' reduce 47 - '*' reduce 47 - '/' reduce 47 - '%' reduce 47 - '>' reduce 47 - '<' reduce 47 - '.' reduce 47 - '[' reduce 47 - '?' reduce 47 - PCLONE reduce 47 - - -state 80 - Receiver : Expr . '.' (42) - LValue : Expr . '[' Expr ']' (45) - Expr : Expr . '+' Expr (50) - Expr : Expr . '-' Expr (51) - Expr : Expr . '*' Expr (52) - Expr : Expr . '/' Expr (53) - Expr : Expr . '%' Expr (54) - Expr : Expr . EQUAL Expr (55) - Expr : Expr . NOT_EQUAL Expr (56) - Expr : Expr . '<' Expr (57) - Expr : Expr . '>' Expr (58) - Expr : Expr . LESS_EQUAL Expr (59) - Expr : Expr . GREATER_EQUAL Expr (60) - Expr : Expr . AND Expr (61) - Expr : Expr . OR Expr (62) - Expr : Expr . '?' Expr ':' Expr (73) - Expr : Expr . PCLONE Expr (74) - - AND shift 109 - OR shift 110 - LESS_EQUAL shift 111 - GREATER_EQUAL shift 112 - EQUAL shift 113 - NOT_EQUAL shift 114 - '+' shift 115 - '-' shift 116 - '*' shift 117 - '/' shift 118 - '%' shift 119 - '>' shift 120 - '<' shift 121 - '.' shift 122 - '[' shift 123 - '?' shift 124 - PCLONE shift 125 - . error - - -state 81 - SimpleStmt : Call . (40) - Expr : Call . (48) - - AND reduce 48 - OR reduce 48 - LESS_EQUAL reduce 48 - GREATER_EQUAL reduce 48 - EQUAL reduce 48 - NOT_EQUAL reduce 48 - '+' reduce 48 - '-' reduce 48 - '*' reduce 48 - '/' reduce 48 - '%' reduce 48 - '>' reduce 48 - '<' reduce 48 - '.' reduce 48 - ';' reduce 40 - ')' reduce 40 - '[' reduce 48 - '?' reduce 48 - PCLONE reduce 48 - - -state 82 - LValue : Receiver . IDENTIFIER (44) - Call : Receiver . IDENTIFIER '(' Actuals ')' (46) - - IDENTIFIER shift 126 - . error - - -state 83 - Expr : Constant . (49) - - . reduce 49 - - -state 84 - WhileStmt : WHILE '(' . Expr ')' Stmt (81) - Receiver : . (43) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - '-' shift 62 - '!' shift 63 - '(' shift 64 - IDENTIFIER reduce 43 - - LValue goto 87 - Expr goto 127 - Call goto 89 - Receiver goto 82 - Constant goto 83 - - -state 85 - ForStmt : FOR '(' . SimpleStmt ';' Expr ';' SimpleStmt ')' Stmt (82) - SimpleStmt : . (41) - Receiver : . (43) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - '-' shift 62 - '!' shift 63 - '(' shift 64 - IDENTIFIER reduce 43 - ';' reduce 41 - - SimpleStmt goto 128 - LValue goto 79 - Expr goto 80 - Call goto 81 - Receiver goto 82 - Constant goto 83 - - -state 86 - IfStmt : IF '(' . Expr ')' Stmt ElseClause (85) - Receiver : . (43) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - '-' shift 62 - '!' shift 63 - '(' shift 64 - IDENTIFIER reduce 43 - - LValue goto 87 - Expr goto 129 - Call goto 89 - Receiver goto 82 - Constant goto 83 - - -state 87 - Expr : LValue . (47) - - . reduce 47 - - -state 88 - Receiver : Expr . '.' (42) - LValue : Expr . '[' Expr ']' (45) - Expr : Expr . '+' Expr (50) - Expr : Expr . '-' Expr (51) - Expr : Expr . '*' Expr (52) - Expr : Expr . '/' Expr (53) - Expr : Expr . '%' Expr (54) - Expr : Expr . EQUAL Expr (55) - Expr : Expr . NOT_EQUAL Expr (56) - Expr : Expr . '<' Expr (57) - Expr : Expr . '>' Expr (58) - Expr : Expr . LESS_EQUAL Expr (59) - Expr : Expr . GREATER_EQUAL Expr (60) - Expr : Expr . AND Expr (61) - Expr : Expr . OR Expr (62) - Expr : Expr . '?' Expr ':' Expr (73) - Expr : Expr . PCLONE Expr (74) - ReturnStmt : RETURN Expr . (95) - - AND shift 109 - OR shift 110 - LESS_EQUAL shift 111 - GREATER_EQUAL shift 112 - EQUAL shift 113 - NOT_EQUAL shift 114 - '+' shift 115 - '-' shift 116 - '*' shift 117 - '/' shift 118 - '%' shift 119 - '>' shift 120 - '<' shift 121 - '.' shift 122 - '[' shift 123 - '?' shift 124 - PCLONE shift 125 - ';' reduce 95 - - -state 89 - Expr : Call . (48) - - . reduce 48 - - -state 90 - Expr : NEW IDENTIFIER . '(' ')' (69) - - '(' shift 130 - . error - - -state 91 - Type : Type . '[' ']' (11) - Expr : NEW Type . '[' Expr ']' (70) - - '[' shift 131 - . error - - -state 92 - PrintStmt : PRINT '(' . ExprList ')' (97) - Receiver : . (43) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - '-' shift 62 - '!' shift 63 - '(' shift 64 - IDENTIFIER reduce 43 - - LValue goto 87 - Expr goto 132 - Call goto 89 - Receiver goto 82 - Constant goto 83 - ExprList goto 133 - - -state 93 - Expr : READ_INTEGER '(' . ')' (66) - - ')' shift 134 - . error - - -state 94 - Expr : READ_LINE '(' . ')' (67) - - ')' shift 135 - . error - - -state 95 - Expr : INSTANCEOF '(' . Expr ',' IDENTIFIER ')' (71) - Receiver : . (43) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - '-' shift 62 - '!' shift 63 - '(' shift 64 - IDENTIFIER reduce 43 - - LValue goto 87 - Expr goto 136 - Call goto 89 - Receiver goto 82 - Constant goto 83 - - -state 96 - SwitchStmt : SWITCH '(' . Expr ')' '{' CaseStmtList DefaultStmt '}' (86) - Receiver : . (43) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - '-' shift 62 - '!' shift 63 - '(' shift 64 - IDENTIFIER reduce 43 - - LValue goto 87 - Expr goto 137 - Call goto 89 - Receiver goto 82 - Constant goto 83 - - -state 97 - StmtList : StmtList . Stmt (25) - RepeatStmt : REPEAT StmtList . UNTIL '(' Expr ')' (92) - SimpleStmt : . (41) - Receiver : . (43) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - NULL shift 46 - THIS shift 47 - WHILE shift 48 - FOR shift 49 - IF shift 50 - RETURN shift 51 - BREAK shift 52 - NEW shift 53 - PRINT shift 54 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - SWITCH shift 59 - REPEAT shift 60 - UNTIL shift 138 - CONTINUE shift 61 - '-' shift 62 - '!' shift 63 - '(' shift 64 - '{' shift 41 - IDENTIFIER reduce 43 - ';' reduce 41 - - VariableDef goto 66 - Variable goto 20 - Type goto 33 - StmtBlock goto 67 - Stmt goto 68 - SimpleStmt goto 69 - IfStmt goto 70 - WhileStmt goto 71 - ForStmt goto 72 - SwitchStmt goto 73 - RepeatStmt goto 74 - ReturnStmt goto 75 - PrintStmt goto 76 - BreakStmt goto 77 - ContinueStmt goto 78 - LValue goto 79 - Expr goto 80 - Call goto 81 - Receiver goto 82 - Constant goto 83 - - -state 98 - Receiver : Expr . '.' (42) - LValue : Expr . '[' Expr ']' (45) - Expr : Expr . '+' Expr (50) - Expr : Expr . '-' Expr (51) - Expr : Expr . '*' Expr (52) - Expr : Expr . '/' Expr (53) - Expr : Expr . '%' Expr (54) - Expr : Expr . EQUAL Expr (55) - Expr : Expr . NOT_EQUAL Expr (56) - Expr : Expr . '<' Expr (57) - Expr : Expr . '>' Expr (58) - Expr : Expr . LESS_EQUAL Expr (59) - Expr : Expr . GREATER_EQUAL Expr (60) - Expr : Expr . AND Expr (61) - Expr : Expr . OR Expr (62) - Expr : '-' Expr . (64) - Expr : Expr . '?' Expr ':' Expr (73) - Expr : Expr . PCLONE Expr (74) - - '.' shift 122 - '[' shift 123 - AND reduce 64 - OR reduce 64 - LESS_EQUAL reduce 64 - GREATER_EQUAL reduce 64 - EQUAL reduce 64 - NOT_EQUAL reduce 64 - '+' reduce 64 - '-' reduce 64 - '*' reduce 64 - '/' reduce 64 - '%' reduce 64 - '>' reduce 64 - '<' reduce 64 - ',' reduce 64 - ';' reduce 64 - ')' reduce 64 - ']' reduce 64 - ':' reduce 64 - '?' reduce 64 - PCLONE reduce 64 - - -state 99 - Receiver : Expr . '.' (42) - LValue : Expr . '[' Expr ']' (45) - Expr : Expr . '+' Expr (50) - Expr : Expr . '-' Expr (51) - Expr : Expr . '*' Expr (52) - Expr : Expr . '/' Expr (53) - Expr : Expr . '%' Expr (54) - Expr : Expr . EQUAL Expr (55) - Expr : Expr . NOT_EQUAL Expr (56) - Expr : Expr . '<' Expr (57) - Expr : Expr . '>' Expr (58) - Expr : Expr . LESS_EQUAL Expr (59) - Expr : Expr . GREATER_EQUAL Expr (60) - Expr : Expr . AND Expr (61) - Expr : Expr . OR Expr (62) - Expr : '!' Expr . (65) - Expr : Expr . '?' Expr ':' Expr (73) - Expr : Expr . PCLONE Expr (74) - - '.' shift 122 - '[' shift 123 - AND reduce 65 - OR reduce 65 - LESS_EQUAL reduce 65 - GREATER_EQUAL reduce 65 - EQUAL reduce 65 - NOT_EQUAL reduce 65 - '+' reduce 65 - '-' reduce 65 - '*' reduce 65 - '/' reduce 65 - '%' reduce 65 - '>' reduce 65 - '<' reduce 65 - ',' reduce 65 - ';' reduce 65 - ')' reduce 65 - ']' reduce 65 - ':' reduce 65 - '?' reduce 65 - PCLONE reduce 65 - - -state 100 - Expr : '(' CLASS . IDENTIFIER ')' Expr (72) - - IDENTIFIER shift 139 - . error - - -state 101 - Receiver : Expr . '.' (42) - LValue : Expr . '[' Expr ']' (45) - Expr : Expr . '+' Expr (50) - Expr : Expr . '-' Expr (51) - Expr : Expr . '*' Expr (52) - Expr : Expr . '/' Expr (53) - Expr : Expr . '%' Expr (54) - Expr : Expr . EQUAL Expr (55) - Expr : Expr . NOT_EQUAL Expr (56) - Expr : Expr . '<' Expr (57) - Expr : Expr . '>' Expr (58) - Expr : Expr . LESS_EQUAL Expr (59) - Expr : Expr . GREATER_EQUAL Expr (60) - Expr : Expr . AND Expr (61) - Expr : Expr . OR Expr (62) - Expr : '(' Expr . ')' (63) - Expr : Expr . '?' Expr ':' Expr (73) - Expr : Expr . PCLONE Expr (74) - - AND shift 109 - OR shift 110 - LESS_EQUAL shift 111 - GREATER_EQUAL shift 112 - EQUAL shift 113 - NOT_EQUAL shift 114 - '+' shift 115 - '-' shift 116 - '*' shift 117 - '/' shift 118 - '%' shift 119 - '>' shift 120 - '<' shift 121 - '.' shift 122 - ')' shift 140 - '[' shift 123 - '?' shift 124 - PCLONE shift 125 - . error - - -state 102 - Stmt : SimpleStmt ';' . (28) - - . reduce 28 - - -state 103 - Stmt : RepeatStmt ';' . (33) - - . reduce 33 - - -state 104 - Stmt : ReturnStmt ';' . (34) - - . reduce 34 - - -state 105 - Stmt : PrintStmt ';' . (35) - - . reduce 35 - - -state 106 - Stmt : BreakStmt ';' . (36) - - . reduce 36 - - -state 107 - Stmt : ContinueStmt ';' . (37) - - . reduce 37 - - -state 108 - SimpleStmt : LValue '=' . Expr (39) - Receiver : . (43) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - '-' shift 62 - '!' shift 63 - '(' shift 64 - IDENTIFIER reduce 43 - - LValue goto 87 - Expr goto 141 - Call goto 89 - Receiver goto 82 - Constant goto 83 - - -state 109 - Expr : Expr AND . Expr (61) - Receiver : . (43) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - '-' shift 62 - '!' shift 63 - '(' shift 64 - IDENTIFIER reduce 43 - - LValue goto 87 - Expr goto 142 - Call goto 89 - Receiver goto 82 - Constant goto 83 - - -state 110 - Expr : Expr OR . Expr (62) - Receiver : . (43) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - '-' shift 62 - '!' shift 63 - '(' shift 64 - IDENTIFIER reduce 43 - - LValue goto 87 - Expr goto 143 - Call goto 89 - Receiver goto 82 - Constant goto 83 - - -state 111 - Expr : Expr LESS_EQUAL . Expr (59) - Receiver : . (43) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - '-' shift 62 - '!' shift 63 - '(' shift 64 - IDENTIFIER reduce 43 - - LValue goto 87 - Expr goto 144 - Call goto 89 - Receiver goto 82 - Constant goto 83 - - -state 112 - Expr : Expr GREATER_EQUAL . Expr (60) - Receiver : . (43) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - '-' shift 62 - '!' shift 63 - '(' shift 64 - IDENTIFIER reduce 43 - - LValue goto 87 - Expr goto 145 - Call goto 89 - Receiver goto 82 - Constant goto 83 - - -state 113 - Expr : Expr EQUAL . Expr (55) - Receiver : . (43) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - '-' shift 62 - '!' shift 63 - '(' shift 64 - IDENTIFIER reduce 43 - - LValue goto 87 - Expr goto 146 - Call goto 89 - Receiver goto 82 - Constant goto 83 - - -state 114 - Expr : Expr NOT_EQUAL . Expr (56) - Receiver : . (43) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - '-' shift 62 - '!' shift 63 - '(' shift 64 - IDENTIFIER reduce 43 - - LValue goto 87 - Expr goto 147 - Call goto 89 - Receiver goto 82 - Constant goto 83 - - -state 115 - Expr : Expr '+' . Expr (50) - Receiver : . (43) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - '-' shift 62 - '!' shift 63 - '(' shift 64 - IDENTIFIER reduce 43 - - LValue goto 87 - Expr goto 148 - Call goto 89 - Receiver goto 82 - Constant goto 83 - - -state 116 - Expr : Expr '-' . Expr (51) - Receiver : . (43) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - '-' shift 62 - '!' shift 63 - '(' shift 64 - IDENTIFIER reduce 43 - - LValue goto 87 - Expr goto 149 - Call goto 89 - Receiver goto 82 - Constant goto 83 - - -state 117 - Expr : Expr '*' . Expr (52) - Receiver : . (43) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - '-' shift 62 - '!' shift 63 - '(' shift 64 - IDENTIFIER reduce 43 - - LValue goto 87 - Expr goto 150 - Call goto 89 - Receiver goto 82 - Constant goto 83 - - -state 118 - Expr : Expr '/' . Expr (53) - Receiver : . (43) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - '-' shift 62 - '!' shift 63 - '(' shift 64 - IDENTIFIER reduce 43 - - LValue goto 87 - Expr goto 151 - Call goto 89 - Receiver goto 82 - Constant goto 83 - - -state 119 - Expr : Expr '%' . Expr (54) - Receiver : . (43) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - '-' shift 62 - '!' shift 63 - '(' shift 64 - IDENTIFIER reduce 43 - - LValue goto 87 - Expr goto 152 - Call goto 89 - Receiver goto 82 - Constant goto 83 - - -state 120 - Expr : Expr '>' . Expr (58) - Receiver : . (43) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - '-' shift 62 - '!' shift 63 - '(' shift 64 - IDENTIFIER reduce 43 - - LValue goto 87 - Expr goto 153 - Call goto 89 - Receiver goto 82 - Constant goto 83 - - -state 121 - Expr : Expr '<' . Expr (57) - Receiver : . (43) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - '-' shift 62 - '!' shift 63 - '(' shift 64 - IDENTIFIER reduce 43 - - LValue goto 87 - Expr goto 154 - Call goto 89 - Receiver goto 82 - Constant goto 83 - - -state 122 - Receiver : Expr '.' . (42) - - . reduce 42 - - -state 123 - LValue : Expr '[' . Expr ']' (45) - Receiver : . (43) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - '-' shift 62 - '!' shift 63 - '(' shift 64 - IDENTIFIER reduce 43 - - LValue goto 87 - Expr goto 155 - Call goto 89 - Receiver goto 82 - Constant goto 83 - - -state 124 - Expr : Expr '?' . Expr ':' Expr (73) - Receiver : . (43) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - '-' shift 62 - '!' shift 63 - '(' shift 64 - IDENTIFIER reduce 43 - - LValue goto 87 - Expr goto 156 - Call goto 89 - Receiver goto 82 - Constant goto 83 - - -state 125 - Expr : Expr PCLONE . Expr (74) - Receiver : . (43) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - '-' shift 62 - '!' shift 63 - '(' shift 64 - IDENTIFIER reduce 43 - - LValue goto 87 - Expr goto 157 - Call goto 89 - Receiver goto 82 - Constant goto 83 - - -state 126 - LValue : Receiver IDENTIFIER . (44) - Call : Receiver IDENTIFIER . '(' Actuals ')' (46) - - '(' shift 158 - AND reduce 44 - OR reduce 44 - LESS_EQUAL reduce 44 - GREATER_EQUAL reduce 44 - EQUAL reduce 44 - NOT_EQUAL reduce 44 - '+' reduce 44 - '-' reduce 44 - '*' reduce 44 - '/' reduce 44 - '%' reduce 44 - '=' reduce 44 - '>' reduce 44 - '<' reduce 44 - '.' reduce 44 - ',' reduce 44 - ';' reduce 44 - ')' reduce 44 - '[' reduce 44 - ']' reduce 44 - ':' reduce 44 - '?' reduce 44 - PCLONE reduce 44 - - -state 127 - Receiver : Expr . '.' (42) - LValue : Expr . '[' Expr ']' (45) - Expr : Expr . '+' Expr (50) - Expr : Expr . '-' Expr (51) - Expr : Expr . '*' Expr (52) - Expr : Expr . '/' Expr (53) - Expr : Expr . '%' Expr (54) - Expr : Expr . EQUAL Expr (55) - Expr : Expr . NOT_EQUAL Expr (56) - Expr : Expr . '<' Expr (57) - Expr : Expr . '>' Expr (58) - Expr : Expr . LESS_EQUAL Expr (59) - Expr : Expr . GREATER_EQUAL Expr (60) - Expr : Expr . AND Expr (61) - Expr : Expr . OR Expr (62) - Expr : Expr . '?' Expr ':' Expr (73) - Expr : Expr . PCLONE Expr (74) - WhileStmt : WHILE '(' Expr . ')' Stmt (81) - - AND shift 109 - OR shift 110 - LESS_EQUAL shift 111 - GREATER_EQUAL shift 112 - EQUAL shift 113 - NOT_EQUAL shift 114 - '+' shift 115 - '-' shift 116 - '*' shift 117 - '/' shift 118 - '%' shift 119 - '>' shift 120 - '<' shift 121 - '.' shift 122 - ')' shift 159 - '[' shift 123 - '?' shift 124 - PCLONE shift 125 - . error - - -state 128 - ForStmt : FOR '(' SimpleStmt . ';' Expr ';' SimpleStmt ')' Stmt (82) - - ';' shift 160 - . error - - -state 129 - Receiver : Expr . '.' (42) - LValue : Expr . '[' Expr ']' (45) - Expr : Expr . '+' Expr (50) - Expr : Expr . '-' Expr (51) - Expr : Expr . '*' Expr (52) - Expr : Expr . '/' Expr (53) - Expr : Expr . '%' Expr (54) - Expr : Expr . EQUAL Expr (55) - Expr : Expr . NOT_EQUAL Expr (56) - Expr : Expr . '<' Expr (57) - Expr : Expr . '>' Expr (58) - Expr : Expr . LESS_EQUAL Expr (59) - Expr : Expr . GREATER_EQUAL Expr (60) - Expr : Expr . AND Expr (61) - Expr : Expr . OR Expr (62) - Expr : Expr . '?' Expr ':' Expr (73) - Expr : Expr . PCLONE Expr (74) - IfStmt : IF '(' Expr . ')' Stmt ElseClause (85) - - AND shift 109 - OR shift 110 - LESS_EQUAL shift 111 - GREATER_EQUAL shift 112 - EQUAL shift 113 - NOT_EQUAL shift 114 - '+' shift 115 - '-' shift 116 - '*' shift 117 - '/' shift 118 - '%' shift 119 - '>' shift 120 - '<' shift 121 - '.' shift 122 - ')' shift 161 - '[' shift 123 - '?' shift 124 - PCLONE shift 125 - . error - - -state 130 - Expr : NEW IDENTIFIER '(' . ')' (69) - - ')' shift 162 - . error - - -state 131 - Type : Type '[' . ']' (11) - Expr : NEW Type '[' . Expr ']' (70) - Receiver : . (43) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - '-' shift 62 - '!' shift 63 - '(' shift 64 - ']' shift 30 - IDENTIFIER reduce 43 - - LValue goto 87 - Expr goto 163 - Call goto 89 - Receiver goto 82 - Constant goto 83 - - -state 132 - Receiver : Expr . '.' (42) - LValue : Expr . '[' Expr ']' (45) - Expr : Expr . '+' Expr (50) - Expr : Expr . '-' Expr (51) - Expr : Expr . '*' Expr (52) - Expr : Expr . '/' Expr (53) - Expr : Expr . '%' Expr (54) - Expr : Expr . EQUAL Expr (55) - Expr : Expr . NOT_EQUAL Expr (56) - Expr : Expr . '<' Expr (57) - Expr : Expr . '>' Expr (58) - Expr : Expr . LESS_EQUAL Expr (59) - Expr : Expr . GREATER_EQUAL Expr (60) - Expr : Expr . AND Expr (61) - Expr : Expr . OR Expr (62) - Expr : Expr . '?' Expr ':' Expr (73) - Expr : Expr . PCLONE Expr (74) - ExprList : Expr . (80) - - AND shift 109 - OR shift 110 - LESS_EQUAL shift 111 - GREATER_EQUAL shift 112 - EQUAL shift 113 - NOT_EQUAL shift 114 - '+' shift 115 - '-' shift 116 - '*' shift 117 - '/' shift 118 - '%' shift 119 - '>' shift 120 - '<' shift 121 - '.' shift 122 - '[' shift 123 - '?' shift 124 - PCLONE shift 125 - ',' reduce 80 - ')' reduce 80 - - -state 133 - ExprList : ExprList . ',' Expr (79) - PrintStmt : PRINT '(' ExprList . ')' (97) - - ',' shift 164 - ')' shift 165 - . error - - -state 134 - Expr : READ_INTEGER '(' ')' . (66) - - . reduce 66 - - -state 135 - Expr : READ_LINE '(' ')' . (67) - - . reduce 67 - - -state 136 - Receiver : Expr . '.' (42) - LValue : Expr . '[' Expr ']' (45) - Expr : Expr . '+' Expr (50) - Expr : Expr . '-' Expr (51) - Expr : Expr . '*' Expr (52) - Expr : Expr . '/' Expr (53) - Expr : Expr . '%' Expr (54) - Expr : Expr . EQUAL Expr (55) - Expr : Expr . NOT_EQUAL Expr (56) - Expr : Expr . '<' Expr (57) - Expr : Expr . '>' Expr (58) - Expr : Expr . LESS_EQUAL Expr (59) - Expr : Expr . GREATER_EQUAL Expr (60) - Expr : Expr . AND Expr (61) - Expr : Expr . OR Expr (62) - Expr : INSTANCEOF '(' Expr . ',' IDENTIFIER ')' (71) - Expr : Expr . '?' Expr ':' Expr (73) - Expr : Expr . PCLONE Expr (74) - - AND shift 109 - OR shift 110 - LESS_EQUAL shift 111 - GREATER_EQUAL shift 112 - EQUAL shift 113 - NOT_EQUAL shift 114 - '+' shift 115 - '-' shift 116 - '*' shift 117 - '/' shift 118 - '%' shift 119 - '>' shift 120 - '<' shift 121 - '.' shift 122 - ',' shift 166 - '[' shift 123 - '?' shift 124 - PCLONE shift 125 - . error - - -state 137 - Receiver : Expr . '.' (42) - LValue : Expr . '[' Expr ']' (45) - Expr : Expr . '+' Expr (50) - Expr : Expr . '-' Expr (51) - Expr : Expr . '*' Expr (52) - Expr : Expr . '/' Expr (53) - Expr : Expr . '%' Expr (54) - Expr : Expr . EQUAL Expr (55) - Expr : Expr . NOT_EQUAL Expr (56) - Expr : Expr . '<' Expr (57) - Expr : Expr . '>' Expr (58) - Expr : Expr . LESS_EQUAL Expr (59) - Expr : Expr . GREATER_EQUAL Expr (60) - Expr : Expr . AND Expr (61) - Expr : Expr . OR Expr (62) - Expr : Expr . '?' Expr ':' Expr (73) - Expr : Expr . PCLONE Expr (74) - SwitchStmt : SWITCH '(' Expr . ')' '{' CaseStmtList DefaultStmt '}' (86) - - AND shift 109 - OR shift 110 - LESS_EQUAL shift 111 - GREATER_EQUAL shift 112 - EQUAL shift 113 - NOT_EQUAL shift 114 - '+' shift 115 - '-' shift 116 - '*' shift 117 - '/' shift 118 - '%' shift 119 - '>' shift 120 - '<' shift 121 - '.' shift 122 - ')' shift 167 - '[' shift 123 - '?' shift 124 - PCLONE shift 125 - . error - - -state 138 - RepeatStmt : REPEAT StmtList UNTIL . '(' Expr ')' (92) - - '(' shift 168 - . error - - -state 139 - Expr : '(' CLASS IDENTIFIER . ')' Expr (72) - - ')' shift 169 - . error - - -state 140 - Expr : '(' Expr ')' . (63) - - . reduce 63 - - -state 141 - SimpleStmt : LValue '=' Expr . (39) - Receiver : Expr . '.' (42) - LValue : Expr . '[' Expr ']' (45) - Expr : Expr . '+' Expr (50) - Expr : Expr . '-' Expr (51) - Expr : Expr . '*' Expr (52) - Expr : Expr . '/' Expr (53) - Expr : Expr . '%' Expr (54) - Expr : Expr . EQUAL Expr (55) - Expr : Expr . NOT_EQUAL Expr (56) - Expr : Expr . '<' Expr (57) - Expr : Expr . '>' Expr (58) - Expr : Expr . LESS_EQUAL Expr (59) - Expr : Expr . GREATER_EQUAL Expr (60) - Expr : Expr . AND Expr (61) - Expr : Expr . OR Expr (62) - Expr : Expr . '?' Expr ':' Expr (73) - Expr : Expr . PCLONE Expr (74) - - AND shift 109 - OR shift 110 - LESS_EQUAL shift 111 - GREATER_EQUAL shift 112 - EQUAL shift 113 - NOT_EQUAL shift 114 - '+' shift 115 - '-' shift 116 - '*' shift 117 - '/' shift 118 - '%' shift 119 - '>' shift 120 - '<' shift 121 - '.' shift 122 - '[' shift 123 - '?' shift 124 - PCLONE shift 125 - ';' reduce 39 - ')' reduce 39 - - -state 142 - Receiver : Expr . '.' (42) - LValue : Expr . '[' Expr ']' (45) - Expr : Expr . '+' Expr (50) - Expr : Expr . '-' Expr (51) - Expr : Expr . '*' Expr (52) - Expr : Expr . '/' Expr (53) - Expr : Expr . '%' Expr (54) - Expr : Expr . EQUAL Expr (55) - Expr : Expr . NOT_EQUAL Expr (56) - Expr : Expr . '<' Expr (57) - Expr : Expr . '>' Expr (58) - Expr : Expr . LESS_EQUAL Expr (59) - Expr : Expr . GREATER_EQUAL Expr (60) - Expr : Expr . AND Expr (61) - Expr : Expr AND Expr . (61) - Expr : Expr . OR Expr (62) - Expr : Expr . '?' Expr ':' Expr (73) - Expr : Expr . PCLONE Expr (74) - - LESS_EQUAL shift 111 - GREATER_EQUAL shift 112 - EQUAL shift 113 - NOT_EQUAL shift 114 - '+' shift 115 - '-' shift 116 - '*' shift 117 - '/' shift 118 - '%' shift 119 - '>' shift 120 - '<' shift 121 - '.' shift 122 - '[' shift 123 - AND reduce 61 - OR reduce 61 - ',' reduce 61 - ';' reduce 61 - ')' reduce 61 - ']' reduce 61 - ':' reduce 61 - '?' reduce 61 - PCLONE reduce 61 - - -state 143 - Receiver : Expr . '.' (42) - LValue : Expr . '[' Expr ']' (45) - Expr : Expr . '+' Expr (50) - Expr : Expr . '-' Expr (51) - Expr : Expr . '*' Expr (52) - Expr : Expr . '/' Expr (53) - Expr : Expr . '%' Expr (54) - Expr : Expr . EQUAL Expr (55) - Expr : Expr . NOT_EQUAL Expr (56) - Expr : Expr . '<' Expr (57) - Expr : Expr . '>' Expr (58) - Expr : Expr . LESS_EQUAL Expr (59) - Expr : Expr . GREATER_EQUAL Expr (60) - Expr : Expr . AND Expr (61) - Expr : Expr . OR Expr (62) - Expr : Expr OR Expr . (62) - Expr : Expr . '?' Expr ':' Expr (73) - Expr : Expr . PCLONE Expr (74) - - AND shift 109 - LESS_EQUAL shift 111 - GREATER_EQUAL shift 112 - EQUAL shift 113 - NOT_EQUAL shift 114 - '+' shift 115 - '-' shift 116 - '*' shift 117 - '/' shift 118 - '%' shift 119 - '>' shift 120 - '<' shift 121 - '.' shift 122 - '[' shift 123 - OR reduce 62 - ',' reduce 62 - ';' reduce 62 - ')' reduce 62 - ']' reduce 62 - ':' reduce 62 - '?' reduce 62 - PCLONE reduce 62 - - -state 144 - Receiver : Expr . '.' (42) - LValue : Expr . '[' Expr ']' (45) - Expr : Expr . '+' Expr (50) - Expr : Expr . '-' Expr (51) - Expr : Expr . '*' Expr (52) - Expr : Expr . '/' Expr (53) - Expr : Expr . '%' Expr (54) - Expr : Expr . EQUAL Expr (55) - Expr : Expr . NOT_EQUAL Expr (56) - Expr : Expr . '<' Expr (57) - Expr : Expr . '>' Expr (58) - Expr : Expr . LESS_EQUAL Expr (59) - Expr : Expr LESS_EQUAL Expr . (59) - Expr : Expr . GREATER_EQUAL Expr (60) - Expr : Expr . AND Expr (61) - Expr : Expr . OR Expr (62) - Expr : Expr . '?' Expr ':' Expr (73) - Expr : Expr . PCLONE Expr (74) - - '+' shift 115 - '-' shift 116 - '*' shift 117 - '/' shift 118 - '%' shift 119 - '.' shift 122 - '[' shift 123 - AND reduce 59 - OR reduce 59 - EQUAL reduce 59 - NOT_EQUAL reduce 59 - ',' reduce 59 - ';' reduce 59 - ')' reduce 59 - ']' reduce 59 - ':' reduce 59 - '?' reduce 59 - PCLONE reduce 59 - - -state 145 - Receiver : Expr . '.' (42) - LValue : Expr . '[' Expr ']' (45) - Expr : Expr . '+' Expr (50) - Expr : Expr . '-' Expr (51) - Expr : Expr . '*' Expr (52) - Expr : Expr . '/' Expr (53) - Expr : Expr . '%' Expr (54) - Expr : Expr . EQUAL Expr (55) - Expr : Expr . NOT_EQUAL Expr (56) - Expr : Expr . '<' Expr (57) - Expr : Expr . '>' Expr (58) - Expr : Expr . LESS_EQUAL Expr (59) - Expr : Expr . GREATER_EQUAL Expr (60) - Expr : Expr GREATER_EQUAL Expr . (60) - Expr : Expr . AND Expr (61) - Expr : Expr . OR Expr (62) - Expr : Expr . '?' Expr ':' Expr (73) - Expr : Expr . PCLONE Expr (74) - - '+' shift 115 - '-' shift 116 - '*' shift 117 - '/' shift 118 - '%' shift 119 - '.' shift 122 - '[' shift 123 - AND reduce 60 - OR reduce 60 - EQUAL reduce 60 - NOT_EQUAL reduce 60 - ',' reduce 60 - ';' reduce 60 - ')' reduce 60 - ']' reduce 60 - ':' reduce 60 - '?' reduce 60 - PCLONE reduce 60 - - -state 146 - Receiver : Expr . '.' (42) - LValue : Expr . '[' Expr ']' (45) - Expr : Expr . '+' Expr (50) - Expr : Expr . '-' Expr (51) - Expr : Expr . '*' Expr (52) - Expr : Expr . '/' Expr (53) - Expr : Expr . '%' Expr (54) - Expr : Expr . EQUAL Expr (55) - Expr : Expr EQUAL Expr . (55) - Expr : Expr . NOT_EQUAL Expr (56) - Expr : Expr . '<' Expr (57) - Expr : Expr . '>' Expr (58) - Expr : Expr . LESS_EQUAL Expr (59) - Expr : Expr . GREATER_EQUAL Expr (60) - Expr : Expr . AND Expr (61) - Expr : Expr . OR Expr (62) - Expr : Expr . '?' Expr ':' Expr (73) - Expr : Expr . PCLONE Expr (74) - - LESS_EQUAL shift 111 - GREATER_EQUAL shift 112 - '+' shift 115 - '-' shift 116 - '*' shift 117 - '/' shift 118 - '%' shift 119 - '>' shift 120 - '<' shift 121 - '.' shift 122 - '[' shift 123 - AND reduce 55 - OR reduce 55 - ',' reduce 55 - ';' reduce 55 - ')' reduce 55 - ']' reduce 55 - ':' reduce 55 - '?' reduce 55 - PCLONE reduce 55 - - -state 147 - Receiver : Expr . '.' (42) - LValue : Expr . '[' Expr ']' (45) - Expr : Expr . '+' Expr (50) - Expr : Expr . '-' Expr (51) - Expr : Expr . '*' Expr (52) - Expr : Expr . '/' Expr (53) - Expr : Expr . '%' Expr (54) - Expr : Expr . EQUAL Expr (55) - Expr : Expr . NOT_EQUAL Expr (56) - Expr : Expr NOT_EQUAL Expr . (56) - Expr : Expr . '<' Expr (57) - Expr : Expr . '>' Expr (58) - Expr : Expr . LESS_EQUAL Expr (59) - Expr : Expr . GREATER_EQUAL Expr (60) - Expr : Expr . AND Expr (61) - Expr : Expr . OR Expr (62) - Expr : Expr . '?' Expr ':' Expr (73) - Expr : Expr . PCLONE Expr (74) - - LESS_EQUAL shift 111 - GREATER_EQUAL shift 112 - '+' shift 115 - '-' shift 116 - '*' shift 117 - '/' shift 118 - '%' shift 119 - '>' shift 120 - '<' shift 121 - '.' shift 122 - '[' shift 123 - AND reduce 56 - OR reduce 56 - ',' reduce 56 - ';' reduce 56 - ')' reduce 56 - ']' reduce 56 - ':' reduce 56 - '?' reduce 56 - PCLONE reduce 56 - - -state 148 - Receiver : Expr . '.' (42) - LValue : Expr . '[' Expr ']' (45) - Expr : Expr . '+' Expr (50) - Expr : Expr '+' Expr . (50) - Expr : Expr . '-' Expr (51) - Expr : Expr . '*' Expr (52) - Expr : Expr . '/' Expr (53) - Expr : Expr . '%' Expr (54) - Expr : Expr . EQUAL Expr (55) - Expr : Expr . NOT_EQUAL Expr (56) - Expr : Expr . '<' Expr (57) - Expr : Expr . '>' Expr (58) - Expr : Expr . LESS_EQUAL Expr (59) - Expr : Expr . GREATER_EQUAL Expr (60) - Expr : Expr . AND Expr (61) - Expr : Expr . OR Expr (62) - Expr : Expr . '?' Expr ':' Expr (73) - Expr : Expr . PCLONE Expr (74) - - '*' shift 117 - '/' shift 118 - '%' shift 119 - '.' shift 122 - '[' shift 123 - AND reduce 50 - OR reduce 50 - LESS_EQUAL reduce 50 - GREATER_EQUAL reduce 50 - EQUAL reduce 50 - NOT_EQUAL reduce 50 - '+' reduce 50 - '-' reduce 50 - '>' reduce 50 - '<' reduce 50 - ',' reduce 50 - ';' reduce 50 - ')' reduce 50 - ']' reduce 50 - ':' reduce 50 - '?' reduce 50 - PCLONE reduce 50 - - -state 149 - Receiver : Expr . '.' (42) - LValue : Expr . '[' Expr ']' (45) - Expr : Expr . '+' Expr (50) - Expr : Expr . '-' Expr (51) - Expr : Expr '-' Expr . (51) - Expr : Expr . '*' Expr (52) - Expr : Expr . '/' Expr (53) - Expr : Expr . '%' Expr (54) - Expr : Expr . EQUAL Expr (55) - Expr : Expr . NOT_EQUAL Expr (56) - Expr : Expr . '<' Expr (57) - Expr : Expr . '>' Expr (58) - Expr : Expr . LESS_EQUAL Expr (59) - Expr : Expr . GREATER_EQUAL Expr (60) - Expr : Expr . AND Expr (61) - Expr : Expr . OR Expr (62) - Expr : Expr . '?' Expr ':' Expr (73) - Expr : Expr . PCLONE Expr (74) - - '*' shift 117 - '/' shift 118 - '%' shift 119 - '.' shift 122 - '[' shift 123 - AND reduce 51 - OR reduce 51 - LESS_EQUAL reduce 51 - GREATER_EQUAL reduce 51 - EQUAL reduce 51 - NOT_EQUAL reduce 51 - '+' reduce 51 - '-' reduce 51 - '>' reduce 51 - '<' reduce 51 - ',' reduce 51 - ';' reduce 51 - ')' reduce 51 - ']' reduce 51 - ':' reduce 51 - '?' reduce 51 - PCLONE reduce 51 - - -state 150 - Receiver : Expr . '.' (42) - LValue : Expr . '[' Expr ']' (45) - Expr : Expr . '+' Expr (50) - Expr : Expr . '-' Expr (51) - Expr : Expr . '*' Expr (52) - Expr : Expr '*' Expr . (52) - Expr : Expr . '/' Expr (53) - Expr : Expr . '%' Expr (54) - Expr : Expr . EQUAL Expr (55) - Expr : Expr . NOT_EQUAL Expr (56) - Expr : Expr . '<' Expr (57) - Expr : Expr . '>' Expr (58) - Expr : Expr . LESS_EQUAL Expr (59) - Expr : Expr . GREATER_EQUAL Expr (60) - Expr : Expr . AND Expr (61) - Expr : Expr . OR Expr (62) - Expr : Expr . '?' Expr ':' Expr (73) - Expr : Expr . PCLONE Expr (74) - - '.' shift 122 - '[' shift 123 - AND reduce 52 - OR reduce 52 - LESS_EQUAL reduce 52 - GREATER_EQUAL reduce 52 - EQUAL reduce 52 - NOT_EQUAL reduce 52 - '+' reduce 52 - '-' reduce 52 - '*' reduce 52 - '/' reduce 52 - '%' reduce 52 - '>' reduce 52 - '<' reduce 52 - ',' reduce 52 - ';' reduce 52 - ')' reduce 52 - ']' reduce 52 - ':' reduce 52 - '?' reduce 52 - PCLONE reduce 52 - - -state 151 - Receiver : Expr . '.' (42) - LValue : Expr . '[' Expr ']' (45) - Expr : Expr . '+' Expr (50) - Expr : Expr . '-' Expr (51) - Expr : Expr . '*' Expr (52) - Expr : Expr . '/' Expr (53) - Expr : Expr '/' Expr . (53) - Expr : Expr . '%' Expr (54) - Expr : Expr . EQUAL Expr (55) - Expr : Expr . NOT_EQUAL Expr (56) - Expr : Expr . '<' Expr (57) - Expr : Expr . '>' Expr (58) - Expr : Expr . LESS_EQUAL Expr (59) - Expr : Expr . GREATER_EQUAL Expr (60) - Expr : Expr . AND Expr (61) - Expr : Expr . OR Expr (62) - Expr : Expr . '?' Expr ':' Expr (73) - Expr : Expr . PCLONE Expr (74) - - '.' shift 122 - '[' shift 123 - AND reduce 53 - OR reduce 53 - LESS_EQUAL reduce 53 - GREATER_EQUAL reduce 53 - EQUAL reduce 53 - NOT_EQUAL reduce 53 - '+' reduce 53 - '-' reduce 53 - '*' reduce 53 - '/' reduce 53 - '%' reduce 53 - '>' reduce 53 - '<' reduce 53 - ',' reduce 53 - ';' reduce 53 - ')' reduce 53 - ']' reduce 53 - ':' reduce 53 - '?' reduce 53 - PCLONE reduce 53 - - -state 152 - Receiver : Expr . '.' (42) - LValue : Expr . '[' Expr ']' (45) - Expr : Expr . '+' Expr (50) - Expr : Expr . '-' Expr (51) - Expr : Expr . '*' Expr (52) - Expr : Expr . '/' Expr (53) - Expr : Expr . '%' Expr (54) - Expr : Expr '%' Expr . (54) - Expr : Expr . EQUAL Expr (55) - Expr : Expr . NOT_EQUAL Expr (56) - Expr : Expr . '<' Expr (57) - Expr : Expr . '>' Expr (58) - Expr : Expr . LESS_EQUAL Expr (59) - Expr : Expr . GREATER_EQUAL Expr (60) - Expr : Expr . AND Expr (61) - Expr : Expr . OR Expr (62) - Expr : Expr . '?' Expr ':' Expr (73) - Expr : Expr . PCLONE Expr (74) - - '.' shift 122 - '[' shift 123 - AND reduce 54 - OR reduce 54 - LESS_EQUAL reduce 54 - GREATER_EQUAL reduce 54 - EQUAL reduce 54 - NOT_EQUAL reduce 54 - '+' reduce 54 - '-' reduce 54 - '*' reduce 54 - '/' reduce 54 - '%' reduce 54 - '>' reduce 54 - '<' reduce 54 - ',' reduce 54 - ';' reduce 54 - ')' reduce 54 - ']' reduce 54 - ':' reduce 54 - '?' reduce 54 - PCLONE reduce 54 - - -state 153 - Receiver : Expr . '.' (42) - LValue : Expr . '[' Expr ']' (45) - Expr : Expr . '+' Expr (50) - Expr : Expr . '-' Expr (51) - Expr : Expr . '*' Expr (52) - Expr : Expr . '/' Expr (53) - Expr : Expr . '%' Expr (54) - Expr : Expr . EQUAL Expr (55) - Expr : Expr . NOT_EQUAL Expr (56) - Expr : Expr . '<' Expr (57) - Expr : Expr . '>' Expr (58) - Expr : Expr '>' Expr . (58) - Expr : Expr . LESS_EQUAL Expr (59) - Expr : Expr . GREATER_EQUAL Expr (60) - Expr : Expr . AND Expr (61) - Expr : Expr . OR Expr (62) - Expr : Expr . '?' Expr ':' Expr (73) - Expr : Expr . PCLONE Expr (74) - - '+' shift 115 - '-' shift 116 - '*' shift 117 - '/' shift 118 - '%' shift 119 - '.' shift 122 - '[' shift 123 - AND reduce 58 - OR reduce 58 - EQUAL reduce 58 - NOT_EQUAL reduce 58 - ',' reduce 58 - ';' reduce 58 - ')' reduce 58 - ']' reduce 58 - ':' reduce 58 - '?' reduce 58 - PCLONE reduce 58 - - -state 154 - Receiver : Expr . '.' (42) - LValue : Expr . '[' Expr ']' (45) - Expr : Expr . '+' Expr (50) - Expr : Expr . '-' Expr (51) - Expr : Expr . '*' Expr (52) - Expr : Expr . '/' Expr (53) - Expr : Expr . '%' Expr (54) - Expr : Expr . EQUAL Expr (55) - Expr : Expr . NOT_EQUAL Expr (56) - Expr : Expr . '<' Expr (57) - Expr : Expr '<' Expr . (57) - Expr : Expr . '>' Expr (58) - Expr : Expr . LESS_EQUAL Expr (59) - Expr : Expr . GREATER_EQUAL Expr (60) - Expr : Expr . AND Expr (61) - Expr : Expr . OR Expr (62) - Expr : Expr . '?' Expr ':' Expr (73) - Expr : Expr . PCLONE Expr (74) - - '+' shift 115 - '-' shift 116 - '*' shift 117 - '/' shift 118 - '%' shift 119 - '.' shift 122 - '[' shift 123 - AND reduce 57 - OR reduce 57 - EQUAL reduce 57 - NOT_EQUAL reduce 57 - ',' reduce 57 - ';' reduce 57 - ')' reduce 57 - ']' reduce 57 - ':' reduce 57 - '?' reduce 57 - PCLONE reduce 57 - - -state 155 - Receiver : Expr . '.' (42) - LValue : Expr . '[' Expr ']' (45) - LValue : Expr '[' Expr . ']' (45) - Expr : Expr . '+' Expr (50) - Expr : Expr . '-' Expr (51) - Expr : Expr . '*' Expr (52) - Expr : Expr . '/' Expr (53) - Expr : Expr . '%' Expr (54) - Expr : Expr . EQUAL Expr (55) - Expr : Expr . NOT_EQUAL Expr (56) - Expr : Expr . '<' Expr (57) - Expr : Expr . '>' Expr (58) - Expr : Expr . LESS_EQUAL Expr (59) - Expr : Expr . GREATER_EQUAL Expr (60) - Expr : Expr . AND Expr (61) - Expr : Expr . OR Expr (62) - Expr : Expr . '?' Expr ':' Expr (73) - Expr : Expr . PCLONE Expr (74) - - AND shift 109 - OR shift 110 - LESS_EQUAL shift 111 - GREATER_EQUAL shift 112 - EQUAL shift 113 - NOT_EQUAL shift 114 - '+' shift 115 - '-' shift 116 - '*' shift 117 - '/' shift 118 - '%' shift 119 - '>' shift 120 - '<' shift 121 - '.' shift 122 - '[' shift 123 - ']' shift 170 - '?' shift 124 - PCLONE shift 125 - . error - - -state 156 - Receiver : Expr . '.' (42) - LValue : Expr . '[' Expr ']' (45) - Expr : Expr . '+' Expr (50) - Expr : Expr . '-' Expr (51) - Expr : Expr . '*' Expr (52) - Expr : Expr . '/' Expr (53) - Expr : Expr . '%' Expr (54) - Expr : Expr . EQUAL Expr (55) - Expr : Expr . NOT_EQUAL Expr (56) - Expr : Expr . '<' Expr (57) - Expr : Expr . '>' Expr (58) - Expr : Expr . LESS_EQUAL Expr (59) - Expr : Expr . GREATER_EQUAL Expr (60) - Expr : Expr . AND Expr (61) - Expr : Expr . OR Expr (62) - Expr : Expr . '?' Expr ':' Expr (73) - Expr : Expr '?' Expr . ':' Expr (73) - Expr : Expr . PCLONE Expr (74) - - AND shift 109 - OR shift 110 - LESS_EQUAL shift 111 - GREATER_EQUAL shift 112 - EQUAL shift 113 - NOT_EQUAL shift 114 - '+' shift 115 - '-' shift 116 - '*' shift 117 - '/' shift 118 - '%' shift 119 - '>' shift 120 - '<' shift 121 - '.' shift 122 - '[' shift 123 - ':' shift 171 - '?' shift 124 - PCLONE shift 125 - . error - - -state 157 - Receiver : Expr . '.' (42) - LValue : Expr . '[' Expr ']' (45) - Expr : Expr . '+' Expr (50) - Expr : Expr . '-' Expr (51) - Expr : Expr . '*' Expr (52) - Expr : Expr . '/' Expr (53) - Expr : Expr . '%' Expr (54) - Expr : Expr . EQUAL Expr (55) - Expr : Expr . NOT_EQUAL Expr (56) - Expr : Expr . '<' Expr (57) - Expr : Expr . '>' Expr (58) - Expr : Expr . LESS_EQUAL Expr (59) - Expr : Expr . GREATER_EQUAL Expr (60) - Expr : Expr . AND Expr (61) - Expr : Expr . OR Expr (62) - Expr : Expr . '?' Expr ':' Expr (73) - Expr : Expr . PCLONE Expr (74) - Expr : Expr PCLONE Expr . (74) - - AND shift 109 - OR shift 110 - LESS_EQUAL shift 111 - GREATER_EQUAL shift 112 - EQUAL shift 113 - NOT_EQUAL shift 114 - '+' shift 115 - '-' shift 116 - '*' shift 117 - '/' shift 118 - '%' shift 119 - '>' shift 120 - '<' shift 121 - '.' shift 122 - '[' shift 123 - ',' reduce 74 - ';' reduce 74 - ')' reduce 74 - ']' reduce 74 - ':' reduce 74 - '?' reduce 74 - PCLONE reduce 74 - - -state 158 - Call : Receiver IDENTIFIER '(' . Actuals ')' (46) - Receiver : . (43) - Actuals : . (78) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - '-' shift 62 - '!' shift 63 - '(' shift 64 - IDENTIFIER reduce 43 - ')' reduce 78 - - LValue goto 87 - Expr goto 132 - Call goto 89 - Receiver goto 82 - Actuals goto 172 - Constant goto 83 - ExprList goto 173 - - -state 159 - WhileStmt : WHILE '(' Expr ')' . Stmt (81) - SimpleStmt : . (41) - Receiver : . (43) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - NULL shift 46 - THIS shift 47 - WHILE shift 48 - FOR shift 49 - IF shift 50 - RETURN shift 51 - BREAK shift 52 - NEW shift 53 - PRINT shift 54 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - SWITCH shift 59 - REPEAT shift 60 - CONTINUE shift 61 - '-' shift 62 - '!' shift 63 - '(' shift 64 - '{' shift 41 - IDENTIFIER reduce 43 - ';' reduce 41 - - VariableDef goto 66 - Variable goto 20 - Type goto 33 - StmtBlock goto 67 - Stmt goto 174 - SimpleStmt goto 69 - IfStmt goto 70 - WhileStmt goto 71 - ForStmt goto 72 - SwitchStmt goto 73 - RepeatStmt goto 74 - ReturnStmt goto 75 - PrintStmt goto 76 - BreakStmt goto 77 - ContinueStmt goto 78 - LValue goto 79 - Expr goto 80 - Call goto 81 - Receiver goto 82 - Constant goto 83 - - -state 160 - ForStmt : FOR '(' SimpleStmt ';' . Expr ';' SimpleStmt ')' Stmt (82) - Receiver : . (43) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - '-' shift 62 - '!' shift 63 - '(' shift 64 - IDENTIFIER reduce 43 - - LValue goto 87 - Expr goto 175 - Call goto 89 - Receiver goto 82 - Constant goto 83 - - -state 161 - IfStmt : IF '(' Expr ')' . Stmt ElseClause (85) - SimpleStmt : . (41) - Receiver : . (43) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - NULL shift 46 - THIS shift 47 - WHILE shift 48 - FOR shift 49 - IF shift 50 - RETURN shift 51 - BREAK shift 52 - NEW shift 53 - PRINT shift 54 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - SWITCH shift 59 - REPEAT shift 60 - CONTINUE shift 61 - '-' shift 62 - '!' shift 63 - '(' shift 64 - '{' shift 41 - IDENTIFIER reduce 43 - ';' reduce 41 - - VariableDef goto 66 - Variable goto 20 - Type goto 33 - StmtBlock goto 67 - Stmt goto 176 - SimpleStmt goto 69 - IfStmt goto 70 - WhileStmt goto 71 - ForStmt goto 72 - SwitchStmt goto 73 - RepeatStmt goto 74 - ReturnStmt goto 75 - PrintStmt goto 76 - BreakStmt goto 77 - ContinueStmt goto 78 - LValue goto 79 - Expr goto 80 - Call goto 81 - Receiver goto 82 - Constant goto 83 - - -state 162 - Expr : NEW IDENTIFIER '(' ')' . (69) - - . reduce 69 - - -state 163 - Receiver : Expr . '.' (42) - LValue : Expr . '[' Expr ']' (45) - Expr : Expr . '+' Expr (50) - Expr : Expr . '-' Expr (51) - Expr : Expr . '*' Expr (52) - Expr : Expr . '/' Expr (53) - Expr : Expr . '%' Expr (54) - Expr : Expr . EQUAL Expr (55) - Expr : Expr . NOT_EQUAL Expr (56) - Expr : Expr . '<' Expr (57) - Expr : Expr . '>' Expr (58) - Expr : Expr . LESS_EQUAL Expr (59) - Expr : Expr . GREATER_EQUAL Expr (60) - Expr : Expr . AND Expr (61) - Expr : Expr . OR Expr (62) - Expr : NEW Type '[' Expr . ']' (70) - Expr : Expr . '?' Expr ':' Expr (73) - Expr : Expr . PCLONE Expr (74) - - AND shift 109 - OR shift 110 - LESS_EQUAL shift 111 - GREATER_EQUAL shift 112 - EQUAL shift 113 - NOT_EQUAL shift 114 - '+' shift 115 - '-' shift 116 - '*' shift 117 - '/' shift 118 - '%' shift 119 - '>' shift 120 - '<' shift 121 - '.' shift 122 - '[' shift 123 - ']' shift 177 - '?' shift 124 - PCLONE shift 125 - . error - - -state 164 - ExprList : ExprList ',' . Expr (79) - Receiver : . (43) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - '-' shift 62 - '!' shift 63 - '(' shift 64 - IDENTIFIER reduce 43 - - LValue goto 87 - Expr goto 178 - Call goto 89 - Receiver goto 82 - Constant goto 83 - - -state 165 - PrintStmt : PRINT '(' ExprList ')' . (97) - - . reduce 97 - - -state 166 - Expr : INSTANCEOF '(' Expr ',' . IDENTIFIER ')' (71) - - IDENTIFIER shift 179 - . error - - -state 167 - SwitchStmt : SWITCH '(' Expr ')' . '{' CaseStmtList DefaultStmt '}' (86) - - '{' shift 180 - . error - - -state 168 - RepeatStmt : REPEAT StmtList UNTIL '(' . Expr ')' (92) - Receiver : . (43) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - '-' shift 62 - '!' shift 63 - '(' shift 64 - IDENTIFIER reduce 43 - - LValue goto 87 - Expr goto 181 - Call goto 89 - Receiver goto 82 - Constant goto 83 - - -state 169 - Expr : '(' CLASS IDENTIFIER ')' . Expr (72) - Receiver : . (43) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - '-' shift 62 - '!' shift 63 - '(' shift 64 - IDENTIFIER reduce 43 - - LValue goto 87 - Expr goto 182 - Call goto 89 - Receiver goto 82 - Constant goto 83 - - -state 170 - LValue : Expr '[' Expr ']' . (45) - - . reduce 45 - - -state 171 - Expr : Expr '?' Expr ':' . Expr (73) - Receiver : . (43) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - '-' shift 62 - '!' shift 63 - '(' shift 64 - IDENTIFIER reduce 43 - - LValue goto 87 - Expr goto 183 - Call goto 89 - Receiver goto 82 - Constant goto 83 - - -state 172 - Call : Receiver IDENTIFIER '(' Actuals . ')' (46) - - ')' shift 184 - . error - - -state 173 - Actuals : ExprList . (77) - ExprList : ExprList . ',' Expr (79) - - ',' shift 164 - ')' reduce 77 - - -state 174 - WhileStmt : WHILE '(' Expr ')' Stmt . (81) - - . reduce 81 - - -state 175 - Receiver : Expr . '.' (42) - LValue : Expr . '[' Expr ']' (45) - Expr : Expr . '+' Expr (50) - Expr : Expr . '-' Expr (51) - Expr : Expr . '*' Expr (52) - Expr : Expr . '/' Expr (53) - Expr : Expr . '%' Expr (54) - Expr : Expr . EQUAL Expr (55) - Expr : Expr . NOT_EQUAL Expr (56) - Expr : Expr . '<' Expr (57) - Expr : Expr . '>' Expr (58) - Expr : Expr . LESS_EQUAL Expr (59) - Expr : Expr . GREATER_EQUAL Expr (60) - Expr : Expr . AND Expr (61) - Expr : Expr . OR Expr (62) - Expr : Expr . '?' Expr ':' Expr (73) - Expr : Expr . PCLONE Expr (74) - ForStmt : FOR '(' SimpleStmt ';' Expr . ';' SimpleStmt ')' Stmt (82) - - AND shift 109 - OR shift 110 - LESS_EQUAL shift 111 - GREATER_EQUAL shift 112 - EQUAL shift 113 - NOT_EQUAL shift 114 - '+' shift 115 - '-' shift 116 - '*' shift 117 - '/' shift 118 - '%' shift 119 - '>' shift 120 - '<' shift 121 - '.' shift 122 - ';' shift 185 - '[' shift 123 - '?' shift 124 - PCLONE shift 125 - . error - - -state 176 - IfStmt : IF '(' Expr ')' Stmt . ElseClause (85) - ElseClause : . (94) - - ELSE shift 186 - VOID reduce 94 - BOOL reduce 94 - INT reduce 94 - STRING reduce 94 - CLASS reduce 94 - NULL reduce 94 - THIS reduce 94 - WHILE reduce 94 - FOR reduce 94 - IF reduce 94 - RETURN reduce 94 - BREAK reduce 94 - NEW reduce 94 - PRINT reduce 94 - READ_INTEGER reduce 94 - READ_LINE reduce 94 - LITERAL reduce 94 - IDENTIFIER reduce 94 - INSTANCEOF reduce 94 - SWITCH reduce 94 - CASE reduce 94 - DEFAULT reduce 94 - REPEAT reduce 94 - UNTIL reduce 94 - CONTINUE reduce 94 - '-' reduce 94 - ';' reduce 94 - '!' reduce 94 - '(' reduce 94 - '{' reduce 94 - '}' reduce 94 - - ElseClause goto 187 - - -state 177 - Expr : NEW Type '[' Expr ']' . (70) - - . reduce 70 - - -state 178 - Receiver : Expr . '.' (42) - LValue : Expr . '[' Expr ']' (45) - Expr : Expr . '+' Expr (50) - Expr : Expr . '-' Expr (51) - Expr : Expr . '*' Expr (52) - Expr : Expr . '/' Expr (53) - Expr : Expr . '%' Expr (54) - Expr : Expr . EQUAL Expr (55) - Expr : Expr . NOT_EQUAL Expr (56) - Expr : Expr . '<' Expr (57) - Expr : Expr . '>' Expr (58) - Expr : Expr . LESS_EQUAL Expr (59) - Expr : Expr . GREATER_EQUAL Expr (60) - Expr : Expr . AND Expr (61) - Expr : Expr . OR Expr (62) - Expr : Expr . '?' Expr ':' Expr (73) - Expr : Expr . PCLONE Expr (74) - ExprList : ExprList ',' Expr . (79) - - AND shift 109 - OR shift 110 - LESS_EQUAL shift 111 - GREATER_EQUAL shift 112 - EQUAL shift 113 - NOT_EQUAL shift 114 - '+' shift 115 - '-' shift 116 - '*' shift 117 - '/' shift 118 - '%' shift 119 - '>' shift 120 - '<' shift 121 - '.' shift 122 - '[' shift 123 - '?' shift 124 - PCLONE shift 125 - ',' reduce 79 - ')' reduce 79 - - -state 179 - Expr : INSTANCEOF '(' Expr ',' IDENTIFIER . ')' (71) - - ')' shift 188 - . error - - -state 180 - SwitchStmt : SWITCH '(' Expr ')' '{' . CaseStmtList DefaultStmt '}' (86) - CaseStmtList : . (88) - - . reduce 88 - - CaseStmtList goto 189 - - -state 181 - Receiver : Expr . '.' (42) - LValue : Expr . '[' Expr ']' (45) - Expr : Expr . '+' Expr (50) - Expr : Expr . '-' Expr (51) - Expr : Expr . '*' Expr (52) - Expr : Expr . '/' Expr (53) - Expr : Expr . '%' Expr (54) - Expr : Expr . EQUAL Expr (55) - Expr : Expr . NOT_EQUAL Expr (56) - Expr : Expr . '<' Expr (57) - Expr : Expr . '>' Expr (58) - Expr : Expr . LESS_EQUAL Expr (59) - Expr : Expr . GREATER_EQUAL Expr (60) - Expr : Expr . AND Expr (61) - Expr : Expr . OR Expr (62) - Expr : Expr . '?' Expr ':' Expr (73) - Expr : Expr . PCLONE Expr (74) - RepeatStmt : REPEAT StmtList UNTIL '(' Expr . ')' (92) - - AND shift 109 - OR shift 110 - LESS_EQUAL shift 111 - GREATER_EQUAL shift 112 - EQUAL shift 113 - NOT_EQUAL shift 114 - '+' shift 115 - '-' shift 116 - '*' shift 117 - '/' shift 118 - '%' shift 119 - '>' shift 120 - '<' shift 121 - '.' shift 122 - ')' shift 190 - '[' shift 123 - '?' shift 124 - PCLONE shift 125 - . error - - -state 182 - Receiver : Expr . '.' (42) - LValue : Expr . '[' Expr ']' (45) - Expr : Expr . '+' Expr (50) - Expr : Expr . '-' Expr (51) - Expr : Expr . '*' Expr (52) - Expr : Expr . '/' Expr (53) - Expr : Expr . '%' Expr (54) - Expr : Expr . EQUAL Expr (55) - Expr : Expr . NOT_EQUAL Expr (56) - Expr : Expr . '<' Expr (57) - Expr : Expr . '>' Expr (58) - Expr : Expr . LESS_EQUAL Expr (59) - Expr : Expr . GREATER_EQUAL Expr (60) - Expr : Expr . AND Expr (61) - Expr : Expr . OR Expr (62) - Expr : '(' CLASS IDENTIFIER ')' Expr . (72) - Expr : Expr . '?' Expr ':' Expr (73) - Expr : Expr . PCLONE Expr (74) - - . reduce 72 - - -state 183 - Receiver : Expr . '.' (42) - LValue : Expr . '[' Expr ']' (45) - Expr : Expr . '+' Expr (50) - Expr : Expr . '-' Expr (51) - Expr : Expr . '*' Expr (52) - Expr : Expr . '/' Expr (53) - Expr : Expr . '%' Expr (54) - Expr : Expr . EQUAL Expr (55) - Expr : Expr . NOT_EQUAL Expr (56) - Expr : Expr . '<' Expr (57) - Expr : Expr . '>' Expr (58) - Expr : Expr . LESS_EQUAL Expr (59) - Expr : Expr . GREATER_EQUAL Expr (60) - Expr : Expr . AND Expr (61) - Expr : Expr . OR Expr (62) - Expr : Expr . '?' Expr ':' Expr (73) - Expr : Expr '?' Expr ':' Expr . (73) - Expr : Expr . PCLONE Expr (74) - - AND shift 109 - OR shift 110 - LESS_EQUAL shift 111 - GREATER_EQUAL shift 112 - EQUAL shift 113 - NOT_EQUAL shift 114 - '+' shift 115 - '-' shift 116 - '*' shift 117 - '/' shift 118 - '%' shift 119 - '>' shift 120 - '<' shift 121 - '.' shift 122 - '[' shift 123 - '?' shift 124 - PCLONE shift 125 - ',' reduce 73 - ';' reduce 73 - ')' reduce 73 - ']' reduce 73 - ':' reduce 73 - - -state 184 - Call : Receiver IDENTIFIER '(' Actuals ')' . (46) - - . reduce 46 - - -state 185 - ForStmt : FOR '(' SimpleStmt ';' Expr ';' . SimpleStmt ')' Stmt (82) - SimpleStmt : . (41) - Receiver : . (43) - - NULL shift 46 - THIS shift 47 - NEW shift 53 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - '-' shift 62 - '!' shift 63 - '(' shift 64 - IDENTIFIER reduce 43 - ')' reduce 41 - - SimpleStmt goto 191 - LValue goto 79 - Expr goto 80 - Call goto 81 - Receiver goto 82 - Constant goto 83 - - -state 186 - ElseClause : ELSE . Stmt (93) - SimpleStmt : . (41) - Receiver : . (43) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - NULL shift 46 - THIS shift 47 - WHILE shift 48 - FOR shift 49 - IF shift 50 - RETURN shift 51 - BREAK shift 52 - NEW shift 53 - PRINT shift 54 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - SWITCH shift 59 - REPEAT shift 60 - CONTINUE shift 61 - '-' shift 62 - '!' shift 63 - '(' shift 64 - '{' shift 41 - IDENTIFIER reduce 43 - ';' reduce 41 - - VariableDef goto 66 - Variable goto 20 - Type goto 33 - StmtBlock goto 67 - Stmt goto 192 - SimpleStmt goto 69 - IfStmt goto 70 - WhileStmt goto 71 - ForStmt goto 72 - SwitchStmt goto 73 - RepeatStmt goto 74 - ReturnStmt goto 75 - PrintStmt goto 76 - BreakStmt goto 77 - ContinueStmt goto 78 - LValue goto 79 - Expr goto 80 - Call goto 81 - Receiver goto 82 - Constant goto 83 - - -state 187 - IfStmt : IF '(' Expr ')' Stmt ElseClause . (85) - - . reduce 85 - - -state 188 - Expr : INSTANCEOF '(' Expr ',' IDENTIFIER ')' . (71) - - . reduce 71 - - -state 189 - SwitchStmt : SWITCH '(' Expr ')' '{' CaseStmtList . DefaultStmt '}' (86) - CaseStmtList : CaseStmtList . CaseStmt (87) - DefaultStmt : . (91) - - CASE shift 193 - DEFAULT shift 194 - '}' reduce 91 - - DefaultStmt goto 195 - CaseStmt goto 196 - - -state 190 - RepeatStmt : REPEAT StmtList UNTIL '(' Expr ')' . (92) - - . reduce 92 - - -state 191 - ForStmt : FOR '(' SimpleStmt ';' Expr ';' SimpleStmt . ')' Stmt (82) - - ')' shift 197 - . error - - -state 192 - ElseClause : ELSE Stmt . (93) - - . reduce 93 - - -state 193 - CaseStmt : CASE . Constant ':' StmtList (89) - - NULL shift 46 - LITERAL shift 57 - . error - - Constant goto 198 - - -state 194 - DefaultStmt : DEFAULT . ':' StmtList (90) - - ':' shift 199 - . error - - -state 195 - SwitchStmt : SWITCH '(' Expr ')' '{' CaseStmtList DefaultStmt . '}' (86) - - '}' shift 200 - . error - - -state 196 - CaseStmtList : CaseStmtList CaseStmt . (87) - - . reduce 87 - - -state 197 - ForStmt : FOR '(' SimpleStmt ';' Expr ';' SimpleStmt ')' . Stmt (82) - SimpleStmt : . (41) - Receiver : . (43) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - NULL shift 46 - THIS shift 47 - WHILE shift 48 - FOR shift 49 - IF shift 50 - RETURN shift 51 - BREAK shift 52 - NEW shift 53 - PRINT shift 54 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - SWITCH shift 59 - REPEAT shift 60 - CONTINUE shift 61 - '-' shift 62 - '!' shift 63 - '(' shift 64 - '{' shift 41 - IDENTIFIER reduce 43 - ';' reduce 41 - - VariableDef goto 66 - Variable goto 20 - Type goto 33 - StmtBlock goto 67 - Stmt goto 201 - SimpleStmt goto 69 - IfStmt goto 70 - WhileStmt goto 71 - ForStmt goto 72 - SwitchStmt goto 73 - RepeatStmt goto 74 - ReturnStmt goto 75 - PrintStmt goto 76 - BreakStmt goto 77 - ContinueStmt goto 78 - LValue goto 79 - Expr goto 80 - Call goto 81 - Receiver goto 82 - Constant goto 83 - - -state 198 - CaseStmt : CASE Constant . ':' StmtList (89) - - ':' shift 202 - . error - - -state 199 - DefaultStmt : DEFAULT ':' . StmtList (90) - StmtList : . (26) - - . reduce 26 - - StmtList goto 203 - - -state 200 - SwitchStmt : SWITCH '(' Expr ')' '{' CaseStmtList DefaultStmt '}' . (86) - - . reduce 86 - - -state 201 - ForStmt : FOR '(' SimpleStmt ';' Expr ';' SimpleStmt ')' Stmt . (82) - - . reduce 82 - - -state 202 - CaseStmt : CASE Constant ':' . StmtList (89) - StmtList : . (26) - - . reduce 26 - - StmtList goto 204 - - -state 203 - StmtList : StmtList . Stmt (25) - DefaultStmt : DEFAULT ':' StmtList . (90) - SimpleStmt : . (41) - Receiver : . (43) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - NULL shift 46 - THIS shift 47 - WHILE shift 48 - FOR shift 49 - IF shift 50 - RETURN shift 51 - BREAK shift 52 - NEW shift 53 - PRINT shift 54 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - SWITCH shift 59 - REPEAT shift 60 - CONTINUE shift 61 - '-' shift 62 - '!' shift 63 - '(' shift 64 - '{' shift 41 - IDENTIFIER reduce 43 - ';' reduce 41 - '}' reduce 90 - - VariableDef goto 66 - Variable goto 20 - Type goto 33 - StmtBlock goto 67 - Stmt goto 68 - SimpleStmt goto 69 - IfStmt goto 70 - WhileStmt goto 71 - ForStmt goto 72 - SwitchStmt goto 73 - RepeatStmt goto 74 - ReturnStmt goto 75 - PrintStmt goto 76 - BreakStmt goto 77 - ContinueStmt goto 78 - LValue goto 79 - Expr goto 80 - Call goto 81 - Receiver goto 82 - Constant goto 83 - - -state 204 - StmtList : StmtList . Stmt (25) - CaseStmt : CASE Constant ':' StmtList . (89) - SimpleStmt : . (41) - Receiver : . (43) - - VOID shift 12 - BOOL shift 13 - INT shift 14 - STRING shift 15 - CLASS shift 16 - NULL shift 46 - THIS shift 47 - WHILE shift 48 - FOR shift 49 - IF shift 50 - RETURN shift 51 - BREAK shift 52 - NEW shift 53 - PRINT shift 54 - READ_INTEGER shift 55 - READ_LINE shift 56 - LITERAL shift 57 - INSTANCEOF shift 58 - SWITCH shift 59 - REPEAT shift 60 - CONTINUE shift 61 - '-' shift 62 - '!' shift 63 - '(' shift 64 - '{' shift 41 - IDENTIFIER reduce 43 - CASE reduce 89 - DEFAULT reduce 89 - ';' reduce 41 - '}' reduce 89 - - VariableDef goto 66 - Variable goto 20 - Type goto 33 - StmtBlock goto 67 - Stmt goto 68 - SimpleStmt goto 69 - IfStmt goto 70 - WhileStmt goto 71 - ForStmt goto 72 - SwitchStmt goto 73 - RepeatStmt goto 74 - ReturnStmt goto 75 - PrintStmt goto 76 - BreakStmt goto 77 - ContinueStmt goto 78 - LValue goto 79 - Expr goto 80 - Call goto 81 - Receiver goto 82 - Constant goto 83 - - -60 terminals, 36 nonterminals -98 grammar rules, 205 states diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/frontend/Parser.y" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/frontend/Parser.y" deleted file mode 100644 index 12ac78131..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/frontend/Parser.y" +++ /dev/null @@ -1,507 +0,0 @@ -/* - * 本文件提供实现Decaf编译器所需要的BYACC脚本。 - * 在第一阶段中你需要补充完整这个文件中的语法规则。 - * 请参考"YACC--Yet Another Compiler Compiler"中关于如何编写BYACC脚本的说明。 - * - * Keltin Leung - * DCST, Tsinghua University - */ - -%{ -package decaf.frontend; - -import decaf.tree.Tree; -import decaf.tree.Tree.*; -import decaf.error.*; -import java.util.*; -%} - -%Jclass Parser -%Jextends BaseParser -%Jsemantic SemValue -%Jimplements ReduceListener -%Jnorun -%Jnodebug -%Jnoconstruct - -%token VOID BOOL INT STRING CLASS -%token NULL EXTENDS THIS WHILE FOR -%token IF ELSE RETURN BREAK NEW -%token PRINT READ_INTEGER READ_LINE -%token LITERAL -%token IDENTIFIER AND OR STATIC INSTANCEOF -%token LESS_EQUAL GREATER_EQUAL EQUAL NOT_EQUAL -%token MIN_CP -%token SWITCH CASE DEFAULT -%token REPEAT UNTIL -%token CONTINUE -%token '+' '-' '*' '/' '%' '=' '>' '<' '.' -%token ',' ';' '!' '(' ')' '[' ']' '{' '}' -%token ':' '?' - -%right ':' '?' -%left PCLONE -%left OR -%left AND -%nonassoc EQUAL NOT_EQUAL -%nonassoc LESS_EQUAL GREATER_EQUAL '<' '>' -%left '+' '-' -%left '*' '/' '%' -%nonassoc UMINUS '!' -%nonassoc '[' '.' -%nonassoc ')' EMPTY -%nonassoc ELSE - -%start Program - -%% -Program : ClassList - { - tree = new Tree.TopLevel($1.clist, $1.loc); - } - ; - -ClassList : ClassList ClassDef - { - $$.clist.add($2.cdef); - } - | ClassDef - { - $$.clist = new ArrayList(); - $$.clist.add($1.cdef); - } - ; - -VariableDef : Variable ';' - ; - -Variable : Type IDENTIFIER - { - $$.vdef = new Tree.VarDef($2.ident, $1.type, $2.loc); - } - ; - -Type : INT - { - $$.type = new Tree.TypeIdent(Tree.INT, $1.loc); - } - | VOID - { - $$.type = new Tree.TypeIdent(Tree.VOID, $1.loc); - } - | BOOL - { - $$.type = new Tree.TypeIdent(Tree.BOOL, $1.loc); - } - | STRING - { - $$.type = new Tree.TypeIdent(Tree.STRING, $1.loc); - } - | CLASS IDENTIFIER - { - $$.type = new Tree.TypeClass($2.ident, $1.loc); - } - | Type '[' ']' - { - $$.type = new Tree.TypeArray($1.type, $1.loc); - } - ; - -ClassDef : CLASS IDENTIFIER ExtendsClause '{' FieldList '}' - { - $$.cdef = new Tree.ClassDef($2.ident, $3.ident, $5.flist, $1.loc); - } - ; - -ExtendsClause : EXTENDS IDENTIFIER - { - $$.ident = $2.ident; - } - | /* empty */ - { - $$ = new SemValue(); - } - ; - -FieldList : FieldList VariableDef - { - $$.flist.add($2.vdef); - } - | FieldList FunctionDef - { - $$.flist.add($2.fdef); - } - | /* empty */ - { - $$ = new SemValue(); - $$.flist = new ArrayList(); - } - ; - -Formals : VariableList - | /* empty */ - { - $$ = new SemValue(); - $$.vlist = new ArrayList(); - } - ; - -VariableList : VariableList ',' Variable - { - $$.vlist.add($3.vdef); - } - | Variable - { - $$.vlist = new ArrayList(); - $$.vlist.add($1.vdef); - } - ; - -FunctionDef : STATIC Type IDENTIFIER '(' Formals ')' StmtBlock - { - $$.fdef = new MethodDef(true, $3.ident, $2.type, $5.vlist, (Block) $7.stmt, $3.loc); - } - | Type IDENTIFIER '(' Formals ')' StmtBlock - { - $$.fdef = new MethodDef(false, $2.ident, $1.type, $4.vlist, (Block) $6.stmt, $2.loc); - } - ; - -StmtBlock : '{' StmtList '}' - { - $$.stmt = new Block($2.slist, $1.loc); - } - ; - -StmtList : StmtList Stmt - { - $$.slist.add($2.stmt); - } - | /* empty */ - { - $$ = new SemValue(); - $$.slist = new ArrayList(); - } - ; - -Stmt : VariableDef - { - $$.stmt = $1.vdef; - } - - | SimpleStmt ';' - { - if ($$.stmt == null) { - $$.stmt = new Tree.Skip($2.loc); - } - } - | IfStmt - | WhileStmt - | ForStmt - | SwitchStmt - | RepeatStmt ';' - | ReturnStmt ';' - | PrintStmt ';' - | BreakStmt ';' - | ContinueStmt ';' - | StmtBlock - ; - -SimpleStmt : LValue '=' Expr - { - $$.stmt = new Tree.Assign($1.lvalue, $3.expr, $2.loc); - } - | Call - { - $$.stmt = new Tree.Exec($1.expr, $1.loc); - } - | /* empty */ - { - $$ = new SemValue(); - } - ; - -Receiver : Expr '.' - | /* empty */ - { - $$ = new SemValue(); - } - ; - -LValue : Receiver IDENTIFIER - { - $$.lvalue = new Tree.Ident($1.expr, $2.ident, $2.loc); - if ($1.loc == null) { - $$.loc = $2.loc; - } - } - | Expr '[' Expr ']' - { - $$.lvalue = new Tree.Indexed($1.expr, $3.expr, $1.loc); - } - ; - -Call : Receiver IDENTIFIER '(' Actuals ')' - { - $$.expr = new Tree.CallExpr($1.expr, $2.ident, $4.elist, $2.loc); - if ($1.loc == null) { - $$.loc = $2.loc; - } - } - ; - -Expr : LValue - { - $$.expr = $1.lvalue; - } - | Call - | Constant - | Expr '+' Expr - { - $$.expr = new Tree.Binary(Tree.PLUS, $1.expr, $3.expr, $2.loc); - } - | Expr '-' Expr - { - $$.expr = new Tree.Binary(Tree.MINUS, $1.expr, $3.expr, $2.loc); - } - | Expr '*' Expr - { - $$.expr = new Tree.Binary(Tree.MUL, $1.expr, $3.expr, $2.loc); - } - | Expr '/' Expr - { - $$.expr = new Tree.Binary(Tree.DIV, $1.expr, $3.expr, $2.loc); - } - | Expr '%' Expr - { - $$.expr = new Tree.Binary(Tree.MOD, $1.expr, $3.expr, $2.loc); - } - | Expr EQUAL Expr - { - $$.expr = new Tree.Binary(Tree.EQ, $1.expr, $3.expr, $2.loc); - } - | Expr NOT_EQUAL Expr - { - $$.expr = new Tree.Binary(Tree.NE, $1.expr, $3.expr, $2.loc); - } - | Expr '<' Expr - { - $$.expr = new Tree.Binary(Tree.LT, $1.expr, $3.expr, $2.loc); - } - | Expr '>' Expr - { - $$.expr = new Tree.Binary(Tree.GT, $1.expr, $3.expr, $2.loc); - } - | Expr LESS_EQUAL Expr - { - $$.expr = new Tree.Binary(Tree.LE, $1.expr, $3.expr, $2.loc); - } - | Expr GREATER_EQUAL Expr - { - $$.expr = new Tree.Binary(Tree.GE, $1.expr, $3.expr, $2.loc); - } - | Expr AND Expr - { - $$.expr = new Tree.Binary(Tree.AND, $1.expr, $3.expr, $2.loc); - } - | Expr OR Expr - { - $$.expr = new Tree.Binary(Tree.OR, $1.expr, $3.expr, $2.loc); - } - | '(' Expr ')' - { - $$ = $2; - } - | '-' Expr %prec UMINUS - { - $$.expr = new Tree.Unary(Tree.NEG, $2.expr, $1.loc); - } - | '!' Expr - { - $$.expr = new Tree.Unary(Tree.NOT, $2.expr, $1.loc); - } - | READ_INTEGER '(' ')' - { - $$.expr = new Tree.ReadIntExpr($1.loc); - } - | READ_LINE '(' ')' - { - $$.expr = new Tree.ReadLineExpr($1.loc); - } - | THIS - { - $$.expr = new Tree.ThisExpr($1.loc); - } - | NEW IDENTIFIER '(' ')' - { - $$.expr = new Tree.NewClass($2.ident, $1.loc); - } - | NEW Type '[' Expr ']' - { - $$.expr = new Tree.NewArray($2.type, $4.expr, $1.loc); - } - | INSTANCEOF '(' Expr ',' IDENTIFIER ')' - { - $$.expr = new Tree.TypeTest($3.expr, $5.ident, $1.loc); - } - | '(' CLASS IDENTIFIER ')' Expr - { - $$.expr = new Tree.TypeCast($3.ident, $5.expr, $5.loc); - } - | Expr '?' Expr ':' Expr - { - $$.expr = new Tree.Ternary(Tree.CONDEXPR, $1.expr, $3.expr, $5.expr, $2.loc); - } - | Expr PCLONE Expr - { - $$.expr = new Tree.Binary(Tree.PCLONE, $1.expr, $3.expr, $2.loc); - } - ; - -Constant : LITERAL - { - $$.expr = new Tree.Literal($1.typeTag, $1.literal, $1.loc); - } - | NULL - { - $$.expr = new Null($1.loc); - } - ; - -Actuals : ExprList - | /* empty */ - { - $$ = new SemValue(); - $$.elist = new ArrayList(); - } - ; - -ExprList : ExprList ',' Expr - { - $$.elist.add($3.expr); - } - | Expr - { - $$.elist = new ArrayList(); - $$.elist.add($1.expr); - } - ; - -WhileStmt : WHILE '(' Expr ')' Stmt - { - $$.stmt = new Tree.WhileLoop($3.expr, $5.stmt, $1.loc); - } - ; - -ForStmt : FOR '(' SimpleStmt ';' Expr ';' SimpleStmt ')' Stmt - { - $$.stmt = new Tree.ForLoop($3.stmt, $5.expr, $7.stmt, $9.stmt, $1.loc); - } - ; - -BreakStmt : BREAK - { - $$.stmt = new Tree.Break($1.loc); - } - ; - -ContinueStmt : CONTINUE - { - $$.stmt = new Tree.Continue($1.loc); - } - ; - -IfStmt : IF '(' Expr ')' Stmt ElseClause - { - $$.stmt = new Tree.If($3.expr, $5.stmt, $6.stmt, $1.loc); - } - ; - -SwitchStmt : SWITCH '(' Expr ')' '{' CaseStmtList DefaultStmt '}' - { - $$.stmt = new Tree.Switch($3.expr, $6.caselist, $7.slist, $1.loc); - } - ; - -CaseStmtList : CaseStmtList CaseStmt - { - $$.caselist.add($2.casedef); - } - | /* empty */ - { - $$ = new SemValue(); - $$.caselist = new ArrayList(); - } - ; - -CaseStmt : CASE Constant ':' StmtList - { - $$.casedef = new Tree.Case($2.expr, $4.slist, $1.loc); - } - ; - -DefaultStmt : DEFAULT ':' StmtList - { - $$.slist = $3.slist; - } - | /* empty */ - { - $$ = new SemValue(); - } - ; - -RepeatStmt : REPEAT StmtList UNTIL '(' Expr ')' - { - $$.stmt = new Tree.Repeat($5.expr, new Tree.Block($2.slist, $1.loc), $1.loc); - } - ; - -ElseClause : ELSE Stmt - { - $$.stmt = $2.stmt; - } - | /* empty */ %prec EMPTY - { - $$ = new SemValue(); - } - ; - -ReturnStmt : RETURN Expr - { - $$.stmt = new Tree.Return($2.expr, $1.loc); - } - | RETURN - { - $$.stmt = new Tree.Return(null, $1.loc); - } - ; - -PrintStmt : PRINT '(' ExprList ')' - { - $$.stmt = new Print($3.elist, $1.loc); - } - ; - -%% - - /** - * 打印当前归约所用的语法规则
- * 请勿修改。 - */ - public boolean onReduce(String rule) { - if (rule.startsWith("$$")) - return false; - else - rule = rule.replaceAll(" \\$\\$\\d+", ""); - - if (rule.endsWith(":")) - System.out.println(rule + " "); - else - System.out.println(rule); - return false; - } - - public void diagnose() { - addReduceListener(this); - yyparse(); - } \ No newline at end of file diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/frontend/ParserHelper.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/frontend/ParserHelper.class" deleted file mode 100644 index 73f1690c2..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/frontend/ParserHelper.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/frontend/ReduceListener.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/frontend/ReduceListener.class" deleted file mode 100644 index 8dc1e198c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/frontend/ReduceListener.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/frontend/SemValue.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/frontend/SemValue.class" deleted file mode 100644 index 53b9fdeb8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/frontend/SemValue.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/machdesc/Intrinsic.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/machdesc/Intrinsic.class" deleted file mode 100644 index ea463a1c5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/machdesc/Intrinsic.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/scope/ClassScope.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/scope/ClassScope.class" deleted file mode 100644 index 15a4b2480..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/scope/ClassScope.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/scope/FormalScope.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/scope/FormalScope.class" deleted file mode 100644 index 7f9d488bf..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/scope/FormalScope.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/scope/GlobalScope.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/scope/GlobalScope.class" deleted file mode 100644 index 500ab21fa..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/scope/GlobalScope.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/scope/LocalScope.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/scope/LocalScope.class" deleted file mode 100644 index d8bea5ac7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/scope/LocalScope.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/scope/Scope$Kind.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/scope/Scope$Kind.class" deleted file mode 100644 index 3b4b6351a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/scope/Scope$Kind.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/scope/Scope.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/scope/Scope.class" deleted file mode 100644 index b57fdca02..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/scope/Scope.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/scope/ScopeStack$1.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/scope/ScopeStack$1.class" deleted file mode 100644 index a0f3b4987..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/scope/ScopeStack$1.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/scope/ScopeStack.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/scope/ScopeStack.class" deleted file mode 100644 index 1fcef768a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/scope/ScopeStack.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/symbol/Class.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/symbol/Class.class" deleted file mode 100644 index 460f0bd3c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/symbol/Class.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/symbol/Function.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/symbol/Function.class" deleted file mode 100644 index 363d32d66..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/symbol/Function.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/symbol/Symbol$1.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/symbol/Symbol$1.class" deleted file mode 100644 index e3693dbed..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/symbol/Symbol$1.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/symbol/Symbol$2.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/symbol/Symbol$2.class" deleted file mode 100644 index 80499c303..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/symbol/Symbol$2.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/symbol/Symbol.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/symbol/Symbol.class" deleted file mode 100644 index 1ff6891b4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/symbol/Symbol.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/symbol/Variable.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/symbol/Variable.class" deleted file mode 100644 index c58f8316e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/symbol/Variable.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tac/Functy.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tac/Functy.class" deleted file mode 100644 index 7e72f32e2..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tac/Functy.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tac/Label.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tac/Label.class" deleted file mode 100644 index 2aab0a003..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tac/Label.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tac/Tac$1.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tac/Tac$1.class" deleted file mode 100644 index 6b28663f2..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tac/Tac$1.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tac/Tac$Kind.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tac/Tac$Kind.class" deleted file mode 100644 index e59c8cbfc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tac/Tac$Kind.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tac/Tac.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tac/Tac.class" deleted file mode 100644 index 943b6a589..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tac/Tac.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tac/Temp$1.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tac/Temp$1.class" deleted file mode 100644 index 3ea19ce23..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tac/Temp$1.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tac/Temp.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tac/Temp.class" deleted file mode 100644 index 65848f0bc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tac/Temp.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tac/VTable.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tac/VTable.class" deleted file mode 100644 index 1b6d4147e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tac/VTable.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/translate/TransPass1.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/translate/TransPass1.class" deleted file mode 100644 index 80b508208..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/translate/TransPass1.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/translate/TransPass2$1.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/translate/TransPass2$1.class" deleted file mode 100644 index fe1e94dcd..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/translate/TransPass2$1.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/translate/TransPass2.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/translate/TransPass2.class" deleted file mode 100644 index c2f39bc8a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/translate/TransPass2.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/translate/Translater.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/translate/Translater.class" deleted file mode 100644 index a224612f4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/translate/Translater.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Apply.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Apply.class" deleted file mode 100644 index 4f0fdc479..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Apply.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Assign.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Assign.class" deleted file mode 100644 index 1a0a00d91..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Assign.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Binary.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Binary.class" deleted file mode 100644 index 0b4a51aec..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Binary.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Block.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Block.class" deleted file mode 100644 index ce70a7014..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Block.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Break.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Break.class" deleted file mode 100644 index 4149aed32..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Break.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$CallExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$CallExpr.class" deleted file mode 100644 index 2ebf97c60..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$CallExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Case.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Case.class" deleted file mode 100644 index 6c977ff24..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Case.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$ClassDef.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$ClassDef.class" deleted file mode 100644 index 3c42a8668..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$ClassDef.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Continue.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Continue.class" deleted file mode 100644 index ed86b5eae..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Continue.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Exec.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Exec.class" deleted file mode 100644 index 0ab5f3de9..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Exec.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Expr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Expr.class" deleted file mode 100644 index e52270652..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Expr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$ForLoop.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$ForLoop.class" deleted file mode 100644 index 92f27ab2a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$ForLoop.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Ident.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Ident.class" deleted file mode 100644 index 101ef0996..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Ident.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$If.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$If.class" deleted file mode 100644 index acb9e3e1b..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$If.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Indexed.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Indexed.class" deleted file mode 100644 index 1cafd1e44..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Indexed.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$LValue$Kind.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$LValue$Kind.class" deleted file mode 100644 index 1d4d757a3..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$LValue$Kind.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$LValue.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$LValue.class" deleted file mode 100644 index c87284b08..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$LValue.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Literal.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Literal.class" deleted file mode 100644 index 84d154f56..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Literal.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$MethodDef.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$MethodDef.class" deleted file mode 100644 index bb154f165..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$MethodDef.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$NewArray.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$NewArray.class" deleted file mode 100644 index 00b2c55c1..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$NewArray.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$NewClass.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$NewClass.class" deleted file mode 100644 index 467cc6e10..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$NewClass.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Null.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Null.class" deleted file mode 100644 index 341f96d92..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Null.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Print.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Print.class" deleted file mode 100644 index 927c3c923..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Print.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$ReadIntExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$ReadIntExpr.class" deleted file mode 100644 index 740cbd52c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$ReadIntExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$ReadLineExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$ReadLineExpr.class" deleted file mode 100644 index 67e7b5f5a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$ReadLineExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Repeat.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Repeat.class" deleted file mode 100644 index 9ba18199a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Repeat.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Return.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Return.class" deleted file mode 100644 index 49771b76a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Return.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Skip.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Skip.class" deleted file mode 100644 index b512eeee5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Skip.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Switch.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Switch.class" deleted file mode 100644 index 131cf5da7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Switch.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Ternary.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Ternary.class" deleted file mode 100644 index b35a9fbbd..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Ternary.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$ThisExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$ThisExpr.class" deleted file mode 100644 index ff393a956..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$ThisExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$TopLevel.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$TopLevel.class" deleted file mode 100644 index 833d387b0..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$TopLevel.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$TypeArray.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$TypeArray.class" deleted file mode 100644 index ee8c58f5a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$TypeArray.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$TypeCast.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$TypeCast.class" deleted file mode 100644 index dc028d51f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$TypeCast.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$TypeClass.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$TypeClass.class" deleted file mode 100644 index f82669c4b..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$TypeClass.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$TypeIdent.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$TypeIdent.class" deleted file mode 100644 index cbcb9737e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$TypeIdent.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$TypeLiteral.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$TypeLiteral.class" deleted file mode 100644 index 24581195e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$TypeLiteral.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$TypeTest.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$TypeTest.class" deleted file mode 100644 index 346aec84f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$TypeTest.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Unary.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Unary.class" deleted file mode 100644 index eb66e28f2..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Unary.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$VarDef.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$VarDef.class" deleted file mode 100644 index 9789788a9..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$VarDef.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Visitor.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Visitor.class" deleted file mode 100644 index b7fb72ef1..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$Visitor.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$WhileLoop.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$WhileLoop.class" deleted file mode 100644 index a5b776515..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree$WhileLoop.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree.class" deleted file mode 100644 index ded0d85cf..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/tree/Tree.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/type/ArrayType.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/type/ArrayType.class" deleted file mode 100644 index 6f547e5a5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/type/ArrayType.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/type/BaseType.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/type/BaseType.class" deleted file mode 100644 index af07ac7fc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/type/BaseType.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/type/ClassType.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/type/ClassType.class" deleted file mode 100644 index 68ff18a99..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/type/ClassType.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/type/FuncType.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/type/FuncType.class" deleted file mode 100644 index dcd6be087..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/type/FuncType.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/type/Type.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/type/Type.class" deleted file mode 100644 index 88f93ceb8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/type/Type.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/typecheck/BuildSym.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/typecheck/BuildSym.class" deleted file mode 100644 index 63600481a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/typecheck/BuildSym.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/typecheck/TypeCheck.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/typecheck/TypeCheck.class" deleted file mode 100644 index c60f50f8c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/typecheck/TypeCheck.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/utils/IndentPrintWriter.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/utils/IndentPrintWriter.class" deleted file mode 100644 index 5b7d47cfe..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/utils/IndentPrintWriter.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/utils/MiscUtils.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/utils/MiscUtils.class" deleted file mode 100644 index c8920db8c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/550405220_4_decaf_PA3/decaf/utils/MiscUtils.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/Location.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/Location.class" deleted file mode 100644 index fdf574b20..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/Location.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/Opcode.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/Opcode.class" deleted file mode 100644 index a35133449..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/Opcode.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/TacVM.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/TacVM.class" deleted file mode 100644 index 73ca896e3..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/TacVM.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/exec/ExecuteException.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/exec/ExecuteException.class" deleted file mode 100644 index 32098f335..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/exec/ExecuteException.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/exec/Executor$1.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/exec/Executor$1.class" deleted file mode 100644 index df78d6384..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/exec/Executor$1.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/exec/Executor$Intrinsic.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/exec/Executor$Intrinsic.class" deleted file mode 100644 index 222b31650..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/exec/Executor$Intrinsic.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/exec/Executor.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/exec/Executor.class" deleted file mode 100644 index 3cf1bcf4a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/exec/Executor.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/exec/Inst.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/exec/Inst.class" deleted file mode 100644 index 996d519fc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/exec/Inst.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/exec/Memory$1.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/exec/Memory$1.class" deleted file mode 100644 index 8c9689968..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/exec/Memory$1.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/exec/Memory$Block.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/exec/Memory$Block.class" deleted file mode 100644 index 88a5b7945..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/exec/Memory$Block.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/exec/Memory.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/exec/Memory.class" deleted file mode 100644 index 25ea70888..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/exec/Memory.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/BaseLexer.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/BaseLexer.class" deleted file mode 100644 index 4c261c0d1..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/BaseLexer.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/BaseParser.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/BaseParser.class" deleted file mode 100644 index c4cee3ee4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/BaseParser.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/Entry.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/Entry.class" deleted file mode 100644 index 963dfaab2..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/Entry.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/Errs.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/Errs.class" deleted file mode 100644 index a07321263..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/Errs.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/Lexer.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/Lexer.class" deleted file mode 100644 index c54c91294..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/Lexer.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/Lexer.l" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/Lexer.l" deleted file mode 100644 index a9d4d6799..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/Lexer.l" +++ /dev/null @@ -1,84 +0,0 @@ -package decaf.tacvm.parser; - -import decaf.tacvm.Location; -import decaf.tacvm.utils.MiscUtils; - -%% -%public -%class Lexer -%extends BaseLexer -%byaccj -%line -%column -%switch -%unicode - -%{ - private Location sloc = null; - private StringBuilder buffer = new StringBuilder(); - - public Location getLocation() { - return new Location(yyline + 1, yycolumn + 1); - } -%} - -NEWLINE = (\r|\n|\r\n) -DIGIT = ([0-9]) -INTEGER = ({DIGIT}+) -TEMP = ("_T"{DIGIT}+) -LABEL = ("_L"{DIGIT}+) -IDENT = ([_0-9A-Za-z]+) -ENTRY = ([_0-9A-Za-z]+"."[a-zA-Z][_0-9A-Za-z]+) -UNARY_OPERATOR = ("+"|"-"|"*"|"/"|">"|"<"|"!"|";"|"("|")"|"%"|"["|"]"|"{"|"}"|"'"|":"|"=") -WHITESPACE = ([ \t]+) - -%x S - -%% - -{WHITESPACE} { /* Just ignore */ } -{NEWLINE} { /* Just ignore */ } - - -"if" { return keyword(Parser.IF); } -"" { return keyword(Parser.EMPTY); } -"parm" { return keyword(Parser.PARM); } -"call" { return keyword(Parser.CALL); } -"memo" { return keyword(Parser.MEMO); } -"return" { return keyword(Parser.RETURN); } -"branch" { return keyword(Parser.BRANCH); } -"VTBL" { return keyword(Parser.VTBL); } -"VTABLE" { return keyword(Parser.VTABLE); } -"FUNCTION" { return keyword(Parser.FUNC); } - -"<=" { return operator(Parser.LEQ); } -">=" { return operator(Parser.GEQ); } -"==" { return operator(Parser.EQU); } -"!=" { return operator(Parser.NEQ); } -"&&" { return operator(Parser.LAND); } -"||" { return operator(Parser.LOR); } -{UNARY_OPERATOR} { return operator((int)yycharat(0)); } - -{INTEGER} { return intConst(yytext()); } -{TEMP} { return temp(yytext()); } -{LABEL} { return label(yytext()); } -{ENTRY} { return entry(yytext()); } -{IDENT} { return ident(yytext()); } - - -\" { sloc = getLocation(); - yybegin(S); - buffer = new StringBuilder(); } -{NEWLINE} { Errs.issue(sloc, Errs.NEWLINE_IN_STR1, MiscUtils.quote(buffer.toString()));} -<> { Errs.issue(sloc, Errs.UNTERM_STR1, MiscUtils.quote(buffer.toString())); - yybegin(YYINITIAL); } -\" { yybegin(YYINITIAL); - return stringConst(buffer.toString(), sloc); } -"\\n" { buffer.append('\n'); } -"\\r" { buffer.append('\r'); } -"\\t" { buffer.append('\t'); } -"\\\"" { buffer.append('"'); } -"\\\\" { buffer.append('\\'); } -. { buffer.append(yytext()); } - -. { Errs.issue(getLocation(), Errs.UNRECOG_CHAR1, yycharat(0)); } \ No newline at end of file diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/Parser.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/Parser.class" deleted file mode 100644 index 54d3b24ac..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/Parser.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/Parser.output" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/Parser.output" deleted file mode 100644 index b0ac05985..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/Parser.output" +++ /dev/null @@ -1,1286 +0,0 @@ - 0 $accept : Program $end - - 1 Program : VTables Funcs - - 2 VTables : VTables VTable - 3 | VTable - - 4 VTable : VTABLE '(' IDENT ')' '{' IDENT IDENT Entrys '}' - 5 | VTABLE '(' IDENT ')' '{' EMPTY IDENT Entrys '}' - - 6 Entrys : Entrys ENTRY ';' - 7 | - - 8 Funcs : Funcs Func - 9 | Func - - 10 Func : FuncHeader Tacs '}' - - 11 $$1 : - - 12 FuncHeader : FUNC '(' ENTRY ')' $$1 '{' MEMO '\'' Params '\'' ENTRY ':' - - 13 $$2 : - - 14 FuncHeader : FUNC '(' IDENT ')' $$2 '{' MEMO '\'' '\'' IDENT ':' - - 15 Params : Params TEMP ':' INT_CONST - 16 | - - 17 Tacs : Tacs Tac - 18 | - - 19 Tac : TEMP '=' '(' TEMP '+' TEMP ')' - 20 | TEMP '=' '(' TEMP '-' TEMP ')' - 21 | TEMP '=' '(' TEMP '*' TEMP ')' - 22 | TEMP '=' '(' TEMP '/' TEMP ')' - 23 | TEMP '=' '(' TEMP '%' TEMP ')' - 24 | TEMP '=' '(' TEMP LAND TEMP ')' - 25 | TEMP '=' '(' TEMP LOR TEMP ')' - 26 | TEMP '=' '(' TEMP '>' TEMP ')' - 27 | TEMP '=' '(' TEMP GEQ TEMP ')' - 28 | TEMP '=' '(' TEMP EQU TEMP ')' - 29 | TEMP '=' '(' TEMP NEQ TEMP ')' - 30 | TEMP '=' '(' TEMP LEQ TEMP ')' - 31 | TEMP '=' '(' TEMP '<' TEMP ')' - 32 | TEMP '=' '!' TEMP - 33 | TEMP '=' '-' TEMP - 34 | TEMP '=' TEMP - 35 | TEMP '=' INT_CONST - 36 | TEMP '=' STRING_CONST - 37 | TEMP '=' '*' '(' TEMP '+' INT_CONST ')' - 38 | TEMP '=' '*' '(' TEMP '-' INT_CONST ')' - 39 | '*' '(' TEMP '+' INT_CONST ')' '=' TEMP - 40 | '*' '(' TEMP '-' INT_CONST ')' '=' TEMP - 41 | TEMP '=' CALL TEMP - 42 | CALL TEMP - 43 | TEMP '=' CALL IDENT - 44 | TEMP '=' CALL ENTRY - 45 | CALL IDENT - 46 | CALL ENTRY - 47 | TEMP '=' VTBL '<' IDENT '>' - 48 | BRANCH LABEL - 49 | IF '(' TEMP EQU INT_CONST ')' BRANCH LABEL - 50 | IF '(' TEMP NEQ INT_CONST ')' BRANCH LABEL - 51 | PARM TEMP - 52 | RETURN TEMP - 53 | RETURN EMPTY - 54 | LABEL ':' - -state 0 - $accept : . Program $end (0) - - VTABLE shift 1 - . error - - Program goto 2 - VTables goto 3 - VTable goto 4 - - -state 1 - VTable : VTABLE . '(' IDENT ')' '{' IDENT IDENT Entrys '}' (4) - VTable : VTABLE . '(' IDENT ')' '{' EMPTY IDENT Entrys '}' (5) - - '(' shift 5 - . error - - -state 2 - $accept : Program . $end (0) - - $end accept - - -state 3 - Program : VTables . Funcs (1) - VTables : VTables . VTable (2) - - VTABLE shift 1 - FUNC shift 6 - . error - - Funcs goto 7 - VTable goto 8 - Func goto 9 - FuncHeader goto 10 - - -state 4 - VTables : VTable . (3) - - . reduce 3 - - -state 5 - VTable : VTABLE '(' . IDENT ')' '{' IDENT IDENT Entrys '}' (4) - VTable : VTABLE '(' . IDENT ')' '{' EMPTY IDENT Entrys '}' (5) - - IDENT shift 11 - . error - - -state 6 - FuncHeader : FUNC . '(' ENTRY ')' $$1 '{' MEMO '\'' Params '\'' ENTRY ':' (12) - FuncHeader : FUNC . '(' IDENT ')' $$2 '{' MEMO '\'' '\'' IDENT ':' (14) - - '(' shift 12 - . error - - -state 7 - Program : VTables Funcs . (1) - Funcs : Funcs . Func (8) - - FUNC shift 6 - $end reduce 1 - - Func goto 13 - FuncHeader goto 10 - - -state 8 - VTables : VTables VTable . (2) - - . reduce 2 - - -state 9 - Funcs : Func . (9) - - . reduce 9 - - -state 10 - Func : FuncHeader . Tacs '}' (10) - Tacs : . (18) - - . reduce 18 - - Tacs goto 14 - - -state 11 - VTable : VTABLE '(' IDENT . ')' '{' IDENT IDENT Entrys '}' (4) - VTable : VTABLE '(' IDENT . ')' '{' EMPTY IDENT Entrys '}' (5) - - ')' shift 15 - . error - - -state 12 - FuncHeader : FUNC '(' . ENTRY ')' $$1 '{' MEMO '\'' Params '\'' ENTRY ':' (12) - FuncHeader : FUNC '(' . IDENT ')' $$2 '{' MEMO '\'' '\'' IDENT ':' (14) - - ENTRY shift 16 - IDENT shift 17 - . error - - -state 13 - Funcs : Funcs Func . (8) - - . reduce 8 - - -state 14 - Func : FuncHeader Tacs . '}' (10) - Tacs : Tacs . Tac (17) - - BRANCH shift 18 - PARM shift 19 - CALL shift 20 - RETURN shift 21 - IF shift 22 - LABEL shift 23 - TEMP shift 24 - '}' shift 25 - '*' shift 26 - . error - - Tac goto 27 - - -state 15 - VTable : VTABLE '(' IDENT ')' . '{' IDENT IDENT Entrys '}' (4) - VTable : VTABLE '(' IDENT ')' . '{' EMPTY IDENT Entrys '}' (5) - - '{' shift 28 - . error - - -state 16 - FuncHeader : FUNC '(' ENTRY . ')' $$1 '{' MEMO '\'' Params '\'' ENTRY ':' (12) - - ')' shift 29 - . error - - -state 17 - FuncHeader : FUNC '(' IDENT . ')' $$2 '{' MEMO '\'' '\'' IDENT ':' (14) - - ')' shift 30 - . error - - -state 18 - Tac : BRANCH . LABEL (48) - - LABEL shift 31 - . error - - -state 19 - Tac : PARM . TEMP (51) - - TEMP shift 32 - . error - - -state 20 - Tac : CALL . TEMP (42) - Tac : CALL . IDENT (45) - Tac : CALL . ENTRY (46) - - TEMP shift 33 - ENTRY shift 34 - IDENT shift 35 - . error - - -state 21 - Tac : RETURN . TEMP (52) - Tac : RETURN . EMPTY (53) - - EMPTY shift 36 - TEMP shift 37 - . error - - -state 22 - Tac : IF . '(' TEMP EQU INT_CONST ')' BRANCH LABEL (49) - Tac : IF . '(' TEMP NEQ INT_CONST ')' BRANCH LABEL (50) - - '(' shift 38 - . error - - -state 23 - Tac : LABEL . ':' (54) - - ':' shift 39 - . error - - -state 24 - Tac : TEMP . '=' '(' TEMP '+' TEMP ')' (19) - Tac : TEMP . '=' '(' TEMP '-' TEMP ')' (20) - Tac : TEMP . '=' '(' TEMP '*' TEMP ')' (21) - Tac : TEMP . '=' '(' TEMP '/' TEMP ')' (22) - Tac : TEMP . '=' '(' TEMP '%' TEMP ')' (23) - Tac : TEMP . '=' '(' TEMP LAND TEMP ')' (24) - Tac : TEMP . '=' '(' TEMP LOR TEMP ')' (25) - Tac : TEMP . '=' '(' TEMP '>' TEMP ')' (26) - Tac : TEMP . '=' '(' TEMP GEQ TEMP ')' (27) - Tac : TEMP . '=' '(' TEMP EQU TEMP ')' (28) - Tac : TEMP . '=' '(' TEMP NEQ TEMP ')' (29) - Tac : TEMP . '=' '(' TEMP LEQ TEMP ')' (30) - Tac : TEMP . '=' '(' TEMP '<' TEMP ')' (31) - Tac : TEMP . '=' '!' TEMP (32) - Tac : TEMP . '=' '-' TEMP (33) - Tac : TEMP . '=' TEMP (34) - Tac : TEMP . '=' INT_CONST (35) - Tac : TEMP . '=' STRING_CONST (36) - Tac : TEMP . '=' '*' '(' TEMP '+' INT_CONST ')' (37) - Tac : TEMP . '=' '*' '(' TEMP '-' INT_CONST ')' (38) - Tac : TEMP . '=' CALL TEMP (41) - Tac : TEMP . '=' CALL IDENT (43) - Tac : TEMP . '=' CALL ENTRY (44) - Tac : TEMP . '=' VTBL '<' IDENT '>' (47) - - '=' shift 40 - . error - - -state 25 - Func : FuncHeader Tacs '}' . (10) - - . reduce 10 - - -state 26 - Tac : '*' . '(' TEMP '+' INT_CONST ')' '=' TEMP (39) - Tac : '*' . '(' TEMP '-' INT_CONST ')' '=' TEMP (40) - - '(' shift 41 - . error - - -state 27 - Tacs : Tacs Tac . (17) - - . reduce 17 - - -state 28 - VTable : VTABLE '(' IDENT ')' '{' . IDENT IDENT Entrys '}' (4) - VTable : VTABLE '(' IDENT ')' '{' . EMPTY IDENT Entrys '}' (5) - - EMPTY shift 42 - IDENT shift 43 - . error - - -state 29 - FuncHeader : FUNC '(' ENTRY ')' . $$1 '{' MEMO '\'' Params '\'' ENTRY ':' (12) - $$1 : . (11) - - . reduce 11 - - $$1 goto 44 - - -state 30 - FuncHeader : FUNC '(' IDENT ')' . $$2 '{' MEMO '\'' '\'' IDENT ':' (14) - $$2 : . (13) - - . reduce 13 - - $$2 goto 45 - - -state 31 - Tac : BRANCH LABEL . (48) - - . reduce 48 - - -state 32 - Tac : PARM TEMP . (51) - - . reduce 51 - - -state 33 - Tac : CALL TEMP . (42) - - . reduce 42 - - -state 34 - Tac : CALL ENTRY . (46) - - . reduce 46 - - -state 35 - Tac : CALL IDENT . (45) - - . reduce 45 - - -state 36 - Tac : RETURN EMPTY . (53) - - . reduce 53 - - -state 37 - Tac : RETURN TEMP . (52) - - . reduce 52 - - -state 38 - Tac : IF '(' . TEMP EQU INT_CONST ')' BRANCH LABEL (49) - Tac : IF '(' . TEMP NEQ INT_CONST ')' BRANCH LABEL (50) - - TEMP shift 46 - . error - - -state 39 - Tac : LABEL ':' . (54) - - . reduce 54 - - -state 40 - Tac : TEMP '=' . '(' TEMP '+' TEMP ')' (19) - Tac : TEMP '=' . '(' TEMP '-' TEMP ')' (20) - Tac : TEMP '=' . '(' TEMP '*' TEMP ')' (21) - Tac : TEMP '=' . '(' TEMP '/' TEMP ')' (22) - Tac : TEMP '=' . '(' TEMP '%' TEMP ')' (23) - Tac : TEMP '=' . '(' TEMP LAND TEMP ')' (24) - Tac : TEMP '=' . '(' TEMP LOR TEMP ')' (25) - Tac : TEMP '=' . '(' TEMP '>' TEMP ')' (26) - Tac : TEMP '=' . '(' TEMP GEQ TEMP ')' (27) - Tac : TEMP '=' . '(' TEMP EQU TEMP ')' (28) - Tac : TEMP '=' . '(' TEMP NEQ TEMP ')' (29) - Tac : TEMP '=' . '(' TEMP LEQ TEMP ')' (30) - Tac : TEMP '=' . '(' TEMP '<' TEMP ')' (31) - Tac : TEMP '=' . '!' TEMP (32) - Tac : TEMP '=' . '-' TEMP (33) - Tac : TEMP '=' . TEMP (34) - Tac : TEMP '=' . INT_CONST (35) - Tac : TEMP '=' . STRING_CONST (36) - Tac : TEMP '=' . '*' '(' TEMP '+' INT_CONST ')' (37) - Tac : TEMP '=' . '*' '(' TEMP '-' INT_CONST ')' (38) - Tac : TEMP '=' . CALL TEMP (41) - Tac : TEMP '=' . CALL IDENT (43) - Tac : TEMP '=' . CALL ENTRY (44) - Tac : TEMP '=' . VTBL '<' IDENT '>' (47) - - CALL shift 47 - TEMP shift 48 - INT_CONST shift 49 - STRING_CONST shift 50 - VTBL shift 51 - '(' shift 52 - '-' shift 53 - '*' shift 54 - '!' shift 55 - . error - - -state 41 - Tac : '*' '(' . TEMP '+' INT_CONST ')' '=' TEMP (39) - Tac : '*' '(' . TEMP '-' INT_CONST ')' '=' TEMP (40) - - TEMP shift 56 - . error - - -state 42 - VTable : VTABLE '(' IDENT ')' '{' EMPTY . IDENT Entrys '}' (5) - - IDENT shift 57 - . error - - -state 43 - VTable : VTABLE '(' IDENT ')' '{' IDENT . IDENT Entrys '}' (4) - - IDENT shift 58 - . error - - -state 44 - FuncHeader : FUNC '(' ENTRY ')' $$1 . '{' MEMO '\'' Params '\'' ENTRY ':' (12) - - '{' shift 59 - . error - - -state 45 - FuncHeader : FUNC '(' IDENT ')' $$2 . '{' MEMO '\'' '\'' IDENT ':' (14) - - '{' shift 60 - . error - - -state 46 - Tac : IF '(' TEMP . EQU INT_CONST ')' BRANCH LABEL (49) - Tac : IF '(' TEMP . NEQ INT_CONST ')' BRANCH LABEL (50) - - EQU shift 61 - NEQ shift 62 - . error - - -state 47 - Tac : TEMP '=' CALL . TEMP (41) - Tac : TEMP '=' CALL . IDENT (43) - Tac : TEMP '=' CALL . ENTRY (44) - - TEMP shift 63 - ENTRY shift 64 - IDENT shift 65 - . error - - -state 48 - Tac : TEMP '=' TEMP . (34) - - . reduce 34 - - -state 49 - Tac : TEMP '=' INT_CONST . (35) - - . reduce 35 - - -state 50 - Tac : TEMP '=' STRING_CONST . (36) - - . reduce 36 - - -state 51 - Tac : TEMP '=' VTBL . '<' IDENT '>' (47) - - '<' shift 66 - . error - - -state 52 - Tac : TEMP '=' '(' . TEMP '+' TEMP ')' (19) - Tac : TEMP '=' '(' . TEMP '-' TEMP ')' (20) - Tac : TEMP '=' '(' . TEMP '*' TEMP ')' (21) - Tac : TEMP '=' '(' . TEMP '/' TEMP ')' (22) - Tac : TEMP '=' '(' . TEMP '%' TEMP ')' (23) - Tac : TEMP '=' '(' . TEMP LAND TEMP ')' (24) - Tac : TEMP '=' '(' . TEMP LOR TEMP ')' (25) - Tac : TEMP '=' '(' . TEMP '>' TEMP ')' (26) - Tac : TEMP '=' '(' . TEMP GEQ TEMP ')' (27) - Tac : TEMP '=' '(' . TEMP EQU TEMP ')' (28) - Tac : TEMP '=' '(' . TEMP NEQ TEMP ')' (29) - Tac : TEMP '=' '(' . TEMP LEQ TEMP ')' (30) - Tac : TEMP '=' '(' . TEMP '<' TEMP ')' (31) - - TEMP shift 67 - . error - - -state 53 - Tac : TEMP '=' '-' . TEMP (33) - - TEMP shift 68 - . error - - -state 54 - Tac : TEMP '=' '*' . '(' TEMP '+' INT_CONST ')' (37) - Tac : TEMP '=' '*' . '(' TEMP '-' INT_CONST ')' (38) - - '(' shift 69 - . error - - -state 55 - Tac : TEMP '=' '!' . TEMP (32) - - TEMP shift 70 - . error - - -state 56 - Tac : '*' '(' TEMP . '+' INT_CONST ')' '=' TEMP (39) - Tac : '*' '(' TEMP . '-' INT_CONST ')' '=' TEMP (40) - - '+' shift 71 - '-' shift 72 - . error - - -state 57 - VTable : VTABLE '(' IDENT ')' '{' EMPTY IDENT . Entrys '}' (5) - Entrys : . (7) - - . reduce 7 - - Entrys goto 73 - - -state 58 - VTable : VTABLE '(' IDENT ')' '{' IDENT IDENT . Entrys '}' (4) - Entrys : . (7) - - . reduce 7 - - Entrys goto 74 - - -state 59 - FuncHeader : FUNC '(' ENTRY ')' $$1 '{' . MEMO '\'' Params '\'' ENTRY ':' (12) - - MEMO shift 75 - . error - - -state 60 - FuncHeader : FUNC '(' IDENT ')' $$2 '{' . MEMO '\'' '\'' IDENT ':' (14) - - MEMO shift 76 - . error - - -state 61 - Tac : IF '(' TEMP EQU . INT_CONST ')' BRANCH LABEL (49) - - INT_CONST shift 77 - . error - - -state 62 - Tac : IF '(' TEMP NEQ . INT_CONST ')' BRANCH LABEL (50) - - INT_CONST shift 78 - . error - - -state 63 - Tac : TEMP '=' CALL TEMP . (41) - - . reduce 41 - - -state 64 - Tac : TEMP '=' CALL ENTRY . (44) - - . reduce 44 - - -state 65 - Tac : TEMP '=' CALL IDENT . (43) - - . reduce 43 - - -state 66 - Tac : TEMP '=' VTBL '<' . IDENT '>' (47) - - IDENT shift 79 - . error - - -state 67 - Tac : TEMP '=' '(' TEMP . '+' TEMP ')' (19) - Tac : TEMP '=' '(' TEMP . '-' TEMP ')' (20) - Tac : TEMP '=' '(' TEMP . '*' TEMP ')' (21) - Tac : TEMP '=' '(' TEMP . '/' TEMP ')' (22) - Tac : TEMP '=' '(' TEMP . '%' TEMP ')' (23) - Tac : TEMP '=' '(' TEMP . LAND TEMP ')' (24) - Tac : TEMP '=' '(' TEMP . LOR TEMP ')' (25) - Tac : TEMP '=' '(' TEMP . '>' TEMP ')' (26) - Tac : TEMP '=' '(' TEMP . GEQ TEMP ')' (27) - Tac : TEMP '=' '(' TEMP . EQU TEMP ')' (28) - Tac : TEMP '=' '(' TEMP . NEQ TEMP ')' (29) - Tac : TEMP '=' '(' TEMP . LEQ TEMP ')' (30) - Tac : TEMP '=' '(' TEMP . '<' TEMP ')' (31) - - EQU shift 80 - NEQ shift 81 - GEQ shift 82 - LEQ shift 83 - LAND shift 84 - LOR shift 85 - '+' shift 86 - '-' shift 87 - '*' shift 88 - '/' shift 89 - '%' shift 90 - '>' shift 91 - '<' shift 92 - . error - - -state 68 - Tac : TEMP '=' '-' TEMP . (33) - - . reduce 33 - - -state 69 - Tac : TEMP '=' '*' '(' . TEMP '+' INT_CONST ')' (37) - Tac : TEMP '=' '*' '(' . TEMP '-' INT_CONST ')' (38) - - TEMP shift 93 - . error - - -state 70 - Tac : TEMP '=' '!' TEMP . (32) - - . reduce 32 - - -state 71 - Tac : '*' '(' TEMP '+' . INT_CONST ')' '=' TEMP (39) - - INT_CONST shift 94 - . error - - -state 72 - Tac : '*' '(' TEMP '-' . INT_CONST ')' '=' TEMP (40) - - INT_CONST shift 95 - . error - - -state 73 - VTable : VTABLE '(' IDENT ')' '{' EMPTY IDENT Entrys . '}' (5) - Entrys : Entrys . ENTRY ';' (6) - - ENTRY shift 96 - '}' shift 97 - . error - - -state 74 - VTable : VTABLE '(' IDENT ')' '{' IDENT IDENT Entrys . '}' (4) - Entrys : Entrys . ENTRY ';' (6) - - ENTRY shift 96 - '}' shift 98 - . error - - -state 75 - FuncHeader : FUNC '(' ENTRY ')' $$1 '{' MEMO . '\'' Params '\'' ENTRY ':' (12) - - '\'' shift 99 - . error - - -state 76 - FuncHeader : FUNC '(' IDENT ')' $$2 '{' MEMO . '\'' '\'' IDENT ':' (14) - - '\'' shift 100 - . error - - -state 77 - Tac : IF '(' TEMP EQU INT_CONST . ')' BRANCH LABEL (49) - - ')' shift 101 - . error - - -state 78 - Tac : IF '(' TEMP NEQ INT_CONST . ')' BRANCH LABEL (50) - - ')' shift 102 - . error - - -state 79 - Tac : TEMP '=' VTBL '<' IDENT . '>' (47) - - '>' shift 103 - . error - - -state 80 - Tac : TEMP '=' '(' TEMP EQU . TEMP ')' (28) - - TEMP shift 104 - . error - - -state 81 - Tac : TEMP '=' '(' TEMP NEQ . TEMP ')' (29) - - TEMP shift 105 - . error - - -state 82 - Tac : TEMP '=' '(' TEMP GEQ . TEMP ')' (27) - - TEMP shift 106 - . error - - -state 83 - Tac : TEMP '=' '(' TEMP LEQ . TEMP ')' (30) - - TEMP shift 107 - . error - - -state 84 - Tac : TEMP '=' '(' TEMP LAND . TEMP ')' (24) - - TEMP shift 108 - . error - - -state 85 - Tac : TEMP '=' '(' TEMP LOR . TEMP ')' (25) - - TEMP shift 109 - . error - - -state 86 - Tac : TEMP '=' '(' TEMP '+' . TEMP ')' (19) - - TEMP shift 110 - . error - - -state 87 - Tac : TEMP '=' '(' TEMP '-' . TEMP ')' (20) - - TEMP shift 111 - . error - - -state 88 - Tac : TEMP '=' '(' TEMP '*' . TEMP ')' (21) - - TEMP shift 112 - . error - - -state 89 - Tac : TEMP '=' '(' TEMP '/' . TEMP ')' (22) - - TEMP shift 113 - . error - - -state 90 - Tac : TEMP '=' '(' TEMP '%' . TEMP ')' (23) - - TEMP shift 114 - . error - - -state 91 - Tac : TEMP '=' '(' TEMP '>' . TEMP ')' (26) - - TEMP shift 115 - . error - - -state 92 - Tac : TEMP '=' '(' TEMP '<' . TEMP ')' (31) - - TEMP shift 116 - . error - - -state 93 - Tac : TEMP '=' '*' '(' TEMP . '+' INT_CONST ')' (37) - Tac : TEMP '=' '*' '(' TEMP . '-' INT_CONST ')' (38) - - '+' shift 117 - '-' shift 118 - . error - - -state 94 - Tac : '*' '(' TEMP '+' INT_CONST . ')' '=' TEMP (39) - - ')' shift 119 - . error - - -state 95 - Tac : '*' '(' TEMP '-' INT_CONST . ')' '=' TEMP (40) - - ')' shift 120 - . error - - -state 96 - Entrys : Entrys ENTRY . ';' (6) - - ';' shift 121 - . error - - -state 97 - VTable : VTABLE '(' IDENT ')' '{' EMPTY IDENT Entrys '}' . (5) - - . reduce 5 - - -state 98 - VTable : VTABLE '(' IDENT ')' '{' IDENT IDENT Entrys '}' . (4) - - . reduce 4 - - -state 99 - FuncHeader : FUNC '(' ENTRY ')' $$1 '{' MEMO '\'' . Params '\'' ENTRY ':' (12) - Params : . (16) - - . reduce 16 - - Params goto 122 - - -state 100 - FuncHeader : FUNC '(' IDENT ')' $$2 '{' MEMO '\'' . '\'' IDENT ':' (14) - - '\'' shift 123 - . error - - -state 101 - Tac : IF '(' TEMP EQU INT_CONST ')' . BRANCH LABEL (49) - - BRANCH shift 124 - . error - - -state 102 - Tac : IF '(' TEMP NEQ INT_CONST ')' . BRANCH LABEL (50) - - BRANCH shift 125 - . error - - -state 103 - Tac : TEMP '=' VTBL '<' IDENT '>' . (47) - - . reduce 47 - - -state 104 - Tac : TEMP '=' '(' TEMP EQU TEMP . ')' (28) - - ')' shift 126 - . error - - -state 105 - Tac : TEMP '=' '(' TEMP NEQ TEMP . ')' (29) - - ')' shift 127 - . error - - -state 106 - Tac : TEMP '=' '(' TEMP GEQ TEMP . ')' (27) - - ')' shift 128 - . error - - -state 107 - Tac : TEMP '=' '(' TEMP LEQ TEMP . ')' (30) - - ')' shift 129 - . error - - -state 108 - Tac : TEMP '=' '(' TEMP LAND TEMP . ')' (24) - - ')' shift 130 - . error - - -state 109 - Tac : TEMP '=' '(' TEMP LOR TEMP . ')' (25) - - ')' shift 131 - . error - - -state 110 - Tac : TEMP '=' '(' TEMP '+' TEMP . ')' (19) - - ')' shift 132 - . error - - -state 111 - Tac : TEMP '=' '(' TEMP '-' TEMP . ')' (20) - - ')' shift 133 - . error - - -state 112 - Tac : TEMP '=' '(' TEMP '*' TEMP . ')' (21) - - ')' shift 134 - . error - - -state 113 - Tac : TEMP '=' '(' TEMP '/' TEMP . ')' (22) - - ')' shift 135 - . error - - -state 114 - Tac : TEMP '=' '(' TEMP '%' TEMP . ')' (23) - - ')' shift 136 - . error - - -state 115 - Tac : TEMP '=' '(' TEMP '>' TEMP . ')' (26) - - ')' shift 137 - . error - - -state 116 - Tac : TEMP '=' '(' TEMP '<' TEMP . ')' (31) - - ')' shift 138 - . error - - -state 117 - Tac : TEMP '=' '*' '(' TEMP '+' . INT_CONST ')' (37) - - INT_CONST shift 139 - . error - - -state 118 - Tac : TEMP '=' '*' '(' TEMP '-' . INT_CONST ')' (38) - - INT_CONST shift 140 - . error - - -state 119 - Tac : '*' '(' TEMP '+' INT_CONST ')' . '=' TEMP (39) - - '=' shift 141 - . error - - -state 120 - Tac : '*' '(' TEMP '-' INT_CONST ')' . '=' TEMP (40) - - '=' shift 142 - . error - - -state 121 - Entrys : Entrys ENTRY ';' . (6) - - . reduce 6 - - -state 122 - FuncHeader : FUNC '(' ENTRY ')' $$1 '{' MEMO '\'' Params . '\'' ENTRY ':' (12) - Params : Params . TEMP ':' INT_CONST (15) - - TEMP shift 143 - '\'' shift 144 - . error - - -state 123 - FuncHeader : FUNC '(' IDENT ')' $$2 '{' MEMO '\'' '\'' . IDENT ':' (14) - - IDENT shift 145 - . error - - -state 124 - Tac : IF '(' TEMP EQU INT_CONST ')' BRANCH . LABEL (49) - - LABEL shift 146 - . error - - -state 125 - Tac : IF '(' TEMP NEQ INT_CONST ')' BRANCH . LABEL (50) - - LABEL shift 147 - . error - - -state 126 - Tac : TEMP '=' '(' TEMP EQU TEMP ')' . (28) - - . reduce 28 - - -state 127 - Tac : TEMP '=' '(' TEMP NEQ TEMP ')' . (29) - - . reduce 29 - - -state 128 - Tac : TEMP '=' '(' TEMP GEQ TEMP ')' . (27) - - . reduce 27 - - -state 129 - Tac : TEMP '=' '(' TEMP LEQ TEMP ')' . (30) - - . reduce 30 - - -state 130 - Tac : TEMP '=' '(' TEMP LAND TEMP ')' . (24) - - . reduce 24 - - -state 131 - Tac : TEMP '=' '(' TEMP LOR TEMP ')' . (25) - - . reduce 25 - - -state 132 - Tac : TEMP '=' '(' TEMP '+' TEMP ')' . (19) - - . reduce 19 - - -state 133 - Tac : TEMP '=' '(' TEMP '-' TEMP ')' . (20) - - . reduce 20 - - -state 134 - Tac : TEMP '=' '(' TEMP '*' TEMP ')' . (21) - - . reduce 21 - - -state 135 - Tac : TEMP '=' '(' TEMP '/' TEMP ')' . (22) - - . reduce 22 - - -state 136 - Tac : TEMP '=' '(' TEMP '%' TEMP ')' . (23) - - . reduce 23 - - -state 137 - Tac : TEMP '=' '(' TEMP '>' TEMP ')' . (26) - - . reduce 26 - - -state 138 - Tac : TEMP '=' '(' TEMP '<' TEMP ')' . (31) - - . reduce 31 - - -state 139 - Tac : TEMP '=' '*' '(' TEMP '+' INT_CONST . ')' (37) - - ')' shift 148 - . error - - -state 140 - Tac : TEMP '=' '*' '(' TEMP '-' INT_CONST . ')' (38) - - ')' shift 149 - . error - - -state 141 - Tac : '*' '(' TEMP '+' INT_CONST ')' '=' . TEMP (39) - - TEMP shift 150 - . error - - -state 142 - Tac : '*' '(' TEMP '-' INT_CONST ')' '=' . TEMP (40) - - TEMP shift 151 - . error - - -state 143 - Params : Params TEMP . ':' INT_CONST (15) - - ':' shift 152 - . error - - -state 144 - FuncHeader : FUNC '(' ENTRY ')' $$1 '{' MEMO '\'' Params '\'' . ENTRY ':' (12) - - ENTRY shift 153 - . error - - -state 145 - FuncHeader : FUNC '(' IDENT ')' $$2 '{' MEMO '\'' '\'' IDENT . ':' (14) - - ':' shift 154 - . error - - -state 146 - Tac : IF '(' TEMP EQU INT_CONST ')' BRANCH LABEL . (49) - - . reduce 49 - - -state 147 - Tac : IF '(' TEMP NEQ INT_CONST ')' BRANCH LABEL . (50) - - . reduce 50 - - -state 148 - Tac : TEMP '=' '*' '(' TEMP '+' INT_CONST ')' . (37) - - . reduce 37 - - -state 149 - Tac : TEMP '=' '*' '(' TEMP '-' INT_CONST ')' . (38) - - . reduce 38 - - -state 150 - Tac : '*' '(' TEMP '+' INT_CONST ')' '=' TEMP . (39) - - . reduce 39 - - -state 151 - Tac : '*' '(' TEMP '-' INT_CONST ')' '=' TEMP . (40) - - . reduce 40 - - -state 152 - Params : Params TEMP ':' . INT_CONST (15) - - INT_CONST shift 155 - . error - - -state 153 - FuncHeader : FUNC '(' ENTRY ')' $$1 '{' MEMO '\'' Params '\'' ENTRY . ':' (12) - - ':' shift 156 - . error - - -state 154 - FuncHeader : FUNC '(' IDENT ')' $$2 '{' MEMO '\'' '\'' IDENT ':' . (14) - - . reduce 14 - - -state 155 - Params : Params TEMP ':' INT_CONST . (15) - - . reduce 15 - - -state 156 - FuncHeader : FUNC '(' ENTRY ')' $$1 '{' MEMO '\'' Params '\'' ENTRY ':' . (12) - - . reduce 12 - - -40 terminals, 13 nonterminals -55 grammar rules, 157 states diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/Parser.y" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/Parser.y" deleted file mode 100644 index 2c737308e..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/Parser.y" +++ /dev/null @@ -1,249 +0,0 @@ -%{ -package decaf.tacvm.parser; - -import java.util.*; -%} - -%Jclass Parser -%Jextends BaseParser -%Jsemantic SemValue -%Jimplements ReduceListener -%Jnorun -%Jnodebug -%Jnoconstruct - -%token EQU NEQ GEQ LEQ LAND LOR BRANCH PARM CALL RETURN IF LABEL EMPTY -%token VTABLE FUNC TEMP ENTRY INT_CONST STRING_CONST VTBL IDENT MEMO - -%start Program - -%% - -Program : VTables Funcs - ; - -VTables : VTables VTable - | VTable - ; - -VTable : VTABLE '(' IDENT ')' '{' IDENT IDENT Entrys '}' - { - createVTable($3.sVal, $6.sVal, $7.sVal, $8.entrys); - } - | VTABLE '(' IDENT ')' '{' EMPTY IDENT Entrys '}' - { - createVTable($3.sVal, null, $7.sVal, $8.entrys); - } - ; - -Entrys : Entrys ENTRY ';' - { - Entry e = new Entry(); - e.name = $2.sVal; - e.offset = -1; - $1.entrys.add(e); - } - | /* empty */ - { - $$.entrys = new ArrayList(); - } - ; - -Funcs : Funcs Func - | Func - ; - -Func : FuncHeader Tacs '}' - { - endFunc(); - } - ; - -FuncHeader : FUNC '(' ENTRY ')' - { - enterFunc($1.loc, $3.sVal); - } - '{' MEMO '\'' Params '\'' ENTRY ':' - | FUNC '(' IDENT ')' - { - enterFunc($1.loc, $3.sVal); - } - '{' MEMO '\'' '\'' IDENT ':' - ; - -Params : Params TEMP ':' INT_CONST - { - addParam($2.sVal, $4.iVal); - } - | /* empty */ - ; - -Tacs : Tacs Tac - | /* empty */ - ; - -Tac : TEMP '=' '(' TEMP '+' TEMP ')' - { - genAdd($5.loc, $1.sVal, $4.sVal, $6.sVal); - } - | TEMP '=' '(' TEMP '-' TEMP ')' - { - genSub($5.loc, $1.sVal, $4.sVal, $6.sVal); - } - | TEMP '=' '(' TEMP '*' TEMP ')' - { - genMul($5.loc, $1.sVal, $4.sVal, $6.sVal); - } - | TEMP '=' '(' TEMP '/' TEMP ')' - { - genDiv($5.loc, $1.sVal, $4.sVal, $6.sVal); - } - | TEMP '=' '(' TEMP '%' TEMP ')' - { - genMod($5.loc, $1.sVal, $4.sVal, $6.sVal); - } - | TEMP '=' '(' TEMP LAND TEMP ')' - { - genLAnd($5.loc, $1.sVal, $4.sVal, $6.sVal); - } - | TEMP '=' '(' TEMP LOR TEMP ')' - { - genLOr($5.loc, $1.sVal, $4.sVal, $6.sVal); - } - | TEMP '=' '(' TEMP '>' TEMP ')' - { - genGtr($5.loc, $1.sVal, $4.sVal, $6.sVal); - } - | TEMP '=' '(' TEMP GEQ TEMP ')' - { - genGeq($5.loc, $1.sVal, $4.sVal, $6.sVal); - } - | TEMP '=' '(' TEMP EQU TEMP ')' - { - genEqu($5.loc, $1.sVal, $4.sVal, $6.sVal); - } - | TEMP '=' '(' TEMP NEQ TEMP ')' - { - genNeq($5.loc, $1.sVal, $4.sVal, $6.sVal); - } - | TEMP '=' '(' TEMP LEQ TEMP ')' - { - genLeq($5.loc, $1.sVal, $4.sVal, $6.sVal); - } - | TEMP '=' '(' TEMP '<' TEMP ')' - { - genLes($5.loc, $1.sVal, $4.sVal, $6.sVal); - } - | TEMP '=' '!' TEMP - { - genLNot($3.loc, $1.sVal, $4.sVal); - } - | TEMP '=' '-' TEMP - { - genNeg($3.loc, $1.sVal, $4.sVal); - } - | TEMP '=' TEMP - { - genAssign($2.loc, $1.sVal, $3.sVal); - } - | TEMP '=' INT_CONST - { - genLoadImm4($2.loc, $1.sVal, $3.iVal); - } - | TEMP '=' STRING_CONST - { - genLoadStr($2.loc, $1.sVal, $3.sVal); - } - | TEMP '=' '*' '(' TEMP '+' INT_CONST ')' - { - genLoad($2.loc, $1.sVal, $5.sVal, $7.iVal); - } - | TEMP '=' '*' '(' TEMP '-' INT_CONST ')' - { - genLoad($2.loc, $1.sVal, $5.sVal, -$7.iVal); - } - | '*' '(' TEMP '+' INT_CONST ')' '=' TEMP - { - genStore($7.loc, $8.sVal, $3.sVal, $5.iVal); - } - | '*' '(' TEMP '-' INT_CONST ')' '=' TEMP - { - genStore($7.loc, $8.sVal, $3.sVal, -$5.iVal); - } - | TEMP '=' CALL TEMP - { - genIndirectCall($3.loc, $1.sVal, $4.sVal); - } - | CALL TEMP - { - genIndirectCall($1.loc, null, $2.sVal); - } - | TEMP '=' CALL IDENT - { - genDirectCall($3.loc, $1.sVal, $4.sVal); - } - | TEMP '=' CALL ENTRY - { - genDirectCall($3.loc, $1.sVal, $4.sVal); - } - | CALL IDENT - { - genDirectCall($1.loc, null, $2.sVal); - } - | CALL ENTRY - { - genDirectCall($1.loc, null, $2.sVal); - } - | TEMP '=' VTBL '<' IDENT '>' - { - genLoadVtbl($2.loc, $1.sVal, $5.sVal); - } - | BRANCH LABEL - { - genBranch($1.loc, $2.sVal); - } - | IF '(' TEMP EQU INT_CONST ')' BRANCH LABEL - { - genBeqz($1.loc, $3.sVal, $8.sVal); - } - | IF '(' TEMP NEQ INT_CONST ')' BRANCH LABEL - { - genBnez($1.loc, $3.sVal, $8.sVal); - } - | PARM TEMP - { - genParm($1.loc, $2.sVal); - } - | RETURN TEMP - { - genReturn($1.loc, $2.sVal); - } - | RETURN EMPTY - { - genReturn($1.loc, null); - } - | LABEL ':' - { - markLabel($1.sVal); - } - ; - -%% - - public boolean onReduce(String rule) { - if (rule.startsWith("$$")) - return false; - else - rule = rule.replaceAll(" \\$\\$\\d+", ""); - - if (rule.endsWith(":")) - System.out.println(rule + " "); - else - System.out.println(rule); - return false; - } - - public void diagnose() { - addReduceListener(this); - yyparse(); - } diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/ParserHelper.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/ParserHelper.class" deleted file mode 100644 index 2ef59f428..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/ParserHelper.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/ReduceListener.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/ReduceListener.class" deleted file mode 100644 index 866304d11..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/ReduceListener.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/SemValue.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/SemValue.class" deleted file mode 100644 index 70fe38e12..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/SemValue.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/Tac.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/Tac.class" deleted file mode 100644 index f804ef7d7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/Tac.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/Temp.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/Temp.class" deleted file mode 100644 index 149b99a9a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/Temp.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/VTable.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/VTable.class" deleted file mode 100644 index c96e8f533..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/parser/VTable.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/tacvm.zip" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/tacvm.zip" deleted file mode 100644 index a58abd6df..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/tacvm.zip" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/utils/MiscUtils.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/utils/MiscUtils.class" deleted file mode 100644 index d8fbb587e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/out/production/tacvm-dev/decaf/tacvm/utils/MiscUtils.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/a.bin" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/a.bin" deleted file mode 100644 index a82a4565c..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/a.bin" +++ /dev/null @@ -1,1811 +0,0 @@ -VTABLE(_rndModule) { - - rndModule - _rndModule.COPY; - _rndModule.Init; - _rndModule.Random; - _rndModule.RndInt; -} - -VTABLE(_Deck) { - - Deck - _Deck.COPY; - _Deck.Init; - _Deck.Shuffle; - _Deck.GetCard; -} - -VTABLE(_BJDeck) { - - BJDeck - _BJDeck.COPY; - _BJDeck.Init; - _BJDeck.DealCard; - _BJDeck.Shuffle; - _BJDeck.NumCardsRemaining; -} - -VTABLE(_Player) { - - Player - _Player.COPY; - _Player.Init; - _Player.Hit; - _Player.DoubleDown; - _Player.TakeTurn; - _Player.HasMoney; - _Player.PrintMoney; - _Player.PlaceBet; - _Player.GetTotal; - _Player.Resolve; - _Player.GetYesOrNo; -} - -VTABLE(_Dealer) { - _Player - Dealer - _Dealer.COPY; - _Dealer.Init; - _Player.Hit; - _Player.DoubleDown; - _Dealer.TakeTurn; - _Player.HasMoney; - _Player.PrintMoney; - _Player.PlaceBet; - _Player.GetTotal; - _Player.Resolve; - _Player.GetYesOrNo; -} - -VTABLE(_House) { - - House - _House.COPY; - _House.SetupGame; - _House.SetupPlayers; - _House.TakeAllBets; - _House.TakeAllTurns; - _House.ResolveAllPlayers; - _House.PrintAllMoney; - _House.PlayOneGame; -} - -VTABLE(_Main) { - - Main - _Main.COPY; -} - -FUNCTION(_rndModule_New) { -memo '' -_rndModule_New: - _T42 = 8 - parm _T42 - _T43 = call _Alloc - _T44 = 0 - *(_T43 + 4) = _T44 - _T45 = VTBL <_rndModule> - *(_T43 + 0) = _T45 - return _T43 -} - -FUNCTION(_rndModule.COPY) { -memo '_T46:4' -_rndModule.COPY: - _T47 = 8 - parm _T47 - _T48 = call _Alloc - _T49 = *(_T46 + 4) - *(_T48 + 4) = _T49 - _T50 = VTBL <_rndModule> - *(_T48 + 0) = _T50 - return _T48 -} - -FUNCTION(_Deck_New) { -memo '' -_Deck_New: - _T51 = 16 - parm _T51 - _T52 = call _Alloc - _T53 = 0 - *(_T52 + 4) = _T53 - *(_T52 + 8) = _T53 - *(_T52 + 12) = _T53 - _T54 = VTBL <_Deck> - *(_T52 + 0) = _T54 - return _T52 -} - -FUNCTION(_Deck.COPY) { -memo '_T55:4' -_Deck.COPY: - _T56 = 16 - parm _T56 - _T57 = call _Alloc - _T58 = *(_T55 + 4) - *(_T57 + 4) = _T58 - _T59 = *(_T55 + 8) - *(_T57 + 8) = _T59 - _T60 = *(_T55 + 12) - *(_T57 + 12) = _T60 - _T61 = VTBL <_Deck> - *(_T57 + 0) = _T61 - return _T57 -} - -FUNCTION(_BJDeck_New) { -memo '' -_BJDeck_New: - _T62 = 16 - parm _T62 - _T63 = call _Alloc - _T64 = 0 - *(_T63 + 4) = _T64 - *(_T63 + 8) = _T64 - *(_T63 + 12) = _T64 - _T65 = VTBL <_BJDeck> - *(_T63 + 0) = _T65 - return _T63 -} - -FUNCTION(_BJDeck.COPY) { -memo '_T66:4' -_BJDeck.COPY: - _T67 = 16 - parm _T67 - _T68 = call _Alloc - _T69 = *(_T66 + 4) - *(_T68 + 4) = _T69 - _T70 = *(_T66 + 8) - *(_T68 + 8) = _T70 - _T71 = *(_T66 + 12) - *(_T68 + 12) = _T71 - _T72 = VTBL <_BJDeck> - *(_T68 + 0) = _T72 - return _T68 -} - -FUNCTION(_Player_New) { -memo '' -_Player_New: - _T73 = 28 - parm _T73 - _T74 = call _Alloc - _T75 = 0 - _T76 = 4 - _T77 = (_T74 + _T73) -_L46: - _T78 = (_T77 - _T76) - _T77 = _T78 - _T79 = (_T73 - _T76) - _T73 = _T79 - if (_T73 == 0) branch _L47 - *(_T77 + 0) = _T75 - branch _L46 -_L47: - _T80 = VTBL <_Player> - *(_T77 + 0) = _T80 - return _T77 -} - -FUNCTION(_Player.COPY) { -memo '_T81:4' -_Player.COPY: - _T82 = 28 - parm _T82 - _T83 = call _Alloc - _T84 = *(_T81 + 4) - *(_T83 + 4) = _T84 - _T85 = *(_T81 + 8) - *(_T83 + 8) = _T85 - _T86 = *(_T81 + 12) - *(_T83 + 12) = _T86 - _T87 = *(_T81 + 16) - *(_T83 + 16) = _T87 - _T88 = *(_T81 + 20) - *(_T83 + 20) = _T88 - _T89 = *(_T81 + 24) - *(_T83 + 24) = _T89 - _T90 = VTBL <_Player> - *(_T83 + 0) = _T90 - return _T83 -} - -FUNCTION(_Dealer_New) { -memo '' -_Dealer_New: - _T91 = 28 - parm _T91 - _T92 = call _Alloc - _T93 = 0 - _T94 = 4 - _T95 = (_T92 + _T91) -_L50: - _T96 = (_T95 - _T94) - _T95 = _T96 - _T97 = (_T91 - _T94) - _T91 = _T97 - if (_T91 == 0) branch _L51 - *(_T95 + 0) = _T93 - branch _L50 -_L51: - _T98 = VTBL <_Dealer> - *(_T95 + 0) = _T98 - return _T95 -} - -FUNCTION(_Dealer.COPY) { -memo '_T99:4' -_Dealer.COPY: - _T100 = 28 - parm _T100 - _T101 = call _Alloc - _T102 = *(_T99 + 4) - *(_T101 + 4) = _T102 - _T103 = *(_T99 + 8) - *(_T101 + 8) = _T103 - _T104 = *(_T99 + 12) - *(_T101 + 12) = _T104 - _T105 = *(_T99 + 16) - *(_T101 + 16) = _T105 - _T106 = *(_T99 + 20) - *(_T101 + 20) = _T106 - _T107 = *(_T99 + 24) - *(_T101 + 24) = _T107 - _T108 = VTBL <_Dealer> - *(_T101 + 0) = _T108 - return _T101 -} - -FUNCTION(_House_New) { -memo '' -_House_New: - _T109 = 16 - parm _T109 - _T110 = call _Alloc - _T111 = 0 - *(_T110 + 4) = _T111 - *(_T110 + 8) = _T111 - *(_T110 + 12) = _T111 - _T112 = VTBL <_House> - *(_T110 + 0) = _T112 - return _T110 -} - -FUNCTION(_House.COPY) { -memo '_T113:4' -_House.COPY: - _T114 = 16 - parm _T114 - _T115 = call _Alloc - _T116 = *(_T113 + 4) - *(_T115 + 4) = _T116 - _T117 = *(_T113 + 8) - *(_T115 + 8) = _T117 - _T118 = *(_T113 + 12) - *(_T115 + 12) = _T118 - _T119 = VTBL <_House> - *(_T115 + 0) = _T119 - return _T115 -} - -FUNCTION(_Main_New) { -memo '' -_Main_New: - _T120 = 4 - parm _T120 - _T121 = call _Alloc - _T122 = VTBL <_Main> - *(_T121 + 0) = _T122 - return _T121 -} - -FUNCTION(_Main.COPY) { -memo '_T123:4' -_Main.COPY: - _T124 = 4 - parm _T124 - _T125 = call _Alloc - _T126 = VTBL <_Main> - *(_T125 + 0) = _T126 - return _T125 -} - -FUNCTION(_rndModule.Init) { -memo '_T0:4 _T1:8' -_rndModule.Init: - _T127 = *(_T0 + 4) - *(_T0 + 4) = _T1 -} - -FUNCTION(_rndModule.Random) { -memo '_T2:4' -_rndModule.Random: - _T128 = *(_T2 + 4) - _T129 = 15625 - _T130 = *(_T2 + 4) - _T131 = 10000 - _T132 = 0 - _T133 = (_T131 == _T132) - if (_T133 == 0) branch _L57 - _T134 = "Decaf runtime error: Division by zero error.\n" - parm _T134 - call _PrintString - call _Halt -_L57: - _T135 = (_T130 % _T131) - _T136 = (_T129 * _T135) - _T137 = 22221 - _T138 = (_T136 + _T137) - _T139 = 65536 - _T140 = 0 - _T141 = (_T139 == _T140) - if (_T141 == 0) branch _L58 - _T142 = "Decaf runtime error: Division by zero error.\n" - parm _T142 - call _PrintString - call _Halt -_L58: - _T143 = (_T138 % _T139) - *(_T2 + 4) = _T143 - _T144 = *(_T2 + 4) - return _T144 -} - -FUNCTION(_rndModule.RndInt) { -memo '_T3:4 _T4:8' -_rndModule.RndInt: - parm _T3 - _T145 = *(_T3 + 0) - _T146 = *(_T145 + 16) - _T147 = call _T146 - _T148 = 0 - _T149 = (_T4 == _T148) - if (_T149 == 0) branch _L59 - _T150 = "Decaf runtime error: Division by zero error.\n" - parm _T150 - call _PrintString - call _Halt -_L59: - _T151 = (_T147 % _T4) - return _T151 -} - -FUNCTION(_Deck.Init) { -memo '_T5:4 _T6:8' -_Deck.Init: - _T152 = *(_T5 + 8) - _T153 = 52 - _T154 = 0 - _T155 = (_T153 < _T154) - if (_T155 == 0) branch _L60 - _T156 = "Decaf runtime error: Cannot create negative-sized array\n" - parm _T156 - call _PrintString - call _Halt -_L60: - _T157 = 4 - _T158 = (_T157 * _T153) - _T159 = (_T157 + _T158) - parm _T159 - _T160 = call _Alloc - *(_T160 + 0) = _T153 - _T161 = 0 - _T160 = (_T160 + _T159) -_L61: - _T159 = (_T159 - _T157) - if (_T159 == 0) branch _L62 - _T160 = (_T160 - _T157) - *(_T160 + 0) = _T161 - branch _L61 -_L62: - *(_T5 + 8) = _T160 - _T162 = *(_T5 + 12) - *(_T5 + 12) = _T6 -} - -FUNCTION(_Deck.Shuffle) { -memo '_T7:4' -_Deck.Shuffle: - _T163 = *(_T7 + 4) - _T164 = 1 - *(_T7 + 4) = _T164 - branch _L63 -_L64: - _T165 = *(_T7 + 4) - _T166 = *(_T7 + 4) - _T167 = 1 - _T168 = (_T166 + _T167) - *(_T7 + 4) = _T168 -_L63: - _T169 = *(_T7 + 4) - _T170 = 52 - _T171 = (_T169 <= _T170) - if (_T171 == 0) branch _L65 - _T172 = *(_T7 + 8) - _T173 = *(_T7 + 4) - _T174 = 1 - _T175 = (_T173 - _T174) - _T176 = *(_T172 - 4) - _T177 = (_T175 < _T176) - if (_T177 == 0) branch _L66 - _T178 = 0 - _T179 = (_T175 < _T178) - if (_T179 == 0) branch _L67 -_L66: - _T180 = "Decaf runtime error: Array subscript out of bounds\n" - parm _T180 - call _PrintString - call _Halt -_L67: - _T181 = 4 - _T182 = (_T175 * _T181) - _T183 = (_T172 + _T182) - _T184 = *(_T183 + 0) - _T185 = *(_T7 + 4) - _T186 = 13 - _T187 = 0 - _T188 = (_T186 == _T187) - if (_T188 == 0) branch _L68 - _T189 = "Decaf runtime error: Division by zero error.\n" - parm _T189 - call _PrintString - call _Halt -_L68: - _T190 = (_T185 % _T186) - _T191 = 4 - _T192 = (_T175 * _T191) - _T193 = (_T172 + _T192) - *(_T193 + 0) = _T190 - branch _L64 -_L65: - _T194 = *(_T7 + 4) - _T195 = *(_T7 + 4) - _T196 = 1 - _T197 = (_T195 - _T196) - *(_T7 + 4) = _T197 -_L69: - _T198 = *(_T7 + 4) - _T199 = 0 - _T200 = (_T198 > _T199) - if (_T200 == 0) branch _L70 - _T203 = *(_T7 + 12) - _T204 = *(_T7 + 4) - parm _T203 - parm _T204 - _T205 = *(_T203 + 0) - _T206 = *(_T205 + 20) - _T207 = call _T206 - _T201 = _T207 - _T208 = *(_T7 + 4) - _T209 = *(_T7 + 4) - _T210 = 1 - _T211 = (_T209 - _T210) - *(_T7 + 4) = _T211 - _T212 = *(_T7 + 8) - _T213 = *(_T7 + 4) - _T214 = *(_T212 - 4) - _T215 = (_T213 < _T214) - if (_T215 == 0) branch _L71 - _T216 = 0 - _T217 = (_T213 < _T216) - if (_T217 == 0) branch _L72 -_L71: - _T218 = "Decaf runtime error: Array subscript out of bounds\n" - parm _T218 - call _PrintString - call _Halt -_L72: - _T219 = 4 - _T220 = (_T213 * _T219) - _T221 = (_T212 + _T220) - _T222 = *(_T221 + 0) - _T202 = _T222 - _T223 = *(_T7 + 8) - _T224 = *(_T7 + 4) - _T225 = *(_T223 - 4) - _T226 = (_T224 < _T225) - if (_T226 == 0) branch _L73 - _T227 = 0 - _T228 = (_T224 < _T227) - if (_T228 == 0) branch _L74 -_L73: - _T229 = "Decaf runtime error: Array subscript out of bounds\n" - parm _T229 - call _PrintString - call _Halt -_L74: - _T230 = 4 - _T231 = (_T224 * _T230) - _T232 = (_T223 + _T231) - _T233 = *(_T232 + 0) - _T234 = *(_T7 + 8) - _T235 = *(_T234 - 4) - _T236 = (_T201 < _T235) - if (_T236 == 0) branch _L75 - _T237 = 0 - _T238 = (_T201 < _T237) - if (_T238 == 0) branch _L76 -_L75: - _T239 = "Decaf runtime error: Array subscript out of bounds\n" - parm _T239 - call _PrintString - call _Halt -_L76: - _T240 = 4 - _T241 = (_T201 * _T240) - _T242 = (_T234 + _T241) - _T243 = *(_T242 + 0) - _T244 = 4 - _T245 = (_T224 * _T244) - _T246 = (_T223 + _T245) - *(_T246 + 0) = _T243 - _T247 = *(_T7 + 8) - _T248 = *(_T247 - 4) - _T249 = (_T201 < _T248) - if (_T249 == 0) branch _L77 - _T250 = 0 - _T251 = (_T201 < _T250) - if (_T251 == 0) branch _L78 -_L77: - _T252 = "Decaf runtime error: Array subscript out of bounds\n" - parm _T252 - call _PrintString - call _Halt -_L78: - _T253 = 4 - _T254 = (_T201 * _T253) - _T255 = (_T247 + _T254) - _T256 = *(_T255 + 0) - _T257 = 4 - _T258 = (_T201 * _T257) - _T259 = (_T247 + _T258) - *(_T259 + 0) = _T202 - branch _L69 -_L70: -} - -FUNCTION(_Deck.GetCard) { -memo '_T8:4' -_Deck.GetCard: - _T261 = *(_T8 + 4) - _T262 = 52 - _T263 = (_T261 >= _T262) - if (_T263 == 0) branch _L79 - _T264 = 0 - return _T264 -_L79: - _T265 = *(_T8 + 8) - _T266 = *(_T8 + 4) - _T267 = *(_T265 - 4) - _T268 = (_T266 < _T267) - if (_T268 == 0) branch _L80 - _T269 = 0 - _T270 = (_T266 < _T269) - if (_T270 == 0) branch _L81 -_L80: - _T271 = "Decaf runtime error: Array subscript out of bounds\n" - parm _T271 - call _PrintString - call _Halt -_L81: - _T272 = 4 - _T273 = (_T266 * _T272) - _T274 = (_T265 + _T273) - _T275 = *(_T274 + 0) - _T260 = _T275 - _T276 = *(_T8 + 4) - _T277 = *(_T8 + 4) - _T278 = 1 - _T279 = (_T277 + _T278) - *(_T8 + 4) = _T279 - return _T260 -} - -FUNCTION(_BJDeck.Init) { -memo '_T9:4 _T10:8' -_BJDeck.Init: - _T281 = *(_T9 + 4) - _T282 = 8 - _T283 = 0 - _T284 = (_T282 < _T283) - if (_T284 == 0) branch _L82 - _T285 = "Decaf runtime error: Cannot create negative-sized array\n" - parm _T285 - call _PrintString - call _Halt -_L82: - _T286 = 4 - _T287 = (_T286 * _T282) - _T288 = (_T286 + _T287) - parm _T288 - _T289 = call _Alloc - *(_T289 + 0) = _T282 - _T290 = 0 - _T289 = (_T289 + _T288) -_L83: - _T288 = (_T288 - _T286) - if (_T288 == 0) branch _L84 - _T289 = (_T289 - _T286) - *(_T289 + 0) = _T290 - branch _L83 -_L84: - *(_T9 + 4) = _T289 - _T291 = 0 - _T280 = _T291 - branch _L85 -_L86: - _T292 = 1 - _T293 = (_T280 + _T292) - _T280 = _T293 -_L85: - _T294 = 8 - _T295 = (_T280 < _T294) - if (_T295 == 0) branch _L87 - _T296 = *(_T9 + 4) - _T297 = *(_T296 - 4) - _T298 = (_T280 < _T297) - if (_T298 == 0) branch _L88 - _T299 = 0 - _T300 = (_T280 < _T299) - if (_T300 == 0) branch _L89 -_L88: - _T301 = "Decaf runtime error: Array subscript out of bounds\n" - parm _T301 - call _PrintString - call _Halt -_L89: - _T302 = 4 - _T303 = (_T280 * _T302) - _T304 = (_T296 + _T303) - _T305 = *(_T304 + 0) - _T306 = call _Deck_New - _T307 = 4 - _T308 = (_T280 * _T307) - _T309 = (_T296 + _T308) - *(_T309 + 0) = _T306 - _T310 = *(_T9 + 4) - _T311 = *(_T310 - 4) - _T312 = (_T280 < _T311) - if (_T312 == 0) branch _L90 - _T313 = 0 - _T314 = (_T280 < _T313) - if (_T314 == 0) branch _L91 -_L90: - _T315 = "Decaf runtime error: Array subscript out of bounds\n" - parm _T315 - call _PrintString - call _Halt -_L91: - _T316 = 4 - _T317 = (_T280 * _T316) - _T318 = (_T310 + _T317) - _T319 = *(_T318 + 0) - parm _T319 - parm _T10 - _T320 = *(_T319 + 0) - _T321 = *(_T320 + 12) - call _T321 - branch _L86 -_L87: - _T322 = *(_T9 + 12) - *(_T9 + 12) = _T10 -} - -FUNCTION(_BJDeck.DealCard) { -memo '_T11:4' -_BJDeck.DealCard: - _T324 = 0 - _T323 = _T324 - _T325 = *(_T11 + 8) - _T326 = 8 - _T327 = 52 - _T328 = (_T326 * _T327) - _T329 = (_T325 >= _T328) - if (_T329 == 0) branch _L92 - _T330 = 11 - return _T330 -_L92: -_L93: - _T331 = 0 - _T332 = (_T323 == _T331) - if (_T332 == 0) branch _L94 - _T334 = *(_T11 + 12) - _T335 = 8 - parm _T334 - parm _T335 - _T336 = *(_T334 + 0) - _T337 = *(_T336 + 20) - _T338 = call _T337 - _T333 = _T338 - _T339 = *(_T11 + 4) - _T340 = *(_T339 - 4) - _T341 = (_T333 < _T340) - if (_T341 == 0) branch _L95 - _T342 = 0 - _T343 = (_T333 < _T342) - if (_T343 == 0) branch _L96 -_L95: - _T344 = "Decaf runtime error: Array subscript out of bounds\n" - parm _T344 - call _PrintString - call _Halt -_L96: - _T345 = 4 - _T346 = (_T333 * _T345) - _T347 = (_T339 + _T346) - _T348 = *(_T347 + 0) - parm _T348 - _T349 = *(_T348 + 0) - _T350 = *(_T349 + 20) - _T351 = call _T350 - _T323 = _T351 - branch _L93 -_L94: - _T352 = 10 - _T353 = (_T323 > _T352) - if (_T353 == 0) branch _L97 - _T354 = 10 - _T323 = _T354 - branch _L98 -_L97: - _T355 = 1 - _T356 = (_T323 == _T355) - if (_T356 == 0) branch _L99 - _T357 = 11 - _T323 = _T357 -_L99: -_L98: - _T358 = *(_T11 + 8) - _T359 = *(_T11 + 8) - _T360 = 1 - _T361 = (_T359 + _T360) - *(_T11 + 8) = _T361 - return _T323 -} - -FUNCTION(_BJDeck.Shuffle) { -memo '_T12:4' -_BJDeck.Shuffle: - _T363 = "Shuffling..." - parm _T363 - call _PrintString - _T364 = 0 - _T362 = _T364 - branch _L100 -_L101: - _T365 = 1 - _T366 = (_T362 + _T365) - _T362 = _T366 -_L100: - _T367 = 8 - _T368 = (_T362 < _T367) - if (_T368 == 0) branch _L102 - _T369 = *(_T12 + 4) - _T370 = *(_T369 - 4) - _T371 = (_T362 < _T370) - if (_T371 == 0) branch _L103 - _T372 = 0 - _T373 = (_T362 < _T372) - if (_T373 == 0) branch _L104 -_L103: - _T374 = "Decaf runtime error: Array subscript out of bounds\n" - parm _T374 - call _PrintString - call _Halt -_L104: - _T375 = 4 - _T376 = (_T362 * _T375) - _T377 = (_T369 + _T376) - _T378 = *(_T377 + 0) - parm _T378 - _T379 = *(_T378 + 0) - _T380 = *(_T379 + 16) - call _T380 - branch _L101 -_L102: - _T381 = *(_T12 + 8) - _T382 = 0 - *(_T12 + 8) = _T382 - _T383 = "done.\n" - parm _T383 - call _PrintString -} - -FUNCTION(_BJDeck.NumCardsRemaining) { -memo '_T13:4' -_BJDeck.NumCardsRemaining: - _T384 = 8 - _T385 = 52 - _T386 = (_T384 * _T385) - _T387 = *(_T13 + 8) - _T388 = (_T386 - _T387) - return _T388 -} - -FUNCTION(_Player.Init) { -memo '_T14:4 _T15:8' -_Player.Init: - _T389 = *(_T14 + 20) - _T390 = 1000 - *(_T14 + 20) = _T390 - _T391 = "What is the name of player #" - parm _T391 - call _PrintString - parm _T15 - call _PrintInt - _T392 = "? " - parm _T392 - call _PrintString - _T393 = *(_T14 + 24) - _T394 = call _ReadLine - *(_T14 + 24) = _T394 -} - -FUNCTION(_Player.Hit) { -memo '_T16:4 _T17:8' -_Player.Hit: - parm _T17 - _T396 = *(_T17 + 0) - _T397 = *(_T396 + 16) - _T398 = call _T397 - _T395 = _T398 - _T399 = *(_T16 + 24) - parm _T399 - call _PrintString - _T400 = " was dealt a " - parm _T400 - call _PrintString - parm _T395 - call _PrintInt - _T401 = ".\n" - parm _T401 - call _PrintString - _T402 = *(_T16 + 4) - _T403 = *(_T16 + 4) - _T404 = (_T403 + _T395) - *(_T16 + 4) = _T404 - _T405 = *(_T16 + 12) - _T406 = *(_T16 + 12) - _T407 = 1 - _T408 = (_T406 + _T407) - *(_T16 + 12) = _T408 - _T409 = 11 - _T410 = (_T395 == _T409) - if (_T410 == 0) branch _L105 - _T411 = *(_T16 + 8) - _T412 = *(_T16 + 8) - _T413 = 1 - _T414 = (_T412 + _T413) - *(_T16 + 8) = _T414 -_L105: -_L106: - _T415 = *(_T16 + 4) - _T416 = 21 - _T417 = (_T415 > _T416) - _T418 = *(_T16 + 8) - _T419 = 0 - _T420 = (_T418 > _T419) - _T421 = (_T417 && _T420) - if (_T421 == 0) branch _L107 - _T422 = *(_T16 + 4) - _T423 = *(_T16 + 4) - _T424 = 10 - _T425 = (_T423 - _T424) - *(_T16 + 4) = _T425 - _T426 = *(_T16 + 8) - _T427 = *(_T16 + 8) - _T428 = 1 - _T429 = (_T427 - _T428) - *(_T16 + 8) = _T429 - branch _L106 -_L107: -} - -FUNCTION(_Player.DoubleDown) { -memo '_T18:4 _T19:8' -_Player.DoubleDown: - _T431 = *(_T18 + 4) - _T432 = 10 - _T433 = (_T431 != _T432) - _T434 = *(_T18 + 4) - _T435 = 11 - _T436 = (_T434 != _T435) - _T437 = (_T433 && _T436) - if (_T437 == 0) branch _L108 - _T438 = 0 - return _T438 -_L108: - _T439 = "Would you like to double down?" - parm _T18 - parm _T439 - _T440 = *(_T18 + 0) - _T441 = *(_T440 + 48) - _T442 = call _T441 - if (_T442 == 0) branch _L109 - _T443 = *(_T18 + 16) - _T444 = *(_T18 + 16) - _T445 = 2 - _T446 = (_T444 * _T445) - *(_T18 + 16) = _T446 - parm _T18 - parm _T19 - _T447 = *(_T18 + 0) - _T448 = *(_T447 + 16) - call _T448 - _T449 = *(_T18 + 24) - parm _T449 - call _PrintString - _T450 = ", your total is " - parm _T450 - call _PrintString - _T451 = *(_T18 + 4) - parm _T451 - call _PrintInt - _T452 = ".\n" - parm _T452 - call _PrintString - _T453 = 1 - return _T453 - branch _L110 -_L109: - _T454 = 0 - return _T454 -_L110: -} - -FUNCTION(_Player.TakeTurn) { -memo '_T20:4 _T21:8' -_Player.TakeTurn: - _T456 = "\n" - parm _T456 - call _PrintString - _T457 = *(_T20 + 24) - parm _T457 - call _PrintString - _T458 = "'s turn.\n" - parm _T458 - call _PrintString - _T459 = *(_T20 + 4) - _T460 = 0 - *(_T20 + 4) = _T460 - _T461 = *(_T20 + 8) - _T462 = 0 - *(_T20 + 8) = _T462 - _T463 = *(_T20 + 12) - _T464 = 0 - *(_T20 + 12) = _T464 - parm _T20 - parm _T21 - _T465 = *(_T20 + 0) - _T466 = *(_T465 + 16) - call _T466 - parm _T20 - parm _T21 - _T467 = *(_T20 + 0) - _T468 = *(_T467 + 16) - call _T468 - parm _T20 - parm _T21 - _T469 = *(_T20 + 0) - _T470 = *(_T469 + 20) - _T471 = call _T470 - _T472 = ! _T471 - if (_T472 == 0) branch _L111 - _T473 = 1 - _T455 = _T473 -_L112: - _T474 = *(_T20 + 4) - _T475 = 21 - _T476 = (_T474 <= _T475) - _T477 = (_T476 && _T455) - if (_T477 == 0) branch _L113 - _T478 = *(_T20 + 24) - parm _T478 - call _PrintString - _T479 = ", your total is " - parm _T479 - call _PrintString - _T480 = *(_T20 + 4) - parm _T480 - call _PrintInt - _T481 = ".\n" - parm _T481 - call _PrintString - _T482 = "Would you like a hit?" - parm _T20 - parm _T482 - _T483 = *(_T20 + 0) - _T484 = *(_T483 + 48) - _T485 = call _T484 - _T455 = _T485 - if (_T455 == 0) branch _L114 - parm _T20 - parm _T21 - _T486 = *(_T20 + 0) - _T487 = *(_T486 + 16) - call _T487 -_L114: - branch _L112 -_L113: -_L111: - _T488 = *(_T20 + 4) - _T489 = 21 - _T490 = (_T488 > _T489) - if (_T490 == 0) branch _L115 - _T491 = *(_T20 + 24) - parm _T491 - call _PrintString - _T492 = " busts with the big " - parm _T492 - call _PrintString - _T493 = *(_T20 + 4) - parm _T493 - call _PrintInt - _T494 = "!\n" - parm _T494 - call _PrintString - branch _L116 -_L115: - _T495 = *(_T20 + 24) - parm _T495 - call _PrintString - _T496 = " stays at " - parm _T496 - call _PrintString - _T497 = *(_T20 + 4) - parm _T497 - call _PrintInt - _T498 = ".\n" - parm _T498 - call _PrintString -_L116: -} - -FUNCTION(_Player.HasMoney) { -memo '_T22:4' -_Player.HasMoney: - _T499 = *(_T22 + 20) - _T500 = 0 - _T501 = (_T499 > _T500) - return _T501 -} - -FUNCTION(_Player.PrintMoney) { -memo '_T23:4' -_Player.PrintMoney: - _T502 = *(_T23 + 24) - parm _T502 - call _PrintString - _T503 = ", you have $" - parm _T503 - call _PrintString - _T504 = *(_T23 + 20) - parm _T504 - call _PrintInt - _T505 = ".\n" - parm _T505 - call _PrintString -} - -FUNCTION(_Player.PlaceBet) { -memo '_T24:4' -_Player.PlaceBet: - _T506 = *(_T24 + 16) - _T507 = 0 - *(_T24 + 16) = _T507 - parm _T24 - _T508 = *(_T24 + 0) - _T509 = *(_T508 + 32) - call _T509 -_L117: - _T510 = *(_T24 + 16) - _T511 = 0 - _T512 = (_T510 <= _T511) - _T513 = *(_T24 + 16) - _T514 = *(_T24 + 20) - _T515 = (_T513 > _T514) - _T516 = (_T512 || _T515) - if (_T516 == 0) branch _L118 - _T517 = "How much would you like to bet? " - parm _T517 - call _PrintString - _T518 = *(_T24 + 16) - _T519 = call _ReadInteger - *(_T24 + 16) = _T519 - branch _L117 -_L118: -} - -FUNCTION(_Player.GetTotal) { -memo '_T25:4' -_Player.GetTotal: - _T520 = *(_T25 + 4) - return _T520 -} - -FUNCTION(_Player.Resolve) { -memo '_T26:4 _T27:8' -_Player.Resolve: - _T523 = 0 - _T521 = _T523 - _T524 = 0 - _T522 = _T524 - _T525 = *(_T26 + 4) - _T526 = 21 - _T527 = (_T525 == _T526) - _T528 = *(_T26 + 12) - _T529 = 2 - _T530 = (_T528 == _T529) - _T531 = (_T527 && _T530) - if (_T531 == 0) branch _L119 - _T532 = 2 - _T521 = _T532 - branch _L120 -_L119: - _T533 = *(_T26 + 4) - _T534 = 21 - _T535 = (_T533 > _T534) - if (_T535 == 0) branch _L121 - _T536 = 1 - _T522 = _T536 - branch _L122 -_L121: - _T537 = 21 - _T538 = (_T27 > _T537) - if (_T538 == 0) branch _L123 - _T539 = 1 - _T521 = _T539 - branch _L124 -_L123: - _T540 = *(_T26 + 4) - _T541 = (_T540 > _T27) - if (_T541 == 0) branch _L125 - _T542 = 1 - _T521 = _T542 - branch _L126 -_L125: - _T543 = *(_T26 + 4) - _T544 = (_T27 > _T543) - if (_T544 == 0) branch _L127 - _T545 = 1 - _T522 = _T545 -_L127: -_L126: -_L124: -_L122: -_L120: - _T546 = 1 - _T547 = (_T521 >= _T546) - if (_T547 == 0) branch _L128 - _T548 = *(_T26 + 24) - parm _T548 - call _PrintString - _T549 = ", you won $" - parm _T549 - call _PrintString - _T550 = *(_T26 + 16) - parm _T550 - call _PrintInt - _T551 = ".\n" - parm _T551 - call _PrintString - branch _L129 -_L128: - _T552 = 1 - _T553 = (_T522 >= _T552) - if (_T553 == 0) branch _L130 - _T554 = *(_T26 + 24) - parm _T554 - call _PrintString - _T555 = ", you lost $" - parm _T555 - call _PrintString - _T556 = *(_T26 + 16) - parm _T556 - call _PrintInt - _T557 = ".\n" - parm _T557 - call _PrintString - branch _L131 -_L130: - _T558 = *(_T26 + 24) - parm _T558 - call _PrintString - _T559 = ", you push!\n" - parm _T559 - call _PrintString -_L131: -_L129: - _T560 = *(_T26 + 16) - _T561 = (_T521 * _T560) - _T521 = _T561 - _T562 = *(_T26 + 16) - _T563 = (_T522 * _T562) - _T522 = _T563 - _T564 = *(_T26 + 20) - _T565 = *(_T26 + 20) - _T566 = (_T565 + _T521) - _T567 = (_T566 - _T522) - *(_T26 + 20) = _T567 -} - -FUNCTION(_Player.GetYesOrNo) { -memo '_T28:4 _T29:8' -_Player.GetYesOrNo: - parm _T29 - call _PrintString - _T568 = " (0=No/1=Yes) " - parm _T568 - call _PrintString - _T569 = call _ReadInteger - _T570 = 0 - _T571 = (_T569 != _T570) - return _T571 -} - -FUNCTION(_Dealer.Init) { -memo '_T30:4 _T31:8' -_Dealer.Init: - _T573 = *(_T30 + 4) - _T574 = 0 - *(_T30 + 4) = _T574 - _T575 = *(_T30 + 8) - _T576 = 0 - *(_T30 + 8) = _T576 - _T577 = *(_T30 + 12) - _T578 = 0 - *(_T30 + 12) = _T578 - _T579 = "Dealer" - _T572 = _T579 - _T580 = *(_T30 + 24) - *(_T30 + 24) = _T572 -} - -FUNCTION(_Dealer.TakeTurn) { -memo '_T32:4 _T33:8' -_Dealer.TakeTurn: - _T581 = "\n" - parm _T581 - call _PrintString - _T582 = *(_T32 + 24) - parm _T582 - call _PrintString - _T583 = "'s turn.\n" - parm _T583 - call _PrintString -_L132: - _T584 = *(_T32 + 4) - _T585 = 16 - _T586 = (_T584 <= _T585) - if (_T586 == 0) branch _L133 - parm _T32 - parm _T33 - _T587 = *(_T32 + 0) - _T588 = *(_T587 + 16) - call _T588 - branch _L132 -_L133: - _T589 = *(_T32 + 4) - _T590 = 21 - _T591 = (_T589 > _T590) - if (_T591 == 0) branch _L134 - _T592 = *(_T32 + 24) - parm _T592 - call _PrintString - _T593 = " busts with the big " - parm _T593 - call _PrintString - _T594 = *(_T32 + 4) - parm _T594 - call _PrintInt - _T595 = "!\n" - parm _T595 - call _PrintString - branch _L135 -_L134: - _T596 = *(_T32 + 24) - parm _T596 - call _PrintString - _T597 = " stays at " - parm _T597 - call _PrintString - _T598 = *(_T32 + 4) - parm _T598 - call _PrintInt - _T599 = ".\n" - parm _T599 - call _PrintString -_L135: -} - -FUNCTION(_House.SetupGame) { -memo '_T34:4' -_House.SetupGame: - _T600 = "\nWelcome to CS143 BlackJack!\n" - parm _T600 - call _PrintString - _T601 = "---------------------------\n" - parm _T601 - call _PrintString - _T603 = call _rndModule_New - _T602 = _T603 - _T604 = "Please enter a random number seed: " - parm _T604 - call _PrintString - _T605 = call _ReadInteger - parm _T602 - parm _T605 - _T606 = *(_T602 + 0) - _T607 = *(_T606 + 12) - call _T607 - _T608 = *(_T34 + 12) - _T609 = call _BJDeck_New - *(_T34 + 12) = _T609 - _T610 = *(_T34 + 8) - _T611 = call _Dealer_New - *(_T34 + 8) = _T611 - _T612 = *(_T34 + 12) - parm _T612 - parm _T602 - _T613 = *(_T612 + 0) - _T614 = *(_T613 + 12) - call _T614 - _T615 = *(_T34 + 12) - parm _T615 - _T616 = *(_T615 + 0) - _T617 = *(_T616 + 20) - call _T617 -} - -FUNCTION(_House.SetupPlayers) { -memo '_T35:4' -_House.SetupPlayers: - _T620 = "How many players do we have today? " - parm _T620 - call _PrintString - _T621 = call _ReadInteger - _T619 = _T621 - _T622 = *(_T35 + 4) - _T623 = 0 - _T624 = (_T619 < _T623) - if (_T624 == 0) branch _L136 - _T625 = "Decaf runtime error: Cannot create negative-sized array\n" - parm _T625 - call _PrintString - call _Halt -_L136: - _T626 = 4 - _T627 = (_T626 * _T619) - _T628 = (_T626 + _T627) - parm _T628 - _T629 = call _Alloc - *(_T629 + 0) = _T619 - _T630 = 0 - _T629 = (_T629 + _T628) -_L137: - _T628 = (_T628 - _T626) - if (_T628 == 0) branch _L138 - _T629 = (_T629 - _T626) - *(_T629 + 0) = _T630 - branch _L137 -_L138: - *(_T35 + 4) = _T629 - _T631 = 0 - _T618 = _T631 - branch _L139 -_L140: - _T632 = 1 - _T633 = (_T618 + _T632) - _T618 = _T633 -_L139: - _T634 = *(_T35 + 4) - _T635 = *(_T634 - 4) - _T636 = (_T618 < _T635) - if (_T636 == 0) branch _L141 - _T637 = *(_T35 + 4) - _T638 = *(_T637 - 4) - _T639 = (_T618 < _T638) - if (_T639 == 0) branch _L142 - _T640 = 0 - _T641 = (_T618 < _T640) - if (_T641 == 0) branch _L143 -_L142: - _T642 = "Decaf runtime error: Array subscript out of bounds\n" - parm _T642 - call _PrintString - call _Halt -_L143: - _T643 = 4 - _T644 = (_T618 * _T643) - _T645 = (_T637 + _T644) - _T646 = *(_T645 + 0) - _T647 = call _Player_New - _T648 = 4 - _T649 = (_T618 * _T648) - _T650 = (_T637 + _T649) - *(_T650 + 0) = _T647 - _T651 = *(_T35 + 4) - _T652 = *(_T651 - 4) - _T653 = (_T618 < _T652) - if (_T653 == 0) branch _L144 - _T654 = 0 - _T655 = (_T618 < _T654) - if (_T655 == 0) branch _L145 -_L144: - _T656 = "Decaf runtime error: Array subscript out of bounds\n" - parm _T656 - call _PrintString - call _Halt -_L145: - _T657 = 4 - _T658 = (_T618 * _T657) - _T659 = (_T651 + _T658) - _T660 = *(_T659 + 0) - _T661 = 1 - _T662 = (_T618 + _T661) - parm _T660 - parm _T662 - _T663 = *(_T660 + 0) - _T664 = *(_T663 + 12) - call _T664 - branch _L140 -_L141: -} - -FUNCTION(_House.TakeAllBets) { -memo '_T36:4' -_House.TakeAllBets: - _T666 = "\nFirst, let's take bets.\n" - parm _T666 - call _PrintString - _T667 = 0 - _T665 = _T667 - branch _L146 -_L147: - _T668 = 1 - _T669 = (_T665 + _T668) - _T665 = _T669 -_L146: - _T670 = *(_T36 + 4) - _T671 = *(_T670 - 4) - _T672 = (_T665 < _T671) - if (_T672 == 0) branch _L148 - _T673 = *(_T36 + 4) - _T674 = *(_T673 - 4) - _T675 = (_T665 < _T674) - if (_T675 == 0) branch _L149 - _T676 = 0 - _T677 = (_T665 < _T676) - if (_T677 == 0) branch _L150 -_L149: - _T678 = "Decaf runtime error: Array subscript out of bounds\n" - parm _T678 - call _PrintString - call _Halt -_L150: - _T679 = 4 - _T680 = (_T665 * _T679) - _T681 = (_T673 + _T680) - _T682 = *(_T681 + 0) - parm _T682 - _T683 = *(_T682 + 0) - _T684 = *(_T683 + 28) - _T685 = call _T684 - if (_T685 == 0) branch _L151 - _T686 = *(_T36 + 4) - _T687 = *(_T686 - 4) - _T688 = (_T665 < _T687) - if (_T688 == 0) branch _L152 - _T689 = 0 - _T690 = (_T665 < _T689) - if (_T690 == 0) branch _L153 -_L152: - _T691 = "Decaf runtime error: Array subscript out of bounds\n" - parm _T691 - call _PrintString - call _Halt -_L153: - _T692 = 4 - _T693 = (_T665 * _T692) - _T694 = (_T686 + _T693) - _T695 = *(_T694 + 0) - parm _T695 - _T696 = *(_T695 + 0) - _T697 = *(_T696 + 36) - call _T697 -_L151: - branch _L147 -_L148: -} - -FUNCTION(_House.TakeAllTurns) { -memo '_T37:4' -_House.TakeAllTurns: - _T699 = 0 - _T698 = _T699 - branch _L154 -_L155: - _T700 = 1 - _T701 = (_T698 + _T700) - _T698 = _T701 -_L154: - _T702 = *(_T37 + 4) - _T703 = *(_T702 - 4) - _T704 = (_T698 < _T703) - if (_T704 == 0) branch _L156 - _T705 = *(_T37 + 4) - _T706 = *(_T705 - 4) - _T707 = (_T698 < _T706) - if (_T707 == 0) branch _L157 - _T708 = 0 - _T709 = (_T698 < _T708) - if (_T709 == 0) branch _L158 -_L157: - _T710 = "Decaf runtime error: Array subscript out of bounds\n" - parm _T710 - call _PrintString - call _Halt -_L158: - _T711 = 4 - _T712 = (_T698 * _T711) - _T713 = (_T705 + _T712) - _T714 = *(_T713 + 0) - parm _T714 - _T715 = *(_T714 + 0) - _T716 = *(_T715 + 28) - _T717 = call _T716 - if (_T717 == 0) branch _L159 - _T718 = *(_T37 + 4) - _T719 = *(_T718 - 4) - _T720 = (_T698 < _T719) - if (_T720 == 0) branch _L160 - _T721 = 0 - _T722 = (_T698 < _T721) - if (_T722 == 0) branch _L161 -_L160: - _T723 = "Decaf runtime error: Array subscript out of bounds\n" - parm _T723 - call _PrintString - call _Halt -_L161: - _T724 = 4 - _T725 = (_T698 * _T724) - _T726 = (_T718 + _T725) - _T727 = *(_T726 + 0) - _T728 = *(_T37 + 12) - parm _T727 - parm _T728 - _T729 = *(_T727 + 0) - _T730 = *(_T729 + 24) - call _T730 -_L159: - branch _L155 -_L156: -} - -FUNCTION(_House.ResolveAllPlayers) { -memo '_T38:4' -_House.ResolveAllPlayers: - _T732 = "\nTime to resolve bets.\n" - parm _T732 - call _PrintString - _T733 = 0 - _T731 = _T733 - branch _L162 -_L163: - _T734 = 1 - _T735 = (_T731 + _T734) - _T731 = _T735 -_L162: - _T736 = *(_T38 + 4) - _T737 = *(_T736 - 4) - _T738 = (_T731 < _T737) - if (_T738 == 0) branch _L164 - _T739 = *(_T38 + 4) - _T740 = *(_T739 - 4) - _T741 = (_T731 < _T740) - if (_T741 == 0) branch _L165 - _T742 = 0 - _T743 = (_T731 < _T742) - if (_T743 == 0) branch _L166 -_L165: - _T744 = "Decaf runtime error: Array subscript out of bounds\n" - parm _T744 - call _PrintString - call _Halt -_L166: - _T745 = 4 - _T746 = (_T731 * _T745) - _T747 = (_T739 + _T746) - _T748 = *(_T747 + 0) - parm _T748 - _T749 = *(_T748 + 0) - _T750 = *(_T749 + 28) - _T751 = call _T750 - if (_T751 == 0) branch _L167 - _T752 = *(_T38 + 4) - _T753 = *(_T752 - 4) - _T754 = (_T731 < _T753) - if (_T754 == 0) branch _L168 - _T755 = 0 - _T756 = (_T731 < _T755) - if (_T756 == 0) branch _L169 -_L168: - _T757 = "Decaf runtime error: Array subscript out of bounds\n" - parm _T757 - call _PrintString - call _Halt -_L169: - _T758 = 4 - _T759 = (_T731 * _T758) - _T760 = (_T752 + _T759) - _T761 = *(_T760 + 0) - _T762 = *(_T38 + 8) - parm _T762 - _T763 = *(_T762 + 0) - _T764 = *(_T763 + 40) - _T765 = call _T764 - parm _T761 - parm _T765 - _T766 = *(_T761 + 0) - _T767 = *(_T766 + 44) - call _T767 -_L167: - branch _L163 -_L164: -} - -FUNCTION(_House.PrintAllMoney) { -memo '_T39:4' -_House.PrintAllMoney: - _T769 = 0 - _T768 = _T769 - branch _L170 -_L171: - _T770 = 1 - _T771 = (_T768 + _T770) - _T768 = _T771 -_L170: - _T772 = *(_T39 + 4) - _T773 = *(_T772 - 4) - _T774 = (_T768 < _T773) - if (_T774 == 0) branch _L172 - _T775 = *(_T39 + 4) - _T776 = *(_T775 - 4) - _T777 = (_T768 < _T776) - if (_T777 == 0) branch _L173 - _T778 = 0 - _T779 = (_T768 < _T778) - if (_T779 == 0) branch _L174 -_L173: - _T780 = "Decaf runtime error: Array subscript out of bounds\n" - parm _T780 - call _PrintString - call _Halt -_L174: - _T781 = 4 - _T782 = (_T768 * _T781) - _T783 = (_T775 + _T782) - _T784 = *(_T783 + 0) - parm _T784 - _T785 = *(_T784 + 0) - _T786 = *(_T785 + 32) - call _T786 - branch _L171 -_L172: -} - -FUNCTION(_House.PlayOneGame) { -memo '_T40:4' -_House.PlayOneGame: - _T787 = *(_T40 + 12) - parm _T787 - _T788 = *(_T787 + 0) - _T789 = *(_T788 + 24) - _T790 = call _T789 - _T791 = 26 - _T792 = (_T790 < _T791) - if (_T792 == 0) branch _L175 - _T793 = *(_T40 + 12) - parm _T793 - _T794 = *(_T793 + 0) - _T795 = *(_T794 + 20) - call _T795 -_L175: - parm _T40 - _T796 = *(_T40 + 0) - _T797 = *(_T796 + 20) - call _T797 - _T798 = "\nDealer starts. " - parm _T798 - call _PrintString - _T799 = *(_T40 + 8) - _T800 = 0 - parm _T799 - parm _T800 - _T801 = *(_T799 + 0) - _T802 = *(_T801 + 12) - call _T802 - _T803 = *(_T40 + 8) - _T804 = *(_T40 + 12) - parm _T803 - parm _T804 - _T805 = *(_T803 + 0) - _T806 = *(_T805 + 16) - call _T806 - parm _T40 - _T807 = *(_T40 + 0) - _T808 = *(_T807 + 24) - call _T808 - _T809 = *(_T40 + 8) - _T810 = *(_T40 + 12) - parm _T809 - parm _T810 - _T811 = *(_T809 + 0) - _T812 = *(_T811 + 24) - call _T812 - parm _T40 - _T813 = *(_T40 + 0) - _T814 = *(_T813 + 28) - call _T814 -} - -FUNCTION(main) { -memo '' -main: - _T816 = 1 - _T815 = _T816 - _T818 = call _House_New - _T817 = _T818 - parm _T817 - _T819 = *(_T817 + 0) - _T820 = *(_T819 + 12) - call _T820 - parm _T817 - _T821 = *(_T817 + 0) - _T822 = *(_T821 + 16) - call _T822 -_L176: - if (_T815 == 0) branch _L177 - parm _T817 - _T823 = *(_T817 + 0) - _T824 = *(_T823 + 36) - call _T824 - _T825 = "\nDo you want to play another hand?" - parm _T825 - _T826 = call _Main.GetYesOrNo - _T815 = _T826 - branch _L176 -_L177: - parm _T817 - _T827 = *(_T817 + 0) - _T828 = *(_T827 + 32) - call _T828 - _T829 = "Thank you for playing...come again soon.\n" - parm _T829 - call _PrintString - _T830 = "\nCS143 BlackJack Copyright (c) 1999 by Peter Mork.\n" - parm _T830 - call _PrintString - _T831 = "(2001 mods by jdz)\n" - parm _T831 - call _PrintString -} - -FUNCTION(_Main.GetYesOrNo) { -memo '_T41:4' -_Main.GetYesOrNo: - parm _T41 - call _PrintString - _T832 = " (0=No/1=Yes) " - parm _T832 - call _PrintString - _T833 = call _ReadInteger - _T834 = 0 - _T835 = (_T833 != _T834) - return _T835 -} - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/a.txt" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/a.txt" deleted file mode 100644 index cdb602ae4..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/a.txt" +++ /dev/null @@ -1,347 +0,0 @@ -class rndModule { - - int seed; - - void Init(int seedVal) { - seed = seedVal; - } - - int Random() { - seed = (15625 * (seed % 10000) + 22221) % 65536; - return seed; - } - - int RndInt(int max) { - return (Random() % max); - } -} - -class Deck { - - int current; - int[] cards; - class rndModule rnd; - - void Init(class rndModule rnd) { - cards = new int[52]; - this.rnd = rnd; - } - - void Shuffle() { - for (current = 1; current <= 52; current = current + 1) { - cards[current-1] = current % 13; - } - current = current - 1; - while (current > 0) { - int r; - int temp; - r = rnd.RndInt(current); - current = current - 1; - temp = cards[current]; - cards[current] = cards[r]; - cards[r] = temp; - } - } - - int GetCard() { - int result; - if (current >= 52) - return 0; - result = cards[current]; - current = current + 1; - return result; - } -} - -class BJDeck { - - class Deck[] decks; - int numdealt; - class rndModule rnd; - - void Init(class rndModule rnd) { - int i; - decks = new class Deck[8]; - for (i = 0; i < 8; i = i + 1) { - decks[i] = new Deck(); - decks[i].Init(rnd); - } - this.rnd = rnd; - } - - int DealCard() { - int c; - c = 0; - if (numdealt >= 8*52) return 11; - while (c == 0) { - int d; - d = rnd.RndInt(8); - c = decks[d].GetCard(); - } - if (c > 10) - c = 10; - else if (c == 1) - c = 11; - numdealt = numdealt + 1; - return c; - } - - void Shuffle() { - int i; - - Print("Shuffling..."); - for (i = 0; i < 8; i = i + 1) - decks[i].Shuffle(); - - numdealt = 0; - Print("done.\n"); - } - - int NumCardsRemaining() - { - return 8*52 - numdealt; - } -} - -class Player { - int total; - int aces; - int numcards; - int bet; - int money; - string name; - - void Init(int num) { - money = 1000; - Print("What is the name of player #", num, "? "); - name = ReadLine(); - } - - void Hit(class BJDeck deck) { - int card; - card = deck.DealCard(); - Print(name, " was dealt a ", card, ".\n"); - total = total + card; - numcards = numcards + 1; - if (card == 11) - aces = aces + 1; - while ((total > 21) && (aces > 0)) { - total = total - 10; - aces = aces - 1; - } - } - - bool DoubleDown(class BJDeck deck) { - int result; - if ((total != 10) && (total != 11)) - return false; - if (GetYesOrNo("Would you like to double down?")) { - bet = bet * 2; - Hit(deck); - Print(name, ", your total is ", total, ".\n"); - return true; - } else - return false; - } - - void TakeTurn(class BJDeck deck) { - bool stillGoing; - - Print("\n", name, "'s turn.\n"); - total = 0; - aces = 0; - numcards = 0; - Hit(deck); - Hit(deck); - if (!DoubleDown(deck)) { - stillGoing = true; - while (total <= 21 && stillGoing) { - Print(name, ", your total is ", total, ".\n"); - stillGoing = GetYesOrNo("Would you like a hit?"); - if (stillGoing) - Hit(deck); - } - } - if (total > 21) - Print(name, " busts with the big ", total, "!\n"); - else - Print(name, " stays at ", total, ".\n"); - } - - bool HasMoney() { - return money > 0; - } - - void PrintMoney() { - Print(name, ", you have $", money, ".\n"); - } - - void PlaceBet() { - bet = 0; - PrintMoney(); - while ((bet <= 0) || (bet > money)) { - Print("How much would you like to bet? "); - bet = ReadInteger(); - } - } - - int GetTotal() { - return total; - } - - void Resolve(int dealer) { - int win; - int lose; - win = 0; - lose = 0; - if ((total == 21) && (numcards == 2)) - win = 2; - else if (total > 21) - lose = 1; - else if (dealer > 21) - win = 1; - else if (total > dealer) - win = 1; - else if (dealer > total) - lose = 1; - if (win >= 1) - Print(name, ", you won $", bet, ".\n"); - else if (lose >= 1) - Print(name, ", you lost $", bet, ".\n"); - else - Print(name, ", you push!\n"); - win = win * bet; - lose = lose * bet; - money = money + win - lose; - } - bool GetYesOrNo(string prompt) { - Print(prompt, " (0=No/1=Yes) "); - return ReadInteger() != 0; - } -} - -class Dealer extends Player { - - void Init(int id) { - string s; - total = 0; - aces = 0; - numcards = 0; - s = "Dealer"; //jdz need to examine why two steps are needed - name = s; - } - - void TakeTurn(class BJDeck deck) { - Print("\n", name, "'s turn.\n"); - while (total <= 16) { - Hit(deck); - } - if (total > 21) - Print(name, " busts with the big ", total, "!\n"); - else - Print(name, " stays at ", total, ".\n"); - } -} - - - -class House { - class Player[] players; - class Dealer dealer; - class BJDeck deck; - - void SetupGame() { - Print("\nWelcome to CS143 BlackJack!\n"); - Print("---------------------------\n"); - class rndModule rnd; - rnd = new rndModule(); - Print("Please enter a random number seed: "); - rnd.Init(ReadInteger()); - - deck = new BJDeck(); - dealer = new Dealer(); - deck.Init(rnd); - deck.Shuffle(); - } - - void SetupPlayers() { - int i; - int numPlayers; - Print("How many players do we have today? "); - numPlayers = ReadInteger(); - players = new class Player[numPlayers]; - for (i = 0; i < players.length(); i = i + 1) { - players[i] = new Player(); - players[i].Init(i+1); - } - } - - void TakeAllBets() { - int i; - Print("\nFirst, let's take bets.\n"); - for (i = 0; i < players.length(); i = i + 1) - if (players[i].HasMoney()) - players[i].PlaceBet(); - } - - void TakeAllTurns() { - int i; - for (i = 0; i < players.length(); i = i + 1) - if (players[i].HasMoney()) - players[i].TakeTurn(deck); - } - - void ResolveAllPlayers() { - int i; - - Print("\nTime to resolve bets.\n"); - for (i = 0; i < players.length(); i = i + 1) - if (players[i].HasMoney()) - players[i].Resolve(dealer.GetTotal()); - } - - void PrintAllMoney() { - int i; - - for (i = 0; i < players.length(); i = i + 1) - players[i].PrintMoney(); - - } - - void PlayOneGame() { - if (deck.NumCardsRemaining() < 26) - deck.Shuffle(); - TakeAllBets(); - Print("\nDealer starts. "); - dealer.Init(0); - dealer.Hit(deck); - TakeAllTurns(); - dealer.TakeTurn(deck); - ResolveAllPlayers(); - } - -} - -class Main { - static void main() { - bool keepPlaying; - keepPlaying = true; - class House house; - house = new House(); - house.SetupGame(); - house.SetupPlayers(); - while (keepPlaying) { - house.PlayOneGame(); - keepPlaying = GetYesOrNo("\nDo you want to play another hand?"); - } - house.PrintAllMoney(); - Print("Thank you for playing...come again soon.\n"); - Print("\nCS143 BlackJack Copyright (c) 1999 by Peter Mork.\n"); - Print("(2001 mods by jdz)\n"); - } - - static bool GetYesOrNo(string prompt) { - Print(prompt, " (0=No/1=Yes) "); - return ReadInteger() != 0; - } -} diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/Driver$1.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/Driver$1.class" deleted file mode 100644 index 6c105bf7d..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/Driver$1.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/Driver.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/Driver.class" deleted file mode 100644 index b403e4286..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/Driver.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/Location.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/Location.class" deleted file mode 100644 index 6badcb17c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/Location.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/Option$Level.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/Option$Level.class" deleted file mode 100644 index b785ae7c5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/Option$Level.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/Option.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/Option.class" deleted file mode 100644 index fd8e166a4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/Option.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/backend/OffsetCounter$Kind.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/backend/OffsetCounter$Kind.class" deleted file mode 100644 index 7bab4ff72..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/backend/OffsetCounter$Kind.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/backend/OffsetCounter.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/backend/OffsetCounter.class" deleted file mode 100644 index f4ee6ce27..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/backend/OffsetCounter.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/BadArgCountError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/BadArgCountError.class" deleted file mode 100644 index f662e0cf8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/BadArgCountError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/BadArgTypeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/BadArgTypeError.class" deleted file mode 100644 index 393dc7353..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/BadArgTypeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/BadArrElementError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/BadArrElementError.class" deleted file mode 100644 index 4401c85dd..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/BadArrElementError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/BadInheritanceError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/BadInheritanceError.class" deleted file mode 100644 index 25c822cb7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/BadInheritanceError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/BadLengthArgError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/BadLengthArgError.class" deleted file mode 100644 index 40a61d226..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/BadLengthArgError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/BadLengthError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/BadLengthError.class" deleted file mode 100644 index 6522300bb..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/BadLengthError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/BadNewArrayLength.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/BadNewArrayLength.class" deleted file mode 100644 index 4896b6f26..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/BadNewArrayLength.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/BadOverrideError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/BadOverrideError.class" deleted file mode 100644 index 0736b0cfb..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/BadOverrideError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/BadPrintArgError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/BadPrintArgError.class" deleted file mode 100644 index 4d3a7cffc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/BadPrintArgError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/BadReturnTypeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/BadReturnTypeError.class" deleted file mode 100644 index 5ae7b14de..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/BadReturnTypeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/BadTestExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/BadTestExpr.class" deleted file mode 100644 index 877a9c2ca..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/BadTestExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/BadVarTypeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/BadVarTypeError.class" deleted file mode 100644 index c50206763..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/BadVarTypeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/BreakOutOfLoopError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/BreakOutOfLoopError.class" deleted file mode 100644 index dd1b42e05..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/BreakOutOfLoopError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/CaseLabelNotConstError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/CaseLabelNotConstError.class" deleted file mode 100644 index 6320fc0ee..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/CaseLabelNotConstError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/ClassNotFoundError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/ClassNotFoundError.class" deleted file mode 100644 index 8c23cd0c6..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/ClassNotFoundError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/ContinueOutOfLoopError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/ContinueOutOfLoopError.class" deleted file mode 100644 index bb4668673..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/ContinueOutOfLoopError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/DecafError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/DecafError.class" deleted file mode 100644 index 56d8b7084..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/DecafError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/DeclConflictError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/DeclConflictError.class" deleted file mode 100644 index f4b87bcc4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/DeclConflictError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/FieldNotAccessError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/FieldNotAccessError.class" deleted file mode 100644 index 96111e8a6..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/FieldNotAccessError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/FieldNotFoundError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/FieldNotFoundError.class" deleted file mode 100644 index f1560c48f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/FieldNotFoundError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/IncompatBinOpError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/IncompatBinOpError.class" deleted file mode 100644 index 4bbed59e7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/IncompatBinOpError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/IncompatCondExprError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/IncompatCondExprError.class" deleted file mode 100644 index b7a753f05..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/IncompatCondExprError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/IncompatUnOpError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/IncompatUnOpError.class" deleted file mode 100644 index f5a9e31bc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/IncompatUnOpError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/IntTooLargeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/IntTooLargeError.class" deleted file mode 100644 index 44931104f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/IntTooLargeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/MsgError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/MsgError.class" deleted file mode 100644 index 080cb6161..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/MsgError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/NewlineInStrError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/NewlineInStrError.class" deleted file mode 100644 index 250e6b9ac..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/NewlineInStrError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/NoMainClassError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/NoMainClassError.class" deleted file mode 100644 index 4e709a981..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/NoMainClassError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/NotArrayError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/NotArrayError.class" deleted file mode 100644 index 28d40b882..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/NotArrayError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/NotClassError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/NotClassError.class" deleted file mode 100644 index 4ea6c47bc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/NotClassError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/NotClassFieldError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/NotClassFieldError.class" deleted file mode 100644 index bc05ae05a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/NotClassFieldError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/NotClassMethodError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/NotClassMethodError.class" deleted file mode 100644 index b6f9e584f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/NotClassMethodError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/OverridingVarError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/OverridingVarError.class" deleted file mode 100644 index 9f7e77981..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/OverridingVarError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/RefNonStaticError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/RefNonStaticError.class" deleted file mode 100644 index 73a781b4a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/RefNonStaticError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/RuntimeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/RuntimeError.class" deleted file mode 100644 index fd8238639..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/RuntimeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/SubNotIntError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/SubNotIntError.class" deleted file mode 100644 index 364a3889a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/SubNotIntError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/SwitchVarNotInt.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/SwitchVarNotInt.class" deleted file mode 100644 index 152124242..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/SwitchVarNotInt.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/ThisInStaticFuncError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/ThisInStaticFuncError.class" deleted file mode 100644 index e84ffa395..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/ThisInStaticFuncError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/UndeclVarError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/UndeclVarError.class" deleted file mode 100644 index d1945f289..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/UndeclVarError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/UnrecogCharError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/UnrecogCharError.class" deleted file mode 100644 index cf7857e28..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/UnrecogCharError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/UntermStrError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/UntermStrError.class" deleted file mode 100644 index 93edd524e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/error/UntermStrError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/frontend/BaseLexer.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/frontend/BaseLexer.class" deleted file mode 100644 index 106927055..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/frontend/BaseLexer.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/frontend/BaseParser.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/frontend/BaseParser.class" deleted file mode 100644 index 1b2dceb51..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/frontend/BaseParser.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/frontend/Lexer.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/frontend/Lexer.class" deleted file mode 100644 index 56ac34f45..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/frontend/Lexer.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/frontend/Parser.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/frontend/Parser.class" deleted file mode 100644 index 0e755ae4d..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/frontend/Parser.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/frontend/ParserHelper.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/frontend/ParserHelper.class" deleted file mode 100644 index 73f1690c2..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/frontend/ParserHelper.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/frontend/ReduceListener.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/frontend/ReduceListener.class" deleted file mode 100644 index 8dc1e198c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/frontend/ReduceListener.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/frontend/SemValue.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/frontend/SemValue.class" deleted file mode 100644 index 53b9fdeb8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/frontend/SemValue.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/machdesc/Intrinsic.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/machdesc/Intrinsic.class" deleted file mode 100644 index ea463a1c5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/machdesc/Intrinsic.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/scope/ClassScope.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/scope/ClassScope.class" deleted file mode 100644 index 15a4b2480..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/scope/ClassScope.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/scope/FormalScope.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/scope/FormalScope.class" deleted file mode 100644 index 7f9d488bf..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/scope/FormalScope.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/scope/GlobalScope.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/scope/GlobalScope.class" deleted file mode 100644 index 500ab21fa..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/scope/GlobalScope.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/scope/LocalScope.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/scope/LocalScope.class" deleted file mode 100644 index d8bea5ac7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/scope/LocalScope.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/scope/Scope$Kind.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/scope/Scope$Kind.class" deleted file mode 100644 index 3b4b6351a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/scope/Scope$Kind.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/scope/Scope.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/scope/Scope.class" deleted file mode 100644 index b57fdca02..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/scope/Scope.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/scope/ScopeStack$1.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/scope/ScopeStack$1.class" deleted file mode 100644 index a0f3b4987..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/scope/ScopeStack$1.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/scope/ScopeStack.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/scope/ScopeStack.class" deleted file mode 100644 index 1fcef768a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/scope/ScopeStack.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/symbol/Class.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/symbol/Class.class" deleted file mode 100644 index 9af2d1973..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/symbol/Class.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/symbol/Function.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/symbol/Function.class" deleted file mode 100644 index 363d32d66..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/symbol/Function.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/symbol/Symbol$1.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/symbol/Symbol$1.class" deleted file mode 100644 index e3693dbed..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/symbol/Symbol$1.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/symbol/Symbol$2.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/symbol/Symbol$2.class" deleted file mode 100644 index 80499c303..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/symbol/Symbol$2.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/symbol/Symbol.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/symbol/Symbol.class" deleted file mode 100644 index 1ff6891b4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/symbol/Symbol.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/symbol/Variable.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/symbol/Variable.class" deleted file mode 100644 index c58f8316e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/symbol/Variable.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tac/Functy.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tac/Functy.class" deleted file mode 100644 index 7e72f32e2..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tac/Functy.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tac/Label.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tac/Label.class" deleted file mode 100644 index 2aab0a003..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tac/Label.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tac/Tac$1.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tac/Tac$1.class" deleted file mode 100644 index 6b28663f2..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tac/Tac$1.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tac/Tac$Kind.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tac/Tac$Kind.class" deleted file mode 100644 index e59c8cbfc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tac/Tac$Kind.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tac/Tac.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tac/Tac.class" deleted file mode 100644 index 943b6a589..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tac/Tac.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tac/Temp$1.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tac/Temp$1.class" deleted file mode 100644 index 3ea19ce23..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tac/Temp$1.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tac/Temp.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tac/Temp.class" deleted file mode 100644 index 65848f0bc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tac/Temp.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tac/VTable.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tac/VTable.class" deleted file mode 100644 index f94176099..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tac/VTable.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/translate/TransPass1.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/translate/TransPass1.class" deleted file mode 100644 index 3b75277b7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/translate/TransPass1.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/translate/TransPass2$1.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/translate/TransPass2$1.class" deleted file mode 100644 index 71c587efb..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/translate/TransPass2$1.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/translate/TransPass2.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/translate/TransPass2.class" deleted file mode 100644 index 358b61d25..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/translate/TransPass2.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/translate/Translater.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/translate/Translater.class" deleted file mode 100644 index 93e96652b..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/translate/Translater.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Apply.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Apply.class" deleted file mode 100644 index 4f0fdc479..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Apply.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Assign.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Assign.class" deleted file mode 100644 index 1a0a00d91..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Assign.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Binary.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Binary.class" deleted file mode 100644 index 0b4a51aec..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Binary.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Block.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Block.class" deleted file mode 100644 index ce70a7014..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Block.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Break.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Break.class" deleted file mode 100644 index 4149aed32..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Break.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$CallExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$CallExpr.class" deleted file mode 100644 index 2ebf97c60..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$CallExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Case.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Case.class" deleted file mode 100644 index 6c977ff24..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Case.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$ClassDef.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$ClassDef.class" deleted file mode 100644 index 3c42a8668..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$ClassDef.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Continue.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Continue.class" deleted file mode 100644 index ed86b5eae..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Continue.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Exec.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Exec.class" deleted file mode 100644 index 0ab5f3de9..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Exec.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Expr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Expr.class" deleted file mode 100644 index e52270652..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Expr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$ForLoop.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$ForLoop.class" deleted file mode 100644 index 92f27ab2a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$ForLoop.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Ident.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Ident.class" deleted file mode 100644 index 101ef0996..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Ident.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$If.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$If.class" deleted file mode 100644 index acb9e3e1b..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$If.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Indexed.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Indexed.class" deleted file mode 100644 index 1cafd1e44..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Indexed.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$LValue$Kind.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$LValue$Kind.class" deleted file mode 100644 index 1d4d757a3..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$LValue$Kind.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$LValue.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$LValue.class" deleted file mode 100644 index c87284b08..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$LValue.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Literal.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Literal.class" deleted file mode 100644 index 84d154f56..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Literal.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$MethodDef.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$MethodDef.class" deleted file mode 100644 index bb154f165..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$MethodDef.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$NewArray.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$NewArray.class" deleted file mode 100644 index 00b2c55c1..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$NewArray.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$NewClass.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$NewClass.class" deleted file mode 100644 index 467cc6e10..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$NewClass.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Null.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Null.class" deleted file mode 100644 index 341f96d92..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Null.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Print.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Print.class" deleted file mode 100644 index 927c3c923..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Print.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$ReadIntExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$ReadIntExpr.class" deleted file mode 100644 index 740cbd52c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$ReadIntExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$ReadLineExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$ReadLineExpr.class" deleted file mode 100644 index 67e7b5f5a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$ReadLineExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Repeat.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Repeat.class" deleted file mode 100644 index 9ba18199a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Repeat.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Return.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Return.class" deleted file mode 100644 index 49771b76a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Return.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Skip.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Skip.class" deleted file mode 100644 index b512eeee5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Skip.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Switch.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Switch.class" deleted file mode 100644 index 131cf5da7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Switch.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Ternary.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Ternary.class" deleted file mode 100644 index b35a9fbbd..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Ternary.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$ThisExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$ThisExpr.class" deleted file mode 100644 index ff393a956..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$ThisExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$TopLevel.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$TopLevel.class" deleted file mode 100644 index 833d387b0..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$TopLevel.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$TypeArray.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$TypeArray.class" deleted file mode 100644 index ee8c58f5a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$TypeArray.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$TypeCast.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$TypeCast.class" deleted file mode 100644 index dc028d51f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$TypeCast.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$TypeClass.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$TypeClass.class" deleted file mode 100644 index f82669c4b..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$TypeClass.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$TypeIdent.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$TypeIdent.class" deleted file mode 100644 index cbcb9737e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$TypeIdent.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$TypeLiteral.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$TypeLiteral.class" deleted file mode 100644 index 24581195e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$TypeLiteral.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$TypeTest.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$TypeTest.class" deleted file mode 100644 index 346aec84f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$TypeTest.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Unary.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Unary.class" deleted file mode 100644 index eb66e28f2..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Unary.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$VarDef.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$VarDef.class" deleted file mode 100644 index 9789788a9..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$VarDef.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Visitor.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Visitor.class" deleted file mode 100644 index b7fb72ef1..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$Visitor.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$WhileLoop.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$WhileLoop.class" deleted file mode 100644 index a5b776515..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree$WhileLoop.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree.class" deleted file mode 100644 index ded0d85cf..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/tree/Tree.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/type/ArrayType.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/type/ArrayType.class" deleted file mode 100644 index 6f547e5a5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/type/ArrayType.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/type/BaseType.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/type/BaseType.class" deleted file mode 100644 index af07ac7fc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/type/BaseType.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/type/ClassType.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/type/ClassType.class" deleted file mode 100644 index 68ff18a99..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/type/ClassType.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/type/FuncType.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/type/FuncType.class" deleted file mode 100644 index dcd6be087..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/type/FuncType.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/type/Type.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/type/Type.class" deleted file mode 100644 index 88f93ceb8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/type/Type.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/typecheck/BuildSym.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/typecheck/BuildSym.class" deleted file mode 100644 index 63600481a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/typecheck/BuildSym.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/typecheck/TypeCheck.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/typecheck/TypeCheck.class" deleted file mode 100644 index c60f50f8c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/typecheck/TypeCheck.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/utils/IndentPrintWriter.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/utils/IndentPrintWriter.class" deleted file mode 100644 index 5b7d47cfe..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/utils/IndentPrintWriter.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/utils/MiscUtils.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/utils/MiscUtils.class" deleted file mode 100644 index c8920db8c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/bin/decaf/utils/MiscUtils.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/decaf.jar" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/decaf.jar" deleted file mode 100644 index 0d0301f3f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/decaf.jar" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/run.cmd" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/run.cmd" deleted file mode 100644 index c86b3770b..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/run.cmd" +++ /dev/null @@ -1,2 +0,0 @@ -java -jar decaf.jar -l 2 a.txt -o a.bin -java -jar tac.jar a.bin \ No newline at end of file diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/tac.jar" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/tac.jar" deleted file mode 100644 index 97ae40450..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/550405220_4_decaf_PA3/result/tac.jar" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/Driver$1.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/Driver$1.class" deleted file mode 100644 index f034aaafe..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/Driver$1.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/Driver.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/Driver.class" deleted file mode 100644 index 7d54021f1..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/Driver.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/Location.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/Location.class" deleted file mode 100644 index 6badcb17c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/Location.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/Option$Level.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/Option$Level.class" deleted file mode 100644 index b785ae7c5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/Option$Level.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/Option.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/Option.class" deleted file mode 100644 index fd8e166a4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/Option.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/BadArgCountError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/BadArgCountError.class" deleted file mode 100644 index f662e0cf8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/BadArgCountError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/BadArgTypeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/BadArgTypeError.class" deleted file mode 100644 index 393dc7353..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/BadArgTypeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/BadArrElementError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/BadArrElementError.class" deleted file mode 100644 index 4401c85dd..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/BadArrElementError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/BadInheritanceError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/BadInheritanceError.class" deleted file mode 100644 index 25c822cb7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/BadInheritanceError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/BadLengthArgError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/BadLengthArgError.class" deleted file mode 100644 index 40a61d226..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/BadLengthArgError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/BadLengthError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/BadLengthError.class" deleted file mode 100644 index 6522300bb..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/BadLengthError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/BadNewArrayLength.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/BadNewArrayLength.class" deleted file mode 100644 index 4896b6f26..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/BadNewArrayLength.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/BadOverrideError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/BadOverrideError.class" deleted file mode 100644 index 0736b0cfb..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/BadOverrideError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/BadPrintArgError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/BadPrintArgError.class" deleted file mode 100644 index 4d3a7cffc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/BadPrintArgError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/BadReturnTypeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/BadReturnTypeError.class" deleted file mode 100644 index 5ae7b14de..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/BadReturnTypeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/BadTestExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/BadTestExpr.class" deleted file mode 100644 index 877a9c2ca..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/BadTestExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/BadVarTypeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/BadVarTypeError.class" deleted file mode 100644 index c50206763..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/BadVarTypeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/BreakOutOfLoopError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/BreakOutOfLoopError.class" deleted file mode 100644 index dd1b42e05..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/BreakOutOfLoopError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/ClassNotFoundError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/ClassNotFoundError.class" deleted file mode 100644 index 8c23cd0c6..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/ClassNotFoundError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/DecafError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/DecafError.class" deleted file mode 100644 index 56d8b7084..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/DecafError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/DeclConflictError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/DeclConflictError.class" deleted file mode 100644 index f4b87bcc4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/DeclConflictError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/FieldNotAccessError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/FieldNotAccessError.class" deleted file mode 100644 index 96111e8a6..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/FieldNotAccessError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/FieldNotFoundError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/FieldNotFoundError.class" deleted file mode 100644 index f1560c48f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/FieldNotFoundError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/IncompatBinOpError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/IncompatBinOpError.class" deleted file mode 100644 index 4bbed59e7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/IncompatBinOpError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/IncompatUnOpError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/IncompatUnOpError.class" deleted file mode 100644 index f5a9e31bc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/IncompatUnOpError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/IntTooLargeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/IntTooLargeError.class" deleted file mode 100644 index 44931104f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/IntTooLargeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/MsgError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/MsgError.class" deleted file mode 100644 index 080cb6161..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/MsgError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/NewlineInStrError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/NewlineInStrError.class" deleted file mode 100644 index 250e6b9ac..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/NewlineInStrError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/NoMainClassError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/NoMainClassError.class" deleted file mode 100644 index 4e709a981..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/NoMainClassError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/NotArrayError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/NotArrayError.class" deleted file mode 100644 index 28d40b882..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/NotArrayError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/NotClassError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/NotClassError.class" deleted file mode 100644 index 4ea6c47bc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/NotClassError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/NotClassFieldError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/NotClassFieldError.class" deleted file mode 100644 index bc05ae05a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/NotClassFieldError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/NotClassMethodError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/NotClassMethodError.class" deleted file mode 100644 index b6f9e584f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/NotClassMethodError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/OverridingVarError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/OverridingVarError.class" deleted file mode 100644 index 9f7e77981..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/OverridingVarError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/RefNonStaticError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/RefNonStaticError.class" deleted file mode 100644 index 73a781b4a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/RefNonStaticError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/RuntimeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/RuntimeError.class" deleted file mode 100644 index 55e3b77cf..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/RuntimeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/SubNotIntError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/SubNotIntError.class" deleted file mode 100644 index 364a3889a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/SubNotIntError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/ThisInStaticFuncError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/ThisInStaticFuncError.class" deleted file mode 100644 index e84ffa395..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/ThisInStaticFuncError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/UndeclVarError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/UndeclVarError.class" deleted file mode 100644 index d1945f289..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/UndeclVarError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/UnrecogCharError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/UnrecogCharError.class" deleted file mode 100644 index cf7857e28..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/UnrecogCharError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/UntermStrError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/UntermStrError.class" deleted file mode 100644 index 93edd524e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/error/UntermStrError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/frontend/BaseLexer.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/frontend/BaseLexer.class" deleted file mode 100644 index c4cfec76b..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/frontend/BaseLexer.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/frontend/BaseParser.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/frontend/BaseParser.class" deleted file mode 100644 index 1b2dceb51..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/frontend/BaseParser.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/frontend/Lexer.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/frontend/Lexer.class" deleted file mode 100644 index c51f5a851..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/frontend/Lexer.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/frontend/Lexer.l" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/frontend/Lexer.l" deleted file mode 100644 index 8d65efdd9..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/frontend/Lexer.l" +++ /dev/null @@ -1,114 +0,0 @@ -/* - * 本文件是构造Decaf编译器所需要的JFlex输入脚本。 - * 在第一阶段,你需要完成这个脚本的内容,请参考"JFlex Manual"中关于如何编写JFlex脚本的说明。 - * - * 注意:在UNIX系统下你需要保证这个文件使用UNIX文本格式,可使用dos2unix命令进行文本各式转换。 - */ - -package decaf.frontend; - -import decaf.Location; -import decaf.error.*; -import decaf.utils.MiscUtils; - -%% -%public -%class Lexer -%extends BaseLexer -%byaccj -%line -%column -%switch -%unicode - -%{ - private Location sloc = null; - private StringBuilder buffer = new StringBuilder(); - - public Location getLocation() { - return new decaf.Location(yyline + 1, yycolumn + 1); - } -%} - -NEWLINE = (\r|\n|\r\n) -DIGIT = ([0-9]) -HEX_DIGIT = ([0-9A-Fa-f]) -HEX_INTEGER = (0[Xx]{HEX_DIGIT}+) -DEC_INTEGER = ({DIGIT}+) -INTEGER = ({HEX_INTEGER}|{DEC_INTEGER}) -IDENTIFIER = ([A-Za-z][_0-9A-Za-z]*) -SIMPLE_OPERATOR = ("+"|"-"|"*"|"/"|"%"|"="|"<"|">"|"."|","|";"|"!"|"("|")"|"["|"]"|"{"|"}"|"?"|":") -S_COMMENT = ("//"[^\r\n]*{NEWLINE}) -WHITESPACE = ([ \t]+) - - // 开始条件S表示字符串 -%x S - -%% - // 识别注释和空白字符的规则 -{WHITESPACE} { /* Just ignore */ } -{NEWLINE} { /* Just ignore */ } -{S_COMMENT} { /* Just ignore */ } - - - // 识别关键字的规则 -"void" { return keyword(Parser.VOID); } -"int" { return keyword(Parser.INT); } -"bool" { return keyword(Parser.BOOL); } -"string" { return keyword(Parser.STRING); } -"new" { return keyword(Parser.NEW); } -"null" { return keyword(Parser.NULL); } -"class" { return keyword(Parser.CLASS); } -"extends" { return keyword(Parser.EXTENDS); } -"this" { return keyword(Parser.THIS); } -"while" { return keyword(Parser.WHILE); } -"for" { return keyword(Parser.FOR); } -"if" { return keyword(Parser.IF); } -"else" { return keyword(Parser.ELSE); } -"return" { return keyword(Parser.RETURN); } -"break" { return keyword(Parser.BREAK); } -"Print" { return keyword(Parser.PRINT); } -"ReadInteger" { return keyword(Parser.READ_INTEGER); } -"ReadLine" { return keyword(Parser.READ_LINE); } -"static" { return keyword(Parser.STATIC); } -"instanceof" { return keyword(Parser.INSTANCEOF); } -"switch" { return keyword(Parser.SWITCH); } -"case" { return keyword(Parser.CASE); } -"default" { return keyword(Parser.DEFAULT); } -"repeat" { return keyword(Parser.REPEAT); } -"until" { return keyword(Parser.UNTIL); } -"continue" { return keyword(Parser.CONTINUE); } - - // 识别操作符的规则 -"<=" { return operator(Parser.LESS_EQUAL); } -">=" { return operator(Parser.GREATER_EQUAL);} -"==" { return operator(Parser.EQUAL); } -"!=" { return operator(Parser.NOT_EQUAL); } -"&&" { return operator(Parser.AND); } -"||" { return operator(Parser.OR); } -"<<" { return operator(Parser.PCLONE); } -{SIMPLE_OPERATOR} { return operator((int)yycharat(0)); } - - // 识别常数的规则 -"true" { return boolConst(true); } -"false" { return boolConst(false); } -{INTEGER} { return intConst(yytext()); } -\" { sloc = getLocation(); - yybegin(S); - buffer = new StringBuilder(); } -{NEWLINE} { issueError(new NewlineInStrError(sloc, MiscUtils.quote(buffer.toString())));} -<> { issueError(new UntermStrError(sloc, MiscUtils.quote(buffer.toString()))); - yybegin(YYINITIAL); } -\" { yybegin(YYINITIAL); - return StringConst(buffer.toString(), sloc); } -"\\n" { buffer.append('\n'); } -"\\t" { buffer.append('\t'); } -"\\\"" { buffer.append('"'); } -"\\\\" { buffer.append('\\'); } -. { buffer.append(yytext()); } - - // 识别标识符的规则 -{IDENTIFIER} { return identifier(yytext()); } - - // 上面规则不能识别的字符怎么处理 -. { issueError(new UnrecogCharError(getLocation(), yycharat(0))); } diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/frontend/Parser.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/frontend/Parser.class" deleted file mode 100644 index 6afc9d566..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/frontend/Parser.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/frontend/SemValue.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/frontend/SemValue.class" deleted file mode 100644 index 9dcf51228..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/frontend/SemValue.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Apply.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Apply.class" deleted file mode 100644 index 11c99efb5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Apply.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Assign.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Assign.class" deleted file mode 100644 index fa24a480b..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Assign.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Binary.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Binary.class" deleted file mode 100644 index 6fa4dd82e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Binary.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Block.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Block.class" deleted file mode 100644 index 68a076f94..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Block.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Break.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Break.class" deleted file mode 100644 index 40a2bf93c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Break.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$CallExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$CallExpr.class" deleted file mode 100644 index b13d87654..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$CallExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Case.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Case.class" deleted file mode 100644 index bcdcbb92d..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Case.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$ClassDef.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$ClassDef.class" deleted file mode 100644 index b4fbcb81f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$ClassDef.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Continue.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Continue.class" deleted file mode 100644 index 376932bd8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Continue.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Exec.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Exec.class" deleted file mode 100644 index 8c749ce62..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Exec.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Expr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Expr.class" deleted file mode 100644 index 0592b1925..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Expr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$ForLoop.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$ForLoop.class" deleted file mode 100644 index 9b639ae6b..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$ForLoop.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Ident.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Ident.class" deleted file mode 100644 index 9ce107387..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Ident.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$If.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$If.class" deleted file mode 100644 index fef7a2a88..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$If.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Indexed.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Indexed.class" deleted file mode 100644 index 945e096ce..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Indexed.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$LValue$Kind.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$LValue$Kind.class" deleted file mode 100644 index 7d91a8ae0..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$LValue$Kind.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$LValue.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$LValue.class" deleted file mode 100644 index 38cac8a5e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$LValue.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Literal.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Literal.class" deleted file mode 100644 index c3a1bb363..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Literal.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$MethodDef.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$MethodDef.class" deleted file mode 100644 index 879358c58..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$MethodDef.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$NewArray.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$NewArray.class" deleted file mode 100644 index e190e5ca5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$NewArray.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$NewClass.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$NewClass.class" deleted file mode 100644 index ae5ca67b5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$NewClass.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Null.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Null.class" deleted file mode 100644 index 7ea005df7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Null.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Print.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Print.class" deleted file mode 100644 index fa262aa98..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Print.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$ReadIntExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$ReadIntExpr.class" deleted file mode 100644 index 615fa8bf3..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$ReadIntExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$ReadLineExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$ReadLineExpr.class" deleted file mode 100644 index d57043ef0..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$ReadLineExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Repeat.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Repeat.class" deleted file mode 100644 index 4aaaf9cfa..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Repeat.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Return.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Return.class" deleted file mode 100644 index d3fd62c60..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Return.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Skip.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Skip.class" deleted file mode 100644 index 1f96c671d..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Skip.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Switch.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Switch.class" deleted file mode 100644 index 19cc8dc78..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Switch.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Ternary.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Ternary.class" deleted file mode 100644 index d8a9456c1..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Ternary.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$ThisExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$ThisExpr.class" deleted file mode 100644 index b25f6d7de..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$ThisExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$TopLevel.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$TopLevel.class" deleted file mode 100644 index b8951a94c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$TopLevel.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$TypeArray.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$TypeArray.class" deleted file mode 100644 index db7ee6b22..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$TypeArray.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$TypeCast.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$TypeCast.class" deleted file mode 100644 index a26da9b7a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$TypeCast.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$TypeClass.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$TypeClass.class" deleted file mode 100644 index 0adc27e3f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$TypeClass.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$TypeIdent.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$TypeIdent.class" deleted file mode 100644 index f8da38dfc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$TypeIdent.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$TypeLiteral.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$TypeLiteral.class" deleted file mode 100644 index 7b407f0c7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$TypeLiteral.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$TypeTest.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$TypeTest.class" deleted file mode 100644 index e1ae29165..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$TypeTest.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Unary.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Unary.class" deleted file mode 100644 index a95b2f453..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Unary.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$VarDef.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$VarDef.class" deleted file mode 100644 index d94589d91..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$VarDef.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Visitor.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Visitor.class" deleted file mode 100644 index fd8c3b7f2..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$Visitor.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$WhileLoop.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$WhileLoop.class" deleted file mode 100644 index cd36803db..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree$WhileLoop.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree.class" deleted file mode 100644 index d20af886e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/tree/Tree.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/utils/IndentPrintWriter.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/utils/IndentPrintWriter.class" deleted file mode 100644 index 5b7d47cfe..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/utils/IndentPrintWriter.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/utils/MiscUtils.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/utils/MiscUtils.class" deleted file mode 100644 index c8920db8c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/out/production/603903960_2_decaf_PA1B/decaf/utils/MiscUtils.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/Driver$1.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/Driver$1.class" deleted file mode 100644 index f034aaafe..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/Driver$1.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/Driver.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/Driver.class" deleted file mode 100644 index 7d54021f1..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/Driver.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/Location.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/Location.class" deleted file mode 100644 index 6badcb17c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/Location.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/Option$Level.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/Option$Level.class" deleted file mode 100644 index b785ae7c5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/Option$Level.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/Option.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/Option.class" deleted file mode 100644 index fd8e166a4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/Option.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/BadArgCountError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/BadArgCountError.class" deleted file mode 100644 index f662e0cf8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/BadArgCountError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/BadArgTypeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/BadArgTypeError.class" deleted file mode 100644 index 393dc7353..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/BadArgTypeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/BadArrElementError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/BadArrElementError.class" deleted file mode 100644 index 4401c85dd..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/BadArrElementError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/BadInheritanceError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/BadInheritanceError.class" deleted file mode 100644 index 25c822cb7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/BadInheritanceError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/BadLengthArgError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/BadLengthArgError.class" deleted file mode 100644 index 40a61d226..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/BadLengthArgError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/BadLengthError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/BadLengthError.class" deleted file mode 100644 index 6522300bb..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/BadLengthError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/BadNewArrayLength.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/BadNewArrayLength.class" deleted file mode 100644 index 4896b6f26..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/BadNewArrayLength.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/BadOverrideError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/BadOverrideError.class" deleted file mode 100644 index 0736b0cfb..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/BadOverrideError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/BadPrintArgError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/BadPrintArgError.class" deleted file mode 100644 index 4d3a7cffc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/BadPrintArgError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/BadReturnTypeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/BadReturnTypeError.class" deleted file mode 100644 index 5ae7b14de..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/BadReturnTypeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/BadTestExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/BadTestExpr.class" deleted file mode 100644 index 877a9c2ca..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/BadTestExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/BadVarTypeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/BadVarTypeError.class" deleted file mode 100644 index c50206763..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/BadVarTypeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/BreakOutOfLoopError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/BreakOutOfLoopError.class" deleted file mode 100644 index dd1b42e05..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/BreakOutOfLoopError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/ClassNotFoundError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/ClassNotFoundError.class" deleted file mode 100644 index 8c23cd0c6..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/ClassNotFoundError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/DecafError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/DecafError.class" deleted file mode 100644 index 56d8b7084..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/DecafError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/DeclConflictError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/DeclConflictError.class" deleted file mode 100644 index f4b87bcc4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/DeclConflictError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/FieldNotAccessError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/FieldNotAccessError.class" deleted file mode 100644 index 96111e8a6..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/FieldNotAccessError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/FieldNotFoundError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/FieldNotFoundError.class" deleted file mode 100644 index f1560c48f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/FieldNotFoundError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/IncompatBinOpError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/IncompatBinOpError.class" deleted file mode 100644 index 4bbed59e7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/IncompatBinOpError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/IncompatUnOpError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/IncompatUnOpError.class" deleted file mode 100644 index f5a9e31bc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/IncompatUnOpError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/IntTooLargeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/IntTooLargeError.class" deleted file mode 100644 index 44931104f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/IntTooLargeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/MsgError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/MsgError.class" deleted file mode 100644 index 080cb6161..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/MsgError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/NewlineInStrError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/NewlineInStrError.class" deleted file mode 100644 index 250e6b9ac..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/NewlineInStrError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/NoMainClassError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/NoMainClassError.class" deleted file mode 100644 index 4e709a981..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/NoMainClassError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/NotArrayError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/NotArrayError.class" deleted file mode 100644 index 28d40b882..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/NotArrayError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/NotClassError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/NotClassError.class" deleted file mode 100644 index 4ea6c47bc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/NotClassError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/NotClassFieldError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/NotClassFieldError.class" deleted file mode 100644 index bc05ae05a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/NotClassFieldError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/NotClassMethodError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/NotClassMethodError.class" deleted file mode 100644 index b6f9e584f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/NotClassMethodError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/OverridingVarError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/OverridingVarError.class" deleted file mode 100644 index 9f7e77981..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/OverridingVarError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/RefNonStaticError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/RefNonStaticError.class" deleted file mode 100644 index 73a781b4a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/RefNonStaticError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/RuntimeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/RuntimeError.class" deleted file mode 100644 index 55e3b77cf..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/RuntimeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/SubNotIntError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/SubNotIntError.class" deleted file mode 100644 index 364a3889a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/SubNotIntError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/ThisInStaticFuncError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/ThisInStaticFuncError.class" deleted file mode 100644 index e84ffa395..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/ThisInStaticFuncError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/UndeclVarError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/UndeclVarError.class" deleted file mode 100644 index d1945f289..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/UndeclVarError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/UnrecogCharError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/UnrecogCharError.class" deleted file mode 100644 index cf7857e28..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/UnrecogCharError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/UntermStrError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/UntermStrError.class" deleted file mode 100644 index 93edd524e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/error/UntermStrError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/frontend/BaseLexer.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/frontend/BaseLexer.class" deleted file mode 100644 index c4cfec76b..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/frontend/BaseLexer.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/frontend/BaseParser.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/frontend/BaseParser.class" deleted file mode 100644 index 1b2dceb51..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/frontend/BaseParser.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/frontend/Lexer.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/frontend/Lexer.class" deleted file mode 100644 index c51f5a851..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/frontend/Lexer.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/frontend/Parser.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/frontend/Parser.class" deleted file mode 100644 index e54091a3c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/frontend/Parser.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/frontend/SemValue.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/frontend/SemValue.class" deleted file mode 100644 index 9dcf51228..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/frontend/SemValue.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Apply.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Apply.class" deleted file mode 100644 index 11c99efb5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Apply.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Assign.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Assign.class" deleted file mode 100644 index fa24a480b..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Assign.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Binary.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Binary.class" deleted file mode 100644 index 6fa4dd82e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Binary.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Block.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Block.class" deleted file mode 100644 index 68a076f94..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Block.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Break.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Break.class" deleted file mode 100644 index 40a2bf93c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Break.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$CallExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$CallExpr.class" deleted file mode 100644 index b13d87654..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$CallExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Case.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Case.class" deleted file mode 100644 index bcdcbb92d..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Case.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$ClassDef.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$ClassDef.class" deleted file mode 100644 index b4fbcb81f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$ClassDef.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Continue.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Continue.class" deleted file mode 100644 index 376932bd8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Continue.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Exec.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Exec.class" deleted file mode 100644 index 8c749ce62..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Exec.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Expr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Expr.class" deleted file mode 100644 index 0592b1925..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Expr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$ForLoop.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$ForLoop.class" deleted file mode 100644 index 9b639ae6b..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$ForLoop.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Ident.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Ident.class" deleted file mode 100644 index 9ce107387..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Ident.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$If.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$If.class" deleted file mode 100644 index fef7a2a88..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$If.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Indexed.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Indexed.class" deleted file mode 100644 index 945e096ce..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Indexed.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$LValue$Kind.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$LValue$Kind.class" deleted file mode 100644 index 7d91a8ae0..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$LValue$Kind.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$LValue.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$LValue.class" deleted file mode 100644 index 38cac8a5e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$LValue.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Literal.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Literal.class" deleted file mode 100644 index c3a1bb363..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Literal.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$MethodDef.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$MethodDef.class" deleted file mode 100644 index 879358c58..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$MethodDef.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$NewArray.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$NewArray.class" deleted file mode 100644 index e190e5ca5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$NewArray.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$NewClass.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$NewClass.class" deleted file mode 100644 index ae5ca67b5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$NewClass.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Null.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Null.class" deleted file mode 100644 index 7ea005df7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Null.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Print.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Print.class" deleted file mode 100644 index fa262aa98..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Print.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$ReadIntExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$ReadIntExpr.class" deleted file mode 100644 index 615fa8bf3..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$ReadIntExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$ReadLineExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$ReadLineExpr.class" deleted file mode 100644 index d57043ef0..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$ReadLineExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Repeat.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Repeat.class" deleted file mode 100644 index 4aaaf9cfa..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Repeat.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Return.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Return.class" deleted file mode 100644 index d3fd62c60..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Return.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Skip.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Skip.class" deleted file mode 100644 index 1f96c671d..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Skip.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Switch.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Switch.class" deleted file mode 100644 index 19cc8dc78..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Switch.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Ternary.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Ternary.class" deleted file mode 100644 index d8a9456c1..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Ternary.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$ThisExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$ThisExpr.class" deleted file mode 100644 index b25f6d7de..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$ThisExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$TopLevel.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$TopLevel.class" deleted file mode 100644 index b8951a94c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$TopLevel.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$TypeArray.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$TypeArray.class" deleted file mode 100644 index db7ee6b22..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$TypeArray.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$TypeCast.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$TypeCast.class" deleted file mode 100644 index a26da9b7a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$TypeCast.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$TypeClass.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$TypeClass.class" deleted file mode 100644 index 0adc27e3f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$TypeClass.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$TypeIdent.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$TypeIdent.class" deleted file mode 100644 index f8da38dfc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$TypeIdent.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$TypeLiteral.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$TypeLiteral.class" deleted file mode 100644 index 7b407f0c7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$TypeLiteral.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$TypeTest.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$TypeTest.class" deleted file mode 100644 index e1ae29165..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$TypeTest.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Unary.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Unary.class" deleted file mode 100644 index a95b2f453..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Unary.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$VarDef.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$VarDef.class" deleted file mode 100644 index d94589d91..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$VarDef.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Visitor.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Visitor.class" deleted file mode 100644 index fd8c3b7f2..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$Visitor.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$WhileLoop.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$WhileLoop.class" deleted file mode 100644 index cd36803db..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree$WhileLoop.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree.class" deleted file mode 100644 index d20af886e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/tree/Tree.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/utils/IndentPrintWriter.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/utils/IndentPrintWriter.class" deleted file mode 100644 index 5b7d47cfe..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/utils/IndentPrintWriter.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/utils/MiscUtils.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/utils/MiscUtils.class" deleted file mode 100644 index c8920db8c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/bin/decaf/utils/MiscUtils.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/decaf.jar" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/decaf.jar" deleted file mode 100644 index 7104c6529..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/603903960_2_decaf_PA1B/result/decaf.jar" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/out/production/698609556_1_decaf_PA1A/decaf/frontend/Lexer.l" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/out/production/698609556_1_decaf_PA1A/decaf/frontend/Lexer.l" deleted file mode 100644 index 90178755d..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/out/production/698609556_1_decaf_PA1A/decaf/frontend/Lexer.l" +++ /dev/null @@ -1,107 +0,0 @@ -/* - * 本文件是构造Decaf编译器所需要的JFlex输入脚本。 - * 在第一阶段,你需要完成这个脚本的内容,请参考"JFlex Manual"中关于如何编写JFlex脚本的说明。 - * - * 注意:在UNIX系统下你需要保证这个文件使用UNIX文本格式,可使用dos2unix命令进行文本各式转换。 - */ - -package decaf.frontend; - -import decaf.Location; -import decaf.error.*; -import decaf.utils.MiscUtils; - -%% -%public -%class Lexer -%extends BaseLexer -%byaccj -%line -%column -%switch -%unicode - -%{ - private Location sloc = null; - private StringBuilder buffer = new StringBuilder(); - - public Location getLocation() { - return new decaf.Location(yyline + 1, yycolumn + 1); - } -%} - -NEWLINE = (\r|\n|\r\n) -DIGIT = ([0-9]) -HEX_DIGIT = ([0-9A-Fa-f]) -HEX_INTEGER = (0[Xx]{HEX_DIGIT}+) -DEC_INTEGER = ({DIGIT}+) -INTEGER = ({HEX_INTEGER}|{DEC_INTEGER}) -IDENTIFIER = ([A-Za-z][_0-9A-Za-z]*) -SIMPLE_OPERATOR = ("+"|"-"|"*"|"/"|"%"|"="|"<"|">"|"."|","|";"|"!"|"("|")"|"["|"]"|"{"|"}") -S_COMMENT = ("//"[^\r\n]*{NEWLINE}) -WHITESPACE = ([ \t]+) - - // 开始条件S表示字符串 -%x S - -%% - // 识别注释和空白字符的规则 -{WHITESPACE} { /* Just ignore */ } -{NEWLINE} { /* Just ignore */ } -{S_COMMENT} { /* Just ignore */ } - - - // 识别关键字的规则 -"void" { return keyword(Parser.VOID); } -"int" { return keyword(Parser.INT); } -"bool" { return keyword(Parser.BOOL); } -"string" { return keyword(Parser.STRING); } -"new" { return keyword(Parser.NEW); } -"null" { return keyword(Parser.NULL); } -"class" { return keyword(Parser.CLASS); } -"extends" { return keyword(Parser.EXTENDS); } -"this" { return keyword(Parser.THIS); } -"while" { return keyword(Parser.WHILE); } -"for" { return keyword(Parser.FOR); } -"if" { return keyword(Parser.IF); } -"else" { return keyword(Parser.ELSE); } -"return" { return keyword(Parser.RETURN); } -"break" { return keyword(Parser.BREAK); } -"Print" { return keyword(Parser.PRINT); } -"ReadInteger" { return keyword(Parser.READ_INTEGER); } -"ReadLine" { return keyword(Parser.READ_LINE); } -"static" { return keyword(Parser.STATIC); } -"instanceof" { return keyword(Parser.INSTANCEOF); } - - // 识别操作符的规则 -"<=" { return operator(Parser.LESS_EQUAL); } -">=" { return operator(Parser.GREATER_EQUAL);} -"==" { return operator(Parser.EQUAL); } -"!=" { return operator(Parser.NOT_EQUAL); } -"&&" { return operator(Parser.AND); } -"||" { return operator(Parser.OR); } -{SIMPLE_OPERATOR} { return operator((int)yycharat(0)); } - - // 识别常数的规则 -"true" { return boolConst(true); } -"false" { return boolConst(false); } -{INTEGER} { return intConst(yytext()); } -\" { sloc = getLocation(); - yybegin(S); - buffer = new StringBuilder(); } -{NEWLINE} { issueError(new NewlineInStrError(sloc, MiscUtils.quote(buffer.toString())));} -<> { issueError(new UntermStrError(sloc, MiscUtils.quote(buffer.toString()))); - yybegin(YYINITIAL); } -\" { yybegin(YYINITIAL); - return StringConst(buffer.toString(), sloc); } -"\\n" { buffer.append('\n'); } -"\\t" { buffer.append('\t'); } -"\\\"" { buffer.append('"'); } -"\\\\" { buffer.append('\\'); } -. { buffer.append(yytext()); } - - // 识别标识符的规则 -{IDENTIFIER} { return identifier(yytext()); } - - // 上面规则不能识别的字符怎么处理 -. { issueError(new UnrecogCharError(getLocation(), yycharat(0))); } diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/out/production/698609556_1_decaf_PA1A/decaf/frontend/Parser.y" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/out/production/698609556_1_decaf_PA1A/decaf/frontend/Parser.y" deleted file mode 100644 index 4382012b6..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/out/production/698609556_1_decaf_PA1A/decaf/frontend/Parser.y" +++ /dev/null @@ -1,444 +0,0 @@ -/* - * 本文件提供实现Decaf编译器所需要的BYACC脚本。 - * 在第一阶段中你需要补充完整这个文件中的语法规则。 - * 请参考"YACC--Yet Another Compiler Compiler"中关于如何编写BYACC脚本的说明。 - * - * Keltin Leung - * DCST, Tsinghua University - */ - -%{ -package decaf.frontend; - -import decaf.tree.Tree; -import decaf.tree.Tree.*; -import decaf.error.*; -import java.util.*; -%} - -%Jclass Parser -%Jextends BaseParser -%Jsemantic SemValue -%Jimplements ReduceListener -%Jnorun -%Jnodebug -%Jnoconstruct - -%token VOID BOOL INT STRING CLASS -%token NULL EXTENDS THIS WHILE FOR -%token IF ELSE RETURN BREAK NEW -%token PRINT READ_INTEGER READ_LINE -%token LITERAL -%token IDENTIFIER AND OR STATIC INSTANCEOF -%token LESS_EQUAL GREATER_EQUAL EQUAL NOT_EQUAL -%token '+' '-' '*' '/' '%' '=' '>' '<' '.' -%token ',' ';' '!' '(' ')' '[' ']' '{' '}' - -%left OR -%left AND -%nonassoc EQUAL NOT_EQUAL -%nonassoc LESS_EQUAL GREATER_EQUAL '<' '>' -%left '+' '-' -%left '*' '/' '%' -%nonassoc UMINUS '!' -%nonassoc '[' '.' -%nonassoc ')' EMPTY -%nonassoc ELSE - -%start Program - -%% -Program : ClassList - { - tree = new Tree.TopLevel($1.clist, $1.loc); - } - ; - -ClassList : ClassList ClassDef - { - $$.clist.add($2.cdef); - } - | ClassDef - { - $$.clist = new ArrayList(); - $$.clist.add($1.cdef); - } - ; - -VariableDef : Variable ';' - ; - -Variable : Type IDENTIFIER - { - $$.vdef = new Tree.VarDef($2.ident, $1.type, $2.loc); - } - ; - -Type : INT - { - $$.type = new Tree.TypeIdent(Tree.INT, $1.loc); - } - | VOID - { - $$.type = new Tree.TypeIdent(Tree.VOID, $1.loc); - } - | BOOL - { - $$.type = new Tree.TypeIdent(Tree.BOOL, $1.loc); - } - | STRING - { - $$.type = new Tree.TypeIdent(Tree.STRING, $1.loc); - } - | CLASS IDENTIFIER - { - $$.type = new Tree.TypeClass($2.ident, $1.loc); - } - | Type '[' ']' - { - $$.type = new Tree.TypeArray($1.type, $1.loc); - } - ; - -ClassDef : CLASS IDENTIFIER ExtendsClause '{' FieldList '}' - { - $$.cdef = new Tree.ClassDef($2.ident, $3.ident, $5.flist, $1.loc); - } - ; - -ExtendsClause : EXTENDS IDENTIFIER - { - $$.ident = $2.ident; - } - | /* empty */ - { - $$ = new SemValue(); - } - ; - -FieldList : FieldList VariableDef - { - $$.flist.add($2.vdef); - } - | FieldList FunctionDef - { - $$.flist.add($2.fdef); - } - | /* empty */ - { - $$ = new SemValue(); - $$.flist = new ArrayList(); - } - ; - -Formals : VariableList - | /* empty */ - { - $$ = new SemValue(); - $$.vlist = new ArrayList(); - } - ; - -VariableList : VariableList ',' Variable - { - $$.vlist.add($3.vdef); - } - | Variable - { - $$.vlist = new ArrayList(); - $$.vlist.add($1.vdef); - } - ; - -FunctionDef : STATIC Type IDENTIFIER '(' Formals ')' StmtBlock - { - $$.fdef = new MethodDef(true, $3.ident, $2.type, $5.vlist, (Block) $7.stmt, $3.loc); - } - | Type IDENTIFIER '(' Formals ')' StmtBlock - { - $$.fdef = new MethodDef(false, $2.ident, $1.type, $4.vlist, (Block) $6.stmt, $2.loc); - } - ; - -StmtBlock : '{' StmtList '}' - { - $$.stmt = new Block($2.slist, $1.loc); - } - ; - -StmtList : StmtList Stmt - { - $$.slist.add($2.stmt); - } - | /* empty */ - { - $$ = new SemValue(); - $$.slist = new ArrayList(); - } - ; - -Stmt : VariableDef - { - $$.stmt = $1.vdef; - } - - | SimpleStmt ';' - { - if ($$.stmt == null) { - $$.stmt = new Tree.Skip($2.loc); - } - } - | IfStmt - | WhileStmt - | ForStmt - | ReturnStmt ';' - | PrintStmt ';' - | BreakStmt ';' - | StmtBlock - ; - -SimpleStmt : LValue '=' Expr - { - $$.stmt = new Tree.Assign($1.lvalue, $3.expr, $2.loc); - } - | Call - { - $$.stmt = new Tree.Exec($1.expr, $1.loc); - } - | /* empty */ - { - $$ = new SemValue(); - } - ; - -Receiver : Expr '.' - | /* empty */ - { - $$ = new SemValue(); - } - ; - -LValue : Receiver IDENTIFIER - { - $$.lvalue = new Tree.Ident($1.expr, $2.ident, $2.loc); - if ($1.loc == null) { - $$.loc = $2.loc; - } - } - | Expr '[' Expr ']' - { - $$.lvalue = new Tree.Indexed($1.expr, $3.expr, $1.loc); - } - ; - -Call : Receiver IDENTIFIER '(' Actuals ')' - { - $$.expr = new Tree.CallExpr($1.expr, $2.ident, $4.elist, $2.loc); - if ($1.loc == null) { - $$.loc = $2.loc; - } - } - ; - -Expr : LValue - { - $$.expr = $1.lvalue; - } - | Call - | Constant - | Expr '+' Expr - { - $$.expr = new Tree.Binary(Tree.PLUS, $1.expr, $3.expr, $2.loc); - } - | Expr '-' Expr - { - $$.expr = new Tree.Binary(Tree.MINUS, $1.expr, $3.expr, $2.loc); - } - | Expr '*' Expr - { - $$.expr = new Tree.Binary(Tree.MUL, $1.expr, $3.expr, $2.loc); - } - | Expr '/' Expr - { - $$.expr = new Tree.Binary(Tree.DIV, $1.expr, $3.expr, $2.loc); - } - | Expr '%' Expr - { - $$.expr = new Tree.Binary(Tree.MOD, $1.expr, $3.expr, $2.loc); - } - | Expr EQUAL Expr - { - $$.expr = new Tree.Binary(Tree.EQ, $1.expr, $3.expr, $2.loc); - } - | Expr NOT_EQUAL Expr - { - $$.expr = new Tree.Binary(Tree.NE, $1.expr, $3.expr, $2.loc); - } - | Expr '<' Expr - { - $$.expr = new Tree.Binary(Tree.LT, $1.expr, $3.expr, $2.loc); - } - | Expr '>' Expr - { - $$.expr = new Tree.Binary(Tree.GT, $1.expr, $3.expr, $2.loc); - } - | Expr LESS_EQUAL Expr - { - $$.expr = new Tree.Binary(Tree.LE, $1.expr, $3.expr, $2.loc); - } - | Expr GREATER_EQUAL Expr - { - $$.expr = new Tree.Binary(Tree.GE, $1.expr, $3.expr, $2.loc); - } - | Expr AND Expr - { - $$.expr = new Tree.Binary(Tree.AND, $1.expr, $3.expr, $2.loc); - } - | Expr OR Expr - { - $$.expr = new Tree.Binary(Tree.OR, $1.expr, $3.expr, $2.loc); - } - | '(' Expr ')' - { - $$ = $2; - } - | '-' Expr %prec UMINUS - { - $$.expr = new Tree.Unary(Tree.NEG, $2.expr, $1.loc); - } - | '!' Expr - { - $$.expr = new Tree.Unary(Tree.NOT, $2.expr, $1.loc); - } - | READ_INTEGER '(' ')' - { - $$.expr = new Tree.ReadIntExpr($1.loc); - } - | READ_LINE '(' ')' - { - $$.expr = new Tree.ReadLineExpr($1.loc); - } - | THIS - { - $$.expr = new Tree.ThisExpr($1.loc); - } - | NEW IDENTIFIER '(' ')' - { - $$.expr = new Tree.NewClass($2.ident, $1.loc); - } - | NEW Type '[' Expr ']' - { - $$.expr = new Tree.NewArray($2.type, $4.expr, $1.loc); - } - | INSTANCEOF '(' Expr ',' IDENTIFIER ')' - { - $$.expr = new Tree.TypeTest($3.expr, $5.ident, $1.loc); - } - | '(' CLASS IDENTIFIER ')' Expr - { - $$.expr = new Tree.TypeCast($3.ident, $5.expr, $5.loc); - } - ; - -Constant : LITERAL - { - $$.expr = new Tree.Literal($1.typeTag, $1.literal, $1.loc); - } - | NULL - { - $$.expr = new Null($1.loc); - } - ; - -Actuals : ExprList - | /* empty */ - { - $$ = new SemValue(); - $$.elist = new ArrayList(); - } - ; - -ExprList : ExprList ',' Expr - { - $$.elist.add($3.expr); - } - | Expr - { - $$.elist = new ArrayList(); - $$.elist.add($1.expr); - } - ; - -WhileStmt : WHILE '(' Expr ')' Stmt - { - $$.stmt = new Tree.WhileLoop($3.expr, $5.stmt, $1.loc); - } - ; - -ForStmt : FOR '(' SimpleStmt ';' Expr ';' SimpleStmt ')' Stmt - { - $$.stmt = new Tree.ForLoop($3.stmt, $5.expr, $7.stmt, $9.stmt, $1.loc); - } - ; - -BreakStmt : BREAK - { - $$.stmt = new Tree.Break($1.loc); - } - ; - -IfStmt : IF '(' Expr ')' Stmt ElseClause - { - $$.stmt = new Tree.If($3.expr, $5.stmt, $6.stmt, $1.loc); - } - ; - -ElseClause : ELSE Stmt - { - $$.stmt = $2.stmt; - } - | /* empty */ %prec EMPTY - { - $$ = new SemValue(); - } - ; - -ReturnStmt : RETURN Expr - { - $$.stmt = new Tree.Return($2.expr, $1.loc); - } - | RETURN - { - $$.stmt = new Tree.Return(null, $1.loc); - } - ; - -PrintStmt : PRINT '(' ExprList ')' - { - $$.stmt = new Print($3.elist, $1.loc); - } - ; - -%% - - /** - * 打印当前归约所用的语法规则
- * 请勿修改。 - */ - public boolean onReduce(String rule) { - if (rule.startsWith("$$")) - return false; - else - rule = rule.replaceAll(" \\$\\$\\d+", ""); - - if (rule.endsWith(":")) - System.out.println(rule + " "); - else - System.out.println(rule); - return false; - } - - public void diagnose() { - addReduceListener(this); - yyparse(); - } \ No newline at end of file diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/a.txt" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/a.txt" deleted file mode 100644 index 46fc8544c..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/a.txt" +++ /dev/null @@ -1,13 +0,0 @@ -class Main { - bool field; - - class Main another; - static int main() { -a=a+r?b?c?d?c:e:e:d:a?d:e; - return this.foo(5).length(); -repeat{ -go(); -a=2;} -until (1+2); - } -} \ No newline at end of file diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/Driver$1.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/Driver$1.class" deleted file mode 100644 index f034aaafe..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/Driver$1.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/Driver.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/Driver.class" deleted file mode 100644 index 7d54021f1..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/Driver.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/Location.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/Location.class" deleted file mode 100644 index 6badcb17c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/Location.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/Option$Level.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/Option$Level.class" deleted file mode 100644 index b785ae7c5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/Option$Level.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/Option.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/Option.class" deleted file mode 100644 index fd8e166a4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/Option.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/BadArgCountError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/BadArgCountError.class" deleted file mode 100644 index f662e0cf8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/BadArgCountError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/BadArgTypeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/BadArgTypeError.class" deleted file mode 100644 index 393dc7353..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/BadArgTypeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/BadArrElementError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/BadArrElementError.class" deleted file mode 100644 index 4401c85dd..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/BadArrElementError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/BadInheritanceError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/BadInheritanceError.class" deleted file mode 100644 index 25c822cb7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/BadInheritanceError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/BadLengthArgError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/BadLengthArgError.class" deleted file mode 100644 index 40a61d226..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/BadLengthArgError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/BadLengthError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/BadLengthError.class" deleted file mode 100644 index 6522300bb..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/BadLengthError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/BadNewArrayLength.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/BadNewArrayLength.class" deleted file mode 100644 index 4896b6f26..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/BadNewArrayLength.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/BadOverrideError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/BadOverrideError.class" deleted file mode 100644 index 0736b0cfb..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/BadOverrideError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/BadPrintArgError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/BadPrintArgError.class" deleted file mode 100644 index 4d3a7cffc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/BadPrintArgError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/BadReturnTypeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/BadReturnTypeError.class" deleted file mode 100644 index 5ae7b14de..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/BadReturnTypeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/BadTestExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/BadTestExpr.class" deleted file mode 100644 index 877a9c2ca..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/BadTestExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/BadVarTypeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/BadVarTypeError.class" deleted file mode 100644 index c50206763..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/BadVarTypeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/BreakOutOfLoopError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/BreakOutOfLoopError.class" deleted file mode 100644 index dd1b42e05..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/BreakOutOfLoopError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/ClassNotFoundError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/ClassNotFoundError.class" deleted file mode 100644 index 8c23cd0c6..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/ClassNotFoundError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/DecafError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/DecafError.class" deleted file mode 100644 index 56d8b7084..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/DecafError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/DeclConflictError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/DeclConflictError.class" deleted file mode 100644 index f4b87bcc4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/DeclConflictError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/FieldNotAccessError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/FieldNotAccessError.class" deleted file mode 100644 index 96111e8a6..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/FieldNotAccessError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/FieldNotFoundError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/FieldNotFoundError.class" deleted file mode 100644 index f1560c48f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/FieldNotFoundError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/IncompatBinOpError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/IncompatBinOpError.class" deleted file mode 100644 index 4bbed59e7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/IncompatBinOpError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/IncompatUnOpError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/IncompatUnOpError.class" deleted file mode 100644 index f5a9e31bc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/IncompatUnOpError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/IntTooLargeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/IntTooLargeError.class" deleted file mode 100644 index 44931104f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/IntTooLargeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/MsgError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/MsgError.class" deleted file mode 100644 index 080cb6161..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/MsgError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/NewlineInStrError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/NewlineInStrError.class" deleted file mode 100644 index 250e6b9ac..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/NewlineInStrError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/NoMainClassError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/NoMainClassError.class" deleted file mode 100644 index 4e709a981..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/NoMainClassError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/NotArrayError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/NotArrayError.class" deleted file mode 100644 index 28d40b882..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/NotArrayError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/NotClassError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/NotClassError.class" deleted file mode 100644 index 4ea6c47bc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/NotClassError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/NotClassFieldError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/NotClassFieldError.class" deleted file mode 100644 index bc05ae05a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/NotClassFieldError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/NotClassMethodError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/NotClassMethodError.class" deleted file mode 100644 index b6f9e584f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/NotClassMethodError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/OverridingVarError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/OverridingVarError.class" deleted file mode 100644 index 9f7e77981..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/OverridingVarError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/RefNonStaticError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/RefNonStaticError.class" deleted file mode 100644 index 73a781b4a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/RefNonStaticError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/RuntimeError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/RuntimeError.class" deleted file mode 100644 index 55e3b77cf..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/RuntimeError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/SubNotIntError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/SubNotIntError.class" deleted file mode 100644 index 364a3889a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/SubNotIntError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/ThisInStaticFuncError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/ThisInStaticFuncError.class" deleted file mode 100644 index e84ffa395..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/ThisInStaticFuncError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/UndeclVarError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/UndeclVarError.class" deleted file mode 100644 index d1945f289..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/UndeclVarError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/UnrecogCharError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/UnrecogCharError.class" deleted file mode 100644 index cf7857e28..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/UnrecogCharError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/UntermStrError.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/UntermStrError.class" deleted file mode 100644 index 93edd524e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/error/UntermStrError.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/frontend/BaseLexer.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/frontend/BaseLexer.class" deleted file mode 100644 index 106927055..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/frontend/BaseLexer.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/frontend/BaseParser.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/frontend/BaseParser.class" deleted file mode 100644 index 1b2dceb51..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/frontend/BaseParser.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/frontend/Lexer.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/frontend/Lexer.class" deleted file mode 100644 index 56ac34f45..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/frontend/Lexer.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/frontend/Parser.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/frontend/Parser.class" deleted file mode 100644 index bb8ca920e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/frontend/Parser.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/frontend/ParserHelper.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/frontend/ParserHelper.class" deleted file mode 100644 index cac8eeeca..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/frontend/ParserHelper.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/frontend/ReduceListener.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/frontend/ReduceListener.class" deleted file mode 100644 index 8dc1e198c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/frontend/ReduceListener.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/frontend/SemValue.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/frontend/SemValue.class" deleted file mode 100644 index 53b9fdeb8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/frontend/SemValue.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Apply.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Apply.class" deleted file mode 100644 index 11c99efb5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Apply.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Assign.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Assign.class" deleted file mode 100644 index fa24a480b..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Assign.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Binary.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Binary.class" deleted file mode 100644 index 6fa4dd82e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Binary.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Block.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Block.class" deleted file mode 100644 index 68a076f94..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Block.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Break.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Break.class" deleted file mode 100644 index 40a2bf93c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Break.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$CallExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$CallExpr.class" deleted file mode 100644 index b13d87654..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$CallExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Case.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Case.class" deleted file mode 100644 index bcdcbb92d..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Case.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$ClassDef.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$ClassDef.class" deleted file mode 100644 index b4fbcb81f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$ClassDef.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Continue.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Continue.class" deleted file mode 100644 index 376932bd8..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Continue.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Exec.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Exec.class" deleted file mode 100644 index 8c749ce62..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Exec.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Expr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Expr.class" deleted file mode 100644 index 0592b1925..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Expr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$ForLoop.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$ForLoop.class" deleted file mode 100644 index 9b639ae6b..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$ForLoop.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Ident.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Ident.class" deleted file mode 100644 index 9ce107387..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Ident.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$If.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$If.class" deleted file mode 100644 index fef7a2a88..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$If.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Indexed.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Indexed.class" deleted file mode 100644 index 945e096ce..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Indexed.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$LValue$Kind.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$LValue$Kind.class" deleted file mode 100644 index 7d91a8ae0..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$LValue$Kind.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$LValue.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$LValue.class" deleted file mode 100644 index 38cac8a5e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$LValue.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Literal.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Literal.class" deleted file mode 100644 index c3a1bb363..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Literal.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$MethodDef.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$MethodDef.class" deleted file mode 100644 index 879358c58..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$MethodDef.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$NewArray.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$NewArray.class" deleted file mode 100644 index e190e5ca5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$NewArray.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$NewClass.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$NewClass.class" deleted file mode 100644 index ae5ca67b5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$NewClass.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Null.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Null.class" deleted file mode 100644 index 7ea005df7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Null.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Print.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Print.class" deleted file mode 100644 index fa262aa98..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Print.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$ReadIntExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$ReadIntExpr.class" deleted file mode 100644 index 615fa8bf3..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$ReadIntExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$ReadLineExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$ReadLineExpr.class" deleted file mode 100644 index d57043ef0..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$ReadLineExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Repeat.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Repeat.class" deleted file mode 100644 index 4aaaf9cfa..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Repeat.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Return.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Return.class" deleted file mode 100644 index d3fd62c60..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Return.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Skip.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Skip.class" deleted file mode 100644 index 1f96c671d..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Skip.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Switch.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Switch.class" deleted file mode 100644 index 1171e21e4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Switch.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Ternary.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Ternary.class" deleted file mode 100644 index d8a9456c1..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Ternary.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$ThisExpr.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$ThisExpr.class" deleted file mode 100644 index b25f6d7de..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$ThisExpr.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$TopLevel.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$TopLevel.class" deleted file mode 100644 index b8951a94c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$TopLevel.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$TypeArray.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$TypeArray.class" deleted file mode 100644 index db7ee6b22..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$TypeArray.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$TypeCast.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$TypeCast.class" deleted file mode 100644 index a26da9b7a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$TypeCast.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$TypeClass.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$TypeClass.class" deleted file mode 100644 index 0adc27e3f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$TypeClass.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$TypeIdent.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$TypeIdent.class" deleted file mode 100644 index f8da38dfc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$TypeIdent.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$TypeLiteral.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$TypeLiteral.class" deleted file mode 100644 index 7b407f0c7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$TypeLiteral.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$TypeTest.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$TypeTest.class" deleted file mode 100644 index e1ae29165..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$TypeTest.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Unary.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Unary.class" deleted file mode 100644 index a95b2f453..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Unary.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$VarDef.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$VarDef.class" deleted file mode 100644 index d94589d91..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$VarDef.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Visitor.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Visitor.class" deleted file mode 100644 index fd8c3b7f2..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$Visitor.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$WhileLoop.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$WhileLoop.class" deleted file mode 100644 index cd36803db..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree$WhileLoop.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree.class" deleted file mode 100644 index d20af886e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/tree/Tree.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/utils/IndentPrintWriter.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/utils/IndentPrintWriter.class" deleted file mode 100644 index 5b7d47cfe..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/utils/IndentPrintWriter.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/utils/MiscUtils.class" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/utils/MiscUtils.class" deleted file mode 100644 index c8920db8c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/bin/decaf/utils/MiscUtils.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/decaf.jar" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/decaf.jar" deleted file mode 100644 index 1b25bbab0..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/decaf.jar" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/allclasses-frame.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/allclasses-frame.html" deleted file mode 100644 index af5d3c148..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/allclasses-frame.html" +++ /dev/null @@ -1,105 +0,0 @@ - - - - - -All Classes - - - - - -

All Classes

- - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/allclasses-noframe.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/allclasses-noframe.html" deleted file mode 100644 index ebf5ff863..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/allclasses-noframe.html" +++ /dev/null @@ -1,105 +0,0 @@ - - - - - -All Classes - - - - - -

All Classes

- - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/constant-values.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/constant-values.html" deleted file mode 100644 index 7545f1c76..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/constant-values.html" +++ /dev/null @@ -1,1120 +0,0 @@ - - - - - -Constant Field Values - - - - - - - - -
- - - - - - - -
- - -
-

Constant Field Values

-

Contents

- -
-
- - -

decaf.*

-
    -
  • - - - - - - - - - - - - - - - - - - - -
    decaf.Option 
    Modifier and TypeConstant FieldValue
    - -private static final java.lang.StringmainClassName"Main"
    - -private static final java.lang.StringmainFuncName"main"
    -
  • -
- - - -

decaf.error.*

- - - - -

decaf.frontend.*

-
    -
  • - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    decaf.frontend.Lexer 
    Modifier and TypeConstant FieldValue
    - -public static final intS1
    - -public static final intYYEOF-1
    - -public static final intYYINITIAL0
    - -private static final java.lang.StringZZ_ACTION_PACKED_0"\u0002\u0000\u0001\u0001\u0002\u0002\u0001\u0003\u0001\u0004\u0001\u0003\u0006\u0005\u0001\u0002\r\u0004\u0002\u0001\u0001\u0006\u0001\u0007\u0002\b\u0001\t\u0001\u0007\u0002\u0000\u0001\n\u0001\u000b\u0001\f\u0001\r\u0002\u0004\u0001\u000e\u0010\u0004\u0001\u000f\u0001\u0010\u0001\u0011\u0001\u0012\u0001\u0013\u0001\u0014\u0001\u0003\u0001\u0004\u0001\u0015\u0001\u0004\u0001\u0016\f\u0004\u0001\u0017\u0003\u0004\u0001\u0018\u0001\u0004\u0001\u0019\u0001\u001a\u0001\u001b\u0001\u001c\u0004\u0004\u0001\u001d\u0007\u0004\u0001\u001e\u0004\u0004\u0001\u001f\u0001 \u0001!\u0001\"\u0003\u0004\u0001#\u0001$\u0001%\u0004\u0004\u0001&\u0004\u0004\u0001\'\u0002\u0004\u0001(\u0001\u0004\u0001)"
    - -private static final intZZ_BUFFERSIZE16384
    - -private static final java.lang.StringZZ_CMAP_PACKED"\t\u0000\u0001\u000f\u0001\u0002\u0002\u0000\u0001\u0001\u0012\u0000\u0001\u000f\u0001\u000e\u0001*\u0002\u0000\u0001\t\u0001(\u0001\u0000\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\n\u0001\u0005\t\u0003\u0001\u0000\u0001\t\u0001\f\u0001\u000b\u0001\r\u0002\u0000\u0006\u0004\u0002\u0007\u0001&\u0002\u0007\u0001\'\u0003\u0007\u0001$\u0001\u0007\u0001%\u0005\u0007\u0001\u0006\u0002\u0007\u0001\t\u0001+\u0001\t\u0001\u0000\u0001\b\u0001\u0000\u0001\u001f\u0001\u0016\u0001\u001e\u0001\u0013\u0001\u001b\u0001\"\u0001\u001a\u0001!\u0001\u0012\u0001\u0007\u0001#\u0001\u0017\u0001\u0007\u0001\u0014\u0001\u0011\u0002\u0007\u0001\u0019\u0001\u0018\u0001\u0015\u0001\u001d\u0001\u0010\u0001\u001c\u0001 \u0002\u0007\u0001\t\u0001)\u0001\t\uff82\u0000"
    - -private static final intZZ_NO_MATCH1
    - -private static final intZZ_PUSHBACK_2BIG2
    - -private static final intZZ_UNKNOWN_ERROR0
    -
  • -
  • - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    decaf.frontend.Parser 
    Modifier and TypeConstant FieldValue
    - -public static final shortAND277
    - -public static final shortBOOL258
    - -public static final shortBREAK270
    - -public static final shortCLASS261
    - -public static final shortELSE268
    - -public static final shortEMPTY286
    - -public static final shortEQUAL283
    - -public static final shortEXTENDS263
    - -public static final shortFOR266
    - -public static final shortGREATER_EQUAL282
    - -public static final shortIDENTIFIER276
    - -public static final shortIF267
    - -public static final shortINSTANCEOF280
    - -public static final shortINT259
    - -public static final shortLESS_EQUAL281
    - -public static final shortLITERAL275
    - -public static final shortNEW271
    - -public static final shortNOT_EQUAL284
    - -public static final shortNULL262
    - -public static final shortOR278
    - -public static final shortPRINT272
    - -public static final shortREAD_INTEGER273
    - -public static final shortREAD_LINE274
    - -public static final shortRETURN269
    - -public static final shortSTATIC279
    - -public static final shortSTRING260
    - -public static final shortTHIS264
    - -public static final shortUMINUS285
    - -public static final shortVOID257
    - -public static final shortWHILE265
    - -public static final shortYYERRCODE256
    - -static final shortYYFINAL2
    - -static final shortYYMAXTOKEN286
    - -static final intYYSTACKSIZE500
    - -static final intYYTABLESIZE1031
    -
  • -
- - - -

decaf.tree.*

- -
- -
- - - - - - - -
- - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/Driver.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/Driver.html" deleted file mode 100644 index b1b676db0..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/Driver.html" +++ /dev/null @@ -1,440 +0,0 @@ - - - - - -Driver - - - - - - - - - - - - -
-
decaf
-

Class Driver

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • decaf.Driver
    • -
    -
  • -
-
-
    -
  • -
    -
    -
    public final class Driver
    -extends java.lang.Object
    -
  • -
-
-
- -
-
-
    -
  • - - - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        Driver

        -
        public Driver()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        checkPoint

        -
        public void checkPoint()
        -
      • -
      - - - -
        -
      • -

        compile

        -
        private void compile()
        -
      • -
      - - - -
        -
      • -

        getDriver

        -
        public static Driver getDriver()
        -
      • -
      - - - -
        -
      • -

        getOption

        -
        public Option getOption()
        -
      • -
      - - - -
        -
      • -

        init

        -
        private void init()
        -
      • -
      - - - -
        -
      • -

        issueError

        -
        public void issueError(DecafError error)
        -
      • -
      - - - -
        -
      • -

        main

        -
        public static void main(java.lang.String[] args)
        -                 throws java.io.IOException
        -
        -
        Throws:
        -
        java.io.IOException
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/Location.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/Location.html" deleted file mode 100644 index 27aae9eb2..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/Location.html" +++ /dev/null @@ -1,377 +0,0 @@ - - - - - -Location - - - - - - - - - - - - -
-
decaf
-

Class Location

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • decaf.Location
    • -
    -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    java.lang.Comparable<Location>
    -
    -
    -
    -
    public class Location
    -extends java.lang.Object
    -implements java.lang.Comparable<Location>
    -
    语法符号在源代码中的位置
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Summary

      - - - - - - - - - - - - - - - - - - -
      Fields 
      Modifier and TypeField and Description
      private intcolumn -
      该符号第一个字符所在的列号
      -
      private intline -
      该符号第一个字符所在的行号
      -
      static LocationNO_LOCATION 
      -
    • -
    - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      Location(int lin, - int col) -
      构造一个位置记录
      -
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - -
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      intcompareTo(Location o) 
      java.lang.StringtoString() -
      转换成(x,y)形式的字符串
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        column

        -
        private int column
        -
        该符号第一个字符所在的列号
        -
      • -
      - - - -
        -
      • -

        line

        -
        private int line
        -
        该符号第一个字符所在的行号
        -
      • -
      - - - -
        -
      • -

        NO_LOCATION

        -
        public static final Location NO_LOCATION
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        Location

        -
        public Location(int lin,
        -                int col)
        -
        构造一个位置记录
        -
        -
        Parameters:
        -
        lin - 行号
        -
        col - 列号
        -
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        compareTo

        -
        public int compareTo(Location o)
        -
        -
        Specified by:
        -
        compareTo in interface java.lang.Comparable<Location>
        -
        -
      • -
      - - - -
        -
      • -

        toString

        -
        public java.lang.String toString()
        -
        转换成(x,y)形式的字符串
        -
        -
        Overrides:
        -
        toString in class java.lang.Object
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/Option.Level.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/Option.Level.html" deleted file mode 100644 index e3ea2b7ff..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/Option.Level.html" +++ /dev/null @@ -1,379 +0,0 @@ - - - - - -Option.Level - - - - - - - - - - - - -
-
decaf
-

Enum Option.Level

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • java.lang.Enum<Option.Level>
    • -
    • -
        -
      • decaf.Option.Level
      • -
      -
    • -
    -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    java.io.Serializable, java.lang.Comparable<Option.Level>
    -
    -
    -
    Enclosing class:
    -
    Option
    -
    -
    -
    -
    public static enum Option.Level
    -extends java.lang.Enum<Option.Level>
    -
  • -
-
-
-
    -
  • - - - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - -
      All Methods Static Methods Concrete Methods 
      Modifier and TypeMethod and Description
      static Option.LevelvalueOf(java.lang.String name) -
      Returns the enum constant of this type with the specified name.
      -
      static Option.Level[]values() -
      Returns an array containing the constants of this enum type, in -the order they are declared.
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Enum

        -clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
      • -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -getClass, notify, notifyAll, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - - - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        valueOf

        -
        public static Option.Level valueOf(java.lang.String name)
        -
        Returns the enum constant of this type with the specified name. -The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are -not permitted.)
        -
        -
        Parameters:
        -
        name - the name of the enum constant to be returned.
        -
        Returns:
        -
        the enum constant with the specified name
        -
        Throws:
        -
        java.lang.IllegalArgumentException - if this enum type has no constant with the specified name
        -
        java.lang.NullPointerException - if the argument is null
        -
        -
      • -
      - - - -
        -
      • -

        values

        -
        public static Option.Level[] values()
        -
        Returns an array containing the constants of this enum type, in -the order they are declared. This method may be used to iterate -over the constants as follows: -
        -for (Option.Level c : Option.Level.values())
        -    System.out.println(c);
        -
        -
        -
        Returns:
        -
        an array containing the constants of this enum type, in the order they are declared
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/Option.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/Option.html" deleted file mode 100644 index 8b03cb466..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/Option.html" +++ /dev/null @@ -1,527 +0,0 @@ - - - - - -Option - - - - - - - - - - - - -
-
decaf
-

Class Option

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • decaf.Option
    • -
    -
  • -
-
-
    -
  • -
    -
    -
    public final class Option
    -extends java.lang.Object
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Nested Class Summary

      - - - - - - - - - - -
      Nested Classes 
      Modifier and TypeClass and Description
      static class Option.Level 
      -
    • -
    - -
      -
    • - - -

      Field Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Fields 
      Modifier and TypeField and Description
      private java.lang.StringdstFileName 
      private java.io.PrintStreamerr 
      private java.io.InputStreaminput 
      private Option.Levellevel 
      private static java.lang.StringmainClassName 
      private static java.lang.StringmainFuncName 
      private java.io.PrintStreamoutput 
      private java.lang.StringsrcFileName 
      -
    • -
    - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      Option(java.lang.String[] args) 
      -
    • -
    - - -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        dstFileName

        -
        private java.lang.String dstFileName
        -
      • -
      - - - -
        -
      • -

        err

        -
        private java.io.PrintStream err
        -
      • -
      - - - -
        -
      • -

        input

        -
        private java.io.InputStream input
        -
      • -
      - - - - - - - -
        -
      • -

        mainClassName

        -
        private static final java.lang.String mainClassName
        -
        -
        See Also:
        -
        Constant Field Values
        -
        -
      • -
      - - - -
        -
      • -

        mainFuncName

        -
        private static final java.lang.String mainFuncName
        -
        -
        See Also:
        -
        Constant Field Values
        -
        -
      • -
      - - - -
        -
      • -

        output

        -
        private java.io.PrintStream output
        -
      • -
      - - - -
        -
      • -

        srcFileName

        -
        private java.lang.String srcFileName
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        Option

        -
        public Option(java.lang.String[] args)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getDstFileName

        -
        public java.lang.String getDstFileName()
        -
      • -
      - - - -
        -
      • -

        getErr

        -
        public java.io.PrintStream getErr()
        -
      • -
      - - - -
        -
      • -

        getInput

        -
        public java.io.InputStream getInput()
        -
      • -
      - - - - - - - -
        -
      • -

        getMainClassName

        -
        public java.lang.String getMainClassName()
        -
      • -
      - - - -
        -
      • -

        getMainFuncName

        -
        public java.lang.String getMainFuncName()
        -
      • -
      - - - -
        -
      • -

        getOutput

        -
        public java.io.PrintStream getOutput()
        -
      • -
      - - - -
        -
      • -

        getSrcFileName

        -
        public java.lang.String getSrcFileName()
        -
      • -
      - - - -
        -
      • -

        usage

        -
        private java.lang.String usage()
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/class-use/Driver.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/class-use/Driver.html" deleted file mode 100644 index c1b96b2c7..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/class-use/Driver.html" +++ /dev/null @@ -1,175 +0,0 @@ - - - - - -Uses of Class decaf.Driver - - - - - - - - - - - -
-

Uses of Class
decaf.Driver

-
-
-
    -
  • - - - - - - - - - - - - -
    Packages that use Driver 
    PackageDescription
    decaf 
    -
  • -
  • - -
  • -
-
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/class-use/Location.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/class-use/Location.html" deleted file mode 100644 index ddb628458..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/class-use/Location.html" +++ /dev/null @@ -1,638 +0,0 @@ - - - - - -Uses of Class decaf.Location - - - - - - - - - - - -
-

Uses of Class
decaf.Location

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/class-use/Option.Level.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/class-use/Option.Level.html" deleted file mode 100644 index f45cc8d27..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/class-use/Option.Level.html" +++ /dev/null @@ -1,188 +0,0 @@ - - - - - -Uses of Class decaf.Option.Level - - - - - - - - - - - -
-

Uses of Class
decaf.Option.Level

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/class-use/Option.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/class-use/Option.html" deleted file mode 100644 index fe5a94bcb..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/class-use/Option.html" +++ /dev/null @@ -1,175 +0,0 @@ - - - - - -Uses of Class decaf.Option - - - - - - - - - - - -
-

Uses of Class
decaf.Option

-
-
-
    -
  • - - - - - - - - - - - - -
    Packages that use Option 
    PackageDescription
    decaf 
    -
  • -
  • - -
  • -
-
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/BadArgCountError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/BadArgCountError.html" deleted file mode 100644 index d1ad7402c..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/BadArgCountError.html" +++ /dev/null @@ -1,364 +0,0 @@ - - - - - -BadArgCountError - - - - - - - - - - - - -
-
decaf.error
-

Class BadArgCountError

-
-
- -
-
    -
  • -
    -
    -
    public class BadArgCountError
    -extends DecafError
    -
    example:function 'gotoMars' expects 1 argument(s) but 3 given
    - PA2
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Summary

      - - - - - - - - - - - - - - - - - - -
      Fields 
      Modifier and TypeField and Description
      private intcount 
      private intexpect 
      private java.lang.Stringmethod 
      - -
    • -
    - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      BadArgCountError(Location location, - java.lang.String method, - int expect, - int count) 
      -
    • -
    - - -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        count

        -
        private int count
        -
      • -
      - - - -
        -
      • -

        expect

        -
        private int expect
        -
      • -
      - - - -
        -
      • -

        method

        -
        private java.lang.String method
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        BadArgCountError

        -
        public BadArgCountError(Location location,
        -                        java.lang.String method,
        -                        int expect,
        -                        int count)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getErrMsg

        -
        protected java.lang.String getErrMsg()
        -
        -
        Specified by:
        -
        getErrMsg in class DecafError
        -
        Returns:
        -
        返回错误的具体描述
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/BadArgTypeError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/BadArgTypeError.html" deleted file mode 100644 index 4233af99c..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/BadArgTypeError.html" +++ /dev/null @@ -1,365 +0,0 @@ - - - - - -BadArgTypeError - - - - - - - - - - - - -
-
decaf.error
-

Class BadArgTypeError

-
-
- -
-
    -
  • -
    -
    -
    public class BadArgTypeError
    -extends DecafError
    -
    example:incompatible argument 3: int given, bool expected
    - 3表示发生错误的是第三个参数
    - PA2
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Summary

      - - - - - - - - - - - - - - - - - - -
      Fields 
      Modifier and TypeField and Description
      private intcount 
      private java.lang.Stringexpect 
      private java.lang.Stringgiven 
      - -
    • -
    - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      BadArgTypeError(Location location, - int count, - java.lang.String given, - java.lang.String expect) 
      -
    • -
    - - -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        count

        -
        private int count
        -
      • -
      - - - -
        -
      • -

        expect

        -
        private java.lang.String expect
        -
      • -
      - - - -
        -
      • -

        given

        -
        private java.lang.String given
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        BadArgTypeError

        -
        public BadArgTypeError(Location location,
        -                       int count,
        -                       java.lang.String given,
        -                       java.lang.String expect)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getErrMsg

        -
        protected java.lang.String getErrMsg()
        -
        -
        Specified by:
        -
        getErrMsg in class DecafError
        -
        Returns:
        -
        返回错误的具体描述
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/BadArrElementError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/BadArrElementError.html" deleted file mode 100644 index a4018fc6c..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/BadArrElementError.html" +++ /dev/null @@ -1,304 +0,0 @@ - - - - - -BadArrElementError - - - - - - - - - - - - -
-
decaf.error
-

Class BadArrElementError

-
-
- -
-
    -
  • -
    -
    -
    public class BadArrElementError
    -extends DecafError
    -
    example:array base type must be non-void type
    - PA2
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        BadArrElementError

        -
        public BadArrElementError(Location location)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getErrMsg

        -
        protected java.lang.String getErrMsg()
        -
        -
        Specified by:
        -
        getErrMsg in class DecafError
        -
        Returns:
        -
        返回错误的具体描述
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/BadInheritanceError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/BadInheritanceError.html" deleted file mode 100644 index ffaab3751..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/BadInheritanceError.html" +++ /dev/null @@ -1,304 +0,0 @@ - - - - - -BadInheritanceError - - - - - - - - - - - - -
-
decaf.error
-

Class BadInheritanceError

-
-
- -
-
    -
  • -
    -
    -
    public class BadInheritanceError
    -extends DecafError
    -
    example:illegal class inheritance (should be a cyclic)
    - PA2
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        BadInheritanceError

        -
        public BadInheritanceError(Location location)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getErrMsg

        -
        protected java.lang.String getErrMsg()
        -
        -
        Specified by:
        -
        getErrMsg in class DecafError
        -
        Returns:
        -
        返回错误的具体描述
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/BadLengthArgError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/BadLengthArgError.html" deleted file mode 100644 index e4aa31bed..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/BadLengthArgError.html" +++ /dev/null @@ -1,334 +0,0 @@ - - - - - -BadLengthArgError - - - - - - - - - - - - -
-
decaf.error
-

Class BadLengthArgError

-
-
- -
-
    -
  • -
    -
    -
    public class BadLengthArgError
    -extends DecafError
    -
    example:function 'length' expects 0 argument(s) but 2 given
    - PA2
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Summary

      - - - - - - - - - - -
      Fields 
      Modifier and TypeField and Description
      private intcount 
      - -
    • -
    - - - - -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        count

        -
        private int count
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        BadLengthArgError

        -
        public BadLengthArgError(Location location,
        -                         int count)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getErrMsg

        -
        protected java.lang.String getErrMsg()
        -
        -
        Specified by:
        -
        getErrMsg in class DecafError
        -
        Returns:
        -
        返回错误的具体描述
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/BadLengthError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/BadLengthError.html" deleted file mode 100644 index d520f1bd2..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/BadLengthError.html" +++ /dev/null @@ -1,304 +0,0 @@ - - - - - -BadLengthError - - - - - - - - - - - - -
-
decaf.error
-

Class BadLengthError

-
-
- -
-
    -
  • -
    -
    -
    public class BadLengthError
    -extends DecafError
    -
    example:'length' can only be applied to arrays
    - PA2
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        BadLengthError

        -
        public BadLengthError(Location location)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getErrMsg

        -
        protected java.lang.String getErrMsg()
        -
        -
        Specified by:
        -
        getErrMsg in class DecafError
        -
        Returns:
        -
        返回错误的具体描述
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/BadNewArrayLength.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/BadNewArrayLength.html" deleted file mode 100644 index 24963f1ec..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/BadNewArrayLength.html" +++ /dev/null @@ -1,304 +0,0 @@ - - - - - -BadNewArrayLength - - - - - - - - - - - - -
-
decaf.error
-

Class BadNewArrayLength

-
-
- -
-
    -
  • -
    -
    -
    public class BadNewArrayLength
    -extends DecafError
    -
    example:new array length must be an integer
    - PA2
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        BadNewArrayLength

        -
        public BadNewArrayLength(Location location)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getErrMsg

        -
        protected java.lang.String getErrMsg()
        -
        -
        Specified by:
        -
        getErrMsg in class DecafError
        -
        Returns:
        -
        返回错误的具体描述
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/BadOverrideError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/BadOverrideError.html" deleted file mode 100644 index 02ee752a8..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/BadOverrideError.html" +++ /dev/null @@ -1,350 +0,0 @@ - - - - - -BadOverrideError - - - - - - - - - - - - -
-
decaf.error
-

Class BadOverrideError

-
-
- -
-
    -
  • -
    -
    -
    public class BadOverrideError
    -extends DecafError
    -
    example:overriding method 'tooold' doesn't match the type signature in class - 'duckyaya'
    - PA2
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Summary

      - - - - - - - - - - - - - - -
      Fields 
      Modifier and TypeField and Description
      private java.lang.StringfuncName 
      private java.lang.StringparentName 
      - -
    • -
    - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      BadOverrideError(Location location, - java.lang.String funcName, - java.lang.String parentName) 
      -
    • -
    - - -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        funcName

        -
        private java.lang.String funcName
        -
      • -
      - - - -
        -
      • -

        parentName

        -
        private java.lang.String parentName
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        BadOverrideError

        -
        public BadOverrideError(Location location,
        -                        java.lang.String funcName,
        -                        java.lang.String parentName)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getErrMsg

        -
        protected java.lang.String getErrMsg()
        -
        -
        Specified by:
        -
        getErrMsg in class DecafError
        -
        Returns:
        -
        返回错误的具体描述
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/BadPrintArgError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/BadPrintArgError.html" deleted file mode 100644 index 1ed5341de..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/BadPrintArgError.html" +++ /dev/null @@ -1,350 +0,0 @@ - - - - - -BadPrintArgError - - - - - - - - - - - - -
-
decaf.error
-

Class BadPrintArgError

-
-
- -
-
    -
  • -
    -
    -
    public class BadPrintArgError
    -extends DecafError
    -
    example:incompatible argument 3: int[] given, int/bool/string expected
    - 3表示发生错误的是第三个参数
    - PA2
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Summary

      - - - - - - - - - - - - - - -
      Fields 
      Modifier and TypeField and Description
      private java.lang.Stringcount 
      private java.lang.Stringtype 
      - -
    • -
    - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      BadPrintArgError(Location location, - java.lang.String count, - java.lang.String type) 
      -
    • -
    - - -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        count

        -
        private java.lang.String count
        -
      • -
      - - - -
        -
      • -

        type

        -
        private java.lang.String type
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        BadPrintArgError

        -
        public BadPrintArgError(Location location,
        -                        java.lang.String count,
        -                        java.lang.String type)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getErrMsg

        -
        protected java.lang.String getErrMsg()
        -
        -
        Specified by:
        -
        getErrMsg in class DecafError
        -
        Returns:
        -
        返回错误的具体描述
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/BadReturnTypeError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/BadReturnTypeError.html" deleted file mode 100644 index c3d70ed10..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/BadReturnTypeError.html" +++ /dev/null @@ -1,349 +0,0 @@ - - - - - -BadReturnTypeError - - - - - - - - - - - - -
-
decaf.error
-

Class BadReturnTypeError

-
-
- -
-
    -
  • -
    -
    -
    public class BadReturnTypeError
    -extends DecafError
    -
    example:incompatible return: int[] given, int expected
    - PA2
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Summary

      - - - - - - - - - - - - - - -
      Fields 
      Modifier and TypeField and Description
      private java.lang.Stringexpect 
      private java.lang.Stringgiven 
      - -
    • -
    - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      BadReturnTypeError(Location location, - java.lang.String expect, - java.lang.String given) 
      -
    • -
    - - -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        expect

        -
        private java.lang.String expect
        -
      • -
      - - - -
        -
      • -

        given

        -
        private java.lang.String given
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        BadReturnTypeError

        -
        public BadReturnTypeError(Location location,
        -                          java.lang.String expect,
        -                          java.lang.String given)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getErrMsg

        -
        protected java.lang.String getErrMsg()
        -
        -
        Specified by:
        -
        getErrMsg in class DecafError
        -
        Returns:
        -
        返回错误的具体描述
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/BadTestExpr.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/BadTestExpr.html" deleted file mode 100644 index f58680949..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/BadTestExpr.html" +++ /dev/null @@ -1,304 +0,0 @@ - - - - - -BadTestExpr - - - - - - - - - - - - -
-
decaf.error
-

Class BadTestExpr

-
-
- -
-
    -
  • -
    -
    -
    public class BadTestExpr
    -extends DecafError
    -
    example:test expression must have bool type
    - PA2
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        BadTestExpr

        -
        public BadTestExpr(Location location)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getErrMsg

        -
        protected java.lang.String getErrMsg()
        -
        -
        Specified by:
        -
        getErrMsg in class DecafError
        -
        Returns:
        -
        返回错误的具体描述
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/BadVarTypeError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/BadVarTypeError.html" deleted file mode 100644 index 59e536b8d..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/BadVarTypeError.html" +++ /dev/null @@ -1,334 +0,0 @@ - - - - - -BadVarTypeError - - - - - - - - - - - - -
-
decaf.error
-

Class BadVarTypeError

-
-
- -
-
    -
  • -
    -
    -
    public class BadVarTypeError
    -extends DecafError
    -
    example:cannot declare identifier 'boost' as void type
    - PA2
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Summary

      - - - - - - - - - - -
      Fields 
      Modifier and TypeField and Description
      private java.lang.Stringname 
      - -
    • -
    - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      BadVarTypeError(Location location, - java.lang.String name) 
      -
    • -
    - - -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        name

        -
        private java.lang.String name
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        BadVarTypeError

        -
        public BadVarTypeError(Location location,
        -                       java.lang.String name)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getErrMsg

        -
        protected java.lang.String getErrMsg()
        -
        -
        Specified by:
        -
        getErrMsg in class DecafError
        -
        Returns:
        -
        返回错误的具体描述
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/BreakOutOfLoopError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/BreakOutOfLoopError.html" deleted file mode 100644 index 1bc84cc89..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/BreakOutOfLoopError.html" +++ /dev/null @@ -1,304 +0,0 @@ - - - - - -BreakOutOfLoopError - - - - - - - - - - - - -
-
decaf.error
-

Class BreakOutOfLoopError

-
-
- -
-
    -
  • -
    -
    -
    public class BreakOutOfLoopError
    -extends DecafError
    -
    example:'break' is only allowed inside a loop
    - PA2
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        BreakOutOfLoopError

        -
        public BreakOutOfLoopError(Location location)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getErrMsg

        -
        protected java.lang.String getErrMsg()
        -
        -
        Specified by:
        -
        getErrMsg in class DecafError
        -
        Returns:
        -
        返回错误的具体描述
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/ClassNotFoundError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/ClassNotFoundError.html" deleted file mode 100644 index 2e9e0951b..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/ClassNotFoundError.html" +++ /dev/null @@ -1,334 +0,0 @@ - - - - - -ClassNotFoundError - - - - - - - - - - - - -
-
decaf.error
-

Class ClassNotFoundError

-
-
- -
-
    -
  • -
    -
    -
    public class ClassNotFoundError
    -extends DecafError
    -
    example:class 'zig' not found
    - PA2
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Summary

      - - - - - - - - - - -
      Fields 
      Modifier and TypeField and Description
      private java.lang.Stringname 
      - -
    • -
    - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      ClassNotFoundError(Location location, - java.lang.String name) 
      -
    • -
    - - -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        name

        -
        private java.lang.String name
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        ClassNotFoundError

        -
        public ClassNotFoundError(Location location,
        -                          java.lang.String name)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getErrMsg

        -
        protected java.lang.String getErrMsg()
        -
        -
        Specified by:
        -
        getErrMsg in class DecafError
        -
        Returns:
        -
        返回错误的具体描述
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/DecafError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/DecafError.html" deleted file mode 100644 index 78acc3bc6..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/DecafError.html" +++ /dev/null @@ -1,350 +0,0 @@ - - - - - -DecafError - - - - - - - - - - - - -
-
decaf.error
-

Class DecafError

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • decaf.error.DecafError
    • -
    -
  • -
- -
-
    -
  • - -
      -
    • - - -

      Field Summary

      - - - - - - - - - - -
      Fields 
      Modifier and TypeField and Description
      protected Locationlocation -
      编译错误所在的位置
      -
      -
    • -
    - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      DecafError(Location location) 
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - -
      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and TypeMethod and Description
      protected abstract java.lang.StringgetErrMsg() 
      LocationgetLocation() 
      java.lang.StringtoString() -
      返回包含位置信息在内的完整错误信息
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        location

        -
        protected Location location
        -
        编译错误所在的位置
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        DecafError

        -
        public DecafError(Location location)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getErrMsg

        -
        protected abstract java.lang.String getErrMsg()
        -
        -
        Returns:
        -
        返回错误的具体描述
        -
        -
      • -
      - - - -
        -
      • -

        getLocation

        -
        public Location getLocation()
        -
      • -
      - - - -
        -
      • -

        toString

        -
        public java.lang.String toString()
        -
        返回包含位置信息在内的完整错误信息
        -
        -
        Overrides:
        -
        toString in class java.lang.Object
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/DeclConflictError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/DeclConflictError.html" deleted file mode 100644 index b346af0e3..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/DeclConflictError.html" +++ /dev/null @@ -1,349 +0,0 @@ - - - - - -DeclConflictError - - - - - - - - - - - - -
-
decaf.error
-

Class DeclConflictError

-
-
- -
-
    -
  • -
    -
    -
    public class DeclConflictError
    -extends DecafError
    -
    example:declaration of 'abcde' here conflicts with earlier declaration at (3,2)
    - PA2
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Summary

      - - - - - - - - - - - - - - -
      Fields 
      Modifier and TypeField and Description
      private Locationearlier 
      private java.lang.Stringname 
      - -
    • -
    - - - - -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        earlier

        -
        private Location earlier
        -
      • -
      - - - -
        -
      • -

        name

        -
        private java.lang.String name
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        DeclConflictError

        -
        public DeclConflictError(Location location,
        -                         java.lang.String name,
        -                         Location earlier)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getErrMsg

        -
        protected java.lang.String getErrMsg()
        -
        -
        Specified by:
        -
        getErrMsg in class DecafError
        -
        Returns:
        -
        返回错误的具体描述
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/FieldNotAccessError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/FieldNotAccessError.html" deleted file mode 100644 index ff41359a6..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/FieldNotAccessError.html" +++ /dev/null @@ -1,349 +0,0 @@ - - - - - -FieldNotAccessError - - - - - - - - - - - - -
-
decaf.error
-

Class FieldNotAccessError

-
-
- -
-
    -
  • -
    -
    -
    public class FieldNotAccessError
    -extends DecafError
    -
    example:field 'homework' of 'Others' not accessible here
    - PA2
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Summary

      - - - - - - - - - - - - - - -
      Fields 
      Modifier and TypeField and Description
      private java.lang.Stringname 
      private java.lang.Stringowner 
      - -
    • -
    - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      FieldNotAccessError(Location location, - java.lang.String name, - java.lang.String owner) 
      -
    • -
    - - -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        name

        -
        private java.lang.String name
        -
      • -
      - - - -
        -
      • -

        owner

        -
        private java.lang.String owner
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        FieldNotAccessError

        -
        public FieldNotAccessError(Location location,
        -                           java.lang.String name,
        -                           java.lang.String owner)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getErrMsg

        -
        protected java.lang.String getErrMsg()
        -
        -
        Specified by:
        -
        getErrMsg in class DecafError
        -
        Returns:
        -
        返回错误的具体描述
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/FieldNotFoundError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/FieldNotFoundError.html" deleted file mode 100644 index 7c72f33fd..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/FieldNotFoundError.html" +++ /dev/null @@ -1,349 +0,0 @@ - - - - - -FieldNotFoundError - - - - - - - - - - - - -
-
decaf.error
-

Class FieldNotFoundError

-
-
- -
-
    -
  • -
    -
    -
    public class FieldNotFoundError
    -extends DecafError
    -
    example:field 'money' not found in 'Student'
    - PA2
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Summary

      - - - - - - - - - - - - - - -
      Fields 
      Modifier and TypeField and Description
      private java.lang.Stringname 
      private java.lang.Stringowner 
      - -
    • -
    - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      FieldNotFoundError(Location location, - java.lang.String name, - java.lang.String owner) 
      -
    • -
    - - -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        name

        -
        private java.lang.String name
        -
      • -
      - - - -
        -
      • -

        owner

        -
        private java.lang.String owner
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        FieldNotFoundError

        -
        public FieldNotFoundError(Location location,
        -                          java.lang.String name,
        -                          java.lang.String owner)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getErrMsg

        -
        protected java.lang.String getErrMsg()
        -
        -
        Specified by:
        -
        getErrMsg in class DecafError
        -
        Returns:
        -
        返回错误的具体描述
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/IncompatBinOpError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/IncompatBinOpError.html" deleted file mode 100644 index ee63e3830..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/IncompatBinOpError.html" +++ /dev/null @@ -1,364 +0,0 @@ - - - - - -IncompatBinOpError - - - - - - - - - - - - -
-
decaf.error
-

Class IncompatBinOpError

-
-
- -
-
    -
  • -
    -
    -
    public class IncompatBinOpError
    -extends DecafError
    -
    example:incompatible operands: int + bool
    - PA2
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Summary

      - - - - - - - - - - - - - - - - - - -
      Fields 
      Modifier and TypeField and Description
      private java.lang.Stringleft 
      private java.lang.Stringop 
      private java.lang.Stringright 
      - -
    • -
    - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      IncompatBinOpError(Location location, - java.lang.String left, - java.lang.String op, - java.lang.String right) 
      -
    • -
    - - -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        left

        -
        private java.lang.String left
        -
      • -
      - - - -
        -
      • -

        op

        -
        private java.lang.String op
        -
      • -
      - - - -
        -
      • -

        right

        -
        private java.lang.String right
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        IncompatBinOpError

        -
        public IncompatBinOpError(Location location,
        -                          java.lang.String left,
        -                          java.lang.String op,
        -                          java.lang.String right)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getErrMsg

        -
        protected java.lang.String getErrMsg()
        -
        -
        Specified by:
        -
        getErrMsg in class DecafError
        -
        Returns:
        -
        返回错误的具体描述
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/IncompatUnOpError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/IncompatUnOpError.html" deleted file mode 100644 index 84e76c28b..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/IncompatUnOpError.html" +++ /dev/null @@ -1,349 +0,0 @@ - - - - - -IncompatUnOpError - - - - - - - - - - - - -
-
decaf.error
-

Class IncompatUnOpError

-
-
- -
-
    -
  • -
    -
    -
    public class IncompatUnOpError
    -extends DecafError
    -
    example:incompatible operand: - int[]
    - PA2
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Summary

      - - - - - - - - - - - - - - -
      Fields 
      Modifier and TypeField and Description
      private java.lang.Stringexpr 
      private java.lang.Stringop 
      - -
    • -
    - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      IncompatUnOpError(Location location, - java.lang.String op, - java.lang.String expr) 
      -
    • -
    - - -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        expr

        -
        private java.lang.String expr
        -
      • -
      - - - -
        -
      • -

        op

        -
        private java.lang.String op
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        IncompatUnOpError

        -
        public IncompatUnOpError(Location location,
        -                         java.lang.String op,
        -                         java.lang.String expr)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getErrMsg

        -
        protected java.lang.String getErrMsg()
        -
        -
        Specified by:
        -
        getErrMsg in class DecafError
        -
        Returns:
        -
        返回错误的具体描述
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/IntTooLargeError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/IntTooLargeError.html" deleted file mode 100644 index 6f9ac9813..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/IntTooLargeError.html" +++ /dev/null @@ -1,334 +0,0 @@ - - - - - -IntTooLargeError - - - - - - - - - - - - -
-
decaf.error
-

Class IntTooLargeError

-
-
- -
-
    -
  • -
    -
    -
    public class IntTooLargeError
    -extends DecafError
    -
    example:integer literal 112233445566778899 is too large
    - PA1
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Summary

      - - - - - - - - - - -
      Fields 
      Modifier and TypeField and Description
      private java.lang.Stringval 
      - -
    • -
    - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      IntTooLargeError(Location location, - java.lang.String val) 
      -
    • -
    - - -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        val

        -
        private java.lang.String val
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        IntTooLargeError

        -
        public IntTooLargeError(Location location,
        -                        java.lang.String val)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getErrMsg

        -
        protected java.lang.String getErrMsg()
        -
        -
        Specified by:
        -
        getErrMsg in class DecafError
        -
        Returns:
        -
        返回错误的具体描述
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/MsgError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/MsgError.html" deleted file mode 100644 index b4337aa2b..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/MsgError.html" +++ /dev/null @@ -1,333 +0,0 @@ - - - - - -MsgError - - - - - - - - - - - - -
-
decaf.error
-

Class MsgError

-
-
- -
-
    -
  • -
    -
    -
    public class MsgError
    -extends DecafError
    -
    仅供Parser的yyerror函数使用
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Summary

      - - - - - - - - - - -
      Fields 
      Modifier and TypeField and Description
      private java.lang.Stringmsg 
      - -
    • -
    - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      MsgError(Location location, - java.lang.String msg) 
      -
    • -
    - - -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        msg

        -
        private java.lang.String msg
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        MsgError

        -
        public MsgError(Location location,
        -                java.lang.String msg)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getErrMsg

        -
        protected java.lang.String getErrMsg()
        -
        -
        Specified by:
        -
        getErrMsg in class DecafError
        -
        Returns:
        -
        返回错误的具体描述
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/NewlineInStrError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/NewlineInStrError.html" deleted file mode 100644 index 0356d6e64..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/NewlineInStrError.html" +++ /dev/null @@ -1,334 +0,0 @@ - - - - - -NewlineInStrError - - - - - - - - - - - - -
-
decaf.error
-

Class NewlineInStrError

-
-
- -
-
    -
  • -
    -
    -
    public class NewlineInStrError
    -extends DecafError
    -
    example:illegal newline in string constant "this is stri"
    - PA1
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Summary

      - - - - - - - - - - -
      Fields 
      Modifier and TypeField and Description
      private java.lang.Stringstr 
      - -
    • -
    - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      NewlineInStrError(Location location, - java.lang.String str) 
      -
    • -
    - - -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        str

        -
        private java.lang.String str
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        NewlineInStrError

        -
        public NewlineInStrError(Location location,
        -                         java.lang.String str)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getErrMsg

        -
        protected java.lang.String getErrMsg()
        -
        -
        Specified by:
        -
        getErrMsg in class DecafError
        -
        Returns:
        -
        返回错误的具体描述
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/NoMainClassError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/NoMainClassError.html" deleted file mode 100644 index 05be94582..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/NoMainClassError.html" +++ /dev/null @@ -1,332 +0,0 @@ - - - - - -NoMainClassError - - - - - - - - - - - - -
-
decaf.error
-

Class NoMainClassError

-
-
- -
-
    -
  • -
    -
    -
    public class NoMainClassError
    -extends DecafError
    -
    example:no legal Main class named 'Main' was found
    - PA2
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Summary

      - - - - - - - - - - -
      Fields 
      Modifier and TypeField and Description
      private java.lang.Stringname 
      - -
    • -
    - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      NoMainClassError(java.lang.String name) 
      -
    • -
    - - -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        name

        -
        private java.lang.String name
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        NoMainClassError

        -
        public NoMainClassError(java.lang.String name)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getErrMsg

        -
        protected java.lang.String getErrMsg()
        -
        -
        Specified by:
        -
        getErrMsg in class DecafError
        -
        Returns:
        -
        返回错误的具体描述
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/NotArrayError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/NotArrayError.html" deleted file mode 100644 index 12373b07d..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/NotArrayError.html" +++ /dev/null @@ -1,304 +0,0 @@ - - - - - -NotArrayError - - - - - - - - - - - - -
-
decaf.error
-

Class NotArrayError

-
-
- -
-
    -
  • -
    -
    -
    public class NotArrayError
    -extends DecafError
    -
    example:[] can only be applied to arrays
    - PA2
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        NotArrayError

        -
        public NotArrayError(Location location)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getErrMsg

        -
        protected java.lang.String getErrMsg()
        -
        -
        Specified by:
        -
        getErrMsg in class DecafError
        -
        Returns:
        -
        返回错误的具体描述
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/NotClassError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/NotClassError.html" deleted file mode 100644 index 17ce6f1d8..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/NotClassError.html" +++ /dev/null @@ -1,333 +0,0 @@ - - - - - -NotClassError - - - - - - - - - - - - -
-
decaf.error
-

Class NotClassError

-
-
- -
-
    -
  • -
    -
    -
    public class NotClassError
    -extends DecafError
    -
    string is not a class type.
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Summary

      - - - - - - - - - - -
      Fields 
      Modifier and TypeField and Description
      private java.lang.Stringtype 
      - -
    • -
    - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      NotClassError(java.lang.String type, - Location location) 
      -
    • -
    - - -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        type

        -
        private java.lang.String type
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        NotClassError

        -
        public NotClassError(java.lang.String type,
        -                     Location location)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getErrMsg

        -
        protected java.lang.String getErrMsg()
        -
        -
        Specified by:
        -
        getErrMsg in class DecafError
        -
        Returns:
        -
        返回错误的具体描述
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/NotClassFieldError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/NotClassFieldError.html" deleted file mode 100644 index bad1e7575..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/NotClassFieldError.html" +++ /dev/null @@ -1,352 +0,0 @@ - - - - - -NotClassFieldError - - - - - - - - - - - - -
-
decaf.error
-

Class NotClassFieldError

-
-
- -
-
    -
  • -
    -
    -
    public class NotClassFieldError
    -extends DecafError
    -
    example:cannot access field 'homework' from 'Others'
    - 指通过类名来访问类成员,Others是类名
    - example:cannot access field 'homework' from 'int[]'
    - 指通过非类成员变量来访问类成员,int[]是该变量的类型名字
    - PA2
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Summary

      - - - - - - - - - - - - - - -
      Fields 
      Modifier and TypeField and Description
      private java.lang.Stringname 
      private java.lang.Stringowner 
      - -
    • -
    - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      NotClassFieldError(Location location, - java.lang.String name, - java.lang.String owner) 
      -
    • -
    - - -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        name

        -
        private java.lang.String name
        -
      • -
      - - - -
        -
      • -

        owner

        -
        private java.lang.String owner
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        NotClassFieldError

        -
        public NotClassFieldError(Location location,
        -                          java.lang.String name,
        -                          java.lang.String owner)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getErrMsg

        -
        protected java.lang.String getErrMsg()
        -
        -
        Specified by:
        -
        getErrMsg in class DecafError
        -
        Returns:
        -
        返回错误的具体描述
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/NotClassMethodError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/NotClassMethodError.html" deleted file mode 100644 index a4a7d6aec..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/NotClassMethodError.html" +++ /dev/null @@ -1,349 +0,0 @@ - - - - - -NotClassMethodError - - - - - - - - - - - - -
-
decaf.error
-

Class NotClassMethodError

-
-
- -
-
    -
  • -
    -
    -
    public class NotClassMethodError
    -extends DecafError
    -
    example:'orz' is not a method in class 'Person'
    - PA2
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Summary

      - - - - - - - - - - - - - - -
      Fields 
      Modifier and TypeField and Description
      private java.lang.Stringname 
      private java.lang.Stringowner 
      - -
    • -
    - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      NotClassMethodError(Location location, - java.lang.String name, - java.lang.String owner) 
      -
    • -
    - - -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        name

        -
        private java.lang.String name
        -
      • -
      - - - -
        -
      • -

        owner

        -
        private java.lang.String owner
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        NotClassMethodError

        -
        public NotClassMethodError(Location location,
        -                           java.lang.String name,
        -                           java.lang.String owner)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getErrMsg

        -
        protected java.lang.String getErrMsg()
        -
        -
        Specified by:
        -
        getErrMsg in class DecafError
        -
        Returns:
        -
        返回错误的具体描述
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/OverridingVarError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/OverridingVarError.html" deleted file mode 100644 index b6f91db46..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/OverridingVarError.html" +++ /dev/null @@ -1,334 +0,0 @@ - - - - - -OverridingVarError - - - - - - - - - - - - -
-
decaf.error
-

Class OverridingVarError

-
-
- -
-
    -
  • -
    -
    -
    public class OverridingVarError
    -extends DecafError
    -
    example:overriding variable is not allowed for var 'kittyboy'
    - PA2
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Summary

      - - - - - - - - - - -
      Fields 
      Modifier and TypeField and Description
      private java.lang.Stringname 
      - -
    • -
    - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      OverridingVarError(Location location, - java.lang.String name) 
      -
    • -
    - - -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        name

        -
        private java.lang.String name
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        OverridingVarError

        -
        public OverridingVarError(Location location,
        -                          java.lang.String name)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getErrMsg

        -
        protected java.lang.String getErrMsg()
        -
        -
        Specified by:
        -
        getErrMsg in class DecafError
        -
        Returns:
        -
        返回错误的具体描述
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/RefNonStaticError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/RefNonStaticError.html" deleted file mode 100644 index 68f3ede22..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/RefNonStaticError.html" +++ /dev/null @@ -1,349 +0,0 @@ - - - - - -RefNonStaticError - - - - - - - - - - - - -
-
decaf.error
-

Class RefNonStaticError

-
-
- -
-
    -
  • -
    -
    -
    public class RefNonStaticError
    -extends DecafError
    -
    can not reference a non-static field 'kylin' from static method from 'dove' - PA2
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Summary

      - - - - - - - - - - - - - - -
      Fields 
      Modifier and TypeField and Description
      private java.lang.Stringfrom 
      private java.lang.Stringref 
      - -
    • -
    - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      RefNonStaticError(Location location, - java.lang.String from, - java.lang.String ref) 
      -
    • -
    - - -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        from

        -
        private java.lang.String from
        -
      • -
      - - - -
        -
      • -

        ref

        -
        private java.lang.String ref
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        RefNonStaticError

        -
        public RefNonStaticError(Location location,
        -                         java.lang.String from,
        -                         java.lang.String ref)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getErrMsg

        -
        protected java.lang.String getErrMsg()
        -
        -
        Specified by:
        -
        getErrMsg in class DecafError
        -
        Returns:
        -
        返回错误的具体描述
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/RuntimeError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/RuntimeError.html" deleted file mode 100644 index b3b6e9707..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/RuntimeError.html" +++ /dev/null @@ -1,346 +0,0 @@ - - - - - -RuntimeError - - - - - - - - - - - - -
-
decaf.error
-

Class RuntimeError

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • decaf.error.RuntimeError
    • -
    -
  • -
-
-
    -
  • -
    -
    -
    public final class RuntimeError
    -extends java.lang.Object
    -
    运行期的错误
    -
  • -
-
-
-
    -
  • - - - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - - - -
      Constructors 
      ModifierConstructor and Description
      private RuntimeError() 
      -
    • -
    - -
      -
    • - - -

      Method Summary

      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        ARRAY_INDEX_OUT_OF_BOUND

        -
        public static final java.lang.String ARRAY_INDEX_OUT_OF_BOUND
        -
        -
        See Also:
        -
        Constant Field Values
        -
        -
      • -
      - - - -
        -
      • -

        CLASS_CAST_ERROR1

        -
        public static final java.lang.String CLASS_CAST_ERROR1
        -
        -
        See Also:
        -
        Constant Field Values
        -
        -
      • -
      - - - -
        -
      • -

        CLASS_CAST_ERROR2

        -
        public static final java.lang.String CLASS_CAST_ERROR2
        -
        -
        See Also:
        -
        Constant Field Values
        -
        -
      • -
      - - - -
        -
      • -

        CLASS_CAST_ERROR3

        -
        public static final java.lang.String CLASS_CAST_ERROR3
        -
        -
        See Also:
        -
        Constant Field Values
        -
        -
      • -
      - - - -
        -
      • -

        NEGATIVE_ARR_SIZE

        -
        public static final java.lang.String NEGATIVE_ARR_SIZE
        -
        -
        See Also:
        -
        Constant Field Values
        -
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        RuntimeError

        -
        private RuntimeError()
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/SubNotIntError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/SubNotIntError.html" deleted file mode 100644 index 08bfbec01..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/SubNotIntError.html" +++ /dev/null @@ -1,304 +0,0 @@ - - - - - -SubNotIntError - - - - - - - - - - - - -
-
decaf.error
-

Class SubNotIntError

-
-
- -
-
    -
  • -
    -
    -
    public class SubNotIntError
    -extends DecafError
    -
    example:array subscript must be an integer
    - PA2
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        SubNotIntError

        -
        public SubNotIntError(Location location)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getErrMsg

        -
        protected java.lang.String getErrMsg()
        -
        -
        Specified by:
        -
        getErrMsg in class DecafError
        -
        Returns:
        -
        返回错误的具体描述
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/ThisInStaticFuncError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/ThisInStaticFuncError.html" deleted file mode 100644 index fd08d3403..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/ThisInStaticFuncError.html" +++ /dev/null @@ -1,304 +0,0 @@ - - - - - -ThisInStaticFuncError - - - - - - - - - - - - -
-
decaf.error
-

Class ThisInStaticFuncError

-
-
- -
-
    -
  • -
    -
    -
    public class ThisInStaticFuncError
    -extends DecafError
    -
    can not use this in static function - PA2
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        ThisInStaticFuncError

        -
        public ThisInStaticFuncError(Location location)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getErrMsg

        -
        protected java.lang.String getErrMsg()
        -
        -
        Specified by:
        -
        getErrMsg in class DecafError
        -
        Returns:
        -
        返回错误的具体描述
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/UndeclVarError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/UndeclVarError.html" deleted file mode 100644 index e78898262..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/UndeclVarError.html" +++ /dev/null @@ -1,334 +0,0 @@ - - - - - -UndeclVarError - - - - - - - - - - - - -
-
decaf.error
-

Class UndeclVarError

-
-
- -
-
    -
  • -
    -
    -
    public class UndeclVarError
    -extends DecafError
    -
    example:undeclared variable 'python'
    - PA2
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Summary

      - - - - - - - - - - -
      Fields 
      Modifier and TypeField and Description
      private java.lang.Stringname 
      - -
    • -
    - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      UndeclVarError(Location location, - java.lang.String name) 
      -
    • -
    - - -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        name

        -
        private java.lang.String name
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        UndeclVarError

        -
        public UndeclVarError(Location location,
        -                      java.lang.String name)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getErrMsg

        -
        protected java.lang.String getErrMsg()
        -
        -
        Specified by:
        -
        getErrMsg in class DecafError
        -
        Returns:
        -
        返回错误的具体描述
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/UnrecogCharError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/UnrecogCharError.html" deleted file mode 100644 index bc6ef50b6..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/UnrecogCharError.html" +++ /dev/null @@ -1,334 +0,0 @@ - - - - - -UnrecogCharError - - - - - - - - - - - - -
-
decaf.error
-

Class UnrecogCharError

-
-
- -
-
    -
  • -
    -
    -
    public class UnrecogCharError
    -extends DecafError
    -
    example:unrecognized char: '@'
    - PA1
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Summary

      - - - - - - - - - - -
      Fields 
      Modifier and TypeField and Description
      private charc 
      - -
    • -
    - - - - -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        c

        -
        private char c
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        UnrecogCharError

        -
        public UnrecogCharError(Location location,
        -                        char c)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getErrMsg

        -
        protected java.lang.String getErrMsg()
        -
        -
        Specified by:
        -
        getErrMsg in class DecafError
        -
        Returns:
        -
        返回错误的具体描述
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/UntermStrError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/UntermStrError.html" deleted file mode 100644 index e0ad525bc..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/UntermStrError.html" +++ /dev/null @@ -1,334 +0,0 @@ - - - - - -UntermStrError - - - - - - - - - - - - -
-
decaf.error
-

Class UntermStrError

-
-
- -
-
    -
  • -
    -
    -
    public class UntermStrError
    -extends DecafError
    -
    example:unterminated string constant: "this is str"
    - PA1
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Summary

      - - - - - - - - - - -
      Fields 
      Modifier and TypeField and Description
      private java.lang.Stringstr 
      - -
    • -
    - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      UntermStrError(Location location, - java.lang.String str) 
      -
    • -
    - - -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        str

        -
        private java.lang.String str
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        UntermStrError

        -
        public UntermStrError(Location location,
        -                      java.lang.String str)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getErrMsg

        -
        protected java.lang.String getErrMsg()
        -
        -
        Specified by:
        -
        getErrMsg in class DecafError
        -
        Returns:
        -
        返回错误的具体描述
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/BadArgCountError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/BadArgCountError.html" deleted file mode 100644 index 91fc7b787..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/BadArgCountError.html" +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -Uses of Class decaf.error.BadArgCountError - - - - - - - - - - - -
-

Uses of Class
decaf.error.BadArgCountError

-
-
No usage of decaf.error.BadArgCountError
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/BadArgTypeError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/BadArgTypeError.html" deleted file mode 100644 index d154cc669..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/BadArgTypeError.html" +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -Uses of Class decaf.error.BadArgTypeError - - - - - - - - - - - -
-

Uses of Class
decaf.error.BadArgTypeError

-
-
No usage of decaf.error.BadArgTypeError
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/BadArrElementError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/BadArrElementError.html" deleted file mode 100644 index 448f489b2..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/BadArrElementError.html" +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -Uses of Class decaf.error.BadArrElementError - - - - - - - - - - - -
-

Uses of Class
decaf.error.BadArrElementError

-
-
No usage of decaf.error.BadArrElementError
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/BadInheritanceError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/BadInheritanceError.html" deleted file mode 100644 index d40619b6b..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/BadInheritanceError.html" +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -Uses of Class decaf.error.BadInheritanceError - - - - - - - - - - - -
-

Uses of Class
decaf.error.BadInheritanceError

-
-
No usage of decaf.error.BadInheritanceError
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/BadLengthArgError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/BadLengthArgError.html" deleted file mode 100644 index c58a80cca..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/BadLengthArgError.html" +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -Uses of Class decaf.error.BadLengthArgError - - - - - - - - - - - -
-

Uses of Class
decaf.error.BadLengthArgError

-
-
No usage of decaf.error.BadLengthArgError
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/BadLengthError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/BadLengthError.html" deleted file mode 100644 index d350e0121..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/BadLengthError.html" +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -Uses of Class decaf.error.BadLengthError - - - - - - - - - - - -
-

Uses of Class
decaf.error.BadLengthError

-
-
No usage of decaf.error.BadLengthError
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/BadNewArrayLength.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/BadNewArrayLength.html" deleted file mode 100644 index a503612b7..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/BadNewArrayLength.html" +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -Uses of Class decaf.error.BadNewArrayLength - - - - - - - - - - - -
-

Uses of Class
decaf.error.BadNewArrayLength

-
-
No usage of decaf.error.BadNewArrayLength
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/BadOverrideError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/BadOverrideError.html" deleted file mode 100644 index 684bfc8b8..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/BadOverrideError.html" +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -Uses of Class decaf.error.BadOverrideError - - - - - - - - - - - -
-

Uses of Class
decaf.error.BadOverrideError

-
-
No usage of decaf.error.BadOverrideError
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/BadPrintArgError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/BadPrintArgError.html" deleted file mode 100644 index 7000a0d01..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/BadPrintArgError.html" +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -Uses of Class decaf.error.BadPrintArgError - - - - - - - - - - - -
-

Uses of Class
decaf.error.BadPrintArgError

-
-
No usage of decaf.error.BadPrintArgError
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/BadReturnTypeError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/BadReturnTypeError.html" deleted file mode 100644 index 40077eadd..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/BadReturnTypeError.html" +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -Uses of Class decaf.error.BadReturnTypeError - - - - - - - - - - - -
-

Uses of Class
decaf.error.BadReturnTypeError

-
-
No usage of decaf.error.BadReturnTypeError
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/BadTestExpr.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/BadTestExpr.html" deleted file mode 100644 index 16428bce2..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/BadTestExpr.html" +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -Uses of Class decaf.error.BadTestExpr - - - - - - - - - - - -
-

Uses of Class
decaf.error.BadTestExpr

-
-
No usage of decaf.error.BadTestExpr
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/BadVarTypeError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/BadVarTypeError.html" deleted file mode 100644 index 94e0d22dd..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/BadVarTypeError.html" +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -Uses of Class decaf.error.BadVarTypeError - - - - - - - - - - - -
-

Uses of Class
decaf.error.BadVarTypeError

-
-
No usage of decaf.error.BadVarTypeError
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/BreakOutOfLoopError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/BreakOutOfLoopError.html" deleted file mode 100644 index 6c9306f33..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/BreakOutOfLoopError.html" +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -Uses of Class decaf.error.BreakOutOfLoopError - - - - - - - - - - - -
-

Uses of Class
decaf.error.BreakOutOfLoopError

-
-
No usage of decaf.error.BreakOutOfLoopError
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/ClassNotFoundError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/ClassNotFoundError.html" deleted file mode 100644 index e202af2d0..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/ClassNotFoundError.html" +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -Uses of Class decaf.error.ClassNotFoundError - - - - - - - - - - - -
-

Uses of Class
decaf.error.ClassNotFoundError

-
-
No usage of decaf.error.ClassNotFoundError
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/DecafError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/DecafError.html" deleted file mode 100644 index 39c68acf1..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/DecafError.html" +++ /dev/null @@ -1,461 +0,0 @@ - - - - - -Uses of Class decaf.error.DecafError - - - - - - - - - - - -
-

Uses of Class
decaf.error.DecafError

-
-
-
    -
  • - - - - - - - - - - - - - - - - - - - - -
    Packages that use DecafError 
    PackageDescription
    decaf 
    decaf.error 
    decaf.frontend 
    -
  • -
  • -
      -
    • - - -

      Uses of DecafError in decaf

      - - - - - - - - - - - - -
      Fields in decaf with type parameters of type DecafError 
      Modifier and TypeField and Description
      private java.util.List<DecafError>Driver.errors 
      - - - - - - - - - - - - -
      Methods in decaf with parameters of type DecafError 
      Modifier and TypeMethod and Description
      voidDriver.issueError(DecafError error) 
      -
    • -
    • - - -

      Uses of DecafError in decaf.error

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Subclasses of DecafError in decaf.error 
      Modifier and TypeClass and Description
      class BadArgCountError -
      example:function 'gotoMars' expects 1 argument(s) but 3 given
      - PA2
      -
      class BadArgTypeError -
      example:incompatible argument 3: int given, bool expected
      - 3表示发生错误的是第三个参数
      - PA2
      -
      class BadArrElementError -
      example:array base type must be non-void type
      - PA2
      -
      class BadInheritanceError -
      example:illegal class inheritance (should be a cyclic)
      - PA2
      -
      class BadLengthArgError -
      example:function 'length' expects 0 argument(s) but 2 given
      - PA2
      -
      class BadLengthError -
      example:'length' can only be applied to arrays
      - PA2
      -
      class BadNewArrayLength -
      example:new array length must be an integer
      - PA2
      -
      class BadOverrideError -
      example:overriding method 'tooold' doesn't match the type signature in class - 'duckyaya'
      - PA2
      -
      class BadPrintArgError -
      example:incompatible argument 3: int[] given, int/bool/string expected
      - 3表示发生错误的是第三个参数
      - PA2
      -
      class BadReturnTypeError -
      example:incompatible return: int[] given, int expected
      - PA2
      -
      class BadTestExpr -
      example:test expression must have bool type
      - PA2
      -
      class BadVarTypeError -
      example:cannot declare identifier 'boost' as void type
      - PA2
      -
      class BreakOutOfLoopError -
      example:'break' is only allowed inside a loop
      - PA2
      -
      class ClassNotFoundError -
      example:class 'zig' not found
      - PA2
      -
      class DeclConflictError -
      example:declaration of 'abcde' here conflicts with earlier declaration at (3,2)
      - PA2
      -
      class FieldNotAccessError -
      example:field 'homework' of 'Others' not accessible here
      - PA2
      -
      class FieldNotFoundError -
      example:field 'money' not found in 'Student'
      - PA2
      -
      class IncompatBinOpError -
      example:incompatible operands: int + bool
      - PA2
      -
      class IncompatUnOpError -
      example:incompatible operand: - int[]
      - PA2
      -
      class IntTooLargeError -
      example:integer literal 112233445566778899 is too large
      - PA1
      -
      class MsgError -
      仅供Parser的yyerror函数使用
      -
      class NewlineInStrError -
      example:illegal newline in string constant "this is stri"
      - PA1
      -
      class NoMainClassError -
      example:no legal Main class named 'Main' was found
      - PA2
      -
      class NotArrayError -
      example:[] can only be applied to arrays
      - PA2
      -
      class NotClassError -
      string is not a class type.
      -
      class NotClassFieldError -
      example:cannot access field 'homework' from 'Others'
      - 指通过类名来访问类成员,Others是类名
      - example:cannot access field 'homework' from 'int[]'
      - 指通过非类成员变量来访问类成员,int[]是该变量的类型名字
      - PA2
      -
      class NotClassMethodError -
      example:'orz' is not a method in class 'Person'
      - PA2
      -
      class OverridingVarError -
      example:overriding variable is not allowed for var 'kittyboy'
      - PA2
      -
      class RefNonStaticError -
      can not reference a non-static field 'kylin' from static method from 'dove' - PA2
      -
      class SubNotIntError -
      example:array subscript must be an integer
      - PA2
      -
      class ThisInStaticFuncError -
      can not use this in static function - PA2
      -
      class UndeclVarError -
      example:undeclared variable 'python'
      - PA2
      -
      class UnrecogCharError -
      example:unrecognized char: '@'
      - PA1
      -
      class UntermStrError -
      example:unterminated string constant: "this is str"
      - PA1
      -
      -
    • -
    • - - -

      Uses of DecafError in decaf.frontend

      - - - - - - - - - - - - - - - - -
      Methods in decaf.frontend with parameters of type DecafError 
      Modifier and TypeMethod and Description
      protected voidBaseParser.issueError(DecafError error) 
      protected voidBaseLexer.issueError(DecafError error) 
      -
    • -
    -
  • -
-
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/DeclConflictError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/DeclConflictError.html" deleted file mode 100644 index 8ed3faef5..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/DeclConflictError.html" +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -Uses of Class decaf.error.DeclConflictError - - - - - - - - - - - -
-

Uses of Class
decaf.error.DeclConflictError

-
-
No usage of decaf.error.DeclConflictError
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/FieldNotAccessError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/FieldNotAccessError.html" deleted file mode 100644 index 59207ee04..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/FieldNotAccessError.html" +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -Uses of Class decaf.error.FieldNotAccessError - - - - - - - - - - - -
-

Uses of Class
decaf.error.FieldNotAccessError

-
-
No usage of decaf.error.FieldNotAccessError
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/FieldNotFoundError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/FieldNotFoundError.html" deleted file mode 100644 index ce6a2a422..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/FieldNotFoundError.html" +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -Uses of Class decaf.error.FieldNotFoundError - - - - - - - - - - - -
-

Uses of Class
decaf.error.FieldNotFoundError

-
-
No usage of decaf.error.FieldNotFoundError
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/IncompatBinOpError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/IncompatBinOpError.html" deleted file mode 100644 index 64e72ea76..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/IncompatBinOpError.html" +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -Uses of Class decaf.error.IncompatBinOpError - - - - - - - - - - - -
-

Uses of Class
decaf.error.IncompatBinOpError

-
-
No usage of decaf.error.IncompatBinOpError
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/IncompatUnOpError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/IncompatUnOpError.html" deleted file mode 100644 index c4dbd33de..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/IncompatUnOpError.html" +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -Uses of Class decaf.error.IncompatUnOpError - - - - - - - - - - - -
-

Uses of Class
decaf.error.IncompatUnOpError

-
-
No usage of decaf.error.IncompatUnOpError
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/IntTooLargeError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/IntTooLargeError.html" deleted file mode 100644 index 018ca30ca..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/IntTooLargeError.html" +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -Uses of Class decaf.error.IntTooLargeError - - - - - - - - - - - -
-

Uses of Class
decaf.error.IntTooLargeError

-
-
No usage of decaf.error.IntTooLargeError
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/MsgError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/MsgError.html" deleted file mode 100644 index 36514b41d..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/MsgError.html" +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -Uses of Class decaf.error.MsgError - - - - - - - - - - - -
-

Uses of Class
decaf.error.MsgError

-
-
No usage of decaf.error.MsgError
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/NewlineInStrError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/NewlineInStrError.html" deleted file mode 100644 index db77cbe62..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/NewlineInStrError.html" +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -Uses of Class decaf.error.NewlineInStrError - - - - - - - - - - - -
-

Uses of Class
decaf.error.NewlineInStrError

-
-
No usage of decaf.error.NewlineInStrError
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/NoMainClassError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/NoMainClassError.html" deleted file mode 100644 index 84b4f885d..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/NoMainClassError.html" +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -Uses of Class decaf.error.NoMainClassError - - - - - - - - - - - -
-

Uses of Class
decaf.error.NoMainClassError

-
-
No usage of decaf.error.NoMainClassError
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/NotArrayError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/NotArrayError.html" deleted file mode 100644 index ee3cfcba5..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/NotArrayError.html" +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -Uses of Class decaf.error.NotArrayError - - - - - - - - - - - -
-

Uses of Class
decaf.error.NotArrayError

-
-
No usage of decaf.error.NotArrayError
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/NotClassError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/NotClassError.html" deleted file mode 100644 index 7a1489092..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/NotClassError.html" +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -Uses of Class decaf.error.NotClassError - - - - - - - - - - - -
-

Uses of Class
decaf.error.NotClassError

-
-
No usage of decaf.error.NotClassError
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/NotClassFieldError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/NotClassFieldError.html" deleted file mode 100644 index b72ac7a27..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/NotClassFieldError.html" +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -Uses of Class decaf.error.NotClassFieldError - - - - - - - - - - - -
-

Uses of Class
decaf.error.NotClassFieldError

-
-
No usage of decaf.error.NotClassFieldError
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/NotClassMethodError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/NotClassMethodError.html" deleted file mode 100644 index 4f1001004..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/NotClassMethodError.html" +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -Uses of Class decaf.error.NotClassMethodError - - - - - - - - - - - -
-

Uses of Class
decaf.error.NotClassMethodError

-
-
No usage of decaf.error.NotClassMethodError
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/OverridingVarError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/OverridingVarError.html" deleted file mode 100644 index 16df97a4d..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/OverridingVarError.html" +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -Uses of Class decaf.error.OverridingVarError - - - - - - - - - - - -
-

Uses of Class
decaf.error.OverridingVarError

-
-
No usage of decaf.error.OverridingVarError
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/RefNonStaticError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/RefNonStaticError.html" deleted file mode 100644 index e88bc9cec..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/RefNonStaticError.html" +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -Uses of Class decaf.error.RefNonStaticError - - - - - - - - - - - -
-

Uses of Class
decaf.error.RefNonStaticError

-
-
No usage of decaf.error.RefNonStaticError
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/RuntimeError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/RuntimeError.html" deleted file mode 100644 index 1943eec20..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/RuntimeError.html" +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -Uses of Class decaf.error.RuntimeError - - - - - - - - - - - -
-

Uses of Class
decaf.error.RuntimeError

-
-
No usage of decaf.error.RuntimeError
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/SubNotIntError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/SubNotIntError.html" deleted file mode 100644 index f6830b5ff..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/SubNotIntError.html" +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -Uses of Class decaf.error.SubNotIntError - - - - - - - - - - - -
-

Uses of Class
decaf.error.SubNotIntError

-
-
No usage of decaf.error.SubNotIntError
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/ThisInStaticFuncError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/ThisInStaticFuncError.html" deleted file mode 100644 index 2bb2e8d7d..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/ThisInStaticFuncError.html" +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -Uses of Class decaf.error.ThisInStaticFuncError - - - - - - - - - - - -
-

Uses of Class
decaf.error.ThisInStaticFuncError

-
-
No usage of decaf.error.ThisInStaticFuncError
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/UndeclVarError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/UndeclVarError.html" deleted file mode 100644 index 91f1c3af6..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/UndeclVarError.html" +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -Uses of Class decaf.error.UndeclVarError - - - - - - - - - - - -
-

Uses of Class
decaf.error.UndeclVarError

-
-
No usage of decaf.error.UndeclVarError
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/UnrecogCharError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/UnrecogCharError.html" deleted file mode 100644 index 81f673273..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/UnrecogCharError.html" +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -Uses of Class decaf.error.UnrecogCharError - - - - - - - - - - - -
-

Uses of Class
decaf.error.UnrecogCharError

-
-
No usage of decaf.error.UnrecogCharError
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/UntermStrError.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/UntermStrError.html" deleted file mode 100644 index 24d4a2b35..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/class-use/UntermStrError.html" +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -Uses of Class decaf.error.UntermStrError - - - - - - - - - - - -
-

Uses of Class
decaf.error.UntermStrError

-
-
No usage of decaf.error.UntermStrError
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/package-frame.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/package-frame.html" deleted file mode 100644 index 67ffc9adc..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/package-frame.html" +++ /dev/null @@ -1,55 +0,0 @@ - - - - - -decaf.error - - - - - -

decaf.error

- - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/package-summary.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/package-summary.html" deleted file mode 100644 index 37ee1aaac..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/package-summary.html" +++ /dev/null @@ -1,390 +0,0 @@ - - - - - -decaf.error - - - - - - - - -
- - - - - - - -
- - -
-

Package decaf.error

-
-
-
    -
  • - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Class Summary 
    ClassDescription
    BadArgCountError -
    example:function 'gotoMars' expects 1 argument(s) but 3 given
    - PA2
    -
    BadArgTypeError -
    example:incompatible argument 3: int given, bool expected
    - 3表示发生错误的是第三个参数
    - PA2
    -
    BadArrElementError -
    example:array base type must be non-void type
    - PA2
    -
    BadInheritanceError -
    example:illegal class inheritance (should be a cyclic)
    - PA2
    -
    BadLengthArgError -
    example:function 'length' expects 0 argument(s) but 2 given
    - PA2
    -
    BadLengthError -
    example:'length' can only be applied to arrays
    - PA2
    -
    BadNewArrayLength -
    example:new array length must be an integer
    - PA2
    -
    BadOverrideError -
    example:overriding method 'tooold' doesn't match the type signature in class - 'duckyaya'
    - PA2
    -
    BadPrintArgError -
    example:incompatible argument 3: int[] given, int/bool/string expected
    - 3表示发生错误的是第三个参数
    - PA2
    -
    BadReturnTypeError -
    example:incompatible return: int[] given, int expected
    - PA2
    -
    BadTestExpr -
    example:test expression must have bool type
    - PA2
    -
    BadVarTypeError -
    example:cannot declare identifier 'boost' as void type
    - PA2
    -
    BreakOutOfLoopError -
    example:'break' is only allowed inside a loop
    - PA2
    -
    ClassNotFoundError -
    example:class 'zig' not found
    - PA2
    -
    DecafError -
    decaf中所有编译错误的基类
    -
    DeclConflictError -
    example:declaration of 'abcde' here conflicts with earlier declaration at (3,2)
    - PA2
    -
    FieldNotAccessError -
    example:field 'homework' of 'Others' not accessible here
    - PA2
    -
    FieldNotFoundError -
    example:field 'money' not found in 'Student'
    - PA2
    -
    IncompatBinOpError -
    example:incompatible operands: int + bool
    - PA2
    -
    IncompatUnOpError -
    example:incompatible operand: - int[]
    - PA2
    -
    IntTooLargeError -
    example:integer literal 112233445566778899 is too large
    - PA1
    -
    MsgError -
    仅供Parser的yyerror函数使用
    -
    NewlineInStrError -
    example:illegal newline in string constant "this is stri"
    - PA1
    -
    NoMainClassError -
    example:no legal Main class named 'Main' was found
    - PA2
    -
    NotArrayError -
    example:[] can only be applied to arrays
    - PA2
    -
    NotClassError -
    string is not a class type.
    -
    NotClassFieldError -
    example:cannot access field 'homework' from 'Others'
    - 指通过类名来访问类成员,Others是类名
    - example:cannot access field 'homework' from 'int[]'
    - 指通过非类成员变量来访问类成员,int[]是该变量的类型名字
    - PA2
    -
    NotClassMethodError -
    example:'orz' is not a method in class 'Person'
    - PA2
    -
    OverridingVarError -
    example:overriding variable is not allowed for var 'kittyboy'
    - PA2
    -
    RefNonStaticError -
    can not reference a non-static field 'kylin' from static method from 'dove' - PA2
    -
    RuntimeError -
    运行期的错误
    -
    SubNotIntError -
    example:array subscript must be an integer
    - PA2
    -
    ThisInStaticFuncError -
    can not use this in static function - PA2
    -
    UndeclVarError -
    example:undeclared variable 'python'
    - PA2
    -
    UnrecogCharError -
    example:unrecognized char: '@'
    - PA1
    -
    UntermStrError -
    example:unterminated string constant: "this is str"
    - PA1
    -
    -
  • -
-
- -
- - - - - - - -
- - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/package-tree.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/package-tree.html" deleted file mode 100644 index bd5fc1d53..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/package-tree.html" +++ /dev/null @@ -1,173 +0,0 @@ - - - - - -decaf.error Class Hierarchy - - - - - - - - -
- - - - - - - -
- - -
-

Hierarchy For Package decaf.error

-Package Hierarchies: - -
-
-

Class Hierarchy

- -
- -
- - - - - - - -
- - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/package-use.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/package-use.html" deleted file mode 100644 index af512e246..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/error/package-use.html" +++ /dev/null @@ -1,199 +0,0 @@ - - - - - -Uses of Package decaf.error - - - - - - - - - - - -
-

Uses of Package
decaf.error

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/BaseLexer.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/BaseLexer.html" deleted file mode 100644 index 36f32f78d..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/BaseLexer.html" +++ /dev/null @@ -1,466 +0,0 @@ - - - - - -BaseLexer - - - - - - - - - - - - -
-
decaf.frontend
-

Class BaseLexer

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • decaf.frontend.BaseLexer
    • -
    -
  • -
-
-
    -
  • -
    -
    Direct Known Subclasses:
    -
    Lexer
    -
    -
    -
    -
    public abstract class BaseLexer
    -extends java.lang.Object
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        parser

        -
        private Parser parser
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        BaseLexer

        -
        public BaseLexer()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        boolConst

        -
        protected int boolConst(boolean bval)
        -
      • -
      - - - -
        -
      • -

        diagnose

        -
        public void diagnose()
        -              throws java.io.IOException
        -
        -
        Throws:
        -
        java.io.IOException
        -
        -
      • -
      - - - -
        -
      • -

        getLocation

        -
        abstract Location getLocation()
        -
      • -
      - - - -
        -
      • -

        identifier

        -
        protected int identifier(java.lang.String name)
        -
      • -
      - - - -
        -
      • -

        intConst

        -
        protected int intConst(java.lang.String ival)
        -
      • -
      - - - -
        -
      • -

        issueError

        -
        protected void issueError(DecafError error)
        -
      • -
      - - - -
        -
      • -

        keyword

        -
        protected int keyword(int code)
        -
      • -
      - - - -
        -
      • -

        operator

        -
        protected int operator(int code)
        -
      • -
      - - - -
        -
      • -

        setParser

        -
        public void setParser(Parser parser)
        -
      • -
      - - - -
        -
      • -

        setSemantic

        -
        protected void setSemantic(Location where,
        -                           SemValue v)
        -
      • -
      - - - -
        -
      • -

        StringConst

        -
        protected int StringConst(java.lang.String sval,
        -                          Location loc)
        -
      • -
      - - - -
        -
      • -

        yylex

        -
        abstract int yylex()
        -            throws java.io.IOException
        -
        -
        Throws:
        -
        java.io.IOException
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/BaseParser.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/BaseParser.html" deleted file mode 100644 index e1a73e513..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/BaseParser.html" +++ /dev/null @@ -1,422 +0,0 @@ - - - - - -BaseParser - - - - - - - - - - - - -
-
decaf.frontend
-

Class BaseParser

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • decaf.frontend.BaseParser
    • -
    -
  • -
-
-
    -
  • -
    -
    Direct Known Subclasses:
    -
    Parser
    -
    -
    -
    -
    public abstract class BaseParser
    -extends java.lang.Object
    -
  • -
-
-
- -
-
-
    -
  • - - - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        BaseParser

        -
        public BaseParser()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - - - - - -
        -
      • -

        issueError

        -
        protected void issueError(DecafError error)
        -
      • -
      - - - -
        -
      • -

        opStr

        -
        public static java.lang.String opStr(int opCode)
        -
        获得操作符的字符串表示
        -
        -
        Parameters:
        -
        opCode - 操作符的符号码
        -
        Returns:
        -
        该操作符的字符串形式
        -
        -
      • -
      - - - - - - - -
        -
      • -

        setLexer

        -
        public void setLexer(Lexer lexer)
        -
      • -
      - - - -
        -
      • -

        yyerror

        -
        void yyerror(java.lang.String msg)
        -
      • -
      - - - -
        -
      • -

        yylex

        -
        int yylex()
        -
      • -
      - - - -
        -
      • -

        yyparse

        -
        abstract int yyparse()
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/Lexer.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/Lexer.html" deleted file mode 100644 index ae5c3c227..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/Lexer.html" +++ /dev/null @@ -1,1141 +0,0 @@ - - - - - -Lexer - - - - - - - - - - - - -
-
decaf.frontend
-

Class Lexer

-
-
- -
-
    -
  • -
    -
    -
    public class Lexer
    -extends BaseLexer
    -
    This class is a scanner generated by - JFlex 1.4.1 - on 16-10-10 下午7:05 from the specification file - src/decaf/frontend/Lexer.l
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Fields 
      Modifier and TypeField and Description
      private java.lang.StringBuilderbuffer 
      static intS -
      lexical states
      -
      private Locationsloc 
      private intyychar -
      the number of characters up to the start of the matched text
      -
      private intyycolumn -
      the number of characters from the last newline up to the start of the - matched text
      -
      static intYYEOF -
      This character denotes the end of file
      -
      static intYYINITIAL 
      private intyyline -
      number of newlines encountered up to the start of the matched text
      -
      private static int[]ZZ_ACTION -
      Translates DFA states to action switch labels.
      -
      private static java.lang.StringZZ_ACTION_PACKED_0 
      private static intZZ_BUFFERSIZE -
      initial size of the lookahead buffer
      -
      private static char[]ZZ_CMAP -
      Translates characters to character classes
      -
      private static java.lang.StringZZ_CMAP_PACKED -
      Translates characters to character classes
      -
      private static java.lang.String[]ZZ_ERROR_MSG 
      private static intZZ_NO_MATCH 
      private static intZZ_PUSHBACK_2BIG 
      private static intZZ_UNKNOWN_ERROR 
      private booleanzzAtBOL -
      zzAtBOL == true <=> the scanner is currently at the beginning of a line
      -
      private booleanzzAtEOF -
      zzAtEOF == true <=> the scanner is at the EOF
      -
      private char[]zzBuffer -
      this buffer contains the current text to be matched and is - the source of the yytext() string
      -
      private intzzCurrentPos -
      the current text position in the buffer
      -
      private intzzEndRead -
      endRead marks the last character in the buffer, that has been read - from input
      -
      private booleanzzEOFDone -
      denotes if the user-EOF-code has already been executed
      -
      private intzzLexicalState -
      the current lexical state
      -
      private intzzMarkedPos -
      the textposition at the last accepting state
      -
      private intzzPushbackPos -
      the textposition at the last state to be included in yytext
      -
      private java.io.ReaderzzReader -
      the input device
      -
      private intzzStartRead -
      startRead marks the beginning of the yytext() string in the buffer
      -
      private intzzState -
      the current state of the DFA
      -
      -
    • -
    - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - - - - -
      Constructors 
      Constructor and Description
      Lexer(java.io.InputStream in) -
      Creates a new scanner.
      -
      Lexer(java.io.Reader in) -
      Creates a new scanner - There is also a java.io.InputStream version of this constructor.
      -
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      LocationgetLocation() 
      voidyybegin(int newState) -
      Enters a new lexical state
      -
      charyycharat(int pos) -
      Returns the character at position pos from the - matched text.
      -
      voidyyclose() -
      Closes the input stream.
      -
      intyylength() -
      Returns the length of the matched text region.
      -
      intyylex() -
      Resumes scanning until the next regular expression is matched, - the end of input is encountered or an I/O-Error occurs.
      -
      voidyypushback(int number) -
      Pushes the specified amount of characters back into the input stream.
      -
      voidyyreset(java.io.Reader reader) -
      Resets the scanner to read from a new input stream.
      -
      intyystate() -
      Returns the current lexical state.
      -
      java.lang.Stringyytext() -
      Returns the text matched by the current regular expression.
      -
      private voidzzDoEOF() -
      Contains user EOF-code, which will be executed exactly once, - when the end of file is reached
      -
      private booleanzzRefill() -
      Refills the input buffer.
      -
      private voidzzScanError(int errorCode) -
      Reports an error that occured while scanning.
      -
      private static int[]zzUnpackAction() 
      private static intzzUnpackAction(java.lang.String packed, - int offset, - int[] result) 
      private static char[]zzUnpackCMap(java.lang.String packed) -
      Unpacks the compressed character translation table.
      -
      - -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        buffer

        -
        private java.lang.StringBuilder buffer
        -
      • -
      - - - - - - - - - - - -
        -
      • -

        yychar

        -
        private int yychar
        -
        the number of characters up to the start of the matched text
        -
      • -
      - - - -
        -
      • -

        yycolumn

        -
        private int yycolumn
        -
        the number of characters from the last newline up to the start of the - matched text
        -
      • -
      - - - -
        -
      • -

        YYEOF

        -
        public static final int YYEOF
        -
        This character denotes the end of file
        -
        -
        See Also:
        -
        Constant Field Values
        -
        -
      • -
      - - - - - - - -
        -
      • -

        yyline

        -
        private int yyline
        -
        number of newlines encountered up to the start of the matched text
        -
      • -
      - - - -
        -
      • -

        ZZ_ACTION

        -
        private static final int[] ZZ_ACTION
        -
        Translates DFA states to action switch labels.
        -
      • -
      - - - -
        -
      • -

        ZZ_ACTION_PACKED_0

        -
        private static final java.lang.String ZZ_ACTION_PACKED_0
        -
        -
        See Also:
        -
        Constant Field Values
        -
        -
      • -
      - - - -
        -
      • -

        ZZ_BUFFERSIZE

        -
        private static final int ZZ_BUFFERSIZE
        -
        initial size of the lookahead buffer
        -
        -
        See Also:
        -
        Constant Field Values
        -
        -
      • -
      - - - -
        -
      • -

        ZZ_CMAP

        -
        private static final char[] ZZ_CMAP
        -
        Translates characters to character classes
        -
      • -
      - - - -
        -
      • -

        ZZ_CMAP_PACKED

        -
        private static final java.lang.String ZZ_CMAP_PACKED
        -
        Translates characters to character classes
        -
        -
        See Also:
        -
        Constant Field Values
        -
        -
      • -
      - - - -
        -
      • -

        ZZ_ERROR_MSG

        -
        private static final java.lang.String[] ZZ_ERROR_MSG
        -
      • -
      - - - - - - - -
        -
      • -

        ZZ_PUSHBACK_2BIG

        -
        private static final int ZZ_PUSHBACK_2BIG
        -
        -
        See Also:
        -
        Constant Field Values
        -
        -
      • -
      - - - -
        -
      • -

        ZZ_UNKNOWN_ERROR

        -
        private static final int ZZ_UNKNOWN_ERROR
        -
        -
        See Also:
        -
        Constant Field Values
        -
        -
      • -
      - - - -
        -
      • -

        zzAtBOL

        -
        private boolean zzAtBOL
        -
        zzAtBOL == true <=> the scanner is currently at the beginning of a line
        -
      • -
      - - - -
        -
      • -

        zzAtEOF

        -
        private boolean zzAtEOF
        -
        zzAtEOF == true <=> the scanner is at the EOF
        -
      • -
      - - - -
        -
      • -

        zzBuffer

        -
        private char[] zzBuffer
        -
        this buffer contains the current text to be matched and is - the source of the yytext() string
        -
      • -
      - - - -
        -
      • -

        zzCurrentPos

        -
        private int zzCurrentPos
        -
        the current text position in the buffer
        -
      • -
      - - - -
        -
      • -

        zzEndRead

        -
        private int zzEndRead
        -
        endRead marks the last character in the buffer, that has been read - from input
        -
      • -
      - - - -
        -
      • -

        zzEOFDone

        -
        private boolean zzEOFDone
        -
        denotes if the user-EOF-code has already been executed
        -
      • -
      - - - -
        -
      • -

        zzLexicalState

        -
        private int zzLexicalState
        -
        the current lexical state
        -
      • -
      - - - -
        -
      • -

        zzMarkedPos

        -
        private int zzMarkedPos
        -
        the textposition at the last accepting state
        -
      • -
      - - - -
        -
      • -

        zzPushbackPos

        -
        private int zzPushbackPos
        -
        the textposition at the last state to be included in yytext
        -
      • -
      - - - -
        -
      • -

        zzReader

        -
        private java.io.Reader zzReader
        -
        the input device
        -
      • -
      - - - -
        -
      • -

        zzStartRead

        -
        private int zzStartRead
        -
        startRead marks the beginning of the yytext() string in the buffer
        -
      • -
      - - - -
        -
      • -

        zzState

        -
        private int zzState
        -
        the current state of the DFA
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        Lexer

        -
        public Lexer(java.io.InputStream in)
        -
        Creates a new scanner. - There is also java.io.Reader version of this constructor.
        -
        -
        Parameters:
        -
        in - the java.io.Inputstream to read input from.
        -
        -
      • -
      - - - -
        -
      • -

        Lexer

        -
        public Lexer(java.io.Reader in)
        -
        Creates a new scanner - There is also a java.io.InputStream version of this constructor.
        -
        -
        Parameters:
        -
        in - the java.io.Reader to read input from.
        -
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - - - - - -
        -
      • -

        yybegin

        -
        public final void yybegin(int newState)
        -
        Enters a new lexical state
        -
        -
        Parameters:
        -
        newState - the new lexical state
        -
        -
      • -
      - - - -
        -
      • -

        yycharat

        -
        public final char yycharat(int pos)
        -
        Returns the character at position pos from the - matched text. - - It is equivalent to yytext().charAt(pos), but faster
        -
        -
        Parameters:
        -
        pos - the position of the character to fetch. - A value from 0 to yylength()-1.
        -
        Returns:
        -
        the character at position pos
        -
        -
      • -
      - - - -
        -
      • -

        yyclose

        -
        public final void yyclose()
        -                   throws java.io.IOException
        -
        Closes the input stream.
        -
        -
        Throws:
        -
        java.io.IOException
        -
        -
      • -
      - - - -
        -
      • -

        yylength

        -
        public final int yylength()
        -
        Returns the length of the matched text region.
        -
      • -
      - - - -
        -
      • -

        yylex

        -
        public int yylex()
        -          throws java.io.IOException
        -
        Resumes scanning until the next regular expression is matched, - the end of input is encountered or an I/O-Error occurs.
        -
        -
        Specified by:
        -
        yylex in class BaseLexer
        -
        Returns:
        -
        the next token
        -
        Throws:
        -
        java.io.IOException - if any I/O-Error occurs
        -
        -
      • -
      - - - -
        -
      • -

        yypushback

        -
        public void yypushback(int number)
        -
        Pushes the specified amount of characters back into the input stream. - - They will be read again by then next call of the scanning method
        -
        -
        Parameters:
        -
        number - the number of characters to be read again. - This number must not be greater than yylength()!
        -
        -
      • -
      - - - -
        -
      • -

        yyreset

        -
        public final void yyreset(java.io.Reader reader)
        -
        Resets the scanner to read from a new input stream. - Does not close the old reader. - - All internal variables are reset, the old input stream - cannot be reused (internal buffer is discarded and lost). - Lexical state is set to ZZ_INITIAL.
        -
        -
        Parameters:
        -
        reader - the new input stream
        -
        -
      • -
      - - - -
        -
      • -

        yystate

        -
        public final int yystate()
        -
        Returns the current lexical state.
        -
      • -
      - - - -
        -
      • -

        yytext

        -
        public final java.lang.String yytext()
        -
        Returns the text matched by the current regular expression.
        -
      • -
      - - - -
        -
      • -

        zzDoEOF

        -
        private void zzDoEOF()
        -              throws java.io.IOException
        -
        Contains user EOF-code, which will be executed exactly once, - when the end of file is reached
        -
        -
        Throws:
        -
        java.io.IOException
        -
        -
      • -
      - - - -
        -
      • -

        zzRefill

        -
        private boolean zzRefill()
        -                  throws java.io.IOException
        -
        Refills the input buffer.
        -
        -
        Returns:
        -
        false, iff there was new input.
        -
        Throws:
        -
        java.io.IOException - if any I/O-Error occurs
        -
        -
      • -
      - - - -
        -
      • -

        zzScanError

        -
        private void zzScanError(int errorCode)
        -
        Reports an error that occured while scanning. - - In a wellformed scanner (no or only correct usage of - yypushback(int) and a match-all fallback rule) this method - will only be called with things that "Can't Possibly Happen". - If this method is called, something is seriously wrong - (e.g. a JFlex bug producing a faulty scanner etc.). - - Usual syntax/scanner level error handling should be done - in error fallback rules.
        -
        -
        Parameters:
        -
        errorCode - the code of the errormessage to display
        -
        -
      • -
      - - - -
        -
      • -

        zzUnpackAction

        -
        private static int[] zzUnpackAction()
        -
      • -
      - - - -
        -
      • -

        zzUnpackAction

        -
        private static int zzUnpackAction(java.lang.String packed,
        -                                  int offset,
        -                                  int[] result)
        -
      • -
      - - - -
        -
      • -

        zzUnpackCMap

        -
        private static char[] zzUnpackCMap(java.lang.String packed)
        -
        Unpacks the compressed character translation table.
        -
        -
        Parameters:
        -
        packed - the packed character translation table
        -
        Returns:
        -
        the unpacked character translation table
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/Parser.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/Parser.html" deleted file mode 100644 index 150cc2ec7..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/Parser.html" +++ /dev/null @@ -1,1567 +0,0 @@ - - - - - -Parser - - - - - - - - - - - - -
-
decaf.frontend
-

Class Parser

-
-
- -
- -
-
- -
-
-
    -
  • - - - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        Parser

        -
        public Parser()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - - - - - -
        -
      • -

        debug

        -
        void debug(java.lang.String msg)
        -
      • -
      - - - -
        -
      • -

        diagnose

        -
        public void diagnose()
        -
      • -
      - - - -
        -
      • -

        dump_stacks

        -
        void dump_stacks(int count)
        -
      • -
      - - - -
        -
      • -

        init_stacks

        -
        final boolean init_stacks()
        -
      • -
      - - - -
        -
      • -

        onReduce

        -
        public boolean onReduce(java.lang.String rule)
        -
        打印当前归约所用的语法规则
        - 请勿修改。
        -
        -
        Specified by:
        -
        onReduce in interface ReduceListener
        -
        -
      • -
      - - - -
        -
      • -

        state_drop

        -
        final void state_drop(int cnt)
        -
      • -
      - - - -
        -
      • -

        state_peek

        -
        final int state_peek(int relative)
        -
      • -
      - - - -
        -
      • -

        state_pop

        -
        final int state_pop()
        -
      • -
      - - - -
        -
      • -

        state_push

        -
        final void state_push(int state)
        -
      • -
      - - - -
        -
      • -

        val_drop

        -
        final void val_drop(int cnt)
        -
      • -
      - - - -
        -
      • -

        val_init

        -
        final void val_init()
        -
      • -
      - - - -
        -
      • -

        val_peek

        -
        final SemValue val_peek(int relative)
        -
      • -
      - - - -
        -
      • -

        val_pop

        -
        final SemValue val_pop()
        -
      • -
      - - - -
        -
      • -

        val_push

        -
        final void val_push(SemValue val)
        -
      • -
      - - - -
        -
      • -

        yycheck

        -
        static void yycheck()
        -
      • -
      - - - -
        -
      • -

        yyclearin

        -
        void yyclearin()
        -
      • -
      - - - -
        -
      • -

        yyerrok

        -
        void yyerrok()
        -
      • -
      - - - -
        -
      • -

        yylexdebug

        -
        void yylexdebug(int state,
        -                int ch)
        -
      • -
      - - - - - - - -
        -
      • -

        yytable

        -
        static void yytable()
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/ParserHelper.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/ParserHelper.html" deleted file mode 100644 index b8419703b..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/ParserHelper.html" +++ /dev/null @@ -1,344 +0,0 @@ - - - - - -ParserHelper - - - - - - - - - - - - -
-
decaf.frontend
-

Class ParserHelper

-
-
- -
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    ReduceListener
    -
    -
    -
    -
    public class ParserHelper
    -extends Parser
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        ParserHelper

        -
        public ParserHelper()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        UserAction

        -
        void UserAction(SemValue $$,
        -                SemValue $1,
        -                SemValue $2,
        -                SemValue $3,
        -                SemValue $4,
        -                SemValue $5,
        -                SemValue $6)
        -
        辅助模版(切勿直接调用)
        -
        -
        Parameters:
        -
        $$ - 对应 YACC 语义动作中的 $$
        -
        $1 - 对应 YACC 语义动作中的 $1
        -
        $2 - 对应 YACC 语义动作中的 $2
        -
        $3 - 对应 YACC 语义动作中的 $3
        -
        $4 - 对应 YACC 语义动作中的 $4
        -
        $5 - 对应 YACC 语义动作中的 $5
        -
        $6 - 对应 YACC 语义动作中的 $6
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/ReduceListener.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/ReduceListener.html" deleted file mode 100644 index f2051e953..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/ReduceListener.html" +++ /dev/null @@ -1,223 +0,0 @@ - - - - - -ReduceListener - - - - - - - - - - - - -
-
decaf.frontend
-

Interface ReduceListener

-
-
-
-
    -
  • -
    -
    All Known Implementing Classes:
    -
    Parser, ParserHelper
    -
    -
    -
    -
    interface ReduceListener
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        onReduce

        -
        boolean onReduce(java.lang.String rule)
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/SemValue.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/SemValue.html" deleted file mode 100644 index 6e25d7345..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/SemValue.html" +++ /dev/null @@ -1,633 +0,0 @@ - - - - - -SemValue - - - - - - - - - - - - -
-
decaf.frontend
-

Class SemValue

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • decaf.frontend.SemValue
    • -
    -
  • -
-
-
    -
  • -
    -
    -
    public class SemValue
    -extends java.lang.Object
    -
  • -
-
-
- -
-
-
    -
  • - - - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        SemValue

        -
        public SemValue()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        createIdentifier

        -
        public static SemValue createIdentifier(java.lang.String name)
        -
        创建一个标识符的语义值
        -
        -
        Parameters:
        -
        name - 标识符的名字
        -
        Returns:
        -
        对应的语义值(标识符名字存放在sval域)
        -
        -
      • -
      - - - -
        -
      • -

        createKeyword

        -
        public static SemValue createKeyword(int code)
        -
        创建一个关键字的语义值
        -
        -
        Parameters:
        -
        code - 关键字的代表码
        -
        Returns:
        -
        对应关键字的语义值
        -
        -
      • -
      - - - -
        -
      • -

        createLiteral

        -
        public static SemValue createLiteral(int tag,
        -                                     java.lang.Object value)
        -
        创建一个常量的语义值
        -
        -
        Parameters:
        -
        value - 常量的值
        -
        Returns:
        -
        对应的语义值
        -
        -
      • -
      - - - -
        -
      • -

        createOperator

        -
        public static SemValue createOperator(int code)
        -
        创建一个操作符的语义值
        -
        -
        Parameters:
        -
        code - 操作符的代表码
        -
        Returns:
        -
        对应操作符的语义值
        -
        -
      • -
      - - - -
        -
      • -

        toString

        -
        public java.lang.String toString()
        -
        获取这个语义值的字符串表示
        - - 我们建议你在构造词法分析器之前先阅读一下这个函数。
        -
        -
        Overrides:
        -
        toString in class java.lang.Object
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/class-use/BaseLexer.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/class-use/BaseLexer.html" deleted file mode 100644 index 2185dade6..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/class-use/BaseLexer.html" +++ /dev/null @@ -1,167 +0,0 @@ - - - - - -Uses of Class decaf.frontend.BaseLexer - - - - - - - - - - - -
-

Uses of Class
decaf.frontend.BaseLexer

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/class-use/BaseParser.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/class-use/BaseParser.html" deleted file mode 100644 index a878fa3c8..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/class-use/BaseParser.html" +++ /dev/null @@ -1,166 +0,0 @@ - - - - - -Uses of Class decaf.frontend.BaseParser - - - - - - - - - - - -
-

Uses of Class
decaf.frontend.BaseParser

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/class-use/Lexer.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/class-use/Lexer.html" deleted file mode 100644 index 95517313f..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/class-use/Lexer.html" +++ /dev/null @@ -1,197 +0,0 @@ - - - - - -Uses of Class decaf.frontend.Lexer - - - - - - - - - - - -
-

Uses of Class
decaf.frontend.Lexer

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/class-use/Parser.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/class-use/Parser.html" deleted file mode 100644 index fccccb9f3..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/class-use/Parser.html" +++ /dev/null @@ -1,210 +0,0 @@ - - - - - -Uses of Class decaf.frontend.Parser - - - - - - - - - - - -
-

Uses of Class
decaf.frontend.Parser

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/class-use/ParserHelper.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/class-use/ParserHelper.html" deleted file mode 100644 index f1117aa68..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/class-use/ParserHelper.html" +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -Uses of Class decaf.frontend.ParserHelper - - - - - - - - - - - -
-

Uses of Class
decaf.frontend.ParserHelper

-
-
No usage of decaf.frontend.ParserHelper
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/class-use/ReduceListener.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/class-use/ReduceListener.html" deleted file mode 100644 index 1c7c4a8c1..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/class-use/ReduceListener.html" +++ /dev/null @@ -1,192 +0,0 @@ - - - - - -Uses of Interface decaf.frontend.ReduceListener - - - - - - - - - - - -
-

Uses of Interface
decaf.frontend.ReduceListener

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/class-use/SemValue.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/class-use/SemValue.html" deleted file mode 100644 index f3b8f0a32..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/class-use/SemValue.html" +++ /dev/null @@ -1,242 +0,0 @@ - - - - - -Uses of Class decaf.frontend.SemValue - - - - - - - - - - - -
-

Uses of Class
decaf.frontend.SemValue

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/package-frame.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/package-frame.html" deleted file mode 100644 index 1d0079bd8..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/package-frame.html" +++ /dev/null @@ -1,29 +0,0 @@ - - - - - -decaf.frontend - - - - - -

decaf.frontend

-
-

Interfaces

- -

Classes

- -
- - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/package-summary.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/package-summary.html" deleted file mode 100644 index 653b3d85d..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/package-summary.html" +++ /dev/null @@ -1,180 +0,0 @@ - - - - - -decaf.frontend - - - - - - - - -
- - - - - - - -
- - -
-

Package decaf.frontend

-
-
-
    -
  • - - - - - - - - - - - - -
    Interface Summary 
    InterfaceDescription
    ReduceListener 
    -
  • -
  • - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Class Summary 
    ClassDescription
    BaseLexer 
    BaseParser 
    Lexer -
    This class is a scanner generated by - JFlex 1.4.1 - on 16-10-10 下午7:05 from the specification file - src/decaf/frontend/Lexer.l
    -
    Parser 
    ParserHelper 
    SemValue 
    -
  • -
-
- -
- - - - - - - -
- - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/package-tree.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/package-tree.html" deleted file mode 100644 index 2e7fdccc7..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/package-tree.html" +++ /dev/null @@ -1,153 +0,0 @@ - - - - - -decaf.frontend Class Hierarchy - - - - - - - - -
- - - - - - - -
- - -
-

Hierarchy For Package decaf.frontend

-Package Hierarchies: - -
-
-

Class Hierarchy

- -

Interface Hierarchy

- -
- -
- - - - - - - -
- - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/package-use.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/package-use.html" deleted file mode 100644 index fda0d155e..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/frontend/package-use.html" +++ /dev/null @@ -1,202 +0,0 @@ - - - - - -Uses of Package decaf.frontend - - - - - - - - - - - -
-

Uses of Package
decaf.frontend

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/package-frame.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/package-frame.html" deleted file mode 100644 index bdeb86fe3..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/package-frame.html" +++ /dev/null @@ -1,26 +0,0 @@ - - - - - -decaf - - - - - -

decaf

-
-

Classes

- -

Enums

- -
- - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/package-summary.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/package-summary.html" deleted file mode 100644 index 833d00225..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/package-summary.html" +++ /dev/null @@ -1,165 +0,0 @@ - - - - - -decaf - - - - - - - - -
- - - - - - - -
- - -
-

Package decaf

-
-
-
    -
  • - - - - - - - - - - - - - - - - - - - - -
    Class Summary 
    ClassDescription
    Driver 
    Location -
    语法符号在源代码中的位置
    -
    Option 
    -
  • -
  • - - - - - - - - - - - - -
    Enum Summary 
    EnumDescription
    Option.Level 
    -
  • -
-
- -
- - - - - - - -
- - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/package-tree.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/package-tree.html" deleted file mode 100644 index eb7ec201c..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/package-tree.html" +++ /dev/null @@ -1,149 +0,0 @@ - - - - - -decaf Class Hierarchy - - - - - - - - -
- - - - - - - -
- - -
-

Hierarchy For Package decaf

-Package Hierarchies: - -
-
-

Class Hierarchy

-
    -
  • java.lang.Object - -
  • -
-

Enum Hierarchy

-
    -
  • java.lang.Object -
      -
    • java.lang.Enum<E> (implements java.lang.Comparable<T>, java.io.Serializable) - -
    • -
    -
  • -
-
- -
- - - - - - - -
- - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/package-use.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/package-use.html" deleted file mode 100644 index 694e8a911..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/package-use.html" +++ /dev/null @@ -1,229 +0,0 @@ - - - - - -Uses of Package decaf - - - - - - - - - - - -
-

Uses of Package
decaf

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Apply.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Apply.html" deleted file mode 100644 index ada58ad20..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Apply.html" +++ /dev/null @@ -1,413 +0,0 @@ - - - - - -Tree.Apply - - - - - - - - - - - - -
-
decaf.tree
-

Class Tree.Apply

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    Tree
    -
    -
    -
    -
    public static class Tree.Apply
    -extends Tree.Expr
    -
    A method invocation
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        actuals

        -
        public java.util.List<Tree.Expr> actuals
        -
      • -
      - - - -
        -
      • -

        method

        -
        public java.lang.String method
        -
      • -
      - - - - -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        Apply

        -
        public Apply(Tree.Expr receiver,
        -             java.lang.String method,
        -             java.util.List<Tree.Expr> actuals,
        -             Location loc)
        -
      • -
      -
    • -
    - - -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Assign.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Assign.html" deleted file mode 100644 index de189e5b2..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Assign.html" +++ /dev/null @@ -1,386 +0,0 @@ - - - - - -Tree.Assign - - - - - - - - - - - - -
-
decaf.tree
-

Class Tree.Assign

-
-
-
    -
  • java.lang.Object
  • -
  • - -
  • -
-
-
    -
  • -
    -
    Enclosing class:
    -
    Tree
    -
    -
    -
    -
    public static class Tree.Assign
    -extends Tree
    -
    A assignment with "=".
    -
  • -
-
-
- -
-
- -
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Binary.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Binary.html" deleted file mode 100644 index 3fad8a7d1..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Binary.html" +++ /dev/null @@ -1,415 +0,0 @@ - - - - - -Tree.Binary - - - - - - - - - - - - -
-
decaf.tree
-

Class Tree.Binary

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    Tree
    -
    -
    -
    -
    public static class Tree.Binary
    -extends Tree.Expr
    -
    A binary operation.
    -
  • -
-
-
- -
-
- -
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Block.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Block.html" deleted file mode 100644 index 7c51ee364..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Block.html" +++ /dev/null @@ -1,370 +0,0 @@ - - - - - -Tree.Block - - - - - - - - - - - - -
-
decaf.tree
-

Class Tree.Block

-
-
-
    -
  • java.lang.Object
  • -
  • - -
  • -
-
-
    -
  • -
    -
    Enclosing class:
    -
    Tree
    -
    -
    -
    -
    public static class Tree.Block
    -extends Tree
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        block

        -
        public java.util.List<Tree> block
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        Block

        -
        public Block(java.util.List<Tree> block,
        -             Location loc)
        -
      • -
      -
    • -
    - - -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Break.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Break.html" deleted file mode 100644 index f58c49559..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Break.html" +++ /dev/null @@ -1,341 +0,0 @@ - - - - - -Tree.Break - - - - - - - - - - - - -
-
decaf.tree
-

Class Tree.Break

-
-
-
    -
  • java.lang.Object
  • -
  • - -
  • -
-
-
    -
  • -
    -
    Enclosing class:
    -
    Tree
    -
    -
    -
    -
    public static class Tree.Break
    -extends Tree
    -
    A break from a loop.
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        Break

        -
        public Break(Location loc)
        -
      • -
      -
    • -
    - - -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.CallExpr.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.CallExpr.html" deleted file mode 100644 index 99d7a4345..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.CallExpr.html" +++ /dev/null @@ -1,425 +0,0 @@ - - - - - -Tree.CallExpr - - - - - - - - - - - - -
-
decaf.tree
-

Class Tree.CallExpr

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    Tree
    -
    -
    -
    -
    public static class Tree.CallExpr
    -extends Tree.Expr
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        actuals

        -
        public java.util.List<Tree.Expr> actuals
        -
      • -
      - - - -
        -
      • -

        isArrayLength

        -
        public boolean isArrayLength
        -
      • -
      - - - -
        -
      • -

        method

        -
        public java.lang.String method
        -
      • -
      - - - - -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        CallExpr

        -
        public CallExpr(Tree.Expr receiver,
        -                java.lang.String method,
        -                java.util.List<Tree.Expr> actuals,
        -                Location loc)
        -
      • -
      -
    • -
    - - -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.ClassDef.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.ClassDef.html" deleted file mode 100644 index 429f4e251..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.ClassDef.html" +++ /dev/null @@ -1,400 +0,0 @@ - - - - - -Tree.ClassDef - - - - - - - - - - - - -
-
decaf.tree
-

Class Tree.ClassDef

-
-
-
    -
  • java.lang.Object
  • -
  • - -
  • -
-
-
    -
  • -
    -
    Enclosing class:
    -
    Tree
    -
    -
    -
    -
    public static class Tree.ClassDef
    -extends Tree
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        fields

        -
        public java.util.List<Tree> fields
        -
      • -
      - - - -
        -
      • -

        name

        -
        public java.lang.String name
        -
      • -
      - - - -
        -
      • -

        parent

        -
        public java.lang.String parent
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        ClassDef

        -
        public ClassDef(java.lang.String name,
        -                java.lang.String parent,
        -                java.util.List<Tree> fields,
        -                Location loc)
        -
      • -
      -
    • -
    - - -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Exec.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Exec.html" deleted file mode 100644 index 79aa92def..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Exec.html" +++ /dev/null @@ -1,371 +0,0 @@ - - - - - -Tree.Exec - - - - - - - - - - - - -
-
decaf.tree
-

Class Tree.Exec

-
-
-
    -
  • java.lang.Object
  • -
  • - -
  • -
-
-
    -
  • -
    -
    Enclosing class:
    -
    Tree
    -
    -
    -
    -
    public static class Tree.Exec
    -extends Tree
    -
    an expression statement
    -
  • -
-
-
- -
-
- -
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Expr.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Expr.html" deleted file mode 100644 index f8e86d68a..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Expr.html" +++ /dev/null @@ -1,328 +0,0 @@ - - - - - -Tree.Expr - - - - - - - - - - - - -
-
decaf.tree
-

Class Tree.Expr

-
-
-
    -
  • java.lang.Object
  • -
  • - -
  • -
-
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        isClass

        -
        public boolean isClass
        -
      • -
      - - - -
        -
      • -

        usedForRef

        -
        public boolean usedForRef
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        Expr

        -
        public Expr(int tag,
        -            Location loc)
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.ForLoop.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.ForLoop.html" deleted file mode 100644 index 8011d381e..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.ForLoop.html" +++ /dev/null @@ -1,416 +0,0 @@ - - - - - -Tree.ForLoop - - - - - - - - - - - - -
-
decaf.tree
-

Class Tree.ForLoop

-
-
-
    -
  • java.lang.Object
  • -
  • - -
  • -
-
-
    -
  • -
    -
    Enclosing class:
    -
    Tree
    -
    -
    -
    -
    public static class Tree.ForLoop
    -extends Tree
    -
    A for loop.
    -
  • -
-
-
- -
-
- -
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Ident.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Ident.html" deleted file mode 100644 index ebd27af41..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Ident.html" +++ /dev/null @@ -1,430 +0,0 @@ - - - - - -Tree.Ident - - - - - - - - - - - - -
-
decaf.tree
-

Class Tree.Ident

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    Tree
    -
    -
    -
    -
    public static class Tree.Ident
    -extends Tree.LValue
    -
    An identifier
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        isDefined

        -
        public boolean isDefined
        -
      • -
      - - - -
        -
      • -

        name

        -
        public java.lang.String name
        -
      • -
      - - - - -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        Ident

        -
        public Ident(Tree.Expr owner,
        -             java.lang.String name,
        -             Location loc)
        -
      • -
      -
    • -
    - - -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.If.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.If.html" deleted file mode 100644 index ef28c84f5..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.If.html" +++ /dev/null @@ -1,401 +0,0 @@ - - - - - -Tree.If - - - - - - - - - - - - -
-
decaf.tree
-

Class Tree.If

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    Tree
    -
    -
    -
    -
    public static class Tree.If
    -extends Tree
    -
    An "if ( ) { } else { }" block
    -
  • -
-
-
- -
-
- -
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Indexed.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Indexed.html" deleted file mode 100644 index 37821280a..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Indexed.html" +++ /dev/null @@ -1,417 +0,0 @@ - - - - - -Tree.Indexed - - - - - - - - - - - - -
-
decaf.tree
-

Class Tree.Indexed

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    Tree
    -
    -
    -
    -
    public static class Tree.Indexed
    -extends Tree.LValue
    -
    An array selection
    -
  • -
-
-
- -
-
- -
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.LValue.Kind.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.LValue.Kind.html" deleted file mode 100644 index f971d1b41..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.LValue.Kind.html" +++ /dev/null @@ -1,367 +0,0 @@ - - - - - -Tree.LValue.Kind - - - - - - - - - - - - -
-
decaf.tree
-

Enum Tree.LValue.Kind

-
-
-
    -
  • java.lang.Object
  • -
  • - -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    java.io.Serializable, java.lang.Comparable<Tree.LValue.Kind>
    -
    -
    -
    Enclosing class:
    -
    Tree.LValue
    -
    -
    -
    -
    public static enum Tree.LValue.Kind
    -extends java.lang.Enum<Tree.LValue.Kind>
    -
  • -
-
-
-
    -
  • - - - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - -
      All Methods Static Methods Concrete Methods 
      Modifier and TypeMethod and Description
      static Tree.LValue.KindvalueOf(java.lang.String name) -
      Returns the enum constant of this type with the specified name.
      -
      static Tree.LValue.Kind[]values() -
      Returns an array containing the constants of this enum type, in -the order they are declared.
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Enum

        -clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
      • -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -getClass, notify, notifyAll, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - - - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        valueOf

        -
        public static Tree.LValue.Kind valueOf(java.lang.String name)
        -
        Returns the enum constant of this type with the specified name. -The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are -not permitted.)
        -
        -
        Parameters:
        -
        name - the name of the enum constant to be returned.
        -
        Returns:
        -
        the enum constant with the specified name
        -
        Throws:
        -
        java.lang.IllegalArgumentException - if this enum type has no constant with the specified name
        -
        java.lang.NullPointerException - if the argument is null
        -
        -
      • -
      - - - -
        -
      • -

        values

        -
        public static Tree.LValue.Kind[] values()
        -
        Returns an array containing the constants of this enum type, in -the order they are declared. This method may be used to iterate -over the constants as follows: -
        -for (Tree.LValue.Kind c : Tree.LValue.Kind.values())
        -    System.out.println(c);
        -
        -
        -
        Returns:
        -
        an array containing the constants of this enum type, in the order they are declared
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.LValue.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.LValue.html" deleted file mode 100644 index ef6d71628..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.LValue.html" +++ /dev/null @@ -1,338 +0,0 @@ - - - - - -Tree.LValue - - - - - - - - - - - - -
-
decaf.tree
-

Class Tree.LValue

-
-
- -
- -
-
- -
-
- -
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Literal.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Literal.html" deleted file mode 100644 index 4b6ea442d..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Literal.html" +++ /dev/null @@ -1,398 +0,0 @@ - - - - - -Tree.Literal - - - - - - - - - - - - -
-
decaf.tree
-

Class Tree.Literal

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    Tree
    -
    -
    -
    -
    public static class Tree.Literal
    -extends Tree.Expr
    -
    A constant value given literally.
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        typeTag

        -
        public int typeTag
        -
      • -
      - - - -
        -
      • -

        value

        -
        public java.lang.Object value
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        Literal

        -
        public Literal(int typeTag,
        -               java.lang.Object value,
        -               Location loc)
        -
      • -
      -
    • -
    - - -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.MethodDef.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.MethodDef.html" deleted file mode 100644 index ecc99c949..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.MethodDef.html" +++ /dev/null @@ -1,430 +0,0 @@ - - - - - -Tree.MethodDef - - - - - - - - - - - - -
-
decaf.tree
-

Class Tree.MethodDef

-
-
-
    -
  • java.lang.Object
  • -
  • - -
  • -
-
-
    -
  • -
    -
    Enclosing class:
    -
    Tree
    -
    -
    -
    -
    public static class Tree.MethodDef
    -extends Tree
    -
  • -
-
-
- -
-
- -
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.NewArray.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.NewArray.html" deleted file mode 100644 index ffa7632af..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.NewArray.html" +++ /dev/null @@ -1,398 +0,0 @@ - - - - - -Tree.NewArray - - - - - - - - - - - - -
-
decaf.tree
-

Class Tree.NewArray

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    Tree
    -
    -
    -
    -
    public static class Tree.NewArray
    -extends Tree.Expr
    -
    A new[...] operation.
    -
  • -
-
-
- -
-
- -
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.NewClass.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.NewClass.html" deleted file mode 100644 index 8b43755ad..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.NewClass.html" +++ /dev/null @@ -1,383 +0,0 @@ - - - - - -Tree.NewClass - - - - - - - - - - - - -
-
decaf.tree
-

Class Tree.NewClass

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    Tree
    -
    -
    -
    -
    public static class Tree.NewClass
    -extends Tree.Expr
    -
    A new(...) operation.
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        className

        -
        public java.lang.String className
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        NewClass

        -
        public NewClass(java.lang.String className,
        -                Location loc)
        -
      • -
      -
    • -
    - - -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Null.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Null.html" deleted file mode 100644 index 92bde80a9..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Null.html" +++ /dev/null @@ -1,352 +0,0 @@ - - - - - -Tree.Null - - - - - - - - - - - - -
-
decaf.tree
-

Class Tree.Null

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    Tree
    -
    -
    -
    -
    public static class Tree.Null
    -extends Tree.Expr
    -
  • -
-
-
- -
-
- -
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Print.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Print.html" deleted file mode 100644 index 1976e5f8c..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Print.html" +++ /dev/null @@ -1,371 +0,0 @@ - - - - - -Tree.Print - - - - - - - - - - - - -
-
decaf.tree
-

Class Tree.Print

-
-
-
    -
  • java.lang.Object
  • -
  • - -
  • -
-
-
    -
  • -
    -
    Enclosing class:
    -
    Tree
    -
    -
    -
    -
    public static class Tree.Print
    -extends Tree
    -
    A return statement.
    -
  • -
-
-
- -
-
- -
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.ReadIntExpr.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.ReadIntExpr.html" deleted file mode 100644 index d620242f9..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.ReadIntExpr.html" +++ /dev/null @@ -1,352 +0,0 @@ - - - - - -Tree.ReadIntExpr - - - - - - - - - - - - -
-
decaf.tree
-

Class Tree.ReadIntExpr

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    Tree
    -
    -
    -
    -
    public static class Tree.ReadIntExpr
    -extends Tree.Expr
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        ReadIntExpr

        -
        public ReadIntExpr(Location loc)
        -
      • -
      -
    • -
    - - -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.ReadLineExpr.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.ReadLineExpr.html" deleted file mode 100644 index 1e1241599..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.ReadLineExpr.html" +++ /dev/null @@ -1,352 +0,0 @@ - - - - - -Tree.ReadLineExpr - - - - - - - - - - - - -
-
decaf.tree
-

Class Tree.ReadLineExpr

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    Tree
    -
    -
    -
    -
    public static class Tree.ReadLineExpr
    -extends Tree.Expr
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        ReadLineExpr

        -
        public ReadLineExpr(Location loc)
        -
      • -
      -
    • -
    - - -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Return.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Return.html" deleted file mode 100644 index 5ae894382..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Return.html" +++ /dev/null @@ -1,371 +0,0 @@ - - - - - -Tree.Return - - - - - - - - - - - - -
-
decaf.tree
-

Class Tree.Return

-
-
-
    -
  • java.lang.Object
  • -
  • - -
  • -
-
-
    -
  • -
    -
    Enclosing class:
    -
    Tree
    -
    -
    -
    -
    public static class Tree.Return
    -extends Tree
    -
    A return statement.
    -
  • -
-
-
- -
-
- -
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Skip.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Skip.html" deleted file mode 100644 index e3a1fd21c..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Skip.html" +++ /dev/null @@ -1,341 +0,0 @@ - - - - - -Tree.Skip - - - - - - - - - - - - -
-
decaf.tree
-

Class Tree.Skip

-
-
-
    -
  • java.lang.Object
  • -
  • - -
  • -
-
-
    -
  • -
    -
    Enclosing class:
    -
    Tree
    -
    -
    -
    -
    public static class Tree.Skip
    -extends Tree
    -
    A no-op statement ";".
    -
  • -
-
-
- -
-
- -
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.ThisExpr.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.ThisExpr.html" deleted file mode 100644 index 7101a376a..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.ThisExpr.html" +++ /dev/null @@ -1,352 +0,0 @@ - - - - - -Tree.ThisExpr - - - - - - - - - - - - -
-
decaf.tree
-

Class Tree.ThisExpr

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    Tree
    -
    -
    -
    -
    public static class Tree.ThisExpr
    -extends Tree.Expr
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        ThisExpr

        -
        public ThisExpr(Location loc)
        -
      • -
      -
    • -
    - - -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.TopLevel.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.TopLevel.html" deleted file mode 100644 index bfba71cfd..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.TopLevel.html" +++ /dev/null @@ -1,370 +0,0 @@ - - - - - -Tree.TopLevel - - - - - - - - - - - - -
-
decaf.tree
-

Class Tree.TopLevel

-
-
-
    -
  • java.lang.Object
  • -
  • - -
  • -
-
-
    -
  • -
    -
    Enclosing class:
    -
    Tree
    -
    -
    -
    -
    public static class Tree.TopLevel
    -extends Tree
    -
  • -
-
-
- -
-
- -
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.TypeArray.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.TypeArray.html" deleted file mode 100644 index 4c8acfefb..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.TypeArray.html" +++ /dev/null @@ -1,376 +0,0 @@ - - - - - -Tree.TypeArray - - - - - - - - - - - - -
-
decaf.tree
-

Class Tree.TypeArray

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    Tree
    -
    -
    -
    -
    public static class Tree.TypeArray
    -extends Tree.TypeLiteral
    -
    An array type, A[]
    -
  • -
-
-
- -
-
- -
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.TypeCast.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.TypeCast.html" deleted file mode 100644 index 5757e4a76..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.TypeCast.html" +++ /dev/null @@ -1,398 +0,0 @@ - - - - - -Tree.TypeCast - - - - - - - - - - - - -
-
decaf.tree
-

Class Tree.TypeCast

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    Tree
    -
    -
    -
    -
    public static class Tree.TypeCast
    -extends Tree.Expr
    -
    A type cast.
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        className

        -
        public java.lang.String className
        -
      • -
      - - - - -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        TypeCast

        -
        public TypeCast(java.lang.String className,
        -                Tree.Expr expr,
        -                Location loc)
        -
      • -
      -
    • -
    - - -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.TypeClass.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.TypeClass.html" deleted file mode 100644 index 54e4a791b..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.TypeClass.html" +++ /dev/null @@ -1,375 +0,0 @@ - - - - - -Tree.TypeClass - - - - - - - - - - - - -
-
decaf.tree
-

Class Tree.TypeClass

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    Tree
    -
    -
    -
    -
    public static class Tree.TypeClass
    -extends Tree.TypeLiteral
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        name

        -
        public java.lang.String name
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        TypeClass

        -
        public TypeClass(java.lang.String name,
        -                 Location loc)
        -
      • -
      -
    • -
    - - -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.TypeIdent.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.TypeIdent.html" deleted file mode 100644 index 0a54db1f6..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.TypeIdent.html" +++ /dev/null @@ -1,380 +0,0 @@ - - - - - -Tree.TypeIdent - - - - - - - - - - - - -
-
decaf.tree
-

Class Tree.TypeIdent

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    Tree
    -
    -
    -
    -
    public static class Tree.TypeIdent
    -extends Tree.TypeLiteral
    -
    Identifies a basic type.
    -
    -
    See Also:
    -
    SemanticConstants
    -
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        typeTag

        -
        public int typeTag
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        TypeIdent

        -
        public TypeIdent(int typeTag,
        -                 Location loc)
        -
      • -
      -
    • -
    - - -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.TypeLiteral.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.TypeLiteral.html" deleted file mode 100644 index 04cd8f1c0..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.TypeLiteral.html" +++ /dev/null @@ -1,287 +0,0 @@ - - - - - -Tree.TypeLiteral - - - - - - - - - - - - -
-
decaf.tree
-

Class Tree.TypeLiteral

-
-
-
    -
  • java.lang.Object
  • -
  • - -
  • -
-
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        TypeLiteral

        -
        public TypeLiteral(int tag,
        -                   Location loc)
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.TypeTest.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.TypeTest.html" deleted file mode 100644 index e6cfdf3ec..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.TypeTest.html" +++ /dev/null @@ -1,398 +0,0 @@ - - - - - -Tree.TypeTest - - - - - - - - - - - - -
-
decaf.tree
-

Class Tree.TypeTest

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    Tree
    -
    -
    -
    -
    public static class Tree.TypeTest
    -extends Tree.Expr
    -
    instanceof expression
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        className

        -
        public java.lang.String className
        -
      • -
      - - - - -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        TypeTest

        -
        public TypeTest(Tree.Expr instance,
        -                java.lang.String className,
        -                Location loc)
        -
      • -
      -
    • -
    - - -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Unary.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Unary.html" deleted file mode 100644 index 9dba9f731..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Unary.html" +++ /dev/null @@ -1,400 +0,0 @@ - - - - - -Tree.Unary - - - - - - - - - - - - -
-
decaf.tree
-

Class Tree.Unary

-
-
- -
-
    -
  • -
    -
    Enclosing class:
    -
    Tree
    -
    -
    -
    -
    public static class Tree.Unary
    -extends Tree.Expr
    -
    A unary operation.
    -
  • -
-
-
- -
-
- -
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.VarDef.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.VarDef.html" deleted file mode 100644 index b9f74ede5..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.VarDef.html" +++ /dev/null @@ -1,385 +0,0 @@ - - - - - -Tree.VarDef - - - - - - - - - - - - -
-
decaf.tree
-

Class Tree.VarDef

-
-
-
    -
  • java.lang.Object
  • -
  • - -
  • -
-
-
    -
  • -
    -
    Enclosing class:
    -
    Tree
    -
    -
    -
    -
    public static class Tree.VarDef
    -extends Tree
    -
  • -
-
-
- -
-
- -
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Visitor.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Visitor.html" deleted file mode 100644 index 1ec92efa0..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.Visitor.html" +++ /dev/null @@ -1,703 +0,0 @@ - - - - - -Tree.Visitor - - - - - - - - - - - - -
-
decaf.tree
-

Class Tree.Visitor

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • decaf.tree.Tree.Visitor
    • -
    -
  • -
-
-
    -
  • -
    -
    Enclosing class:
    -
    Tree
    -
    -
    -
    -
    public abstract static class Tree.Visitor
    -extends java.lang.Object
    -
    A generic visitor class for trees.
    -
  • -
-
-
- -
-
- -
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.WhileLoop.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.WhileLoop.html" deleted file mode 100644 index b5ed6740c..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.WhileLoop.html" +++ /dev/null @@ -1,386 +0,0 @@ - - - - - -Tree.WhileLoop - - - - - - - - - - - - -
-
decaf.tree
-

Class Tree.WhileLoop

-
-
-
    -
  • java.lang.Object
  • -
  • - -
  • -
-
-
    -
  • -
    -
    Enclosing class:
    -
    Tree
    -
    -
    -
    -
    public static class Tree.WhileLoop
    -extends Tree
    -
    A while loop
    -
  • -
-
-
- -
-
- -
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.html" deleted file mode 100644 index 7b18a07bc..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/Tree.html" +++ /dev/null @@ -1,2062 +0,0 @@ - - - - - -Tree - - - - - - - - - - - - -
-
decaf.tree
-

Class Tree

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • decaf.tree.Tree
    • -
    -
  • -
-
-
    -
  • -
    -
    Direct Known Subclasses:
    -
    Tree.Assign, Tree.Block, Tree.Break, Tree.ClassDef, Tree.Exec, Tree.Expr, Tree.ForLoop, Tree.If, Tree.MethodDef, Tree.Print, Tree.Return, Tree.Skip, Tree.TopLevel, Tree.TypeLiteral, Tree.VarDef, Tree.WhileLoop
    -
    -
    -
    -
    public abstract class Tree
    -extends java.lang.Object
    -
    Root class for abstract syntax tree nodes. It provides - definitions for specific tree nodes as subclasses nested inside - There are 40 such subclasses. - - Each subclass is highly standardized. It generally contains only tree - fields for the syntactic subcomponents of the node. Some classes that - represent identifier uses or definitions also define a - Symbol field that denotes the represented identifier. Classes - for non-local jumps also carry the jump target as a field. The root - class Tree itself defines fields for the tree's type and - position. No other fields are kept in a tree node; instead parameters - are passed to methods accessing the node. - - The only method defined in subclasses is `visit' which applies a - given visitor to the tree. The actual tree processing is done by - visitor classes in other packages. The abstract class - Visitor, as well as an Factory interface for trees, are - defined as inner classes in Tree.
    -
    -
    See Also:
    -
    TreeMaker, -TreeInfo, -TreeTranslator, -Pretty
    -
    -
  • -
-
-
-
    -
  • - - - -
      -
    • - - -

      Field Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Fields 
      Modifier and TypeField and Description
      static intAND 
      static intAPPLY -
      Method invocation expressions, of type Apply.
      -
      static intASSERT -
      Assert statements, of type Assert.
      -
      static intASSIGN -
      Assignment expressions, of type Assign.
      -
      static intBITAND 
      static intBITOR 
      static intBITXOR 
      static intBLOCK -
      Blocks, of type Block.
      -
      static intBOOL 
      static intBREAK -
      Break statements, of type Break.
      -
      static intCALLEXPR 
      static intCASE -
      Case parts in switch statements, of type Case.
      -
      static intCATCH -
      Catch clauses in try statements, of type Catch.
      -
      static intCLASSDEF -
      Class definitions, of type ClassDef.
      -
      static intCOMPL 
      static intCONDEXPR -
      Conditional expressions, of type Conditional.
      -
      static intCONTINUE -
      Continue statements, of type Continue.
      -
      static intDIV 
      static intDOLOOP -
      Do-while loops, of type DoLoop.
      -
      static intEQ 
      static intERRONEOUS -
      Error trees, of type Erroneous.
      -
      static intEXEC -
      Expression statements, of type Exec.
      -
      static intFORLOOP -
      For-loops, of type ForLoop.
      -
      static intGE 
      static intGT 
      static intIDENT -
      Simple identifiers, of type Ident.
      -
      static intIF -
      Conditional statements, of type If.
      -
      static intIMPORT -
      Import clauses, of type Import.
      -
      static intINDEXED -
      Indexed array expressions, of type Indexed.
      -
      static intINT 
      static intLABELLED -
      Labelled statements, of type Labelled.
      -
      static intLE 
      static intLITERAL -
      Literals, of type Literal.
      -
      Locationloc 
      static intLT 
      static intMETHODDEF -
      Method definitions, of type MethodDef.
      -
      static intMINUS 
      static intMOD 
      static intMUL 
      static intNE 
      static intNEG 
      static intNEWARRAY -
      Array creation expressions, of type NewArray.
      -
      static intNEWCLASS -
      Class instance creation expressions, of type NewClass.
      -
      static intNOT 
      static intNULL 
      static intNULLCHK -
      unary operator for null reference checks, only used internally.
      -
      static intOR -
      Binary operators, of type Binary.
      -
      static intPARENS -
      Parenthesized subexpressions, of type Parens.
      -
      static intPLUS 
      static intPOS -
      Unary operators, of type Unary.
      -
      static intPOSTDEC 
      static intPOSTINC 
      static intPREDEC 
      static intPREINC 
      static intPRINT 
      static intREADINTEXPR 
      static intREADLINEEXPR 
      static intRETURN -
      Return statements, of type Return.
      -
      static intSELECT -
      Selections, of type Select.
      -
      static intSKIP -
      The no-op statement ";", of type Skip
      -
      static intSL 
      static intSR 
      static intSTRING 
      static intSWITCH -
      Switch statements, of type Switch.
      -
      static intSYNCHRONIZED -
      Synchronized statements, of type Synchonized.
      -
      inttag 
      static intTHISEXPR 
      static intTHROW -
      Throw statements, of type Throw.
      -
      static intTOPLEVEL -
      Toplevel nodes, of type TopLevel, representing entire source files.
      -
      static intTRY -
      Try statements, of type Try.
      -
      static intTYPEAPPLY -
      Parameterized types, of type TypeApply.
      -
      static intTYPEARRAY -
      Array types, of type TypeArray.
      -
      static intTYPECAST -
      Type cast expressions, of type TypeCast.
      -
      static intTYPECLASS -
      Class types, of type TypeClass.
      -
      static intTYPEIDENT -
      Basic type identifiers, of type TypeIdent.
      -
      static intTYPEPARAMETER -
      Formal type parameters, of type TypeParameter.
      -
      static intTYPETEST -
      Type test expressions, of type TypeTest.
      -
      static intUSR 
      static intVARDEF -
      Variable definitions, of type VarDef.
      -
      static intVOID -
      Tags for Literal and TypeLiteral
      -
      static intWHILELOOP -
      While-loops, of type WhileLoop.
      -
      -
    • -
    - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      Tree(int tag, - Location loc) -
      Initialize tree with given tag.
      -
      -
    • -
    - - -
  • -
-
-
- -
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Apply.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Apply.html" deleted file mode 100644 index 42e01f2ed..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Apply.html" +++ /dev/null @@ -1,162 +0,0 @@ - - - - - -Uses of Class decaf.tree.Tree.Apply - - - - - - - - - - - -
-

Uses of Class
decaf.tree.Tree.Apply

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Assign.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Assign.html" deleted file mode 100644 index 366c006a2..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Assign.html" +++ /dev/null @@ -1,162 +0,0 @@ - - - - - -Uses of Class decaf.tree.Tree.Assign - - - - - - - - - - - -
-

Uses of Class
decaf.tree.Tree.Assign

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Binary.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Binary.html" deleted file mode 100644 index 32be884af..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Binary.html" +++ /dev/null @@ -1,162 +0,0 @@ - - - - - -Uses of Class decaf.tree.Tree.Binary - - - - - - - - - - - -
-

Uses of Class
decaf.tree.Tree.Binary

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Block.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Block.html" deleted file mode 100644 index 5aea6ad02..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Block.html" +++ /dev/null @@ -1,191 +0,0 @@ - - - - - -Uses of Class decaf.tree.Tree.Block - - - - - - - - - - - -
-

Uses of Class
decaf.tree.Tree.Block

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Break.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Break.html" deleted file mode 100644 index 60b7b4207..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Break.html" +++ /dev/null @@ -1,162 +0,0 @@ - - - - - -Uses of Class decaf.tree.Tree.Break - - - - - - - - - - - -
-

Uses of Class
decaf.tree.Tree.Break

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.CallExpr.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.CallExpr.html" deleted file mode 100644 index 1eebbe5e9..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.CallExpr.html" +++ /dev/null @@ -1,162 +0,0 @@ - - - - - -Uses of Class decaf.tree.Tree.CallExpr - - - - - - - - - - - -
-

Uses of Class
decaf.tree.Tree.CallExpr

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.ClassDef.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.ClassDef.html" deleted file mode 100644 index daec5c20c..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.ClassDef.html" +++ /dev/null @@ -1,222 +0,0 @@ - - - - - -Uses of Class decaf.tree.Tree.ClassDef - - - - - - - - - - - -
-

Uses of Class
decaf.tree.Tree.ClassDef

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Exec.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Exec.html" deleted file mode 100644 index 9b8eeaa74..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Exec.html" +++ /dev/null @@ -1,162 +0,0 @@ - - - - - -Uses of Class decaf.tree.Tree.Exec - - - - - - - - - - - -
-

Uses of Class
decaf.tree.Tree.Exec

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Expr.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Expr.html" deleted file mode 100644 index f728acc76..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Expr.html" +++ /dev/null @@ -1,486 +0,0 @@ - - - - - -Uses of Class decaf.tree.Tree.Expr - - - - - - - - - - - -
-

Uses of Class
decaf.tree.Tree.Expr

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.ForLoop.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.ForLoop.html" deleted file mode 100644 index 19422cb5e..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.ForLoop.html" +++ /dev/null @@ -1,162 +0,0 @@ - - - - - -Uses of Class decaf.tree.Tree.ForLoop - - - - - - - - - - - -
-

Uses of Class
decaf.tree.Tree.ForLoop

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Ident.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Ident.html" deleted file mode 100644 index 21743a604..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Ident.html" +++ /dev/null @@ -1,162 +0,0 @@ - - - - - -Uses of Class decaf.tree.Tree.Ident - - - - - - - - - - - -
-

Uses of Class
decaf.tree.Tree.Ident

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.If.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.If.html" deleted file mode 100644 index 9b86c7168..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.If.html" +++ /dev/null @@ -1,162 +0,0 @@ - - - - - -Uses of Class decaf.tree.Tree.If - - - - - - - - - - - -
-

Uses of Class
decaf.tree.Tree.If

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Indexed.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Indexed.html" deleted file mode 100644 index b75547f2e..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Indexed.html" +++ /dev/null @@ -1,162 +0,0 @@ - - - - - -Uses of Class decaf.tree.Tree.Indexed - - - - - - - - - - - -
-

Uses of Class
decaf.tree.Tree.Indexed

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.LValue.Kind.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.LValue.Kind.html" deleted file mode 100644 index bc76181e0..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.LValue.Kind.html" +++ /dev/null @@ -1,184 +0,0 @@ - - - - - -Uses of Class decaf.tree.Tree.LValue.Kind - - - - - - - - - - - -
-

Uses of Class
decaf.tree.Tree.LValue.Kind

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.LValue.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.LValue.html" deleted file mode 100644 index c5626bf66..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.LValue.html" +++ /dev/null @@ -1,231 +0,0 @@ - - - - - -Uses of Class decaf.tree.Tree.LValue - - - - - - - - - - - -
-

Uses of Class
decaf.tree.Tree.LValue

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Literal.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Literal.html" deleted file mode 100644 index a1d83011a..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Literal.html" +++ /dev/null @@ -1,162 +0,0 @@ - - - - - -Uses of Class decaf.tree.Tree.Literal - - - - - - - - - - - -
-

Uses of Class
decaf.tree.Tree.Literal

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.MethodDef.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.MethodDef.html" deleted file mode 100644 index ceb4d961e..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.MethodDef.html" +++ /dev/null @@ -1,184 +0,0 @@ - - - - - -Uses of Class decaf.tree.Tree.MethodDef - - - - - - - - - - - -
-

Uses of Class
decaf.tree.Tree.MethodDef

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.NewArray.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.NewArray.html" deleted file mode 100644 index 2ece35387..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.NewArray.html" +++ /dev/null @@ -1,162 +0,0 @@ - - - - - -Uses of Class decaf.tree.Tree.NewArray - - - - - - - - - - - -
-

Uses of Class
decaf.tree.Tree.NewArray

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.NewClass.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.NewClass.html" deleted file mode 100644 index cefa8dee0..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.NewClass.html" +++ /dev/null @@ -1,162 +0,0 @@ - - - - - -Uses of Class decaf.tree.Tree.NewClass - - - - - - - - - - - -
-

Uses of Class
decaf.tree.Tree.NewClass

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Null.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Null.html" deleted file mode 100644 index 4438990b3..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Null.html" +++ /dev/null @@ -1,162 +0,0 @@ - - - - - -Uses of Class decaf.tree.Tree.Null - - - - - - - - - - - -
-

Uses of Class
decaf.tree.Tree.Null

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Print.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Print.html" deleted file mode 100644 index 2ec8a75dd..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Print.html" +++ /dev/null @@ -1,162 +0,0 @@ - - - - - -Uses of Class decaf.tree.Tree.Print - - - - - - - - - - - -
-

Uses of Class
decaf.tree.Tree.Print

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.ReadIntExpr.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.ReadIntExpr.html" deleted file mode 100644 index 2aac83b74..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.ReadIntExpr.html" +++ /dev/null @@ -1,162 +0,0 @@ - - - - - -Uses of Class decaf.tree.Tree.ReadIntExpr - - - - - - - - - - - -
-

Uses of Class
decaf.tree.Tree.ReadIntExpr

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.ReadLineExpr.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.ReadLineExpr.html" deleted file mode 100644 index c5e1c7289..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.ReadLineExpr.html" +++ /dev/null @@ -1,162 +0,0 @@ - - - - - -Uses of Class decaf.tree.Tree.ReadLineExpr - - - - - - - - - - - -
-

Uses of Class
decaf.tree.Tree.ReadLineExpr

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Return.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Return.html" deleted file mode 100644 index d37b446e9..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Return.html" +++ /dev/null @@ -1,162 +0,0 @@ - - - - - -Uses of Class decaf.tree.Tree.Return - - - - - - - - - - - -
-

Uses of Class
decaf.tree.Tree.Return

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Skip.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Skip.html" deleted file mode 100644 index 52c2888ca..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Skip.html" +++ /dev/null @@ -1,162 +0,0 @@ - - - - - -Uses of Class decaf.tree.Tree.Skip - - - - - - - - - - - -
-

Uses of Class
decaf.tree.Tree.Skip

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.ThisExpr.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.ThisExpr.html" deleted file mode 100644 index 8bf21d32d..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.ThisExpr.html" +++ /dev/null @@ -1,162 +0,0 @@ - - - - - -Uses of Class decaf.tree.Tree.ThisExpr - - - - - - - - - - - -
-

Uses of Class
decaf.tree.Tree.ThisExpr

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.TopLevel.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.TopLevel.html" deleted file mode 100644 index 128756d3e..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.TopLevel.html" +++ /dev/null @@ -1,205 +0,0 @@ - - - - - -Uses of Class decaf.tree.Tree.TopLevel - - - - - - - - - - - -
-

Uses of Class
decaf.tree.Tree.TopLevel

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.TypeArray.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.TypeArray.html" deleted file mode 100644 index 212ff9007..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.TypeArray.html" +++ /dev/null @@ -1,162 +0,0 @@ - - - - - -Uses of Class decaf.tree.Tree.TypeArray - - - - - - - - - - - -
-

Uses of Class
decaf.tree.Tree.TypeArray

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.TypeCast.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.TypeCast.html" deleted file mode 100644 index 732ef9e08..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.TypeCast.html" +++ /dev/null @@ -1,162 +0,0 @@ - - - - - -Uses of Class decaf.tree.Tree.TypeCast - - - - - - - - - - - -
-

Uses of Class
decaf.tree.Tree.TypeCast

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.TypeClass.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.TypeClass.html" deleted file mode 100644 index acfc2e68d..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.TypeClass.html" +++ /dev/null @@ -1,162 +0,0 @@ - - - - - -Uses of Class decaf.tree.Tree.TypeClass - - - - - - - - - - - -
-

Uses of Class
decaf.tree.Tree.TypeClass

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.TypeIdent.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.TypeIdent.html" deleted file mode 100644 index 0832cefc2..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.TypeIdent.html" +++ /dev/null @@ -1,162 +0,0 @@ - - - - - -Uses of Class decaf.tree.Tree.TypeIdent - - - - - - - - - - - -
-

Uses of Class
decaf.tree.Tree.TypeIdent

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.TypeLiteral.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.TypeLiteral.html" deleted file mode 100644 index c3c5a4fe5..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.TypeLiteral.html" +++ /dev/null @@ -1,251 +0,0 @@ - - - - - -Uses of Class decaf.tree.Tree.TypeLiteral - - - - - - - - - - - -
-

Uses of Class
decaf.tree.Tree.TypeLiteral

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.TypeTest.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.TypeTest.html" deleted file mode 100644 index 1c9157e08..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.TypeTest.html" +++ /dev/null @@ -1,162 +0,0 @@ - - - - - -Uses of Class decaf.tree.Tree.TypeTest - - - - - - - - - - - -
-

Uses of Class
decaf.tree.Tree.TypeTest

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Unary.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Unary.html" deleted file mode 100644 index 58cc9a231..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Unary.html" +++ /dev/null @@ -1,162 +0,0 @@ - - - - - -Uses of Class decaf.tree.Tree.Unary - - - - - - - - - - - -
-

Uses of Class
decaf.tree.Tree.Unary

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.VarDef.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.VarDef.html" deleted file mode 100644 index fc7e9e1a2..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.VarDef.html" +++ /dev/null @@ -1,226 +0,0 @@ - - - - - -Uses of Class decaf.tree.Tree.VarDef - - - - - - - - - - - -
-

Uses of Class
decaf.tree.Tree.VarDef

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Visitor.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Visitor.html" deleted file mode 100644 index 1c86b1ae9..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.Visitor.html" +++ /dev/null @@ -1,292 +0,0 @@ - - - - - -Uses of Class decaf.tree.Tree.Visitor - - - - - - - - - - - -
-

Uses of Class
decaf.tree.Tree.Visitor

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.WhileLoop.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.WhileLoop.html" deleted file mode 100644 index e0ba649d8..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.WhileLoop.html" +++ /dev/null @@ -1,162 +0,0 @@ - - - - - -Uses of Class decaf.tree.Tree.WhileLoop - - - - - - - - - - - -
-

Uses of Class
decaf.tree.Tree.WhileLoop

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.html" deleted file mode 100644 index b4cc4a320..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/class-use/Tree.html" +++ /dev/null @@ -1,490 +0,0 @@ - - - - - -Uses of Class decaf.tree.Tree - - - - - - - - - - - -
-

Uses of Class
decaf.tree.Tree

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/package-frame.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/package-frame.html" deleted file mode 100644 index 901688ba1..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/package-frame.html" +++ /dev/null @@ -1,60 +0,0 @@ - - - - - -decaf.tree - - - - - -

decaf.tree

- - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/package-summary.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/package-summary.html" deleted file mode 100644 index 1748d3a28..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/package-summary.html" +++ /dev/null @@ -1,345 +0,0 @@ - - - - - -decaf.tree - - - - - - - - -
- - - - - - - -
- - -
-

Package decaf.tree

-
-
- -
- -
- - - - - - - -
- - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/package-tree.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/package-tree.html" deleted file mode 100644 index 70db3cb13..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/package-tree.html" +++ /dev/null @@ -1,195 +0,0 @@ - - - - - -decaf.tree Class Hierarchy - - - - - - - - -
- - - - - - - -
- - -
-

Hierarchy For Package decaf.tree

-Package Hierarchies: - -
-
-

Class Hierarchy

- -

Enum Hierarchy

-
    -
  • java.lang.Object -
      -
    • java.lang.Enum<E> (implements java.lang.Comparable<T>, java.io.Serializable) - -
    • -
    -
  • -
-
- -
- - - - - - - -
- - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/package-use.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/package-use.html" deleted file mode 100644 index 703ba486d..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/tree/package-use.html" +++ /dev/null @@ -1,354 +0,0 @@ - - - - - -Uses of Package decaf.tree - - - - - - - - - - - -
-

Uses of Package
decaf.tree

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/utils/IndentPrintWriter.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/utils/IndentPrintWriter.html" deleted file mode 100644 index 47f77db03..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/utils/IndentPrintWriter.html" +++ /dev/null @@ -1,502 +0,0 @@ - - - - - -IndentPrintWriter - - - - - - - - - - - - -
-
decaf.utils
-

Class IndentPrintWriter

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • java.io.Writer
    • -
    • -
        -
      • java.io.PrintWriter
      • -
      • -
          -
        • decaf.utils.IndentPrintWriter
        • -
        -
      • -
      -
    • -
    -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    java.io.Closeable, java.io.Flushable, java.lang.Appendable, java.lang.AutoCloseable
    -
    -
    -
    -
    public class IndentPrintWriter
    -extends java.io.PrintWriter
    -
    用于缩进输出的类
    - 使用时注意不要自行输出"\r\n"或"\n"进行换行,而要使用该类的println系列函数进行换行
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Summary

      - - - - - - - - - - - - - - - - - - -
      Fields 
      Modifier and TypeField and Description
      private java.lang.StringBuilderindent 
      private booleannewLineBegin 
      private intstep 
      -
        -
      • - - -

        Fields inherited from class java.io.PrintWriter

        -out
      • -
      -
        -
      • - - -

        Fields inherited from class java.io.Writer

        -lock
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - - - - -
      Constructors 
      Constructor and Description
      IndentPrintWriter(java.io.OutputStream out, - int step) 
      IndentPrintWriter(java.io.Writer out, - int step) 
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      voiddecIndent() -
      减少缩进
      -
      voidincIndent() -
      增加缩进
      -
      voidprintln() 
      voidwrite(char[] buf, - int off, - int len) 
      voidwrite(int c) 
      voidwrite(java.lang.String s, - int off, - int len) 
      private voidwriteIndent() 
      -
        -
      • - - -

        Methods inherited from class java.io.PrintWriter

        -append, append, append, checkError, clearError, close, flush, format, format, print, print, print, print, print, print, print, print, print, printf, printf, println, println, println, println, println, println, println, println, println, setError, write, write
      • -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        indent

        -
        private java.lang.StringBuilder indent
        -
      • -
      - - - -
        -
      • -

        newLineBegin

        -
        private boolean newLineBegin
        -
      • -
      - - - -
        -
      • -

        step

        -
        private int step
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        IndentPrintWriter

        -
        public IndentPrintWriter(java.io.OutputStream out,
        -                         int step)
        -
        -
        Parameters:
        -
        out -
        -
        step - 每次缩进变化的空格数
        -
        -
      • -
      - - - -
        -
      • -

        IndentPrintWriter

        -
        public IndentPrintWriter(java.io.Writer out,
        -                         int step)
        -
        -
        Parameters:
        -
        out -
        -
        step - 每次缩进变化的空格数
        -
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        decIndent

        -
        public void decIndent()
        -
        减少缩进
        -
      • -
      - - - -
        -
      • -

        incIndent

        -
        public void incIndent()
        -
        增加缩进
        -
      • -
      - - - -
        -
      • -

        println

        -
        public void println()
        -
        -
        Overrides:
        -
        println in class java.io.PrintWriter
        -
        -
      • -
      - - - -
        -
      • -

        write

        -
        public void write(char[] buf,
        -                  int off,
        -                  int len)
        -
        -
        Overrides:
        -
        write in class java.io.PrintWriter
        -
        -
      • -
      - - - -
        -
      • -

        write

        -
        public void write(int c)
        -
        -
        Overrides:
        -
        write in class java.io.PrintWriter
        -
        -
      • -
      - - - -
        -
      • -

        write

        -
        public void write(java.lang.String s,
        -                  int off,
        -                  int len)
        -
        -
        Overrides:
        -
        write in class java.io.PrintWriter
        -
        -
      • -
      - - - -
        -
      • -

        writeIndent

        -
        private void writeIndent()
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/utils/MiscUtils.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/utils/MiscUtils.html" deleted file mode 100644 index 40e039f35..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/utils/MiscUtils.html" +++ /dev/null @@ -1,278 +0,0 @@ - - - - - -MiscUtils - - - - - - - - - - - - -
-
decaf.utils
-

Class MiscUtils

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • decaf.utils.MiscUtils
    • -
    -
  • -
-
-
    -
  • -
    -
    -
    public final class MiscUtils
    -extends java.lang.Object
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      MiscUtils() 
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - -
      All Methods Static Methods Concrete Methods 
      Modifier and TypeMethod and Description
      static java.lang.Stringquote(java.lang.String str) -
      返回带转义符格式的字符串
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        MiscUtils

        -
        public MiscUtils()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        quote

        -
        public static java.lang.String quote(java.lang.String str)
        -
        返回带转义符格式的字符串
        -
        -
        Parameters:
        -
        str - 不带转义符的字符串(即内部表示)
        -
        Returns:
        -
        带转义符的字符串(并加上双引号)
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/utils/class-use/IndentPrintWriter.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/utils/class-use/IndentPrintWriter.html" deleted file mode 100644 index 2fd78b99c..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/utils/class-use/IndentPrintWriter.html" +++ /dev/null @@ -1,300 +0,0 @@ - - - - - -Uses of Class decaf.utils.IndentPrintWriter - - - - - - - - - - - -
-

Uses of Class
decaf.utils.IndentPrintWriter

-
-
- -
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/utils/class-use/MiscUtils.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/utils/class-use/MiscUtils.html" deleted file mode 100644 index 19e2f0883..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/utils/class-use/MiscUtils.html" +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -Uses of Class decaf.utils.MiscUtils - - - - - - - - - - - -
-

Uses of Class
decaf.utils.MiscUtils

-
-
No usage of decaf.utils.MiscUtils
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/utils/package-frame.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/utils/package-frame.html" deleted file mode 100644 index 3d881dfe0..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/utils/package-frame.html" +++ /dev/null @@ -1,21 +0,0 @@ - - - - - -decaf.utils - - - - - -

decaf.utils

-
-

Classes

- -
- - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/utils/package-summary.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/utils/package-summary.html" deleted file mode 100644 index b8797b096..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/utils/package-summary.html" +++ /dev/null @@ -1,147 +0,0 @@ - - - - - -decaf.utils - - - - - - - - -
- - - - - - - -
- - -
-

Package decaf.utils

-
-
-
    -
  • - - - - - - - - - - - - - - - - -
    Class Summary 
    ClassDescription
    IndentPrintWriter -
    用于缩进输出的类
    - 使用时注意不要自行输出"\r\n"或"\n"进行换行,而要使用该类的println系列函数进行换行
    -
    MiscUtils 
    -
  • -
-
- -
- - - - - - - -
- - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/utils/package-tree.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/utils/package-tree.html" deleted file mode 100644 index ca8f35201..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/utils/package-tree.html" +++ /dev/null @@ -1,144 +0,0 @@ - - - - - -decaf.utils Class Hierarchy - - - - - - - - -
- - - - - - - -
- - -
-

Hierarchy For Package decaf.utils

-Package Hierarchies: - -
-
-

Class Hierarchy

-
    -
  • java.lang.Object -
      -
    • decaf.utils.MiscUtils
    • -
    • java.io.Writer (implements java.lang.Appendable, java.io.Closeable, java.io.Flushable) - -
    • -
    -
  • -
-
- -
- - - - - - - -
- - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/utils/package-use.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/utils/package-use.html" deleted file mode 100644 index 34d72ecec..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/decaf/utils/package-use.html" +++ /dev/null @@ -1,158 +0,0 @@ - - - - - -Uses of Package decaf.utils - - - - - - - - - - - -
-

Uses of Package
decaf.utils

-
-
-
    -
  • - - - - - - - - - - - - -
    Packages that use decaf.utils 
    PackageDescription
    decaf.tree 
    -
  • -
  • - - - - - - - - - - - - -
    Classes in decaf.utils used by decaf.tree 
    Class and Description
    IndentPrintWriter -
    用于缩进输出的类
    - 使用时注意不要自行输出"\r\n"或"\n"进行换行,而要使用该类的println系列函数进行换行
    -
    -
  • -
-
- - - - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/help-doc.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/help-doc.html" deleted file mode 100644 index e7389f1cf..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/help-doc.html" +++ /dev/null @@ -1,223 +0,0 @@ - - - - - -API Help - - - - - - - - -
- - - - - - - -
- - -
-

How This API Document Is Organized

-
This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.
-
-
-
    -
  • -

    Overview

    -

    The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.

    -
  • -
  • -

    Package

    -

    Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain six categories:

    -
      -
    • Interfaces (italic)
    • -
    • Classes
    • -
    • Enums
    • -
    • Exceptions
    • -
    • Errors
    • -
    • Annotation Types
    • -
    -
  • -
  • -

    Class/Interface

    -

    Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

    -
      -
    • Class inheritance diagram
    • -
    • Direct Subclasses
    • -
    • All Known Subinterfaces
    • -
    • All Known Implementing Classes
    • -
    • Class/interface declaration
    • -
    • Class/interface description
    • -
    -
      -
    • Nested Class Summary
    • -
    • Field Summary
    • -
    • Constructor Summary
    • -
    • Method Summary
    • -
    -
      -
    • Field Detail
    • -
    • Constructor Detail
    • -
    • Method Detail
    • -
    -

    Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.

    -
  • -
  • -

    Annotation Type

    -

    Each annotation type has its own separate page with the following sections:

    -
      -
    • Annotation Type declaration
    • -
    • Annotation Type description
    • -
    • Required Element Summary
    • -
    • Optional Element Summary
    • -
    • Element Detail
    • -
    -
  • -
  • -

    Enum

    -

    Each enum has its own separate page with the following sections:

    -
      -
    • Enum declaration
    • -
    • Enum description
    • -
    • Enum Constant Summary
    • -
    • Enum Constant Detail
    • -
    -
  • -
  • -

    Use

    -

    Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the "Use" link in the navigation bar.

    -
  • -
  • -

    Tree (Class Hierarchy)

    -

    There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.

    -
      -
    • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
    • -
    • When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
    • -
    -
  • -
  • -

    Index

    -

    The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.

    -
  • -
  • -

    Prev/Next

    -

    These links take you to the next or previous class, interface, package, or related page.

    -
  • -
  • -

    Frames/No Frames

    -

    These links show and hide the HTML frames. All pages are available with or without frames.

    -
  • -
  • -

    All Classes

    -

    The All Classes link shows all classes and interfaces except non-static nested types.

    -
  • -
  • -

    Serialized Form

    -

    Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.

    -
  • -
  • -

    Constant Field Values

    -

    The Constant Field Values page lists the static final fields and their values.

    -
  • -
-This help file applies to API documentation generated using the standard doclet.
- -
- - - - - - - -
- - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/index-all.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/index-all.html" deleted file mode 100644 index b4984f2b4..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/index-all.html" +++ /dev/null @@ -1,2109 +0,0 @@ - - - - - -Index - - - - - - - - -
- - - - - - - -
- - -
A B C D E F G I K L M N O P Q R S T U V W Y Z  - - -

A

-
-
accept(Tree.Visitor) - Method in class decaf.tree.Tree
-
-
Visit this tree with a given visitor.
-
-
accept(Tree.Visitor) - Method in class decaf.tree.Tree.Apply
-
 
-
accept(Tree.Visitor) - Method in class decaf.tree.Tree.Assign
-
 
-
accept(Tree.Visitor) - Method in class decaf.tree.Tree.Binary
-
 
-
accept(Tree.Visitor) - Method in class decaf.tree.Tree.Block
-
 
-
accept(Tree.Visitor) - Method in class decaf.tree.Tree.Break
-
 
-
accept(Tree.Visitor) - Method in class decaf.tree.Tree.CallExpr
-
 
-
accept(Tree.Visitor) - Method in class decaf.tree.Tree.ClassDef
-
 
-
accept(Tree.Visitor) - Method in class decaf.tree.Tree.Exec
-
 
-
accept(Tree.Visitor) - Method in class decaf.tree.Tree.ForLoop
-
 
-
accept(Tree.Visitor) - Method in class decaf.tree.Tree.Ident
-
 
-
accept(Tree.Visitor) - Method in class decaf.tree.Tree.If
-
 
-
accept(Tree.Visitor) - Method in class decaf.tree.Tree.Indexed
-
 
-
accept(Tree.Visitor) - Method in class decaf.tree.Tree.Literal
-
 
-
accept(Tree.Visitor) - Method in class decaf.tree.Tree.MethodDef
-
 
-
accept(Tree.Visitor) - Method in class decaf.tree.Tree.NewArray
-
 
-
accept(Tree.Visitor) - Method in class decaf.tree.Tree.NewClass
-
 
-
accept(Tree.Visitor) - Method in class decaf.tree.Tree.Null
-
 
-
accept(Tree.Visitor) - Method in class decaf.tree.Tree.Print
-
 
-
accept(Tree.Visitor) - Method in class decaf.tree.Tree.ReadIntExpr
-
 
-
accept(Tree.Visitor) - Method in class decaf.tree.Tree.ReadLineExpr
-
 
-
accept(Tree.Visitor) - Method in class decaf.tree.Tree.Return
-
 
-
accept(Tree.Visitor) - Method in class decaf.tree.Tree.Skip
-
 
-
accept(Tree.Visitor) - Method in class decaf.tree.Tree.ThisExpr
-
 
-
accept(Tree.Visitor) - Method in class decaf.tree.Tree.TopLevel
-
 
-
accept(Tree.Visitor) - Method in class decaf.tree.Tree.TypeArray
-
 
-
accept(Tree.Visitor) - Method in class decaf.tree.Tree.TypeCast
-
 
-
accept(Tree.Visitor) - Method in class decaf.tree.Tree.TypeClass
-
 
-
accept(Tree.Visitor) - Method in class decaf.tree.Tree.TypeIdent
-
 
-
accept(Tree.Visitor) - Method in class decaf.tree.Tree.TypeTest
-
 
-
accept(Tree.Visitor) - Method in class decaf.tree.Tree.Unary
-
 
-
accept(Tree.Visitor) - Method in class decaf.tree.Tree.VarDef
-
 
-
accept(Tree.Visitor) - Method in class decaf.tree.Tree.WhileLoop
-
 
-
actuals - Variable in class decaf.tree.Tree.Apply
-
 
-
actuals - Variable in class decaf.tree.Tree.CallExpr
-
 
-
addReduceListener(ReduceListener) - Method in class decaf.frontend.Parser
-
 
-
AND - Static variable in class decaf.frontend.Parser
-
 
-
AND - Static variable in class decaf.tree.Tree
-
 
-
APPLY - Static variable in class decaf.tree.Tree
-
-
Method invocation expressions, of type Apply.
-
-
Apply(Tree.Expr, String, List<Tree.Expr>, Location) - Constructor for class decaf.tree.Tree.Apply
-
 
-
array - Variable in class decaf.tree.Tree.Indexed
-
 
-
ARRAY_INDEX_OUT_OF_BOUND - Static variable in class decaf.error.RuntimeError
-
 
-
ASSERT - Static variable in class decaf.tree.Tree
-
-
Assert statements, of type Assert.
-
-
ASSIGN - Static variable in class decaf.tree.Tree
-
-
Assignment expressions, of type Assign.
-
-
Assign(Tree.LValue, Tree.Expr, Location) - Constructor for class decaf.tree.Tree.Assign
-
 
-
- - - -

B

-
-
BadArgCountError - Class in decaf.error
-
-
example:function 'gotoMars' expects 1 argument(s) but 3 given
- PA2
-
-
BadArgCountError(Location, String, int, int) - Constructor for class decaf.error.BadArgCountError
-
 
-
BadArgTypeError - Class in decaf.error
-
-
example:incompatible argument 3: int given, bool expected
- 3表示发生错误的是第三个参数
- PA2
-
-
BadArgTypeError(Location, int, String, String) - Constructor for class decaf.error.BadArgTypeError
-
 
-
BadArrElementError - Class in decaf.error
-
-
example:array base type must be non-void type
- PA2
-
-
BadArrElementError(Location) - Constructor for class decaf.error.BadArrElementError
-
 
-
BadInheritanceError - Class in decaf.error
-
-
example:illegal class inheritance (should be a cyclic)
- PA2
-
-
BadInheritanceError(Location) - Constructor for class decaf.error.BadInheritanceError
-
 
-
BadLengthArgError - Class in decaf.error
-
-
example:function 'length' expects 0 argument(s) but 2 given
- PA2
-
-
BadLengthArgError(Location, int) - Constructor for class decaf.error.BadLengthArgError
-
 
-
BadLengthError - Class in decaf.error
-
-
example:'length' can only be applied to arrays
- PA2
-
-
BadLengthError(Location) - Constructor for class decaf.error.BadLengthError
-
 
-
BadNewArrayLength - Class in decaf.error
-
-
example:new array length must be an integer
- PA2
-
-
BadNewArrayLength(Location) - Constructor for class decaf.error.BadNewArrayLength
-
 
-
BadOverrideError - Class in decaf.error
-
-
example:overriding method 'tooold' doesn't match the type signature in class - 'duckyaya'
- PA2
-
-
BadOverrideError(Location, String, String) - Constructor for class decaf.error.BadOverrideError
-
 
-
BadPrintArgError - Class in decaf.error
-
-
example:incompatible argument 3: int[] given, int/bool/string expected
- 3表示发生错误的是第三个参数
- PA2
-
-
BadPrintArgError(Location, String, String) - Constructor for class decaf.error.BadPrintArgError
-
 
-
BadReturnTypeError - Class in decaf.error
-
-
example:incompatible return: int[] given, int expected
- PA2
-
-
BadReturnTypeError(Location, String, String) - Constructor for class decaf.error.BadReturnTypeError
-
 
-
BadTestExpr - Class in decaf.error
-
-
example:test expression must have bool type
- PA2
-
-
BadTestExpr(Location) - Constructor for class decaf.error.BadTestExpr
-
 
-
BadVarTypeError - Class in decaf.error
-
-
example:cannot declare identifier 'boost' as void type
- PA2
-
-
BadVarTypeError(Location, String) - Constructor for class decaf.error.BadVarTypeError
-
 
-
BaseLexer - Class in decaf.frontend
-
 
-
BaseLexer() - Constructor for class decaf.frontend.BaseLexer
-
 
-
BaseParser - Class in decaf.frontend
-
 
-
BaseParser() - Constructor for class decaf.frontend.BaseParser
-
 
-
Binary(int, Tree.Expr, Tree.Expr, Location) - Constructor for class decaf.tree.Tree.Binary
-
 
-
binaryOperatorPrintTo(IndentPrintWriter, String) - Method in class decaf.tree.Tree.Binary
-
 
-
BITAND - Static variable in class decaf.tree.Tree
-
 
-
BITOR - Static variable in class decaf.tree.Tree
-
 
-
BITXOR - Static variable in class decaf.tree.Tree
-
 
-
BLOCK - Static variable in class decaf.tree.Tree
-
-
Blocks, of type Block.
-
-
Block(List<Tree>, Location) - Constructor for class decaf.tree.Tree.Block
-
 
-
block - Variable in class decaf.tree.Tree.Block
-
 
-
body - Variable in class decaf.tree.Tree.MethodDef
-
 
-
BOOL - Static variable in class decaf.frontend.Parser
-
 
-
BOOL - Static variable in class decaf.tree.Tree
-
 
-
boolConst(boolean) - Method in class decaf.frontend.BaseLexer
-
 
-
BREAK - Static variable in class decaf.frontend.Parser
-
 
-
BREAK - Static variable in class decaf.tree.Tree
-
-
Break statements, of type Break.
-
-
Break(Location) - Constructor for class decaf.tree.Tree.Break
-
 
-
BreakOutOfLoopError - Class in decaf.error
-
-
example:'break' is only allowed inside a loop
- PA2
-
-
BreakOutOfLoopError(Location) - Constructor for class decaf.error.BreakOutOfLoopError
-
 
-
buffer - Variable in class decaf.frontend.Lexer
-
 
-
- - - -

C

-
-
c - Variable in class decaf.error.UnrecogCharError
-
 
-
CALLEXPR - Static variable in class decaf.tree.Tree
-
 
-
CallExpr(Tree.Expr, String, List<Tree.Expr>, Location) - Constructor for class decaf.tree.Tree.CallExpr
-
 
-
CASE - Static variable in class decaf.tree.Tree
-
-
Case parts in switch statements, of type Case.
-
-
CATCH - Static variable in class decaf.tree.Tree
-
-
Catch clauses in try statements, of type Catch.
-
-
cdef - Variable in class decaf.frontend.SemValue
-
 
-
checkPoint() - Method in class decaf.Driver
-
 
-
CLASS - Static variable in class decaf.frontend.Parser
-
 
-
CLASS_CAST_ERROR1 - Static variable in class decaf.error.RuntimeError
-
 
-
CLASS_CAST_ERROR2 - Static variable in class decaf.error.RuntimeError
-
 
-
CLASS_CAST_ERROR3 - Static variable in class decaf.error.RuntimeError
-
 
-
CLASSDEF - Static variable in class decaf.tree.Tree
-
-
Class definitions, of type ClassDef.
-
-
ClassDef(String, String, List<Tree>, Location) - Constructor for class decaf.tree.Tree.ClassDef
-
 
-
classes - Variable in class decaf.tree.Tree.TopLevel
-
 
-
className - Variable in class decaf.tree.Tree.NewClass
-
 
-
className - Variable in class decaf.tree.Tree.TypeCast
-
 
-
className - Variable in class decaf.tree.Tree.TypeTest
-
 
-
ClassNotFoundError - Class in decaf.error
-
-
example:class 'zig' not found
- PA2
-
-
ClassNotFoundError(Location, String) - Constructor for class decaf.error.ClassNotFoundError
-
 
-
clist - Variable in class decaf.frontend.SemValue
-
 
-
code - Variable in class decaf.frontend.SemValue
-
 
-
column - Variable in class decaf.Location
-
-
该符号第一个字符所在的列号
-
-
compareTo(Location) - Method in class decaf.Location
-
 
-
compile() - Method in class decaf.Driver
-
 
-
COMPL - Static variable in class decaf.tree.Tree
-
 
-
CONDEXPR - Static variable in class decaf.tree.Tree
-
-
Conditional expressions, of type Conditional.
-
-
condition - Variable in class decaf.tree.Tree.ForLoop
-
 
-
condition - Variable in class decaf.tree.Tree.If
-
 
-
condition - Variable in class decaf.tree.Tree.WhileLoop
-
 
-
CONTINUE - Static variable in class decaf.tree.Tree
-
-
Continue statements, of type Continue.
-
-
count - Variable in class decaf.error.BadArgCountError
-
 
-
count - Variable in class decaf.error.BadArgTypeError
-
 
-
count - Variable in class decaf.error.BadLengthArgError
-
 
-
count - Variable in class decaf.error.BadPrintArgError
-
 
-
createIdentifier(String) - Static method in class decaf.frontend.SemValue
-
-
创建一个标识符的语义值
-
-
createKeyword(int) - Static method in class decaf.frontend.SemValue
-
-
创建一个关键字的语义值
-
-
createLiteral(int, Object) - Static method in class decaf.frontend.SemValue
-
-
创建一个常量的语义值
-
-
createOperator(int) - Static method in class decaf.frontend.SemValue
-
-
创建一个操作符的语义值
-
-
- - - -

D

-
-
debug(String) - Method in class decaf.frontend.Parser
-
 
-
decaf - package decaf
-
 
-
decaf.error - package decaf.error
-
 
-
decaf.frontend - package decaf.frontend
-
 
-
decaf.tree - package decaf.tree
-
 
-
decaf.utils - package decaf.utils
-
 
-
DecafError - Class in decaf.error
-
-
decaf中所有编译错误的基类
-
-
DecafError(Location) - Constructor for class decaf.error.DecafError
-
 
-
decIndent() - Method in class decaf.utils.IndentPrintWriter
-
-
减少缩进
-
-
DeclConflictError - Class in decaf.error
-
-
example:declaration of 'abcde' here conflicts with earlier declaration at (3,2)
- PA2
-
-
DeclConflictError(Location, String, Location) - Constructor for class decaf.error.DeclConflictError
-
 
-
diagnose() - Method in class decaf.frontend.BaseLexer
-
 
-
diagnose() - Method in class decaf.frontend.Parser
-
 
-
DIV - Static variable in class decaf.tree.Tree
-
 
-
DOLOOP - Static variable in class decaf.tree.Tree
-
-
Do-while loops, of type DoLoop.
-
-
Driver - Class in decaf
-
 
-
Driver() - Constructor for class decaf.Driver
-
 
-
driver - Static variable in class decaf.Driver
-
 
-
dstFileName - Variable in class decaf.Option
-
 
-
dump_stacks(int) - Method in class decaf.frontend.Parser
-
 
-
- - - -

E

-
-
earlier - Variable in class decaf.error.DeclConflictError
-
 
-
elementType - Variable in class decaf.tree.Tree.NewArray
-
 
-
elementType - Variable in class decaf.tree.Tree.TypeArray
-
 
-
elist - Variable in class decaf.frontend.SemValue
-
 
-
ELSE - Static variable in class decaf.frontend.Parser
-
 
-
EMPTY - Static variable in class decaf.frontend.Parser
-
 
-
EQ - Static variable in class decaf.tree.Tree
-
 
-
EQUAL - Static variable in class decaf.frontend.Parser
-
 
-
err - Variable in class decaf.Option
-
 
-
ERRONEOUS - Static variable in class decaf.tree.Tree
-
-
Error trees, of type Erroneous.
-
-
errors - Variable in class decaf.Driver
-
 
-
EXEC - Static variable in class decaf.tree.Tree
-
-
Expression statements, of type Exec.
-
-
Exec(Tree.Expr, Location) - Constructor for class decaf.tree.Tree.Exec
-
 
-
expect - Variable in class decaf.error.BadArgCountError
-
 
-
expect - Variable in class decaf.error.BadArgTypeError
-
 
-
expect - Variable in class decaf.error.BadReturnTypeError
-
 
-
expr - Variable in class decaf.error.IncompatUnOpError
-
 
-
expr - Variable in class decaf.frontend.SemValue
-
 
-
expr - Variable in class decaf.tree.Tree.Assign
-
 
-
expr - Variable in class decaf.tree.Tree.Exec
-
 
-
Expr(int, Location) - Constructor for class decaf.tree.Tree.Expr
-
 
-
expr - Variable in class decaf.tree.Tree.Return
-
 
-
expr - Variable in class decaf.tree.Tree.TypeCast
-
 
-
expr - Variable in class decaf.tree.Tree.Unary
-
 
-
exprs - Variable in class decaf.tree.Tree.Print
-
 
-
EXTENDS - Static variable in class decaf.frontend.Parser
-
 
-
- - - -

F

-
-
falseBranch - Variable in class decaf.tree.Tree.If
-
 
-
fdef - Variable in class decaf.frontend.SemValue
-
 
-
FieldNotAccessError - Class in decaf.error
-
-
example:field 'homework' of 'Others' not accessible here
- PA2
-
-
FieldNotAccessError(Location, String, String) - Constructor for class decaf.error.FieldNotAccessError
-
 
-
FieldNotFoundError - Class in decaf.error
-
-
example:field 'money' not found in 'Student'
- PA2
-
-
FieldNotFoundError(Location, String, String) - Constructor for class decaf.error.FieldNotFoundError
-
 
-
fields - Variable in class decaf.tree.Tree.ClassDef
-
 
-
flist - Variable in class decaf.frontend.SemValue
-
-
field list
-
-
FOR - Static variable in class decaf.frontend.Parser
-
 
-
FORLOOP - Static variable in class decaf.tree.Tree
-
-
For-loops, of type ForLoop.
-
-
ForLoop(Tree, Tree.Expr, Tree, Tree, Location) - Constructor for class decaf.tree.Tree.ForLoop
-
 
-
formals - Variable in class decaf.tree.Tree.MethodDef
-
 
-
from - Variable in class decaf.error.RefNonStaticError
-
 
-
funcName - Variable in class decaf.error.BadOverrideError
-
 
-
- - - -

G

-
-
GE - Static variable in class decaf.tree.Tree
-
 
-
getDriver() - Static method in class decaf.Driver
-
 
-
getDstFileName() - Method in class decaf.Option
-
 
-
getErr() - Method in class decaf.Option
-
 
-
getErrMsg() - Method in class decaf.error.BadArgCountError
-
 
-
getErrMsg() - Method in class decaf.error.BadArgTypeError
-
 
-
getErrMsg() - Method in class decaf.error.BadArrElementError
-
 
-
getErrMsg() - Method in class decaf.error.BadInheritanceError
-
 
-
getErrMsg() - Method in class decaf.error.BadLengthArgError
-
 
-
getErrMsg() - Method in class decaf.error.BadLengthError
-
 
-
getErrMsg() - Method in class decaf.error.BadNewArrayLength
-
 
-
getErrMsg() - Method in class decaf.error.BadOverrideError
-
 
-
getErrMsg() - Method in class decaf.error.BadPrintArgError
-
 
-
getErrMsg() - Method in class decaf.error.BadReturnTypeError
-
 
-
getErrMsg() - Method in class decaf.error.BadTestExpr
-
 
-
getErrMsg() - Method in class decaf.error.BadVarTypeError
-
 
-
getErrMsg() - Method in class decaf.error.BreakOutOfLoopError
-
 
-
getErrMsg() - Method in class decaf.error.ClassNotFoundError
-
 
-
getErrMsg() - Method in class decaf.error.DecafError
-
 
-
getErrMsg() - Method in class decaf.error.DeclConflictError
-
 
-
getErrMsg() - Method in class decaf.error.FieldNotAccessError
-
 
-
getErrMsg() - Method in class decaf.error.FieldNotFoundError
-
 
-
getErrMsg() - Method in class decaf.error.IncompatBinOpError
-
 
-
getErrMsg() - Method in class decaf.error.IncompatUnOpError
-
 
-
getErrMsg() - Method in class decaf.error.IntTooLargeError
-
 
-
getErrMsg() - Method in class decaf.error.MsgError
-
 
-
getErrMsg() - Method in class decaf.error.NewlineInStrError
-
 
-
getErrMsg() - Method in class decaf.error.NoMainClassError
-
 
-
getErrMsg() - Method in class decaf.error.NotArrayError
-
 
-
getErrMsg() - Method in class decaf.error.NotClassError
-
 
-
getErrMsg() - Method in class decaf.error.NotClassFieldError
-
 
-
getErrMsg() - Method in class decaf.error.NotClassMethodError
-
 
-
getErrMsg() - Method in class decaf.error.OverridingVarError
-
 
-
getErrMsg() - Method in class decaf.error.RefNonStaticError
-
 
-
getErrMsg() - Method in class decaf.error.SubNotIntError
-
 
-
getErrMsg() - Method in class decaf.error.ThisInStaticFuncError
-
 
-
getErrMsg() - Method in class decaf.error.UndeclVarError
-
 
-
getErrMsg() - Method in class decaf.error.UnrecogCharError
-
 
-
getErrMsg() - Method in class decaf.error.UntermStrError
-
 
-
getInput() - Method in class decaf.Option
-
 
-
getLevel() - Method in class decaf.Option
-
 
-
getLocation() - Method in class decaf.error.DecafError
-
 
-
getLocation() - Method in class decaf.frontend.BaseLexer
-
 
-
getLocation() - Method in class decaf.frontend.Lexer
-
 
-
getLocation() - Method in class decaf.tree.Tree
-
 
-
getMainClassName() - Method in class decaf.Option
-
 
-
getMainFuncName() - Method in class decaf.Option
-
 
-
getOption() - Method in class decaf.Driver
-
 
-
getOutput() - Method in class decaf.Option
-
 
-
getSrcFileName() - Method in class decaf.Option
-
 
-
getTree() - Method in class decaf.frontend.BaseParser
-
 
-
given - Variable in class decaf.error.BadArgTypeError
-
 
-
given - Variable in class decaf.error.BadReturnTypeError
-
 
-
GREATER_EQUAL - Static variable in class decaf.frontend.Parser
-
 
-
GT - Static variable in class decaf.tree.Tree
-
 
-
- - - -

I

-
-
ident - Variable in class decaf.frontend.SemValue
-
 
-
IDENT - Static variable in class decaf.tree.Tree
-
-
Simple identifiers, of type Ident.
-
-
Ident(Tree.Expr, String, Location) - Constructor for class decaf.tree.Tree.Ident
-
 
-
identifier(String) - Method in class decaf.frontend.BaseLexer
-
 
-
IDENTIFIER - Static variable in class decaf.frontend.Parser
-
 
-
IF - Static variable in class decaf.frontend.Parser
-
 
-
IF - Static variable in class decaf.tree.Tree
-
-
Conditional statements, of type If.
-
-
If(Tree.Expr, Tree, Tree, Location) - Constructor for class decaf.tree.Tree.If
-
 
-
IMPORT - Static variable in class decaf.tree.Tree
-
-
Import clauses, of type Import.
-
-
incIndent() - Method in class decaf.utils.IndentPrintWriter
-
-
增加缩进
-
-
IncompatBinOpError - Class in decaf.error
-
-
example:incompatible operands: int + bool
- PA2
-
-
IncompatBinOpError(Location, String, String, String) - Constructor for class decaf.error.IncompatBinOpError
-
 
-
IncompatUnOpError - Class in decaf.error
-
-
example:incompatible operand: - int[]
- PA2
-
-
IncompatUnOpError(Location, String, String) - Constructor for class decaf.error.IncompatUnOpError
-
 
-
indent - Variable in class decaf.utils.IndentPrintWriter
-
 
-
IndentPrintWriter - Class in decaf.utils
-
-
用于缩进输出的类
- 使用时注意不要自行输出"\r\n"或"\n"进行换行,而要使用该类的println系列函数进行换行
-
-
IndentPrintWriter(OutputStream, int) - Constructor for class decaf.utils.IndentPrintWriter
-
 
-
IndentPrintWriter(Writer, int) - Constructor for class decaf.utils.IndentPrintWriter
-
 
-
index - Variable in class decaf.tree.Tree.Indexed
-
 
-
INDEXED - Static variable in class decaf.tree.Tree
-
-
Indexed array expressions, of type Indexed.
-
-
Indexed(Tree.Expr, Tree.Expr, Location) - Constructor for class decaf.tree.Tree.Indexed
-
 
-
init() - Method in class decaf.Driver
-
 
-
init - Variable in class decaf.tree.Tree.ForLoop
-
 
-
init_stacks() - Method in class decaf.frontend.Parser
-
 
-
input - Variable in class decaf.Option
-
 
-
instance - Variable in class decaf.tree.Tree.TypeTest
-
 
-
INSTANCEOF - Static variable in class decaf.frontend.Parser
-
 
-
INT - Static variable in class decaf.frontend.Parser
-
 
-
INT - Static variable in class decaf.tree.Tree
-
 
-
intConst(String) - Method in class decaf.frontend.BaseLexer
-
 
-
IntTooLargeError - Class in decaf.error
-
-
example:integer literal 112233445566778899 is too large
- PA1
-
-
IntTooLargeError(Location, String) - Constructor for class decaf.error.IntTooLargeError
-
 
-
isArrayLength - Variable in class decaf.tree.Tree.CallExpr
-
 
-
isClass - Variable in class decaf.tree.Tree.Expr
-
 
-
isDefined - Variable in class decaf.tree.Tree.Ident
-
 
-
issueError(DecafError) - Method in class decaf.Driver
-
 
-
issueError(DecafError) - Method in class decaf.frontend.BaseLexer
-
 
-
issueError(DecafError) - Method in class decaf.frontend.BaseParser
-
 
-
- - - -

K

-
-
keyword(int) - Method in class decaf.frontend.BaseLexer
-
 
-
Kind() - Constructor for enum decaf.tree.Tree.LValue.Kind
-
 
-
- - - -

L

-
-
LABELLED - Static variable in class decaf.tree.Tree
-
-
Labelled statements, of type Labelled.
-
-
LE - Static variable in class decaf.tree.Tree
-
 
-
left - Variable in class decaf.error.IncompatBinOpError
-
 
-
left - Variable in class decaf.tree.Tree.Assign
-
 
-
left - Variable in class decaf.tree.Tree.Binary
-
 
-
length - Variable in class decaf.tree.Tree.NewArray
-
 
-
LESS_EQUAL - Static variable in class decaf.frontend.Parser
-
 
-
level - Variable in class decaf.Option
-
 
-
Level() - Constructor for enum decaf.Option.Level
-
 
-
lexer - Variable in class decaf.Driver
-
 
-
lexer - Variable in class decaf.frontend.BaseParser
-
 
-
Lexer - Class in decaf.frontend
-
-
This class is a scanner generated by - JFlex 1.4.1 - on 16-10-10 下午7:05 from the specification file - src/decaf/frontend/Lexer.l
-
-
Lexer(Reader) - Constructor for class decaf.frontend.Lexer
-
-
Creates a new scanner - There is also a java.io.InputStream version of this constructor.
-
-
Lexer(InputStream) - Constructor for class decaf.frontend.Lexer
-
-
Creates a new scanner.
-
-
line - Variable in class decaf.Location
-
-
该符号第一个字符所在的行号
-
-
LITERAL - Static variable in class decaf.frontend.Parser
-
 
-
literal - Variable in class decaf.frontend.SemValue
-
 
-
LITERAL - Static variable in class decaf.tree.Tree
-
-
Literals, of type Literal.
-
-
Literal(int, Object, Location) - Constructor for class decaf.tree.Tree.Literal
-
 
-
loc - Variable in class decaf.frontend.SemValue
-
 
-
loc - Variable in class decaf.tree.Tree
-
 
-
location - Variable in class decaf.error.DecafError
-
-
编译错误所在的位置
-
-
Location - Class in decaf
-
-
语法符号在源代码中的位置
-
-
Location(int, int) - Constructor for class decaf.Location
-
-
构造一个位置记录
-
-
loopBody - Variable in class decaf.tree.Tree.ForLoop
-
 
-
loopBody - Variable in class decaf.tree.Tree.WhileLoop
-
 
-
LT - Static variable in class decaf.tree.Tree
-
 
-
lvalue - Variable in class decaf.frontend.SemValue
-
 
-
LValue(int, Location) - Constructor for class decaf.tree.Tree.LValue
-
 
-
lvKind - Variable in class decaf.tree.Tree.LValue
-
 
-
- - - -

M

-
-
main(String[]) - Static method in class decaf.Driver
-
 
-
mainClassName - Static variable in class decaf.Option
-
 
-
mainFuncName - Static variable in class decaf.Option
-
 
-
method - Variable in class decaf.error.BadArgCountError
-
 
-
method - Variable in class decaf.tree.Tree.Apply
-
 
-
method - Variable in class decaf.tree.Tree.CallExpr
-
 
-
METHODDEF - Static variable in class decaf.tree.Tree
-
-
Method definitions, of type MethodDef.
-
-
MethodDef(boolean, String, Tree.TypeLiteral, List<Tree.VarDef>, Tree.Block, Location) - Constructor for class decaf.tree.Tree.MethodDef
-
 
-
MINUS - Static variable in class decaf.tree.Tree
-
 
-
MiscUtils - Class in decaf.utils
-
 
-
MiscUtils() - Constructor for class decaf.utils.MiscUtils
-
 
-
MOD - Static variable in class decaf.tree.Tree
-
 
-
msg - Variable in class decaf.error.MsgError
-
 
-
MsgError - Class in decaf.error
-
-
仅供Parser的yyerror函数使用
-
-
MsgError(Location, String) - Constructor for class decaf.error.MsgError
-
 
-
MUL - Static variable in class decaf.tree.Tree
-
 
-
- - - -

N

-
-
name - Variable in class decaf.error.BadVarTypeError
-
 
-
name - Variable in class decaf.error.ClassNotFoundError
-
 
-
name - Variable in class decaf.error.DeclConflictError
-
 
-
name - Variable in class decaf.error.FieldNotAccessError
-
 
-
name - Variable in class decaf.error.FieldNotFoundError
-
 
-
name - Variable in class decaf.error.NoMainClassError
-
 
-
name - Variable in class decaf.error.NotClassFieldError
-
 
-
name - Variable in class decaf.error.NotClassMethodError
-
 
-
name - Variable in class decaf.error.OverridingVarError
-
 
-
name - Variable in class decaf.error.UndeclVarError
-
 
-
name - Variable in class decaf.tree.Tree.ClassDef
-
 
-
name - Variable in class decaf.tree.Tree.Ident
-
 
-
name - Variable in class decaf.tree.Tree.MethodDef
-
 
-
name - Variable in class decaf.tree.Tree.TypeClass
-
 
-
name - Variable in class decaf.tree.Tree.VarDef
-
 
-
NE - Static variable in class decaf.tree.Tree
-
 
-
NEG - Static variable in class decaf.tree.Tree
-
 
-
NEGATIVE_ARR_SIZE - Static variable in class decaf.error.RuntimeError
-
 
-
NEW - Static variable in class decaf.frontend.Parser
-
 
-
NEWARRAY - Static variable in class decaf.tree.Tree
-
-
Array creation expressions, of type NewArray.
-
-
NewArray(Tree.TypeLiteral, Tree.Expr, Location) - Constructor for class decaf.tree.Tree.NewArray
-
 
-
NEWCLASS - Static variable in class decaf.tree.Tree
-
-
Class instance creation expressions, of type NewClass.
-
-
NewClass(String, Location) - Constructor for class decaf.tree.Tree.NewClass
-
 
-
newLineBegin - Variable in class decaf.utils.IndentPrintWriter
-
 
-
NewlineInStrError - Class in decaf.error
-
-
example:illegal newline in string constant "this is stri"
- PA1
-
-
NewlineInStrError(Location, String) - Constructor for class decaf.error.NewlineInStrError
-
 
-
NO_LOCATION - Static variable in class decaf.Location
-
 
-
NoMainClassError - Class in decaf.error
-
-
example:no legal Main class named 'Main' was found
- PA2
-
-
NoMainClassError(String) - Constructor for class decaf.error.NoMainClassError
-
 
-
NOT - Static variable in class decaf.tree.Tree
-
 
-
NOT_EQUAL - Static variable in class decaf.frontend.Parser
-
 
-
NotArrayError - Class in decaf.error
-
-
example:[] can only be applied to arrays
- PA2
-
-
NotArrayError(Location) - Constructor for class decaf.error.NotArrayError
-
 
-
NotClassError - Class in decaf.error
-
-
string is not a class type.
-
-
NotClassError(String, Location) - Constructor for class decaf.error.NotClassError
-
 
-
NotClassFieldError - Class in decaf.error
-
-
example:cannot access field 'homework' from 'Others'
- 指通过类名来访问类成员,Others是类名
- example:cannot access field 'homework' from 'int[]'
- 指通过非类成员变量来访问类成员,int[]是该变量的类型名字
- PA2
-
-
NotClassFieldError(Location, String, String) - Constructor for class decaf.error.NotClassFieldError
-
 
-
NotClassMethodError - Class in decaf.error
-
-
example:'orz' is not a method in class 'Person'
- PA2
-
-
NotClassMethodError(Location, String, String) - Constructor for class decaf.error.NotClassMethodError
-
 
-
NULL - Static variable in class decaf.frontend.Parser
-
 
-
NULL - Static variable in class decaf.tree.Tree
-
 
-
Null(Location) - Constructor for class decaf.tree.Tree.Null
-
 
-
NULLCHK - Static variable in class decaf.tree.Tree
-
-
unary operator for null reference checks, only used internally.
-
-
- - - -

O

-
-
onReduce(String) - Method in class decaf.frontend.Parser
-
-
打印当前归约所用的语法规则
- 请勿修改。
-
-
onReduce(String) - Method in interface decaf.frontend.ReduceListener
-
 
-
op - Variable in class decaf.error.IncompatBinOpError
-
 
-
op - Variable in class decaf.error.IncompatUnOpError
-
 
-
operator(int) - Method in class decaf.frontend.BaseLexer
-
 
-
opStr(int) - Static method in class decaf.frontend.BaseParser
-
-
获得操作符的字符串表示
-
-
option - Variable in class decaf.Driver
-
 
-
Option - Class in decaf
-
 
-
Option(String[]) - Constructor for class decaf.Option
-
 
-
Option.Level - Enum in decaf
-
 
-
OR - Static variable in class decaf.frontend.Parser
-
 
-
OR - Static variable in class decaf.tree.Tree
-
-
Binary operators, of type Binary.
-
-
output - Variable in class decaf.Option
-
 
-
OverridingVarError - Class in decaf.error
-
-
example:overriding variable is not allowed for var 'kittyboy'
- PA2
-
-
OverridingVarError(Location, String) - Constructor for class decaf.error.OverridingVarError
-
 
-
owner - Variable in class decaf.error.FieldNotAccessError
-
 
-
owner - Variable in class decaf.error.FieldNotFoundError
-
 
-
owner - Variable in class decaf.error.NotClassFieldError
-
 
-
owner - Variable in class decaf.error.NotClassMethodError
-
 
-
owner - Variable in class decaf.tree.Tree.Ident
-
 
-
- - - -

P

-
-
PARENS - Static variable in class decaf.tree.Tree
-
-
Parenthesized subexpressions, of type Parens.
-
-
parent - Variable in class decaf.tree.Tree.ClassDef
-
 
-
parentName - Variable in class decaf.error.BadOverrideError
-
 
-
parseFile() - Method in class decaf.frontend.BaseParser
-
 
-
parser - Variable in class decaf.Driver
-
 
-
parser - Variable in class decaf.frontend.BaseLexer
-
 
-
Parser - Class in decaf.frontend
-
 
-
Parser() - Constructor for class decaf.frontend.Parser
-
 
-
ParserHelper - Class in decaf.frontend
-
 
-
ParserHelper() - Constructor for class decaf.frontend.ParserHelper
-
 
-
PLUS - Static variable in class decaf.tree.Tree
-
 
-
POS - Static variable in class decaf.tree.Tree
-
-
Unary operators, of type Unary.
-
-
POSTDEC - Static variable in class decaf.tree.Tree
-
 
-
POSTINC - Static variable in class decaf.tree.Tree
-
 
-
PREDEC - Static variable in class decaf.tree.Tree
-
 
-
PREINC - Static variable in class decaf.tree.Tree
-
 
-
PRINT - Static variable in class decaf.frontend.Parser
-
 
-
PRINT - Static variable in class decaf.tree.Tree
-
 
-
Print(List<Tree.Expr>, Location) - Constructor for class decaf.tree.Tree.Print
-
 
-
println() - Method in class decaf.utils.IndentPrintWriter
-
 
-
printTo(IndentPrintWriter) - Method in class decaf.tree.Tree.Apply
-
 
-
printTo(IndentPrintWriter) - Method in class decaf.tree.Tree.Assign
-
 
-
printTo(IndentPrintWriter) - Method in class decaf.tree.Tree.Binary
-
 
-
printTo(IndentPrintWriter) - Method in class decaf.tree.Tree.Block
-
 
-
printTo(IndentPrintWriter) - Method in class decaf.tree.Tree.Break
-
 
-
printTo(IndentPrintWriter) - Method in class decaf.tree.Tree.CallExpr
-
 
-
printTo(IndentPrintWriter) - Method in class decaf.tree.Tree.ClassDef
-
 
-
printTo(IndentPrintWriter) - Method in class decaf.tree.Tree.Exec
-
 
-
printTo(IndentPrintWriter) - Method in class decaf.tree.Tree.ForLoop
-
 
-
printTo(IndentPrintWriter) - Method in class decaf.tree.Tree.Ident
-
 
-
printTo(IndentPrintWriter) - Method in class decaf.tree.Tree.If
-
 
-
printTo(IndentPrintWriter) - Method in class decaf.tree.Tree.Indexed
-
 
-
printTo(IndentPrintWriter) - Method in class decaf.tree.Tree.Literal
-
 
-
printTo(IndentPrintWriter) - Method in class decaf.tree.Tree.MethodDef
-
 
-
printTo(IndentPrintWriter) - Method in class decaf.tree.Tree.NewArray
-
 
-
printTo(IndentPrintWriter) - Method in class decaf.tree.Tree.NewClass
-
 
-
printTo(IndentPrintWriter) - Method in class decaf.tree.Tree.Null
-
 
-
printTo(IndentPrintWriter) - Method in class decaf.tree.Tree.Print
-
 
-
printTo(IndentPrintWriter) - Method in class decaf.tree.Tree
-
 
-
printTo(IndentPrintWriter) - Method in class decaf.tree.Tree.ReadIntExpr
-
 
-
printTo(IndentPrintWriter) - Method in class decaf.tree.Tree.ReadLineExpr
-
 
-
printTo(IndentPrintWriter) - Method in class decaf.tree.Tree.Return
-
 
-
printTo(IndentPrintWriter) - Method in class decaf.tree.Tree.Skip
-
 
-
printTo(IndentPrintWriter) - Method in class decaf.tree.Tree.ThisExpr
-
 
-
printTo(IndentPrintWriter) - Method in class decaf.tree.Tree.TopLevel
-
 
-
printTo(IndentPrintWriter) - Method in class decaf.tree.Tree.TypeArray
-
 
-
printTo(IndentPrintWriter) - Method in class decaf.tree.Tree.TypeCast
-
 
-
printTo(IndentPrintWriter) - Method in class decaf.tree.Tree.TypeClass
-
 
-
printTo(IndentPrintWriter) - Method in class decaf.tree.Tree.TypeIdent
-
 
-
printTo(IndentPrintWriter) - Method in class decaf.tree.Tree.TypeTest
-
 
-
printTo(IndentPrintWriter) - Method in class decaf.tree.Tree.Unary
-
 
-
printTo(IndentPrintWriter) - Method in class decaf.tree.Tree.VarDef
-
 
-
printTo(IndentPrintWriter) - Method in class decaf.tree.Tree.WhileLoop
-
 
-
prog - Variable in class decaf.frontend.SemValue
-
 
-
- - - -

Q

-
-
quote(String) - Static method in class decaf.utils.MiscUtils
-
-
返回带转义符格式的字符串
-
-
- - - -

R

-
-
READ_INTEGER - Static variable in class decaf.frontend.Parser
-
 
-
READ_LINE - Static variable in class decaf.frontend.Parser
-
 
-
READINTEXPR - Static variable in class decaf.tree.Tree
-
 
-
ReadIntExpr(Location) - Constructor for class decaf.tree.Tree.ReadIntExpr
-
 
-
READLINEEXPR - Static variable in class decaf.tree.Tree
-
 
-
ReadLineExpr(Location) - Constructor for class decaf.tree.Tree.ReadLineExpr
-
 
-
receiver - Variable in class decaf.tree.Tree.Apply
-
 
-
receiver - Variable in class decaf.tree.Tree.CallExpr
-
 
-
reduceListener - Variable in class decaf.frontend.Parser
-
 
-
ReduceListener - Interface in decaf.frontend
-
 
-
ref - Variable in class decaf.error.RefNonStaticError
-
 
-
RefNonStaticError - Class in decaf.error
-
-
can not reference a non-static field 'kylin' from static method from 'dove' - PA2
-
-
RefNonStaticError(Location, String, String) - Constructor for class decaf.error.RefNonStaticError
-
 
-
RETURN - Static variable in class decaf.frontend.Parser
-
 
-
RETURN - Static variable in class decaf.tree.Tree
-
-
Return statements, of type Return.
-
-
Return(Tree.Expr, Location) - Constructor for class decaf.tree.Tree.Return
-
 
-
returnType - Variable in class decaf.tree.Tree.MethodDef
-
 
-
right - Variable in class decaf.error.IncompatBinOpError
-
 
-
right - Variable in class decaf.tree.Tree.Binary
-
 
-
RuntimeError - Class in decaf.error
-
-
运行期的错误
-
-
RuntimeError() - Constructor for class decaf.error.RuntimeError
-
 
-
- - - -

S

-
-
S - Static variable in class decaf.frontend.Lexer
-
-
lexical states
-
-
SELECT - Static variable in class decaf.tree.Tree
-
-
Selections, of type Select.
-
-
SemValue - Class in decaf.frontend
-
 
-
SemValue() - Constructor for class decaf.frontend.SemValue
-
 
-
setLexer(Lexer) - Method in class decaf.frontend.BaseParser
-
 
-
setParser(Parser) - Method in class decaf.frontend.BaseLexer
-
 
-
setSemantic(Location, SemValue) - Method in class decaf.frontend.BaseLexer
-
 
-
SKIP - Static variable in class decaf.tree.Tree
-
-
The no-op statement ";", of type Skip
-
-
Skip(Location) - Constructor for class decaf.tree.Tree.Skip
-
 
-
SL - Static variable in class decaf.tree.Tree
-
 
-
slist - Variable in class decaf.frontend.SemValue
-
-
statement list
-
-
sloc - Variable in class decaf.frontend.Lexer
-
 
-
SR - Static variable in class decaf.tree.Tree
-
 
-
srcFileName - Variable in class decaf.Option
-
 
-
state_drop(int) - Method in class decaf.frontend.Parser
-
 
-
state_peek(int) - Method in class decaf.frontend.Parser
-
 
-
state_pop() - Method in class decaf.frontend.Parser
-
 
-
state_push(int) - Method in class decaf.frontend.Parser
-
 
-
statemax - Variable in class decaf.frontend.Parser
-
 
-
stateptr - Variable in class decaf.frontend.Parser
-
 
-
stateptrmax - Variable in class decaf.frontend.Parser
-
 
-
statestk - Variable in class decaf.frontend.Parser
-
 
-
STATIC - Static variable in class decaf.frontend.Parser
-
 
-
statik - Variable in class decaf.tree.Tree.MethodDef
-
 
-
step - Variable in class decaf.utils.IndentPrintWriter
-
 
-
stmt - Variable in class decaf.frontend.SemValue
-
 
-
str - Variable in class decaf.error.NewlineInStrError
-
 
-
str - Variable in class decaf.error.UntermStrError
-
 
-
STRING - Static variable in class decaf.frontend.Parser
-
 
-
STRING - Static variable in class decaf.tree.Tree
-
 
-
StringConst(String, Location) - Method in class decaf.frontend.BaseLexer
-
 
-
SubNotIntError - Class in decaf.error
-
-
example:array subscript must be an integer
- PA2
-
-
SubNotIntError(Location) - Constructor for class decaf.error.SubNotIntError
-
 
-
SWITCH - Static variable in class decaf.tree.Tree
-
-
Switch statements, of type Switch.
-
-
SYNCHRONIZED - Static variable in class decaf.tree.Tree
-
-
Synchronized statements, of type Synchonized.
-
-
- - - -

T

-
-
tag - Variable in class decaf.tree.Tree
-
 
-
THIS - Static variable in class decaf.frontend.Parser
-
 
-
THISEXPR - Static variable in class decaf.tree.Tree
-
 
-
ThisExpr(Location) - Constructor for class decaf.tree.Tree.ThisExpr
-
 
-
ThisInStaticFuncError - Class in decaf.error
-
-
can not use this in static function - PA2
-
-
ThisInStaticFuncError(Location) - Constructor for class decaf.error.ThisInStaticFuncError
-
 
-
THROW - Static variable in class decaf.tree.Tree
-
-
Throw statements, of type Throw.
-
-
TOPLEVEL - Static variable in class decaf.tree.Tree
-
-
Toplevel nodes, of type TopLevel, representing entire source files.
-
-
TopLevel(List<Tree.ClassDef>, Location) - Constructor for class decaf.tree.Tree.TopLevel
-
 
-
toString() - Method in class decaf.error.DecafError
-
-
返回包含位置信息在内的完整错误信息
-
-
toString() - Method in class decaf.frontend.SemValue
-
-
获取这个语义值的字符串表示
- - 我们建议你在构造词法分析器之前先阅读一下这个函数。
-
-
toString() - Method in class decaf.Location
-
-
转换成(x,y)形式的字符串
-
-
tree - Variable in class decaf.frontend.BaseParser
-
 
-
Tree - Class in decaf.tree
-
-
Root class for abstract syntax tree nodes.
-
-
Tree(int, Location) - Constructor for class decaf.tree.Tree
-
-
Initialize tree with given tag.
-
-
Tree.Apply - Class in decaf.tree
-
-
A method invocation
-
-
Tree.Assign - Class in decaf.tree
-
-
A assignment with "=".
-
-
Tree.Binary - Class in decaf.tree
-
-
A binary operation.
-
-
Tree.Block - Class in decaf.tree
-
 
-
Tree.Break - Class in decaf.tree
-
-
A break from a loop.
-
-
Tree.CallExpr - Class in decaf.tree
-
 
-
Tree.ClassDef - Class in decaf.tree
-
 
-
Tree.Exec - Class in decaf.tree
-
-
an expression statement
-
-
Tree.Expr - Class in decaf.tree
-
 
-
Tree.ForLoop - Class in decaf.tree
-
-
A for loop.
-
-
Tree.Ident - Class in decaf.tree
-
-
An identifier
-
-
Tree.If - Class in decaf.tree
-
-
An "if ( ) { } else { }" block
-
-
Tree.Indexed - Class in decaf.tree
-
-
An array selection
-
-
Tree.Literal - Class in decaf.tree
-
-
A constant value given literally.
-
-
Tree.LValue - Class in decaf.tree
-
 
-
Tree.LValue.Kind - Enum in decaf.tree
-
 
-
Tree.MethodDef - Class in decaf.tree
-
 
-
Tree.NewArray - Class in decaf.tree
-
-
A new[...] operation.
-
-
Tree.NewClass - Class in decaf.tree
-
-
A new(...) operation.
-
-
Tree.Null - Class in decaf.tree
-
 
-
Tree.Print - Class in decaf.tree
-
-
A return statement.
-
-
Tree.ReadIntExpr - Class in decaf.tree
-
 
-
Tree.ReadLineExpr - Class in decaf.tree
-
 
-
Tree.Return - Class in decaf.tree
-
-
A return statement.
-
-
Tree.Skip - Class in decaf.tree
-
-
A no-op statement ";".
-
-
Tree.ThisExpr - Class in decaf.tree
-
 
-
Tree.TopLevel - Class in decaf.tree
-
 
-
Tree.TypeArray - Class in decaf.tree
-
-
An array type, A[]
-
-
Tree.TypeCast - Class in decaf.tree
-
-
A type cast.
-
-
Tree.TypeClass - Class in decaf.tree
-
 
-
Tree.TypeIdent - Class in decaf.tree
-
-
Identifies a basic type.
-
-
Tree.TypeLiteral - Class in decaf.tree
-
 
-
Tree.TypeTest - Class in decaf.tree
-
-
instanceof expression
-
-
Tree.Unary - Class in decaf.tree
-
-
A unary operation.
-
-
Tree.VarDef - Class in decaf.tree
-
 
-
Tree.Visitor - Class in decaf.tree
-
-
A generic visitor class for trees.
-
-
Tree.WhileLoop - Class in decaf.tree
-
-
A while loop
-
-
trueBranch - Variable in class decaf.tree.Tree.If
-
 
-
TRY - Static variable in class decaf.tree.Tree
-
-
Try statements, of type Try.
-
-
type - Variable in class decaf.error.BadPrintArgError
-
 
-
type - Variable in class decaf.error.NotClassError
-
 
-
type - Variable in class decaf.frontend.SemValue
-
 
-
type - Variable in class decaf.tree.Tree.VarDef
-
 
-
TYPEAPPLY - Static variable in class decaf.tree.Tree
-
-
Parameterized types, of type TypeApply.
-
-
TYPEARRAY - Static variable in class decaf.tree.Tree
-
-
Array types, of type TypeArray.
-
-
TypeArray(Tree.TypeLiteral, Location) - Constructor for class decaf.tree.Tree.TypeArray
-
 
-
TYPECAST - Static variable in class decaf.tree.Tree
-
-
Type cast expressions, of type TypeCast.
-
-
TypeCast(String, Tree.Expr, Location) - Constructor for class decaf.tree.Tree.TypeCast
-
 
-
TYPECLASS - Static variable in class decaf.tree.Tree
-
-
Class types, of type TypeClass.
-
-
TypeClass(String, Location) - Constructor for class decaf.tree.Tree.TypeClass
-
 
-
TYPEIDENT - Static variable in class decaf.tree.Tree
-
-
Basic type identifiers, of type TypeIdent.
-
-
TypeIdent(int, Location) - Constructor for class decaf.tree.Tree.TypeIdent
-
 
-
TypeLiteral(int, Location) - Constructor for class decaf.tree.Tree.TypeLiteral
-
 
-
TYPEPARAMETER - Static variable in class decaf.tree.Tree
-
-
Formal type parameters, of type TypeParameter.
-
-
typeTag - Variable in class decaf.frontend.SemValue
-
 
-
typeTag - Variable in class decaf.tree.Tree.Literal
-
 
-
typeTag - Variable in class decaf.tree.Tree.TypeIdent
-
 
-
TYPETEST - Static variable in class decaf.tree.Tree
-
-
Type test expressions, of type TypeTest.
-
-
TypeTest(Tree.Expr, String, Location) - Constructor for class decaf.tree.Tree.TypeTest
-
 
-
- - - -

U

-
-
UMINUS - Static variable in class decaf.frontend.Parser
-
 
-
Unary(int, Tree.Expr, Location) - Constructor for class decaf.tree.Tree.Unary
-
 
-
unaryOperatorToString(IndentPrintWriter, String) - Method in class decaf.tree.Tree.Unary
-
 
-
UndeclVarError - Class in decaf.error
-
-
example:undeclared variable 'python'
- PA2
-
-
UndeclVarError(Location, String) - Constructor for class decaf.error.UndeclVarError
-
 
-
UnrecogCharError - Class in decaf.error
-
-
example:unrecognized char: '@'
- PA1
-
-
UnrecogCharError(Location, char) - Constructor for class decaf.error.UnrecogCharError
-
 
-
UntermStrError - Class in decaf.error
-
-
example:unterminated string constant: "this is str"
- PA1
-
-
UntermStrError(Location, String) - Constructor for class decaf.error.UntermStrError
-
 
-
update - Variable in class decaf.tree.Tree.ForLoop
-
 
-
usage() - Method in class decaf.Option
-
 
-
usedForRef - Variable in class decaf.tree.Tree.Expr
-
 
-
UserAction(SemValue, SemValue, SemValue, SemValue, SemValue, SemValue, SemValue) - Method in class decaf.frontend.ParserHelper
-
-
辅助模版(切勿直接调用)
-
-
USR - Static variable in class decaf.tree.Tree
-
 
-
- - - -

V

-
-
val - Variable in class decaf.error.IntTooLargeError
-
 
-
val_drop(int) - Method in class decaf.frontend.Parser
-
 
-
val_init() - Method in class decaf.frontend.Parser
-
 
-
val_peek(int) - Method in class decaf.frontend.Parser
-
 
-
val_pop() - Method in class decaf.frontend.Parser
-
 
-
val_push(SemValue) - Method in class decaf.frontend.Parser
-
 
-
valptr - Variable in class decaf.frontend.Parser
-
 
-
valstk - Variable in class decaf.frontend.Parser
-
 
-
value - Variable in class decaf.tree.Tree.Literal
-
 
-
valueOf(String) - Static method in enum decaf.Option.Level
-
-
Returns the enum constant of this type with the specified name.
-
-
valueOf(String) - Static method in enum decaf.tree.Tree.LValue.Kind
-
-
Returns the enum constant of this type with the specified name.
-
-
values() - Static method in enum decaf.Option.Level
-
-
Returns an array containing the constants of this enum type, in -the order they are declared.
-
-
values() - Static method in enum decaf.tree.Tree.LValue.Kind
-
-
Returns an array containing the constants of this enum type, in -the order they are declared.
-
-
VARDEF - Static variable in class decaf.tree.Tree
-
-
Variable definitions, of type VarDef.
-
-
VarDef(String, Tree.TypeLiteral, Location) - Constructor for class decaf.tree.Tree.VarDef
-
 
-
vdef - Variable in class decaf.frontend.SemValue
-
 
-
visitApply(Tree.Apply) - Method in class decaf.tree.Tree.Visitor
-
 
-
visitAssign(Tree.Assign) - Method in class decaf.tree.Tree.Visitor
-
 
-
visitBinary(Tree.Binary) - Method in class decaf.tree.Tree.Visitor
-
 
-
visitBlock(Tree.Block) - Method in class decaf.tree.Tree.Visitor
-
 
-
visitBreak(Tree.Break) - Method in class decaf.tree.Tree.Visitor
-
 
-
visitCallExpr(Tree.CallExpr) - Method in class decaf.tree.Tree.Visitor
-
 
-
visitClassDef(Tree.ClassDef) - Method in class decaf.tree.Tree.Visitor
-
 
-
visitExec(Tree.Exec) - Method in class decaf.tree.Tree.Visitor
-
 
-
visitForLoop(Tree.ForLoop) - Method in class decaf.tree.Tree.Visitor
-
 
-
visitIdent(Tree.Ident) - Method in class decaf.tree.Tree.Visitor
-
 
-
visitIf(Tree.If) - Method in class decaf.tree.Tree.Visitor
-
 
-
visitIndexed(Tree.Indexed) - Method in class decaf.tree.Tree.Visitor
-
 
-
visitLiteral(Tree.Literal) - Method in class decaf.tree.Tree.Visitor
-
 
-
visitLValue(Tree.LValue) - Method in class decaf.tree.Tree.Visitor
-
 
-
visitMethodDef(Tree.MethodDef) - Method in class decaf.tree.Tree.Visitor
-
 
-
visitNewArray(Tree.NewArray) - Method in class decaf.tree.Tree.Visitor
-
 
-
visitNewClass(Tree.NewClass) - Method in class decaf.tree.Tree.Visitor
-
 
-
visitNull(Tree.Null) - Method in class decaf.tree.Tree.Visitor
-
 
-
Visitor() - Constructor for class decaf.tree.Tree.Visitor
-
 
-
visitPrint(Tree.Print) - Method in class decaf.tree.Tree.Visitor
-
 
-
visitReadIntExpr(Tree.ReadIntExpr) - Method in class decaf.tree.Tree.Visitor
-
 
-
visitReadLineExpr(Tree.ReadLineExpr) - Method in class decaf.tree.Tree.Visitor
-
 
-
visitReturn(Tree.Return) - Method in class decaf.tree.Tree.Visitor
-
 
-
visitSkip(Tree.Skip) - Method in class decaf.tree.Tree.Visitor
-
 
-
visitThisExpr(Tree.ThisExpr) - Method in class decaf.tree.Tree.Visitor
-
 
-
visitTopLevel(Tree.TopLevel) - Method in class decaf.tree.Tree.Visitor
-
 
-
visitTree(Tree) - Method in class decaf.tree.Tree.Visitor
-
 
-
visitTypeArray(Tree.TypeArray) - Method in class decaf.tree.Tree.Visitor
-
 
-
visitTypeCast(Tree.TypeCast) - Method in class decaf.tree.Tree.Visitor
-
 
-
visitTypeClass(Tree.TypeClass) - Method in class decaf.tree.Tree.Visitor
-
 
-
visitTypeIdent(Tree.TypeIdent) - Method in class decaf.tree.Tree.Visitor
-
 
-
visitTypeTest(Tree.TypeTest) - Method in class decaf.tree.Tree.Visitor
-
 
-
visitUnary(Tree.Unary) - Method in class decaf.tree.Tree.Visitor
-
 
-
visitVarDef(Tree.VarDef) - Method in class decaf.tree.Tree.Visitor
-
 
-
visitWhileLoop(Tree.WhileLoop) - Method in class decaf.tree.Tree.Visitor
-
 
-
vlist - Variable in class decaf.frontend.SemValue
-
 
-
VOID - Static variable in class decaf.frontend.Parser
-
 
-
VOID - Static variable in class decaf.tree.Tree
-
-
Tags for Literal and TypeLiteral
-
-
- - - -

W

-
-
WHILE - Static variable in class decaf.frontend.Parser
-
 
-
WHILELOOP - Static variable in class decaf.tree.Tree
-
-
While-loops, of type WhileLoop.
-
-
WhileLoop(Tree.Expr, Tree, Location) - Constructor for class decaf.tree.Tree.WhileLoop
-
 
-
write(char[], int, int) - Method in class decaf.utils.IndentPrintWriter
-
 
-
write(int) - Method in class decaf.utils.IndentPrintWriter
-
 
-
write(String, int, int) - Method in class decaf.utils.IndentPrintWriter
-
 
-
writeIndent() - Method in class decaf.utils.IndentPrintWriter
-
 
-
- - - -

Y

-
-
yybegin(int) - Method in class decaf.frontend.Lexer
-
-
Enters a new lexical state
-
-
yychar - Variable in class decaf.frontend.Lexer
-
-
the number of characters up to the start of the matched text
-
-
yychar - Variable in class decaf.frontend.Parser
-
 
-
yycharat(int) - Method in class decaf.frontend.Lexer
-
-
Returns the character at position pos from the - matched text.
-
-
yycheck - Static variable in class decaf.frontend.Parser
-
 
-
yycheck() - Static method in class decaf.frontend.Parser
-
 
-
yyclearin() - Method in class decaf.frontend.Parser
-
 
-
yyclose() - Method in class decaf.frontend.Lexer
-
-
Closes the input stream.
-
-
yycolumn - Variable in class decaf.frontend.Lexer
-
-
the number of characters from the last newline up to the start of the - matched text
-
-
yydebug - Variable in class decaf.frontend.Parser
-
 
-
yydefred - Static variable in class decaf.frontend.Parser
-
 
-
yydgoto - Static variable in class decaf.frontend.Parser
-
 
-
YYEOF - Static variable in class decaf.frontend.Lexer
-
-
This character denotes the end of file
-
-
YYERRCODE - Static variable in class decaf.frontend.Parser
-
 
-
yyerrflag - Variable in class decaf.frontend.Parser
-
 
-
yyerrok() - Method in class decaf.frontend.Parser
-
 
-
yyerror(String) - Method in class decaf.frontend.BaseParser
-
 
-
YYFINAL - Static variable in class decaf.frontend.Parser
-
 
-
yygindex - Static variable in class decaf.frontend.Parser
-
 
-
YYINITIAL - Static variable in class decaf.frontend.Lexer
-
 
-
yylen - Static variable in class decaf.frontend.Parser
-
 
-
yylength() - Method in class decaf.frontend.Lexer
-
-
Returns the length of the matched text region.
-
-
yylex() - Method in class decaf.frontend.BaseLexer
-
 
-
yylex() - Method in class decaf.frontend.BaseParser
-
 
-
yylex() - Method in class decaf.frontend.Lexer
-
-
Resumes scanning until the next regular expression is matched, - the end of input is encountered or an I/O-Error occurs.
-
-
yylexdebug(int, int) - Method in class decaf.frontend.Parser
-
 
-
yylhs - Static variable in class decaf.frontend.Parser
-
 
-
yyline - Variable in class decaf.frontend.Lexer
-
-
number of newlines encountered up to the start of the matched text
-
-
yylval - Variable in class decaf.frontend.Parser
-
 
-
yym - Variable in class decaf.frontend.Parser
-
 
-
YYMAXTOKEN - Static variable in class decaf.frontend.Parser
-
 
-
yyn - Variable in class decaf.frontend.Parser
-
 
-
yyname - Static variable in class decaf.frontend.Parser
-
 
-
yynerrs - Variable in class decaf.frontend.Parser
-
 
-
yyparse() - Method in class decaf.frontend.BaseParser
-
 
-
yyparse() - Method in class decaf.frontend.Parser
-
 
-
yypushback(int) - Method in class decaf.frontend.Lexer
-
-
Pushes the specified amount of characters back into the input stream.
-
-
yyreset(Reader) - Method in class decaf.frontend.Lexer
-
-
Resets the scanner to read from a new input stream.
-
-
yyrindex - Static variable in class decaf.frontend.Parser
-
 
-
yyrule - Static variable in class decaf.frontend.Parser
-
 
-
yys - Variable in class decaf.frontend.Parser
-
 
-
yysindex - Static variable in class decaf.frontend.Parser
-
 
-
YYSTACKSIZE - Static variable in class decaf.frontend.Parser
-
 
-
yystate() - Method in class decaf.frontend.Lexer
-
-
Returns the current lexical state.
-
-
yystate - Variable in class decaf.frontend.Parser
-
 
-
yytable - Static variable in class decaf.frontend.Parser
-
 
-
yytable() - Static method in class decaf.frontend.Parser
-
 
-
YYTABLESIZE - Static variable in class decaf.frontend.Parser
-
 
-
yytext() - Method in class decaf.frontend.Lexer
-
-
Returns the text matched by the current regular expression.
-
-
yytext - Variable in class decaf.frontend.Parser
-
 
-
yyval - Variable in class decaf.frontend.Parser
-
 
-
- - - -

Z

-
-
ZZ_ACTION - Static variable in class decaf.frontend.Lexer
-
-
Translates DFA states to action switch labels.
-
-
ZZ_ACTION_PACKED_0 - Static variable in class decaf.frontend.Lexer
-
 
-
ZZ_BUFFERSIZE - Static variable in class decaf.frontend.Lexer
-
-
initial size of the lookahead buffer
-
-
ZZ_CMAP - Static variable in class decaf.frontend.Lexer
-
-
Translates characters to character classes
-
-
ZZ_CMAP_PACKED - Static variable in class decaf.frontend.Lexer
-
-
Translates characters to character classes
-
-
ZZ_ERROR_MSG - Static variable in class decaf.frontend.Lexer
-
 
-
ZZ_NO_MATCH - Static variable in class decaf.frontend.Lexer
-
 
-
ZZ_PUSHBACK_2BIG - Static variable in class decaf.frontend.Lexer
-
 
-
ZZ_UNKNOWN_ERROR - Static variable in class decaf.frontend.Lexer
-
 
-
zzAtBOL - Variable in class decaf.frontend.Lexer
-
-
zzAtBOL == true <=> the scanner is currently at the beginning of a line
-
-
zzAtEOF - Variable in class decaf.frontend.Lexer
-
-
zzAtEOF == true <=> the scanner is at the EOF
-
-
zzBuffer - Variable in class decaf.frontend.Lexer
-
-
this buffer contains the current text to be matched and is - the source of the yytext() string
-
-
zzCurrentPos - Variable in class decaf.frontend.Lexer
-
-
the current text position in the buffer
-
-
zzDoEOF() - Method in class decaf.frontend.Lexer
-
-
Contains user EOF-code, which will be executed exactly once, - when the end of file is reached
-
-
zzEndRead - Variable in class decaf.frontend.Lexer
-
-
endRead marks the last character in the buffer, that has been read - from input
-
-
zzEOFDone - Variable in class decaf.frontend.Lexer
-
-
denotes if the user-EOF-code has already been executed
-
-
zzLexicalState - Variable in class decaf.frontend.Lexer
-
-
the current lexical state
-
-
zzMarkedPos - Variable in class decaf.frontend.Lexer
-
-
the textposition at the last accepting state
-
-
zzPushbackPos - Variable in class decaf.frontend.Lexer
-
-
the textposition at the last state to be included in yytext
-
-
zzReader - Variable in class decaf.frontend.Lexer
-
-
the input device
-
-
zzRefill() - Method in class decaf.frontend.Lexer
-
-
Refills the input buffer.
-
-
zzScanError(int) - Method in class decaf.frontend.Lexer
-
-
Reports an error that occured while scanning.
-
-
zzStartRead - Variable in class decaf.frontend.Lexer
-
-
startRead marks the beginning of the yytext() string in the buffer
-
-
zzState - Variable in class decaf.frontend.Lexer
-
-
the current state of the DFA
-
-
zzUnpackAction() - Static method in class decaf.frontend.Lexer
-
 
-
zzUnpackAction(String, int, int[]) - Static method in class decaf.frontend.Lexer
-
 
-
zzUnpackCMap(String) - Static method in class decaf.frontend.Lexer
-
-
Unpacks the compressed character translation table.
-
-
-A B C D E F G I K L M N O P Q R S T U V W Y Z 
- -
- - - - - - - -
- - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/index.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/index.html" deleted file mode 100644 index b2b7597bc..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/index.html" +++ /dev/null @@ -1,74 +0,0 @@ - - - - - -Generated Documentation (Untitled) - - - - - - - - - -<noscript> -<div>JavaScript is disabled on your browser.</div> -</noscript> -<h2>Frame Alert</h2> -<p>This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. Link to <a href="overview-summary.html">Non-frame version</a>.</p> - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/overview-frame.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/overview-frame.html" deleted file mode 100644 index dcb6f02a9..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/overview-frame.html" +++ /dev/null @@ -1,25 +0,0 @@ - - - - - -Overview List - - - - - - - -

 

- - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/overview-summary.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/overview-summary.html" deleted file mode 100644 index 8f9a3e4e4..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/overview-summary.html" +++ /dev/null @@ -1,152 +0,0 @@ - - - - - -Overview - - - - - - - - -
- - - - - - - -
- - -
-

Decaf Compiler Documentation

-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Packages 
PackageDescription
decaf 
decaf.error 
decaf.frontend 
decaf.tree 
decaf.utils 
-
- -
- - - - - - - -
- - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/overview-tree.html" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/overview-tree.html" deleted file mode 100644 index ef83271a6..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/overview-tree.html" +++ /dev/null @@ -1,271 +0,0 @@ - - - - - -Class Hierarchy - - - - - - - - -
- - - - - - - -
- - -
-

Hierarchy For All Packages

-Package Hierarchies: - -
-
-

Class Hierarchy

- -

Interface Hierarchy

- -

Enum Hierarchy

-
    -
  • java.lang.Object - -
  • -
-
- -
- - - - - - - -
- - - - diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/package-list" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/package-list" deleted file mode 100644 index ba221e55c..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/package-list" +++ /dev/null @@ -1,5 +0,0 @@ -decaf -decaf.error -decaf.frontend -decaf.tree -decaf.utils diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/script.js" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/script.js" deleted file mode 100644 index c3a1cae44..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/script.js" +++ /dev/null @@ -1,30 +0,0 @@ -function show(type) -{ - count = 0; - for (var key in methods) { - var row = document.getElementById(key); - if ((methods[key] & type) != 0) { - row.style.display = ''; - row.className = (count++ % 2) ? rowColor : altColor; - } - else - row.style.display = 'none'; - } - updateTabs(type); -} - -function updateTabs(type) -{ - for (var value in tabs) { - var sNode = document.getElementById(tabs[value][0]); - var spanNode = sNode.firstChild; - if (value == type) { - sNode.className = activeTableTab; - spanNode.innerHTML = tabs[value][1]; - } - else { - sNode.className = tableTab; - spanNode.innerHTML = "" + tabs[value][1] + ""; - } - } -} diff --git "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/stylesheet.css" "b/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/stylesheet.css" deleted file mode 100644 index b8dad0891..000000000 --- "a/\345\244\247\344\270\211\344\270\212/\347\274\226\350\257\221\345\216\237\347\220\206/hw/2016_\351\273\204\345\256\266\346\231\226_PA/698609556_1_decaf_PA1A/result/doc/stylesheet.css" +++ /dev/null @@ -1,574 +0,0 @@ -/* Javadoc style sheet */ -/* -Overall document style -*/ - -@import url('resources/fonts/dejavu.css'); - -body { - background-color:#ffffff; - color:#353833; - font-family:'DejaVu Sans', Arial, Helvetica, sans-serif; - font-size:14px; - margin:0; -} -a:link, a:visited { - text-decoration:none; - color:#4A6782; -} -a:hover, a:focus { - text-decoration:none; - color:#bb7a2a; -} -a:active { - text-decoration:none; - color:#4A6782; -} -a[name] { - color:#353833; -} -a[name]:hover { - text-decoration:none; - color:#353833; -} -pre { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; -} -h1 { - font-size:20px; -} -h2 { - font-size:18px; -} -h3 { - font-size:16px; - font-style:italic; -} -h4 { - font-size:13px; -} -h5 { - font-size:12px; -} -h6 { - font-size:11px; -} -ul { - list-style-type:disc; -} -code, tt { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; - padding-top:4px; - margin-top:8px; - line-height:1.4em; -} -dt code { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; - padding-top:4px; -} -table tr td dt code { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; - vertical-align:top; - padding-top:4px; -} -sup { - font-size:8px; -} -/* -Document title and Copyright styles -*/ -.clear { - clear:both; - height:0px; - overflow:hidden; -} -.aboutLanguage { - float:right; - padding:0px 21px; - font-size:11px; - z-index:200; - margin-top:-9px; -} -.legalCopy { - margin-left:.5em; -} -.bar a, .bar a:link, .bar a:visited, .bar a:active { - color:#FFFFFF; - text-decoration:none; -} -.bar a:hover, .bar a:focus { - color:#bb7a2a; -} -.tab { - background-color:#0066FF; - color:#ffffff; - padding:8px; - width:5em; - font-weight:bold; -} -/* -Navigation bar styles -*/ -.bar { - background-color:#4D7A97; - color:#FFFFFF; - padding:.8em .5em .4em .8em; - height:auto;/*height:1.8em;*/ - font-size:11px; - margin:0; -} -.topNav { - background-color:#4D7A97; - color:#FFFFFF; - float:left; - padding:0; - width:100%; - clear:right; - height:2.8em; - padding-top:10px; - overflow:hidden; - font-size:12px; -} -.bottomNav { - margin-top:10px; - background-color:#4D7A97; - color:#FFFFFF; - float:left; - padding:0; - width:100%; - clear:right; - height:2.8em; - padding-top:10px; - overflow:hidden; - font-size:12px; -} -.subNav { - background-color:#dee3e9; - float:left; - width:100%; - overflow:hidden; - font-size:12px; -} -.subNav div { - clear:left; - float:left; - padding:0 0 5px 6px; - text-transform:uppercase; -} -ul.navList, ul.subNavList { - float:left; - margin:0 25px 0 0; - padding:0; -} -ul.navList li{ - list-style:none; - float:left; - padding: 5px 6px; - text-transform:uppercase; -} -ul.subNavList li{ - list-style:none; - float:left; -} -.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited { - color:#FFFFFF; - text-decoration:none; - text-transform:uppercase; -} -.topNav a:hover, .bottomNav a:hover { - text-decoration:none; - color:#bb7a2a; - text-transform:uppercase; -} -.navBarCell1Rev { - background-color:#F8981D; - color:#253441; - margin: auto 5px; -} -.skipNav { - position:absolute; - top:auto; - left:-9999px; - overflow:hidden; -} -/* -Page header and footer styles -*/ -.header, .footer { - clear:both; - margin:0 20px; - padding:5px 0 0 0; -} -.indexHeader { - margin:10px; - position:relative; -} -.indexHeader span{ - margin-right:15px; -} -.indexHeader h1 { - font-size:13px; -} -.title { - color:#2c4557; - margin:10px 0; -} -.subTitle { - margin:5px 0 0 0; -} -.header ul { - margin:0 0 15px 0; - padding:0; -} -.footer ul { - margin:20px 0 5px 0; -} -.header ul li, .footer ul li { - list-style:none; - font-size:13px; -} -/* -Heading styles -*/ -div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 { - background-color:#dee3e9; - border:1px solid #d0d9e0; - margin:0 0 6px -8px; - padding:7px 5px; -} -ul.blockList ul.blockList ul.blockList li.blockList h3 { - background-color:#dee3e9; - border:1px solid #d0d9e0; - margin:0 0 6px -8px; - padding:7px 5px; -} -ul.blockList ul.blockList li.blockList h3 { - padding:0; - margin:15px 0; -} -ul.blockList li.blockList h2 { - padding:0px 0 20px 0; -} -/* -Page layout container styles -*/ -.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer { - clear:both; - padding:10px 20px; - position:relative; -} -.indexContainer { - margin:10px; - position:relative; - font-size:12px; -} -.indexContainer h2 { - font-size:13px; - padding:0 0 3px 0; -} -.indexContainer ul { - margin:0; - padding:0; -} -.indexContainer ul li { - list-style:none; - padding-top:2px; -} -.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt { - font-size:12px; - font-weight:bold; - margin:10px 0 0 0; - color:#4E4E4E; -} -.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd { - margin:5px 0 10px 0px; - font-size:14px; - font-family:'DejaVu Sans Mono',monospace; -} -.serializedFormContainer dl.nameValue dt { - margin-left:1px; - font-size:1.1em; - display:inline; - font-weight:bold; -} -.serializedFormContainer dl.nameValue dd { - margin:0 0 0 1px; - font-size:1.1em; - display:inline; -} -/* -List styles -*/ -ul.horizontal li { - display:inline; - font-size:0.9em; -} -ul.inheritance { - margin:0; - padding:0; -} -ul.inheritance li { - display:inline; - list-style:none; -} -ul.inheritance li ul.inheritance { - margin-left:15px; - padding-left:15px; - padding-top:1px; -} -ul.blockList, ul.blockListLast { - margin:10px 0 10px 0; - padding:0; -} -ul.blockList li.blockList, ul.blockListLast li.blockList { - list-style:none; - margin-bottom:15px; - line-height:1.4; -} -ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList { - padding:0px 20px 5px 10px; - border:1px solid #ededed; - background-color:#f8f8f8; -} -ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList { - padding:0 0 5px 8px; - background-color:#ffffff; - border:none; -} -ul.blockList ul.blockList ul.blockList ul.blockList li.blockList { - margin-left:0; - padding-left:0; - padding-bottom:15px; - border:none; -} -ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast { - list-style:none; - border-bottom:none; - padding-bottom:0; -} -table tr td dl, table tr td dl dt, table tr td dl dd { - margin-top:0; - margin-bottom:1px; -} -/* -Table styles -*/ -.overviewSummary, .memberSummary, .typeSummary, .useSummary, .constantsSummary, .deprecatedSummary { - width:100%; - border-left:1px solid #EEE; - border-right:1px solid #EEE; - border-bottom:1px solid #EEE; -} -.overviewSummary, .memberSummary { - padding:0px; -} -.overviewSummary caption, .memberSummary caption, .typeSummary caption, -.useSummary caption, .constantsSummary caption, .deprecatedSummary caption { - position:relative; - text-align:left; - background-repeat:no-repeat; - color:#253441; - font-weight:bold; - clear:none; - overflow:hidden; - padding:0px; - padding-top:10px; - padding-left:1px; - margin:0px; - white-space:pre; -} -.overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link, -.useSummary caption a:link, .constantsSummary caption a:link, .deprecatedSummary caption a:link, -.overviewSummary caption a:hover, .memberSummary caption a:hover, .typeSummary caption a:hover, -.useSummary caption a:hover, .constantsSummary caption a:hover, .deprecatedSummary caption a:hover, -.overviewSummary caption a:active, .memberSummary caption a:active, .typeSummary caption a:active, -.useSummary caption a:active, .constantsSummary caption a:active, .deprecatedSummary caption a:active, -.overviewSummary caption a:visited, .memberSummary caption a:visited, .typeSummary caption a:visited, -.useSummary caption a:visited, .constantsSummary caption a:visited, .deprecatedSummary caption a:visited { - color:#FFFFFF; -} -.overviewSummary caption span, .memberSummary caption span, .typeSummary caption span, -.useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span { - white-space:nowrap; - padding-top:5px; - padding-left:12px; - padding-right:12px; - padding-bottom:7px; - display:inline-block; - float:left; - background-color:#F8981D; - border: none; - height:16px; -} -.memberSummary caption span.activeTableTab span { - white-space:nowrap; - padding-top:5px; - padding-left:12px; - padding-right:12px; - margin-right:3px; - display:inline-block; - float:left; - background-color:#F8981D; - height:16px; -} -.memberSummary caption span.tableTab span { - white-space:nowrap; - padding-top:5px; - padding-left:12px; - padding-right:12px; - margin-right:3px; - display:inline-block; - float:left; - background-color:#4D7A97; - height:16px; -} -.memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab { - padding-top:0px; - padding-left:0px; - padding-right:0px; - background-image:none; - float:none; - display:inline; -} -.overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd, -.useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd { - display:none; - width:5px; - position:relative; - float:left; - background-color:#F8981D; -} -.memberSummary .activeTableTab .tabEnd { - display:none; - width:5px; - margin-right:3px; - position:relative; - float:left; - background-color:#F8981D; -} -.memberSummary .tableTab .tabEnd { - display:none; - width:5px; - margin-right:3px; - position:relative; - background-color:#4D7A97; - float:left; - -} -.overviewSummary td, .memberSummary td, .typeSummary td, -.useSummary td, .constantsSummary td, .deprecatedSummary td { - text-align:left; - padding:0px 0px 12px 10px; -} -th.colOne, th.colFirst, th.colLast, .useSummary th, .constantsSummary th, -td.colOne, td.colFirst, td.colLast, .useSummary td, .constantsSummary td{ - vertical-align:top; - padding-right:0px; - padding-top:8px; - padding-bottom:3px; -} -th.colFirst, th.colLast, th.colOne, .constantsSummary th { - background:#dee3e9; - text-align:left; - padding:8px 3px 3px 7px; -} -td.colFirst, th.colFirst { - white-space:nowrap; - font-size:13px; -} -td.colLast, th.colLast { - font-size:13px; -} -td.colOne, th.colOne { - font-size:13px; -} -.overviewSummary td.colFirst, .overviewSummary th.colFirst, -.useSummary td.colFirst, .useSummary th.colFirst, -.overviewSummary td.colOne, .overviewSummary th.colOne, -.memberSummary td.colFirst, .memberSummary th.colFirst, -.memberSummary td.colOne, .memberSummary th.colOne, -.typeSummary td.colFirst{ - width:25%; - vertical-align:top; -} -td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover { - font-weight:bold; -} -.tableSubHeadingColor { - background-color:#EEEEFF; -} -.altColor { - background-color:#FFFFFF; -} -.rowColor { - background-color:#EEEEEF; -} -/* -Content styles -*/ -.description pre { - margin-top:0; -} -.deprecatedContent { - margin:0; - padding:10px 0; -} -.docSummary { - padding:0; -} - -ul.blockList ul.blockList ul.blockList li.blockList h3 { - font-style:normal; -} - -div.block { - font-size:14px; - font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; -} - -td.colLast div { - padding-top:0px; -} - - -td.colLast a { - padding-bottom:3px; -} -/* -Formatting effect styles -*/ -.sourceLineNo { - color:green; - padding:0 30px 0 0; -} -h1.hidden { - visibility:hidden; - overflow:hidden; - font-size:10px; -} -.block { - display:block; - margin:3px 10px 2px 0px; - color:#474747; -} -.deprecatedLabel, .descfrmTypeLabel, .memberNameLabel, .memberNameLink, -.overrideSpecifyLabel, .packageHierarchyLabel, .paramLabel, .returnLabel, -.seeLabel, .simpleTagLabel, .throwsLabel, .typeNameLabel, .typeNameLink { - font-weight:bold; -} -.deprecationComment, .emphasizedPhrase, .interfaceName { - font-style:italic; -} - -div.block div.block span.deprecationComment, div.block div.block span.emphasizedPhrase, -div.block div.block span.interfaceName { - font-style:normal; -} - -div.contentContainer ul.blockList li.blockList h2{ - padding-bottom:0px; -} diff --git "a/\345\244\247\344\270\211\344\270\212/\350\275\257\344\273\266\345\267\245\347\250\213/hw/2015/Homework/\344\275\234\344\270\2323 - xUnit/02_xunit/__pycache__/findobj.cpython-34.pyc" "b/\345\244\247\344\270\211\344\270\212/\350\275\257\344\273\266\345\267\245\347\250\213/hw/2015/Homework/\344\275\234\344\270\2323 - xUnit/02_xunit/__pycache__/findobj.cpython-34.pyc" deleted file mode 100644 index ea244a187..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\350\275\257\344\273\266\345\267\245\347\250\213/hw/2015/Homework/\344\275\234\344\270\2323 - xUnit/02_xunit/__pycache__/findobj.cpython-34.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\350\275\257\344\273\266\345\267\245\347\250\213/hw/2015/Homework/\344\275\234\344\270\2324 - Coverage/03_white_box/__pycache__/fileutil.cpython-34.pyc" "b/\345\244\247\344\270\211\344\270\212/\350\275\257\344\273\266\345\267\245\347\250\213/hw/2015/Homework/\344\275\234\344\270\2324 - Coverage/03_white_box/__pycache__/fileutil.cpython-34.pyc" deleted file mode 100644 index a3b56f6f1..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\350\275\257\344\273\266\345\267\245\347\250\213/hw/2015/Homework/\344\275\234\344\270\2324 - Coverage/03_white_box/__pycache__/fileutil.cpython-34.pyc" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\350\275\257\344\273\266\345\267\245\347\250\213/hw/2016/457304025_3_\344\275\234\344\270\232\350\257\264\346\230\216-xUnit/max_xunit/Arith.class" "b/\345\244\247\344\270\211\344\270\212/\350\275\257\344\273\266\345\267\245\347\250\213/hw/2016/457304025_3_\344\275\234\344\270\232\350\257\264\346\230\216-xUnit/max_xunit/Arith.class" deleted file mode 100644 index a89188e8e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\350\275\257\344\273\266\345\267\245\347\250\213/hw/2016/457304025_3_\344\275\234\344\270\232\350\257\264\346\230\216-xUnit/max_xunit/Arith.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\350\275\257\344\273\266\345\267\245\347\250\213/hw/2016/457304025_3_\344\275\234\344\270\232\350\257\264\346\230\216-xUnit/max_xunit/ArithTest.class" "b/\345\244\247\344\270\211\344\270\212/\350\275\257\344\273\266\345\267\245\347\250\213/hw/2016/457304025_3_\344\275\234\344\270\232\350\257\264\346\230\216-xUnit/max_xunit/ArithTest.class" deleted file mode 100644 index e5915a6b9..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\350\275\257\344\273\266\345\267\245\347\250\213/hw/2016/457304025_3_\344\275\234\344\270\232\350\257\264\346\230\216-xUnit/max_xunit/ArithTest.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\350\275\257\344\273\266\345\267\245\347\250\213/hw/2016/457304025_3_\344\275\234\344\270\232\350\257\264\346\230\216-xUnit/max_xunit/Calculator.class" "b/\345\244\247\344\270\211\344\270\212/\350\275\257\344\273\266\345\267\245\347\250\213/hw/2016/457304025_3_\344\275\234\344\270\232\350\257\264\346\230\216-xUnit/max_xunit/Calculator.class" deleted file mode 100644 index 9ab33adbf..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\350\275\257\344\273\266\345\267\245\347\250\213/hw/2016/457304025_3_\344\275\234\344\270\232\350\257\264\346\230\216-xUnit/max_xunit/Calculator.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\350\275\257\344\273\266\345\267\245\347\250\213/hw/2016/457304025_3_\344\275\234\344\270\232\350\257\264\346\230\216-xUnit/max_xunit/CalculatorTest.class" "b/\345\244\247\344\270\211\344\270\212/\350\275\257\344\273\266\345\267\245\347\250\213/hw/2016/457304025_3_\344\275\234\344\270\232\350\257\264\346\230\216-xUnit/max_xunit/CalculatorTest.class" deleted file mode 100644 index 7547b31cb..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\350\275\257\344\273\266\345\267\245\347\250\213/hw/2016/457304025_3_\344\275\234\344\270\232\350\257\264\346\230\216-xUnit/max_xunit/CalculatorTest.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\350\275\257\344\273\266\345\267\245\347\250\213/hw/2016/splay_tree_test/BinNode.class" "b/\345\244\247\344\270\211\344\270\212/\350\275\257\344\273\266\345\267\245\347\250\213/hw/2016/splay_tree_test/BinNode.class" deleted file mode 100644 index 0e7a2bfac..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\350\275\257\344\273\266\345\267\245\347\250\213/hw/2016/splay_tree_test/BinNode.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\350\275\257\344\273\266\345\267\245\347\250\213/hw/2016/splay_tree_test/Splay.class" "b/\345\244\247\344\270\211\344\270\212/\350\275\257\344\273\266\345\267\245\347\250\213/hw/2016/splay_tree_test/Splay.class" deleted file mode 100644 index 19d13e370..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\350\275\257\344\273\266\345\267\245\347\250\213/hw/2016/splay_tree_test/Splay.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\212/\350\275\257\344\273\266\345\267\245\347\250\213/hw/2016/splay_tree_test/Test.class" "b/\345\244\247\344\270\211\344\270\212/\350\275\257\344\273\266\345\267\245\347\250\213/hw/2016/splay_tree_test/Test.class" deleted file mode 100644 index 6425289c3..000000000 Binary files "a/\345\244\247\344\270\211\344\270\212/\350\275\257\344\273\266\345\267\245\347\250\213/hw/2016/splay_tree_test/Test.class" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/bin/bootblock" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/bin/bootblock" deleted file mode 100644 index 66c1bd1c4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/bin/bootblock" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/bin/kernel" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/bin/kernel" deleted file mode 100644 index f9e7edcbf..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/bin/kernel" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/bin/sign" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/bin/sign" deleted file mode 100644 index 0ac46c565..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/bin/sign" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/bin/ucore.img" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/bin/ucore.img" deleted file mode 100644 index bc138bef3..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/bin/ucore.img" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/boot/bootasm.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/boot/bootasm.d" deleted file mode 100644 index 081467461..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/boot/bootasm.d" +++ /dev/null @@ -1 +0,0 @@ -obj/boot/bootasm.o obj/boot/bootasm.d: boot/bootasm.S boot/asm.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/boot/bootasm.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/boot/bootasm.o" deleted file mode 100644 index 76b89e318..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/boot/bootasm.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/boot/bootmain.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/boot/bootmain.d" deleted file mode 100644 index c0d98e63c..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/boot/bootmain.d" +++ /dev/null @@ -1,2 +0,0 @@ -obj/boot/bootmain.o obj/boot/bootmain.d: boot/bootmain.c libs/defs.h \ - libs/x86.h libs/elf.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/boot/bootmain.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/boot/bootmain.o" deleted file mode 100644 index d3150dba0..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/boot/bootmain.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/bootblock.asm" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/bootblock.asm" deleted file mode 100644 index 0003680d9..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/bootblock.asm" +++ /dev/null @@ -1,373 +0,0 @@ - -obj/bootblock.o: file format elf32-i386 - - -Disassembly of section .text: - -00007c00 : - -# start address should be 0:7c00, in real mode, the beginning address of the running bootloader -.globl start -start: -.code16 # Assemble for 16-bit mode - cli # Disable interrupts - 7c00: fa cli - cld # String operations increment - 7c01: fc cld - - # Set up the important data segment registers (DS, ES, SS). - xorw %ax, %ax # Segment number zero - 7c02: 31 c0 xor %eax,%eax - movw %ax, %ds # -> Data Segment - 7c04: 8e d8 mov %eax,%ds - movw %ax, %es # -> Extra Segment - 7c06: 8e c0 mov %eax,%es - movw %ax, %ss # -> Stack Segment - 7c08: 8e d0 mov %eax,%ss - -00007c0a : - # Enable A20: - # For backwards compatibility with the earliest PCs, physical - # address line 20 is tied low, so that addresses higher than - # 1MB wrap around to zero by default. This code undoes this. -seta20.1: - inb $0x64, %al # Wait for not busy(8042 input buffer empty). - 7c0a: e4 64 in $0x64,%al - testb $0x2, %al - 7c0c: a8 02 test $0x2,%al - jnz seta20.1 - 7c0e: 75 fa jne 7c0a - - movb $0xd1, %al # 0xd1 -> port 0x64 - 7c10: b0 d1 mov $0xd1,%al - outb %al, $0x64 # 0xd1 means: write data to 8042's P2 port - 7c12: e6 64 out %al,$0x64 - -00007c14 : - -seta20.2: - inb $0x64, %al # Wait for not busy(8042 input buffer empty). - 7c14: e4 64 in $0x64,%al - testb $0x2, %al - 7c16: a8 02 test $0x2,%al - jnz seta20.2 - 7c18: 75 fa jne 7c14 - - movb $0xdf, %al # 0xdf -> port 0x60 - 7c1a: b0 df mov $0xdf,%al - outb %al, $0x60 # 0xdf = 11011111, means set P2's A20 bit(the 1 bit) to 1 - 7c1c: e6 60 out %al,$0x60 - - # Switch from real to protected mode, using a bootstrap GDT - # and segment translation that makes virtual addresses - # identical to physical addresses, so that the - # effective memory map does not change during the switch. - lgdt gdtdesc - 7c1e: 0f 01 16 lgdtl (%esi) - 7c21: 6c insb (%dx),%es:(%edi) - 7c22: 7c 0f jl 7c33 - movl %cr0, %eax - 7c24: 20 c0 and %al,%al - orl $CR0_PE_ON, %eax - 7c26: 66 83 c8 01 or $0x1,%ax - movl %eax, %cr0 - 7c2a: 0f 22 c0 mov %eax,%cr0 - - # Jump to next instruction, but in 32-bit code segment. - # Switches processor into 32-bit mode. - ljmp $PROT_MODE_CSEG, $protcseg - 7c2d: ea .byte 0xea - 7c2e: 32 7c 08 00 xor 0x0(%eax,%ecx,1),%bh - -00007c32 : - -.code32 # Assemble for 32-bit mode -protcseg: - # Set up the protected-mode data segment registers - movw $PROT_MODE_DSEG, %ax # Our data segment selector - 7c32: 66 b8 10 00 mov $0x10,%ax - movw %ax, %ds # -> DS: Data Segment - 7c36: 8e d8 mov %eax,%ds - movw %ax, %es # -> ES: Extra Segment - 7c38: 8e c0 mov %eax,%es - movw %ax, %fs # -> FS - 7c3a: 8e e0 mov %eax,%fs - movw %ax, %gs # -> GS - 7c3c: 8e e8 mov %eax,%gs - movw %ax, %ss # -> SS: Stack Segment - 7c3e: 8e d0 mov %eax,%ss - - # Set up the stack pointer and call into C. The stack region is from 0--start(0x7c00) - movl $0x0, %ebp - 7c40: bd 00 00 00 00 mov $0x0,%ebp - movl $start, %esp - 7c45: bc 00 7c 00 00 mov $0x7c00,%esp - call bootmain - 7c4a: e8 be 00 00 00 call 7d0d - -00007c4f : - - # If bootmain returns (it shouldn't), loop. -spin: - jmp spin - 7c4f: eb fe jmp 7c4f - 7c51: 8d 76 00 lea 0x0(%esi),%esi - -00007c54 : - ... - 7c5c: ff (bad) - 7c5d: ff 00 incl (%eax) - 7c5f: 00 00 add %al,(%eax) - 7c61: 9a cf 00 ff ff 00 00 lcall $0x0,$0xffff00cf - 7c68: 00 .byte 0x0 - 7c69: 92 xchg %eax,%edx - 7c6a: cf iret - ... - -00007c6c : - 7c6c: 17 pop %ss - 7c6d: 00 54 7c 00 add %dl,0x0(%esp,%edi,2) - ... - -00007c72 : -/* * - * readseg - read @count bytes at @offset from kernel into virtual address @va, - * might copy more than asked. - * */ -static void -readseg(uintptr_t va, uint32_t count, uint32_t offset) { - 7c72: 55 push %ebp - 7c73: 89 e5 mov %esp,%ebp - 7c75: 57 push %edi - uintptr_t end_va = va + count; - 7c76: 8d 3c 10 lea (%eax,%edx,1),%edi - - // round down to sector boundary - va -= offset % SECTSIZE; - 7c79: 89 ca mov %ecx,%edx - - // translate from bytes to sectors; kernel starts at sector 1 - uint32_t secno = (offset / SECTSIZE) + 1; - 7c7b: c1 e9 09 shr $0x9,%ecx -/* * - * readseg - read @count bytes at @offset from kernel into virtual address @va, - * might copy more than asked. - * */ -static void -readseg(uintptr_t va, uint32_t count, uint32_t offset) { - 7c7e: 56 push %esi - uintptr_t end_va = va + count; - - // round down to sector boundary - va -= offset % SECTSIZE; - 7c7f: 81 e2 ff 01 00 00 and $0x1ff,%edx - - // translate from bytes to sectors; kernel starts at sector 1 - uint32_t secno = (offset / SECTSIZE) + 1; - 7c85: 8d 71 01 lea 0x1(%ecx),%esi -/* * - * readseg - read @count bytes at @offset from kernel into virtual address @va, - * might copy more than asked. - * */ -static void -readseg(uintptr_t va, uint32_t count, uint32_t offset) { - 7c88: 53 push %ebx - uintptr_t end_va = va + count; - - // round down to sector boundary - va -= offset % SECTSIZE; - 7c89: 29 d0 sub %edx,%eax -/* * - * readseg - read @count bytes at @offset from kernel into virtual address @va, - * might copy more than asked. - * */ -static void -readseg(uintptr_t va, uint32_t count, uint32_t offset) { - 7c8b: 53 push %ebx - uintptr_t end_va = va + count; - 7c8c: 89 7d f0 mov %edi,-0x10(%ebp) - - // round down to sector boundary - va -= offset % SECTSIZE; - 7c8f: 89 c3 mov %eax,%ebx - uint32_t secno = (offset / SECTSIZE) + 1; - - // If this is too slow, we could read lots of sectors at a time. - // We'd write more to memory than asked, but it doesn't matter -- - // we load in increasing order. - for (; va < end_va; va += SECTSIZE, secno ++) { - 7c91: 3b 5d f0 cmp -0x10(%ebp),%ebx - 7c94: 73 71 jae 7d07 -static inline void ltr(uint16_t sel) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port)); - 7c96: ba f7 01 00 00 mov $0x1f7,%edx - 7c9b: ec in (%dx),%al -#define ELFHDR ((struct elfhdr *)0x10000) // scratch space - -/* waitdisk - wait for disk ready */ -static void -waitdisk(void) { - while ((inb(0x1F7) & 0xC0) != 0x40) - 7c9c: 83 e0 c0 and $0xffffffc0,%eax - 7c9f: 3c 40 cmp $0x40,%al - 7ca1: 75 f3 jne 7c96 - : "memory", "cc"); -} - -static inline void -outb(uint16_t port, uint8_t data) { - asm volatile ("outb %0, %1" :: "a" (data), "d" (port)); - 7ca3: ba f2 01 00 00 mov $0x1f2,%edx - 7ca8: b0 01 mov $0x1,%al - 7caa: ee out %al,(%dx) - 7cab: ba f3 01 00 00 mov $0x1f3,%edx - 7cb0: 89 f0 mov %esi,%eax - 7cb2: ee out %al,(%dx) - 7cb3: 89 f0 mov %esi,%eax - 7cb5: ba f4 01 00 00 mov $0x1f4,%edx - 7cba: c1 e8 08 shr $0x8,%eax - 7cbd: ee out %al,(%dx) - 7cbe: 89 f0 mov %esi,%eax - 7cc0: ba f5 01 00 00 mov $0x1f5,%edx - 7cc5: c1 e8 10 shr $0x10,%eax - 7cc8: ee out %al,(%dx) - 7cc9: 89 f0 mov %esi,%eax - 7ccb: ba f6 01 00 00 mov $0x1f6,%edx - 7cd0: c1 e8 18 shr $0x18,%eax - 7cd3: 83 e0 0f and $0xf,%eax - 7cd6: 83 c8 e0 or $0xffffffe0,%eax - 7cd9: ee out %al,(%dx) - 7cda: b0 20 mov $0x20,%al - 7cdc: ba f7 01 00 00 mov $0x1f7,%edx - 7ce1: ee out %al,(%dx) -static inline void ltr(uint16_t sel) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port)); - 7ce2: ba f7 01 00 00 mov $0x1f7,%edx - 7ce7: ec in (%dx),%al - 7ce8: 83 e0 c0 and $0xffffffc0,%eax - 7ceb: 3c 40 cmp $0x40,%al - 7ced: 75 f3 jne 7ce2 - return data; -} - -static inline void -insl(uint32_t port, void *addr, int cnt) { - asm volatile ( - 7cef: 89 df mov %ebx,%edi - 7cf1: b9 80 00 00 00 mov $0x80,%ecx - 7cf6: ba f0 01 00 00 mov $0x1f0,%edx - 7cfb: fc cld - 7cfc: f2 6d repnz insl (%dx),%es:(%edi) - uint32_t secno = (offset / SECTSIZE) + 1; - - // If this is too slow, we could read lots of sectors at a time. - // We'd write more to memory than asked, but it doesn't matter -- - // we load in increasing order. - for (; va < end_va; va += SECTSIZE, secno ++) { - 7cfe: 81 c3 00 02 00 00 add $0x200,%ebx - 7d04: 46 inc %esi - 7d05: eb 8a jmp 7c91 - readsect((void *)va, secno); - } -} - 7d07: 58 pop %eax - 7d08: 5b pop %ebx - 7d09: 5e pop %esi - 7d0a: 5f pop %edi - 7d0b: 5d pop %ebp - 7d0c: c3 ret - -00007d0d : - -/* bootmain - the entry of bootloader */ -void -bootmain(void) { - 7d0d: 55 push %ebp - // read the 1st page off disk - readseg((uintptr_t)ELFHDR, SECTSIZE * 8, 0); - 7d0e: 31 c9 xor %ecx,%ecx - 7d10: ba 00 10 00 00 mov $0x1000,%edx - 7d15: b8 00 00 01 00 mov $0x10000,%eax - } -} - -/* bootmain - the entry of bootloader */ -void -bootmain(void) { - 7d1a: 89 e5 mov %esp,%ebp - 7d1c: 56 push %esi - 7d1d: 53 push %ebx - // read the 1st page off disk - readseg((uintptr_t)ELFHDR, SECTSIZE * 8, 0); - 7d1e: e8 4f ff ff ff call 7c72 - - // is this a valid ELF? - if (ELFHDR->e_magic != ELF_MAGIC) { - 7d23: 81 3d 00 00 01 00 7f cmpl $0x464c457f,0x10000 - 7d2a: 45 4c 46 - 7d2d: 75 3f jne 7d6e - } - - struct proghdr *ph, *eph; - - // load each program segment (ignores ph flags) - ph = (struct proghdr *)((uintptr_t)ELFHDR + ELFHDR->e_phoff); - 7d2f: a1 1c 00 01 00 mov 0x1001c,%eax - eph = ph + ELFHDR->e_phnum; - 7d34: 0f b7 35 2c 00 01 00 movzwl 0x1002c,%esi - } - - struct proghdr *ph, *eph; - - // load each program segment (ignores ph flags) - ph = (struct proghdr *)((uintptr_t)ELFHDR + ELFHDR->e_phoff); - 7d3b: 8d 98 00 00 01 00 lea 0x10000(%eax),%ebx - eph = ph + ELFHDR->e_phnum; - 7d41: c1 e6 05 shl $0x5,%esi - 7d44: 01 de add %ebx,%esi - for (; ph < eph; ph ++) { - 7d46: 39 f3 cmp %esi,%ebx - 7d48: 73 18 jae 7d62 - readseg(ph->p_va & 0xFFFFFF, ph->p_memsz, ph->p_offset); - 7d4a: 8b 43 08 mov 0x8(%ebx),%eax - 7d4d: 8b 4b 04 mov 0x4(%ebx),%ecx - struct proghdr *ph, *eph; - - // load each program segment (ignores ph flags) - ph = (struct proghdr *)((uintptr_t)ELFHDR + ELFHDR->e_phoff); - eph = ph + ELFHDR->e_phnum; - for (; ph < eph; ph ++) { - 7d50: 83 c3 20 add $0x20,%ebx - readseg(ph->p_va & 0xFFFFFF, ph->p_memsz, ph->p_offset); - 7d53: 8b 53 f4 mov -0xc(%ebx),%edx - 7d56: 25 ff ff ff 00 and $0xffffff,%eax - 7d5b: e8 12 ff ff ff call 7c72 - 7d60: eb e4 jmp 7d46 - } - - // call the entry point from the ELF header - // note: does not return - ((void (*)(void))(ELFHDR->e_entry & 0xFFFFFF))(); - 7d62: a1 18 00 01 00 mov 0x10018,%eax - 7d67: 25 ff ff ff 00 and $0xffffff,%eax - 7d6c: ff d0 call *%eax - asm volatile ("outb %0, %1" :: "a" (data), "d" (port)); -} - -static inline void -outw(uint16_t port, uint16_t data) { - asm volatile ("outw %0, %1" :: "a" (data), "d" (port)); - 7d6e: ba 00 8a ff ff mov $0xffff8a00,%edx - 7d73: 89 d0 mov %edx,%eax - 7d75: 66 ef out %ax,(%dx) - 7d77: b8 00 8e ff ff mov $0xffff8e00,%eax - 7d7c: 66 ef out %ax,(%dx) - 7d7e: eb fe jmp 7d7e diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/bootblock.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/bootblock.o" deleted file mode 100644 index 15c46adfe..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/bootblock.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/bootblock.out" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/bootblock.out" deleted file mode 100644 index 86ff98866..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/bootblock.out" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/debug/kdebug.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/debug/kdebug.d" deleted file mode 100644 index f81712bd6..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/debug/kdebug.d" +++ /dev/null @@ -1,3 +0,0 @@ -obj/kern/debug/kdebug.o obj/kern/debug/kdebug.d: kern/debug/kdebug.c \ - libs/defs.h libs/x86.h kern/debug/stab.h libs/stdio.h libs/stdarg.h \ - libs/string.h kern/debug/kdebug.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/debug/kdebug.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/debug/kdebug.o" deleted file mode 100644 index d61d8d392..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/debug/kdebug.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/debug/kmonitor.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/debug/kmonitor.d" deleted file mode 100644 index 793c83e39..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/debug/kmonitor.d" +++ /dev/null @@ -1,3 +0,0 @@ -obj/kern/debug/kmonitor.o obj/kern/debug/kmonitor.d: \ - kern/debug/kmonitor.c libs/stdio.h libs/defs.h libs/stdarg.h \ - libs/string.h kern/trap/trap.h kern/debug/kmonitor.h kern/debug/kdebug.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/debug/kmonitor.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/debug/kmonitor.o" deleted file mode 100644 index 6ab114748..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/debug/kmonitor.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/debug/panic.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/debug/panic.d" deleted file mode 100644 index 084ebb66b..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/debug/panic.d" +++ /dev/null @@ -1,3 +0,0 @@ -obj/kern/debug/panic.o obj/kern/debug/panic.d: kern/debug/panic.c \ - libs/defs.h libs/stdio.h libs/stdarg.h kern/driver/intr.h \ - kern/debug/kmonitor.h kern/trap/trap.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/debug/panic.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/debug/panic.o" deleted file mode 100644 index ee2b01a19..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/debug/panic.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/driver/clock.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/driver/clock.d" deleted file mode 100644 index bdff3ffda..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/driver/clock.d" +++ /dev/null @@ -1,3 +0,0 @@ -obj/kern/driver/clock.o obj/kern/driver/clock.d: kern/driver/clock.c \ - libs/x86.h libs/defs.h kern/trap/trap.h libs/stdio.h libs/stdarg.h \ - kern/driver/picirq.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/driver/clock.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/driver/clock.o" deleted file mode 100644 index 407fb9cd4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/driver/clock.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/driver/console.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/driver/console.d" deleted file mode 100644 index b8db593fa..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/driver/console.d" +++ /dev/null @@ -1,3 +0,0 @@ -obj/kern/driver/console.o obj/kern/driver/console.d: \ - kern/driver/console.c libs/defs.h libs/x86.h libs/stdio.h libs/stdarg.h \ - libs/string.h kern/driver/kbdreg.h kern/driver/picirq.h kern/trap/trap.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/driver/console.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/driver/console.o" deleted file mode 100644 index 13f0a2f4c..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/driver/console.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/driver/intr.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/driver/intr.d" deleted file mode 100644 index d0f9177c9..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/driver/intr.d" +++ /dev/null @@ -1,2 +0,0 @@ -obj/kern/driver/intr.o obj/kern/driver/intr.d: kern/driver/intr.c \ - libs/x86.h libs/defs.h kern/driver/intr.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/driver/intr.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/driver/intr.o" deleted file mode 100644 index 75464f684..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/driver/intr.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/driver/picirq.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/driver/picirq.d" deleted file mode 100644 index 2de8ab189..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/driver/picirq.d" +++ /dev/null @@ -1,2 +0,0 @@ -obj/kern/driver/picirq.o obj/kern/driver/picirq.d: kern/driver/picirq.c \ - libs/defs.h libs/x86.h kern/driver/picirq.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/driver/picirq.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/driver/picirq.o" deleted file mode 100644 index 7f30e9580..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/driver/picirq.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/init/init.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/init/init.d" deleted file mode 100644 index e0ddb42c1..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/init/init.d" +++ /dev/null @@ -1,5 +0,0 @@ -obj/kern/init/init.o obj/kern/init/init.d: kern/init/init.c libs/defs.h \ - libs/stdio.h libs/stdarg.h libs/string.h kern/driver/console.h \ - kern/debug/kdebug.h kern/driver/picirq.h kern/trap/trap.h \ - kern/driver/clock.h kern/driver/intr.h kern/mm/pmm.h \ - kern/debug/kmonitor.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/init/init.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/init/init.o" deleted file mode 100644 index a0eeb4c96..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/init/init.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/libs/readline.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/libs/readline.d" deleted file mode 100644 index 656abf96b..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/libs/readline.d" +++ /dev/null @@ -1,2 +0,0 @@ -obj/kern/libs/readline.o obj/kern/libs/readline.d: kern/libs/readline.c \ - libs/stdio.h libs/defs.h libs/stdarg.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/libs/readline.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/libs/readline.o" deleted file mode 100644 index 844924b81..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/libs/readline.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/libs/stdio.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/libs/stdio.d" deleted file mode 100644 index 5e205ace5..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/libs/stdio.d" +++ /dev/null @@ -1,2 +0,0 @@ -obj/kern/libs/stdio.o obj/kern/libs/stdio.d: kern/libs/stdio.c \ - libs/defs.h libs/stdio.h libs/stdarg.h kern/driver/console.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/libs/stdio.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/libs/stdio.o" deleted file mode 100644 index 3b16fd27e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/libs/stdio.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/mm/pmm.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/mm/pmm.d" deleted file mode 100644 index a0fd41ccd..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/mm/pmm.d" +++ /dev/null @@ -1,2 +0,0 @@ -obj/kern/mm/pmm.o obj/kern/mm/pmm.d: kern/mm/pmm.c libs/defs.h libs/x86.h \ - kern/mm/mmu.h kern/mm/memlayout.h kern/mm/pmm.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/mm/pmm.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/mm/pmm.o" deleted file mode 100644 index 861f05704..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/mm/pmm.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/trap/trap.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/trap/trap.d" deleted file mode 100644 index 3130cab5a..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/trap/trap.d" +++ /dev/null @@ -1,4 +0,0 @@ -obj/kern/trap/trap.o obj/kern/trap/trap.d: kern/trap/trap.c libs/defs.h \ - kern/mm/mmu.h kern/mm/memlayout.h kern/driver/clock.h kern/trap/trap.h \ - libs/x86.h libs/stdio.h libs/stdarg.h kern/debug/assert.h \ - kern/driver/console.h kern/debug/kdebug.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/trap/trap.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/trap/trap.o" deleted file mode 100644 index 8642e0ea0..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/trap/trap.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/trap/trapentry.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/trap/trapentry.d" deleted file mode 100644 index f37d596cc..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/trap/trapentry.d" +++ /dev/null @@ -1,2 +0,0 @@ -obj/kern/trap/trapentry.o obj/kern/trap/trapentry.d: \ - kern/trap/trapentry.S kern/mm/memlayout.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/trap/trapentry.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/trap/trapentry.o" deleted file mode 100644 index 8d24a0bfe..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/trap/trapentry.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/trap/vectors.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/trap/vectors.d" deleted file mode 100644 index e5813e776..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/trap/vectors.d" +++ /dev/null @@ -1 +0,0 @@ -obj/kern/trap/vectors.o obj/kern/trap/vectors.d: kern/trap/vectors.S diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/trap/vectors.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/trap/vectors.o" deleted file mode 100644 index 738fa6863..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kern/trap/vectors.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kernel.asm" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kernel.asm" deleted file mode 100644 index 719bdb150..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kernel.asm" +++ /dev/null @@ -1,8702 +0,0 @@ - -bin/kernel: file format elf32-i386 - - -Disassembly of section .text: - -00100000 : -void grade_backtrace(void); -static void lab1_switch_test(void); -static void lab1_print_cur_status(void); - -int -kern_init(void) { - 100000: 55 push %ebp - 100001: 89 e5 mov %esp,%ebp - 100003: 83 ec 18 sub $0x18,%esp - extern char edata[], end[]; - memset(edata, 0, end - edata); - 100006: ba 40 fd 10 00 mov $0x10fd40,%edx - 10000b: b8 16 ea 10 00 mov $0x10ea16,%eax - 100010: 29 c2 sub %eax,%edx - 100012: 89 d0 mov %edx,%eax - 100014: 83 ec 04 sub $0x4,%esp - 100017: 50 push %eax - 100018: 6a 00 push $0x0 - 10001a: 68 16 ea 10 00 push $0x10ea16 - 10001f: e8 41 2e 00 00 call 102e65 - 100024: 83 c4 10 add $0x10,%esp - - cons_init(); // init the console - 100027: e8 42 15 00 00 call 10156e - - const char *message = "(THU.CST) os is loading ..."; - 10002c: c7 45 f4 00 36 10 00 movl $0x103600,-0xc(%ebp) - cprintf("%s\n\n", message); - 100033: 83 ec 08 sub $0x8,%esp - 100036: ff 75 f4 pushl -0xc(%ebp) - 100039: 68 1c 36 10 00 push $0x10361c - 10003e: e8 25 02 00 00 call 100268 - 100043: 83 c4 10 add $0x10,%esp - - print_kerninfo(); - 100046: e8 a7 08 00 00 call 1008f2 - - grade_backtrace(); - 10004b: e8 91 00 00 00 call 1000e1 - - pmm_init(); // init physical memory management - 100050: e8 d4 2a 00 00 call 102b29 - - pic_init(); // init interrupt controller - 100055: e8 57 16 00 00 call 1016b1 - idt_init(); // init interrupt descriptor table - 10005a: e8 d9 17 00 00 call 101838 - - clock_init(); // init clock interrupt - 10005f: e8 ef 0c 00 00 call 100d53 - intr_enable(); // enable irq interrupt - 100064: e8 85 17 00 00 call 1017ee - - //LAB1: CAHLLENGE 1 If you try to do it, uncomment lab1_switch_test() - // user/kernel mode switch test - lab1_switch_test(); - 100069: e8 6b 01 00 00 call 1001d9 - - /* do nothing */ - // extern bool should_print; - while (1) { - if (should_print) { - 10006e: a1 a0 f0 10 00 mov 0x10f0a0,%eax - 100073: 85 c0 test %eax,%eax - 100075: 74 f7 je 10006e - should_print = 0; - 100077: c7 05 a0 f0 10 00 00 movl $0x0,0x10f0a0 - 10007e: 00 00 00 - lab1_print_cur_status(); - 100081: e8 7c 00 00 00 call 100102 - } - } - 100086: eb e6 jmp 10006e - -00100088 : -} - -void __attribute__((noinline)) -grade_backtrace2(int arg0, int arg1, int arg2, int arg3) { - 100088: 55 push %ebp - 100089: 89 e5 mov %esp,%ebp - 10008b: 83 ec 08 sub $0x8,%esp - mon_backtrace(0, NULL, NULL); - 10008e: 83 ec 04 sub $0x4,%esp - 100091: 6a 00 push $0x0 - 100093: 6a 00 push $0x0 - 100095: 6a 00 push $0x0 - 100097: e8 a5 0c 00 00 call 100d41 - 10009c: 83 c4 10 add $0x10,%esp -} - 10009f: 90 nop - 1000a0: c9 leave - 1000a1: c3 ret - -001000a2 : - -void __attribute__((noinline)) -grade_backtrace1(int arg0, int arg1) { - 1000a2: 55 push %ebp - 1000a3: 89 e5 mov %esp,%ebp - 1000a5: 53 push %ebx - 1000a6: 83 ec 04 sub $0x4,%esp - grade_backtrace2(arg0, (int)&arg0, arg1, (int)&arg1); - 1000a9: 8d 4d 0c lea 0xc(%ebp),%ecx - 1000ac: 8b 55 0c mov 0xc(%ebp),%edx - 1000af: 8d 5d 08 lea 0x8(%ebp),%ebx - 1000b2: 8b 45 08 mov 0x8(%ebp),%eax - 1000b5: 51 push %ecx - 1000b6: 52 push %edx - 1000b7: 53 push %ebx - 1000b8: 50 push %eax - 1000b9: e8 ca ff ff ff call 100088 - 1000be: 83 c4 10 add $0x10,%esp -} - 1000c1: 90 nop - 1000c2: 8b 5d fc mov -0x4(%ebp),%ebx - 1000c5: c9 leave - 1000c6: c3 ret - -001000c7 : - -void __attribute__((noinline)) -grade_backtrace0(int arg0, int arg1, int arg2) { - 1000c7: 55 push %ebp - 1000c8: 89 e5 mov %esp,%ebp - 1000ca: 83 ec 08 sub $0x8,%esp - grade_backtrace1(arg0, arg2); - 1000cd: 83 ec 08 sub $0x8,%esp - 1000d0: ff 75 10 pushl 0x10(%ebp) - 1000d3: ff 75 08 pushl 0x8(%ebp) - 1000d6: e8 c7 ff ff ff call 1000a2 - 1000db: 83 c4 10 add $0x10,%esp -} - 1000de: 90 nop - 1000df: c9 leave - 1000e0: c3 ret - -001000e1 : - -void -grade_backtrace(void) { - 1000e1: 55 push %ebp - 1000e2: 89 e5 mov %esp,%ebp - 1000e4: 83 ec 08 sub $0x8,%esp - grade_backtrace0(0, (int)kern_init, 0xffff0000); - 1000e7: b8 00 00 10 00 mov $0x100000,%eax - 1000ec: 83 ec 04 sub $0x4,%esp - 1000ef: 68 00 00 ff ff push $0xffff0000 - 1000f4: 50 push %eax - 1000f5: 6a 00 push $0x0 - 1000f7: e8 cb ff ff ff call 1000c7 - 1000fc: 83 c4 10 add $0x10,%esp -} - 1000ff: 90 nop - 100100: c9 leave - 100101: c3 ret - -00100102 : - -static void -lab1_print_cur_status(void) { - 100102: 55 push %ebp - 100103: 89 e5 mov %esp,%ebp - 100105: 83 ec 18 sub $0x18,%esp - static int round = 0; - uint16_t reg1, reg2, reg3, reg4; - asm volatile ( - 100108: 8c 4d f6 mov %cs,-0xa(%ebp) - 10010b: 8c 5d f4 mov %ds,-0xc(%ebp) - 10010e: 8c 45 f2 mov %es,-0xe(%ebp) - 100111: 8c 55 f0 mov %ss,-0x10(%ebp) - "mov %%cs, %0;" - "mov %%ds, %1;" - "mov %%es, %2;" - "mov %%ss, %3;" - : "=m"(reg1), "=m"(reg2), "=m"(reg3), "=m"(reg4)); - cprintf("%d: @ring %d\n", round, reg1 & 3); - 100114: 0f b7 45 f6 movzwl -0xa(%ebp),%eax - 100118: 0f b7 c0 movzwl %ax,%eax - 10011b: 83 e0 03 and $0x3,%eax - 10011e: 89 c2 mov %eax,%edx - 100120: a1 20 ea 10 00 mov 0x10ea20,%eax - 100125: 83 ec 04 sub $0x4,%esp - 100128: 52 push %edx - 100129: 50 push %eax - 10012a: 68 21 36 10 00 push $0x103621 - 10012f: e8 34 01 00 00 call 100268 - 100134: 83 c4 10 add $0x10,%esp - cprintf("%d: cs = %x\n", round, reg1); - 100137: 0f b7 45 f6 movzwl -0xa(%ebp),%eax - 10013b: 0f b7 d0 movzwl %ax,%edx - 10013e: a1 20 ea 10 00 mov 0x10ea20,%eax - 100143: 83 ec 04 sub $0x4,%esp - 100146: 52 push %edx - 100147: 50 push %eax - 100148: 68 2f 36 10 00 push $0x10362f - 10014d: e8 16 01 00 00 call 100268 - 100152: 83 c4 10 add $0x10,%esp - cprintf("%d: ds = %x\n", round, reg2); - 100155: 0f b7 45 f4 movzwl -0xc(%ebp),%eax - 100159: 0f b7 d0 movzwl %ax,%edx - 10015c: a1 20 ea 10 00 mov 0x10ea20,%eax - 100161: 83 ec 04 sub $0x4,%esp - 100164: 52 push %edx - 100165: 50 push %eax - 100166: 68 3d 36 10 00 push $0x10363d - 10016b: e8 f8 00 00 00 call 100268 - 100170: 83 c4 10 add $0x10,%esp - cprintf("%d: es = %x\n", round, reg3); - 100173: 0f b7 45 f2 movzwl -0xe(%ebp),%eax - 100177: 0f b7 d0 movzwl %ax,%edx - 10017a: a1 20 ea 10 00 mov 0x10ea20,%eax - 10017f: 83 ec 04 sub $0x4,%esp - 100182: 52 push %edx - 100183: 50 push %eax - 100184: 68 4b 36 10 00 push $0x10364b - 100189: e8 da 00 00 00 call 100268 - 10018e: 83 c4 10 add $0x10,%esp - cprintf("%d: ss = %x\n", round, reg4); - 100191: 0f b7 45 f0 movzwl -0x10(%ebp),%eax - 100195: 0f b7 d0 movzwl %ax,%edx - 100198: a1 20 ea 10 00 mov 0x10ea20,%eax - 10019d: 83 ec 04 sub $0x4,%esp - 1001a0: 52 push %edx - 1001a1: 50 push %eax - 1001a2: 68 59 36 10 00 push $0x103659 - 1001a7: e8 bc 00 00 00 call 100268 - 1001ac: 83 c4 10 add $0x10,%esp - round ++; - 1001af: a1 20 ea 10 00 mov 0x10ea20,%eax - 1001b4: 83 c0 01 add $0x1,%eax - 1001b7: a3 20 ea 10 00 mov %eax,0x10ea20 -} - 1001bc: 90 nop - 1001bd: c9 leave - 1001be: c3 ret - -001001bf : - -static void -lab1_switch_to_user(void) { - 1001bf: 55 push %ebp - 1001c0: 89 e5 mov %esp,%ebp - //LAB1 CHALLENGE 1 : TODO - asm volatile ( - 1001c2: 83 ec 08 sub $0x8,%esp - 1001c5: cd 78 int $0x78 - 1001c7: 89 ec mov %ebp,%esp - "int %0 \n" - "movl %%ebp, %%esp" - : - : "i"(T_SWITCH_TOU) - ); -} - 1001c9: 90 nop - 1001ca: 5d pop %ebp - 1001cb: c3 ret - -001001cc : - -static void -lab1_switch_to_kernel(void) { - 1001cc: 55 push %ebp - 1001cd: 89 e5 mov %esp,%ebp - //LAB1 CHALLENGE 1 : TODO - asm volatile ( - 1001cf: 83 ec 08 sub $0x8,%esp - 1001d2: cd 79 int $0x79 - 1001d4: 89 ec mov %ebp,%esp - "int %0 \n" - "movl %%ebp, %%esp" - : - : "i"(T_SWITCH_TOK) - ); -} - 1001d6: 90 nop - 1001d7: 5d pop %ebp - 1001d8: c3 ret - -001001d9 : - -static void -lab1_switch_test(void) { - 1001d9: 55 push %ebp - 1001da: 89 e5 mov %esp,%ebp - 1001dc: 83 ec 08 sub $0x8,%esp - lab1_print_cur_status(); - 1001df: e8 1e ff ff ff call 100102 - cprintf("+++ switch to user mode +++\n"); - 1001e4: 83 ec 0c sub $0xc,%esp - 1001e7: 68 68 36 10 00 push $0x103668 - 1001ec: e8 77 00 00 00 call 100268 - 1001f1: 83 c4 10 add $0x10,%esp - lab1_switch_to_user(); - 1001f4: e8 c6 ff ff ff call 1001bf - lab1_print_cur_status(); - 1001f9: e8 04 ff ff ff call 100102 - cprintf("+++ switch to kernel mode +++\n"); - 1001fe: 83 ec 0c sub $0xc,%esp - 100201: 68 88 36 10 00 push $0x103688 - 100206: e8 5d 00 00 00 call 100268 - 10020b: 83 c4 10 add $0x10,%esp - lab1_switch_to_kernel(); - 10020e: e8 b9 ff ff ff call 1001cc - lab1_print_cur_status(); - 100213: e8 ea fe ff ff call 100102 -} - 100218: 90 nop - 100219: c9 leave - 10021a: c3 ret - -0010021b : -/* * - * cputch - writes a single character @c to stdout, and it will - * increace the value of counter pointed by @cnt. - * */ -static void -cputch(int c, int *cnt) { - 10021b: 55 push %ebp - 10021c: 89 e5 mov %esp,%ebp - 10021e: 83 ec 08 sub $0x8,%esp - cons_putc(c); - 100221: 83 ec 0c sub $0xc,%esp - 100224: ff 75 08 pushl 0x8(%ebp) - 100227: e8 73 13 00 00 call 10159f - 10022c: 83 c4 10 add $0x10,%esp - (*cnt) ++; - 10022f: 8b 45 0c mov 0xc(%ebp),%eax - 100232: 8b 00 mov (%eax),%eax - 100234: 8d 50 01 lea 0x1(%eax),%edx - 100237: 8b 45 0c mov 0xc(%ebp),%eax - 10023a: 89 10 mov %edx,(%eax) -} - 10023c: 90 nop - 10023d: c9 leave - 10023e: c3 ret - -0010023f : - * - * Call this function if you are already dealing with a va_list. - * Or you probably want cprintf() instead. - * */ -int -vcprintf(const char *fmt, va_list ap) { - 10023f: 55 push %ebp - 100240: 89 e5 mov %esp,%ebp - 100242: 83 ec 18 sub $0x18,%esp - int cnt = 0; - 100245: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - vprintfmt((void*)cputch, &cnt, fmt, ap); - 10024c: ff 75 0c pushl 0xc(%ebp) - 10024f: ff 75 08 pushl 0x8(%ebp) - 100252: 8d 45 f4 lea -0xc(%ebp),%eax - 100255: 50 push %eax - 100256: 68 1b 02 10 00 push $0x10021b - 10025b: e8 3b 2f 00 00 call 10319b - 100260: 83 c4 10 add $0x10,%esp - return cnt; - 100263: 8b 45 f4 mov -0xc(%ebp),%eax -} - 100266: c9 leave - 100267: c3 ret - -00100268 : - * - * The return value is the number of characters which would be - * written to stdout. - * */ -int -cprintf(const char *fmt, ...) { - 100268: 55 push %ebp - 100269: 89 e5 mov %esp,%ebp - 10026b: 83 ec 18 sub $0x18,%esp - va_list ap; - int cnt; - va_start(ap, fmt); - 10026e: 8d 45 0c lea 0xc(%ebp),%eax - 100271: 89 45 f0 mov %eax,-0x10(%ebp) - cnt = vcprintf(fmt, ap); - 100274: 8b 45 f0 mov -0x10(%ebp),%eax - 100277: 83 ec 08 sub $0x8,%esp - 10027a: 50 push %eax - 10027b: ff 75 08 pushl 0x8(%ebp) - 10027e: e8 bc ff ff ff call 10023f - 100283: 83 c4 10 add $0x10,%esp - 100286: 89 45 f4 mov %eax,-0xc(%ebp) - va_end(ap); - return cnt; - 100289: 8b 45 f4 mov -0xc(%ebp),%eax -} - 10028c: c9 leave - 10028d: c3 ret - -0010028e : - -/* cputchar - writes a single character to stdout */ -void -cputchar(int c) { - 10028e: 55 push %ebp - 10028f: 89 e5 mov %esp,%ebp - 100291: 83 ec 08 sub $0x8,%esp - cons_putc(c); - 100294: 83 ec 0c sub $0xc,%esp - 100297: ff 75 08 pushl 0x8(%ebp) - 10029a: e8 00 13 00 00 call 10159f - 10029f: 83 c4 10 add $0x10,%esp -} - 1002a2: 90 nop - 1002a3: c9 leave - 1002a4: c3 ret - -001002a5 : -/* * - * cputs- writes the string pointed by @str to stdout and - * appends a newline character. - * */ -int -cputs(const char *str) { - 1002a5: 55 push %ebp - 1002a6: 89 e5 mov %esp,%ebp - 1002a8: 83 ec 18 sub $0x18,%esp - int cnt = 0; - 1002ab: c7 45 f0 00 00 00 00 movl $0x0,-0x10(%ebp) - char c; - while ((c = *str ++) != '\0') { - 1002b2: eb 14 jmp 1002c8 - cputch(c, &cnt); - 1002b4: 0f be 45 f7 movsbl -0x9(%ebp),%eax - 1002b8: 83 ec 08 sub $0x8,%esp - 1002bb: 8d 55 f0 lea -0x10(%ebp),%edx - 1002be: 52 push %edx - 1002bf: 50 push %eax - 1002c0: e8 56 ff ff ff call 10021b - 1002c5: 83 c4 10 add $0x10,%esp - * */ -int -cputs(const char *str) { - int cnt = 0; - char c; - while ((c = *str ++) != '\0') { - 1002c8: 8b 45 08 mov 0x8(%ebp),%eax - 1002cb: 8d 50 01 lea 0x1(%eax),%edx - 1002ce: 89 55 08 mov %edx,0x8(%ebp) - 1002d1: 0f b6 00 movzbl (%eax),%eax - 1002d4: 88 45 f7 mov %al,-0x9(%ebp) - 1002d7: 80 7d f7 00 cmpb $0x0,-0x9(%ebp) - 1002db: 75 d7 jne 1002b4 - cputch(c, &cnt); - } - cputch('\n', &cnt); - 1002dd: 83 ec 08 sub $0x8,%esp - 1002e0: 8d 45 f0 lea -0x10(%ebp),%eax - 1002e3: 50 push %eax - 1002e4: 6a 0a push $0xa - 1002e6: e8 30 ff ff ff call 10021b - 1002eb: 83 c4 10 add $0x10,%esp - return cnt; - 1002ee: 8b 45 f0 mov -0x10(%ebp),%eax -} - 1002f1: c9 leave - 1002f2: c3 ret - -001002f3 : - -/* getchar - reads a single non-zero character from stdin */ -int -getchar(void) { - 1002f3: 55 push %ebp - 1002f4: 89 e5 mov %esp,%ebp - 1002f6: 83 ec 18 sub $0x18,%esp - int c; - while ((c = cons_getc()) == 0) - 1002f9: e8 d1 12 00 00 call 1015cf - 1002fe: 89 45 f4 mov %eax,-0xc(%ebp) - 100301: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) - 100305: 74 f2 je 1002f9 - /* do nothing */; - return c; - 100307: 8b 45 f4 mov -0xc(%ebp),%eax -} - 10030a: c9 leave - 10030b: c3 ret - -0010030c : - * The readline() function returns the text of the line read. If some errors - * are happened, NULL is returned. The return value is a global variable, - * thus it should be copied before it is used. - * */ -char * -readline(const char *prompt) { - 10030c: 55 push %ebp - 10030d: 89 e5 mov %esp,%ebp - 10030f: 83 ec 18 sub $0x18,%esp - if (prompt != NULL) { - 100312: 83 7d 08 00 cmpl $0x0,0x8(%ebp) - 100316: 74 13 je 10032b - cprintf("%s", prompt); - 100318: 83 ec 08 sub $0x8,%esp - 10031b: ff 75 08 pushl 0x8(%ebp) - 10031e: 68 a7 36 10 00 push $0x1036a7 - 100323: e8 40 ff ff ff call 100268 - 100328: 83 c4 10 add $0x10,%esp - } - int i = 0, c; - 10032b: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - while (1) { - c = getchar(); - 100332: e8 bc ff ff ff call 1002f3 - 100337: 89 45 f0 mov %eax,-0x10(%ebp) - if (c < 0) { - 10033a: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) - 10033e: 79 0a jns 10034a - return NULL; - 100340: b8 00 00 00 00 mov $0x0,%eax - 100345: e9 82 00 00 00 jmp 1003cc - } - else if (c >= ' ' && i < BUFSIZE - 1) { - 10034a: 83 7d f0 1f cmpl $0x1f,-0x10(%ebp) - 10034e: 7e 2b jle 10037b - 100350: 81 7d f4 fe 03 00 00 cmpl $0x3fe,-0xc(%ebp) - 100357: 7f 22 jg 10037b - cputchar(c); - 100359: 83 ec 0c sub $0xc,%esp - 10035c: ff 75 f0 pushl -0x10(%ebp) - 10035f: e8 2a ff ff ff call 10028e - 100364: 83 c4 10 add $0x10,%esp - buf[i ++] = c; - 100367: 8b 45 f4 mov -0xc(%ebp),%eax - 10036a: 8d 50 01 lea 0x1(%eax),%edx - 10036d: 89 55 f4 mov %edx,-0xc(%ebp) - 100370: 8b 55 f0 mov -0x10(%ebp),%edx - 100373: 88 90 40 ea 10 00 mov %dl,0x10ea40(%eax) - 100379: eb 4c jmp 1003c7 - } - else if (c == '\b' && i > 0) { - 10037b: 83 7d f0 08 cmpl $0x8,-0x10(%ebp) - 10037f: 75 1a jne 10039b - 100381: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) - 100385: 7e 14 jle 10039b - cputchar(c); - 100387: 83 ec 0c sub $0xc,%esp - 10038a: ff 75 f0 pushl -0x10(%ebp) - 10038d: e8 fc fe ff ff call 10028e - 100392: 83 c4 10 add $0x10,%esp - i --; - 100395: 83 6d f4 01 subl $0x1,-0xc(%ebp) - 100399: eb 2c jmp 1003c7 - } - else if (c == '\n' || c == '\r') { - 10039b: 83 7d f0 0a cmpl $0xa,-0x10(%ebp) - 10039f: 74 06 je 1003a7 - 1003a1: 83 7d f0 0d cmpl $0xd,-0x10(%ebp) - 1003a5: 75 8b jne 100332 - cputchar(c); - 1003a7: 83 ec 0c sub $0xc,%esp - 1003aa: ff 75 f0 pushl -0x10(%ebp) - 1003ad: e8 dc fe ff ff call 10028e - 1003b2: 83 c4 10 add $0x10,%esp - buf[i] = '\0'; - 1003b5: 8b 45 f4 mov -0xc(%ebp),%eax - 1003b8: 05 40 ea 10 00 add $0x10ea40,%eax - 1003bd: c6 00 00 movb $0x0,(%eax) - return buf; - 1003c0: b8 40 ea 10 00 mov $0x10ea40,%eax - 1003c5: eb 05 jmp 1003cc - } - } - 1003c7: e9 66 ff ff ff jmp 100332 -} - 1003cc: c9 leave - 1003cd: c3 ret - -001003ce <__panic>: -/* * - * __panic - __panic is called on unresolvable fatal errors. it prints - * "panic: 'message'", and then enters the kernel monitor. - * */ -void -__panic(const char *file, int line, const char *fmt, ...) { - 1003ce: 55 push %ebp - 1003cf: 89 e5 mov %esp,%ebp - 1003d1: 83 ec 18 sub $0x18,%esp - if (is_panic) { - 1003d4: a1 40 ee 10 00 mov 0x10ee40,%eax - 1003d9: 85 c0 test %eax,%eax - 1003db: 75 4a jne 100427 <__panic+0x59> - goto panic_dead; - } - is_panic = 1; - 1003dd: c7 05 40 ee 10 00 01 movl $0x1,0x10ee40 - 1003e4: 00 00 00 - - // print the 'message' - va_list ap; - va_start(ap, fmt); - 1003e7: 8d 45 14 lea 0x14(%ebp),%eax - 1003ea: 89 45 f4 mov %eax,-0xc(%ebp) - cprintf("kernel panic at %s:%d:\n ", file, line); - 1003ed: 83 ec 04 sub $0x4,%esp - 1003f0: ff 75 0c pushl 0xc(%ebp) - 1003f3: ff 75 08 pushl 0x8(%ebp) - 1003f6: 68 aa 36 10 00 push $0x1036aa - 1003fb: e8 68 fe ff ff call 100268 - 100400: 83 c4 10 add $0x10,%esp - vcprintf(fmt, ap); - 100403: 8b 45 f4 mov -0xc(%ebp),%eax - 100406: 83 ec 08 sub $0x8,%esp - 100409: 50 push %eax - 10040a: ff 75 10 pushl 0x10(%ebp) - 10040d: e8 2d fe ff ff call 10023f - 100412: 83 c4 10 add $0x10,%esp - cprintf("\n"); - 100415: 83 ec 0c sub $0xc,%esp - 100418: 68 c6 36 10 00 push $0x1036c6 - 10041d: e8 46 fe ff ff call 100268 - 100422: 83 c4 10 add $0x10,%esp - 100425: eb 01 jmp 100428 <__panic+0x5a> - * "panic: 'message'", and then enters the kernel monitor. - * */ -void -__panic(const char *file, int line, const char *fmt, ...) { - if (is_panic) { - goto panic_dead; - 100427: 90 nop - vcprintf(fmt, ap); - cprintf("\n"); - va_end(ap); - -panic_dead: - intr_disable(); - 100428: e8 c8 13 00 00 call 1017f5 - while (1) { - kmonitor(NULL); - 10042d: 83 ec 0c sub $0xc,%esp - 100430: 6a 00 push $0x0 - 100432: e8 30 08 00 00 call 100c67 - 100437: 83 c4 10 add $0x10,%esp - } - 10043a: eb f1 jmp 10042d <__panic+0x5f> - -0010043c <__warn>: -} - -/* __warn - like panic, but don't */ -void -__warn(const char *file, int line, const char *fmt, ...) { - 10043c: 55 push %ebp - 10043d: 89 e5 mov %esp,%ebp - 10043f: 83 ec 18 sub $0x18,%esp - va_list ap; - va_start(ap, fmt); - 100442: 8d 45 14 lea 0x14(%ebp),%eax - 100445: 89 45 f4 mov %eax,-0xc(%ebp) - cprintf("kernel warning at %s:%d:\n ", file, line); - 100448: 83 ec 04 sub $0x4,%esp - 10044b: ff 75 0c pushl 0xc(%ebp) - 10044e: ff 75 08 pushl 0x8(%ebp) - 100451: 68 c8 36 10 00 push $0x1036c8 - 100456: e8 0d fe ff ff call 100268 - 10045b: 83 c4 10 add $0x10,%esp - vcprintf(fmt, ap); - 10045e: 8b 45 f4 mov -0xc(%ebp),%eax - 100461: 83 ec 08 sub $0x8,%esp - 100464: 50 push %eax - 100465: ff 75 10 pushl 0x10(%ebp) - 100468: e8 d2 fd ff ff call 10023f - 10046d: 83 c4 10 add $0x10,%esp - cprintf("\n"); - 100470: 83 ec 0c sub $0xc,%esp - 100473: 68 c6 36 10 00 push $0x1036c6 - 100478: e8 eb fd ff ff call 100268 - 10047d: 83 c4 10 add $0x10,%esp - va_end(ap); -} - 100480: 90 nop - 100481: c9 leave - 100482: c3 ret - -00100483 : - -bool -is_kernel_panic(void) { - 100483: 55 push %ebp - 100484: 89 e5 mov %esp,%ebp - return is_panic; - 100486: a1 40 ee 10 00 mov 0x10ee40,%eax -} - 10048b: 5d pop %ebp - 10048c: c3 ret - -0010048d : - * stab_binsearch(stabs, &left, &right, N_SO, 0xf0100184); - * will exit setting left = 118, right = 554. - * */ -static void -stab_binsearch(const struct stab *stabs, int *region_left, int *region_right, - int type, uintptr_t addr) { - 10048d: 55 push %ebp - 10048e: 89 e5 mov %esp,%ebp - 100490: 83 ec 20 sub $0x20,%esp - int l = *region_left, r = *region_right, any_matches = 0; - 100493: 8b 45 0c mov 0xc(%ebp),%eax - 100496: 8b 00 mov (%eax),%eax - 100498: 89 45 fc mov %eax,-0x4(%ebp) - 10049b: 8b 45 10 mov 0x10(%ebp),%eax - 10049e: 8b 00 mov (%eax),%eax - 1004a0: 89 45 f8 mov %eax,-0x8(%ebp) - 1004a3: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - - while (l <= r) { - 1004aa: e9 d2 00 00 00 jmp 100581 - int true_m = (l + r) / 2, m = true_m; - 1004af: 8b 55 fc mov -0x4(%ebp),%edx - 1004b2: 8b 45 f8 mov -0x8(%ebp),%eax - 1004b5: 01 d0 add %edx,%eax - 1004b7: 89 c2 mov %eax,%edx - 1004b9: c1 ea 1f shr $0x1f,%edx - 1004bc: 01 d0 add %edx,%eax - 1004be: d1 f8 sar %eax - 1004c0: 89 45 ec mov %eax,-0x14(%ebp) - 1004c3: 8b 45 ec mov -0x14(%ebp),%eax - 1004c6: 89 45 f0 mov %eax,-0x10(%ebp) - - // search for earliest stab with right type - while (m >= l && stabs[m].n_type != type) { - 1004c9: eb 04 jmp 1004cf - m --; - 1004cb: 83 6d f0 01 subl $0x1,-0x10(%ebp) - - while (l <= r) { - int true_m = (l + r) / 2, m = true_m; - - // search for earliest stab with right type - while (m >= l && stabs[m].n_type != type) { - 1004cf: 8b 45 f0 mov -0x10(%ebp),%eax - 1004d2: 3b 45 fc cmp -0x4(%ebp),%eax - 1004d5: 7c 1f jl 1004f6 - 1004d7: 8b 55 f0 mov -0x10(%ebp),%edx - 1004da: 89 d0 mov %edx,%eax - 1004dc: 01 c0 add %eax,%eax - 1004de: 01 d0 add %edx,%eax - 1004e0: c1 e0 02 shl $0x2,%eax - 1004e3: 89 c2 mov %eax,%edx - 1004e5: 8b 45 08 mov 0x8(%ebp),%eax - 1004e8: 01 d0 add %edx,%eax - 1004ea: 0f b6 40 04 movzbl 0x4(%eax),%eax - 1004ee: 0f b6 c0 movzbl %al,%eax - 1004f1: 3b 45 14 cmp 0x14(%ebp),%eax - 1004f4: 75 d5 jne 1004cb - m --; - } - if (m < l) { // no match in [l, m] - 1004f6: 8b 45 f0 mov -0x10(%ebp),%eax - 1004f9: 3b 45 fc cmp -0x4(%ebp),%eax - 1004fc: 7d 0b jge 100509 - l = true_m + 1; - 1004fe: 8b 45 ec mov -0x14(%ebp),%eax - 100501: 83 c0 01 add $0x1,%eax - 100504: 89 45 fc mov %eax,-0x4(%ebp) - continue; - 100507: eb 78 jmp 100581 - } - - // actual binary search - any_matches = 1; - 100509: c7 45 f4 01 00 00 00 movl $0x1,-0xc(%ebp) - if (stabs[m].n_value < addr) { - 100510: 8b 55 f0 mov -0x10(%ebp),%edx - 100513: 89 d0 mov %edx,%eax - 100515: 01 c0 add %eax,%eax - 100517: 01 d0 add %edx,%eax - 100519: c1 e0 02 shl $0x2,%eax - 10051c: 89 c2 mov %eax,%edx - 10051e: 8b 45 08 mov 0x8(%ebp),%eax - 100521: 01 d0 add %edx,%eax - 100523: 8b 40 08 mov 0x8(%eax),%eax - 100526: 3b 45 18 cmp 0x18(%ebp),%eax - 100529: 73 13 jae 10053e - *region_left = m; - 10052b: 8b 45 0c mov 0xc(%ebp),%eax - 10052e: 8b 55 f0 mov -0x10(%ebp),%edx - 100531: 89 10 mov %edx,(%eax) - l = true_m + 1; - 100533: 8b 45 ec mov -0x14(%ebp),%eax - 100536: 83 c0 01 add $0x1,%eax - 100539: 89 45 fc mov %eax,-0x4(%ebp) - 10053c: eb 43 jmp 100581 - } else if (stabs[m].n_value > addr) { - 10053e: 8b 55 f0 mov -0x10(%ebp),%edx - 100541: 89 d0 mov %edx,%eax - 100543: 01 c0 add %eax,%eax - 100545: 01 d0 add %edx,%eax - 100547: c1 e0 02 shl $0x2,%eax - 10054a: 89 c2 mov %eax,%edx - 10054c: 8b 45 08 mov 0x8(%ebp),%eax - 10054f: 01 d0 add %edx,%eax - 100551: 8b 40 08 mov 0x8(%eax),%eax - 100554: 3b 45 18 cmp 0x18(%ebp),%eax - 100557: 76 16 jbe 10056f - *region_right = m - 1; - 100559: 8b 45 f0 mov -0x10(%ebp),%eax - 10055c: 8d 50 ff lea -0x1(%eax),%edx - 10055f: 8b 45 10 mov 0x10(%ebp),%eax - 100562: 89 10 mov %edx,(%eax) - r = m - 1; - 100564: 8b 45 f0 mov -0x10(%ebp),%eax - 100567: 83 e8 01 sub $0x1,%eax - 10056a: 89 45 f8 mov %eax,-0x8(%ebp) - 10056d: eb 12 jmp 100581 - } else { - // exact match for 'addr', but continue loop to find - // *region_right - *region_left = m; - 10056f: 8b 45 0c mov 0xc(%ebp),%eax - 100572: 8b 55 f0 mov -0x10(%ebp),%edx - 100575: 89 10 mov %edx,(%eax) - l = m; - 100577: 8b 45 f0 mov -0x10(%ebp),%eax - 10057a: 89 45 fc mov %eax,-0x4(%ebp) - addr ++; - 10057d: 83 45 18 01 addl $0x1,0x18(%ebp) -static void -stab_binsearch(const struct stab *stabs, int *region_left, int *region_right, - int type, uintptr_t addr) { - int l = *region_left, r = *region_right, any_matches = 0; - - while (l <= r) { - 100581: 8b 45 fc mov -0x4(%ebp),%eax - 100584: 3b 45 f8 cmp -0x8(%ebp),%eax - 100587: 0f 8e 22 ff ff ff jle 1004af - l = m; - addr ++; - } - } - - if (!any_matches) { - 10058d: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) - 100591: 75 0f jne 1005a2 - *region_right = *region_left - 1; - 100593: 8b 45 0c mov 0xc(%ebp),%eax - 100596: 8b 00 mov (%eax),%eax - 100598: 8d 50 ff lea -0x1(%eax),%edx - 10059b: 8b 45 10 mov 0x10(%ebp),%eax - 10059e: 89 10 mov %edx,(%eax) - l = *region_right; - for (; l > *region_left && stabs[l].n_type != type; l --) - /* do nothing */; - *region_left = l; - } -} - 1005a0: eb 3f jmp 1005e1 - if (!any_matches) { - *region_right = *region_left - 1; - } - else { - // find rightmost region containing 'addr' - l = *region_right; - 1005a2: 8b 45 10 mov 0x10(%ebp),%eax - 1005a5: 8b 00 mov (%eax),%eax - 1005a7: 89 45 fc mov %eax,-0x4(%ebp) - for (; l > *region_left && stabs[l].n_type != type; l --) - 1005aa: eb 04 jmp 1005b0 - 1005ac: 83 6d fc 01 subl $0x1,-0x4(%ebp) - 1005b0: 8b 45 0c mov 0xc(%ebp),%eax - 1005b3: 8b 00 mov (%eax),%eax - 1005b5: 3b 45 fc cmp -0x4(%ebp),%eax - 1005b8: 7d 1f jge 1005d9 - 1005ba: 8b 55 fc mov -0x4(%ebp),%edx - 1005bd: 89 d0 mov %edx,%eax - 1005bf: 01 c0 add %eax,%eax - 1005c1: 01 d0 add %edx,%eax - 1005c3: c1 e0 02 shl $0x2,%eax - 1005c6: 89 c2 mov %eax,%edx - 1005c8: 8b 45 08 mov 0x8(%ebp),%eax - 1005cb: 01 d0 add %edx,%eax - 1005cd: 0f b6 40 04 movzbl 0x4(%eax),%eax - 1005d1: 0f b6 c0 movzbl %al,%eax - 1005d4: 3b 45 14 cmp 0x14(%ebp),%eax - 1005d7: 75 d3 jne 1005ac - /* do nothing */; - *region_left = l; - 1005d9: 8b 45 0c mov 0xc(%ebp),%eax - 1005dc: 8b 55 fc mov -0x4(%ebp),%edx - 1005df: 89 10 mov %edx,(%eax) - } -} - 1005e1: 90 nop - 1005e2: c9 leave - 1005e3: c3 ret - -001005e4 : - * the specified instruction address, @addr. Returns 0 if information - * was found, and negative if not. But even if it returns negative it - * has stored some information into '*info'. - * */ -int -debuginfo_eip(uintptr_t addr, struct eipdebuginfo *info) { - 1005e4: 55 push %ebp - 1005e5: 89 e5 mov %esp,%ebp - 1005e7: 83 ec 38 sub $0x38,%esp - const struct stab *stabs, *stab_end; - const char *stabstr, *stabstr_end; - - info->eip_file = ""; - 1005ea: 8b 45 0c mov 0xc(%ebp),%eax - 1005ed: c7 00 e8 36 10 00 movl $0x1036e8,(%eax) - info->eip_line = 0; - 1005f3: 8b 45 0c mov 0xc(%ebp),%eax - 1005f6: c7 40 04 00 00 00 00 movl $0x0,0x4(%eax) - info->eip_fn_name = ""; - 1005fd: 8b 45 0c mov 0xc(%ebp),%eax - 100600: c7 40 08 e8 36 10 00 movl $0x1036e8,0x8(%eax) - info->eip_fn_namelen = 9; - 100607: 8b 45 0c mov 0xc(%ebp),%eax - 10060a: c7 40 0c 09 00 00 00 movl $0x9,0xc(%eax) - info->eip_fn_addr = addr; - 100611: 8b 45 0c mov 0xc(%ebp),%eax - 100614: 8b 55 08 mov 0x8(%ebp),%edx - 100617: 89 50 10 mov %edx,0x10(%eax) - info->eip_fn_narg = 0; - 10061a: 8b 45 0c mov 0xc(%ebp),%eax - 10061d: c7 40 14 00 00 00 00 movl $0x0,0x14(%eax) - - stabs = __STAB_BEGIN__; - 100624: c7 45 f4 4c 3f 10 00 movl $0x103f4c,-0xc(%ebp) - stab_end = __STAB_END__; - 10062b: c7 45 f0 28 ba 10 00 movl $0x10ba28,-0x10(%ebp) - stabstr = __STABSTR_BEGIN__; - 100632: c7 45 ec 29 ba 10 00 movl $0x10ba29,-0x14(%ebp) - stabstr_end = __STABSTR_END__; - 100639: c7 45 e8 83 da 10 00 movl $0x10da83,-0x18(%ebp) - - // String table validity checks - if (stabstr_end <= stabstr || stabstr_end[-1] != 0) { - 100640: 8b 45 e8 mov -0x18(%ebp),%eax - 100643: 3b 45 ec cmp -0x14(%ebp),%eax - 100646: 76 0d jbe 100655 - 100648: 8b 45 e8 mov -0x18(%ebp),%eax - 10064b: 83 e8 01 sub $0x1,%eax - 10064e: 0f b6 00 movzbl (%eax),%eax - 100651: 84 c0 test %al,%al - 100653: 74 0a je 10065f - return -1; - 100655: b8 ff ff ff ff mov $0xffffffff,%eax - 10065a: e9 91 02 00 00 jmp 1008f0 - // 'eip'. First, we find the basic source file containing 'eip'. - // Then, we look in that source file for the function. Then we look - // for the line number. - - // Search the entire set of stabs for the source file (type N_SO). - int lfile = 0, rfile = (stab_end - stabs) - 1; - 10065f: c7 45 e4 00 00 00 00 movl $0x0,-0x1c(%ebp) - 100666: 8b 55 f0 mov -0x10(%ebp),%edx - 100669: 8b 45 f4 mov -0xc(%ebp),%eax - 10066c: 29 c2 sub %eax,%edx - 10066e: 89 d0 mov %edx,%eax - 100670: c1 f8 02 sar $0x2,%eax - 100673: 69 c0 ab aa aa aa imul $0xaaaaaaab,%eax,%eax - 100679: 83 e8 01 sub $0x1,%eax - 10067c: 89 45 e0 mov %eax,-0x20(%ebp) - stab_binsearch(stabs, &lfile, &rfile, N_SO, addr); - 10067f: ff 75 08 pushl 0x8(%ebp) - 100682: 6a 64 push $0x64 - 100684: 8d 45 e0 lea -0x20(%ebp),%eax - 100687: 50 push %eax - 100688: 8d 45 e4 lea -0x1c(%ebp),%eax - 10068b: 50 push %eax - 10068c: ff 75 f4 pushl -0xc(%ebp) - 10068f: e8 f9 fd ff ff call 10048d - 100694: 83 c4 14 add $0x14,%esp - if (lfile == 0) - 100697: 8b 45 e4 mov -0x1c(%ebp),%eax - 10069a: 85 c0 test %eax,%eax - 10069c: 75 0a jne 1006a8 - return -1; - 10069e: b8 ff ff ff ff mov $0xffffffff,%eax - 1006a3: e9 48 02 00 00 jmp 1008f0 - - // Search within that file's stabs for the function definition - // (N_FUN). - int lfun = lfile, rfun = rfile; - 1006a8: 8b 45 e4 mov -0x1c(%ebp),%eax - 1006ab: 89 45 dc mov %eax,-0x24(%ebp) - 1006ae: 8b 45 e0 mov -0x20(%ebp),%eax - 1006b1: 89 45 d8 mov %eax,-0x28(%ebp) - int lline, rline; - stab_binsearch(stabs, &lfun, &rfun, N_FUN, addr); - 1006b4: ff 75 08 pushl 0x8(%ebp) - 1006b7: 6a 24 push $0x24 - 1006b9: 8d 45 d8 lea -0x28(%ebp),%eax - 1006bc: 50 push %eax - 1006bd: 8d 45 dc lea -0x24(%ebp),%eax - 1006c0: 50 push %eax - 1006c1: ff 75 f4 pushl -0xc(%ebp) - 1006c4: e8 c4 fd ff ff call 10048d - 1006c9: 83 c4 14 add $0x14,%esp - - if (lfun <= rfun) { - 1006cc: 8b 55 dc mov -0x24(%ebp),%edx - 1006cf: 8b 45 d8 mov -0x28(%ebp),%eax - 1006d2: 39 c2 cmp %eax,%edx - 1006d4: 7f 7c jg 100752 - // stabs[lfun] points to the function name - // in the string table, but check bounds just in case. - if (stabs[lfun].n_strx < stabstr_end - stabstr) { - 1006d6: 8b 45 dc mov -0x24(%ebp),%eax - 1006d9: 89 c2 mov %eax,%edx - 1006db: 89 d0 mov %edx,%eax - 1006dd: 01 c0 add %eax,%eax - 1006df: 01 d0 add %edx,%eax - 1006e1: c1 e0 02 shl $0x2,%eax - 1006e4: 89 c2 mov %eax,%edx - 1006e6: 8b 45 f4 mov -0xc(%ebp),%eax - 1006e9: 01 d0 add %edx,%eax - 1006eb: 8b 00 mov (%eax),%eax - 1006ed: 8b 4d e8 mov -0x18(%ebp),%ecx - 1006f0: 8b 55 ec mov -0x14(%ebp),%edx - 1006f3: 29 d1 sub %edx,%ecx - 1006f5: 89 ca mov %ecx,%edx - 1006f7: 39 d0 cmp %edx,%eax - 1006f9: 73 22 jae 10071d - info->eip_fn_name = stabstr + stabs[lfun].n_strx; - 1006fb: 8b 45 dc mov -0x24(%ebp),%eax - 1006fe: 89 c2 mov %eax,%edx - 100700: 89 d0 mov %edx,%eax - 100702: 01 c0 add %eax,%eax - 100704: 01 d0 add %edx,%eax - 100706: c1 e0 02 shl $0x2,%eax - 100709: 89 c2 mov %eax,%edx - 10070b: 8b 45 f4 mov -0xc(%ebp),%eax - 10070e: 01 d0 add %edx,%eax - 100710: 8b 10 mov (%eax),%edx - 100712: 8b 45 ec mov -0x14(%ebp),%eax - 100715: 01 c2 add %eax,%edx - 100717: 8b 45 0c mov 0xc(%ebp),%eax - 10071a: 89 50 08 mov %edx,0x8(%eax) - } - info->eip_fn_addr = stabs[lfun].n_value; - 10071d: 8b 45 dc mov -0x24(%ebp),%eax - 100720: 89 c2 mov %eax,%edx - 100722: 89 d0 mov %edx,%eax - 100724: 01 c0 add %eax,%eax - 100726: 01 d0 add %edx,%eax - 100728: c1 e0 02 shl $0x2,%eax - 10072b: 89 c2 mov %eax,%edx - 10072d: 8b 45 f4 mov -0xc(%ebp),%eax - 100730: 01 d0 add %edx,%eax - 100732: 8b 50 08 mov 0x8(%eax),%edx - 100735: 8b 45 0c mov 0xc(%ebp),%eax - 100738: 89 50 10 mov %edx,0x10(%eax) - addr -= info->eip_fn_addr; - 10073b: 8b 45 0c mov 0xc(%ebp),%eax - 10073e: 8b 40 10 mov 0x10(%eax),%eax - 100741: 29 45 08 sub %eax,0x8(%ebp) - // Search within the function definition for the line number. - lline = lfun; - 100744: 8b 45 dc mov -0x24(%ebp),%eax - 100747: 89 45 d4 mov %eax,-0x2c(%ebp) - rline = rfun; - 10074a: 8b 45 d8 mov -0x28(%ebp),%eax - 10074d: 89 45 d0 mov %eax,-0x30(%ebp) - 100750: eb 15 jmp 100767 - } else { - // Couldn't find function stab! Maybe we're in an assembly - // file. Search the whole file for the line number. - info->eip_fn_addr = addr; - 100752: 8b 45 0c mov 0xc(%ebp),%eax - 100755: 8b 55 08 mov 0x8(%ebp),%edx - 100758: 89 50 10 mov %edx,0x10(%eax) - lline = lfile; - 10075b: 8b 45 e4 mov -0x1c(%ebp),%eax - 10075e: 89 45 d4 mov %eax,-0x2c(%ebp) - rline = rfile; - 100761: 8b 45 e0 mov -0x20(%ebp),%eax - 100764: 89 45 d0 mov %eax,-0x30(%ebp) - } - info->eip_fn_namelen = strfind(info->eip_fn_name, ':') - info->eip_fn_name; - 100767: 8b 45 0c mov 0xc(%ebp),%eax - 10076a: 8b 40 08 mov 0x8(%eax),%eax - 10076d: 83 ec 08 sub $0x8,%esp - 100770: 6a 3a push $0x3a - 100772: 50 push %eax - 100773: e8 61 25 00 00 call 102cd9 - 100778: 83 c4 10 add $0x10,%esp - 10077b: 89 c2 mov %eax,%edx - 10077d: 8b 45 0c mov 0xc(%ebp),%eax - 100780: 8b 40 08 mov 0x8(%eax),%eax - 100783: 29 c2 sub %eax,%edx - 100785: 8b 45 0c mov 0xc(%ebp),%eax - 100788: 89 50 0c mov %edx,0xc(%eax) - - // Search within [lline, rline] for the line number stab. - // If found, set info->eip_line to the right line number. - // If not found, return -1. - stab_binsearch(stabs, &lline, &rline, N_SLINE, addr); - 10078b: 83 ec 0c sub $0xc,%esp - 10078e: ff 75 08 pushl 0x8(%ebp) - 100791: 6a 44 push $0x44 - 100793: 8d 45 d0 lea -0x30(%ebp),%eax - 100796: 50 push %eax - 100797: 8d 45 d4 lea -0x2c(%ebp),%eax - 10079a: 50 push %eax - 10079b: ff 75 f4 pushl -0xc(%ebp) - 10079e: e8 ea fc ff ff call 10048d - 1007a3: 83 c4 20 add $0x20,%esp - if (lline <= rline) { - 1007a6: 8b 55 d4 mov -0x2c(%ebp),%edx - 1007a9: 8b 45 d0 mov -0x30(%ebp),%eax - 1007ac: 39 c2 cmp %eax,%edx - 1007ae: 7f 24 jg 1007d4 - info->eip_line = stabs[rline].n_desc; - 1007b0: 8b 45 d0 mov -0x30(%ebp),%eax - 1007b3: 89 c2 mov %eax,%edx - 1007b5: 89 d0 mov %edx,%eax - 1007b7: 01 c0 add %eax,%eax - 1007b9: 01 d0 add %edx,%eax - 1007bb: c1 e0 02 shl $0x2,%eax - 1007be: 89 c2 mov %eax,%edx - 1007c0: 8b 45 f4 mov -0xc(%ebp),%eax - 1007c3: 01 d0 add %edx,%eax - 1007c5: 0f b7 40 06 movzwl 0x6(%eax),%eax - 1007c9: 0f b7 d0 movzwl %ax,%edx - 1007cc: 8b 45 0c mov 0xc(%ebp),%eax - 1007cf: 89 50 04 mov %edx,0x4(%eax) - - // Search backwards from the line number for the relevant filename stab. - // We can't just use the "lfile" stab because inlined functions - // can interpolate code from a different file! - // Such included source files use the N_SOL stab type. - while (lline >= lfile - 1007d2: eb 13 jmp 1007e7 - // If not found, return -1. - stab_binsearch(stabs, &lline, &rline, N_SLINE, addr); - if (lline <= rline) { - info->eip_line = stabs[rline].n_desc; - } else { - return -1; - 1007d4: b8 ff ff ff ff mov $0xffffffff,%eax - 1007d9: e9 12 01 00 00 jmp 1008f0 - // can interpolate code from a different file! - // Such included source files use the N_SOL stab type. - while (lline >= lfile - && stabs[lline].n_type != N_SOL - && (stabs[lline].n_type != N_SO || !stabs[lline].n_value)) { - lline --; - 1007de: 8b 45 d4 mov -0x2c(%ebp),%eax - 1007e1: 83 e8 01 sub $0x1,%eax - 1007e4: 89 45 d4 mov %eax,-0x2c(%ebp) - - // Search backwards from the line number for the relevant filename stab. - // We can't just use the "lfile" stab because inlined functions - // can interpolate code from a different file! - // Such included source files use the N_SOL stab type. - while (lline >= lfile - 1007e7: 8b 55 d4 mov -0x2c(%ebp),%edx - 1007ea: 8b 45 e4 mov -0x1c(%ebp),%eax - 1007ed: 39 c2 cmp %eax,%edx - 1007ef: 7c 56 jl 100847 - && stabs[lline].n_type != N_SOL - 1007f1: 8b 45 d4 mov -0x2c(%ebp),%eax - 1007f4: 89 c2 mov %eax,%edx - 1007f6: 89 d0 mov %edx,%eax - 1007f8: 01 c0 add %eax,%eax - 1007fa: 01 d0 add %edx,%eax - 1007fc: c1 e0 02 shl $0x2,%eax - 1007ff: 89 c2 mov %eax,%edx - 100801: 8b 45 f4 mov -0xc(%ebp),%eax - 100804: 01 d0 add %edx,%eax - 100806: 0f b6 40 04 movzbl 0x4(%eax),%eax - 10080a: 3c 84 cmp $0x84,%al - 10080c: 74 39 je 100847 - && (stabs[lline].n_type != N_SO || !stabs[lline].n_value)) { - 10080e: 8b 45 d4 mov -0x2c(%ebp),%eax - 100811: 89 c2 mov %eax,%edx - 100813: 89 d0 mov %edx,%eax - 100815: 01 c0 add %eax,%eax - 100817: 01 d0 add %edx,%eax - 100819: c1 e0 02 shl $0x2,%eax - 10081c: 89 c2 mov %eax,%edx - 10081e: 8b 45 f4 mov -0xc(%ebp),%eax - 100821: 01 d0 add %edx,%eax - 100823: 0f b6 40 04 movzbl 0x4(%eax),%eax - 100827: 3c 64 cmp $0x64,%al - 100829: 75 b3 jne 1007de - 10082b: 8b 45 d4 mov -0x2c(%ebp),%eax - 10082e: 89 c2 mov %eax,%edx - 100830: 89 d0 mov %edx,%eax - 100832: 01 c0 add %eax,%eax - 100834: 01 d0 add %edx,%eax - 100836: c1 e0 02 shl $0x2,%eax - 100839: 89 c2 mov %eax,%edx - 10083b: 8b 45 f4 mov -0xc(%ebp),%eax - 10083e: 01 d0 add %edx,%eax - 100840: 8b 40 08 mov 0x8(%eax),%eax - 100843: 85 c0 test %eax,%eax - 100845: 74 97 je 1007de - lline --; - } - if (lline >= lfile && stabs[lline].n_strx < stabstr_end - stabstr) { - 100847: 8b 55 d4 mov -0x2c(%ebp),%edx - 10084a: 8b 45 e4 mov -0x1c(%ebp),%eax - 10084d: 39 c2 cmp %eax,%edx - 10084f: 7c 46 jl 100897 - 100851: 8b 45 d4 mov -0x2c(%ebp),%eax - 100854: 89 c2 mov %eax,%edx - 100856: 89 d0 mov %edx,%eax - 100858: 01 c0 add %eax,%eax - 10085a: 01 d0 add %edx,%eax - 10085c: c1 e0 02 shl $0x2,%eax - 10085f: 89 c2 mov %eax,%edx - 100861: 8b 45 f4 mov -0xc(%ebp),%eax - 100864: 01 d0 add %edx,%eax - 100866: 8b 00 mov (%eax),%eax - 100868: 8b 4d e8 mov -0x18(%ebp),%ecx - 10086b: 8b 55 ec mov -0x14(%ebp),%edx - 10086e: 29 d1 sub %edx,%ecx - 100870: 89 ca mov %ecx,%edx - 100872: 39 d0 cmp %edx,%eax - 100874: 73 21 jae 100897 - info->eip_file = stabstr + stabs[lline].n_strx; - 100876: 8b 45 d4 mov -0x2c(%ebp),%eax - 100879: 89 c2 mov %eax,%edx - 10087b: 89 d0 mov %edx,%eax - 10087d: 01 c0 add %eax,%eax - 10087f: 01 d0 add %edx,%eax - 100881: c1 e0 02 shl $0x2,%eax - 100884: 89 c2 mov %eax,%edx - 100886: 8b 45 f4 mov -0xc(%ebp),%eax - 100889: 01 d0 add %edx,%eax - 10088b: 8b 10 mov (%eax),%edx - 10088d: 8b 45 ec mov -0x14(%ebp),%eax - 100890: 01 c2 add %eax,%edx - 100892: 8b 45 0c mov 0xc(%ebp),%eax - 100895: 89 10 mov %edx,(%eax) - } - - // Set eip_fn_narg to the number of arguments taken by the function, - // or 0 if there was no containing function. - if (lfun < rfun) { - 100897: 8b 55 dc mov -0x24(%ebp),%edx - 10089a: 8b 45 d8 mov -0x28(%ebp),%eax - 10089d: 39 c2 cmp %eax,%edx - 10089f: 7d 4a jge 1008eb - for (lline = lfun + 1; - 1008a1: 8b 45 dc mov -0x24(%ebp),%eax - 1008a4: 83 c0 01 add $0x1,%eax - 1008a7: 89 45 d4 mov %eax,-0x2c(%ebp) - 1008aa: eb 18 jmp 1008c4 - lline < rfun && stabs[lline].n_type == N_PSYM; - lline ++) { - info->eip_fn_narg ++; - 1008ac: 8b 45 0c mov 0xc(%ebp),%eax - 1008af: 8b 40 14 mov 0x14(%eax),%eax - 1008b2: 8d 50 01 lea 0x1(%eax),%edx - 1008b5: 8b 45 0c mov 0xc(%ebp),%eax - 1008b8: 89 50 14 mov %edx,0x14(%eax) - // Set eip_fn_narg to the number of arguments taken by the function, - // or 0 if there was no containing function. - if (lfun < rfun) { - for (lline = lfun + 1; - lline < rfun && stabs[lline].n_type == N_PSYM; - lline ++) { - 1008bb: 8b 45 d4 mov -0x2c(%ebp),%eax - 1008be: 83 c0 01 add $0x1,%eax - 1008c1: 89 45 d4 mov %eax,-0x2c(%ebp) - - // Set eip_fn_narg to the number of arguments taken by the function, - // or 0 if there was no containing function. - if (lfun < rfun) { - for (lline = lfun + 1; - lline < rfun && stabs[lline].n_type == N_PSYM; - 1008c4: 8b 55 d4 mov -0x2c(%ebp),%edx - 1008c7: 8b 45 d8 mov -0x28(%ebp),%eax - } - - // Set eip_fn_narg to the number of arguments taken by the function, - // or 0 if there was no containing function. - if (lfun < rfun) { - for (lline = lfun + 1; - 1008ca: 39 c2 cmp %eax,%edx - 1008cc: 7d 1d jge 1008eb - lline < rfun && stabs[lline].n_type == N_PSYM; - 1008ce: 8b 45 d4 mov -0x2c(%ebp),%eax - 1008d1: 89 c2 mov %eax,%edx - 1008d3: 89 d0 mov %edx,%eax - 1008d5: 01 c0 add %eax,%eax - 1008d7: 01 d0 add %edx,%eax - 1008d9: c1 e0 02 shl $0x2,%eax - 1008dc: 89 c2 mov %eax,%edx - 1008de: 8b 45 f4 mov -0xc(%ebp),%eax - 1008e1: 01 d0 add %edx,%eax - 1008e3: 0f b6 40 04 movzbl 0x4(%eax),%eax - 1008e7: 3c a0 cmp $0xa0,%al - 1008e9: 74 c1 je 1008ac - lline ++) { - info->eip_fn_narg ++; - } - } - return 0; - 1008eb: b8 00 00 00 00 mov $0x0,%eax -} - 1008f0: c9 leave - 1008f1: c3 ret - -001008f2 : - * print_kerninfo - print the information about kernel, including the location - * of kernel entry, the start addresses of data and text segements, the start - * address of free memory and how many memory that kernel has used. - * */ -void -print_kerninfo(void) { - 1008f2: 55 push %ebp - 1008f3: 89 e5 mov %esp,%ebp - 1008f5: 83 ec 08 sub $0x8,%esp - extern char etext[], edata[], end[], kern_init[]; - cprintf("Special kernel symbols:\n"); - 1008f8: 83 ec 0c sub $0xc,%esp - 1008fb: 68 f2 36 10 00 push $0x1036f2 - 100900: e8 63 f9 ff ff call 100268 - 100905: 83 c4 10 add $0x10,%esp - cprintf(" entry 0x%08x (phys)\n", kern_init); - 100908: 83 ec 08 sub $0x8,%esp - 10090b: 68 00 00 10 00 push $0x100000 - 100910: 68 0b 37 10 00 push $0x10370b - 100915: e8 4e f9 ff ff call 100268 - 10091a: 83 c4 10 add $0x10,%esp - cprintf(" etext 0x%08x (phys)\n", etext); - 10091d: 83 ec 08 sub $0x8,%esp - 100920: 68 fc 35 10 00 push $0x1035fc - 100925: 68 23 37 10 00 push $0x103723 - 10092a: e8 39 f9 ff ff call 100268 - 10092f: 83 c4 10 add $0x10,%esp - cprintf(" edata 0x%08x (phys)\n", edata); - 100932: 83 ec 08 sub $0x8,%esp - 100935: 68 16 ea 10 00 push $0x10ea16 - 10093a: 68 3b 37 10 00 push $0x10373b - 10093f: e8 24 f9 ff ff call 100268 - 100944: 83 c4 10 add $0x10,%esp - cprintf(" end 0x%08x (phys)\n", end); - 100947: 83 ec 08 sub $0x8,%esp - 10094a: 68 40 fd 10 00 push $0x10fd40 - 10094f: 68 53 37 10 00 push $0x103753 - 100954: e8 0f f9 ff ff call 100268 - 100959: 83 c4 10 add $0x10,%esp - cprintf("Kernel executable memory footprint: %dKB\n", (end - kern_init + 1023)/1024); - 10095c: b8 40 fd 10 00 mov $0x10fd40,%eax - 100961: 05 ff 03 00 00 add $0x3ff,%eax - 100966: ba 00 00 10 00 mov $0x100000,%edx - 10096b: 29 d0 sub %edx,%eax - 10096d: 8d 90 ff 03 00 00 lea 0x3ff(%eax),%edx - 100973: 85 c0 test %eax,%eax - 100975: 0f 48 c2 cmovs %edx,%eax - 100978: c1 f8 0a sar $0xa,%eax - 10097b: 83 ec 08 sub $0x8,%esp - 10097e: 50 push %eax - 10097f: 68 6c 37 10 00 push $0x10376c - 100984: e8 df f8 ff ff call 100268 - 100989: 83 c4 10 add $0x10,%esp -} - 10098c: 90 nop - 10098d: c9 leave - 10098e: c3 ret - -0010098f : -/* * - * print_debuginfo - read and print the stat information for the address @eip, - * and info.eip_fn_addr should be the first address of the related function. - * */ -void -print_debuginfo(uintptr_t eip) { - 10098f: 55 push %ebp - 100990: 89 e5 mov %esp,%ebp - 100992: 81 ec 28 01 00 00 sub $0x128,%esp - struct eipdebuginfo info; - if (debuginfo_eip(eip, &info) != 0) { - 100998: 83 ec 08 sub $0x8,%esp - 10099b: 8d 45 dc lea -0x24(%ebp),%eax - 10099e: 50 push %eax - 10099f: ff 75 08 pushl 0x8(%ebp) - 1009a2: e8 3d fc ff ff call 1005e4 - 1009a7: 83 c4 10 add $0x10,%esp - 1009aa: 85 c0 test %eax,%eax - 1009ac: 74 15 je 1009c3 - cprintf(" : -- 0x%08x --\n", eip); - 1009ae: 83 ec 08 sub $0x8,%esp - 1009b1: ff 75 08 pushl 0x8(%ebp) - 1009b4: 68 96 37 10 00 push $0x103796 - 1009b9: e8 aa f8 ff ff call 100268 - 1009be: 83 c4 10 add $0x10,%esp - } - fnname[j] = '\0'; - cprintf(" %s:%d: %s+%d\n", info.eip_file, info.eip_line, - fnname, eip - info.eip_fn_addr); - } -} - 1009c1: eb 65 jmp 100a28 - cprintf(" : -- 0x%08x --\n", eip); - } - else { - char fnname[256]; - int j; - for (j = 0; j < info.eip_fn_namelen; j ++) { - 1009c3: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - 1009ca: eb 1c jmp 1009e8 - fnname[j] = info.eip_fn_name[j]; - 1009cc: 8b 55 e4 mov -0x1c(%ebp),%edx - 1009cf: 8b 45 f4 mov -0xc(%ebp),%eax - 1009d2: 01 d0 add %edx,%eax - 1009d4: 0f b6 00 movzbl (%eax),%eax - 1009d7: 8d 8d dc fe ff ff lea -0x124(%ebp),%ecx - 1009dd: 8b 55 f4 mov -0xc(%ebp),%edx - 1009e0: 01 ca add %ecx,%edx - 1009e2: 88 02 mov %al,(%edx) - cprintf(" : -- 0x%08x --\n", eip); - } - else { - char fnname[256]; - int j; - for (j = 0; j < info.eip_fn_namelen; j ++) { - 1009e4: 83 45 f4 01 addl $0x1,-0xc(%ebp) - 1009e8: 8b 45 e8 mov -0x18(%ebp),%eax - 1009eb: 3b 45 f4 cmp -0xc(%ebp),%eax - 1009ee: 7f dc jg 1009cc - fnname[j] = info.eip_fn_name[j]; - } - fnname[j] = '\0'; - 1009f0: 8d 95 dc fe ff ff lea -0x124(%ebp),%edx - 1009f6: 8b 45 f4 mov -0xc(%ebp),%eax - 1009f9: 01 d0 add %edx,%eax - 1009fb: c6 00 00 movb $0x0,(%eax) - cprintf(" %s:%d: %s+%d\n", info.eip_file, info.eip_line, - fnname, eip - info.eip_fn_addr); - 1009fe: 8b 45 ec mov -0x14(%ebp),%eax - int j; - for (j = 0; j < info.eip_fn_namelen; j ++) { - fnname[j] = info.eip_fn_name[j]; - } - fnname[j] = '\0'; - cprintf(" %s:%d: %s+%d\n", info.eip_file, info.eip_line, - 100a01: 8b 55 08 mov 0x8(%ebp),%edx - 100a04: 89 d1 mov %edx,%ecx - 100a06: 29 c1 sub %eax,%ecx - 100a08: 8b 55 e0 mov -0x20(%ebp),%edx - 100a0b: 8b 45 dc mov -0x24(%ebp),%eax - 100a0e: 83 ec 0c sub $0xc,%esp - 100a11: 51 push %ecx - 100a12: 8d 8d dc fe ff ff lea -0x124(%ebp),%ecx - 100a18: 51 push %ecx - 100a19: 52 push %edx - 100a1a: 50 push %eax - 100a1b: 68 b2 37 10 00 push $0x1037b2 - 100a20: e8 43 f8 ff ff call 100268 - 100a25: 83 c4 20 add $0x20,%esp - fnname, eip - info.eip_fn_addr); - } -} - 100a28: 90 nop - 100a29: c9 leave - 100a2a: c3 ret - -00100a2b : - -static __noinline uint32_t -read_eip(void) { - 100a2b: 55 push %ebp - 100a2c: 89 e5 mov %esp,%ebp - 100a2e: 83 ec 10 sub $0x10,%esp - uint32_t eip; - asm volatile("movl 4(%%ebp), %0" : "=r" (eip)); - 100a31: 8b 45 04 mov 0x4(%ebp),%eax - 100a34: 89 45 fc mov %eax,-0x4(%ebp) - return eip; - 100a37: 8b 45 fc mov -0x4(%ebp),%eax -} - 100a3a: c9 leave - 100a3b: c3 ret - -00100a3c : - * - * Note that, the length of ebp-chain is limited. In boot/bootasm.S, before jumping - * to the kernel entry, the value of ebp has been set to zero, that's the boundary. - * */ -void -print_stackframe(void) { - 100a3c: 55 push %ebp - 100a3d: 89 e5 mov %esp,%ebp - 100a3f: 83 ec 28 sub $0x28,%esp -} - -static inline uint32_t -read_ebp(void) { - uint32_t ebp; - asm volatile ("movl %%ebp, %0" : "=r" (ebp)); - 100a42: 89 e8 mov %ebp,%eax - 100a44: 89 45 e4 mov %eax,-0x1c(%ebp) - return ebp; - 100a47: 8b 45 e4 mov -0x1c(%ebp),%eax - * (3.4) call print_debuginfo(eip-1) to print the C calling function name and line number, etc. - * (3.5) popup a calling stackframe - * NOTICE: the calling funciton's return addr eip = ss:[ebp+4] - * the calling funciton's ebp = ss:[ebp] - */ - uint32_t current_ebp = read_ebp(); - 100a4a: 89 45 f4 mov %eax,-0xc(%ebp) - uint32_t current_eip = read_eip(); - 100a4d: e8 d9 ff ff ff call 100a2b - 100a52: 89 45 f0 mov %eax,-0x10(%ebp) - for (int i = 0; i < STACKFRAME_DEPTH && current_ebp != 0; ++ i) { - 100a55: c7 45 ec 00 00 00 00 movl $0x0,-0x14(%ebp) - 100a5c: e9 87 00 00 00 jmp 100ae8 - cprintf("ebp:0x%08x eip:0x%08x args:", current_ebp, current_eip); - 100a61: 83 ec 04 sub $0x4,%esp - 100a64: ff 75 f0 pushl -0x10(%ebp) - 100a67: ff 75 f4 pushl -0xc(%ebp) - 100a6a: 68 c4 37 10 00 push $0x1037c4 - 100a6f: e8 f4 f7 ff ff call 100268 - 100a74: 83 c4 10 add $0x10,%esp - for (int argi = 0; argi < 4; ++ argi) { - 100a77: c7 45 e8 00 00 00 00 movl $0x0,-0x18(%ebp) - 100a7e: eb 29 jmp 100aa9 - cprintf("0x%08x ", *((uint32_t*) current_ebp + 2 + argi)); - 100a80: 8b 45 e8 mov -0x18(%ebp),%eax - 100a83: 8d 14 85 00 00 00 00 lea 0x0(,%eax,4),%edx - 100a8a: 8b 45 f4 mov -0xc(%ebp),%eax - 100a8d: 01 d0 add %edx,%eax - 100a8f: 83 c0 08 add $0x8,%eax - 100a92: 8b 00 mov (%eax),%eax - 100a94: 83 ec 08 sub $0x8,%esp - 100a97: 50 push %eax - 100a98: 68 e0 37 10 00 push $0x1037e0 - 100a9d: e8 c6 f7 ff ff call 100268 - 100aa2: 83 c4 10 add $0x10,%esp - */ - uint32_t current_ebp = read_ebp(); - uint32_t current_eip = read_eip(); - for (int i = 0; i < STACKFRAME_DEPTH && current_ebp != 0; ++ i) { - cprintf("ebp:0x%08x eip:0x%08x args:", current_ebp, current_eip); - for (int argi = 0; argi < 4; ++ argi) { - 100aa5: 83 45 e8 01 addl $0x1,-0x18(%ebp) - 100aa9: 83 7d e8 03 cmpl $0x3,-0x18(%ebp) - 100aad: 7e d1 jle 100a80 - cprintf("0x%08x ", *((uint32_t*) current_ebp + 2 + argi)); - } - cprintf("\n"); - 100aaf: 83 ec 0c sub $0xc,%esp - 100ab2: 68 e8 37 10 00 push $0x1037e8 - 100ab7: e8 ac f7 ff ff call 100268 - 100abc: 83 c4 10 add $0x10,%esp - print_debuginfo(current_eip - 1); - 100abf: 8b 45 f0 mov -0x10(%ebp),%eax - 100ac2: 83 e8 01 sub $0x1,%eax - 100ac5: 83 ec 0c sub $0xc,%esp - 100ac8: 50 push %eax - 100ac9: e8 c1 fe ff ff call 10098f - 100ace: 83 c4 10 add $0x10,%esp - current_eip = *((uint32_t*)current_ebp + 1); - 100ad1: 8b 45 f4 mov -0xc(%ebp),%eax - 100ad4: 83 c0 04 add $0x4,%eax - 100ad7: 8b 00 mov (%eax),%eax - 100ad9: 89 45 f0 mov %eax,-0x10(%ebp) - current_ebp = *((uint32_t*)current_ebp); - 100adc: 8b 45 f4 mov -0xc(%ebp),%eax - 100adf: 8b 00 mov (%eax),%eax - 100ae1: 89 45 f4 mov %eax,-0xc(%ebp) - * NOTICE: the calling funciton's return addr eip = ss:[ebp+4] - * the calling funciton's ebp = ss:[ebp] - */ - uint32_t current_ebp = read_ebp(); - uint32_t current_eip = read_eip(); - for (int i = 0; i < STACKFRAME_DEPTH && current_ebp != 0; ++ i) { - 100ae4: 83 45 ec 01 addl $0x1,-0x14(%ebp) - 100ae8: 83 7d ec 13 cmpl $0x13,-0x14(%ebp) - 100aec: 7f 0a jg 100af8 - 100aee: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) - 100af2: 0f 85 69 ff ff ff jne 100a61 - cprintf("\n"); - print_debuginfo(current_eip - 1); - current_eip = *((uint32_t*)current_ebp + 1); - current_ebp = *((uint32_t*)current_ebp); - } -} - 100af8: 90 nop - 100af9: c9 leave - 100afa: c3 ret - -00100afb : -#define MAXARGS 16 -#define WHITESPACE " \t\n\r" - -/* parse - parse the command buffer into whitespace-separated arguments */ -static int -parse(char *buf, char **argv) { - 100afb: 55 push %ebp - 100afc: 89 e5 mov %esp,%ebp - 100afe: 83 ec 18 sub $0x18,%esp - int argc = 0; - 100b01: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - while (1) { - // find global whitespace - while (*buf != '\0' && strchr(WHITESPACE, *buf) != NULL) { - 100b08: eb 0c jmp 100b16 - *buf ++ = '\0'; - 100b0a: 8b 45 08 mov 0x8(%ebp),%eax - 100b0d: 8d 50 01 lea 0x1(%eax),%edx - 100b10: 89 55 08 mov %edx,0x8(%ebp) - 100b13: c6 00 00 movb $0x0,(%eax) -static int -parse(char *buf, char **argv) { - int argc = 0; - while (1) { - // find global whitespace - while (*buf != '\0' && strchr(WHITESPACE, *buf) != NULL) { - 100b16: 8b 45 08 mov 0x8(%ebp),%eax - 100b19: 0f b6 00 movzbl (%eax),%eax - 100b1c: 84 c0 test %al,%al - 100b1e: 74 1e je 100b3e - 100b20: 8b 45 08 mov 0x8(%ebp),%eax - 100b23: 0f b6 00 movzbl (%eax),%eax - 100b26: 0f be c0 movsbl %al,%eax - 100b29: 83 ec 08 sub $0x8,%esp - 100b2c: 50 push %eax - 100b2d: 68 6c 38 10 00 push $0x10386c - 100b32: e8 6f 21 00 00 call 102ca6 - 100b37: 83 c4 10 add $0x10,%esp - 100b3a: 85 c0 test %eax,%eax - 100b3c: 75 cc jne 100b0a - *buf ++ = '\0'; - } - if (*buf == '\0') { - 100b3e: 8b 45 08 mov 0x8(%ebp),%eax - 100b41: 0f b6 00 movzbl (%eax),%eax - 100b44: 84 c0 test %al,%al - 100b46: 74 69 je 100bb1 - break; - } - - // save and scan past next arg - if (argc == MAXARGS - 1) { - 100b48: 83 7d f4 0f cmpl $0xf,-0xc(%ebp) - 100b4c: 75 12 jne 100b60 - cprintf("Too many arguments (max %d).\n", MAXARGS); - 100b4e: 83 ec 08 sub $0x8,%esp - 100b51: 6a 10 push $0x10 - 100b53: 68 71 38 10 00 push $0x103871 - 100b58: e8 0b f7 ff ff call 100268 - 100b5d: 83 c4 10 add $0x10,%esp - } - argv[argc ++] = buf; - 100b60: 8b 45 f4 mov -0xc(%ebp),%eax - 100b63: 8d 50 01 lea 0x1(%eax),%edx - 100b66: 89 55 f4 mov %edx,-0xc(%ebp) - 100b69: 8d 14 85 00 00 00 00 lea 0x0(,%eax,4),%edx - 100b70: 8b 45 0c mov 0xc(%ebp),%eax - 100b73: 01 c2 add %eax,%edx - 100b75: 8b 45 08 mov 0x8(%ebp),%eax - 100b78: 89 02 mov %eax,(%edx) - while (*buf != '\0' && strchr(WHITESPACE, *buf) == NULL) { - 100b7a: eb 04 jmp 100b80 - buf ++; - 100b7c: 83 45 08 01 addl $0x1,0x8(%ebp) - // save and scan past next arg - if (argc == MAXARGS - 1) { - cprintf("Too many arguments (max %d).\n", MAXARGS); - } - argv[argc ++] = buf; - while (*buf != '\0' && strchr(WHITESPACE, *buf) == NULL) { - 100b80: 8b 45 08 mov 0x8(%ebp),%eax - 100b83: 0f b6 00 movzbl (%eax),%eax - 100b86: 84 c0 test %al,%al - 100b88: 0f 84 7a ff ff ff je 100b08 - 100b8e: 8b 45 08 mov 0x8(%ebp),%eax - 100b91: 0f b6 00 movzbl (%eax),%eax - 100b94: 0f be c0 movsbl %al,%eax - 100b97: 83 ec 08 sub $0x8,%esp - 100b9a: 50 push %eax - 100b9b: 68 6c 38 10 00 push $0x10386c - 100ba0: e8 01 21 00 00 call 102ca6 - 100ba5: 83 c4 10 add $0x10,%esp - 100ba8: 85 c0 test %eax,%eax - 100baa: 74 d0 je 100b7c - buf ++; - } - } - 100bac: e9 57 ff ff ff jmp 100b08 - // find global whitespace - while (*buf != '\0' && strchr(WHITESPACE, *buf) != NULL) { - *buf ++ = '\0'; - } - if (*buf == '\0') { - break; - 100bb1: 90 nop - argv[argc ++] = buf; - while (*buf != '\0' && strchr(WHITESPACE, *buf) == NULL) { - buf ++; - } - } - return argc; - 100bb2: 8b 45 f4 mov -0xc(%ebp),%eax -} - 100bb5: c9 leave - 100bb6: c3 ret - -00100bb7 : -/* * - * runcmd - parse the input string, split it into separated arguments - * and then lookup and invoke some related commands/ - * */ -static int -runcmd(char *buf, struct trapframe *tf) { - 100bb7: 55 push %ebp - 100bb8: 89 e5 mov %esp,%ebp - 100bba: 83 ec 58 sub $0x58,%esp - char *argv[MAXARGS]; - int argc = parse(buf, argv); - 100bbd: 83 ec 08 sub $0x8,%esp - 100bc0: 8d 45 b0 lea -0x50(%ebp),%eax - 100bc3: 50 push %eax - 100bc4: ff 75 08 pushl 0x8(%ebp) - 100bc7: e8 2f ff ff ff call 100afb - 100bcc: 83 c4 10 add $0x10,%esp - 100bcf: 89 45 f0 mov %eax,-0x10(%ebp) - if (argc == 0) { - 100bd2: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) - 100bd6: 75 0a jne 100be2 - return 0; - 100bd8: b8 00 00 00 00 mov $0x0,%eax - 100bdd: e9 83 00 00 00 jmp 100c65 - } - int i; - for (i = 0; i < NCOMMANDS; i ++) { - 100be2: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - 100be9: eb 59 jmp 100c44 - if (strcmp(commands[i].name, argv[0]) == 0) { - 100beb: 8b 4d b0 mov -0x50(%ebp),%ecx - 100bee: 8b 55 f4 mov -0xc(%ebp),%edx - 100bf1: 89 d0 mov %edx,%eax - 100bf3: 01 c0 add %eax,%eax - 100bf5: 01 d0 add %edx,%eax - 100bf7: c1 e0 02 shl $0x2,%eax - 100bfa: 05 00 e0 10 00 add $0x10e000,%eax - 100bff: 8b 00 mov (%eax),%eax - 100c01: 83 ec 08 sub $0x8,%esp - 100c04: 51 push %ecx - 100c05: 50 push %eax - 100c06: e8 fb 1f 00 00 call 102c06 - 100c0b: 83 c4 10 add $0x10,%esp - 100c0e: 85 c0 test %eax,%eax - 100c10: 75 2e jne 100c40 - return commands[i].func(argc - 1, argv + 1, tf); - 100c12: 8b 55 f4 mov -0xc(%ebp),%edx - 100c15: 89 d0 mov %edx,%eax - 100c17: 01 c0 add %eax,%eax - 100c19: 01 d0 add %edx,%eax - 100c1b: c1 e0 02 shl $0x2,%eax - 100c1e: 05 08 e0 10 00 add $0x10e008,%eax - 100c23: 8b 10 mov (%eax),%edx - 100c25: 8d 45 b0 lea -0x50(%ebp),%eax - 100c28: 83 c0 04 add $0x4,%eax - 100c2b: 8b 4d f0 mov -0x10(%ebp),%ecx - 100c2e: 83 e9 01 sub $0x1,%ecx - 100c31: 83 ec 04 sub $0x4,%esp - 100c34: ff 75 0c pushl 0xc(%ebp) - 100c37: 50 push %eax - 100c38: 51 push %ecx - 100c39: ff d2 call *%edx - 100c3b: 83 c4 10 add $0x10,%esp - 100c3e: eb 25 jmp 100c65 - int argc = parse(buf, argv); - if (argc == 0) { - return 0; - } - int i; - for (i = 0; i < NCOMMANDS; i ++) { - 100c40: 83 45 f4 01 addl $0x1,-0xc(%ebp) - 100c44: 8b 45 f4 mov -0xc(%ebp),%eax - 100c47: 83 f8 02 cmp $0x2,%eax - 100c4a: 76 9f jbe 100beb - if (strcmp(commands[i].name, argv[0]) == 0) { - return commands[i].func(argc - 1, argv + 1, tf); - } - } - cprintf("Unknown command '%s'\n", argv[0]); - 100c4c: 8b 45 b0 mov -0x50(%ebp),%eax - 100c4f: 83 ec 08 sub $0x8,%esp - 100c52: 50 push %eax - 100c53: 68 8f 38 10 00 push $0x10388f - 100c58: e8 0b f6 ff ff call 100268 - 100c5d: 83 c4 10 add $0x10,%esp - return 0; - 100c60: b8 00 00 00 00 mov $0x0,%eax -} - 100c65: c9 leave - 100c66: c3 ret - -00100c67 : - -/***** Implementations of basic kernel monitor commands *****/ - -void -kmonitor(struct trapframe *tf) { - 100c67: 55 push %ebp - 100c68: 89 e5 mov %esp,%ebp - 100c6a: 83 ec 18 sub $0x18,%esp - cprintf("Welcome to the kernel debug monitor!!\n"); - 100c6d: 83 ec 0c sub $0xc,%esp - 100c70: 68 a8 38 10 00 push $0x1038a8 - 100c75: e8 ee f5 ff ff call 100268 - 100c7a: 83 c4 10 add $0x10,%esp - cprintf("Type 'help' for a list of commands.\n"); - 100c7d: 83 ec 0c sub $0xc,%esp - 100c80: 68 d0 38 10 00 push $0x1038d0 - 100c85: e8 de f5 ff ff call 100268 - 100c8a: 83 c4 10 add $0x10,%esp - - if (tf != NULL) { - 100c8d: 83 7d 08 00 cmpl $0x0,0x8(%ebp) - 100c91: 74 0e je 100ca1 - print_trapframe(tf); - 100c93: 83 ec 0c sub $0xc,%esp - 100c96: ff 75 08 pushl 0x8(%ebp) - 100c99: e8 a7 0d 00 00 call 101a45 - 100c9e: 83 c4 10 add $0x10,%esp - } - - char *buf; - while (1) { - if ((buf = readline("K> ")) != NULL) { - 100ca1: 83 ec 0c sub $0xc,%esp - 100ca4: 68 f5 38 10 00 push $0x1038f5 - 100ca9: e8 5e f6 ff ff call 10030c - 100cae: 83 c4 10 add $0x10,%esp - 100cb1: 89 45 f4 mov %eax,-0xc(%ebp) - 100cb4: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) - 100cb8: 74 e7 je 100ca1 - if (runcmd(buf, tf) < 0) { - 100cba: 83 ec 08 sub $0x8,%esp - 100cbd: ff 75 08 pushl 0x8(%ebp) - 100cc0: ff 75 f4 pushl -0xc(%ebp) - 100cc3: e8 ef fe ff ff call 100bb7 - 100cc8: 83 c4 10 add $0x10,%esp - 100ccb: 85 c0 test %eax,%eax - 100ccd: 78 02 js 100cd1 - break; - } - } - } - 100ccf: eb d0 jmp 100ca1 - - char *buf; - while (1) { - if ((buf = readline("K> ")) != NULL) { - if (runcmd(buf, tf) < 0) { - break; - 100cd1: 90 nop - } - } - } -} - 100cd2: 90 nop - 100cd3: c9 leave - 100cd4: c3 ret - -00100cd5 : - -/* mon_help - print the information about mon_* functions */ -int -mon_help(int argc, char **argv, struct trapframe *tf) { - 100cd5: 55 push %ebp - 100cd6: 89 e5 mov %esp,%ebp - 100cd8: 83 ec 18 sub $0x18,%esp - int i; - for (i = 0; i < NCOMMANDS; i ++) { - 100cdb: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - 100ce2: eb 3c jmp 100d20 - cprintf("%s - %s\n", commands[i].name, commands[i].desc); - 100ce4: 8b 55 f4 mov -0xc(%ebp),%edx - 100ce7: 89 d0 mov %edx,%eax - 100ce9: 01 c0 add %eax,%eax - 100ceb: 01 d0 add %edx,%eax - 100ced: c1 e0 02 shl $0x2,%eax - 100cf0: 05 04 e0 10 00 add $0x10e004,%eax - 100cf5: 8b 08 mov (%eax),%ecx - 100cf7: 8b 55 f4 mov -0xc(%ebp),%edx - 100cfa: 89 d0 mov %edx,%eax - 100cfc: 01 c0 add %eax,%eax - 100cfe: 01 d0 add %edx,%eax - 100d00: c1 e0 02 shl $0x2,%eax - 100d03: 05 00 e0 10 00 add $0x10e000,%eax - 100d08: 8b 00 mov (%eax),%eax - 100d0a: 83 ec 04 sub $0x4,%esp - 100d0d: 51 push %ecx - 100d0e: 50 push %eax - 100d0f: 68 f9 38 10 00 push $0x1038f9 - 100d14: e8 4f f5 ff ff call 100268 - 100d19: 83 c4 10 add $0x10,%esp - -/* mon_help - print the information about mon_* functions */ -int -mon_help(int argc, char **argv, struct trapframe *tf) { - int i; - for (i = 0; i < NCOMMANDS; i ++) { - 100d1c: 83 45 f4 01 addl $0x1,-0xc(%ebp) - 100d20: 8b 45 f4 mov -0xc(%ebp),%eax - 100d23: 83 f8 02 cmp $0x2,%eax - 100d26: 76 bc jbe 100ce4 - cprintf("%s - %s\n", commands[i].name, commands[i].desc); - } - return 0; - 100d28: b8 00 00 00 00 mov $0x0,%eax -} - 100d2d: c9 leave - 100d2e: c3 ret - -00100d2f : -/* * - * mon_kerninfo - call print_kerninfo in kern/debug/kdebug.c to - * print the memory occupancy in kernel. - * */ -int -mon_kerninfo(int argc, char **argv, struct trapframe *tf) { - 100d2f: 55 push %ebp - 100d30: 89 e5 mov %esp,%ebp - 100d32: 83 ec 08 sub $0x8,%esp - print_kerninfo(); - 100d35: e8 b8 fb ff ff call 1008f2 - return 0; - 100d3a: b8 00 00 00 00 mov $0x0,%eax -} - 100d3f: c9 leave - 100d40: c3 ret - -00100d41 : -/* * - * mon_backtrace - call print_stackframe in kern/debug/kdebug.c to - * print a backtrace of the stack. - * */ -int -mon_backtrace(int argc, char **argv, struct trapframe *tf) { - 100d41: 55 push %ebp - 100d42: 89 e5 mov %esp,%ebp - 100d44: 83 ec 08 sub $0x8,%esp - print_stackframe(); - 100d47: e8 f0 fc ff ff call 100a3c - return 0; - 100d4c: b8 00 00 00 00 mov $0x0,%eax -} - 100d51: c9 leave - 100d52: c3 ret - -00100d53 : -/* * - * clock_init - initialize 8253 clock to interrupt 100 times per second, - * and then enable IRQ_TIMER. - * */ -void -clock_init(void) { - 100d53: 55 push %ebp - 100d54: 89 e5 mov %esp,%ebp - 100d56: 83 ec 18 sub $0x18,%esp - 100d59: 66 c7 45 f6 43 00 movw $0x43,-0xa(%ebp) - 100d5f: c6 45 ef 34 movb $0x34,-0x11(%ebp) - : "memory", "cc"); -} - -static inline void -outb(uint16_t port, uint8_t data) { - asm volatile ("outb %0, %1" :: "a" (data), "d" (port)); - 100d63: 0f b6 45 ef movzbl -0x11(%ebp),%eax - 100d67: 0f b7 55 f6 movzwl -0xa(%ebp),%edx - 100d6b: ee out %al,(%dx) - 100d6c: 66 c7 45 f4 40 00 movw $0x40,-0xc(%ebp) - 100d72: c6 45 f0 9c movb $0x9c,-0x10(%ebp) - 100d76: 0f b6 45 f0 movzbl -0x10(%ebp),%eax - 100d7a: 0f b7 55 f4 movzwl -0xc(%ebp),%edx - 100d7e: ee out %al,(%dx) - 100d7f: 66 c7 45 f2 40 00 movw $0x40,-0xe(%ebp) - 100d85: c6 45 f1 2e movb $0x2e,-0xf(%ebp) - 100d89: 0f b6 45 f1 movzbl -0xf(%ebp),%eax - 100d8d: 0f b7 55 f2 movzwl -0xe(%ebp),%edx - 100d91: ee out %al,(%dx) - outb(TIMER_MODE, TIMER_SEL0 | TIMER_RATEGEN | TIMER_16BIT); - outb(IO_TIMER1, TIMER_DIV(100) % 256); - outb(IO_TIMER1, TIMER_DIV(100) / 256); - - // initialize time counter 'ticks' to zero - ticks = 0; - 100d92: c7 05 28 f9 10 00 00 movl $0x0,0x10f928 - 100d99: 00 00 00 - - cprintf("++ setup timer interrupts\n"); - 100d9c: 83 ec 0c sub $0xc,%esp - 100d9f: 68 02 39 10 00 push $0x103902 - 100da4: e8 bf f4 ff ff call 100268 - 100da9: 83 c4 10 add $0x10,%esp - pic_enable(IRQ_TIMER); - 100dac: 83 ec 0c sub $0xc,%esp - 100daf: 6a 00 push $0x0 - 100db1: e8 ce 08 00 00 call 101684 - 100db6: 83 c4 10 add $0x10,%esp -} - 100db9: 90 nop - 100dba: c9 leave - 100dbb: c3 ret - -00100dbc : -#include -#include - -/* stupid I/O delay routine necessitated by historical PC design flaws */ -static void -delay(void) { - 100dbc: 55 push %ebp - 100dbd: 89 e5 mov %esp,%ebp - 100dbf: 83 ec 10 sub $0x10,%esp - 100dc2: 66 c7 45 fe 84 00 movw $0x84,-0x2(%ebp) -static inline void ltr(uint16_t sel) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port)); - 100dc8: 0f b7 45 fe movzwl -0x2(%ebp),%eax - 100dcc: 89 c2 mov %eax,%edx - 100dce: ec in (%dx),%al - 100dcf: 88 45 f4 mov %al,-0xc(%ebp) - 100dd2: 66 c7 45 fc 84 00 movw $0x84,-0x4(%ebp) - 100dd8: 0f b7 45 fc movzwl -0x4(%ebp),%eax - 100ddc: 89 c2 mov %eax,%edx - 100dde: ec in (%dx),%al - 100ddf: 88 45 f5 mov %al,-0xb(%ebp) - 100de2: 66 c7 45 fa 84 00 movw $0x84,-0x6(%ebp) - 100de8: 0f b7 45 fa movzwl -0x6(%ebp),%eax - 100dec: 89 c2 mov %eax,%edx - 100dee: ec in (%dx),%al - 100def: 88 45 f6 mov %al,-0xa(%ebp) - 100df2: 66 c7 45 f8 84 00 movw $0x84,-0x8(%ebp) - 100df8: 0f b7 45 f8 movzwl -0x8(%ebp),%eax - 100dfc: 89 c2 mov %eax,%edx - 100dfe: ec in (%dx),%al - 100dff: 88 45 f7 mov %al,-0x9(%ebp) - inb(0x84); - inb(0x84); - inb(0x84); - inb(0x84); -} - 100e02: 90 nop - 100e03: c9 leave - 100e04: c3 ret - -00100e05 : -// -- 数据寄存器 映射 到 端口 0x3D5或0x3B5 -// -- 索引寄存器 0x3D4或0x3B4,决定在数据寄存器中的数据表示什么。 - -/* TEXT-mode CGA/VGA display output */ -static void -cga_init(void) { - 100e05: 55 push %ebp - 100e06: 89 e5 mov %esp,%ebp - 100e08: 83 ec 20 sub $0x20,%esp - volatile uint16_t *cp = (uint16_t *)CGA_BUF; //CGA_BUF: 0xB8000 (彩色显示的显存物理基址) - 100e0b: c7 45 fc 00 80 0b 00 movl $0xb8000,-0x4(%ebp) - uint16_t was = *cp; //保存当前显存0xB8000处的值 - 100e12: 8b 45 fc mov -0x4(%ebp),%eax - 100e15: 0f b7 00 movzwl (%eax),%eax - 100e18: 66 89 45 fa mov %ax,-0x6(%ebp) - *cp = (uint16_t) 0xA55A; // 给这个地址随便写个值,看看能否再读出同样的值 - 100e1c: 8b 45 fc mov -0x4(%ebp),%eax - 100e1f: 66 c7 00 5a a5 movw $0xa55a,(%eax) - if (*cp != 0xA55A) { // 如果读不出来,说明没有这块显存,即是单显配置 - 100e24: 8b 45 fc mov -0x4(%ebp),%eax - 100e27: 0f b7 00 movzwl (%eax),%eax - 100e2a: 66 3d 5a a5 cmp $0xa55a,%ax - 100e2e: 74 12 je 100e42 - cp = (uint16_t*)MONO_BUF; //设置为单显的显存基址 MONO_BUF: 0xB0000 - 100e30: c7 45 fc 00 00 0b 00 movl $0xb0000,-0x4(%ebp) - addr_6845 = MONO_BASE; //设置为单显控制的IO地址,MONO_BASE: 0x3B4 - 100e37: 66 c7 05 66 ee 10 00 movw $0x3b4,0x10ee66 - 100e3e: b4 03 - 100e40: eb 13 jmp 100e55 - } else { // 如果读出来了,有这块显存,即是彩显配置 - *cp = was; //还原原来显存位置的值 - 100e42: 8b 45 fc mov -0x4(%ebp),%eax - 100e45: 0f b7 55 fa movzwl -0x6(%ebp),%edx - 100e49: 66 89 10 mov %dx,(%eax) - addr_6845 = CGA_BASE; // 设置为彩显控制的IO地址,CGA_BASE: 0x3D4 - 100e4c: 66 c7 05 66 ee 10 00 movw $0x3d4,0x10ee66 - 100e53: d4 03 - // Extract cursor location - // 6845索引寄存器的index 0x0E(及十进制的14)== 光标位置(高位) - // 6845索引寄存器的index 0x0F(及十进制的15)== 光标位置(低位) - // 6845 reg 15 : Cursor Address (Low Byte) - uint32_t pos; - outb(addr_6845, 14); - 100e55: 0f b7 05 66 ee 10 00 movzwl 0x10ee66,%eax - 100e5c: 0f b7 c0 movzwl %ax,%eax - 100e5f: 66 89 45 f8 mov %ax,-0x8(%ebp) - 100e63: c6 45 ea 0e movb $0xe,-0x16(%ebp) - : "memory", "cc"); -} - -static inline void -outb(uint16_t port, uint8_t data) { - asm volatile ("outb %0, %1" :: "a" (data), "d" (port)); - 100e67: 0f b6 45 ea movzbl -0x16(%ebp),%eax - 100e6b: 0f b7 55 f8 movzwl -0x8(%ebp),%edx - 100e6f: ee out %al,(%dx) - pos = inb(addr_6845 + 1) << 8; //读出了光标位置(高位) - 100e70: 0f b7 05 66 ee 10 00 movzwl 0x10ee66,%eax - 100e77: 83 c0 01 add $0x1,%eax - 100e7a: 0f b7 c0 movzwl %ax,%eax - 100e7d: 66 89 45 f2 mov %ax,-0xe(%ebp) -static inline void ltr(uint16_t sel) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port)); - 100e81: 0f b7 45 f2 movzwl -0xe(%ebp),%eax - 100e85: 89 c2 mov %eax,%edx - 100e87: ec in (%dx),%al - 100e88: 88 45 eb mov %al,-0x15(%ebp) - return data; - 100e8b: 0f b6 45 eb movzbl -0x15(%ebp),%eax - 100e8f: 0f b6 c0 movzbl %al,%eax - 100e92: c1 e0 08 shl $0x8,%eax - 100e95: 89 45 f4 mov %eax,-0xc(%ebp) - outb(addr_6845, 15); - 100e98: 0f b7 05 66 ee 10 00 movzwl 0x10ee66,%eax - 100e9f: 0f b7 c0 movzwl %ax,%eax - 100ea2: 66 89 45 f0 mov %ax,-0x10(%ebp) - 100ea6: c6 45 ec 0f movb $0xf,-0x14(%ebp) - : "memory", "cc"); -} - -static inline void -outb(uint16_t port, uint8_t data) { - asm volatile ("outb %0, %1" :: "a" (data), "d" (port)); - 100eaa: 0f b6 45 ec movzbl -0x14(%ebp),%eax - 100eae: 0f b7 55 f0 movzwl -0x10(%ebp),%edx - 100eb2: ee out %al,(%dx) - pos |= inb(addr_6845 + 1); //读出了光标位置(低位) - 100eb3: 0f b7 05 66 ee 10 00 movzwl 0x10ee66,%eax - 100eba: 83 c0 01 add $0x1,%eax - 100ebd: 0f b7 c0 movzwl %ax,%eax - 100ec0: 66 89 45 ee mov %ax,-0x12(%ebp) -static inline void ltr(uint16_t sel) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port)); - 100ec4: 0f b7 45 ee movzwl -0x12(%ebp),%eax - 100ec8: 89 c2 mov %eax,%edx - 100eca: ec in (%dx),%al - 100ecb: 88 45 ed mov %al,-0x13(%ebp) - return data; - 100ece: 0f b6 45 ed movzbl -0x13(%ebp),%eax - 100ed2: 0f b6 c0 movzbl %al,%eax - 100ed5: 09 45 f4 or %eax,-0xc(%ebp) - - crt_buf = (uint16_t*) cp; //crt_buf是CGA显存起始地址 - 100ed8: 8b 45 fc mov -0x4(%ebp),%eax - 100edb: a3 60 ee 10 00 mov %eax,0x10ee60 - crt_pos = pos; //crt_pos是CGA当前光标位置 - 100ee0: 8b 45 f4 mov -0xc(%ebp),%eax - 100ee3: 66 a3 64 ee 10 00 mov %ax,0x10ee64 -} - 100ee9: 90 nop - 100eea: c9 leave - 100eeb: c3 ret - -00100eec : - -static bool serial_exists = 0; - -static void -serial_init(void) { - 100eec: 55 push %ebp - 100eed: 89 e5 mov %esp,%ebp - 100eef: 83 ec 28 sub $0x28,%esp - 100ef2: 66 c7 45 f6 fa 03 movw $0x3fa,-0xa(%ebp) - 100ef8: c6 45 da 00 movb $0x0,-0x26(%ebp) - : "memory", "cc"); -} - -static inline void -outb(uint16_t port, uint8_t data) { - asm volatile ("outb %0, %1" :: "a" (data), "d" (port)); - 100efc: 0f b6 45 da movzbl -0x26(%ebp),%eax - 100f00: 0f b7 55 f6 movzwl -0xa(%ebp),%edx - 100f04: ee out %al,(%dx) - 100f05: 66 c7 45 f4 fb 03 movw $0x3fb,-0xc(%ebp) - 100f0b: c6 45 db 80 movb $0x80,-0x25(%ebp) - 100f0f: 0f b6 45 db movzbl -0x25(%ebp),%eax - 100f13: 0f b7 55 f4 movzwl -0xc(%ebp),%edx - 100f17: ee out %al,(%dx) - 100f18: 66 c7 45 f2 f8 03 movw $0x3f8,-0xe(%ebp) - 100f1e: c6 45 dc 0c movb $0xc,-0x24(%ebp) - 100f22: 0f b6 45 dc movzbl -0x24(%ebp),%eax - 100f26: 0f b7 55 f2 movzwl -0xe(%ebp),%edx - 100f2a: ee out %al,(%dx) - 100f2b: 66 c7 45 f0 f9 03 movw $0x3f9,-0x10(%ebp) - 100f31: c6 45 dd 00 movb $0x0,-0x23(%ebp) - 100f35: 0f b6 45 dd movzbl -0x23(%ebp),%eax - 100f39: 0f b7 55 f0 movzwl -0x10(%ebp),%edx - 100f3d: ee out %al,(%dx) - 100f3e: 66 c7 45 ee fb 03 movw $0x3fb,-0x12(%ebp) - 100f44: c6 45 de 03 movb $0x3,-0x22(%ebp) - 100f48: 0f b6 45 de movzbl -0x22(%ebp),%eax - 100f4c: 0f b7 55 ee movzwl -0x12(%ebp),%edx - 100f50: ee out %al,(%dx) - 100f51: 66 c7 45 ec fc 03 movw $0x3fc,-0x14(%ebp) - 100f57: c6 45 df 00 movb $0x0,-0x21(%ebp) - 100f5b: 0f b6 45 df movzbl -0x21(%ebp),%eax - 100f5f: 0f b7 55 ec movzwl -0x14(%ebp),%edx - 100f63: ee out %al,(%dx) - 100f64: 66 c7 45 ea f9 03 movw $0x3f9,-0x16(%ebp) - 100f6a: c6 45 e0 01 movb $0x1,-0x20(%ebp) - 100f6e: 0f b6 45 e0 movzbl -0x20(%ebp),%eax - 100f72: 0f b7 55 ea movzwl -0x16(%ebp),%edx - 100f76: ee out %al,(%dx) - 100f77: 66 c7 45 e8 fd 03 movw $0x3fd,-0x18(%ebp) -static inline void ltr(uint16_t sel) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port)); - 100f7d: 0f b7 45 e8 movzwl -0x18(%ebp),%eax - 100f81: 89 c2 mov %eax,%edx - 100f83: ec in (%dx),%al - 100f84: 88 45 e1 mov %al,-0x1f(%ebp) - return data; - 100f87: 0f b6 45 e1 movzbl -0x1f(%ebp),%eax - // Enable rcv interrupts - outb(COM1 + COM_IER, COM_IER_RDI); - - // Clear any preexisting overrun indications and interrupts - // Serial port doesn't exist if COM_LSR returns 0xFF - serial_exists = (inb(COM1 + COM_LSR) != 0xFF); - 100f8b: 3c ff cmp $0xff,%al - 100f8d: 0f 95 c0 setne %al - 100f90: 0f b6 c0 movzbl %al,%eax - 100f93: a3 68 ee 10 00 mov %eax,0x10ee68 - 100f98: 66 c7 45 e6 fa 03 movw $0x3fa,-0x1a(%ebp) -static inline void ltr(uint16_t sel) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port)); - 100f9e: 0f b7 45 e6 movzwl -0x1a(%ebp),%eax - 100fa2: 89 c2 mov %eax,%edx - 100fa4: ec in (%dx),%al - 100fa5: 88 45 e2 mov %al,-0x1e(%ebp) - 100fa8: 66 c7 45 e4 f8 03 movw $0x3f8,-0x1c(%ebp) - 100fae: 0f b7 45 e4 movzwl -0x1c(%ebp),%eax - 100fb2: 89 c2 mov %eax,%edx - 100fb4: ec in (%dx),%al - 100fb5: 88 45 e3 mov %al,-0x1d(%ebp) - (void) inb(COM1+COM_IIR); - (void) inb(COM1+COM_RX); - - if (serial_exists) { - 100fb8: a1 68 ee 10 00 mov 0x10ee68,%eax - 100fbd: 85 c0 test %eax,%eax - 100fbf: 74 0d je 100fce - pic_enable(IRQ_COM1); - 100fc1: 83 ec 0c sub $0xc,%esp - 100fc4: 6a 04 push $0x4 - 100fc6: e8 b9 06 00 00 call 101684 - 100fcb: 83 c4 10 add $0x10,%esp - } -} - 100fce: 90 nop - 100fcf: c9 leave - 100fd0: c3 ret - -00100fd1 : - -static void -lpt_putc_sub(int c) { - 100fd1: 55 push %ebp - 100fd2: 89 e5 mov %esp,%ebp - 100fd4: 83 ec 10 sub $0x10,%esp - int i; - for (i = 0; !(inb(LPTPORT + 1) & 0x80) && i < 12800; i ++) { - 100fd7: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp) - 100fde: eb 09 jmp 100fe9 - delay(); - 100fe0: e8 d7 fd ff ff call 100dbc -} - -static void -lpt_putc_sub(int c) { - int i; - for (i = 0; !(inb(LPTPORT + 1) & 0x80) && i < 12800; i ++) { - 100fe5: 83 45 fc 01 addl $0x1,-0x4(%ebp) - 100fe9: 66 c7 45 f4 79 03 movw $0x379,-0xc(%ebp) - 100fef: 0f b7 45 f4 movzwl -0xc(%ebp),%eax - 100ff3: 89 c2 mov %eax,%edx - 100ff5: ec in (%dx),%al - 100ff6: 88 45 f3 mov %al,-0xd(%ebp) - return data; - 100ff9: 0f b6 45 f3 movzbl -0xd(%ebp),%eax - 100ffd: 84 c0 test %al,%al - 100fff: 78 09 js 10100a - 101001: 81 7d fc ff 31 00 00 cmpl $0x31ff,-0x4(%ebp) - 101008: 7e d6 jle 100fe0 - delay(); - } - outb(LPTPORT + 0, c); - 10100a: 8b 45 08 mov 0x8(%ebp),%eax - 10100d: 0f b6 c0 movzbl %al,%eax - 101010: 66 c7 45 f8 78 03 movw $0x378,-0x8(%ebp) - 101016: 88 45 f0 mov %al,-0x10(%ebp) - : "memory", "cc"); -} - -static inline void -outb(uint16_t port, uint8_t data) { - asm volatile ("outb %0, %1" :: "a" (data), "d" (port)); - 101019: 0f b6 45 f0 movzbl -0x10(%ebp),%eax - 10101d: 0f b7 55 f8 movzwl -0x8(%ebp),%edx - 101021: ee out %al,(%dx) - 101022: 66 c7 45 f6 7a 03 movw $0x37a,-0xa(%ebp) - 101028: c6 45 f1 0d movb $0xd,-0xf(%ebp) - 10102c: 0f b6 45 f1 movzbl -0xf(%ebp),%eax - 101030: 0f b7 55 f6 movzwl -0xa(%ebp),%edx - 101034: ee out %al,(%dx) - 101035: 66 c7 45 fa 7a 03 movw $0x37a,-0x6(%ebp) - 10103b: c6 45 f2 08 movb $0x8,-0xe(%ebp) - 10103f: 0f b6 45 f2 movzbl -0xe(%ebp),%eax - 101043: 0f b7 55 fa movzwl -0x6(%ebp),%edx - 101047: ee out %al,(%dx) - outb(LPTPORT + 2, 0x08 | 0x04 | 0x01); - outb(LPTPORT + 2, 0x08); -} - 101048: 90 nop - 101049: c9 leave - 10104a: c3 ret - -0010104b : - -/* lpt_putc - copy console output to parallel port */ -static void -lpt_putc(int c) { - 10104b: 55 push %ebp - 10104c: 89 e5 mov %esp,%ebp - if (c != '\b') { - 10104e: 83 7d 08 08 cmpl $0x8,0x8(%ebp) - 101052: 74 0d je 101061 - lpt_putc_sub(c); - 101054: ff 75 08 pushl 0x8(%ebp) - 101057: e8 75 ff ff ff call 100fd1 - 10105c: 83 c4 04 add $0x4,%esp - else { - lpt_putc_sub('\b'); - lpt_putc_sub(' '); - lpt_putc_sub('\b'); - } -} - 10105f: eb 1e jmp 10107f -lpt_putc(int c) { - if (c != '\b') { - lpt_putc_sub(c); - } - else { - lpt_putc_sub('\b'); - 101061: 6a 08 push $0x8 - 101063: e8 69 ff ff ff call 100fd1 - 101068: 83 c4 04 add $0x4,%esp - lpt_putc_sub(' '); - 10106b: 6a 20 push $0x20 - 10106d: e8 5f ff ff ff call 100fd1 - 101072: 83 c4 04 add $0x4,%esp - lpt_putc_sub('\b'); - 101075: 6a 08 push $0x8 - 101077: e8 55 ff ff ff call 100fd1 - 10107c: 83 c4 04 add $0x4,%esp - } -} - 10107f: 90 nop - 101080: c9 leave - 101081: c3 ret - -00101082 : - -/* cga_putc - print character to console */ -static void -cga_putc(int c) { - 101082: 55 push %ebp - 101083: 89 e5 mov %esp,%ebp - 101085: 53 push %ebx - 101086: 83 ec 14 sub $0x14,%esp - // set black on white - if (!(c & ~0xFF)) { - 101089: 8b 45 08 mov 0x8(%ebp),%eax - 10108c: b0 00 mov $0x0,%al - 10108e: 85 c0 test %eax,%eax - 101090: 75 07 jne 101099 - c |= 0x0700; - 101092: 81 4d 08 00 07 00 00 orl $0x700,0x8(%ebp) - } - - switch (c & 0xff) { - 101099: 8b 45 08 mov 0x8(%ebp),%eax - 10109c: 0f b6 c0 movzbl %al,%eax - 10109f: 83 f8 0a cmp $0xa,%eax - 1010a2: 74 4e je 1010f2 - 1010a4: 83 f8 0d cmp $0xd,%eax - 1010a7: 74 59 je 101102 - 1010a9: 83 f8 08 cmp $0x8,%eax - 1010ac: 0f 85 8a 00 00 00 jne 10113c - case '\b': - if (crt_pos > 0) { - 1010b2: 0f b7 05 64 ee 10 00 movzwl 0x10ee64,%eax - 1010b9: 66 85 c0 test %ax,%ax - 1010bc: 0f 84 a0 00 00 00 je 101162 - crt_pos --; - 1010c2: 0f b7 05 64 ee 10 00 movzwl 0x10ee64,%eax - 1010c9: 83 e8 01 sub $0x1,%eax - 1010cc: 66 a3 64 ee 10 00 mov %ax,0x10ee64 - crt_buf[crt_pos] = (c & ~0xff) | ' '; - 1010d2: a1 60 ee 10 00 mov 0x10ee60,%eax - 1010d7: 0f b7 15 64 ee 10 00 movzwl 0x10ee64,%edx - 1010de: 0f b7 d2 movzwl %dx,%edx - 1010e1: 01 d2 add %edx,%edx - 1010e3: 01 d0 add %edx,%eax - 1010e5: 8b 55 08 mov 0x8(%ebp),%edx - 1010e8: b2 00 mov $0x0,%dl - 1010ea: 83 ca 20 or $0x20,%edx - 1010ed: 66 89 10 mov %dx,(%eax) - } - break; - 1010f0: eb 70 jmp 101162 - case '\n': - crt_pos += CRT_COLS; - 1010f2: 0f b7 05 64 ee 10 00 movzwl 0x10ee64,%eax - 1010f9: 83 c0 50 add $0x50,%eax - 1010fc: 66 a3 64 ee 10 00 mov %ax,0x10ee64 - case '\r': - crt_pos -= (crt_pos % CRT_COLS); - 101102: 0f b7 1d 64 ee 10 00 movzwl 0x10ee64,%ebx - 101109: 0f b7 0d 64 ee 10 00 movzwl 0x10ee64,%ecx - 101110: 0f b7 c1 movzwl %cx,%eax - 101113: 69 c0 cd cc 00 00 imul $0xcccd,%eax,%eax - 101119: c1 e8 10 shr $0x10,%eax - 10111c: 89 c2 mov %eax,%edx - 10111e: 66 c1 ea 06 shr $0x6,%dx - 101122: 89 d0 mov %edx,%eax - 101124: c1 e0 02 shl $0x2,%eax - 101127: 01 d0 add %edx,%eax - 101129: c1 e0 04 shl $0x4,%eax - 10112c: 29 c1 sub %eax,%ecx - 10112e: 89 ca mov %ecx,%edx - 101130: 89 d8 mov %ebx,%eax - 101132: 29 d0 sub %edx,%eax - 101134: 66 a3 64 ee 10 00 mov %ax,0x10ee64 - break; - 10113a: eb 27 jmp 101163 - default: - crt_buf[crt_pos ++] = c; // write the character - 10113c: 8b 0d 60 ee 10 00 mov 0x10ee60,%ecx - 101142: 0f b7 05 64 ee 10 00 movzwl 0x10ee64,%eax - 101149: 8d 50 01 lea 0x1(%eax),%edx - 10114c: 66 89 15 64 ee 10 00 mov %dx,0x10ee64 - 101153: 0f b7 c0 movzwl %ax,%eax - 101156: 01 c0 add %eax,%eax - 101158: 01 c8 add %ecx,%eax - 10115a: 8b 55 08 mov 0x8(%ebp),%edx - 10115d: 66 89 10 mov %dx,(%eax) - break; - 101160: eb 01 jmp 101163 - case '\b': - if (crt_pos > 0) { - crt_pos --; - crt_buf[crt_pos] = (c & ~0xff) | ' '; - } - break; - 101162: 90 nop - crt_buf[crt_pos ++] = c; // write the character - break; - } - - // What is the purpose of this? - if (crt_pos >= CRT_SIZE) { - 101163: 0f b7 05 64 ee 10 00 movzwl 0x10ee64,%eax - 10116a: 66 3d cf 07 cmp $0x7cf,%ax - 10116e: 76 59 jbe 1011c9 - int i; - memmove(crt_buf, crt_buf + CRT_COLS, (CRT_SIZE - CRT_COLS) * sizeof(uint16_t)); - 101170: a1 60 ee 10 00 mov 0x10ee60,%eax - 101175: 8d 90 a0 00 00 00 lea 0xa0(%eax),%edx - 10117b: a1 60 ee 10 00 mov 0x10ee60,%eax - 101180: 83 ec 04 sub $0x4,%esp - 101183: 68 00 0f 00 00 push $0xf00 - 101188: 52 push %edx - 101189: 50 push %eax - 10118a: e8 16 1d 00 00 call 102ea5 - 10118f: 83 c4 10 add $0x10,%esp - for (i = CRT_SIZE - CRT_COLS; i < CRT_SIZE; i ++) { - 101192: c7 45 f4 80 07 00 00 movl $0x780,-0xc(%ebp) - 101199: eb 15 jmp 1011b0 - crt_buf[i] = 0x0700 | ' '; - 10119b: a1 60 ee 10 00 mov 0x10ee60,%eax - 1011a0: 8b 55 f4 mov -0xc(%ebp),%edx - 1011a3: 01 d2 add %edx,%edx - 1011a5: 01 d0 add %edx,%eax - 1011a7: 66 c7 00 20 07 movw $0x720,(%eax) - - // What is the purpose of this? - if (crt_pos >= CRT_SIZE) { - int i; - memmove(crt_buf, crt_buf + CRT_COLS, (CRT_SIZE - CRT_COLS) * sizeof(uint16_t)); - for (i = CRT_SIZE - CRT_COLS; i < CRT_SIZE; i ++) { - 1011ac: 83 45 f4 01 addl $0x1,-0xc(%ebp) - 1011b0: 81 7d f4 cf 07 00 00 cmpl $0x7cf,-0xc(%ebp) - 1011b7: 7e e2 jle 10119b - crt_buf[i] = 0x0700 | ' '; - } - crt_pos -= CRT_COLS; - 1011b9: 0f b7 05 64 ee 10 00 movzwl 0x10ee64,%eax - 1011c0: 83 e8 50 sub $0x50,%eax - 1011c3: 66 a3 64 ee 10 00 mov %ax,0x10ee64 - } - - // move that little blinky thing - outb(addr_6845, 14); - 1011c9: 0f b7 05 66 ee 10 00 movzwl 0x10ee66,%eax - 1011d0: 0f b7 c0 movzwl %ax,%eax - 1011d3: 66 89 45 f2 mov %ax,-0xe(%ebp) - 1011d7: c6 45 e8 0e movb $0xe,-0x18(%ebp) - 1011db: 0f b6 45 e8 movzbl -0x18(%ebp),%eax - 1011df: 0f b7 55 f2 movzwl -0xe(%ebp),%edx - 1011e3: ee out %al,(%dx) - outb(addr_6845 + 1, crt_pos >> 8); - 1011e4: 0f b7 05 64 ee 10 00 movzwl 0x10ee64,%eax - 1011eb: 66 c1 e8 08 shr $0x8,%ax - 1011ef: 0f b6 c0 movzbl %al,%eax - 1011f2: 0f b7 15 66 ee 10 00 movzwl 0x10ee66,%edx - 1011f9: 83 c2 01 add $0x1,%edx - 1011fc: 0f b7 d2 movzwl %dx,%edx - 1011ff: 66 89 55 f0 mov %dx,-0x10(%ebp) - 101203: 88 45 e9 mov %al,-0x17(%ebp) - 101206: 0f b6 45 e9 movzbl -0x17(%ebp),%eax - 10120a: 0f b7 55 f0 movzwl -0x10(%ebp),%edx - 10120e: ee out %al,(%dx) - outb(addr_6845, 15); - 10120f: 0f b7 05 66 ee 10 00 movzwl 0x10ee66,%eax - 101216: 0f b7 c0 movzwl %ax,%eax - 101219: 66 89 45 ee mov %ax,-0x12(%ebp) - 10121d: c6 45 ea 0f movb $0xf,-0x16(%ebp) - 101221: 0f b6 45 ea movzbl -0x16(%ebp),%eax - 101225: 0f b7 55 ee movzwl -0x12(%ebp),%edx - 101229: ee out %al,(%dx) - outb(addr_6845 + 1, crt_pos); - 10122a: 0f b7 05 64 ee 10 00 movzwl 0x10ee64,%eax - 101231: 0f b6 c0 movzbl %al,%eax - 101234: 0f b7 15 66 ee 10 00 movzwl 0x10ee66,%edx - 10123b: 83 c2 01 add $0x1,%edx - 10123e: 0f b7 d2 movzwl %dx,%edx - 101241: 66 89 55 ec mov %dx,-0x14(%ebp) - 101245: 88 45 eb mov %al,-0x15(%ebp) - 101248: 0f b6 45 eb movzbl -0x15(%ebp),%eax - 10124c: 0f b7 55 ec movzwl -0x14(%ebp),%edx - 101250: ee out %al,(%dx) -} - 101251: 90 nop - 101252: 8b 5d fc mov -0x4(%ebp),%ebx - 101255: c9 leave - 101256: c3 ret - -00101257 : - -static void -serial_putc_sub(int c) { - 101257: 55 push %ebp - 101258: 89 e5 mov %esp,%ebp - 10125a: 83 ec 10 sub $0x10,%esp - int i; - for (i = 0; !(inb(COM1 + COM_LSR) & COM_LSR_TXRDY) && i < 12800; i ++) { - 10125d: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp) - 101264: eb 09 jmp 10126f - delay(); - 101266: e8 51 fb ff ff call 100dbc -} - -static void -serial_putc_sub(int c) { - int i; - for (i = 0; !(inb(COM1 + COM_LSR) & COM_LSR_TXRDY) && i < 12800; i ++) { - 10126b: 83 45 fc 01 addl $0x1,-0x4(%ebp) - 10126f: 66 c7 45 f8 fd 03 movw $0x3fd,-0x8(%ebp) -static inline void ltr(uint16_t sel) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port)); - 101275: 0f b7 45 f8 movzwl -0x8(%ebp),%eax - 101279: 89 c2 mov %eax,%edx - 10127b: ec in (%dx),%al - 10127c: 88 45 f7 mov %al,-0x9(%ebp) - return data; - 10127f: 0f b6 45 f7 movzbl -0x9(%ebp),%eax - 101283: 0f b6 c0 movzbl %al,%eax - 101286: 83 e0 20 and $0x20,%eax - 101289: 85 c0 test %eax,%eax - 10128b: 75 09 jne 101296 - 10128d: 81 7d fc ff 31 00 00 cmpl $0x31ff,-0x4(%ebp) - 101294: 7e d0 jle 101266 - delay(); - } - outb(COM1 + COM_TX, c); - 101296: 8b 45 08 mov 0x8(%ebp),%eax - 101299: 0f b6 c0 movzbl %al,%eax - 10129c: 66 c7 45 fa f8 03 movw $0x3f8,-0x6(%ebp) - 1012a2: 88 45 f6 mov %al,-0xa(%ebp) - : "memory", "cc"); -} - -static inline void -outb(uint16_t port, uint8_t data) { - asm volatile ("outb %0, %1" :: "a" (data), "d" (port)); - 1012a5: 0f b6 45 f6 movzbl -0xa(%ebp),%eax - 1012a9: 0f b7 55 fa movzwl -0x6(%ebp),%edx - 1012ad: ee out %al,(%dx) -} - 1012ae: 90 nop - 1012af: c9 leave - 1012b0: c3 ret - -001012b1 : - -/* serial_putc - print character to serial port */ -static void -serial_putc(int c) { - 1012b1: 55 push %ebp - 1012b2: 89 e5 mov %esp,%ebp - if (c != '\b') { - 1012b4: 83 7d 08 08 cmpl $0x8,0x8(%ebp) - 1012b8: 74 0d je 1012c7 - serial_putc_sub(c); - 1012ba: ff 75 08 pushl 0x8(%ebp) - 1012bd: e8 95 ff ff ff call 101257 - 1012c2: 83 c4 04 add $0x4,%esp - else { - serial_putc_sub('\b'); - serial_putc_sub(' '); - serial_putc_sub('\b'); - } -} - 1012c5: eb 1e jmp 1012e5 -serial_putc(int c) { - if (c != '\b') { - serial_putc_sub(c); - } - else { - serial_putc_sub('\b'); - 1012c7: 6a 08 push $0x8 - 1012c9: e8 89 ff ff ff call 101257 - 1012ce: 83 c4 04 add $0x4,%esp - serial_putc_sub(' '); - 1012d1: 6a 20 push $0x20 - 1012d3: e8 7f ff ff ff call 101257 - 1012d8: 83 c4 04 add $0x4,%esp - serial_putc_sub('\b'); - 1012db: 6a 08 push $0x8 - 1012dd: e8 75 ff ff ff call 101257 - 1012e2: 83 c4 04 add $0x4,%esp - } -} - 1012e5: 90 nop - 1012e6: c9 leave - 1012e7: c3 ret - -001012e8 : -/* * - * cons_intr - called by device interrupt routines to feed input - * characters into the circular console input buffer. - * */ -static void -cons_intr(int (*proc)(void)) { - 1012e8: 55 push %ebp - 1012e9: 89 e5 mov %esp,%ebp - 1012eb: 83 ec 18 sub $0x18,%esp - int c; - while ((c = (*proc)()) != -1) { - 1012ee: eb 33 jmp 101323 - if (c != 0) { - 1012f0: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) - 1012f4: 74 2d je 101323 - cons.buf[cons.wpos ++] = c; - 1012f6: a1 84 f0 10 00 mov 0x10f084,%eax - 1012fb: 8d 50 01 lea 0x1(%eax),%edx - 1012fe: 89 15 84 f0 10 00 mov %edx,0x10f084 - 101304: 8b 55 f4 mov -0xc(%ebp),%edx - 101307: 88 90 80 ee 10 00 mov %dl,0x10ee80(%eax) - if (cons.wpos == CONSBUFSIZE) { - 10130d: a1 84 f0 10 00 mov 0x10f084,%eax - 101312: 3d 00 02 00 00 cmp $0x200,%eax - 101317: 75 0a jne 101323 - cons.wpos = 0; - 101319: c7 05 84 f0 10 00 00 movl $0x0,0x10f084 - 101320: 00 00 00 - * characters into the circular console input buffer. - * */ -static void -cons_intr(int (*proc)(void)) { - int c; - while ((c = (*proc)()) != -1) { - 101323: 8b 45 08 mov 0x8(%ebp),%eax - 101326: ff d0 call *%eax - 101328: 89 45 f4 mov %eax,-0xc(%ebp) - 10132b: 83 7d f4 ff cmpl $0xffffffff,-0xc(%ebp) - 10132f: 75 bf jne 1012f0 - if (cons.wpos == CONSBUFSIZE) { - cons.wpos = 0; - } - } - } -} - 101331: 90 nop - 101332: c9 leave - 101333: c3 ret - -00101334 : - -/* serial_proc_data - get data from serial port */ -static int -serial_proc_data(void) { - 101334: 55 push %ebp - 101335: 89 e5 mov %esp,%ebp - 101337: 83 ec 10 sub $0x10,%esp - 10133a: 66 c7 45 f8 fd 03 movw $0x3fd,-0x8(%ebp) -static inline void ltr(uint16_t sel) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port)); - 101340: 0f b7 45 f8 movzwl -0x8(%ebp),%eax - 101344: 89 c2 mov %eax,%edx - 101346: ec in (%dx),%al - 101347: 88 45 f7 mov %al,-0x9(%ebp) - return data; - 10134a: 0f b6 45 f7 movzbl -0x9(%ebp),%eax - if (!(inb(COM1 + COM_LSR) & COM_LSR_DATA)) { - 10134e: 0f b6 c0 movzbl %al,%eax - 101351: 83 e0 01 and $0x1,%eax - 101354: 85 c0 test %eax,%eax - 101356: 75 07 jne 10135f - return -1; - 101358: b8 ff ff ff ff mov $0xffffffff,%eax - 10135d: eb 2a jmp 101389 - 10135f: 66 c7 45 fa f8 03 movw $0x3f8,-0x6(%ebp) -static inline void ltr(uint16_t sel) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port)); - 101365: 0f b7 45 fa movzwl -0x6(%ebp),%eax - 101369: 89 c2 mov %eax,%edx - 10136b: ec in (%dx),%al - 10136c: 88 45 f6 mov %al,-0xa(%ebp) - return data; - 10136f: 0f b6 45 f6 movzbl -0xa(%ebp),%eax - } - int c = inb(COM1 + COM_RX); - 101373: 0f b6 c0 movzbl %al,%eax - 101376: 89 45 fc mov %eax,-0x4(%ebp) - if (c == 127) { - 101379: 83 7d fc 7f cmpl $0x7f,-0x4(%ebp) - 10137d: 75 07 jne 101386 - c = '\b'; - 10137f: c7 45 fc 08 00 00 00 movl $0x8,-0x4(%ebp) - } - return c; - 101386: 8b 45 fc mov -0x4(%ebp),%eax -} - 101389: c9 leave - 10138a: c3 ret - -0010138b : - -/* serial_intr - try to feed input characters from serial port */ -void -serial_intr(void) { - 10138b: 55 push %ebp - 10138c: 89 e5 mov %esp,%ebp - 10138e: 83 ec 08 sub $0x8,%esp - if (serial_exists) { - 101391: a1 68 ee 10 00 mov 0x10ee68,%eax - 101396: 85 c0 test %eax,%eax - 101398: 74 10 je 1013aa - cons_intr(serial_proc_data); - 10139a: 83 ec 0c sub $0xc,%esp - 10139d: 68 34 13 10 00 push $0x101334 - 1013a2: e8 41 ff ff ff call 1012e8 - 1013a7: 83 c4 10 add $0x10,%esp - } -} - 1013aa: 90 nop - 1013ab: c9 leave - 1013ac: c3 ret - -001013ad : - * - * The kbd_proc_data() function gets data from the keyboard. - * If we finish a character, return it, else 0. And return -1 if no data. - * */ -static int -kbd_proc_data(void) { - 1013ad: 55 push %ebp - 1013ae: 89 e5 mov %esp,%ebp - 1013b0: 83 ec 18 sub $0x18,%esp - 1013b3: 66 c7 45 ec 64 00 movw $0x64,-0x14(%ebp) -static inline void ltr(uint16_t sel) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port)); - 1013b9: 0f b7 45 ec movzwl -0x14(%ebp),%eax - 1013bd: 89 c2 mov %eax,%edx - 1013bf: ec in (%dx),%al - 1013c0: 88 45 eb mov %al,-0x15(%ebp) - return data; - 1013c3: 0f b6 45 eb movzbl -0x15(%ebp),%eax - int c; - uint8_t data; - static uint32_t shift; - - if ((inb(KBSTATP) & KBS_DIB) == 0) { - 1013c7: 0f b6 c0 movzbl %al,%eax - 1013ca: 83 e0 01 and $0x1,%eax - 1013cd: 85 c0 test %eax,%eax - 1013cf: 75 0a jne 1013db - return -1; - 1013d1: b8 ff ff ff ff mov $0xffffffff,%eax - 1013d6: e9 5d 01 00 00 jmp 101538 - 1013db: 66 c7 45 f0 60 00 movw $0x60,-0x10(%ebp) -static inline void ltr(uint16_t sel) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port)); - 1013e1: 0f b7 45 f0 movzwl -0x10(%ebp),%eax - 1013e5: 89 c2 mov %eax,%edx - 1013e7: ec in (%dx),%al - 1013e8: 88 45 ea mov %al,-0x16(%ebp) - return data; - 1013eb: 0f b6 45 ea movzbl -0x16(%ebp),%eax - } - - data = inb(KBDATAP); - 1013ef: 88 45 f3 mov %al,-0xd(%ebp) - - if (data == 0xE0) { - 1013f2: 80 7d f3 e0 cmpb $0xe0,-0xd(%ebp) - 1013f6: 75 17 jne 10140f - // E0 escape character - shift |= E0ESC; - 1013f8: a1 88 f0 10 00 mov 0x10f088,%eax - 1013fd: 83 c8 40 or $0x40,%eax - 101400: a3 88 f0 10 00 mov %eax,0x10f088 - return 0; - 101405: b8 00 00 00 00 mov $0x0,%eax - 10140a: e9 29 01 00 00 jmp 101538 - } else if (data & 0x80) { - 10140f: 0f b6 45 f3 movzbl -0xd(%ebp),%eax - 101413: 84 c0 test %al,%al - 101415: 79 47 jns 10145e - // Key released - data = (shift & E0ESC ? data : data & 0x7F); - 101417: a1 88 f0 10 00 mov 0x10f088,%eax - 10141c: 83 e0 40 and $0x40,%eax - 10141f: 85 c0 test %eax,%eax - 101421: 75 09 jne 10142c - 101423: 0f b6 45 f3 movzbl -0xd(%ebp),%eax - 101427: 83 e0 7f and $0x7f,%eax - 10142a: eb 04 jmp 101430 - 10142c: 0f b6 45 f3 movzbl -0xd(%ebp),%eax - 101430: 88 45 f3 mov %al,-0xd(%ebp) - shift &= ~(shiftcode[data] | E0ESC); - 101433: 0f b6 45 f3 movzbl -0xd(%ebp),%eax - 101437: 0f b6 80 40 e0 10 00 movzbl 0x10e040(%eax),%eax - 10143e: 83 c8 40 or $0x40,%eax - 101441: 0f b6 c0 movzbl %al,%eax - 101444: f7 d0 not %eax - 101446: 89 c2 mov %eax,%edx - 101448: a1 88 f0 10 00 mov 0x10f088,%eax - 10144d: 21 d0 and %edx,%eax - 10144f: a3 88 f0 10 00 mov %eax,0x10f088 - return 0; - 101454: b8 00 00 00 00 mov $0x0,%eax - 101459: e9 da 00 00 00 jmp 101538 - } else if (shift & E0ESC) { - 10145e: a1 88 f0 10 00 mov 0x10f088,%eax - 101463: 83 e0 40 and $0x40,%eax - 101466: 85 c0 test %eax,%eax - 101468: 74 11 je 10147b - // Last character was an E0 escape; or with 0x80 - data |= 0x80; - 10146a: 80 4d f3 80 orb $0x80,-0xd(%ebp) - shift &= ~E0ESC; - 10146e: a1 88 f0 10 00 mov 0x10f088,%eax - 101473: 83 e0 bf and $0xffffffbf,%eax - 101476: a3 88 f0 10 00 mov %eax,0x10f088 - } - - shift |= shiftcode[data]; - 10147b: 0f b6 45 f3 movzbl -0xd(%ebp),%eax - 10147f: 0f b6 80 40 e0 10 00 movzbl 0x10e040(%eax),%eax - 101486: 0f b6 d0 movzbl %al,%edx - 101489: a1 88 f0 10 00 mov 0x10f088,%eax - 10148e: 09 d0 or %edx,%eax - 101490: a3 88 f0 10 00 mov %eax,0x10f088 - shift ^= togglecode[data]; - 101495: 0f b6 45 f3 movzbl -0xd(%ebp),%eax - 101499: 0f b6 80 40 e1 10 00 movzbl 0x10e140(%eax),%eax - 1014a0: 0f b6 d0 movzbl %al,%edx - 1014a3: a1 88 f0 10 00 mov 0x10f088,%eax - 1014a8: 31 d0 xor %edx,%eax - 1014aa: a3 88 f0 10 00 mov %eax,0x10f088 - - c = charcode[shift & (CTL | SHIFT)][data]; - 1014af: a1 88 f0 10 00 mov 0x10f088,%eax - 1014b4: 83 e0 03 and $0x3,%eax - 1014b7: 8b 14 85 40 e5 10 00 mov 0x10e540(,%eax,4),%edx - 1014be: 0f b6 45 f3 movzbl -0xd(%ebp),%eax - 1014c2: 01 d0 add %edx,%eax - 1014c4: 0f b6 00 movzbl (%eax),%eax - 1014c7: 0f b6 c0 movzbl %al,%eax - 1014ca: 89 45 f4 mov %eax,-0xc(%ebp) - if (shift & CAPSLOCK) { - 1014cd: a1 88 f0 10 00 mov 0x10f088,%eax - 1014d2: 83 e0 08 and $0x8,%eax - 1014d5: 85 c0 test %eax,%eax - 1014d7: 74 22 je 1014fb - if ('a' <= c && c <= 'z') - 1014d9: 83 7d f4 60 cmpl $0x60,-0xc(%ebp) - 1014dd: 7e 0c jle 1014eb - 1014df: 83 7d f4 7a cmpl $0x7a,-0xc(%ebp) - 1014e3: 7f 06 jg 1014eb - c += 'A' - 'a'; - 1014e5: 83 6d f4 20 subl $0x20,-0xc(%ebp) - 1014e9: eb 10 jmp 1014fb - else if ('A' <= c && c <= 'Z') - 1014eb: 83 7d f4 40 cmpl $0x40,-0xc(%ebp) - 1014ef: 7e 0a jle 1014fb - 1014f1: 83 7d f4 5a cmpl $0x5a,-0xc(%ebp) - 1014f5: 7f 04 jg 1014fb - c += 'a' - 'A'; - 1014f7: 83 45 f4 20 addl $0x20,-0xc(%ebp) - } - - // Process special keys - // Ctrl-Alt-Del: reboot - if (!(~shift & (CTL | ALT)) && c == KEY_DEL) { - 1014fb: a1 88 f0 10 00 mov 0x10f088,%eax - 101500: f7 d0 not %eax - 101502: 83 e0 06 and $0x6,%eax - 101505: 85 c0 test %eax,%eax - 101507: 75 2c jne 101535 - 101509: 81 7d f4 e9 00 00 00 cmpl $0xe9,-0xc(%ebp) - 101510: 75 23 jne 101535 - cprintf("Rebooting!\n"); - 101512: 83 ec 0c sub $0xc,%esp - 101515: 68 1d 39 10 00 push $0x10391d - 10151a: e8 49 ed ff ff call 100268 - 10151f: 83 c4 10 add $0x10,%esp - 101522: 66 c7 45 ee 92 00 movw $0x92,-0x12(%ebp) - 101528: c6 45 e9 03 movb $0x3,-0x17(%ebp) - : "memory", "cc"); -} - -static inline void -outb(uint16_t port, uint8_t data) { - asm volatile ("outb %0, %1" :: "a" (data), "d" (port)); - 10152c: 0f b6 45 e9 movzbl -0x17(%ebp),%eax - 101530: 0f b7 55 ee movzwl -0x12(%ebp),%edx - 101534: ee out %al,(%dx) - outb(0x92, 0x3); // courtesy of Chris Frost - } - return c; - 101535: 8b 45 f4 mov -0xc(%ebp),%eax -} - 101538: c9 leave - 101539: c3 ret - -0010153a : - -/* kbd_intr - try to feed input characters from keyboard */ -static void -kbd_intr(void) { - 10153a: 55 push %ebp - 10153b: 89 e5 mov %esp,%ebp - 10153d: 83 ec 08 sub $0x8,%esp - cons_intr(kbd_proc_data); - 101540: 83 ec 0c sub $0xc,%esp - 101543: 68 ad 13 10 00 push $0x1013ad - 101548: e8 9b fd ff ff call 1012e8 - 10154d: 83 c4 10 add $0x10,%esp -} - 101550: 90 nop - 101551: c9 leave - 101552: c3 ret - -00101553 : - -static void -kbd_init(void) { - 101553: 55 push %ebp - 101554: 89 e5 mov %esp,%ebp - 101556: 83 ec 08 sub $0x8,%esp - // drain the kbd buffer - kbd_intr(); - 101559: e8 dc ff ff ff call 10153a - pic_enable(IRQ_KBD); - 10155e: 83 ec 0c sub $0xc,%esp - 101561: 6a 01 push $0x1 - 101563: e8 1c 01 00 00 call 101684 - 101568: 83 c4 10 add $0x10,%esp -} - 10156b: 90 nop - 10156c: c9 leave - 10156d: c3 ret - -0010156e : - -/* cons_init - initializes the console devices */ -void -cons_init(void) { - 10156e: 55 push %ebp - 10156f: 89 e5 mov %esp,%ebp - 101571: 83 ec 08 sub $0x8,%esp - cga_init(); - 101574: e8 8c f8 ff ff call 100e05 - serial_init(); - 101579: e8 6e f9 ff ff call 100eec - kbd_init(); - 10157e: e8 d0 ff ff ff call 101553 - if (!serial_exists) { - 101583: a1 68 ee 10 00 mov 0x10ee68,%eax - 101588: 85 c0 test %eax,%eax - 10158a: 75 10 jne 10159c - cprintf("serial port does not exist!!\n"); - 10158c: 83 ec 0c sub $0xc,%esp - 10158f: 68 29 39 10 00 push $0x103929 - 101594: e8 cf ec ff ff call 100268 - 101599: 83 c4 10 add $0x10,%esp - } -} - 10159c: 90 nop - 10159d: c9 leave - 10159e: c3 ret - -0010159f : - -/* cons_putc - print a single character @c to console devices */ -void -cons_putc(int c) { - 10159f: 55 push %ebp - 1015a0: 89 e5 mov %esp,%ebp - 1015a2: 83 ec 08 sub $0x8,%esp - lpt_putc(c); - 1015a5: ff 75 08 pushl 0x8(%ebp) - 1015a8: e8 9e fa ff ff call 10104b - 1015ad: 83 c4 04 add $0x4,%esp - cga_putc(c); - 1015b0: 83 ec 0c sub $0xc,%esp - 1015b3: ff 75 08 pushl 0x8(%ebp) - 1015b6: e8 c7 fa ff ff call 101082 - 1015bb: 83 c4 10 add $0x10,%esp - serial_putc(c); - 1015be: 83 ec 0c sub $0xc,%esp - 1015c1: ff 75 08 pushl 0x8(%ebp) - 1015c4: e8 e8 fc ff ff call 1012b1 - 1015c9: 83 c4 10 add $0x10,%esp -} - 1015cc: 90 nop - 1015cd: c9 leave - 1015ce: c3 ret - -001015cf : -/* * - * cons_getc - return the next input character from console, - * or 0 if none waiting. - * */ -int -cons_getc(void) { - 1015cf: 55 push %ebp - 1015d0: 89 e5 mov %esp,%ebp - 1015d2: 83 ec 18 sub $0x18,%esp - int c; - - // poll for any pending input characters, - // so that this function works even when interrupts are disabled - // (e.g., when called from the kernel monitor). - serial_intr(); - 1015d5: e8 b1 fd ff ff call 10138b - kbd_intr(); - 1015da: e8 5b ff ff ff call 10153a - - // grab the next character from the input buffer. - if (cons.rpos != cons.wpos) { - 1015df: 8b 15 80 f0 10 00 mov 0x10f080,%edx - 1015e5: a1 84 f0 10 00 mov 0x10f084,%eax - 1015ea: 39 c2 cmp %eax,%edx - 1015ec: 74 36 je 101624 - c = cons.buf[cons.rpos ++]; - 1015ee: a1 80 f0 10 00 mov 0x10f080,%eax - 1015f3: 8d 50 01 lea 0x1(%eax),%edx - 1015f6: 89 15 80 f0 10 00 mov %edx,0x10f080 - 1015fc: 0f b6 80 80 ee 10 00 movzbl 0x10ee80(%eax),%eax - 101603: 0f b6 c0 movzbl %al,%eax - 101606: 89 45 f4 mov %eax,-0xc(%ebp) - if (cons.rpos == CONSBUFSIZE) { - 101609: a1 80 f0 10 00 mov 0x10f080,%eax - 10160e: 3d 00 02 00 00 cmp $0x200,%eax - 101613: 75 0a jne 10161f - cons.rpos = 0; - 101615: c7 05 80 f0 10 00 00 movl $0x0,0x10f080 - 10161c: 00 00 00 - } - return c; - 10161f: 8b 45 f4 mov -0xc(%ebp),%eax - 101622: eb 05 jmp 101629 - } - return 0; - 101624: b8 00 00 00 00 mov $0x0,%eax -} - 101629: c9 leave - 10162a: c3 ret - -0010162b : -// Initial IRQ mask has interrupt 2 enabled (for slave 8259A). -static uint16_t irq_mask = 0xFFFF & ~(1 << IRQ_SLAVE); -static bool did_init = 0; - -static void -pic_setmask(uint16_t mask) { - 10162b: 55 push %ebp - 10162c: 89 e5 mov %esp,%ebp - 10162e: 83 ec 14 sub $0x14,%esp - 101631: 8b 45 08 mov 0x8(%ebp),%eax - 101634: 66 89 45 ec mov %ax,-0x14(%ebp) - irq_mask = mask; - 101638: 0f b7 45 ec movzwl -0x14(%ebp),%eax - 10163c: 66 a3 50 e5 10 00 mov %ax,0x10e550 - if (did_init) { - 101642: a1 8c f0 10 00 mov 0x10f08c,%eax - 101647: 85 c0 test %eax,%eax - 101649: 74 36 je 101681 - outb(IO_PIC1 + 1, mask); - 10164b: 0f b7 45 ec movzwl -0x14(%ebp),%eax - 10164f: 0f b6 c0 movzbl %al,%eax - 101652: 66 c7 45 fe 21 00 movw $0x21,-0x2(%ebp) - 101658: 88 45 fa mov %al,-0x6(%ebp) - 10165b: 0f b6 45 fa movzbl -0x6(%ebp),%eax - 10165f: 0f b7 55 fe movzwl -0x2(%ebp),%edx - 101663: ee out %al,(%dx) - outb(IO_PIC2 + 1, mask >> 8); - 101664: 0f b7 45 ec movzwl -0x14(%ebp),%eax - 101668: 66 c1 e8 08 shr $0x8,%ax - 10166c: 0f b6 c0 movzbl %al,%eax - 10166f: 66 c7 45 fc a1 00 movw $0xa1,-0x4(%ebp) - 101675: 88 45 fb mov %al,-0x5(%ebp) - 101678: 0f b6 45 fb movzbl -0x5(%ebp),%eax - 10167c: 0f b7 55 fc movzwl -0x4(%ebp),%edx - 101680: ee out %al,(%dx) - } -} - 101681: 90 nop - 101682: c9 leave - 101683: c3 ret - -00101684 : - -void -pic_enable(unsigned int irq) { - 101684: 55 push %ebp - 101685: 89 e5 mov %esp,%ebp - pic_setmask(irq_mask & ~(1 << irq)); - 101687: 8b 45 08 mov 0x8(%ebp),%eax - 10168a: ba 01 00 00 00 mov $0x1,%edx - 10168f: 89 c1 mov %eax,%ecx - 101691: d3 e2 shl %cl,%edx - 101693: 89 d0 mov %edx,%eax - 101695: f7 d0 not %eax - 101697: 89 c2 mov %eax,%edx - 101699: 0f b7 05 50 e5 10 00 movzwl 0x10e550,%eax - 1016a0: 21 d0 and %edx,%eax - 1016a2: 0f b7 c0 movzwl %ax,%eax - 1016a5: 50 push %eax - 1016a6: e8 80 ff ff ff call 10162b - 1016ab: 83 c4 04 add $0x4,%esp -} - 1016ae: 90 nop - 1016af: c9 leave - 1016b0: c3 ret - -001016b1 : - -/* pic_init - initialize the 8259A interrupt controllers */ -void -pic_init(void) { - 1016b1: 55 push %ebp - 1016b2: 89 e5 mov %esp,%ebp - 1016b4: 83 ec 30 sub $0x30,%esp - did_init = 1; - 1016b7: c7 05 8c f0 10 00 01 movl $0x1,0x10f08c - 1016be: 00 00 00 - 1016c1: 66 c7 45 fe 21 00 movw $0x21,-0x2(%ebp) - 1016c7: c6 45 d6 ff movb $0xff,-0x2a(%ebp) - 1016cb: 0f b6 45 d6 movzbl -0x2a(%ebp),%eax - 1016cf: 0f b7 55 fe movzwl -0x2(%ebp),%edx - 1016d3: ee out %al,(%dx) - 1016d4: 66 c7 45 fc a1 00 movw $0xa1,-0x4(%ebp) - 1016da: c6 45 d7 ff movb $0xff,-0x29(%ebp) - 1016de: 0f b6 45 d7 movzbl -0x29(%ebp),%eax - 1016e2: 0f b7 55 fc movzwl -0x4(%ebp),%edx - 1016e6: ee out %al,(%dx) - 1016e7: 66 c7 45 fa 20 00 movw $0x20,-0x6(%ebp) - 1016ed: c6 45 d8 11 movb $0x11,-0x28(%ebp) - 1016f1: 0f b6 45 d8 movzbl -0x28(%ebp),%eax - 1016f5: 0f b7 55 fa movzwl -0x6(%ebp),%edx - 1016f9: ee out %al,(%dx) - 1016fa: 66 c7 45 f8 21 00 movw $0x21,-0x8(%ebp) - 101700: c6 45 d9 20 movb $0x20,-0x27(%ebp) - 101704: 0f b6 45 d9 movzbl -0x27(%ebp),%eax - 101708: 0f b7 55 f8 movzwl -0x8(%ebp),%edx - 10170c: ee out %al,(%dx) - 10170d: 66 c7 45 f6 21 00 movw $0x21,-0xa(%ebp) - 101713: c6 45 da 04 movb $0x4,-0x26(%ebp) - 101717: 0f b6 45 da movzbl -0x26(%ebp),%eax - 10171b: 0f b7 55 f6 movzwl -0xa(%ebp),%edx - 10171f: ee out %al,(%dx) - 101720: 66 c7 45 f4 21 00 movw $0x21,-0xc(%ebp) - 101726: c6 45 db 03 movb $0x3,-0x25(%ebp) - 10172a: 0f b6 45 db movzbl -0x25(%ebp),%eax - 10172e: 0f b7 55 f4 movzwl -0xc(%ebp),%edx - 101732: ee out %al,(%dx) - 101733: 66 c7 45 f2 a0 00 movw $0xa0,-0xe(%ebp) - 101739: c6 45 dc 11 movb $0x11,-0x24(%ebp) - 10173d: 0f b6 45 dc movzbl -0x24(%ebp),%eax - 101741: 0f b7 55 f2 movzwl -0xe(%ebp),%edx - 101745: ee out %al,(%dx) - 101746: 66 c7 45 f0 a1 00 movw $0xa1,-0x10(%ebp) - 10174c: c6 45 dd 28 movb $0x28,-0x23(%ebp) - 101750: 0f b6 45 dd movzbl -0x23(%ebp),%eax - 101754: 0f b7 55 f0 movzwl -0x10(%ebp),%edx - 101758: ee out %al,(%dx) - 101759: 66 c7 45 ee a1 00 movw $0xa1,-0x12(%ebp) - 10175f: c6 45 de 02 movb $0x2,-0x22(%ebp) - 101763: 0f b6 45 de movzbl -0x22(%ebp),%eax - 101767: 0f b7 55 ee movzwl -0x12(%ebp),%edx - 10176b: ee out %al,(%dx) - 10176c: 66 c7 45 ec a1 00 movw $0xa1,-0x14(%ebp) - 101772: c6 45 df 03 movb $0x3,-0x21(%ebp) - 101776: 0f b6 45 df movzbl -0x21(%ebp),%eax - 10177a: 0f b7 55 ec movzwl -0x14(%ebp),%edx - 10177e: ee out %al,(%dx) - 10177f: 66 c7 45 ea 20 00 movw $0x20,-0x16(%ebp) - 101785: c6 45 e0 68 movb $0x68,-0x20(%ebp) - 101789: 0f b6 45 e0 movzbl -0x20(%ebp),%eax - 10178d: 0f b7 55 ea movzwl -0x16(%ebp),%edx - 101791: ee out %al,(%dx) - 101792: 66 c7 45 e8 20 00 movw $0x20,-0x18(%ebp) - 101798: c6 45 e1 0a movb $0xa,-0x1f(%ebp) - 10179c: 0f b6 45 e1 movzbl -0x1f(%ebp),%eax - 1017a0: 0f b7 55 e8 movzwl -0x18(%ebp),%edx - 1017a4: ee out %al,(%dx) - 1017a5: 66 c7 45 e6 a0 00 movw $0xa0,-0x1a(%ebp) - 1017ab: c6 45 e2 68 movb $0x68,-0x1e(%ebp) - 1017af: 0f b6 45 e2 movzbl -0x1e(%ebp),%eax - 1017b3: 0f b7 55 e6 movzwl -0x1a(%ebp),%edx - 1017b7: ee out %al,(%dx) - 1017b8: 66 c7 45 e4 a0 00 movw $0xa0,-0x1c(%ebp) - 1017be: c6 45 e3 0a movb $0xa,-0x1d(%ebp) - 1017c2: 0f b6 45 e3 movzbl -0x1d(%ebp),%eax - 1017c6: 0f b7 55 e4 movzwl -0x1c(%ebp),%edx - 1017ca: ee out %al,(%dx) - outb(IO_PIC1, 0x0a); // read IRR by default - - outb(IO_PIC2, 0x68); // OCW3 - outb(IO_PIC2, 0x0a); // OCW3 - - if (irq_mask != 0xFFFF) { - 1017cb: 0f b7 05 50 e5 10 00 movzwl 0x10e550,%eax - 1017d2: 66 83 f8 ff cmp $0xffff,%ax - 1017d6: 74 13 je 1017eb - pic_setmask(irq_mask); - 1017d8: 0f b7 05 50 e5 10 00 movzwl 0x10e550,%eax - 1017df: 0f b7 c0 movzwl %ax,%eax - 1017e2: 50 push %eax - 1017e3: e8 43 fe ff ff call 10162b - 1017e8: 83 c4 04 add $0x4,%esp - } -} - 1017eb: 90 nop - 1017ec: c9 leave - 1017ed: c3 ret - -001017ee : -#include -#include - -/* intr_enable - enable irq interrupt */ -void -intr_enable(void) { - 1017ee: 55 push %ebp - 1017ef: 89 e5 mov %esp,%ebp - asm volatile ("lidt (%0)" :: "r" (pd)); -} - -static inline void -sti(void) { - asm volatile ("sti"); - 1017f1: fb sti - sti(); -} - 1017f2: 90 nop - 1017f3: 5d pop %ebp - 1017f4: c3 ret - -001017f5 : - -/* intr_disable - disable irq interrupt */ -void -intr_disable(void) { - 1017f5: 55 push %ebp - 1017f6: 89 e5 mov %esp,%ebp -} - -static inline void -cli(void) { - asm volatile ("cli"); - 1017f8: fa cli - cli(); -} - 1017f9: 90 nop - 1017fa: 5d pop %ebp - 1017fb: c3 ret - -001017fc : -#include -#include - -#define TICK_NUM 100 - -static void print_ticks() { - 1017fc: 55 push %ebp - 1017fd: 89 e5 mov %esp,%ebp - 1017ff: 83 ec 08 sub $0x8,%esp - cprintf("%d ticks\n",TICK_NUM); - 101802: 83 ec 08 sub $0x8,%esp - 101805: 6a 64 push $0x64 - 101807: 68 60 39 10 00 push $0x103960 - 10180c: e8 57 ea ff ff call 100268 - 101811: 83 c4 10 add $0x10,%esp -#ifdef DEBUG_GRADE - cprintf("End of Test.\n"); - 101814: 83 ec 0c sub $0xc,%esp - 101817: 68 6a 39 10 00 push $0x10396a - 10181c: e8 47 ea ff ff call 100268 - 101821: 83 c4 10 add $0x10,%esp - panic("EOT: kernel seems ok."); - 101824: 83 ec 04 sub $0x4,%esp - 101827: 68 78 39 10 00 push $0x103978 - 10182c: 6a 12 push $0x12 - 10182e: 68 8e 39 10 00 push $0x10398e - 101833: e8 96 eb ff ff call 1003ce <__panic> - -00101838 : - sizeof(idt) - 1, (uintptr_t)idt -}; - -/* idt_init - initialize IDT to each of the entry points in kern/trap/vectors.S */ -void -idt_init(void) { - 101838: 55 push %ebp - 101839: 89 e5 mov %esp,%ebp - 10183b: 83 ec 10 sub $0x10,%esp - * (3) After setup the contents of IDT, you will let CPU know where is the IDT by using 'lidt' instruction. - * You don't know the meaning of this instruction? just google it! and check the libs/x86.h to know more. - * Notice: the argument of lidt is idt_pd. try to find it! - */ - extern uintptr_t __vectors[]; - for (int i = 0; i < 256; ++ i) { - 10183e: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp) - 101845: e9 97 01 00 00 jmp 1019e1 -// cprintf("vectors %d: 0x%08x\n", i, __vectors[i]); - if (i == T_SYSCALL || i == T_SWITCH_TOK) { - 10184a: 81 7d fc 80 00 00 00 cmpl $0x80,-0x4(%ebp) - 101851: 74 0a je 10185d - 101853: 83 7d fc 79 cmpl $0x79,-0x4(%ebp) - 101857: 0f 85 c1 00 00 00 jne 10191e - SETGATE(idt[i], 1, KERNEL_CS, __vectors[i], DPL_USER); - 10185d: 8b 45 fc mov -0x4(%ebp),%eax - 101860: 8b 04 85 e0 e5 10 00 mov 0x10e5e0(,%eax,4),%eax - 101867: 89 c2 mov %eax,%edx - 101869: 8b 45 fc mov -0x4(%ebp),%eax - 10186c: 66 89 14 c5 c0 f0 10 mov %dx,0x10f0c0(,%eax,8) - 101873: 00 - 101874: 8b 45 fc mov -0x4(%ebp),%eax - 101877: 66 c7 04 c5 c2 f0 10 movw $0x8,0x10f0c2(,%eax,8) - 10187e: 00 08 00 - 101881: 8b 45 fc mov -0x4(%ebp),%eax - 101884: 0f b6 14 c5 c4 f0 10 movzbl 0x10f0c4(,%eax,8),%edx - 10188b: 00 - 10188c: 83 e2 e0 and $0xffffffe0,%edx - 10188f: 88 14 c5 c4 f0 10 00 mov %dl,0x10f0c4(,%eax,8) - 101896: 8b 45 fc mov -0x4(%ebp),%eax - 101899: 0f b6 14 c5 c4 f0 10 movzbl 0x10f0c4(,%eax,8),%edx - 1018a0: 00 - 1018a1: 83 e2 1f and $0x1f,%edx - 1018a4: 88 14 c5 c4 f0 10 00 mov %dl,0x10f0c4(,%eax,8) - 1018ab: 8b 45 fc mov -0x4(%ebp),%eax - 1018ae: 0f b6 14 c5 c5 f0 10 movzbl 0x10f0c5(,%eax,8),%edx - 1018b5: 00 - 1018b6: 83 ca 0f or $0xf,%edx - 1018b9: 88 14 c5 c5 f0 10 00 mov %dl,0x10f0c5(,%eax,8) - 1018c0: 8b 45 fc mov -0x4(%ebp),%eax - 1018c3: 0f b6 14 c5 c5 f0 10 movzbl 0x10f0c5(,%eax,8),%edx - 1018ca: 00 - 1018cb: 83 e2 ef and $0xffffffef,%edx - 1018ce: 88 14 c5 c5 f0 10 00 mov %dl,0x10f0c5(,%eax,8) - 1018d5: 8b 45 fc mov -0x4(%ebp),%eax - 1018d8: 0f b6 14 c5 c5 f0 10 movzbl 0x10f0c5(,%eax,8),%edx - 1018df: 00 - 1018e0: 83 ca 60 or $0x60,%edx - 1018e3: 88 14 c5 c5 f0 10 00 mov %dl,0x10f0c5(,%eax,8) - 1018ea: 8b 45 fc mov -0x4(%ebp),%eax - 1018ed: 0f b6 14 c5 c5 f0 10 movzbl 0x10f0c5(,%eax,8),%edx - 1018f4: 00 - 1018f5: 83 ca 80 or $0xffffff80,%edx - 1018f8: 88 14 c5 c5 f0 10 00 mov %dl,0x10f0c5(,%eax,8) - 1018ff: 8b 45 fc mov -0x4(%ebp),%eax - 101902: 8b 04 85 e0 e5 10 00 mov 0x10e5e0(,%eax,4),%eax - 101909: c1 e8 10 shr $0x10,%eax - 10190c: 89 c2 mov %eax,%edx - 10190e: 8b 45 fc mov -0x4(%ebp),%eax - 101911: 66 89 14 c5 c6 f0 10 mov %dx,0x10f0c6(,%eax,8) - 101918: 00 - 101919: e9 bf 00 00 00 jmp 1019dd - } else { - SETGATE(idt[i], 0, KERNEL_CS, __vectors[i], DPL_KERNEL); - 10191e: 8b 45 fc mov -0x4(%ebp),%eax - 101921: 8b 04 85 e0 e5 10 00 mov 0x10e5e0(,%eax,4),%eax - 101928: 89 c2 mov %eax,%edx - 10192a: 8b 45 fc mov -0x4(%ebp),%eax - 10192d: 66 89 14 c5 c0 f0 10 mov %dx,0x10f0c0(,%eax,8) - 101934: 00 - 101935: 8b 45 fc mov -0x4(%ebp),%eax - 101938: 66 c7 04 c5 c2 f0 10 movw $0x8,0x10f0c2(,%eax,8) - 10193f: 00 08 00 - 101942: 8b 45 fc mov -0x4(%ebp),%eax - 101945: 0f b6 14 c5 c4 f0 10 movzbl 0x10f0c4(,%eax,8),%edx - 10194c: 00 - 10194d: 83 e2 e0 and $0xffffffe0,%edx - 101950: 88 14 c5 c4 f0 10 00 mov %dl,0x10f0c4(,%eax,8) - 101957: 8b 45 fc mov -0x4(%ebp),%eax - 10195a: 0f b6 14 c5 c4 f0 10 movzbl 0x10f0c4(,%eax,8),%edx - 101961: 00 - 101962: 83 e2 1f and $0x1f,%edx - 101965: 88 14 c5 c4 f0 10 00 mov %dl,0x10f0c4(,%eax,8) - 10196c: 8b 45 fc mov -0x4(%ebp),%eax - 10196f: 0f b6 14 c5 c5 f0 10 movzbl 0x10f0c5(,%eax,8),%edx - 101976: 00 - 101977: 83 e2 f0 and $0xfffffff0,%edx - 10197a: 83 ca 0e or $0xe,%edx - 10197d: 88 14 c5 c5 f0 10 00 mov %dl,0x10f0c5(,%eax,8) - 101984: 8b 45 fc mov -0x4(%ebp),%eax - 101987: 0f b6 14 c5 c5 f0 10 movzbl 0x10f0c5(,%eax,8),%edx - 10198e: 00 - 10198f: 83 e2 ef and $0xffffffef,%edx - 101992: 88 14 c5 c5 f0 10 00 mov %dl,0x10f0c5(,%eax,8) - 101999: 8b 45 fc mov -0x4(%ebp),%eax - 10199c: 0f b6 14 c5 c5 f0 10 movzbl 0x10f0c5(,%eax,8),%edx - 1019a3: 00 - 1019a4: 83 e2 9f and $0xffffff9f,%edx - 1019a7: 88 14 c5 c5 f0 10 00 mov %dl,0x10f0c5(,%eax,8) - 1019ae: 8b 45 fc mov -0x4(%ebp),%eax - 1019b1: 0f b6 14 c5 c5 f0 10 movzbl 0x10f0c5(,%eax,8),%edx - 1019b8: 00 - 1019b9: 83 ca 80 or $0xffffff80,%edx - 1019bc: 88 14 c5 c5 f0 10 00 mov %dl,0x10f0c5(,%eax,8) - 1019c3: 8b 45 fc mov -0x4(%ebp),%eax - 1019c6: 8b 04 85 e0 e5 10 00 mov 0x10e5e0(,%eax,4),%eax - 1019cd: c1 e8 10 shr $0x10,%eax - 1019d0: 89 c2 mov %eax,%edx - 1019d2: 8b 45 fc mov -0x4(%ebp),%eax - 1019d5: 66 89 14 c5 c6 f0 10 mov %dx,0x10f0c6(,%eax,8) - 1019dc: 00 - * (3) After setup the contents of IDT, you will let CPU know where is the IDT by using 'lidt' instruction. - * You don't know the meaning of this instruction? just google it! and check the libs/x86.h to know more. - * Notice: the argument of lidt is idt_pd. try to find it! - */ - extern uintptr_t __vectors[]; - for (int i = 0; i < 256; ++ i) { - 1019dd: 83 45 fc 01 addl $0x1,-0x4(%ebp) - 1019e1: 81 7d fc ff 00 00 00 cmpl $0xff,-0x4(%ebp) - 1019e8: 0f 8e 5c fe ff ff jle 10184a - 1019ee: c7 45 f8 60 e5 10 00 movl $0x10e560,-0x8(%ebp) - return ebp; -} - -static inline void -lidt(struct pseudodesc *pd) { - asm volatile ("lidt (%0)" :: "r" (pd)); - 1019f5: 8b 45 f8 mov -0x8(%ebp),%eax - 1019f8: 0f 01 18 lidtl (%eax) - } else { - SETGATE(idt[i], 0, KERNEL_CS, __vectors[i], DPL_KERNEL); - } - } - lidt(&idt_pd); -} - 1019fb: 90 nop - 1019fc: c9 leave - 1019fd: c3 ret - -001019fe : - -static const char * -trapname(int trapno) { - 1019fe: 55 push %ebp - 1019ff: 89 e5 mov %esp,%ebp - "Alignment Check", - "Machine-Check", - "SIMD Floating-Point Exception" - }; - - if (trapno < sizeof(excnames)/sizeof(const char * const)) { - 101a01: 8b 45 08 mov 0x8(%ebp),%eax - 101a04: 83 f8 13 cmp $0x13,%eax - 101a07: 77 0c ja 101a15 - return excnames[trapno]; - 101a09: 8b 45 08 mov 0x8(%ebp),%eax - 101a0c: 8b 04 85 00 3d 10 00 mov 0x103d00(,%eax,4),%eax - 101a13: eb 18 jmp 101a2d - } - if (trapno >= IRQ_OFFSET && trapno < IRQ_OFFSET + 16) { - 101a15: 83 7d 08 1f cmpl $0x1f,0x8(%ebp) - 101a19: 7e 0d jle 101a28 - 101a1b: 83 7d 08 2f cmpl $0x2f,0x8(%ebp) - 101a1f: 7f 07 jg 101a28 - return "Hardware Interrupt"; - 101a21: b8 9f 39 10 00 mov $0x10399f,%eax - 101a26: eb 05 jmp 101a2d - } - return "(unknown trap)"; - 101a28: b8 b2 39 10 00 mov $0x1039b2,%eax -} - 101a2d: 5d pop %ebp - 101a2e: c3 ret - -00101a2f : - -/* trap_in_kernel - test if trap happened in kernel */ -bool -trap_in_kernel(struct trapframe *tf) { - 101a2f: 55 push %ebp - 101a30: 89 e5 mov %esp,%ebp - return (tf->tf_cs == (uint16_t)KERNEL_CS); - 101a32: 8b 45 08 mov 0x8(%ebp),%eax - 101a35: 0f b7 40 3c movzwl 0x3c(%eax),%eax - 101a39: 66 83 f8 08 cmp $0x8,%ax - 101a3d: 0f 94 c0 sete %al - 101a40: 0f b6 c0 movzbl %al,%eax -} - 101a43: 5d pop %ebp - 101a44: c3 ret - -00101a45 : - "TF", "IF", "DF", "OF", NULL, NULL, "NT", NULL, - "RF", "VM", "AC", "VIF", "VIP", "ID", NULL, NULL, -}; - -void -print_trapframe(struct trapframe *tf) { - 101a45: 55 push %ebp - 101a46: 89 e5 mov %esp,%ebp - 101a48: 83 ec 18 sub $0x18,%esp - cprintf("trapframe at %p\n", tf); - 101a4b: 83 ec 08 sub $0x8,%esp - 101a4e: ff 75 08 pushl 0x8(%ebp) - 101a51: 68 f3 39 10 00 push $0x1039f3 - 101a56: e8 0d e8 ff ff call 100268 - 101a5b: 83 c4 10 add $0x10,%esp - print_regs(&tf->tf_regs); - 101a5e: 8b 45 08 mov 0x8(%ebp),%eax - 101a61: 83 ec 0c sub $0xc,%esp - 101a64: 50 push %eax - 101a65: e8 b8 01 00 00 call 101c22 - 101a6a: 83 c4 10 add $0x10,%esp - cprintf(" ds 0x----%04x\n", tf->tf_ds); - 101a6d: 8b 45 08 mov 0x8(%ebp),%eax - 101a70: 0f b7 40 2c movzwl 0x2c(%eax),%eax - 101a74: 0f b7 c0 movzwl %ax,%eax - 101a77: 83 ec 08 sub $0x8,%esp - 101a7a: 50 push %eax - 101a7b: 68 04 3a 10 00 push $0x103a04 - 101a80: e8 e3 e7 ff ff call 100268 - 101a85: 83 c4 10 add $0x10,%esp - cprintf(" es 0x----%04x\n", tf->tf_es); - 101a88: 8b 45 08 mov 0x8(%ebp),%eax - 101a8b: 0f b7 40 28 movzwl 0x28(%eax),%eax - 101a8f: 0f b7 c0 movzwl %ax,%eax - 101a92: 83 ec 08 sub $0x8,%esp - 101a95: 50 push %eax - 101a96: 68 17 3a 10 00 push $0x103a17 - 101a9b: e8 c8 e7 ff ff call 100268 - 101aa0: 83 c4 10 add $0x10,%esp - cprintf(" fs 0x----%04x\n", tf->tf_fs); - 101aa3: 8b 45 08 mov 0x8(%ebp),%eax - 101aa6: 0f b7 40 24 movzwl 0x24(%eax),%eax - 101aaa: 0f b7 c0 movzwl %ax,%eax - 101aad: 83 ec 08 sub $0x8,%esp - 101ab0: 50 push %eax - 101ab1: 68 2a 3a 10 00 push $0x103a2a - 101ab6: e8 ad e7 ff ff call 100268 - 101abb: 83 c4 10 add $0x10,%esp - cprintf(" gs 0x----%04x\n", tf->tf_gs); - 101abe: 8b 45 08 mov 0x8(%ebp),%eax - 101ac1: 0f b7 40 20 movzwl 0x20(%eax),%eax - 101ac5: 0f b7 c0 movzwl %ax,%eax - 101ac8: 83 ec 08 sub $0x8,%esp - 101acb: 50 push %eax - 101acc: 68 3d 3a 10 00 push $0x103a3d - 101ad1: e8 92 e7 ff ff call 100268 - 101ad6: 83 c4 10 add $0x10,%esp - cprintf(" trap 0x%08x %s\n", tf->tf_trapno, trapname(tf->tf_trapno)); - 101ad9: 8b 45 08 mov 0x8(%ebp),%eax - 101adc: 8b 40 30 mov 0x30(%eax),%eax - 101adf: 83 ec 0c sub $0xc,%esp - 101ae2: 50 push %eax - 101ae3: e8 16 ff ff ff call 1019fe - 101ae8: 83 c4 10 add $0x10,%esp - 101aeb: 89 c2 mov %eax,%edx - 101aed: 8b 45 08 mov 0x8(%ebp),%eax - 101af0: 8b 40 30 mov 0x30(%eax),%eax - 101af3: 83 ec 04 sub $0x4,%esp - 101af6: 52 push %edx - 101af7: 50 push %eax - 101af8: 68 50 3a 10 00 push $0x103a50 - 101afd: e8 66 e7 ff ff call 100268 - 101b02: 83 c4 10 add $0x10,%esp - cprintf(" err 0x%08x\n", tf->tf_err); - 101b05: 8b 45 08 mov 0x8(%ebp),%eax - 101b08: 8b 40 34 mov 0x34(%eax),%eax - 101b0b: 83 ec 08 sub $0x8,%esp - 101b0e: 50 push %eax - 101b0f: 68 62 3a 10 00 push $0x103a62 - 101b14: e8 4f e7 ff ff call 100268 - 101b19: 83 c4 10 add $0x10,%esp - cprintf(" eip 0x%08x\n", tf->tf_eip); - 101b1c: 8b 45 08 mov 0x8(%ebp),%eax - 101b1f: 8b 40 38 mov 0x38(%eax),%eax - 101b22: 83 ec 08 sub $0x8,%esp - 101b25: 50 push %eax - 101b26: 68 71 3a 10 00 push $0x103a71 - 101b2b: e8 38 e7 ff ff call 100268 - 101b30: 83 c4 10 add $0x10,%esp - cprintf(" cs 0x----%04x\n", tf->tf_cs); - 101b33: 8b 45 08 mov 0x8(%ebp),%eax - 101b36: 0f b7 40 3c movzwl 0x3c(%eax),%eax - 101b3a: 0f b7 c0 movzwl %ax,%eax - 101b3d: 83 ec 08 sub $0x8,%esp - 101b40: 50 push %eax - 101b41: 68 80 3a 10 00 push $0x103a80 - 101b46: e8 1d e7 ff ff call 100268 - 101b4b: 83 c4 10 add $0x10,%esp - cprintf(" flag 0x%08x ", tf->tf_eflags); - 101b4e: 8b 45 08 mov 0x8(%ebp),%eax - 101b51: 8b 40 40 mov 0x40(%eax),%eax - 101b54: 83 ec 08 sub $0x8,%esp - 101b57: 50 push %eax - 101b58: 68 93 3a 10 00 push $0x103a93 - 101b5d: e8 06 e7 ff ff call 100268 - 101b62: 83 c4 10 add $0x10,%esp - - int i, j; - for (i = 0, j = 1; i < sizeof(IA32flags) / sizeof(IA32flags[0]); i ++, j <<= 1) { - 101b65: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - 101b6c: c7 45 f0 01 00 00 00 movl $0x1,-0x10(%ebp) - 101b73: eb 3f jmp 101bb4 - if ((tf->tf_eflags & j) && IA32flags[i] != NULL) { - 101b75: 8b 45 08 mov 0x8(%ebp),%eax - 101b78: 8b 50 40 mov 0x40(%eax),%edx - 101b7b: 8b 45 f0 mov -0x10(%ebp),%eax - 101b7e: 21 d0 and %edx,%eax - 101b80: 85 c0 test %eax,%eax - 101b82: 74 29 je 101bad - 101b84: 8b 45 f4 mov -0xc(%ebp),%eax - 101b87: 8b 04 85 80 e5 10 00 mov 0x10e580(,%eax,4),%eax - 101b8e: 85 c0 test %eax,%eax - 101b90: 74 1b je 101bad - cprintf("%s,", IA32flags[i]); - 101b92: 8b 45 f4 mov -0xc(%ebp),%eax - 101b95: 8b 04 85 80 e5 10 00 mov 0x10e580(,%eax,4),%eax - 101b9c: 83 ec 08 sub $0x8,%esp - 101b9f: 50 push %eax - 101ba0: 68 a2 3a 10 00 push $0x103aa2 - 101ba5: e8 be e6 ff ff call 100268 - 101baa: 83 c4 10 add $0x10,%esp - cprintf(" eip 0x%08x\n", tf->tf_eip); - cprintf(" cs 0x----%04x\n", tf->tf_cs); - cprintf(" flag 0x%08x ", tf->tf_eflags); - - int i, j; - for (i = 0, j = 1; i < sizeof(IA32flags) / sizeof(IA32flags[0]); i ++, j <<= 1) { - 101bad: 83 45 f4 01 addl $0x1,-0xc(%ebp) - 101bb1: d1 65 f0 shll -0x10(%ebp) - 101bb4: 8b 45 f4 mov -0xc(%ebp),%eax - 101bb7: 83 f8 17 cmp $0x17,%eax - 101bba: 76 b9 jbe 101b75 - if ((tf->tf_eflags & j) && IA32flags[i] != NULL) { - cprintf("%s,", IA32flags[i]); - } - } - cprintf("IOPL=%d\n", (tf->tf_eflags & FL_IOPL_MASK) >> 12); - 101bbc: 8b 45 08 mov 0x8(%ebp),%eax - 101bbf: 8b 40 40 mov 0x40(%eax),%eax - 101bc2: 25 00 30 00 00 and $0x3000,%eax - 101bc7: c1 e8 0c shr $0xc,%eax - 101bca: 83 ec 08 sub $0x8,%esp - 101bcd: 50 push %eax - 101bce: 68 a6 3a 10 00 push $0x103aa6 - 101bd3: e8 90 e6 ff ff call 100268 - 101bd8: 83 c4 10 add $0x10,%esp - - if (!trap_in_kernel(tf)) { - 101bdb: 83 ec 0c sub $0xc,%esp - 101bde: ff 75 08 pushl 0x8(%ebp) - 101be1: e8 49 fe ff ff call 101a2f - 101be6: 83 c4 10 add $0x10,%esp - 101be9: 85 c0 test %eax,%eax - 101beb: 75 32 jne 101c1f - cprintf(" esp 0x%08x\n", tf->tf_esp); - 101bed: 8b 45 08 mov 0x8(%ebp),%eax - 101bf0: 8b 40 44 mov 0x44(%eax),%eax - 101bf3: 83 ec 08 sub $0x8,%esp - 101bf6: 50 push %eax - 101bf7: 68 af 3a 10 00 push $0x103aaf - 101bfc: e8 67 e6 ff ff call 100268 - 101c01: 83 c4 10 add $0x10,%esp - cprintf(" ss 0x----%04x\n", tf->tf_ss); - 101c04: 8b 45 08 mov 0x8(%ebp),%eax - 101c07: 0f b7 40 48 movzwl 0x48(%eax),%eax - 101c0b: 0f b7 c0 movzwl %ax,%eax - 101c0e: 83 ec 08 sub $0x8,%esp - 101c11: 50 push %eax - 101c12: 68 be 3a 10 00 push $0x103abe - 101c17: e8 4c e6 ff ff call 100268 - 101c1c: 83 c4 10 add $0x10,%esp - } -} - 101c1f: 90 nop - 101c20: c9 leave - 101c21: c3 ret - -00101c22 : - -void -print_regs(struct pushregs *regs) { - 101c22: 55 push %ebp - 101c23: 89 e5 mov %esp,%ebp - 101c25: 83 ec 08 sub $0x8,%esp - cprintf(" edi 0x%08x\n", regs->reg_edi); - 101c28: 8b 45 08 mov 0x8(%ebp),%eax - 101c2b: 8b 00 mov (%eax),%eax - 101c2d: 83 ec 08 sub $0x8,%esp - 101c30: 50 push %eax - 101c31: 68 d1 3a 10 00 push $0x103ad1 - 101c36: e8 2d e6 ff ff call 100268 - 101c3b: 83 c4 10 add $0x10,%esp - cprintf(" esi 0x%08x\n", regs->reg_esi); - 101c3e: 8b 45 08 mov 0x8(%ebp),%eax - 101c41: 8b 40 04 mov 0x4(%eax),%eax - 101c44: 83 ec 08 sub $0x8,%esp - 101c47: 50 push %eax - 101c48: 68 e0 3a 10 00 push $0x103ae0 - 101c4d: e8 16 e6 ff ff call 100268 - 101c52: 83 c4 10 add $0x10,%esp - cprintf(" ebp 0x%08x\n", regs->reg_ebp); - 101c55: 8b 45 08 mov 0x8(%ebp),%eax - 101c58: 8b 40 08 mov 0x8(%eax),%eax - 101c5b: 83 ec 08 sub $0x8,%esp - 101c5e: 50 push %eax - 101c5f: 68 ef 3a 10 00 push $0x103aef - 101c64: e8 ff e5 ff ff call 100268 - 101c69: 83 c4 10 add $0x10,%esp - cprintf(" oesp 0x%08x\n", regs->reg_oesp); - 101c6c: 8b 45 08 mov 0x8(%ebp),%eax - 101c6f: 8b 40 0c mov 0xc(%eax),%eax - 101c72: 83 ec 08 sub $0x8,%esp - 101c75: 50 push %eax - 101c76: 68 fe 3a 10 00 push $0x103afe - 101c7b: e8 e8 e5 ff ff call 100268 - 101c80: 83 c4 10 add $0x10,%esp - cprintf(" ebx 0x%08x\n", regs->reg_ebx); - 101c83: 8b 45 08 mov 0x8(%ebp),%eax - 101c86: 8b 40 10 mov 0x10(%eax),%eax - 101c89: 83 ec 08 sub $0x8,%esp - 101c8c: 50 push %eax - 101c8d: 68 0d 3b 10 00 push $0x103b0d - 101c92: e8 d1 e5 ff ff call 100268 - 101c97: 83 c4 10 add $0x10,%esp - cprintf(" edx 0x%08x\n", regs->reg_edx); - 101c9a: 8b 45 08 mov 0x8(%ebp),%eax - 101c9d: 8b 40 14 mov 0x14(%eax),%eax - 101ca0: 83 ec 08 sub $0x8,%esp - 101ca3: 50 push %eax - 101ca4: 68 1c 3b 10 00 push $0x103b1c - 101ca9: e8 ba e5 ff ff call 100268 - 101cae: 83 c4 10 add $0x10,%esp - cprintf(" ecx 0x%08x\n", regs->reg_ecx); - 101cb1: 8b 45 08 mov 0x8(%ebp),%eax - 101cb4: 8b 40 18 mov 0x18(%eax),%eax - 101cb7: 83 ec 08 sub $0x8,%esp - 101cba: 50 push %eax - 101cbb: 68 2b 3b 10 00 push $0x103b2b - 101cc0: e8 a3 e5 ff ff call 100268 - 101cc5: 83 c4 10 add $0x10,%esp - cprintf(" eax 0x%08x\n", regs->reg_eax); - 101cc8: 8b 45 08 mov 0x8(%ebp),%eax - 101ccb: 8b 40 1c mov 0x1c(%eax),%eax - 101cce: 83 ec 08 sub $0x8,%esp - 101cd1: 50 push %eax - 101cd2: 68 3a 3b 10 00 push $0x103b3a - 101cd7: e8 8c e5 ff ff call 100268 - 101cdc: 83 c4 10 add $0x10,%esp -} - 101cdf: 90 nop - 101ce0: c9 leave - 101ce1: c3 ret - -00101ce2 : - -bool should_print = 0; - -/* trap_dispatch - dispatch based on what type of trap occurred */ -static void -trap_dispatch(struct trapframe *tf) { - 101ce2: 55 push %ebp - 101ce3: 89 e5 mov %esp,%ebp - 101ce5: 83 ec 18 sub $0x18,%esp - char c; - switch (tf->tf_trapno) { - 101ce8: 8b 45 08 mov 0x8(%ebp),%eax - 101ceb: 8b 40 30 mov 0x30(%eax),%eax - 101cee: 83 f8 2f cmp $0x2f,%eax - 101cf1: 77 21 ja 101d14 - 101cf3: 83 f8 2e cmp $0x2e,%eax - 101cf6: 0f 83 3c 02 00 00 jae 101f38 - 101cfc: 83 f8 21 cmp $0x21,%eax - 101cff: 0f 84 91 00 00 00 je 101d96 - 101d05: 83 f8 24 cmp $0x24,%eax - 101d08: 74 65 je 101d6f - 101d0a: 83 f8 20 cmp $0x20,%eax - 101d0d: 74 1c je 101d2b - 101d0f: e9 ee 01 00 00 jmp 101f02 - 101d14: 83 f8 78 cmp $0x78,%eax - 101d17: 0f 84 56 01 00 00 je 101e73 - 101d1d: 83 f8 79 cmp $0x79,%eax - 101d20: 0f 84 9f 01 00 00 je 101ec5 - 101d26: e9 d7 01 00 00 jmp 101f02 - /* handle the timer interrupt */ - /* (1) After a timer interrupt, you should record this event using a global variable (increase it), such as ticks in kern/driver/clock.c - * (2) Every TICK_NUM cycle, you can print some info using a funciton, such as print_ticks(). - * (3) Too Simple? Yes, I think so! - */ - ticks ++; - 101d2b: a1 28 f9 10 00 mov 0x10f928,%eax - 101d30: 83 c0 01 add $0x1,%eax - 101d33: a3 28 f9 10 00 mov %eax,0x10f928 - if (ticks % TICK_NUM == 0) { - 101d38: 8b 0d 28 f9 10 00 mov 0x10f928,%ecx - 101d3e: ba 1f 85 eb 51 mov $0x51eb851f,%edx - 101d43: 89 c8 mov %ecx,%eax - 101d45: f7 e2 mul %edx - 101d47: 89 d0 mov %edx,%eax - 101d49: c1 e8 05 shr $0x5,%eax - 101d4c: 6b c0 64 imul $0x64,%eax,%eax - 101d4f: 29 c1 sub %eax,%ecx - 101d51: 89 c8 mov %ecx,%eax - 101d53: 85 c0 test %eax,%eax - 101d55: 0f 85 e0 01 00 00 jne 101f3b - print_ticks(); - 101d5b: e8 9c fa ff ff call 1017fc - should_print = 1; - 101d60: c7 05 a0 f0 10 00 01 movl $0x1,0x10f0a0 - 101d67: 00 00 00 - } - break; - 101d6a: e9 cc 01 00 00 jmp 101f3b - case IRQ_OFFSET + IRQ_COM1: - c = cons_getc(); - 101d6f: e8 5b f8 ff ff call 1015cf - 101d74: 88 45 f7 mov %al,-0x9(%ebp) - cprintf("serial [%03d] %c\n", c, c); - 101d77: 0f be 55 f7 movsbl -0x9(%ebp),%edx - 101d7b: 0f be 45 f7 movsbl -0x9(%ebp),%eax - 101d7f: 83 ec 04 sub $0x4,%esp - 101d82: 52 push %edx - 101d83: 50 push %eax - 101d84: 68 49 3b 10 00 push $0x103b49 - 101d89: e8 da e4 ff ff call 100268 - 101d8e: 83 c4 10 add $0x10,%esp - break; - 101d91: e9 af 01 00 00 jmp 101f45 - case IRQ_OFFSET + IRQ_KBD: - c = cons_getc(); - 101d96: e8 34 f8 ff ff call 1015cf - 101d9b: 88 45 f7 mov %al,-0x9(%ebp) - cprintf("kbd [%03d] %c\n", c, c); - 101d9e: 0f be 55 f7 movsbl -0x9(%ebp),%edx - 101da2: 0f be 45 f7 movsbl -0x9(%ebp),%eax - 101da6: 83 ec 04 sub $0x4,%esp - 101da9: 52 push %edx - 101daa: 50 push %eax - 101dab: 68 5b 3b 10 00 push $0x103b5b - 101db0: e8 b3 e4 ff ff call 100268 - 101db5: 83 c4 10 add $0x10,%esp - if (c == '0') { - 101db8: 80 7d f7 30 cmpb $0x30,-0x9(%ebp) - 101dbc: 75 46 jne 101e04 - cprintf("Now switched to kernel mode"); - 101dbe: 83 ec 0c sub $0xc,%esp - 101dc1: 68 6a 3b 10 00 push $0x103b6a - 101dc6: e8 9d e4 ff ff call 100268 - 101dcb: 83 c4 10 add $0x10,%esp - if (tf->tf_cs != KERNEL_CS) { - 101dce: 8b 45 08 mov 0x8(%ebp),%eax - 101dd1: 0f b7 40 3c movzwl 0x3c(%eax),%eax - 101dd5: 66 83 f8 08 cmp $0x8,%ax - 101dd9: 0f 84 5f 01 00 00 je 101f3e - tf->tf_cs = KERNEL_CS; - 101ddf: 8b 45 08 mov 0x8(%ebp),%eax - 101de2: 66 c7 40 3c 08 00 movw $0x8,0x3c(%eax) - tf->tf_ds = tf->tf_es = KERNEL_DS; - 101de8: 8b 45 08 mov 0x8(%ebp),%eax - 101deb: 66 c7 40 28 10 00 movw $0x10,0x28(%eax) - 101df1: 8b 45 08 mov 0x8(%ebp),%eax - 101df4: 0f b7 50 28 movzwl 0x28(%eax),%edx - 101df8: 8b 45 08 mov 0x8(%ebp),%eax - 101dfb: 66 89 50 2c mov %dx,0x2c(%eax) - tf->tf_cs = USER_CS; - tf->tf_ds = tf->tf_es = tf->tf_ss = USER_DS; - tf->tf_eflags |= FL_IOPL_MASK; - } - } - break; - 101dff: e9 3a 01 00 00 jmp 101f3e - cprintf("Now switched to kernel mode"); - if (tf->tf_cs != KERNEL_CS) { - tf->tf_cs = KERNEL_CS; - tf->tf_ds = tf->tf_es = KERNEL_DS; - } - } else if (c == '3') { - 101e04: 80 7d f7 33 cmpb $0x33,-0x9(%ebp) - 101e08: 0f 85 30 01 00 00 jne 101f3e - cprintf("Now switched to user mode"); - 101e0e: 83 ec 0c sub $0xc,%esp - 101e11: 68 86 3b 10 00 push $0x103b86 - 101e16: e8 4d e4 ff ff call 100268 - 101e1b: 83 c4 10 add $0x10,%esp - if (tf->tf_cs != USER_CS) { - 101e1e: 8b 45 08 mov 0x8(%ebp),%eax - 101e21: 0f b7 40 3c movzwl 0x3c(%eax),%eax - 101e25: 66 83 f8 1b cmp $0x1b,%ax - 101e29: 0f 84 0f 01 00 00 je 101f3e - tf->tf_cs = USER_CS; - 101e2f: 8b 45 08 mov 0x8(%ebp),%eax - 101e32: 66 c7 40 3c 1b 00 movw $0x1b,0x3c(%eax) - tf->tf_ds = tf->tf_es = tf->tf_ss = USER_DS; - 101e38: 8b 45 08 mov 0x8(%ebp),%eax - 101e3b: 66 c7 40 48 23 00 movw $0x23,0x48(%eax) - 101e41: 8b 45 08 mov 0x8(%ebp),%eax - 101e44: 0f b7 50 48 movzwl 0x48(%eax),%edx - 101e48: 8b 45 08 mov 0x8(%ebp),%eax - 101e4b: 66 89 50 28 mov %dx,0x28(%eax) - 101e4f: 8b 45 08 mov 0x8(%ebp),%eax - 101e52: 0f b7 50 28 movzwl 0x28(%eax),%edx - 101e56: 8b 45 08 mov 0x8(%ebp),%eax - 101e59: 66 89 50 2c mov %dx,0x2c(%eax) - tf->tf_eflags |= FL_IOPL_MASK; - 101e5d: 8b 45 08 mov 0x8(%ebp),%eax - 101e60: 8b 40 40 mov 0x40(%eax),%eax - 101e63: 80 cc 30 or $0x30,%ah - 101e66: 89 c2 mov %eax,%edx - 101e68: 8b 45 08 mov 0x8(%ebp),%eax - 101e6b: 89 50 40 mov %edx,0x40(%eax) - } - } - break; - 101e6e: e9 cb 00 00 00 jmp 101f3e - //LAB1 CHALLENGE 1 : YOUR CODE you should modify below codes. - case T_SWITCH_TOU: - if (tf->tf_cs != USER_CS) { - 101e73: 8b 45 08 mov 0x8(%ebp),%eax - 101e76: 0f b7 40 3c movzwl 0x3c(%eax),%eax - 101e7a: 66 83 f8 1b cmp $0x1b,%ax - 101e7e: 0f 84 bd 00 00 00 je 101f41 - tf->tf_cs = USER_CS; - 101e84: 8b 45 08 mov 0x8(%ebp),%eax - 101e87: 66 c7 40 3c 1b 00 movw $0x1b,0x3c(%eax) - tf->tf_ds = tf->tf_es = tf->tf_ss = USER_DS; - 101e8d: 8b 45 08 mov 0x8(%ebp),%eax - 101e90: 66 c7 40 48 23 00 movw $0x23,0x48(%eax) - 101e96: 8b 45 08 mov 0x8(%ebp),%eax - 101e99: 0f b7 50 48 movzwl 0x48(%eax),%edx - 101e9d: 8b 45 08 mov 0x8(%ebp),%eax - 101ea0: 66 89 50 28 mov %dx,0x28(%eax) - 101ea4: 8b 45 08 mov 0x8(%ebp),%eax - 101ea7: 0f b7 50 28 movzwl 0x28(%eax),%edx - 101eab: 8b 45 08 mov 0x8(%ebp),%eax - 101eae: 66 89 50 2c mov %dx,0x2c(%eax) - tf->tf_eflags |= FL_IOPL_MASK; - 101eb2: 8b 45 08 mov 0x8(%ebp),%eax - 101eb5: 8b 40 40 mov 0x40(%eax),%eax - 101eb8: 80 cc 30 or $0x30,%ah - 101ebb: 89 c2 mov %eax,%edx - 101ebd: 8b 45 08 mov 0x8(%ebp),%eax - 101ec0: 89 50 40 mov %edx,0x40(%eax) - } - break; - 101ec3: eb 7c jmp 101f41 - case T_SWITCH_TOK: - if (tf->tf_cs != KERNEL_CS) { - 101ec5: 8b 45 08 mov 0x8(%ebp),%eax - 101ec8: 0f b7 40 3c movzwl 0x3c(%eax),%eax - 101ecc: 66 83 f8 08 cmp $0x8,%ax - 101ed0: 74 72 je 101f44 - tf->tf_cs = KERNEL_CS; - 101ed2: 8b 45 08 mov 0x8(%ebp),%eax - 101ed5: 66 c7 40 3c 08 00 movw $0x8,0x3c(%eax) - tf->tf_ds = tf->tf_es = tf->tf_ss = KERNEL_DS; - 101edb: 8b 45 08 mov 0x8(%ebp),%eax - 101ede: 66 c7 40 48 10 00 movw $0x10,0x48(%eax) - 101ee4: 8b 45 08 mov 0x8(%ebp),%eax - 101ee7: 0f b7 50 48 movzwl 0x48(%eax),%edx - 101eeb: 8b 45 08 mov 0x8(%ebp),%eax - 101eee: 66 89 50 28 mov %dx,0x28(%eax) - 101ef2: 8b 45 08 mov 0x8(%ebp),%eax - 101ef5: 0f b7 50 28 movzwl 0x28(%eax),%edx - 101ef9: 8b 45 08 mov 0x8(%ebp),%eax - 101efc: 66 89 50 2c mov %dx,0x2c(%eax) - } - break; - 101f00: eb 42 jmp 101f44 - case IRQ_OFFSET + IRQ_IDE2: - /* do nothing */ - break; - default: - // in kernel, it must be a mistake - if ((tf->tf_cs & 3) == 0) { - 101f02: 8b 45 08 mov 0x8(%ebp),%eax - 101f05: 0f b7 40 3c movzwl 0x3c(%eax),%eax - 101f09: 0f b7 c0 movzwl %ax,%eax - 101f0c: 83 e0 03 and $0x3,%eax - 101f0f: 85 c0 test %eax,%eax - 101f11: 75 32 jne 101f45 - print_trapframe(tf); - 101f13: 83 ec 0c sub $0xc,%esp - 101f16: ff 75 08 pushl 0x8(%ebp) - 101f19: e8 27 fb ff ff call 101a45 - 101f1e: 83 c4 10 add $0x10,%esp - panic("unexpected trap in kernel.\n"); - 101f21: 83 ec 04 sub $0x4,%esp - 101f24: 68 a0 3b 10 00 push $0x103ba0 - 101f29: 68 d3 00 00 00 push $0xd3 - 101f2e: 68 8e 39 10 00 push $0x10398e - 101f33: e8 96 e4 ff ff call 1003ce <__panic> - } - break; - case IRQ_OFFSET + IRQ_IDE1: - case IRQ_OFFSET + IRQ_IDE2: - /* do nothing */ - break; - 101f38: 90 nop - 101f39: eb 0a jmp 101f45 - ticks ++; - if (ticks % TICK_NUM == 0) { - print_ticks(); - should_print = 1; - } - break; - 101f3b: 90 nop - 101f3c: eb 07 jmp 101f45 - tf->tf_cs = USER_CS; - tf->tf_ds = tf->tf_es = tf->tf_ss = USER_DS; - tf->tf_eflags |= FL_IOPL_MASK; - } - } - break; - 101f3e: 90 nop - 101f3f: eb 04 jmp 101f45 - if (tf->tf_cs != USER_CS) { - tf->tf_cs = USER_CS; - tf->tf_ds = tf->tf_es = tf->tf_ss = USER_DS; - tf->tf_eflags |= FL_IOPL_MASK; - } - break; - 101f41: 90 nop - 101f42: eb 01 jmp 101f45 - case T_SWITCH_TOK: - if (tf->tf_cs != KERNEL_CS) { - tf->tf_cs = KERNEL_CS; - tf->tf_ds = tf->tf_es = tf->tf_ss = KERNEL_DS; - } - break; - 101f44: 90 nop - if ((tf->tf_cs & 3) == 0) { - print_trapframe(tf); - panic("unexpected trap in kernel.\n"); - } - } -} - 101f45: 90 nop - 101f46: c9 leave - 101f47: c3 ret - -00101f48 : - * trap - handles or dispatches an exception/interrupt. if and when trap() returns, - * the code in kern/trap/trapentry.S restores the old CPU state saved in the - * trapframe and then uses the iret instruction to return from the exception. - * */ -void -trap(struct trapframe *tf) { - 101f48: 55 push %ebp - 101f49: 89 e5 mov %esp,%ebp - 101f4b: 83 ec 08 sub $0x8,%esp - // dispatch based on what type of trap occurred - trap_dispatch(tf); - 101f4e: 83 ec 0c sub $0xc,%esp - 101f51: ff 75 08 pushl 0x8(%ebp) - 101f54: e8 89 fd ff ff call 101ce2 - 101f59: 83 c4 10 add $0x10,%esp -} - 101f5c: 90 nop - 101f5d: c9 leave - 101f5e: c3 ret - -00101f5f : -# handler -.text -.globl __alltraps -.globl vector0 -vector0: - pushl $0 - 101f5f: 6a 00 push $0x0 - pushl $0 - 101f61: 6a 00 push $0x0 - jmp __alltraps - 101f63: e9 67 0a 00 00 jmp 1029cf <__alltraps> - -00101f68 : -.globl vector1 -vector1: - pushl $0 - 101f68: 6a 00 push $0x0 - pushl $1 - 101f6a: 6a 01 push $0x1 - jmp __alltraps - 101f6c: e9 5e 0a 00 00 jmp 1029cf <__alltraps> - -00101f71 : -.globl vector2 -vector2: - pushl $0 - 101f71: 6a 00 push $0x0 - pushl $2 - 101f73: 6a 02 push $0x2 - jmp __alltraps - 101f75: e9 55 0a 00 00 jmp 1029cf <__alltraps> - -00101f7a : -.globl vector3 -vector3: - pushl $0 - 101f7a: 6a 00 push $0x0 - pushl $3 - 101f7c: 6a 03 push $0x3 - jmp __alltraps - 101f7e: e9 4c 0a 00 00 jmp 1029cf <__alltraps> - -00101f83 : -.globl vector4 -vector4: - pushl $0 - 101f83: 6a 00 push $0x0 - pushl $4 - 101f85: 6a 04 push $0x4 - jmp __alltraps - 101f87: e9 43 0a 00 00 jmp 1029cf <__alltraps> - -00101f8c : -.globl vector5 -vector5: - pushl $0 - 101f8c: 6a 00 push $0x0 - pushl $5 - 101f8e: 6a 05 push $0x5 - jmp __alltraps - 101f90: e9 3a 0a 00 00 jmp 1029cf <__alltraps> - -00101f95 : -.globl vector6 -vector6: - pushl $0 - 101f95: 6a 00 push $0x0 - pushl $6 - 101f97: 6a 06 push $0x6 - jmp __alltraps - 101f99: e9 31 0a 00 00 jmp 1029cf <__alltraps> - -00101f9e : -.globl vector7 -vector7: - pushl $0 - 101f9e: 6a 00 push $0x0 - pushl $7 - 101fa0: 6a 07 push $0x7 - jmp __alltraps - 101fa2: e9 28 0a 00 00 jmp 1029cf <__alltraps> - -00101fa7 : -.globl vector8 -vector8: - pushl $8 - 101fa7: 6a 08 push $0x8 - jmp __alltraps - 101fa9: e9 21 0a 00 00 jmp 1029cf <__alltraps> - -00101fae : -.globl vector9 -vector9: - pushl $9 - 101fae: 6a 09 push $0x9 - jmp __alltraps - 101fb0: e9 1a 0a 00 00 jmp 1029cf <__alltraps> - -00101fb5 : -.globl vector10 -vector10: - pushl $10 - 101fb5: 6a 0a push $0xa - jmp __alltraps - 101fb7: e9 13 0a 00 00 jmp 1029cf <__alltraps> - -00101fbc : -.globl vector11 -vector11: - pushl $11 - 101fbc: 6a 0b push $0xb - jmp __alltraps - 101fbe: e9 0c 0a 00 00 jmp 1029cf <__alltraps> - -00101fc3 : -.globl vector12 -vector12: - pushl $12 - 101fc3: 6a 0c push $0xc - jmp __alltraps - 101fc5: e9 05 0a 00 00 jmp 1029cf <__alltraps> - -00101fca : -.globl vector13 -vector13: - pushl $13 - 101fca: 6a 0d push $0xd - jmp __alltraps - 101fcc: e9 fe 09 00 00 jmp 1029cf <__alltraps> - -00101fd1 : -.globl vector14 -vector14: - pushl $14 - 101fd1: 6a 0e push $0xe - jmp __alltraps - 101fd3: e9 f7 09 00 00 jmp 1029cf <__alltraps> - -00101fd8 : -.globl vector15 -vector15: - pushl $0 - 101fd8: 6a 00 push $0x0 - pushl $15 - 101fda: 6a 0f push $0xf - jmp __alltraps - 101fdc: e9 ee 09 00 00 jmp 1029cf <__alltraps> - -00101fe1 : -.globl vector16 -vector16: - pushl $0 - 101fe1: 6a 00 push $0x0 - pushl $16 - 101fe3: 6a 10 push $0x10 - jmp __alltraps - 101fe5: e9 e5 09 00 00 jmp 1029cf <__alltraps> - -00101fea : -.globl vector17 -vector17: - pushl $17 - 101fea: 6a 11 push $0x11 - jmp __alltraps - 101fec: e9 de 09 00 00 jmp 1029cf <__alltraps> - -00101ff1 : -.globl vector18 -vector18: - pushl $0 - 101ff1: 6a 00 push $0x0 - pushl $18 - 101ff3: 6a 12 push $0x12 - jmp __alltraps - 101ff5: e9 d5 09 00 00 jmp 1029cf <__alltraps> - -00101ffa : -.globl vector19 -vector19: - pushl $0 - 101ffa: 6a 00 push $0x0 - pushl $19 - 101ffc: 6a 13 push $0x13 - jmp __alltraps - 101ffe: e9 cc 09 00 00 jmp 1029cf <__alltraps> - -00102003 : -.globl vector20 -vector20: - pushl $0 - 102003: 6a 00 push $0x0 - pushl $20 - 102005: 6a 14 push $0x14 - jmp __alltraps - 102007: e9 c3 09 00 00 jmp 1029cf <__alltraps> - -0010200c : -.globl vector21 -vector21: - pushl $0 - 10200c: 6a 00 push $0x0 - pushl $21 - 10200e: 6a 15 push $0x15 - jmp __alltraps - 102010: e9 ba 09 00 00 jmp 1029cf <__alltraps> - -00102015 : -.globl vector22 -vector22: - pushl $0 - 102015: 6a 00 push $0x0 - pushl $22 - 102017: 6a 16 push $0x16 - jmp __alltraps - 102019: e9 b1 09 00 00 jmp 1029cf <__alltraps> - -0010201e : -.globl vector23 -vector23: - pushl $0 - 10201e: 6a 00 push $0x0 - pushl $23 - 102020: 6a 17 push $0x17 - jmp __alltraps - 102022: e9 a8 09 00 00 jmp 1029cf <__alltraps> - -00102027 : -.globl vector24 -vector24: - pushl $0 - 102027: 6a 00 push $0x0 - pushl $24 - 102029: 6a 18 push $0x18 - jmp __alltraps - 10202b: e9 9f 09 00 00 jmp 1029cf <__alltraps> - -00102030 : -.globl vector25 -vector25: - pushl $0 - 102030: 6a 00 push $0x0 - pushl $25 - 102032: 6a 19 push $0x19 - jmp __alltraps - 102034: e9 96 09 00 00 jmp 1029cf <__alltraps> - -00102039 : -.globl vector26 -vector26: - pushl $0 - 102039: 6a 00 push $0x0 - pushl $26 - 10203b: 6a 1a push $0x1a - jmp __alltraps - 10203d: e9 8d 09 00 00 jmp 1029cf <__alltraps> - -00102042 : -.globl vector27 -vector27: - pushl $0 - 102042: 6a 00 push $0x0 - pushl $27 - 102044: 6a 1b push $0x1b - jmp __alltraps - 102046: e9 84 09 00 00 jmp 1029cf <__alltraps> - -0010204b : -.globl vector28 -vector28: - pushl $0 - 10204b: 6a 00 push $0x0 - pushl $28 - 10204d: 6a 1c push $0x1c - jmp __alltraps - 10204f: e9 7b 09 00 00 jmp 1029cf <__alltraps> - -00102054 : -.globl vector29 -vector29: - pushl $0 - 102054: 6a 00 push $0x0 - pushl $29 - 102056: 6a 1d push $0x1d - jmp __alltraps - 102058: e9 72 09 00 00 jmp 1029cf <__alltraps> - -0010205d : -.globl vector30 -vector30: - pushl $0 - 10205d: 6a 00 push $0x0 - pushl $30 - 10205f: 6a 1e push $0x1e - jmp __alltraps - 102061: e9 69 09 00 00 jmp 1029cf <__alltraps> - -00102066 : -.globl vector31 -vector31: - pushl $0 - 102066: 6a 00 push $0x0 - pushl $31 - 102068: 6a 1f push $0x1f - jmp __alltraps - 10206a: e9 60 09 00 00 jmp 1029cf <__alltraps> - -0010206f : -.globl vector32 -vector32: - pushl $0 - 10206f: 6a 00 push $0x0 - pushl $32 - 102071: 6a 20 push $0x20 - jmp __alltraps - 102073: e9 57 09 00 00 jmp 1029cf <__alltraps> - -00102078 : -.globl vector33 -vector33: - pushl $0 - 102078: 6a 00 push $0x0 - pushl $33 - 10207a: 6a 21 push $0x21 - jmp __alltraps - 10207c: e9 4e 09 00 00 jmp 1029cf <__alltraps> - -00102081 : -.globl vector34 -vector34: - pushl $0 - 102081: 6a 00 push $0x0 - pushl $34 - 102083: 6a 22 push $0x22 - jmp __alltraps - 102085: e9 45 09 00 00 jmp 1029cf <__alltraps> - -0010208a : -.globl vector35 -vector35: - pushl $0 - 10208a: 6a 00 push $0x0 - pushl $35 - 10208c: 6a 23 push $0x23 - jmp __alltraps - 10208e: e9 3c 09 00 00 jmp 1029cf <__alltraps> - -00102093 : -.globl vector36 -vector36: - pushl $0 - 102093: 6a 00 push $0x0 - pushl $36 - 102095: 6a 24 push $0x24 - jmp __alltraps - 102097: e9 33 09 00 00 jmp 1029cf <__alltraps> - -0010209c : -.globl vector37 -vector37: - pushl $0 - 10209c: 6a 00 push $0x0 - pushl $37 - 10209e: 6a 25 push $0x25 - jmp __alltraps - 1020a0: e9 2a 09 00 00 jmp 1029cf <__alltraps> - -001020a5 : -.globl vector38 -vector38: - pushl $0 - 1020a5: 6a 00 push $0x0 - pushl $38 - 1020a7: 6a 26 push $0x26 - jmp __alltraps - 1020a9: e9 21 09 00 00 jmp 1029cf <__alltraps> - -001020ae : -.globl vector39 -vector39: - pushl $0 - 1020ae: 6a 00 push $0x0 - pushl $39 - 1020b0: 6a 27 push $0x27 - jmp __alltraps - 1020b2: e9 18 09 00 00 jmp 1029cf <__alltraps> - -001020b7 : -.globl vector40 -vector40: - pushl $0 - 1020b7: 6a 00 push $0x0 - pushl $40 - 1020b9: 6a 28 push $0x28 - jmp __alltraps - 1020bb: e9 0f 09 00 00 jmp 1029cf <__alltraps> - -001020c0 : -.globl vector41 -vector41: - pushl $0 - 1020c0: 6a 00 push $0x0 - pushl $41 - 1020c2: 6a 29 push $0x29 - jmp __alltraps - 1020c4: e9 06 09 00 00 jmp 1029cf <__alltraps> - -001020c9 : -.globl vector42 -vector42: - pushl $0 - 1020c9: 6a 00 push $0x0 - pushl $42 - 1020cb: 6a 2a push $0x2a - jmp __alltraps - 1020cd: e9 fd 08 00 00 jmp 1029cf <__alltraps> - -001020d2 : -.globl vector43 -vector43: - pushl $0 - 1020d2: 6a 00 push $0x0 - pushl $43 - 1020d4: 6a 2b push $0x2b - jmp __alltraps - 1020d6: e9 f4 08 00 00 jmp 1029cf <__alltraps> - -001020db : -.globl vector44 -vector44: - pushl $0 - 1020db: 6a 00 push $0x0 - pushl $44 - 1020dd: 6a 2c push $0x2c - jmp __alltraps - 1020df: e9 eb 08 00 00 jmp 1029cf <__alltraps> - -001020e4 : -.globl vector45 -vector45: - pushl $0 - 1020e4: 6a 00 push $0x0 - pushl $45 - 1020e6: 6a 2d push $0x2d - jmp __alltraps - 1020e8: e9 e2 08 00 00 jmp 1029cf <__alltraps> - -001020ed : -.globl vector46 -vector46: - pushl $0 - 1020ed: 6a 00 push $0x0 - pushl $46 - 1020ef: 6a 2e push $0x2e - jmp __alltraps - 1020f1: e9 d9 08 00 00 jmp 1029cf <__alltraps> - -001020f6 : -.globl vector47 -vector47: - pushl $0 - 1020f6: 6a 00 push $0x0 - pushl $47 - 1020f8: 6a 2f push $0x2f - jmp __alltraps - 1020fa: e9 d0 08 00 00 jmp 1029cf <__alltraps> - -001020ff : -.globl vector48 -vector48: - pushl $0 - 1020ff: 6a 00 push $0x0 - pushl $48 - 102101: 6a 30 push $0x30 - jmp __alltraps - 102103: e9 c7 08 00 00 jmp 1029cf <__alltraps> - -00102108 : -.globl vector49 -vector49: - pushl $0 - 102108: 6a 00 push $0x0 - pushl $49 - 10210a: 6a 31 push $0x31 - jmp __alltraps - 10210c: e9 be 08 00 00 jmp 1029cf <__alltraps> - -00102111 : -.globl vector50 -vector50: - pushl $0 - 102111: 6a 00 push $0x0 - pushl $50 - 102113: 6a 32 push $0x32 - jmp __alltraps - 102115: e9 b5 08 00 00 jmp 1029cf <__alltraps> - -0010211a : -.globl vector51 -vector51: - pushl $0 - 10211a: 6a 00 push $0x0 - pushl $51 - 10211c: 6a 33 push $0x33 - jmp __alltraps - 10211e: e9 ac 08 00 00 jmp 1029cf <__alltraps> - -00102123 : -.globl vector52 -vector52: - pushl $0 - 102123: 6a 00 push $0x0 - pushl $52 - 102125: 6a 34 push $0x34 - jmp __alltraps - 102127: e9 a3 08 00 00 jmp 1029cf <__alltraps> - -0010212c : -.globl vector53 -vector53: - pushl $0 - 10212c: 6a 00 push $0x0 - pushl $53 - 10212e: 6a 35 push $0x35 - jmp __alltraps - 102130: e9 9a 08 00 00 jmp 1029cf <__alltraps> - -00102135 : -.globl vector54 -vector54: - pushl $0 - 102135: 6a 00 push $0x0 - pushl $54 - 102137: 6a 36 push $0x36 - jmp __alltraps - 102139: e9 91 08 00 00 jmp 1029cf <__alltraps> - -0010213e : -.globl vector55 -vector55: - pushl $0 - 10213e: 6a 00 push $0x0 - pushl $55 - 102140: 6a 37 push $0x37 - jmp __alltraps - 102142: e9 88 08 00 00 jmp 1029cf <__alltraps> - -00102147 : -.globl vector56 -vector56: - pushl $0 - 102147: 6a 00 push $0x0 - pushl $56 - 102149: 6a 38 push $0x38 - jmp __alltraps - 10214b: e9 7f 08 00 00 jmp 1029cf <__alltraps> - -00102150 : -.globl vector57 -vector57: - pushl $0 - 102150: 6a 00 push $0x0 - pushl $57 - 102152: 6a 39 push $0x39 - jmp __alltraps - 102154: e9 76 08 00 00 jmp 1029cf <__alltraps> - -00102159 : -.globl vector58 -vector58: - pushl $0 - 102159: 6a 00 push $0x0 - pushl $58 - 10215b: 6a 3a push $0x3a - jmp __alltraps - 10215d: e9 6d 08 00 00 jmp 1029cf <__alltraps> - -00102162 : -.globl vector59 -vector59: - pushl $0 - 102162: 6a 00 push $0x0 - pushl $59 - 102164: 6a 3b push $0x3b - jmp __alltraps - 102166: e9 64 08 00 00 jmp 1029cf <__alltraps> - -0010216b : -.globl vector60 -vector60: - pushl $0 - 10216b: 6a 00 push $0x0 - pushl $60 - 10216d: 6a 3c push $0x3c - jmp __alltraps - 10216f: e9 5b 08 00 00 jmp 1029cf <__alltraps> - -00102174 : -.globl vector61 -vector61: - pushl $0 - 102174: 6a 00 push $0x0 - pushl $61 - 102176: 6a 3d push $0x3d - jmp __alltraps - 102178: e9 52 08 00 00 jmp 1029cf <__alltraps> - -0010217d : -.globl vector62 -vector62: - pushl $0 - 10217d: 6a 00 push $0x0 - pushl $62 - 10217f: 6a 3e push $0x3e - jmp __alltraps - 102181: e9 49 08 00 00 jmp 1029cf <__alltraps> - -00102186 : -.globl vector63 -vector63: - pushl $0 - 102186: 6a 00 push $0x0 - pushl $63 - 102188: 6a 3f push $0x3f - jmp __alltraps - 10218a: e9 40 08 00 00 jmp 1029cf <__alltraps> - -0010218f : -.globl vector64 -vector64: - pushl $0 - 10218f: 6a 00 push $0x0 - pushl $64 - 102191: 6a 40 push $0x40 - jmp __alltraps - 102193: e9 37 08 00 00 jmp 1029cf <__alltraps> - -00102198 : -.globl vector65 -vector65: - pushl $0 - 102198: 6a 00 push $0x0 - pushl $65 - 10219a: 6a 41 push $0x41 - jmp __alltraps - 10219c: e9 2e 08 00 00 jmp 1029cf <__alltraps> - -001021a1 : -.globl vector66 -vector66: - pushl $0 - 1021a1: 6a 00 push $0x0 - pushl $66 - 1021a3: 6a 42 push $0x42 - jmp __alltraps - 1021a5: e9 25 08 00 00 jmp 1029cf <__alltraps> - -001021aa : -.globl vector67 -vector67: - pushl $0 - 1021aa: 6a 00 push $0x0 - pushl $67 - 1021ac: 6a 43 push $0x43 - jmp __alltraps - 1021ae: e9 1c 08 00 00 jmp 1029cf <__alltraps> - -001021b3 : -.globl vector68 -vector68: - pushl $0 - 1021b3: 6a 00 push $0x0 - pushl $68 - 1021b5: 6a 44 push $0x44 - jmp __alltraps - 1021b7: e9 13 08 00 00 jmp 1029cf <__alltraps> - -001021bc : -.globl vector69 -vector69: - pushl $0 - 1021bc: 6a 00 push $0x0 - pushl $69 - 1021be: 6a 45 push $0x45 - jmp __alltraps - 1021c0: e9 0a 08 00 00 jmp 1029cf <__alltraps> - -001021c5 : -.globl vector70 -vector70: - pushl $0 - 1021c5: 6a 00 push $0x0 - pushl $70 - 1021c7: 6a 46 push $0x46 - jmp __alltraps - 1021c9: e9 01 08 00 00 jmp 1029cf <__alltraps> - -001021ce : -.globl vector71 -vector71: - pushl $0 - 1021ce: 6a 00 push $0x0 - pushl $71 - 1021d0: 6a 47 push $0x47 - jmp __alltraps - 1021d2: e9 f8 07 00 00 jmp 1029cf <__alltraps> - -001021d7 : -.globl vector72 -vector72: - pushl $0 - 1021d7: 6a 00 push $0x0 - pushl $72 - 1021d9: 6a 48 push $0x48 - jmp __alltraps - 1021db: e9 ef 07 00 00 jmp 1029cf <__alltraps> - -001021e0 : -.globl vector73 -vector73: - pushl $0 - 1021e0: 6a 00 push $0x0 - pushl $73 - 1021e2: 6a 49 push $0x49 - jmp __alltraps - 1021e4: e9 e6 07 00 00 jmp 1029cf <__alltraps> - -001021e9 : -.globl vector74 -vector74: - pushl $0 - 1021e9: 6a 00 push $0x0 - pushl $74 - 1021eb: 6a 4a push $0x4a - jmp __alltraps - 1021ed: e9 dd 07 00 00 jmp 1029cf <__alltraps> - -001021f2 : -.globl vector75 -vector75: - pushl $0 - 1021f2: 6a 00 push $0x0 - pushl $75 - 1021f4: 6a 4b push $0x4b - jmp __alltraps - 1021f6: e9 d4 07 00 00 jmp 1029cf <__alltraps> - -001021fb : -.globl vector76 -vector76: - pushl $0 - 1021fb: 6a 00 push $0x0 - pushl $76 - 1021fd: 6a 4c push $0x4c - jmp __alltraps - 1021ff: e9 cb 07 00 00 jmp 1029cf <__alltraps> - -00102204 : -.globl vector77 -vector77: - pushl $0 - 102204: 6a 00 push $0x0 - pushl $77 - 102206: 6a 4d push $0x4d - jmp __alltraps - 102208: e9 c2 07 00 00 jmp 1029cf <__alltraps> - -0010220d : -.globl vector78 -vector78: - pushl $0 - 10220d: 6a 00 push $0x0 - pushl $78 - 10220f: 6a 4e push $0x4e - jmp __alltraps - 102211: e9 b9 07 00 00 jmp 1029cf <__alltraps> - -00102216 : -.globl vector79 -vector79: - pushl $0 - 102216: 6a 00 push $0x0 - pushl $79 - 102218: 6a 4f push $0x4f - jmp __alltraps - 10221a: e9 b0 07 00 00 jmp 1029cf <__alltraps> - -0010221f : -.globl vector80 -vector80: - pushl $0 - 10221f: 6a 00 push $0x0 - pushl $80 - 102221: 6a 50 push $0x50 - jmp __alltraps - 102223: e9 a7 07 00 00 jmp 1029cf <__alltraps> - -00102228 : -.globl vector81 -vector81: - pushl $0 - 102228: 6a 00 push $0x0 - pushl $81 - 10222a: 6a 51 push $0x51 - jmp __alltraps - 10222c: e9 9e 07 00 00 jmp 1029cf <__alltraps> - -00102231 : -.globl vector82 -vector82: - pushl $0 - 102231: 6a 00 push $0x0 - pushl $82 - 102233: 6a 52 push $0x52 - jmp __alltraps - 102235: e9 95 07 00 00 jmp 1029cf <__alltraps> - -0010223a : -.globl vector83 -vector83: - pushl $0 - 10223a: 6a 00 push $0x0 - pushl $83 - 10223c: 6a 53 push $0x53 - jmp __alltraps - 10223e: e9 8c 07 00 00 jmp 1029cf <__alltraps> - -00102243 : -.globl vector84 -vector84: - pushl $0 - 102243: 6a 00 push $0x0 - pushl $84 - 102245: 6a 54 push $0x54 - jmp __alltraps - 102247: e9 83 07 00 00 jmp 1029cf <__alltraps> - -0010224c : -.globl vector85 -vector85: - pushl $0 - 10224c: 6a 00 push $0x0 - pushl $85 - 10224e: 6a 55 push $0x55 - jmp __alltraps - 102250: e9 7a 07 00 00 jmp 1029cf <__alltraps> - -00102255 : -.globl vector86 -vector86: - pushl $0 - 102255: 6a 00 push $0x0 - pushl $86 - 102257: 6a 56 push $0x56 - jmp __alltraps - 102259: e9 71 07 00 00 jmp 1029cf <__alltraps> - -0010225e : -.globl vector87 -vector87: - pushl $0 - 10225e: 6a 00 push $0x0 - pushl $87 - 102260: 6a 57 push $0x57 - jmp __alltraps - 102262: e9 68 07 00 00 jmp 1029cf <__alltraps> - -00102267 : -.globl vector88 -vector88: - pushl $0 - 102267: 6a 00 push $0x0 - pushl $88 - 102269: 6a 58 push $0x58 - jmp __alltraps - 10226b: e9 5f 07 00 00 jmp 1029cf <__alltraps> - -00102270 : -.globl vector89 -vector89: - pushl $0 - 102270: 6a 00 push $0x0 - pushl $89 - 102272: 6a 59 push $0x59 - jmp __alltraps - 102274: e9 56 07 00 00 jmp 1029cf <__alltraps> - -00102279 : -.globl vector90 -vector90: - pushl $0 - 102279: 6a 00 push $0x0 - pushl $90 - 10227b: 6a 5a push $0x5a - jmp __alltraps - 10227d: e9 4d 07 00 00 jmp 1029cf <__alltraps> - -00102282 : -.globl vector91 -vector91: - pushl $0 - 102282: 6a 00 push $0x0 - pushl $91 - 102284: 6a 5b push $0x5b - jmp __alltraps - 102286: e9 44 07 00 00 jmp 1029cf <__alltraps> - -0010228b : -.globl vector92 -vector92: - pushl $0 - 10228b: 6a 00 push $0x0 - pushl $92 - 10228d: 6a 5c push $0x5c - jmp __alltraps - 10228f: e9 3b 07 00 00 jmp 1029cf <__alltraps> - -00102294 : -.globl vector93 -vector93: - pushl $0 - 102294: 6a 00 push $0x0 - pushl $93 - 102296: 6a 5d push $0x5d - jmp __alltraps - 102298: e9 32 07 00 00 jmp 1029cf <__alltraps> - -0010229d : -.globl vector94 -vector94: - pushl $0 - 10229d: 6a 00 push $0x0 - pushl $94 - 10229f: 6a 5e push $0x5e - jmp __alltraps - 1022a1: e9 29 07 00 00 jmp 1029cf <__alltraps> - -001022a6 : -.globl vector95 -vector95: - pushl $0 - 1022a6: 6a 00 push $0x0 - pushl $95 - 1022a8: 6a 5f push $0x5f - jmp __alltraps - 1022aa: e9 20 07 00 00 jmp 1029cf <__alltraps> - -001022af : -.globl vector96 -vector96: - pushl $0 - 1022af: 6a 00 push $0x0 - pushl $96 - 1022b1: 6a 60 push $0x60 - jmp __alltraps - 1022b3: e9 17 07 00 00 jmp 1029cf <__alltraps> - -001022b8 : -.globl vector97 -vector97: - pushl $0 - 1022b8: 6a 00 push $0x0 - pushl $97 - 1022ba: 6a 61 push $0x61 - jmp __alltraps - 1022bc: e9 0e 07 00 00 jmp 1029cf <__alltraps> - -001022c1 : -.globl vector98 -vector98: - pushl $0 - 1022c1: 6a 00 push $0x0 - pushl $98 - 1022c3: 6a 62 push $0x62 - jmp __alltraps - 1022c5: e9 05 07 00 00 jmp 1029cf <__alltraps> - -001022ca : -.globl vector99 -vector99: - pushl $0 - 1022ca: 6a 00 push $0x0 - pushl $99 - 1022cc: 6a 63 push $0x63 - jmp __alltraps - 1022ce: e9 fc 06 00 00 jmp 1029cf <__alltraps> - -001022d3 : -.globl vector100 -vector100: - pushl $0 - 1022d3: 6a 00 push $0x0 - pushl $100 - 1022d5: 6a 64 push $0x64 - jmp __alltraps - 1022d7: e9 f3 06 00 00 jmp 1029cf <__alltraps> - -001022dc : -.globl vector101 -vector101: - pushl $0 - 1022dc: 6a 00 push $0x0 - pushl $101 - 1022de: 6a 65 push $0x65 - jmp __alltraps - 1022e0: e9 ea 06 00 00 jmp 1029cf <__alltraps> - -001022e5 : -.globl vector102 -vector102: - pushl $0 - 1022e5: 6a 00 push $0x0 - pushl $102 - 1022e7: 6a 66 push $0x66 - jmp __alltraps - 1022e9: e9 e1 06 00 00 jmp 1029cf <__alltraps> - -001022ee : -.globl vector103 -vector103: - pushl $0 - 1022ee: 6a 00 push $0x0 - pushl $103 - 1022f0: 6a 67 push $0x67 - jmp __alltraps - 1022f2: e9 d8 06 00 00 jmp 1029cf <__alltraps> - -001022f7 : -.globl vector104 -vector104: - pushl $0 - 1022f7: 6a 00 push $0x0 - pushl $104 - 1022f9: 6a 68 push $0x68 - jmp __alltraps - 1022fb: e9 cf 06 00 00 jmp 1029cf <__alltraps> - -00102300 : -.globl vector105 -vector105: - pushl $0 - 102300: 6a 00 push $0x0 - pushl $105 - 102302: 6a 69 push $0x69 - jmp __alltraps - 102304: e9 c6 06 00 00 jmp 1029cf <__alltraps> - -00102309 : -.globl vector106 -vector106: - pushl $0 - 102309: 6a 00 push $0x0 - pushl $106 - 10230b: 6a 6a push $0x6a - jmp __alltraps - 10230d: e9 bd 06 00 00 jmp 1029cf <__alltraps> - -00102312 : -.globl vector107 -vector107: - pushl $0 - 102312: 6a 00 push $0x0 - pushl $107 - 102314: 6a 6b push $0x6b - jmp __alltraps - 102316: e9 b4 06 00 00 jmp 1029cf <__alltraps> - -0010231b : -.globl vector108 -vector108: - pushl $0 - 10231b: 6a 00 push $0x0 - pushl $108 - 10231d: 6a 6c push $0x6c - jmp __alltraps - 10231f: e9 ab 06 00 00 jmp 1029cf <__alltraps> - -00102324 : -.globl vector109 -vector109: - pushl $0 - 102324: 6a 00 push $0x0 - pushl $109 - 102326: 6a 6d push $0x6d - jmp __alltraps - 102328: e9 a2 06 00 00 jmp 1029cf <__alltraps> - -0010232d : -.globl vector110 -vector110: - pushl $0 - 10232d: 6a 00 push $0x0 - pushl $110 - 10232f: 6a 6e push $0x6e - jmp __alltraps - 102331: e9 99 06 00 00 jmp 1029cf <__alltraps> - -00102336 : -.globl vector111 -vector111: - pushl $0 - 102336: 6a 00 push $0x0 - pushl $111 - 102338: 6a 6f push $0x6f - jmp __alltraps - 10233a: e9 90 06 00 00 jmp 1029cf <__alltraps> - -0010233f : -.globl vector112 -vector112: - pushl $0 - 10233f: 6a 00 push $0x0 - pushl $112 - 102341: 6a 70 push $0x70 - jmp __alltraps - 102343: e9 87 06 00 00 jmp 1029cf <__alltraps> - -00102348 : -.globl vector113 -vector113: - pushl $0 - 102348: 6a 00 push $0x0 - pushl $113 - 10234a: 6a 71 push $0x71 - jmp __alltraps - 10234c: e9 7e 06 00 00 jmp 1029cf <__alltraps> - -00102351 : -.globl vector114 -vector114: - pushl $0 - 102351: 6a 00 push $0x0 - pushl $114 - 102353: 6a 72 push $0x72 - jmp __alltraps - 102355: e9 75 06 00 00 jmp 1029cf <__alltraps> - -0010235a : -.globl vector115 -vector115: - pushl $0 - 10235a: 6a 00 push $0x0 - pushl $115 - 10235c: 6a 73 push $0x73 - jmp __alltraps - 10235e: e9 6c 06 00 00 jmp 1029cf <__alltraps> - -00102363 : -.globl vector116 -vector116: - pushl $0 - 102363: 6a 00 push $0x0 - pushl $116 - 102365: 6a 74 push $0x74 - jmp __alltraps - 102367: e9 63 06 00 00 jmp 1029cf <__alltraps> - -0010236c : -.globl vector117 -vector117: - pushl $0 - 10236c: 6a 00 push $0x0 - pushl $117 - 10236e: 6a 75 push $0x75 - jmp __alltraps - 102370: e9 5a 06 00 00 jmp 1029cf <__alltraps> - -00102375 : -.globl vector118 -vector118: - pushl $0 - 102375: 6a 00 push $0x0 - pushl $118 - 102377: 6a 76 push $0x76 - jmp __alltraps - 102379: e9 51 06 00 00 jmp 1029cf <__alltraps> - -0010237e : -.globl vector119 -vector119: - pushl $0 - 10237e: 6a 00 push $0x0 - pushl $119 - 102380: 6a 77 push $0x77 - jmp __alltraps - 102382: e9 48 06 00 00 jmp 1029cf <__alltraps> - -00102387 : -.globl vector120 -vector120: - pushl $0 - 102387: 6a 00 push $0x0 - pushl $120 - 102389: 6a 78 push $0x78 - jmp __alltraps - 10238b: e9 3f 06 00 00 jmp 1029cf <__alltraps> - -00102390 : -.globl vector121 -vector121: - pushl $0 - 102390: 6a 00 push $0x0 - pushl $121 - 102392: 6a 79 push $0x79 - jmp __alltraps - 102394: e9 36 06 00 00 jmp 1029cf <__alltraps> - -00102399 : -.globl vector122 -vector122: - pushl $0 - 102399: 6a 00 push $0x0 - pushl $122 - 10239b: 6a 7a push $0x7a - jmp __alltraps - 10239d: e9 2d 06 00 00 jmp 1029cf <__alltraps> - -001023a2 : -.globl vector123 -vector123: - pushl $0 - 1023a2: 6a 00 push $0x0 - pushl $123 - 1023a4: 6a 7b push $0x7b - jmp __alltraps - 1023a6: e9 24 06 00 00 jmp 1029cf <__alltraps> - -001023ab : -.globl vector124 -vector124: - pushl $0 - 1023ab: 6a 00 push $0x0 - pushl $124 - 1023ad: 6a 7c push $0x7c - jmp __alltraps - 1023af: e9 1b 06 00 00 jmp 1029cf <__alltraps> - -001023b4 : -.globl vector125 -vector125: - pushl $0 - 1023b4: 6a 00 push $0x0 - pushl $125 - 1023b6: 6a 7d push $0x7d - jmp __alltraps - 1023b8: e9 12 06 00 00 jmp 1029cf <__alltraps> - -001023bd : -.globl vector126 -vector126: - pushl $0 - 1023bd: 6a 00 push $0x0 - pushl $126 - 1023bf: 6a 7e push $0x7e - jmp __alltraps - 1023c1: e9 09 06 00 00 jmp 1029cf <__alltraps> - -001023c6 : -.globl vector127 -vector127: - pushl $0 - 1023c6: 6a 00 push $0x0 - pushl $127 - 1023c8: 6a 7f push $0x7f - jmp __alltraps - 1023ca: e9 00 06 00 00 jmp 1029cf <__alltraps> - -001023cf : -.globl vector128 -vector128: - pushl $0 - 1023cf: 6a 00 push $0x0 - pushl $128 - 1023d1: 68 80 00 00 00 push $0x80 - jmp __alltraps - 1023d6: e9 f4 05 00 00 jmp 1029cf <__alltraps> - -001023db : -.globl vector129 -vector129: - pushl $0 - 1023db: 6a 00 push $0x0 - pushl $129 - 1023dd: 68 81 00 00 00 push $0x81 - jmp __alltraps - 1023e2: e9 e8 05 00 00 jmp 1029cf <__alltraps> - -001023e7 : -.globl vector130 -vector130: - pushl $0 - 1023e7: 6a 00 push $0x0 - pushl $130 - 1023e9: 68 82 00 00 00 push $0x82 - jmp __alltraps - 1023ee: e9 dc 05 00 00 jmp 1029cf <__alltraps> - -001023f3 : -.globl vector131 -vector131: - pushl $0 - 1023f3: 6a 00 push $0x0 - pushl $131 - 1023f5: 68 83 00 00 00 push $0x83 - jmp __alltraps - 1023fa: e9 d0 05 00 00 jmp 1029cf <__alltraps> - -001023ff : -.globl vector132 -vector132: - pushl $0 - 1023ff: 6a 00 push $0x0 - pushl $132 - 102401: 68 84 00 00 00 push $0x84 - jmp __alltraps - 102406: e9 c4 05 00 00 jmp 1029cf <__alltraps> - -0010240b : -.globl vector133 -vector133: - pushl $0 - 10240b: 6a 00 push $0x0 - pushl $133 - 10240d: 68 85 00 00 00 push $0x85 - jmp __alltraps - 102412: e9 b8 05 00 00 jmp 1029cf <__alltraps> - -00102417 : -.globl vector134 -vector134: - pushl $0 - 102417: 6a 00 push $0x0 - pushl $134 - 102419: 68 86 00 00 00 push $0x86 - jmp __alltraps - 10241e: e9 ac 05 00 00 jmp 1029cf <__alltraps> - -00102423 : -.globl vector135 -vector135: - pushl $0 - 102423: 6a 00 push $0x0 - pushl $135 - 102425: 68 87 00 00 00 push $0x87 - jmp __alltraps - 10242a: e9 a0 05 00 00 jmp 1029cf <__alltraps> - -0010242f : -.globl vector136 -vector136: - pushl $0 - 10242f: 6a 00 push $0x0 - pushl $136 - 102431: 68 88 00 00 00 push $0x88 - jmp __alltraps - 102436: e9 94 05 00 00 jmp 1029cf <__alltraps> - -0010243b : -.globl vector137 -vector137: - pushl $0 - 10243b: 6a 00 push $0x0 - pushl $137 - 10243d: 68 89 00 00 00 push $0x89 - jmp __alltraps - 102442: e9 88 05 00 00 jmp 1029cf <__alltraps> - -00102447 : -.globl vector138 -vector138: - pushl $0 - 102447: 6a 00 push $0x0 - pushl $138 - 102449: 68 8a 00 00 00 push $0x8a - jmp __alltraps - 10244e: e9 7c 05 00 00 jmp 1029cf <__alltraps> - -00102453 : -.globl vector139 -vector139: - pushl $0 - 102453: 6a 00 push $0x0 - pushl $139 - 102455: 68 8b 00 00 00 push $0x8b - jmp __alltraps - 10245a: e9 70 05 00 00 jmp 1029cf <__alltraps> - -0010245f : -.globl vector140 -vector140: - pushl $0 - 10245f: 6a 00 push $0x0 - pushl $140 - 102461: 68 8c 00 00 00 push $0x8c - jmp __alltraps - 102466: e9 64 05 00 00 jmp 1029cf <__alltraps> - -0010246b : -.globl vector141 -vector141: - pushl $0 - 10246b: 6a 00 push $0x0 - pushl $141 - 10246d: 68 8d 00 00 00 push $0x8d - jmp __alltraps - 102472: e9 58 05 00 00 jmp 1029cf <__alltraps> - -00102477 : -.globl vector142 -vector142: - pushl $0 - 102477: 6a 00 push $0x0 - pushl $142 - 102479: 68 8e 00 00 00 push $0x8e - jmp __alltraps - 10247e: e9 4c 05 00 00 jmp 1029cf <__alltraps> - -00102483 : -.globl vector143 -vector143: - pushl $0 - 102483: 6a 00 push $0x0 - pushl $143 - 102485: 68 8f 00 00 00 push $0x8f - jmp __alltraps - 10248a: e9 40 05 00 00 jmp 1029cf <__alltraps> - -0010248f : -.globl vector144 -vector144: - pushl $0 - 10248f: 6a 00 push $0x0 - pushl $144 - 102491: 68 90 00 00 00 push $0x90 - jmp __alltraps - 102496: e9 34 05 00 00 jmp 1029cf <__alltraps> - -0010249b : -.globl vector145 -vector145: - pushl $0 - 10249b: 6a 00 push $0x0 - pushl $145 - 10249d: 68 91 00 00 00 push $0x91 - jmp __alltraps - 1024a2: e9 28 05 00 00 jmp 1029cf <__alltraps> - -001024a7 : -.globl vector146 -vector146: - pushl $0 - 1024a7: 6a 00 push $0x0 - pushl $146 - 1024a9: 68 92 00 00 00 push $0x92 - jmp __alltraps - 1024ae: e9 1c 05 00 00 jmp 1029cf <__alltraps> - -001024b3 : -.globl vector147 -vector147: - pushl $0 - 1024b3: 6a 00 push $0x0 - pushl $147 - 1024b5: 68 93 00 00 00 push $0x93 - jmp __alltraps - 1024ba: e9 10 05 00 00 jmp 1029cf <__alltraps> - -001024bf : -.globl vector148 -vector148: - pushl $0 - 1024bf: 6a 00 push $0x0 - pushl $148 - 1024c1: 68 94 00 00 00 push $0x94 - jmp __alltraps - 1024c6: e9 04 05 00 00 jmp 1029cf <__alltraps> - -001024cb : -.globl vector149 -vector149: - pushl $0 - 1024cb: 6a 00 push $0x0 - pushl $149 - 1024cd: 68 95 00 00 00 push $0x95 - jmp __alltraps - 1024d2: e9 f8 04 00 00 jmp 1029cf <__alltraps> - -001024d7 : -.globl vector150 -vector150: - pushl $0 - 1024d7: 6a 00 push $0x0 - pushl $150 - 1024d9: 68 96 00 00 00 push $0x96 - jmp __alltraps - 1024de: e9 ec 04 00 00 jmp 1029cf <__alltraps> - -001024e3 : -.globl vector151 -vector151: - pushl $0 - 1024e3: 6a 00 push $0x0 - pushl $151 - 1024e5: 68 97 00 00 00 push $0x97 - jmp __alltraps - 1024ea: e9 e0 04 00 00 jmp 1029cf <__alltraps> - -001024ef : -.globl vector152 -vector152: - pushl $0 - 1024ef: 6a 00 push $0x0 - pushl $152 - 1024f1: 68 98 00 00 00 push $0x98 - jmp __alltraps - 1024f6: e9 d4 04 00 00 jmp 1029cf <__alltraps> - -001024fb : -.globl vector153 -vector153: - pushl $0 - 1024fb: 6a 00 push $0x0 - pushl $153 - 1024fd: 68 99 00 00 00 push $0x99 - jmp __alltraps - 102502: e9 c8 04 00 00 jmp 1029cf <__alltraps> - -00102507 : -.globl vector154 -vector154: - pushl $0 - 102507: 6a 00 push $0x0 - pushl $154 - 102509: 68 9a 00 00 00 push $0x9a - jmp __alltraps - 10250e: e9 bc 04 00 00 jmp 1029cf <__alltraps> - -00102513 : -.globl vector155 -vector155: - pushl $0 - 102513: 6a 00 push $0x0 - pushl $155 - 102515: 68 9b 00 00 00 push $0x9b - jmp __alltraps - 10251a: e9 b0 04 00 00 jmp 1029cf <__alltraps> - -0010251f : -.globl vector156 -vector156: - pushl $0 - 10251f: 6a 00 push $0x0 - pushl $156 - 102521: 68 9c 00 00 00 push $0x9c - jmp __alltraps - 102526: e9 a4 04 00 00 jmp 1029cf <__alltraps> - -0010252b : -.globl vector157 -vector157: - pushl $0 - 10252b: 6a 00 push $0x0 - pushl $157 - 10252d: 68 9d 00 00 00 push $0x9d - jmp __alltraps - 102532: e9 98 04 00 00 jmp 1029cf <__alltraps> - -00102537 : -.globl vector158 -vector158: - pushl $0 - 102537: 6a 00 push $0x0 - pushl $158 - 102539: 68 9e 00 00 00 push $0x9e - jmp __alltraps - 10253e: e9 8c 04 00 00 jmp 1029cf <__alltraps> - -00102543 : -.globl vector159 -vector159: - pushl $0 - 102543: 6a 00 push $0x0 - pushl $159 - 102545: 68 9f 00 00 00 push $0x9f - jmp __alltraps - 10254a: e9 80 04 00 00 jmp 1029cf <__alltraps> - -0010254f : -.globl vector160 -vector160: - pushl $0 - 10254f: 6a 00 push $0x0 - pushl $160 - 102551: 68 a0 00 00 00 push $0xa0 - jmp __alltraps - 102556: e9 74 04 00 00 jmp 1029cf <__alltraps> - -0010255b : -.globl vector161 -vector161: - pushl $0 - 10255b: 6a 00 push $0x0 - pushl $161 - 10255d: 68 a1 00 00 00 push $0xa1 - jmp __alltraps - 102562: e9 68 04 00 00 jmp 1029cf <__alltraps> - -00102567 : -.globl vector162 -vector162: - pushl $0 - 102567: 6a 00 push $0x0 - pushl $162 - 102569: 68 a2 00 00 00 push $0xa2 - jmp __alltraps - 10256e: e9 5c 04 00 00 jmp 1029cf <__alltraps> - -00102573 : -.globl vector163 -vector163: - pushl $0 - 102573: 6a 00 push $0x0 - pushl $163 - 102575: 68 a3 00 00 00 push $0xa3 - jmp __alltraps - 10257a: e9 50 04 00 00 jmp 1029cf <__alltraps> - -0010257f : -.globl vector164 -vector164: - pushl $0 - 10257f: 6a 00 push $0x0 - pushl $164 - 102581: 68 a4 00 00 00 push $0xa4 - jmp __alltraps - 102586: e9 44 04 00 00 jmp 1029cf <__alltraps> - -0010258b : -.globl vector165 -vector165: - pushl $0 - 10258b: 6a 00 push $0x0 - pushl $165 - 10258d: 68 a5 00 00 00 push $0xa5 - jmp __alltraps - 102592: e9 38 04 00 00 jmp 1029cf <__alltraps> - -00102597 : -.globl vector166 -vector166: - pushl $0 - 102597: 6a 00 push $0x0 - pushl $166 - 102599: 68 a6 00 00 00 push $0xa6 - jmp __alltraps - 10259e: e9 2c 04 00 00 jmp 1029cf <__alltraps> - -001025a3 : -.globl vector167 -vector167: - pushl $0 - 1025a3: 6a 00 push $0x0 - pushl $167 - 1025a5: 68 a7 00 00 00 push $0xa7 - jmp __alltraps - 1025aa: e9 20 04 00 00 jmp 1029cf <__alltraps> - -001025af : -.globl vector168 -vector168: - pushl $0 - 1025af: 6a 00 push $0x0 - pushl $168 - 1025b1: 68 a8 00 00 00 push $0xa8 - jmp __alltraps - 1025b6: e9 14 04 00 00 jmp 1029cf <__alltraps> - -001025bb : -.globl vector169 -vector169: - pushl $0 - 1025bb: 6a 00 push $0x0 - pushl $169 - 1025bd: 68 a9 00 00 00 push $0xa9 - jmp __alltraps - 1025c2: e9 08 04 00 00 jmp 1029cf <__alltraps> - -001025c7 : -.globl vector170 -vector170: - pushl $0 - 1025c7: 6a 00 push $0x0 - pushl $170 - 1025c9: 68 aa 00 00 00 push $0xaa - jmp __alltraps - 1025ce: e9 fc 03 00 00 jmp 1029cf <__alltraps> - -001025d3 : -.globl vector171 -vector171: - pushl $0 - 1025d3: 6a 00 push $0x0 - pushl $171 - 1025d5: 68 ab 00 00 00 push $0xab - jmp __alltraps - 1025da: e9 f0 03 00 00 jmp 1029cf <__alltraps> - -001025df : -.globl vector172 -vector172: - pushl $0 - 1025df: 6a 00 push $0x0 - pushl $172 - 1025e1: 68 ac 00 00 00 push $0xac - jmp __alltraps - 1025e6: e9 e4 03 00 00 jmp 1029cf <__alltraps> - -001025eb : -.globl vector173 -vector173: - pushl $0 - 1025eb: 6a 00 push $0x0 - pushl $173 - 1025ed: 68 ad 00 00 00 push $0xad - jmp __alltraps - 1025f2: e9 d8 03 00 00 jmp 1029cf <__alltraps> - -001025f7 : -.globl vector174 -vector174: - pushl $0 - 1025f7: 6a 00 push $0x0 - pushl $174 - 1025f9: 68 ae 00 00 00 push $0xae - jmp __alltraps - 1025fe: e9 cc 03 00 00 jmp 1029cf <__alltraps> - -00102603 : -.globl vector175 -vector175: - pushl $0 - 102603: 6a 00 push $0x0 - pushl $175 - 102605: 68 af 00 00 00 push $0xaf - jmp __alltraps - 10260a: e9 c0 03 00 00 jmp 1029cf <__alltraps> - -0010260f : -.globl vector176 -vector176: - pushl $0 - 10260f: 6a 00 push $0x0 - pushl $176 - 102611: 68 b0 00 00 00 push $0xb0 - jmp __alltraps - 102616: e9 b4 03 00 00 jmp 1029cf <__alltraps> - -0010261b : -.globl vector177 -vector177: - pushl $0 - 10261b: 6a 00 push $0x0 - pushl $177 - 10261d: 68 b1 00 00 00 push $0xb1 - jmp __alltraps - 102622: e9 a8 03 00 00 jmp 1029cf <__alltraps> - -00102627 : -.globl vector178 -vector178: - pushl $0 - 102627: 6a 00 push $0x0 - pushl $178 - 102629: 68 b2 00 00 00 push $0xb2 - jmp __alltraps - 10262e: e9 9c 03 00 00 jmp 1029cf <__alltraps> - -00102633 : -.globl vector179 -vector179: - pushl $0 - 102633: 6a 00 push $0x0 - pushl $179 - 102635: 68 b3 00 00 00 push $0xb3 - jmp __alltraps - 10263a: e9 90 03 00 00 jmp 1029cf <__alltraps> - -0010263f : -.globl vector180 -vector180: - pushl $0 - 10263f: 6a 00 push $0x0 - pushl $180 - 102641: 68 b4 00 00 00 push $0xb4 - jmp __alltraps - 102646: e9 84 03 00 00 jmp 1029cf <__alltraps> - -0010264b : -.globl vector181 -vector181: - pushl $0 - 10264b: 6a 00 push $0x0 - pushl $181 - 10264d: 68 b5 00 00 00 push $0xb5 - jmp __alltraps - 102652: e9 78 03 00 00 jmp 1029cf <__alltraps> - -00102657 : -.globl vector182 -vector182: - pushl $0 - 102657: 6a 00 push $0x0 - pushl $182 - 102659: 68 b6 00 00 00 push $0xb6 - jmp __alltraps - 10265e: e9 6c 03 00 00 jmp 1029cf <__alltraps> - -00102663 : -.globl vector183 -vector183: - pushl $0 - 102663: 6a 00 push $0x0 - pushl $183 - 102665: 68 b7 00 00 00 push $0xb7 - jmp __alltraps - 10266a: e9 60 03 00 00 jmp 1029cf <__alltraps> - -0010266f : -.globl vector184 -vector184: - pushl $0 - 10266f: 6a 00 push $0x0 - pushl $184 - 102671: 68 b8 00 00 00 push $0xb8 - jmp __alltraps - 102676: e9 54 03 00 00 jmp 1029cf <__alltraps> - -0010267b : -.globl vector185 -vector185: - pushl $0 - 10267b: 6a 00 push $0x0 - pushl $185 - 10267d: 68 b9 00 00 00 push $0xb9 - jmp __alltraps - 102682: e9 48 03 00 00 jmp 1029cf <__alltraps> - -00102687 : -.globl vector186 -vector186: - pushl $0 - 102687: 6a 00 push $0x0 - pushl $186 - 102689: 68 ba 00 00 00 push $0xba - jmp __alltraps - 10268e: e9 3c 03 00 00 jmp 1029cf <__alltraps> - -00102693 : -.globl vector187 -vector187: - pushl $0 - 102693: 6a 00 push $0x0 - pushl $187 - 102695: 68 bb 00 00 00 push $0xbb - jmp __alltraps - 10269a: e9 30 03 00 00 jmp 1029cf <__alltraps> - -0010269f : -.globl vector188 -vector188: - pushl $0 - 10269f: 6a 00 push $0x0 - pushl $188 - 1026a1: 68 bc 00 00 00 push $0xbc - jmp __alltraps - 1026a6: e9 24 03 00 00 jmp 1029cf <__alltraps> - -001026ab : -.globl vector189 -vector189: - pushl $0 - 1026ab: 6a 00 push $0x0 - pushl $189 - 1026ad: 68 bd 00 00 00 push $0xbd - jmp __alltraps - 1026b2: e9 18 03 00 00 jmp 1029cf <__alltraps> - -001026b7 : -.globl vector190 -vector190: - pushl $0 - 1026b7: 6a 00 push $0x0 - pushl $190 - 1026b9: 68 be 00 00 00 push $0xbe - jmp __alltraps - 1026be: e9 0c 03 00 00 jmp 1029cf <__alltraps> - -001026c3 : -.globl vector191 -vector191: - pushl $0 - 1026c3: 6a 00 push $0x0 - pushl $191 - 1026c5: 68 bf 00 00 00 push $0xbf - jmp __alltraps - 1026ca: e9 00 03 00 00 jmp 1029cf <__alltraps> - -001026cf : -.globl vector192 -vector192: - pushl $0 - 1026cf: 6a 00 push $0x0 - pushl $192 - 1026d1: 68 c0 00 00 00 push $0xc0 - jmp __alltraps - 1026d6: e9 f4 02 00 00 jmp 1029cf <__alltraps> - -001026db : -.globl vector193 -vector193: - pushl $0 - 1026db: 6a 00 push $0x0 - pushl $193 - 1026dd: 68 c1 00 00 00 push $0xc1 - jmp __alltraps - 1026e2: e9 e8 02 00 00 jmp 1029cf <__alltraps> - -001026e7 : -.globl vector194 -vector194: - pushl $0 - 1026e7: 6a 00 push $0x0 - pushl $194 - 1026e9: 68 c2 00 00 00 push $0xc2 - jmp __alltraps - 1026ee: e9 dc 02 00 00 jmp 1029cf <__alltraps> - -001026f3 : -.globl vector195 -vector195: - pushl $0 - 1026f3: 6a 00 push $0x0 - pushl $195 - 1026f5: 68 c3 00 00 00 push $0xc3 - jmp __alltraps - 1026fa: e9 d0 02 00 00 jmp 1029cf <__alltraps> - -001026ff : -.globl vector196 -vector196: - pushl $0 - 1026ff: 6a 00 push $0x0 - pushl $196 - 102701: 68 c4 00 00 00 push $0xc4 - jmp __alltraps - 102706: e9 c4 02 00 00 jmp 1029cf <__alltraps> - -0010270b : -.globl vector197 -vector197: - pushl $0 - 10270b: 6a 00 push $0x0 - pushl $197 - 10270d: 68 c5 00 00 00 push $0xc5 - jmp __alltraps - 102712: e9 b8 02 00 00 jmp 1029cf <__alltraps> - -00102717 : -.globl vector198 -vector198: - pushl $0 - 102717: 6a 00 push $0x0 - pushl $198 - 102719: 68 c6 00 00 00 push $0xc6 - jmp __alltraps - 10271e: e9 ac 02 00 00 jmp 1029cf <__alltraps> - -00102723 : -.globl vector199 -vector199: - pushl $0 - 102723: 6a 00 push $0x0 - pushl $199 - 102725: 68 c7 00 00 00 push $0xc7 - jmp __alltraps - 10272a: e9 a0 02 00 00 jmp 1029cf <__alltraps> - -0010272f : -.globl vector200 -vector200: - pushl $0 - 10272f: 6a 00 push $0x0 - pushl $200 - 102731: 68 c8 00 00 00 push $0xc8 - jmp __alltraps - 102736: e9 94 02 00 00 jmp 1029cf <__alltraps> - -0010273b : -.globl vector201 -vector201: - pushl $0 - 10273b: 6a 00 push $0x0 - pushl $201 - 10273d: 68 c9 00 00 00 push $0xc9 - jmp __alltraps - 102742: e9 88 02 00 00 jmp 1029cf <__alltraps> - -00102747 : -.globl vector202 -vector202: - pushl $0 - 102747: 6a 00 push $0x0 - pushl $202 - 102749: 68 ca 00 00 00 push $0xca - jmp __alltraps - 10274e: e9 7c 02 00 00 jmp 1029cf <__alltraps> - -00102753 : -.globl vector203 -vector203: - pushl $0 - 102753: 6a 00 push $0x0 - pushl $203 - 102755: 68 cb 00 00 00 push $0xcb - jmp __alltraps - 10275a: e9 70 02 00 00 jmp 1029cf <__alltraps> - -0010275f : -.globl vector204 -vector204: - pushl $0 - 10275f: 6a 00 push $0x0 - pushl $204 - 102761: 68 cc 00 00 00 push $0xcc - jmp __alltraps - 102766: e9 64 02 00 00 jmp 1029cf <__alltraps> - -0010276b : -.globl vector205 -vector205: - pushl $0 - 10276b: 6a 00 push $0x0 - pushl $205 - 10276d: 68 cd 00 00 00 push $0xcd - jmp __alltraps - 102772: e9 58 02 00 00 jmp 1029cf <__alltraps> - -00102777 : -.globl vector206 -vector206: - pushl $0 - 102777: 6a 00 push $0x0 - pushl $206 - 102779: 68 ce 00 00 00 push $0xce - jmp __alltraps - 10277e: e9 4c 02 00 00 jmp 1029cf <__alltraps> - -00102783 : -.globl vector207 -vector207: - pushl $0 - 102783: 6a 00 push $0x0 - pushl $207 - 102785: 68 cf 00 00 00 push $0xcf - jmp __alltraps - 10278a: e9 40 02 00 00 jmp 1029cf <__alltraps> - -0010278f : -.globl vector208 -vector208: - pushl $0 - 10278f: 6a 00 push $0x0 - pushl $208 - 102791: 68 d0 00 00 00 push $0xd0 - jmp __alltraps - 102796: e9 34 02 00 00 jmp 1029cf <__alltraps> - -0010279b : -.globl vector209 -vector209: - pushl $0 - 10279b: 6a 00 push $0x0 - pushl $209 - 10279d: 68 d1 00 00 00 push $0xd1 - jmp __alltraps - 1027a2: e9 28 02 00 00 jmp 1029cf <__alltraps> - -001027a7 : -.globl vector210 -vector210: - pushl $0 - 1027a7: 6a 00 push $0x0 - pushl $210 - 1027a9: 68 d2 00 00 00 push $0xd2 - jmp __alltraps - 1027ae: e9 1c 02 00 00 jmp 1029cf <__alltraps> - -001027b3 : -.globl vector211 -vector211: - pushl $0 - 1027b3: 6a 00 push $0x0 - pushl $211 - 1027b5: 68 d3 00 00 00 push $0xd3 - jmp __alltraps - 1027ba: e9 10 02 00 00 jmp 1029cf <__alltraps> - -001027bf : -.globl vector212 -vector212: - pushl $0 - 1027bf: 6a 00 push $0x0 - pushl $212 - 1027c1: 68 d4 00 00 00 push $0xd4 - jmp __alltraps - 1027c6: e9 04 02 00 00 jmp 1029cf <__alltraps> - -001027cb : -.globl vector213 -vector213: - pushl $0 - 1027cb: 6a 00 push $0x0 - pushl $213 - 1027cd: 68 d5 00 00 00 push $0xd5 - jmp __alltraps - 1027d2: e9 f8 01 00 00 jmp 1029cf <__alltraps> - -001027d7 : -.globl vector214 -vector214: - pushl $0 - 1027d7: 6a 00 push $0x0 - pushl $214 - 1027d9: 68 d6 00 00 00 push $0xd6 - jmp __alltraps - 1027de: e9 ec 01 00 00 jmp 1029cf <__alltraps> - -001027e3 : -.globl vector215 -vector215: - pushl $0 - 1027e3: 6a 00 push $0x0 - pushl $215 - 1027e5: 68 d7 00 00 00 push $0xd7 - jmp __alltraps - 1027ea: e9 e0 01 00 00 jmp 1029cf <__alltraps> - -001027ef : -.globl vector216 -vector216: - pushl $0 - 1027ef: 6a 00 push $0x0 - pushl $216 - 1027f1: 68 d8 00 00 00 push $0xd8 - jmp __alltraps - 1027f6: e9 d4 01 00 00 jmp 1029cf <__alltraps> - -001027fb : -.globl vector217 -vector217: - pushl $0 - 1027fb: 6a 00 push $0x0 - pushl $217 - 1027fd: 68 d9 00 00 00 push $0xd9 - jmp __alltraps - 102802: e9 c8 01 00 00 jmp 1029cf <__alltraps> - -00102807 : -.globl vector218 -vector218: - pushl $0 - 102807: 6a 00 push $0x0 - pushl $218 - 102809: 68 da 00 00 00 push $0xda - jmp __alltraps - 10280e: e9 bc 01 00 00 jmp 1029cf <__alltraps> - -00102813 : -.globl vector219 -vector219: - pushl $0 - 102813: 6a 00 push $0x0 - pushl $219 - 102815: 68 db 00 00 00 push $0xdb - jmp __alltraps - 10281a: e9 b0 01 00 00 jmp 1029cf <__alltraps> - -0010281f : -.globl vector220 -vector220: - pushl $0 - 10281f: 6a 00 push $0x0 - pushl $220 - 102821: 68 dc 00 00 00 push $0xdc - jmp __alltraps - 102826: e9 a4 01 00 00 jmp 1029cf <__alltraps> - -0010282b : -.globl vector221 -vector221: - pushl $0 - 10282b: 6a 00 push $0x0 - pushl $221 - 10282d: 68 dd 00 00 00 push $0xdd - jmp __alltraps - 102832: e9 98 01 00 00 jmp 1029cf <__alltraps> - -00102837 : -.globl vector222 -vector222: - pushl $0 - 102837: 6a 00 push $0x0 - pushl $222 - 102839: 68 de 00 00 00 push $0xde - jmp __alltraps - 10283e: e9 8c 01 00 00 jmp 1029cf <__alltraps> - -00102843 : -.globl vector223 -vector223: - pushl $0 - 102843: 6a 00 push $0x0 - pushl $223 - 102845: 68 df 00 00 00 push $0xdf - jmp __alltraps - 10284a: e9 80 01 00 00 jmp 1029cf <__alltraps> - -0010284f : -.globl vector224 -vector224: - pushl $0 - 10284f: 6a 00 push $0x0 - pushl $224 - 102851: 68 e0 00 00 00 push $0xe0 - jmp __alltraps - 102856: e9 74 01 00 00 jmp 1029cf <__alltraps> - -0010285b : -.globl vector225 -vector225: - pushl $0 - 10285b: 6a 00 push $0x0 - pushl $225 - 10285d: 68 e1 00 00 00 push $0xe1 - jmp __alltraps - 102862: e9 68 01 00 00 jmp 1029cf <__alltraps> - -00102867 : -.globl vector226 -vector226: - pushl $0 - 102867: 6a 00 push $0x0 - pushl $226 - 102869: 68 e2 00 00 00 push $0xe2 - jmp __alltraps - 10286e: e9 5c 01 00 00 jmp 1029cf <__alltraps> - -00102873 : -.globl vector227 -vector227: - pushl $0 - 102873: 6a 00 push $0x0 - pushl $227 - 102875: 68 e3 00 00 00 push $0xe3 - jmp __alltraps - 10287a: e9 50 01 00 00 jmp 1029cf <__alltraps> - -0010287f : -.globl vector228 -vector228: - pushl $0 - 10287f: 6a 00 push $0x0 - pushl $228 - 102881: 68 e4 00 00 00 push $0xe4 - jmp __alltraps - 102886: e9 44 01 00 00 jmp 1029cf <__alltraps> - -0010288b : -.globl vector229 -vector229: - pushl $0 - 10288b: 6a 00 push $0x0 - pushl $229 - 10288d: 68 e5 00 00 00 push $0xe5 - jmp __alltraps - 102892: e9 38 01 00 00 jmp 1029cf <__alltraps> - -00102897 : -.globl vector230 -vector230: - pushl $0 - 102897: 6a 00 push $0x0 - pushl $230 - 102899: 68 e6 00 00 00 push $0xe6 - jmp __alltraps - 10289e: e9 2c 01 00 00 jmp 1029cf <__alltraps> - -001028a3 : -.globl vector231 -vector231: - pushl $0 - 1028a3: 6a 00 push $0x0 - pushl $231 - 1028a5: 68 e7 00 00 00 push $0xe7 - jmp __alltraps - 1028aa: e9 20 01 00 00 jmp 1029cf <__alltraps> - -001028af : -.globl vector232 -vector232: - pushl $0 - 1028af: 6a 00 push $0x0 - pushl $232 - 1028b1: 68 e8 00 00 00 push $0xe8 - jmp __alltraps - 1028b6: e9 14 01 00 00 jmp 1029cf <__alltraps> - -001028bb : -.globl vector233 -vector233: - pushl $0 - 1028bb: 6a 00 push $0x0 - pushl $233 - 1028bd: 68 e9 00 00 00 push $0xe9 - jmp __alltraps - 1028c2: e9 08 01 00 00 jmp 1029cf <__alltraps> - -001028c7 : -.globl vector234 -vector234: - pushl $0 - 1028c7: 6a 00 push $0x0 - pushl $234 - 1028c9: 68 ea 00 00 00 push $0xea - jmp __alltraps - 1028ce: e9 fc 00 00 00 jmp 1029cf <__alltraps> - -001028d3 : -.globl vector235 -vector235: - pushl $0 - 1028d3: 6a 00 push $0x0 - pushl $235 - 1028d5: 68 eb 00 00 00 push $0xeb - jmp __alltraps - 1028da: e9 f0 00 00 00 jmp 1029cf <__alltraps> - -001028df : -.globl vector236 -vector236: - pushl $0 - 1028df: 6a 00 push $0x0 - pushl $236 - 1028e1: 68 ec 00 00 00 push $0xec - jmp __alltraps - 1028e6: e9 e4 00 00 00 jmp 1029cf <__alltraps> - -001028eb : -.globl vector237 -vector237: - pushl $0 - 1028eb: 6a 00 push $0x0 - pushl $237 - 1028ed: 68 ed 00 00 00 push $0xed - jmp __alltraps - 1028f2: e9 d8 00 00 00 jmp 1029cf <__alltraps> - -001028f7 : -.globl vector238 -vector238: - pushl $0 - 1028f7: 6a 00 push $0x0 - pushl $238 - 1028f9: 68 ee 00 00 00 push $0xee - jmp __alltraps - 1028fe: e9 cc 00 00 00 jmp 1029cf <__alltraps> - -00102903 : -.globl vector239 -vector239: - pushl $0 - 102903: 6a 00 push $0x0 - pushl $239 - 102905: 68 ef 00 00 00 push $0xef - jmp __alltraps - 10290a: e9 c0 00 00 00 jmp 1029cf <__alltraps> - -0010290f : -.globl vector240 -vector240: - pushl $0 - 10290f: 6a 00 push $0x0 - pushl $240 - 102911: 68 f0 00 00 00 push $0xf0 - jmp __alltraps - 102916: e9 b4 00 00 00 jmp 1029cf <__alltraps> - -0010291b : -.globl vector241 -vector241: - pushl $0 - 10291b: 6a 00 push $0x0 - pushl $241 - 10291d: 68 f1 00 00 00 push $0xf1 - jmp __alltraps - 102922: e9 a8 00 00 00 jmp 1029cf <__alltraps> - -00102927 : -.globl vector242 -vector242: - pushl $0 - 102927: 6a 00 push $0x0 - pushl $242 - 102929: 68 f2 00 00 00 push $0xf2 - jmp __alltraps - 10292e: e9 9c 00 00 00 jmp 1029cf <__alltraps> - -00102933 : -.globl vector243 -vector243: - pushl $0 - 102933: 6a 00 push $0x0 - pushl $243 - 102935: 68 f3 00 00 00 push $0xf3 - jmp __alltraps - 10293a: e9 90 00 00 00 jmp 1029cf <__alltraps> - -0010293f : -.globl vector244 -vector244: - pushl $0 - 10293f: 6a 00 push $0x0 - pushl $244 - 102941: 68 f4 00 00 00 push $0xf4 - jmp __alltraps - 102946: e9 84 00 00 00 jmp 1029cf <__alltraps> - -0010294b : -.globl vector245 -vector245: - pushl $0 - 10294b: 6a 00 push $0x0 - pushl $245 - 10294d: 68 f5 00 00 00 push $0xf5 - jmp __alltraps - 102952: e9 78 00 00 00 jmp 1029cf <__alltraps> - -00102957 : -.globl vector246 -vector246: - pushl $0 - 102957: 6a 00 push $0x0 - pushl $246 - 102959: 68 f6 00 00 00 push $0xf6 - jmp __alltraps - 10295e: e9 6c 00 00 00 jmp 1029cf <__alltraps> - -00102963 : -.globl vector247 -vector247: - pushl $0 - 102963: 6a 00 push $0x0 - pushl $247 - 102965: 68 f7 00 00 00 push $0xf7 - jmp __alltraps - 10296a: e9 60 00 00 00 jmp 1029cf <__alltraps> - -0010296f : -.globl vector248 -vector248: - pushl $0 - 10296f: 6a 00 push $0x0 - pushl $248 - 102971: 68 f8 00 00 00 push $0xf8 - jmp __alltraps - 102976: e9 54 00 00 00 jmp 1029cf <__alltraps> - -0010297b : -.globl vector249 -vector249: - pushl $0 - 10297b: 6a 00 push $0x0 - pushl $249 - 10297d: 68 f9 00 00 00 push $0xf9 - jmp __alltraps - 102982: e9 48 00 00 00 jmp 1029cf <__alltraps> - -00102987 : -.globl vector250 -vector250: - pushl $0 - 102987: 6a 00 push $0x0 - pushl $250 - 102989: 68 fa 00 00 00 push $0xfa - jmp __alltraps - 10298e: e9 3c 00 00 00 jmp 1029cf <__alltraps> - -00102993 : -.globl vector251 -vector251: - pushl $0 - 102993: 6a 00 push $0x0 - pushl $251 - 102995: 68 fb 00 00 00 push $0xfb - jmp __alltraps - 10299a: e9 30 00 00 00 jmp 1029cf <__alltraps> - -0010299f : -.globl vector252 -vector252: - pushl $0 - 10299f: 6a 00 push $0x0 - pushl $252 - 1029a1: 68 fc 00 00 00 push $0xfc - jmp __alltraps - 1029a6: e9 24 00 00 00 jmp 1029cf <__alltraps> - -001029ab : -.globl vector253 -vector253: - pushl $0 - 1029ab: 6a 00 push $0x0 - pushl $253 - 1029ad: 68 fd 00 00 00 push $0xfd - jmp __alltraps - 1029b2: e9 18 00 00 00 jmp 1029cf <__alltraps> - -001029b7 : -.globl vector254 -vector254: - pushl $0 - 1029b7: 6a 00 push $0x0 - pushl $254 - 1029b9: 68 fe 00 00 00 push $0xfe - jmp __alltraps - 1029be: e9 0c 00 00 00 jmp 1029cf <__alltraps> - -001029c3 : -.globl vector255 -vector255: - pushl $0 - 1029c3: 6a 00 push $0x0 - pushl $255 - 1029c5: 68 ff 00 00 00 push $0xff - jmp __alltraps - 1029ca: e9 00 00 00 00 jmp 1029cf <__alltraps> - -001029cf <__alltraps>: -.text -.globl __alltraps -__alltraps: - # push registers to build a trap frame - # therefore make the stack look like a struct trapframe - pushl %ds - 1029cf: 1e push %ds - pushl %es - 1029d0: 06 push %es - pushl %fs - 1029d1: 0f a0 push %fs - pushl %gs - 1029d3: 0f a8 push %gs - pushal - 1029d5: 60 pusha - - # load GD_KDATA into %ds and %es to set up data segments for kernel - movl $GD_KDATA, %eax - 1029d6: b8 10 00 00 00 mov $0x10,%eax - movw %ax, %ds - 1029db: 8e d8 mov %eax,%ds - movw %ax, %es - 1029dd: 8e c0 mov %eax,%es - - # push %esp to pass a pointer to the trapframe as an argument to trap() - pushl %esp - 1029df: 54 push %esp - - # call trap(tf), where tf=%esp - call trap - 1029e0: e8 63 f5 ff ff call 101f48 - - # pop the pushed stack pointer - popl %esp - 1029e5: 5c pop %esp - -001029e6 <__trapret>: - - # return falls through to trapret... -.globl __trapret -__trapret: - # restore registers from stack - popal - 1029e6: 61 popa - - # restore %ds, %es, %fs and %gs - popl %gs - 1029e7: 0f a9 pop %gs - popl %fs - 1029e9: 0f a1 pop %fs - popl %es - 1029eb: 07 pop %es - popl %ds - 1029ec: 1f pop %ds - - # get rid of the trap number and error code - addl $0x8, %esp - 1029ed: 83 c4 08 add $0x8,%esp - iret - 1029f0: cf iret - -001029f1 : -/* * - * lgdt - load the global descriptor table register and reset the - * data/code segement registers for kernel. - * */ -static inline void -lgdt(struct pseudodesc *pd) { - 1029f1: 55 push %ebp - 1029f2: 89 e5 mov %esp,%ebp - asm volatile ("lgdt (%0)" :: "r" (pd)); - 1029f4: 8b 45 08 mov 0x8(%ebp),%eax - 1029f7: 0f 01 10 lgdtl (%eax) - asm volatile ("movw %%ax, %%gs" :: "a" (USER_DS)); - 1029fa: b8 23 00 00 00 mov $0x23,%eax - 1029ff: 8e e8 mov %eax,%gs - asm volatile ("movw %%ax, %%fs" :: "a" (USER_DS)); - 102a01: b8 23 00 00 00 mov $0x23,%eax - 102a06: 8e e0 mov %eax,%fs - asm volatile ("movw %%ax, %%es" :: "a" (KERNEL_DS)); - 102a08: b8 10 00 00 00 mov $0x10,%eax - 102a0d: 8e c0 mov %eax,%es - asm volatile ("movw %%ax, %%ds" :: "a" (KERNEL_DS)); - 102a0f: b8 10 00 00 00 mov $0x10,%eax - 102a14: 8e d8 mov %eax,%ds - asm volatile ("movw %%ax, %%ss" :: "a" (KERNEL_DS)); - 102a16: b8 10 00 00 00 mov $0x10,%eax - 102a1b: 8e d0 mov %eax,%ss - // reload cs - asm volatile ("ljmp %0, $1f\n 1:\n" :: "i" (KERNEL_CS)); - 102a1d: ea 24 2a 10 00 08 00 ljmp $0x8,$0x102a24 -} - 102a24: 90 nop - 102a25: 5d pop %ebp - 102a26: c3 ret - -00102a27 : -/* temporary kernel stack */ -uint8_t stack0[1024]; - -/* gdt_init - initialize the default GDT and TSS */ -static void -gdt_init(void) { - 102a27: 55 push %ebp - 102a28: 89 e5 mov %esp,%ebp - 102a2a: 83 ec 10 sub $0x10,%esp - // Setup a TSS so that we can get the right stack when we trap from - // user to the kernel. But not safe here, it's only a temporary value, - // it will be set to KSTACKTOP in lab2. - ts.ts_esp0 = (uint32_t)&stack0 + sizeof(stack0); - 102a2d: b8 40 f9 10 00 mov $0x10f940,%eax - 102a32: 05 00 04 00 00 add $0x400,%eax - 102a37: a3 c4 f8 10 00 mov %eax,0x10f8c4 - ts.ts_ss0 = KERNEL_DS; - 102a3c: 66 c7 05 c8 f8 10 00 movw $0x10,0x10f8c8 - 102a43: 10 00 - - // initialize the TSS filed of the gdt - gdt[SEG_TSS] = SEG16(STS_T32A, (uint32_t)&ts, sizeof(ts), DPL_KERNEL); - 102a45: 66 c7 05 08 ea 10 00 movw $0x68,0x10ea08 - 102a4c: 68 00 - 102a4e: b8 c0 f8 10 00 mov $0x10f8c0,%eax - 102a53: 66 a3 0a ea 10 00 mov %ax,0x10ea0a - 102a59: b8 c0 f8 10 00 mov $0x10f8c0,%eax - 102a5e: c1 e8 10 shr $0x10,%eax - 102a61: a2 0c ea 10 00 mov %al,0x10ea0c - 102a66: 0f b6 05 0d ea 10 00 movzbl 0x10ea0d,%eax - 102a6d: 83 e0 f0 and $0xfffffff0,%eax - 102a70: 83 c8 09 or $0x9,%eax - 102a73: a2 0d ea 10 00 mov %al,0x10ea0d - 102a78: 0f b6 05 0d ea 10 00 movzbl 0x10ea0d,%eax - 102a7f: 83 c8 10 or $0x10,%eax - 102a82: a2 0d ea 10 00 mov %al,0x10ea0d - 102a87: 0f b6 05 0d ea 10 00 movzbl 0x10ea0d,%eax - 102a8e: 83 e0 9f and $0xffffff9f,%eax - 102a91: a2 0d ea 10 00 mov %al,0x10ea0d - 102a96: 0f b6 05 0d ea 10 00 movzbl 0x10ea0d,%eax - 102a9d: 83 c8 80 or $0xffffff80,%eax - 102aa0: a2 0d ea 10 00 mov %al,0x10ea0d - 102aa5: 0f b6 05 0e ea 10 00 movzbl 0x10ea0e,%eax - 102aac: 83 e0 f0 and $0xfffffff0,%eax - 102aaf: a2 0e ea 10 00 mov %al,0x10ea0e - 102ab4: 0f b6 05 0e ea 10 00 movzbl 0x10ea0e,%eax - 102abb: 83 e0 ef and $0xffffffef,%eax - 102abe: a2 0e ea 10 00 mov %al,0x10ea0e - 102ac3: 0f b6 05 0e ea 10 00 movzbl 0x10ea0e,%eax - 102aca: 83 e0 df and $0xffffffdf,%eax - 102acd: a2 0e ea 10 00 mov %al,0x10ea0e - 102ad2: 0f b6 05 0e ea 10 00 movzbl 0x10ea0e,%eax - 102ad9: 83 c8 40 or $0x40,%eax - 102adc: a2 0e ea 10 00 mov %al,0x10ea0e - 102ae1: 0f b6 05 0e ea 10 00 movzbl 0x10ea0e,%eax - 102ae8: 83 e0 7f and $0x7f,%eax - 102aeb: a2 0e ea 10 00 mov %al,0x10ea0e - 102af0: b8 c0 f8 10 00 mov $0x10f8c0,%eax - 102af5: c1 e8 18 shr $0x18,%eax - 102af8: a2 0f ea 10 00 mov %al,0x10ea0f - gdt[SEG_TSS].sd_s = 0; - 102afd: 0f b6 05 0d ea 10 00 movzbl 0x10ea0d,%eax - 102b04: 83 e0 ef and $0xffffffef,%eax - 102b07: a2 0d ea 10 00 mov %al,0x10ea0d - - // reload all segment registers - lgdt(&gdt_pd); - 102b0c: 68 10 ea 10 00 push $0x10ea10 - 102b11: e8 db fe ff ff call 1029f1 - 102b16: 83 c4 04 add $0x4,%esp - 102b19: 66 c7 45 fe 28 00 movw $0x28,-0x2(%ebp) - asm volatile ("cli"); -} - -static inline void -ltr(uint16_t sel) { - asm volatile ("ltr %0" :: "r" (sel)); - 102b1f: 0f b7 45 fe movzwl -0x2(%ebp),%eax - 102b23: 0f 00 d8 ltr %ax - - // load the TSS - ltr(GD_TSS); -} - 102b26: 90 nop - 102b27: c9 leave - 102b28: c3 ret - -00102b29 : - -/* pmm_init - initialize the physical memory management */ -void -pmm_init(void) { - 102b29: 55 push %ebp - 102b2a: 89 e5 mov %esp,%ebp - gdt_init(); - 102b2c: e8 f6 fe ff ff call 102a27 -} - 102b31: 90 nop - 102b32: 5d pop %ebp - 102b33: c3 ret - -00102b34 : - * @s: the input string - * - * The strlen() function returns the length of string @s. - * */ -size_t -strlen(const char *s) { - 102b34: 55 push %ebp - 102b35: 89 e5 mov %esp,%ebp - 102b37: 83 ec 10 sub $0x10,%esp - size_t cnt = 0; - 102b3a: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp) - while (*s ++ != '\0') { - 102b41: eb 04 jmp 102b47 - cnt ++; - 102b43: 83 45 fc 01 addl $0x1,-0x4(%ebp) - * The strlen() function returns the length of string @s. - * */ -size_t -strlen(const char *s) { - size_t cnt = 0; - while (*s ++ != '\0') { - 102b47: 8b 45 08 mov 0x8(%ebp),%eax - 102b4a: 8d 50 01 lea 0x1(%eax),%edx - 102b4d: 89 55 08 mov %edx,0x8(%ebp) - 102b50: 0f b6 00 movzbl (%eax),%eax - 102b53: 84 c0 test %al,%al - 102b55: 75 ec jne 102b43 - cnt ++; - } - return cnt; - 102b57: 8b 45 fc mov -0x4(%ebp),%eax -} - 102b5a: c9 leave - 102b5b: c3 ret - -00102b5c : - * The return value is strlen(s), if that is less than @len, or - * @len if there is no '\0' character among the first @len characters - * pointed by @s. - * */ -size_t -strnlen(const char *s, size_t len) { - 102b5c: 55 push %ebp - 102b5d: 89 e5 mov %esp,%ebp - 102b5f: 83 ec 10 sub $0x10,%esp - size_t cnt = 0; - 102b62: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp) - while (cnt < len && *s ++ != '\0') { - 102b69: eb 04 jmp 102b6f - cnt ++; - 102b6b: 83 45 fc 01 addl $0x1,-0x4(%ebp) - * pointed by @s. - * */ -size_t -strnlen(const char *s, size_t len) { - size_t cnt = 0; - while (cnt < len && *s ++ != '\0') { - 102b6f: 8b 45 fc mov -0x4(%ebp),%eax - 102b72: 3b 45 0c cmp 0xc(%ebp),%eax - 102b75: 73 10 jae 102b87 - 102b77: 8b 45 08 mov 0x8(%ebp),%eax - 102b7a: 8d 50 01 lea 0x1(%eax),%edx - 102b7d: 89 55 08 mov %edx,0x8(%ebp) - 102b80: 0f b6 00 movzbl (%eax),%eax - 102b83: 84 c0 test %al,%al - 102b85: 75 e4 jne 102b6b - cnt ++; - } - return cnt; - 102b87: 8b 45 fc mov -0x4(%ebp),%eax -} - 102b8a: c9 leave - 102b8b: c3 ret - -00102b8c : - * To avoid overflows, the size of array pointed by @dst should be long enough to - * contain the same string as @src (including the terminating null character), and - * should not overlap in memory with @src. - * */ -char * -strcpy(char *dst, const char *src) { - 102b8c: 55 push %ebp - 102b8d: 89 e5 mov %esp,%ebp - 102b8f: 57 push %edi - 102b90: 56 push %esi - 102b91: 83 ec 20 sub $0x20,%esp - 102b94: 8b 45 08 mov 0x8(%ebp),%eax - 102b97: 89 45 f4 mov %eax,-0xc(%ebp) - 102b9a: 8b 45 0c mov 0xc(%ebp),%eax - 102b9d: 89 45 f0 mov %eax,-0x10(%ebp) -#ifndef __HAVE_ARCH_STRCPY -#define __HAVE_ARCH_STRCPY -static inline char * -__strcpy(char *dst, const char *src) { - int d0, d1, d2; - asm volatile ( - 102ba0: 8b 55 f0 mov -0x10(%ebp),%edx - 102ba3: 8b 45 f4 mov -0xc(%ebp),%eax - 102ba6: 89 d1 mov %edx,%ecx - 102ba8: 89 c2 mov %eax,%edx - 102baa: 89 ce mov %ecx,%esi - 102bac: 89 d7 mov %edx,%edi - 102bae: ac lods %ds:(%esi),%al - 102baf: aa stos %al,%es:(%edi) - 102bb0: 84 c0 test %al,%al - 102bb2: 75 fa jne 102bae - 102bb4: 89 fa mov %edi,%edx - 102bb6: 89 f1 mov %esi,%ecx - 102bb8: 89 4d ec mov %ecx,-0x14(%ebp) - 102bbb: 89 55 e8 mov %edx,-0x18(%ebp) - 102bbe: 89 45 e4 mov %eax,-0x1c(%ebp) - "stosb;" - "testb %%al, %%al;" - "jne 1b;" - : "=&S" (d0), "=&D" (d1), "=&a" (d2) - : "0" (src), "1" (dst) : "memory"); - return dst; - 102bc1: 8b 45 f4 mov -0xc(%ebp),%eax -#ifdef __HAVE_ARCH_STRCPY - return __strcpy(dst, src); - 102bc4: 90 nop - char *p = dst; - while ((*p ++ = *src ++) != '\0') - /* nothing */; - return dst; -#endif /* __HAVE_ARCH_STRCPY */ -} - 102bc5: 83 c4 20 add $0x20,%esp - 102bc8: 5e pop %esi - 102bc9: 5f pop %edi - 102bca: 5d pop %ebp - 102bcb: c3 ret - -00102bcc : - * @len: maximum number of characters to be copied from @src - * - * The return value is @dst - * */ -char * -strncpy(char *dst, const char *src, size_t len) { - 102bcc: 55 push %ebp - 102bcd: 89 e5 mov %esp,%ebp - 102bcf: 83 ec 10 sub $0x10,%esp - char *p = dst; - 102bd2: 8b 45 08 mov 0x8(%ebp),%eax - 102bd5: 89 45 fc mov %eax,-0x4(%ebp) - while (len > 0) { - 102bd8: eb 21 jmp 102bfb - if ((*p = *src) != '\0') { - 102bda: 8b 45 0c mov 0xc(%ebp),%eax - 102bdd: 0f b6 10 movzbl (%eax),%edx - 102be0: 8b 45 fc mov -0x4(%ebp),%eax - 102be3: 88 10 mov %dl,(%eax) - 102be5: 8b 45 fc mov -0x4(%ebp),%eax - 102be8: 0f b6 00 movzbl (%eax),%eax - 102beb: 84 c0 test %al,%al - 102bed: 74 04 je 102bf3 - src ++; - 102bef: 83 45 0c 01 addl $0x1,0xc(%ebp) - } - p ++, len --; - 102bf3: 83 45 fc 01 addl $0x1,-0x4(%ebp) - 102bf7: 83 6d 10 01 subl $0x1,0x10(%ebp) - * The return value is @dst - * */ -char * -strncpy(char *dst, const char *src, size_t len) { - char *p = dst; - while (len > 0) { - 102bfb: 83 7d 10 00 cmpl $0x0,0x10(%ebp) - 102bff: 75 d9 jne 102bda - if ((*p = *src) != '\0') { - src ++; - } - p ++, len --; - } - return dst; - 102c01: 8b 45 08 mov 0x8(%ebp),%eax -} - 102c04: c9 leave - 102c05: c3 ret - -00102c06 : - * - A value greater than zero indicates that the first character that does - * not match has a greater value in @s1 than in @s2; - * - And a value less than zero indicates the opposite. - * */ -int -strcmp(const char *s1, const char *s2) { - 102c06: 55 push %ebp - 102c07: 89 e5 mov %esp,%ebp - 102c09: 57 push %edi - 102c0a: 56 push %esi - 102c0b: 83 ec 20 sub $0x20,%esp - 102c0e: 8b 45 08 mov 0x8(%ebp),%eax - 102c11: 89 45 f4 mov %eax,-0xc(%ebp) - 102c14: 8b 45 0c mov 0xc(%ebp),%eax - 102c17: 89 45 f0 mov %eax,-0x10(%ebp) -#ifndef __HAVE_ARCH_STRCMP -#define __HAVE_ARCH_STRCMP -static inline int -__strcmp(const char *s1, const char *s2) { - int d0, d1, ret; - asm volatile ( - 102c1a: 8b 55 f4 mov -0xc(%ebp),%edx - 102c1d: 8b 45 f0 mov -0x10(%ebp),%eax - 102c20: 89 d1 mov %edx,%ecx - 102c22: 89 c2 mov %eax,%edx - 102c24: 89 ce mov %ecx,%esi - 102c26: 89 d7 mov %edx,%edi - 102c28: ac lods %ds:(%esi),%al - 102c29: ae scas %es:(%edi),%al - 102c2a: 75 08 jne 102c34 - 102c2c: 84 c0 test %al,%al - 102c2e: 75 f8 jne 102c28 - 102c30: 31 c0 xor %eax,%eax - 102c32: eb 04 jmp 102c38 - 102c34: 19 c0 sbb %eax,%eax - 102c36: 0c 01 or $0x1,%al - 102c38: 89 fa mov %edi,%edx - 102c3a: 89 f1 mov %esi,%ecx - 102c3c: 89 45 ec mov %eax,-0x14(%ebp) - 102c3f: 89 4d e8 mov %ecx,-0x18(%ebp) - 102c42: 89 55 e4 mov %edx,-0x1c(%ebp) - "orb $1, %%al;" - "3:" - : "=a" (ret), "=&S" (d0), "=&D" (d1) - : "1" (s1), "2" (s2) - : "memory"); - return ret; - 102c45: 8b 45 ec mov -0x14(%ebp),%eax -#ifdef __HAVE_ARCH_STRCMP - return __strcmp(s1, s2); - 102c48: 90 nop - while (*s1 != '\0' && *s1 == *s2) { - s1 ++, s2 ++; - } - return (int)((unsigned char)*s1 - (unsigned char)*s2); -#endif /* __HAVE_ARCH_STRCMP */ -} - 102c49: 83 c4 20 add $0x20,%esp - 102c4c: 5e pop %esi - 102c4d: 5f pop %edi - 102c4e: 5d pop %ebp - 102c4f: c3 ret - -00102c50 : - * they are equal to each other, it continues with the following pairs until - * the characters differ, until a terminating null-character is reached, or - * until @n characters match in both strings, whichever happens first. - * */ -int -strncmp(const char *s1, const char *s2, size_t n) { - 102c50: 55 push %ebp - 102c51: 89 e5 mov %esp,%ebp - while (n > 0 && *s1 != '\0' && *s1 == *s2) { - 102c53: eb 0c jmp 102c61 - n --, s1 ++, s2 ++; - 102c55: 83 6d 10 01 subl $0x1,0x10(%ebp) - 102c59: 83 45 08 01 addl $0x1,0x8(%ebp) - 102c5d: 83 45 0c 01 addl $0x1,0xc(%ebp) - * the characters differ, until a terminating null-character is reached, or - * until @n characters match in both strings, whichever happens first. - * */ -int -strncmp(const char *s1, const char *s2, size_t n) { - while (n > 0 && *s1 != '\0' && *s1 == *s2) { - 102c61: 83 7d 10 00 cmpl $0x0,0x10(%ebp) - 102c65: 74 1a je 102c81 - 102c67: 8b 45 08 mov 0x8(%ebp),%eax - 102c6a: 0f b6 00 movzbl (%eax),%eax - 102c6d: 84 c0 test %al,%al - 102c6f: 74 10 je 102c81 - 102c71: 8b 45 08 mov 0x8(%ebp),%eax - 102c74: 0f b6 10 movzbl (%eax),%edx - 102c77: 8b 45 0c mov 0xc(%ebp),%eax - 102c7a: 0f b6 00 movzbl (%eax),%eax - 102c7d: 38 c2 cmp %al,%dl - 102c7f: 74 d4 je 102c55 - n --, s1 ++, s2 ++; - } - return (n == 0) ? 0 : (int)((unsigned char)*s1 - (unsigned char)*s2); - 102c81: 83 7d 10 00 cmpl $0x0,0x10(%ebp) - 102c85: 74 18 je 102c9f - 102c87: 8b 45 08 mov 0x8(%ebp),%eax - 102c8a: 0f b6 00 movzbl (%eax),%eax - 102c8d: 0f b6 d0 movzbl %al,%edx - 102c90: 8b 45 0c mov 0xc(%ebp),%eax - 102c93: 0f b6 00 movzbl (%eax),%eax - 102c96: 0f b6 c0 movzbl %al,%eax - 102c99: 29 c2 sub %eax,%edx - 102c9b: 89 d0 mov %edx,%eax - 102c9d: eb 05 jmp 102ca4 - 102c9f: b8 00 00 00 00 mov $0x0,%eax -} - 102ca4: 5d pop %ebp - 102ca5: c3 ret - -00102ca6 : - * - * The strchr() function returns a pointer to the first occurrence of - * character in @s. If the value is not found, the function returns 'NULL'. - * */ -char * -strchr(const char *s, char c) { - 102ca6: 55 push %ebp - 102ca7: 89 e5 mov %esp,%ebp - 102ca9: 83 ec 04 sub $0x4,%esp - 102cac: 8b 45 0c mov 0xc(%ebp),%eax - 102caf: 88 45 fc mov %al,-0x4(%ebp) - while (*s != '\0') { - 102cb2: eb 14 jmp 102cc8 - if (*s == c) { - 102cb4: 8b 45 08 mov 0x8(%ebp),%eax - 102cb7: 0f b6 00 movzbl (%eax),%eax - 102cba: 3a 45 fc cmp -0x4(%ebp),%al - 102cbd: 75 05 jne 102cc4 - return (char *)s; - 102cbf: 8b 45 08 mov 0x8(%ebp),%eax - 102cc2: eb 13 jmp 102cd7 - } - s ++; - 102cc4: 83 45 08 01 addl $0x1,0x8(%ebp) - * The strchr() function returns a pointer to the first occurrence of - * character in @s. If the value is not found, the function returns 'NULL'. - * */ -char * -strchr(const char *s, char c) { - while (*s != '\0') { - 102cc8: 8b 45 08 mov 0x8(%ebp),%eax - 102ccb: 0f b6 00 movzbl (%eax),%eax - 102cce: 84 c0 test %al,%al - 102cd0: 75 e2 jne 102cb4 - if (*s == c) { - return (char *)s; - } - s ++; - } - return NULL; - 102cd2: b8 00 00 00 00 mov $0x0,%eax -} - 102cd7: c9 leave - 102cd8: c3 ret - -00102cd9 : - * The strfind() function is like strchr() except that if @c is - * not found in @s, then it returns a pointer to the null byte at the - * end of @s, rather than 'NULL'. - * */ -char * -strfind(const char *s, char c) { - 102cd9: 55 push %ebp - 102cda: 89 e5 mov %esp,%ebp - 102cdc: 83 ec 04 sub $0x4,%esp - 102cdf: 8b 45 0c mov 0xc(%ebp),%eax - 102ce2: 88 45 fc mov %al,-0x4(%ebp) - while (*s != '\0') { - 102ce5: eb 0f jmp 102cf6 - if (*s == c) { - 102ce7: 8b 45 08 mov 0x8(%ebp),%eax - 102cea: 0f b6 00 movzbl (%eax),%eax - 102ced: 3a 45 fc cmp -0x4(%ebp),%al - 102cf0: 74 10 je 102d02 - break; - } - s ++; - 102cf2: 83 45 08 01 addl $0x1,0x8(%ebp) - * not found in @s, then it returns a pointer to the null byte at the - * end of @s, rather than 'NULL'. - * */ -char * -strfind(const char *s, char c) { - while (*s != '\0') { - 102cf6: 8b 45 08 mov 0x8(%ebp),%eax - 102cf9: 0f b6 00 movzbl (%eax),%eax - 102cfc: 84 c0 test %al,%al - 102cfe: 75 e7 jne 102ce7 - 102d00: eb 01 jmp 102d03 - if (*s == c) { - break; - 102d02: 90 nop - } - s ++; - } - return (char *)s; - 102d03: 8b 45 08 mov 0x8(%ebp),%eax -} - 102d06: c9 leave - 102d07: c3 ret - -00102d08 : - * an optional "0x" or "0X" prefix. - * - * The strtol() function returns the converted integral number as a long int value. - * */ -long -strtol(const char *s, char **endptr, int base) { - 102d08: 55 push %ebp - 102d09: 89 e5 mov %esp,%ebp - 102d0b: 83 ec 10 sub $0x10,%esp - int neg = 0; - 102d0e: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp) - long val = 0; - 102d15: c7 45 f8 00 00 00 00 movl $0x0,-0x8(%ebp) - - // gobble initial whitespace - while (*s == ' ' || *s == '\t') { - 102d1c: eb 04 jmp 102d22 - s ++; - 102d1e: 83 45 08 01 addl $0x1,0x8(%ebp) -strtol(const char *s, char **endptr, int base) { - int neg = 0; - long val = 0; - - // gobble initial whitespace - while (*s == ' ' || *s == '\t') { - 102d22: 8b 45 08 mov 0x8(%ebp),%eax - 102d25: 0f b6 00 movzbl (%eax),%eax - 102d28: 3c 20 cmp $0x20,%al - 102d2a: 74 f2 je 102d1e - 102d2c: 8b 45 08 mov 0x8(%ebp),%eax - 102d2f: 0f b6 00 movzbl (%eax),%eax - 102d32: 3c 09 cmp $0x9,%al - 102d34: 74 e8 je 102d1e - s ++; - } - - // plus/minus sign - if (*s == '+') { - 102d36: 8b 45 08 mov 0x8(%ebp),%eax - 102d39: 0f b6 00 movzbl (%eax),%eax - 102d3c: 3c 2b cmp $0x2b,%al - 102d3e: 75 06 jne 102d46 - s ++; - 102d40: 83 45 08 01 addl $0x1,0x8(%ebp) - 102d44: eb 15 jmp 102d5b - } - else if (*s == '-') { - 102d46: 8b 45 08 mov 0x8(%ebp),%eax - 102d49: 0f b6 00 movzbl (%eax),%eax - 102d4c: 3c 2d cmp $0x2d,%al - 102d4e: 75 0b jne 102d5b - s ++, neg = 1; - 102d50: 83 45 08 01 addl $0x1,0x8(%ebp) - 102d54: c7 45 fc 01 00 00 00 movl $0x1,-0x4(%ebp) - } - - // hex or octal base prefix - if ((base == 0 || base == 16) && (s[0] == '0' && s[1] == 'x')) { - 102d5b: 83 7d 10 00 cmpl $0x0,0x10(%ebp) - 102d5f: 74 06 je 102d67 - 102d61: 83 7d 10 10 cmpl $0x10,0x10(%ebp) - 102d65: 75 24 jne 102d8b - 102d67: 8b 45 08 mov 0x8(%ebp),%eax - 102d6a: 0f b6 00 movzbl (%eax),%eax - 102d6d: 3c 30 cmp $0x30,%al - 102d6f: 75 1a jne 102d8b - 102d71: 8b 45 08 mov 0x8(%ebp),%eax - 102d74: 83 c0 01 add $0x1,%eax - 102d77: 0f b6 00 movzbl (%eax),%eax - 102d7a: 3c 78 cmp $0x78,%al - 102d7c: 75 0d jne 102d8b - s += 2, base = 16; - 102d7e: 83 45 08 02 addl $0x2,0x8(%ebp) - 102d82: c7 45 10 10 00 00 00 movl $0x10,0x10(%ebp) - 102d89: eb 2a jmp 102db5 - } - else if (base == 0 && s[0] == '0') { - 102d8b: 83 7d 10 00 cmpl $0x0,0x10(%ebp) - 102d8f: 75 17 jne 102da8 - 102d91: 8b 45 08 mov 0x8(%ebp),%eax - 102d94: 0f b6 00 movzbl (%eax),%eax - 102d97: 3c 30 cmp $0x30,%al - 102d99: 75 0d jne 102da8 - s ++, base = 8; - 102d9b: 83 45 08 01 addl $0x1,0x8(%ebp) - 102d9f: c7 45 10 08 00 00 00 movl $0x8,0x10(%ebp) - 102da6: eb 0d jmp 102db5 - } - else if (base == 0) { - 102da8: 83 7d 10 00 cmpl $0x0,0x10(%ebp) - 102dac: 75 07 jne 102db5 - base = 10; - 102dae: c7 45 10 0a 00 00 00 movl $0xa,0x10(%ebp) - - // digits - while (1) { - int dig; - - if (*s >= '0' && *s <= '9') { - 102db5: 8b 45 08 mov 0x8(%ebp),%eax - 102db8: 0f b6 00 movzbl (%eax),%eax - 102dbb: 3c 2f cmp $0x2f,%al - 102dbd: 7e 1b jle 102dda - 102dbf: 8b 45 08 mov 0x8(%ebp),%eax - 102dc2: 0f b6 00 movzbl (%eax),%eax - 102dc5: 3c 39 cmp $0x39,%al - 102dc7: 7f 11 jg 102dda - dig = *s - '0'; - 102dc9: 8b 45 08 mov 0x8(%ebp),%eax - 102dcc: 0f b6 00 movzbl (%eax),%eax - 102dcf: 0f be c0 movsbl %al,%eax - 102dd2: 83 e8 30 sub $0x30,%eax - 102dd5: 89 45 f4 mov %eax,-0xc(%ebp) - 102dd8: eb 48 jmp 102e22 - } - else if (*s >= 'a' && *s <= 'z') { - 102dda: 8b 45 08 mov 0x8(%ebp),%eax - 102ddd: 0f b6 00 movzbl (%eax),%eax - 102de0: 3c 60 cmp $0x60,%al - 102de2: 7e 1b jle 102dff - 102de4: 8b 45 08 mov 0x8(%ebp),%eax - 102de7: 0f b6 00 movzbl (%eax),%eax - 102dea: 3c 7a cmp $0x7a,%al - 102dec: 7f 11 jg 102dff - dig = *s - 'a' + 10; - 102dee: 8b 45 08 mov 0x8(%ebp),%eax - 102df1: 0f b6 00 movzbl (%eax),%eax - 102df4: 0f be c0 movsbl %al,%eax - 102df7: 83 e8 57 sub $0x57,%eax - 102dfa: 89 45 f4 mov %eax,-0xc(%ebp) - 102dfd: eb 23 jmp 102e22 - } - else if (*s >= 'A' && *s <= 'Z') { - 102dff: 8b 45 08 mov 0x8(%ebp),%eax - 102e02: 0f b6 00 movzbl (%eax),%eax - 102e05: 3c 40 cmp $0x40,%al - 102e07: 7e 3c jle 102e45 - 102e09: 8b 45 08 mov 0x8(%ebp),%eax - 102e0c: 0f b6 00 movzbl (%eax),%eax - 102e0f: 3c 5a cmp $0x5a,%al - 102e11: 7f 32 jg 102e45 - dig = *s - 'A' + 10; - 102e13: 8b 45 08 mov 0x8(%ebp),%eax - 102e16: 0f b6 00 movzbl (%eax),%eax - 102e19: 0f be c0 movsbl %al,%eax - 102e1c: 83 e8 37 sub $0x37,%eax - 102e1f: 89 45 f4 mov %eax,-0xc(%ebp) - } - else { - break; - } - if (dig >= base) { - 102e22: 8b 45 f4 mov -0xc(%ebp),%eax - 102e25: 3b 45 10 cmp 0x10(%ebp),%eax - 102e28: 7d 1a jge 102e44 - break; - } - s ++, val = (val * base) + dig; - 102e2a: 83 45 08 01 addl $0x1,0x8(%ebp) - 102e2e: 8b 45 f8 mov -0x8(%ebp),%eax - 102e31: 0f af 45 10 imul 0x10(%ebp),%eax - 102e35: 89 c2 mov %eax,%edx - 102e37: 8b 45 f4 mov -0xc(%ebp),%eax - 102e3a: 01 d0 add %edx,%eax - 102e3c: 89 45 f8 mov %eax,-0x8(%ebp) - // we don't properly detect overflow! - } - 102e3f: e9 71 ff ff ff jmp 102db5 - } - else { - break; - } - if (dig >= base) { - break; - 102e44: 90 nop - } - s ++, val = (val * base) + dig; - // we don't properly detect overflow! - } - - if (endptr) { - 102e45: 83 7d 0c 00 cmpl $0x0,0xc(%ebp) - 102e49: 74 08 je 102e53 - *endptr = (char *) s; - 102e4b: 8b 45 0c mov 0xc(%ebp),%eax - 102e4e: 8b 55 08 mov 0x8(%ebp),%edx - 102e51: 89 10 mov %edx,(%eax) - } - return (neg ? -val : val); - 102e53: 83 7d fc 00 cmpl $0x0,-0x4(%ebp) - 102e57: 74 07 je 102e60 - 102e59: 8b 45 f8 mov -0x8(%ebp),%eax - 102e5c: f7 d8 neg %eax - 102e5e: eb 03 jmp 102e63 - 102e60: 8b 45 f8 mov -0x8(%ebp),%eax -} - 102e63: c9 leave - 102e64: c3 ret - -00102e65 : - * @n: number of bytes to be set to the value - * - * The memset() function returns @s. - * */ -void * -memset(void *s, char c, size_t n) { - 102e65: 55 push %ebp - 102e66: 89 e5 mov %esp,%ebp - 102e68: 57 push %edi - 102e69: 83 ec 24 sub $0x24,%esp - 102e6c: 8b 45 0c mov 0xc(%ebp),%eax - 102e6f: 88 45 d8 mov %al,-0x28(%ebp) -#ifdef __HAVE_ARCH_MEMSET - return __memset(s, c, n); - 102e72: 0f be 45 d8 movsbl -0x28(%ebp),%eax - 102e76: 8b 55 08 mov 0x8(%ebp),%edx - 102e79: 89 55 f8 mov %edx,-0x8(%ebp) - 102e7c: 88 45 f7 mov %al,-0x9(%ebp) - 102e7f: 8b 45 10 mov 0x10(%ebp),%eax - 102e82: 89 45 f0 mov %eax,-0x10(%ebp) -#ifndef __HAVE_ARCH_MEMSET -#define __HAVE_ARCH_MEMSET -static inline void * -__memset(void *s, char c, size_t n) { - int d0, d1; - asm volatile ( - 102e85: 8b 4d f0 mov -0x10(%ebp),%ecx - 102e88: 0f b6 45 f7 movzbl -0x9(%ebp),%eax - 102e8c: 8b 55 f8 mov -0x8(%ebp),%edx - 102e8f: 89 d7 mov %edx,%edi - 102e91: f3 aa rep stos %al,%es:(%edi) - 102e93: 89 fa mov %edi,%edx - 102e95: 89 4d ec mov %ecx,-0x14(%ebp) - 102e98: 89 55 e8 mov %edx,-0x18(%ebp) - "rep; stosb;" - : "=&c" (d0), "=&D" (d1) - : "0" (n), "a" (c), "1" (s) - : "memory"); - return s; - 102e9b: 8b 45 f8 mov -0x8(%ebp),%eax - 102e9e: 90 nop - while (n -- > 0) { - *p ++ = c; - } - return s; -#endif /* __HAVE_ARCH_MEMSET */ -} - 102e9f: 83 c4 24 add $0x24,%esp - 102ea2: 5f pop %edi - 102ea3: 5d pop %ebp - 102ea4: c3 ret - -00102ea5 : - * @n: number of bytes to copy - * - * The memmove() function returns @dst. - * */ -void * -memmove(void *dst, const void *src, size_t n) { - 102ea5: 55 push %ebp - 102ea6: 89 e5 mov %esp,%ebp - 102ea8: 57 push %edi - 102ea9: 56 push %esi - 102eaa: 53 push %ebx - 102eab: 83 ec 30 sub $0x30,%esp - 102eae: 8b 45 08 mov 0x8(%ebp),%eax - 102eb1: 89 45 f0 mov %eax,-0x10(%ebp) - 102eb4: 8b 45 0c mov 0xc(%ebp),%eax - 102eb7: 89 45 ec mov %eax,-0x14(%ebp) - 102eba: 8b 45 10 mov 0x10(%ebp),%eax - 102ebd: 89 45 e8 mov %eax,-0x18(%ebp) - -#ifndef __HAVE_ARCH_MEMMOVE -#define __HAVE_ARCH_MEMMOVE -static inline void * -__memmove(void *dst, const void *src, size_t n) { - if (dst < src) { - 102ec0: 8b 45 f0 mov -0x10(%ebp),%eax - 102ec3: 3b 45 ec cmp -0x14(%ebp),%eax - 102ec6: 73 42 jae 102f0a - 102ec8: 8b 45 f0 mov -0x10(%ebp),%eax - 102ecb: 89 45 e4 mov %eax,-0x1c(%ebp) - 102ece: 8b 45 ec mov -0x14(%ebp),%eax - 102ed1: 89 45 e0 mov %eax,-0x20(%ebp) - 102ed4: 8b 45 e8 mov -0x18(%ebp),%eax - 102ed7: 89 45 dc mov %eax,-0x24(%ebp) - "andl $3, %%ecx;" - "jz 1f;" - "rep; movsb;" - "1:" - : "=&c" (d0), "=&D" (d1), "=&S" (d2) - : "0" (n / 4), "g" (n), "1" (dst), "2" (src) - 102eda: 8b 45 dc mov -0x24(%ebp),%eax - 102edd: c1 e8 02 shr $0x2,%eax - 102ee0: 89 c1 mov %eax,%ecx -#ifndef __HAVE_ARCH_MEMCPY -#define __HAVE_ARCH_MEMCPY -static inline void * -__memcpy(void *dst, const void *src, size_t n) { - int d0, d1, d2; - asm volatile ( - 102ee2: 8b 55 e4 mov -0x1c(%ebp),%edx - 102ee5: 8b 45 e0 mov -0x20(%ebp),%eax - 102ee8: 89 d7 mov %edx,%edi - 102eea: 89 c6 mov %eax,%esi - 102eec: f3 a5 rep movsl %ds:(%esi),%es:(%edi) - 102eee: 8b 4d dc mov -0x24(%ebp),%ecx - 102ef1: 83 e1 03 and $0x3,%ecx - 102ef4: 74 02 je 102ef8 - 102ef6: f3 a4 rep movsb %ds:(%esi),%es:(%edi) - 102ef8: 89 f0 mov %esi,%eax - 102efa: 89 fa mov %edi,%edx - 102efc: 89 4d d8 mov %ecx,-0x28(%ebp) - 102eff: 89 55 d4 mov %edx,-0x2c(%ebp) - 102f02: 89 45 d0 mov %eax,-0x30(%ebp) - "rep; movsb;" - "1:" - : "=&c" (d0), "=&D" (d1), "=&S" (d2) - : "0" (n / 4), "g" (n), "1" (dst), "2" (src) - : "memory"); - return dst; - 102f05: 8b 45 e4 mov -0x1c(%ebp),%eax -#ifdef __HAVE_ARCH_MEMMOVE - return __memmove(dst, src, n); - 102f08: eb 36 jmp 102f40 - asm volatile ( - "std;" - "rep; movsb;" - "cld;" - : "=&c" (d0), "=&S" (d1), "=&D" (d2) - : "0" (n), "1" (n - 1 + src), "2" (n - 1 + dst) - 102f0a: 8b 45 e8 mov -0x18(%ebp),%eax - 102f0d: 8d 50 ff lea -0x1(%eax),%edx - 102f10: 8b 45 ec mov -0x14(%ebp),%eax - 102f13: 01 c2 add %eax,%edx - 102f15: 8b 45 e8 mov -0x18(%ebp),%eax - 102f18: 8d 48 ff lea -0x1(%eax),%ecx - 102f1b: 8b 45 f0 mov -0x10(%ebp),%eax - 102f1e: 8d 1c 01 lea (%ecx,%eax,1),%ebx -__memmove(void *dst, const void *src, size_t n) { - if (dst < src) { - return __memcpy(dst, src, n); - } - int d0, d1, d2; - asm volatile ( - 102f21: 8b 45 e8 mov -0x18(%ebp),%eax - 102f24: 89 c1 mov %eax,%ecx - 102f26: 89 d8 mov %ebx,%eax - 102f28: 89 d6 mov %edx,%esi - 102f2a: 89 c7 mov %eax,%edi - 102f2c: fd std - 102f2d: f3 a4 rep movsb %ds:(%esi),%es:(%edi) - 102f2f: fc cld - 102f30: 89 f8 mov %edi,%eax - 102f32: 89 f2 mov %esi,%edx - 102f34: 89 4d cc mov %ecx,-0x34(%ebp) - 102f37: 89 55 c8 mov %edx,-0x38(%ebp) - 102f3a: 89 45 c4 mov %eax,-0x3c(%ebp) - "rep; movsb;" - "cld;" - : "=&c" (d0), "=&S" (d1), "=&D" (d2) - : "0" (n), "1" (n - 1 + src), "2" (n - 1 + dst) - : "memory"); - return dst; - 102f3d: 8b 45 f0 mov -0x10(%ebp),%eax - *d ++ = *s ++; - } - } - return dst; -#endif /* __HAVE_ARCH_MEMMOVE */ -} - 102f40: 83 c4 30 add $0x30,%esp - 102f43: 5b pop %ebx - 102f44: 5e pop %esi - 102f45: 5f pop %edi - 102f46: 5d pop %ebp - 102f47: c3 ret - -00102f48 : - * it always copies exactly @n bytes. To avoid overflows, the size of arrays pointed - * by both @src and @dst, should be at least @n bytes, and should not overlap - * (for overlapping memory area, memmove is a safer approach). - * */ -void * -memcpy(void *dst, const void *src, size_t n) { - 102f48: 55 push %ebp - 102f49: 89 e5 mov %esp,%ebp - 102f4b: 57 push %edi - 102f4c: 56 push %esi - 102f4d: 83 ec 20 sub $0x20,%esp - 102f50: 8b 45 08 mov 0x8(%ebp),%eax - 102f53: 89 45 f4 mov %eax,-0xc(%ebp) - 102f56: 8b 45 0c mov 0xc(%ebp),%eax - 102f59: 89 45 f0 mov %eax,-0x10(%ebp) - 102f5c: 8b 45 10 mov 0x10(%ebp),%eax - 102f5f: 89 45 ec mov %eax,-0x14(%ebp) - "andl $3, %%ecx;" - "jz 1f;" - "rep; movsb;" - "1:" - : "=&c" (d0), "=&D" (d1), "=&S" (d2) - : "0" (n / 4), "g" (n), "1" (dst), "2" (src) - 102f62: 8b 45 ec mov -0x14(%ebp),%eax - 102f65: c1 e8 02 shr $0x2,%eax - 102f68: 89 c1 mov %eax,%ecx -#ifndef __HAVE_ARCH_MEMCPY -#define __HAVE_ARCH_MEMCPY -static inline void * -__memcpy(void *dst, const void *src, size_t n) { - int d0, d1, d2; - asm volatile ( - 102f6a: 8b 55 f4 mov -0xc(%ebp),%edx - 102f6d: 8b 45 f0 mov -0x10(%ebp),%eax - 102f70: 89 d7 mov %edx,%edi - 102f72: 89 c6 mov %eax,%esi - 102f74: f3 a5 rep movsl %ds:(%esi),%es:(%edi) - 102f76: 8b 4d ec mov -0x14(%ebp),%ecx - 102f79: 83 e1 03 and $0x3,%ecx - 102f7c: 74 02 je 102f80 - 102f7e: f3 a4 rep movsb %ds:(%esi),%es:(%edi) - 102f80: 89 f0 mov %esi,%eax - 102f82: 89 fa mov %edi,%edx - 102f84: 89 4d e8 mov %ecx,-0x18(%ebp) - 102f87: 89 55 e4 mov %edx,-0x1c(%ebp) - 102f8a: 89 45 e0 mov %eax,-0x20(%ebp) - "rep; movsb;" - "1:" - : "=&c" (d0), "=&D" (d1), "=&S" (d2) - : "0" (n / 4), "g" (n), "1" (dst), "2" (src) - : "memory"); - return dst; - 102f8d: 8b 45 f4 mov -0xc(%ebp),%eax -#ifdef __HAVE_ARCH_MEMCPY - return __memcpy(dst, src, n); - 102f90: 90 nop - while (n -- > 0) { - *d ++ = *s ++; - } - return dst; -#endif /* __HAVE_ARCH_MEMCPY */ -} - 102f91: 83 c4 20 add $0x20,%esp - 102f94: 5e pop %esi - 102f95: 5f pop %edi - 102f96: 5d pop %ebp - 102f97: c3 ret - -00102f98 : - * match in both memory blocks has a greater value in @v1 than in @v2 - * as if evaluated as unsigned char values; - * - And a value less than zero indicates the opposite. - * */ -int -memcmp(const void *v1, const void *v2, size_t n) { - 102f98: 55 push %ebp - 102f99: 89 e5 mov %esp,%ebp - 102f9b: 83 ec 10 sub $0x10,%esp - const char *s1 = (const char *)v1; - 102f9e: 8b 45 08 mov 0x8(%ebp),%eax - 102fa1: 89 45 fc mov %eax,-0x4(%ebp) - const char *s2 = (const char *)v2; - 102fa4: 8b 45 0c mov 0xc(%ebp),%eax - 102fa7: 89 45 f8 mov %eax,-0x8(%ebp) - while (n -- > 0) { - 102faa: eb 30 jmp 102fdc - if (*s1 != *s2) { - 102fac: 8b 45 fc mov -0x4(%ebp),%eax - 102faf: 0f b6 10 movzbl (%eax),%edx - 102fb2: 8b 45 f8 mov -0x8(%ebp),%eax - 102fb5: 0f b6 00 movzbl (%eax),%eax - 102fb8: 38 c2 cmp %al,%dl - 102fba: 74 18 je 102fd4 - return (int)((unsigned char)*s1 - (unsigned char)*s2); - 102fbc: 8b 45 fc mov -0x4(%ebp),%eax - 102fbf: 0f b6 00 movzbl (%eax),%eax - 102fc2: 0f b6 d0 movzbl %al,%edx - 102fc5: 8b 45 f8 mov -0x8(%ebp),%eax - 102fc8: 0f b6 00 movzbl (%eax),%eax - 102fcb: 0f b6 c0 movzbl %al,%eax - 102fce: 29 c2 sub %eax,%edx - 102fd0: 89 d0 mov %edx,%eax - 102fd2: eb 1a jmp 102fee - } - s1 ++, s2 ++; - 102fd4: 83 45 fc 01 addl $0x1,-0x4(%ebp) - 102fd8: 83 45 f8 01 addl $0x1,-0x8(%ebp) - * */ -int -memcmp(const void *v1, const void *v2, size_t n) { - const char *s1 = (const char *)v1; - const char *s2 = (const char *)v2; - while (n -- > 0) { - 102fdc: 8b 45 10 mov 0x10(%ebp),%eax - 102fdf: 8d 50 ff lea -0x1(%eax),%edx - 102fe2: 89 55 10 mov %edx,0x10(%ebp) - 102fe5: 85 c0 test %eax,%eax - 102fe7: 75 c3 jne 102fac - if (*s1 != *s2) { - return (int)((unsigned char)*s1 - (unsigned char)*s2); - } - s1 ++, s2 ++; - } - return 0; - 102fe9: b8 00 00 00 00 mov $0x0,%eax -} - 102fee: c9 leave - 102fef: c3 ret - -00102ff0 : - * @width: maximum number of digits, if the actual width is less than @width, use @padc instead - * @padc: character that padded on the left if the actual width is less than @width - * */ -static void -printnum(void (*putch)(int, void*), void *putdat, - unsigned long long num, unsigned base, int width, int padc) { - 102ff0: 55 push %ebp - 102ff1: 89 e5 mov %esp,%ebp - 102ff3: 83 ec 38 sub $0x38,%esp - 102ff6: 8b 45 10 mov 0x10(%ebp),%eax - 102ff9: 89 45 d0 mov %eax,-0x30(%ebp) - 102ffc: 8b 45 14 mov 0x14(%ebp),%eax - 102fff: 89 45 d4 mov %eax,-0x2c(%ebp) - unsigned long long result = num; - 103002: 8b 45 d0 mov -0x30(%ebp),%eax - 103005: 8b 55 d4 mov -0x2c(%ebp),%edx - 103008: 89 45 e8 mov %eax,-0x18(%ebp) - 10300b: 89 55 ec mov %edx,-0x14(%ebp) - unsigned mod = do_div(result, base); - 10300e: 8b 45 18 mov 0x18(%ebp),%eax - 103011: 89 45 e4 mov %eax,-0x1c(%ebp) - 103014: 8b 45 e8 mov -0x18(%ebp),%eax - 103017: 8b 55 ec mov -0x14(%ebp),%edx - 10301a: 89 45 e0 mov %eax,-0x20(%ebp) - 10301d: 89 55 f0 mov %edx,-0x10(%ebp) - 103020: 8b 45 f0 mov -0x10(%ebp),%eax - 103023: 89 45 f4 mov %eax,-0xc(%ebp) - 103026: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) - 10302a: 74 1c je 103048 - 10302c: 8b 45 f0 mov -0x10(%ebp),%eax - 10302f: ba 00 00 00 00 mov $0x0,%edx - 103034: f7 75 e4 divl -0x1c(%ebp) - 103037: 89 55 f4 mov %edx,-0xc(%ebp) - 10303a: 8b 45 f0 mov -0x10(%ebp),%eax - 10303d: ba 00 00 00 00 mov $0x0,%edx - 103042: f7 75 e4 divl -0x1c(%ebp) - 103045: 89 45 f0 mov %eax,-0x10(%ebp) - 103048: 8b 45 e0 mov -0x20(%ebp),%eax - 10304b: 8b 55 f4 mov -0xc(%ebp),%edx - 10304e: f7 75 e4 divl -0x1c(%ebp) - 103051: 89 45 e0 mov %eax,-0x20(%ebp) - 103054: 89 55 dc mov %edx,-0x24(%ebp) - 103057: 8b 45 e0 mov -0x20(%ebp),%eax - 10305a: 8b 55 f0 mov -0x10(%ebp),%edx - 10305d: 89 45 e8 mov %eax,-0x18(%ebp) - 103060: 89 55 ec mov %edx,-0x14(%ebp) - 103063: 8b 45 dc mov -0x24(%ebp),%eax - 103066: 89 45 d8 mov %eax,-0x28(%ebp) - - // first recursively print all preceding (more significant) digits - if (num >= base) { - 103069: 8b 45 18 mov 0x18(%ebp),%eax - 10306c: ba 00 00 00 00 mov $0x0,%edx - 103071: 3b 55 d4 cmp -0x2c(%ebp),%edx - 103074: 77 41 ja 1030b7 - 103076: 3b 55 d4 cmp -0x2c(%ebp),%edx - 103079: 72 05 jb 103080 - 10307b: 3b 45 d0 cmp -0x30(%ebp),%eax - 10307e: 77 37 ja 1030b7 - printnum(putch, putdat, result, base, width - 1, padc); - 103080: 8b 45 1c mov 0x1c(%ebp),%eax - 103083: 83 e8 01 sub $0x1,%eax - 103086: 83 ec 04 sub $0x4,%esp - 103089: ff 75 20 pushl 0x20(%ebp) - 10308c: 50 push %eax - 10308d: ff 75 18 pushl 0x18(%ebp) - 103090: ff 75 ec pushl -0x14(%ebp) - 103093: ff 75 e8 pushl -0x18(%ebp) - 103096: ff 75 0c pushl 0xc(%ebp) - 103099: ff 75 08 pushl 0x8(%ebp) - 10309c: e8 4f ff ff ff call 102ff0 - 1030a1: 83 c4 20 add $0x20,%esp - 1030a4: eb 1b jmp 1030c1 - } else { - // print any needed pad characters before first digit - while (-- width > 0) - putch(padc, putdat); - 1030a6: 83 ec 08 sub $0x8,%esp - 1030a9: ff 75 0c pushl 0xc(%ebp) - 1030ac: ff 75 20 pushl 0x20(%ebp) - 1030af: 8b 45 08 mov 0x8(%ebp),%eax - 1030b2: ff d0 call *%eax - 1030b4: 83 c4 10 add $0x10,%esp - // first recursively print all preceding (more significant) digits - if (num >= base) { - printnum(putch, putdat, result, base, width - 1, padc); - } else { - // print any needed pad characters before first digit - while (-- width > 0) - 1030b7: 83 6d 1c 01 subl $0x1,0x1c(%ebp) - 1030bb: 83 7d 1c 00 cmpl $0x0,0x1c(%ebp) - 1030bf: 7f e5 jg 1030a6 - putch(padc, putdat); - } - // then print this (the least significant) digit - putch("0123456789abcdef"[mod], putdat); - 1030c1: 8b 45 d8 mov -0x28(%ebp),%eax - 1030c4: 05 d0 3d 10 00 add $0x103dd0,%eax - 1030c9: 0f b6 00 movzbl (%eax),%eax - 1030cc: 0f be c0 movsbl %al,%eax - 1030cf: 83 ec 08 sub $0x8,%esp - 1030d2: ff 75 0c pushl 0xc(%ebp) - 1030d5: 50 push %eax - 1030d6: 8b 45 08 mov 0x8(%ebp),%eax - 1030d9: ff d0 call *%eax - 1030db: 83 c4 10 add $0x10,%esp -} - 1030de: 90 nop - 1030df: c9 leave - 1030e0: c3 ret - -001030e1 : - * getuint - get an unsigned int of various possible sizes from a varargs list - * @ap: a varargs list pointer - * @lflag: determines the size of the vararg that @ap points to - * */ -static unsigned long long -getuint(va_list *ap, int lflag) { - 1030e1: 55 push %ebp - 1030e2: 89 e5 mov %esp,%ebp - if (lflag >= 2) { - 1030e4: 83 7d 0c 01 cmpl $0x1,0xc(%ebp) - 1030e8: 7e 14 jle 1030fe - return va_arg(*ap, unsigned long long); - 1030ea: 8b 45 08 mov 0x8(%ebp),%eax - 1030ed: 8b 00 mov (%eax),%eax - 1030ef: 8d 48 08 lea 0x8(%eax),%ecx - 1030f2: 8b 55 08 mov 0x8(%ebp),%edx - 1030f5: 89 0a mov %ecx,(%edx) - 1030f7: 8b 50 04 mov 0x4(%eax),%edx - 1030fa: 8b 00 mov (%eax),%eax - 1030fc: eb 30 jmp 10312e - } - else if (lflag) { - 1030fe: 83 7d 0c 00 cmpl $0x0,0xc(%ebp) - 103102: 74 16 je 10311a - return va_arg(*ap, unsigned long); - 103104: 8b 45 08 mov 0x8(%ebp),%eax - 103107: 8b 00 mov (%eax),%eax - 103109: 8d 48 04 lea 0x4(%eax),%ecx - 10310c: 8b 55 08 mov 0x8(%ebp),%edx - 10310f: 89 0a mov %ecx,(%edx) - 103111: 8b 00 mov (%eax),%eax - 103113: ba 00 00 00 00 mov $0x0,%edx - 103118: eb 14 jmp 10312e - } - else { - return va_arg(*ap, unsigned int); - 10311a: 8b 45 08 mov 0x8(%ebp),%eax - 10311d: 8b 00 mov (%eax),%eax - 10311f: 8d 48 04 lea 0x4(%eax),%ecx - 103122: 8b 55 08 mov 0x8(%ebp),%edx - 103125: 89 0a mov %ecx,(%edx) - 103127: 8b 00 mov (%eax),%eax - 103129: ba 00 00 00 00 mov $0x0,%edx - } -} - 10312e: 5d pop %ebp - 10312f: c3 ret - -00103130 : - * getint - same as getuint but signed, we can't use getuint because of sign extension - * @ap: a varargs list pointer - * @lflag: determines the size of the vararg that @ap points to - * */ -static long long -getint(va_list *ap, int lflag) { - 103130: 55 push %ebp - 103131: 89 e5 mov %esp,%ebp - if (lflag >= 2) { - 103133: 83 7d 0c 01 cmpl $0x1,0xc(%ebp) - 103137: 7e 14 jle 10314d - return va_arg(*ap, long long); - 103139: 8b 45 08 mov 0x8(%ebp),%eax - 10313c: 8b 00 mov (%eax),%eax - 10313e: 8d 48 08 lea 0x8(%eax),%ecx - 103141: 8b 55 08 mov 0x8(%ebp),%edx - 103144: 89 0a mov %ecx,(%edx) - 103146: 8b 50 04 mov 0x4(%eax),%edx - 103149: 8b 00 mov (%eax),%eax - 10314b: eb 28 jmp 103175 - } - else if (lflag) { - 10314d: 83 7d 0c 00 cmpl $0x0,0xc(%ebp) - 103151: 74 12 je 103165 - return va_arg(*ap, long); - 103153: 8b 45 08 mov 0x8(%ebp),%eax - 103156: 8b 00 mov (%eax),%eax - 103158: 8d 48 04 lea 0x4(%eax),%ecx - 10315b: 8b 55 08 mov 0x8(%ebp),%edx - 10315e: 89 0a mov %ecx,(%edx) - 103160: 8b 00 mov (%eax),%eax - 103162: 99 cltd - 103163: eb 10 jmp 103175 - } - else { - return va_arg(*ap, int); - 103165: 8b 45 08 mov 0x8(%ebp),%eax - 103168: 8b 00 mov (%eax),%eax - 10316a: 8d 48 04 lea 0x4(%eax),%ecx - 10316d: 8b 55 08 mov 0x8(%ebp),%edx - 103170: 89 0a mov %ecx,(%edx) - 103172: 8b 00 mov (%eax),%eax - 103174: 99 cltd - } -} - 103175: 5d pop %ebp - 103176: c3 ret - -00103177 : - * @putch: specified putch function, print a single character - * @putdat: used by @putch function - * @fmt: the format string to use - * */ -void -printfmt(void (*putch)(int, void*), void *putdat, const char *fmt, ...) { - 103177: 55 push %ebp - 103178: 89 e5 mov %esp,%ebp - 10317a: 83 ec 18 sub $0x18,%esp - va_list ap; - - va_start(ap, fmt); - 10317d: 8d 45 14 lea 0x14(%ebp),%eax - 103180: 89 45 f4 mov %eax,-0xc(%ebp) - vprintfmt(putch, putdat, fmt, ap); - 103183: 8b 45 f4 mov -0xc(%ebp),%eax - 103186: 50 push %eax - 103187: ff 75 10 pushl 0x10(%ebp) - 10318a: ff 75 0c pushl 0xc(%ebp) - 10318d: ff 75 08 pushl 0x8(%ebp) - 103190: e8 06 00 00 00 call 10319b - 103195: 83 c4 10 add $0x10,%esp - va_end(ap); -} - 103198: 90 nop - 103199: c9 leave - 10319a: c3 ret - -0010319b : - * - * Call this function if you are already dealing with a va_list. - * Or you probably want printfmt() instead. - * */ -void -vprintfmt(void (*putch)(int, void*), void *putdat, const char *fmt, va_list ap) { - 10319b: 55 push %ebp - 10319c: 89 e5 mov %esp,%ebp - 10319e: 56 push %esi - 10319f: 53 push %ebx - 1031a0: 83 ec 20 sub $0x20,%esp - register int ch, err; - unsigned long long num; - int base, width, precision, lflag, altflag; - - while (1) { - while ((ch = *(unsigned char *)fmt ++) != '%') { - 1031a3: eb 17 jmp 1031bc - if (ch == '\0') { - 1031a5: 85 db test %ebx,%ebx - 1031a7: 0f 84 8e 03 00 00 je 10353b - return; - } - putch(ch, putdat); - 1031ad: 83 ec 08 sub $0x8,%esp - 1031b0: ff 75 0c pushl 0xc(%ebp) - 1031b3: 53 push %ebx - 1031b4: 8b 45 08 mov 0x8(%ebp),%eax - 1031b7: ff d0 call *%eax - 1031b9: 83 c4 10 add $0x10,%esp - register int ch, err; - unsigned long long num; - int base, width, precision, lflag, altflag; - - while (1) { - while ((ch = *(unsigned char *)fmt ++) != '%') { - 1031bc: 8b 45 10 mov 0x10(%ebp),%eax - 1031bf: 8d 50 01 lea 0x1(%eax),%edx - 1031c2: 89 55 10 mov %edx,0x10(%ebp) - 1031c5: 0f b6 00 movzbl (%eax),%eax - 1031c8: 0f b6 d8 movzbl %al,%ebx - 1031cb: 83 fb 25 cmp $0x25,%ebx - 1031ce: 75 d5 jne 1031a5 - } - putch(ch, putdat); - } - - // Process a %-escape sequence - char padc = ' '; - 1031d0: c6 45 db 20 movb $0x20,-0x25(%ebp) - width = precision = -1; - 1031d4: c7 45 e4 ff ff ff ff movl $0xffffffff,-0x1c(%ebp) - 1031db: 8b 45 e4 mov -0x1c(%ebp),%eax - 1031de: 89 45 e8 mov %eax,-0x18(%ebp) - lflag = altflag = 0; - 1031e1: c7 45 dc 00 00 00 00 movl $0x0,-0x24(%ebp) - 1031e8: 8b 45 dc mov -0x24(%ebp),%eax - 1031eb: 89 45 e0 mov %eax,-0x20(%ebp) - - reswitch: - switch (ch = *(unsigned char *)fmt ++) { - 1031ee: 8b 45 10 mov 0x10(%ebp),%eax - 1031f1: 8d 50 01 lea 0x1(%eax),%edx - 1031f4: 89 55 10 mov %edx,0x10(%ebp) - 1031f7: 0f b6 00 movzbl (%eax),%eax - 1031fa: 0f b6 d8 movzbl %al,%ebx - 1031fd: 8d 43 dd lea -0x23(%ebx),%eax - 103200: 83 f8 55 cmp $0x55,%eax - 103203: 0f 87 05 03 00 00 ja 10350e - 103209: 8b 04 85 f4 3d 10 00 mov 0x103df4(,%eax,4),%eax - 103210: ff e0 jmp *%eax - - // flag to pad on the right - case '-': - padc = '-'; - 103212: c6 45 db 2d movb $0x2d,-0x25(%ebp) - goto reswitch; - 103216: eb d6 jmp 1031ee - - // flag to pad with 0's instead of spaces - case '0': - padc = '0'; - 103218: c6 45 db 30 movb $0x30,-0x25(%ebp) - goto reswitch; - 10321c: eb d0 jmp 1031ee - - // width field - case '1' ... '9': - for (precision = 0; ; ++ fmt) { - 10321e: c7 45 e4 00 00 00 00 movl $0x0,-0x1c(%ebp) - precision = precision * 10 + ch - '0'; - 103225: 8b 55 e4 mov -0x1c(%ebp),%edx - 103228: 89 d0 mov %edx,%eax - 10322a: c1 e0 02 shl $0x2,%eax - 10322d: 01 d0 add %edx,%eax - 10322f: 01 c0 add %eax,%eax - 103231: 01 d8 add %ebx,%eax - 103233: 83 e8 30 sub $0x30,%eax - 103236: 89 45 e4 mov %eax,-0x1c(%ebp) - ch = *fmt; - 103239: 8b 45 10 mov 0x10(%ebp),%eax - 10323c: 0f b6 00 movzbl (%eax),%eax - 10323f: 0f be d8 movsbl %al,%ebx - if (ch < '0' || ch > '9') { - 103242: 83 fb 2f cmp $0x2f,%ebx - 103245: 7e 39 jle 103280 - 103247: 83 fb 39 cmp $0x39,%ebx - 10324a: 7f 34 jg 103280 - padc = '0'; - goto reswitch; - - // width field - case '1' ... '9': - for (precision = 0; ; ++ fmt) { - 10324c: 83 45 10 01 addl $0x1,0x10(%ebp) - precision = precision * 10 + ch - '0'; - ch = *fmt; - if (ch < '0' || ch > '9') { - break; - } - } - 103250: eb d3 jmp 103225 - goto process_precision; - - case '*': - precision = va_arg(ap, int); - 103252: 8b 45 14 mov 0x14(%ebp),%eax - 103255: 8d 50 04 lea 0x4(%eax),%edx - 103258: 89 55 14 mov %edx,0x14(%ebp) - 10325b: 8b 00 mov (%eax),%eax - 10325d: 89 45 e4 mov %eax,-0x1c(%ebp) - goto process_precision; - 103260: eb 1f jmp 103281 - - case '.': - if (width < 0) - 103262: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) - 103266: 79 86 jns 1031ee - width = 0; - 103268: c7 45 e8 00 00 00 00 movl $0x0,-0x18(%ebp) - goto reswitch; - 10326f: e9 7a ff ff ff jmp 1031ee - - case '#': - altflag = 1; - 103274: c7 45 dc 01 00 00 00 movl $0x1,-0x24(%ebp) - goto reswitch; - 10327b: e9 6e ff ff ff jmp 1031ee - ch = *fmt; - if (ch < '0' || ch > '9') { - break; - } - } - goto process_precision; - 103280: 90 nop - case '#': - altflag = 1; - goto reswitch; - - process_precision: - if (width < 0) - 103281: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) - 103285: 0f 89 63 ff ff ff jns 1031ee - width = precision, precision = -1; - 10328b: 8b 45 e4 mov -0x1c(%ebp),%eax - 10328e: 89 45 e8 mov %eax,-0x18(%ebp) - 103291: c7 45 e4 ff ff ff ff movl $0xffffffff,-0x1c(%ebp) - goto reswitch; - 103298: e9 51 ff ff ff jmp 1031ee - - // long flag (doubled for long long) - case 'l': - lflag ++; - 10329d: 83 45 e0 01 addl $0x1,-0x20(%ebp) - goto reswitch; - 1032a1: e9 48 ff ff ff jmp 1031ee - - // character - case 'c': - putch(va_arg(ap, int), putdat); - 1032a6: 8b 45 14 mov 0x14(%ebp),%eax - 1032a9: 8d 50 04 lea 0x4(%eax),%edx - 1032ac: 89 55 14 mov %edx,0x14(%ebp) - 1032af: 8b 00 mov (%eax),%eax - 1032b1: 83 ec 08 sub $0x8,%esp - 1032b4: ff 75 0c pushl 0xc(%ebp) - 1032b7: 50 push %eax - 1032b8: 8b 45 08 mov 0x8(%ebp),%eax - 1032bb: ff d0 call *%eax - 1032bd: 83 c4 10 add $0x10,%esp - break; - 1032c0: e9 71 02 00 00 jmp 103536 - - // error message - case 'e': - err = va_arg(ap, int); - 1032c5: 8b 45 14 mov 0x14(%ebp),%eax - 1032c8: 8d 50 04 lea 0x4(%eax),%edx - 1032cb: 89 55 14 mov %edx,0x14(%ebp) - 1032ce: 8b 18 mov (%eax),%ebx - if (err < 0) { - 1032d0: 85 db test %ebx,%ebx - 1032d2: 79 02 jns 1032d6 - err = -err; - 1032d4: f7 db neg %ebx - } - if (err > MAXERROR || (p = error_string[err]) == NULL) { - 1032d6: 83 fb 06 cmp $0x6,%ebx - 1032d9: 7f 0b jg 1032e6 - 1032db: 8b 34 9d b4 3d 10 00 mov 0x103db4(,%ebx,4),%esi - 1032e2: 85 f6 test %esi,%esi - 1032e4: 75 19 jne 1032ff - printfmt(putch, putdat, "error %d", err); - 1032e6: 53 push %ebx - 1032e7: 68 e1 3d 10 00 push $0x103de1 - 1032ec: ff 75 0c pushl 0xc(%ebp) - 1032ef: ff 75 08 pushl 0x8(%ebp) - 1032f2: e8 80 fe ff ff call 103177 - 1032f7: 83 c4 10 add $0x10,%esp - } - else { - printfmt(putch, putdat, "%s", p); - } - break; - 1032fa: e9 37 02 00 00 jmp 103536 - } - if (err > MAXERROR || (p = error_string[err]) == NULL) { - printfmt(putch, putdat, "error %d", err); - } - else { - printfmt(putch, putdat, "%s", p); - 1032ff: 56 push %esi - 103300: 68 ea 3d 10 00 push $0x103dea - 103305: ff 75 0c pushl 0xc(%ebp) - 103308: ff 75 08 pushl 0x8(%ebp) - 10330b: e8 67 fe ff ff call 103177 - 103310: 83 c4 10 add $0x10,%esp - } - break; - 103313: e9 1e 02 00 00 jmp 103536 - - // string - case 's': - if ((p = va_arg(ap, char *)) == NULL) { - 103318: 8b 45 14 mov 0x14(%ebp),%eax - 10331b: 8d 50 04 lea 0x4(%eax),%edx - 10331e: 89 55 14 mov %edx,0x14(%ebp) - 103321: 8b 30 mov (%eax),%esi - 103323: 85 f6 test %esi,%esi - 103325: 75 05 jne 10332c - p = "(null)"; - 103327: be ed 3d 10 00 mov $0x103ded,%esi - } - if (width > 0 && padc != '-') { - 10332c: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) - 103330: 7e 76 jle 1033a8 - 103332: 80 7d db 2d cmpb $0x2d,-0x25(%ebp) - 103336: 74 70 je 1033a8 - for (width -= strnlen(p, precision); width > 0; width --) { - 103338: 8b 45 e4 mov -0x1c(%ebp),%eax - 10333b: 83 ec 08 sub $0x8,%esp - 10333e: 50 push %eax - 10333f: 56 push %esi - 103340: e8 17 f8 ff ff call 102b5c - 103345: 83 c4 10 add $0x10,%esp - 103348: 89 c2 mov %eax,%edx - 10334a: 8b 45 e8 mov -0x18(%ebp),%eax - 10334d: 29 d0 sub %edx,%eax - 10334f: 89 45 e8 mov %eax,-0x18(%ebp) - 103352: eb 17 jmp 10336b - putch(padc, putdat); - 103354: 0f be 45 db movsbl -0x25(%ebp),%eax - 103358: 83 ec 08 sub $0x8,%esp - 10335b: ff 75 0c pushl 0xc(%ebp) - 10335e: 50 push %eax - 10335f: 8b 45 08 mov 0x8(%ebp),%eax - 103362: ff d0 call *%eax - 103364: 83 c4 10 add $0x10,%esp - case 's': - if ((p = va_arg(ap, char *)) == NULL) { - p = "(null)"; - } - if (width > 0 && padc != '-') { - for (width -= strnlen(p, precision); width > 0; width --) { - 103367: 83 6d e8 01 subl $0x1,-0x18(%ebp) - 10336b: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) - 10336f: 7f e3 jg 103354 - putch(padc, putdat); - } - } - for (; (ch = *p ++) != '\0' && (precision < 0 || -- precision >= 0); width --) { - 103371: eb 35 jmp 1033a8 - if (altflag && (ch < ' ' || ch > '~')) { - 103373: 83 7d dc 00 cmpl $0x0,-0x24(%ebp) - 103377: 74 1c je 103395 - 103379: 83 fb 1f cmp $0x1f,%ebx - 10337c: 7e 05 jle 103383 - 10337e: 83 fb 7e cmp $0x7e,%ebx - 103381: 7e 12 jle 103395 - putch('?', putdat); - 103383: 83 ec 08 sub $0x8,%esp - 103386: ff 75 0c pushl 0xc(%ebp) - 103389: 6a 3f push $0x3f - 10338b: 8b 45 08 mov 0x8(%ebp),%eax - 10338e: ff d0 call *%eax - 103390: 83 c4 10 add $0x10,%esp - 103393: eb 0f jmp 1033a4 - } - else { - putch(ch, putdat); - 103395: 83 ec 08 sub $0x8,%esp - 103398: ff 75 0c pushl 0xc(%ebp) - 10339b: 53 push %ebx - 10339c: 8b 45 08 mov 0x8(%ebp),%eax - 10339f: ff d0 call *%eax - 1033a1: 83 c4 10 add $0x10,%esp - if (width > 0 && padc != '-') { - for (width -= strnlen(p, precision); width > 0; width --) { - putch(padc, putdat); - } - } - for (; (ch = *p ++) != '\0' && (precision < 0 || -- precision >= 0); width --) { - 1033a4: 83 6d e8 01 subl $0x1,-0x18(%ebp) - 1033a8: 89 f0 mov %esi,%eax - 1033aa: 8d 70 01 lea 0x1(%eax),%esi - 1033ad: 0f b6 00 movzbl (%eax),%eax - 1033b0: 0f be d8 movsbl %al,%ebx - 1033b3: 85 db test %ebx,%ebx - 1033b5: 74 26 je 1033dd - 1033b7: 83 7d e4 00 cmpl $0x0,-0x1c(%ebp) - 1033bb: 78 b6 js 103373 - 1033bd: 83 6d e4 01 subl $0x1,-0x1c(%ebp) - 1033c1: 83 7d e4 00 cmpl $0x0,-0x1c(%ebp) - 1033c5: 79 ac jns 103373 - } - else { - putch(ch, putdat); - } - } - for (; width > 0; width --) { - 1033c7: eb 14 jmp 1033dd - putch(' ', putdat); - 1033c9: 83 ec 08 sub $0x8,%esp - 1033cc: ff 75 0c pushl 0xc(%ebp) - 1033cf: 6a 20 push $0x20 - 1033d1: 8b 45 08 mov 0x8(%ebp),%eax - 1033d4: ff d0 call *%eax - 1033d6: 83 c4 10 add $0x10,%esp - } - else { - putch(ch, putdat); - } - } - for (; width > 0; width --) { - 1033d9: 83 6d e8 01 subl $0x1,-0x18(%ebp) - 1033dd: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) - 1033e1: 7f e6 jg 1033c9 - putch(' ', putdat); - } - break; - 1033e3: e9 4e 01 00 00 jmp 103536 - - // (signed) decimal - case 'd': - num = getint(&ap, lflag); - 1033e8: 83 ec 08 sub $0x8,%esp - 1033eb: ff 75 e0 pushl -0x20(%ebp) - 1033ee: 8d 45 14 lea 0x14(%ebp),%eax - 1033f1: 50 push %eax - 1033f2: e8 39 fd ff ff call 103130 - 1033f7: 83 c4 10 add $0x10,%esp - 1033fa: 89 45 f0 mov %eax,-0x10(%ebp) - 1033fd: 89 55 f4 mov %edx,-0xc(%ebp) - if ((long long)num < 0) { - 103400: 8b 45 f0 mov -0x10(%ebp),%eax - 103403: 8b 55 f4 mov -0xc(%ebp),%edx - 103406: 85 d2 test %edx,%edx - 103408: 79 23 jns 10342d - putch('-', putdat); - 10340a: 83 ec 08 sub $0x8,%esp - 10340d: ff 75 0c pushl 0xc(%ebp) - 103410: 6a 2d push $0x2d - 103412: 8b 45 08 mov 0x8(%ebp),%eax - 103415: ff d0 call *%eax - 103417: 83 c4 10 add $0x10,%esp - num = -(long long)num; - 10341a: 8b 45 f0 mov -0x10(%ebp),%eax - 10341d: 8b 55 f4 mov -0xc(%ebp),%edx - 103420: f7 d8 neg %eax - 103422: 83 d2 00 adc $0x0,%edx - 103425: f7 da neg %edx - 103427: 89 45 f0 mov %eax,-0x10(%ebp) - 10342a: 89 55 f4 mov %edx,-0xc(%ebp) - } - base = 10; - 10342d: c7 45 ec 0a 00 00 00 movl $0xa,-0x14(%ebp) - goto number; - 103434: e9 9f 00 00 00 jmp 1034d8 - - // unsigned decimal - case 'u': - num = getuint(&ap, lflag); - 103439: 83 ec 08 sub $0x8,%esp - 10343c: ff 75 e0 pushl -0x20(%ebp) - 10343f: 8d 45 14 lea 0x14(%ebp),%eax - 103442: 50 push %eax - 103443: e8 99 fc ff ff call 1030e1 - 103448: 83 c4 10 add $0x10,%esp - 10344b: 89 45 f0 mov %eax,-0x10(%ebp) - 10344e: 89 55 f4 mov %edx,-0xc(%ebp) - base = 10; - 103451: c7 45 ec 0a 00 00 00 movl $0xa,-0x14(%ebp) - goto number; - 103458: eb 7e jmp 1034d8 - - // (unsigned) octal - case 'o': - num = getuint(&ap, lflag); - 10345a: 83 ec 08 sub $0x8,%esp - 10345d: ff 75 e0 pushl -0x20(%ebp) - 103460: 8d 45 14 lea 0x14(%ebp),%eax - 103463: 50 push %eax - 103464: e8 78 fc ff ff call 1030e1 - 103469: 83 c4 10 add $0x10,%esp - 10346c: 89 45 f0 mov %eax,-0x10(%ebp) - 10346f: 89 55 f4 mov %edx,-0xc(%ebp) - base = 8; - 103472: c7 45 ec 08 00 00 00 movl $0x8,-0x14(%ebp) - goto number; - 103479: eb 5d jmp 1034d8 - - // pointer - case 'p': - putch('0', putdat); - 10347b: 83 ec 08 sub $0x8,%esp - 10347e: ff 75 0c pushl 0xc(%ebp) - 103481: 6a 30 push $0x30 - 103483: 8b 45 08 mov 0x8(%ebp),%eax - 103486: ff d0 call *%eax - 103488: 83 c4 10 add $0x10,%esp - putch('x', putdat); - 10348b: 83 ec 08 sub $0x8,%esp - 10348e: ff 75 0c pushl 0xc(%ebp) - 103491: 6a 78 push $0x78 - 103493: 8b 45 08 mov 0x8(%ebp),%eax - 103496: ff d0 call *%eax - 103498: 83 c4 10 add $0x10,%esp - num = (unsigned long long)(uintptr_t)va_arg(ap, void *); - 10349b: 8b 45 14 mov 0x14(%ebp),%eax - 10349e: 8d 50 04 lea 0x4(%eax),%edx - 1034a1: 89 55 14 mov %edx,0x14(%ebp) - 1034a4: 8b 00 mov (%eax),%eax - 1034a6: 89 45 f0 mov %eax,-0x10(%ebp) - 1034a9: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - base = 16; - 1034b0: c7 45 ec 10 00 00 00 movl $0x10,-0x14(%ebp) - goto number; - 1034b7: eb 1f jmp 1034d8 - - // (unsigned) hexadecimal - case 'x': - num = getuint(&ap, lflag); - 1034b9: 83 ec 08 sub $0x8,%esp - 1034bc: ff 75 e0 pushl -0x20(%ebp) - 1034bf: 8d 45 14 lea 0x14(%ebp),%eax - 1034c2: 50 push %eax - 1034c3: e8 19 fc ff ff call 1030e1 - 1034c8: 83 c4 10 add $0x10,%esp - 1034cb: 89 45 f0 mov %eax,-0x10(%ebp) - 1034ce: 89 55 f4 mov %edx,-0xc(%ebp) - base = 16; - 1034d1: c7 45 ec 10 00 00 00 movl $0x10,-0x14(%ebp) - number: - printnum(putch, putdat, num, base, width, padc); - 1034d8: 0f be 55 db movsbl -0x25(%ebp),%edx - 1034dc: 8b 45 ec mov -0x14(%ebp),%eax - 1034df: 83 ec 04 sub $0x4,%esp - 1034e2: 52 push %edx - 1034e3: ff 75 e8 pushl -0x18(%ebp) - 1034e6: 50 push %eax - 1034e7: ff 75 f4 pushl -0xc(%ebp) - 1034ea: ff 75 f0 pushl -0x10(%ebp) - 1034ed: ff 75 0c pushl 0xc(%ebp) - 1034f0: ff 75 08 pushl 0x8(%ebp) - 1034f3: e8 f8 fa ff ff call 102ff0 - 1034f8: 83 c4 20 add $0x20,%esp - break; - 1034fb: eb 39 jmp 103536 - - // escaped '%' character - case '%': - putch(ch, putdat); - 1034fd: 83 ec 08 sub $0x8,%esp - 103500: ff 75 0c pushl 0xc(%ebp) - 103503: 53 push %ebx - 103504: 8b 45 08 mov 0x8(%ebp),%eax - 103507: ff d0 call *%eax - 103509: 83 c4 10 add $0x10,%esp - break; - 10350c: eb 28 jmp 103536 - - // unrecognized escape sequence - just print it literally - default: - putch('%', putdat); - 10350e: 83 ec 08 sub $0x8,%esp - 103511: ff 75 0c pushl 0xc(%ebp) - 103514: 6a 25 push $0x25 - 103516: 8b 45 08 mov 0x8(%ebp),%eax - 103519: ff d0 call *%eax - 10351b: 83 c4 10 add $0x10,%esp - for (fmt --; fmt[-1] != '%'; fmt --) - 10351e: 83 6d 10 01 subl $0x1,0x10(%ebp) - 103522: eb 04 jmp 103528 - 103524: 83 6d 10 01 subl $0x1,0x10(%ebp) - 103528: 8b 45 10 mov 0x10(%ebp),%eax - 10352b: 83 e8 01 sub $0x1,%eax - 10352e: 0f b6 00 movzbl (%eax),%eax - 103531: 3c 25 cmp $0x25,%al - 103533: 75 ef jne 103524 - /* do nothing */; - break; - 103535: 90 nop - } - } - 103536: e9 68 fc ff ff jmp 1031a3 - int base, width, precision, lflag, altflag; - - while (1) { - while ((ch = *(unsigned char *)fmt ++) != '%') { - if (ch == '\0') { - return; - 10353b: 90 nop - for (fmt --; fmt[-1] != '%'; fmt --) - /* do nothing */; - break; - } - } -} - 10353c: 8d 65 f8 lea -0x8(%ebp),%esp - 10353f: 5b pop %ebx - 103540: 5e pop %esi - 103541: 5d pop %ebp - 103542: c3 ret - -00103543 : - * sprintputch - 'print' a single character in a buffer - * @ch: the character will be printed - * @b: the buffer to place the character @ch - * */ -static void -sprintputch(int ch, struct sprintbuf *b) { - 103543: 55 push %ebp - 103544: 89 e5 mov %esp,%ebp - b->cnt ++; - 103546: 8b 45 0c mov 0xc(%ebp),%eax - 103549: 8b 40 08 mov 0x8(%eax),%eax - 10354c: 8d 50 01 lea 0x1(%eax),%edx - 10354f: 8b 45 0c mov 0xc(%ebp),%eax - 103552: 89 50 08 mov %edx,0x8(%eax) - if (b->buf < b->ebuf) { - 103555: 8b 45 0c mov 0xc(%ebp),%eax - 103558: 8b 10 mov (%eax),%edx - 10355a: 8b 45 0c mov 0xc(%ebp),%eax - 10355d: 8b 40 04 mov 0x4(%eax),%eax - 103560: 39 c2 cmp %eax,%edx - 103562: 73 12 jae 103576 - *b->buf ++ = ch; - 103564: 8b 45 0c mov 0xc(%ebp),%eax - 103567: 8b 00 mov (%eax),%eax - 103569: 8d 48 01 lea 0x1(%eax),%ecx - 10356c: 8b 55 0c mov 0xc(%ebp),%edx - 10356f: 89 0a mov %ecx,(%edx) - 103571: 8b 55 08 mov 0x8(%ebp),%edx - 103574: 88 10 mov %dl,(%eax) - } -} - 103576: 90 nop - 103577: 5d pop %ebp - 103578: c3 ret - -00103579 : - * @str: the buffer to place the result into - * @size: the size of buffer, including the trailing null space - * @fmt: the format string to use - * */ -int -snprintf(char *str, size_t size, const char *fmt, ...) { - 103579: 55 push %ebp - 10357a: 89 e5 mov %esp,%ebp - 10357c: 83 ec 18 sub $0x18,%esp - va_list ap; - int cnt; - va_start(ap, fmt); - 10357f: 8d 45 14 lea 0x14(%ebp),%eax - 103582: 89 45 f0 mov %eax,-0x10(%ebp) - cnt = vsnprintf(str, size, fmt, ap); - 103585: 8b 45 f0 mov -0x10(%ebp),%eax - 103588: 50 push %eax - 103589: ff 75 10 pushl 0x10(%ebp) - 10358c: ff 75 0c pushl 0xc(%ebp) - 10358f: ff 75 08 pushl 0x8(%ebp) - 103592: e8 0b 00 00 00 call 1035a2 - 103597: 83 c4 10 add $0x10,%esp - 10359a: 89 45 f4 mov %eax,-0xc(%ebp) - va_end(ap); - return cnt; - 10359d: 8b 45 f4 mov -0xc(%ebp),%eax -} - 1035a0: c9 leave - 1035a1: c3 ret - -001035a2 : - * - * Call this function if you are already dealing with a va_list. - * Or you probably want snprintf() instead. - * */ -int -vsnprintf(char *str, size_t size, const char *fmt, va_list ap) { - 1035a2: 55 push %ebp - 1035a3: 89 e5 mov %esp,%ebp - 1035a5: 83 ec 18 sub $0x18,%esp - struct sprintbuf b = {str, str + size - 1, 0}; - 1035a8: 8b 45 08 mov 0x8(%ebp),%eax - 1035ab: 89 45 ec mov %eax,-0x14(%ebp) - 1035ae: 8b 45 0c mov 0xc(%ebp),%eax - 1035b1: 8d 50 ff lea -0x1(%eax),%edx - 1035b4: 8b 45 08 mov 0x8(%ebp),%eax - 1035b7: 01 d0 add %edx,%eax - 1035b9: 89 45 f0 mov %eax,-0x10(%ebp) - 1035bc: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - if (str == NULL || b.buf > b.ebuf) { - 1035c3: 83 7d 08 00 cmpl $0x0,0x8(%ebp) - 1035c7: 74 0a je 1035d3 - 1035c9: 8b 55 ec mov -0x14(%ebp),%edx - 1035cc: 8b 45 f0 mov -0x10(%ebp),%eax - 1035cf: 39 c2 cmp %eax,%edx - 1035d1: 76 07 jbe 1035da - return -E_INVAL; - 1035d3: b8 fd ff ff ff mov $0xfffffffd,%eax - 1035d8: eb 20 jmp 1035fa - } - // print the string to the buffer - vprintfmt((void*)sprintputch, &b, fmt, ap); - 1035da: ff 75 14 pushl 0x14(%ebp) - 1035dd: ff 75 10 pushl 0x10(%ebp) - 1035e0: 8d 45 ec lea -0x14(%ebp),%eax - 1035e3: 50 push %eax - 1035e4: 68 43 35 10 00 push $0x103543 - 1035e9: e8 ad fb ff ff call 10319b - 1035ee: 83 c4 10 add $0x10,%esp - // null terminate the buffer - *b.buf = '\0'; - 1035f1: 8b 45 ec mov -0x14(%ebp),%eax - 1035f4: c6 00 00 movb $0x0,(%eax) - return b.cnt; - 1035f7: 8b 45 f4 mov -0xc(%ebp),%eax -} - 1035fa: c9 leave - 1035fb: c3 ret diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kernel.sym" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kernel.sym" deleted file mode 100644 index 05909f23c..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/kernel.sym" +++ /dev/null @@ -1,402 +0,0 @@ -00100000 .text -00103600 .rodata -00103f4c .stab -0010ba29 .stabstr -0010e000 .data -0010ea20 .bss -00000000 .comment -00000000 init.c -001001d9 lab1_switch_test -00100102 lab1_print_cur_status -0010ea20 round.1212 -001001bf lab1_switch_to_user -001001cc lab1_switch_to_kernel -00000000 stdio.c -0010021b cputch -00000000 readline.c -0010ea40 buf -00000000 panic.c -0010ee40 is_panic -00000000 kdebug.c -0010048d stab_binsearch -00100a2b read_eip -00000000 kmonitor.c -0010e000 commands -00100afb parse -00100bb7 runcmd -00000000 clock.c -00000000 console.c -00100dbc delay -0010ee60 crt_buf -0010ee64 crt_pos -0010ee66 addr_6845 -00100e05 cga_init -0010ee68 serial_exists -00100eec serial_init -00100fd1 lpt_putc_sub -0010104b lpt_putc -00101082 cga_putc -00101257 serial_putc_sub -001012b1 serial_putc -0010ee80 cons -001012e8 cons_intr -00101334 serial_proc_data -0010e040 shiftcode -0010e140 togglecode -0010e240 normalmap -0010e340 shiftmap -0010e440 ctlmap -0010e540 charcode -001013ad kbd_proc_data -0010f088 shift.1327 -0010153a kbd_intr -00101553 kbd_init -00000000 picirq.c -0010e550 irq_mask -0010f08c did_init -0010162b pic_setmask -00000000 intr.c -00000000 trap.c -001017fc print_ticks -0010f0c0 idt -0010e560 idt_pd -001019fe trapname -00103d00 excnames.1306 -0010e580 IA32flags -00101ce2 trap_dispatch -00000000 pmm.c -0010f8c0 ts -0010e9e0 gdt -0010ea10 gdt_pd -001029f1 lgdt -00102a27 gdt_init -00000000 string.c -00000000 printfmt.c -00103db4 error_string -00102ff0 printnum -001030e1 getuint -00103130 getint -00103543 sprintputch -00102927 vector242 -0010237e vector119 -001008f2 print_kerninfo -0010225e vector87 -00102255 vector86 -00102993 vector251 -00102b8c strcpy -00102282 vector91 -00102078 vector33 -00102567 vector162 -001027cb vector213 -0010231b vector108 -001020d2 vector43 -00100d41 mon_backtrace -0010258b vector165 -0010267b vector185 -0010235a vector115 -00102399 vector122 -0010251f vector156 -0010294b vector245 -001026ab vector189 -00101f9e vector7 -00102174 vector61 -00102027 vector24 -00102336 vector111 -0010272f vector200 -001021aa vector67 -00102447 vector138 -001021e9 vector74 -00102ea5 memmove -00102150 vector57 -00103579 snprintf -00101a45 print_trapframe -001027d7 vector214 -0010319b vprintfmt -001022ca vector99 -001029cf __alltraps -001015cf cons_getc -0010246b vector141 -00100483 is_kernel_panic -001025df vector172 -00100a3c print_stackframe -0010291b vector241 -001029ab vector253 -00101f7a vector3 -00101f71 vector2 -00102873 vector227 -001027a7 vector210 -0010284f vector224 -001020c0 vector41 -00100268 cprintf -0010200c vector21 -0010261b vector177 -00102375 vector118 -001021c5 vector70 -001021bc vector69 -001028eb vector237 -0010218f vector64 -00102042 vector27 -001023ff vector132 -00102687 vector186 -001027fb vector217 -00102f48 memcpy -00101f68 vector1 -00102627 vector178 -001020a5 vector38 -001028f7 vector238 -0010030c readline -0010240b vector133 -001021e0 vector73 -0010248f vector144 -00100000 kern_init -001029b7 vector254 -001022dc vector101 -001027b3 vector211 -001025f7 vector174 -00102933 vector243 -001023cf vector128 -00102228 vector81 -00101fca vector13 -001035a2 vsnprintf -0010211a vector51 -00101fe1 vector16 -0010ea16 edata -0010156e cons_init -0010290f vector240 -00102135 vector54 -00101ffa vector19 -0010ba28 __STAB_END__ -0010228b vector92 -0010293f vector244 -0010245f vector140 -001020e4 vector45 -00102216 vector79 -0010288b vector229 -00102537 vector158 -00101684 pic_enable -001020ae vector39 -001025af vector168 -0010208a vector35 -00102348 vector113 -0010ba29 __STABSTR_BEGIN__ -001023b4 vector125 -001003ce __panic -001027ef vector216 -00102186 vector63 -00102039 vector26 -0010138b serial_intr -001026db vector193 -001026ff vector196 -001000c7 grade_backtrace0 -0010279b vector209 -00101f83 vector4 -001025c7 vector170 -0010242f vector136 -00101fb5 vector10 -00102777 vector206 -0010f940 stack0 -001029c3 vector255 -0010264b vector181 -00102162 vector59 -001000e1 grade_backtrace -0010224c vector85 -00102243 vector84 -00102663 vector183 -00102543 vector159 -001027bf vector212 -001020f6 vector47 -00102d08 strtol -0010287f vector228 -001020c9 vector42 -00102351 vector114 -00102b5c strnlen -00102603 vector175 -00102483 vector143 -001023e7 vector130 -00102957 vector246 -00101fae vector9 -00102477 vector142 -001022d3 vector100 -0010273b vector201 -00101838 idt_init -0010098f print_debuginfo -0010216b vector60 -0010201e vector23 -001028df vector236 -001028a3 vector231 -001021a1 vector66 -00102054 vector29 -00102423 vector135 -00100c67 kmonitor -00102204 vector77 -0010263f vector180 -00100d53 clock_init -0010278f vector208 -001022c1 vector98 -001022b8 vector97 -0010260f vector176 -001026e7 vector194 -0010206f vector32 -0010fd40 end -00102723 vector199 -001023f3 vector131 -0010299f vector252 -00101f5f vector0 -00102cd9 strfind -0010159f cons_putc -001035fc etext -0010249b vector145 -00102312 vector107 -001020b7 vector40 -001017ee intr_enable -001022e5 vector102 -00102147 vector56 -001021b3 vector68 -00101f95 vector6 -001023db vector129 -0010270b vector197 -001024ef vector152 -0010e5e0 __vectors -00102897 vector230 -00102c50 strncmp -0010209c vector37 -0010276b vector205 -0010255b vector161 -00102bcc strncpy -001021ce vector71 -0010254f vector160 -001027e3 vector215 -0010252b vector157 -001017f5 intr_disable -00101c22 print_regs -0010233f vector112 -00100088 grade_backtrace2 -00102657 vector182 -00101fc3 vector12 -00102f98 memcmp -00102324 vector109 -00102003 vector20 -0010212c vector53 -00101ff1 vector18 -001022a6 vector95 -00102867 vector226 -00102108 vector49 -001020db vector44 -0010220d vector78 -001025eb vector173 -0010236c vector117 -00101a2f trap_in_kernel -00102231 vector82 -00102837 vector222 -00101fa7 vector8 -001024cb vector149 -0010028e cputchar -00102e65 memset -001028af vector232 -00102309 vector106 -0010281f vector220 -00102279 vector90 -00102573 vector163 -001028c7 vector234 -0010217d vector62 -00102030 vector25 -00102717 vector198 -00102387 vector120 -001002f3 getchar -0010f0a0 should_print -00102111 vector50 -00101fd8 vector15 -00103177 printfmt -001024e3 vector151 -0010223a vector83 -00102270 vector89 -00102267 vector88 -00101f48 trap -00102633 vector179 -00102081 vector34 -0010da83 __STABSTR_END__ -001020ed vector46 -00102c06 strcmp -00102417 vector134 -00102843 vector223 -00102807 vector218 -001005e4 debuginfo_eip -001016b1 pic_init -0010285b vector225 -00102693 vector187 -00102b29 pmm_init -0010205d vector30 -001023c6 vector127 -0010f928 ticks -001026cf vector192 -00102597 vector166 -001021fb vector76 -001021f2 vector75 -001026f3 vector195 -001024d7 vector150 -00102159 vector58 -0010296f vector248 -001023a2 vector123 -001022af vector96 -00102066 vector31 -00102753 vector203 -00102453 vector139 -001024fb vector153 -0010257f vector164 -00102390 vector121 -00101f8c vector5 -001025a3 vector167 -00102513 vector155 -0010297b vector249 -00102987 vector250 -001023ab vector124 -0010232d vector110 -0010275f vector204 -001029e6 __trapret -0010023f vcprintf -0010243b vector137 -0010043c __warn -00102963 vector247 -00102015 vector22 -00102747 vector202 -001021d7 vector72 -0010213e vector55 -001002a5 cputs -001023bd vector126 -00102198 vector65 -0010204b vector28 -001025bb vector169 -001028bb vector233 -001024b3 vector147 -001022f7 vector104 -00102363 vector116 -00103f4c __STAB_BEGIN__ -00102123 vector52 -00101fea vector17 -0010266f vector184 -00102b34 strlen -00102783 vector207 -001026b7 vector190 -00102903 vector239 -0010229d vector94 -00102294 vector93 -0010269f vector188 -00102ca6 strchr -001020ff vector48 -001000a2 grade_backtrace1 -00102813 vector219 -001024bf vector148 -0010282b vector221 -0010221f vector80 -001025d3 vector171 -00102507 vector154 -00102093 vector36 -001028d3 vector235 -00102300 vector105 -00100d2f mon_kerninfo -001024a7 vector146 -001026c3 vector191 -001022ee vector103 -00100cd5 mon_help -00101fbc vector11 -00101fd1 vector14 diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/libs/printfmt.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/libs/printfmt.d" deleted file mode 100644 index 7f093e2c5..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/libs/printfmt.d" +++ /dev/null @@ -1,2 +0,0 @@ -obj/libs/printfmt.o obj/libs/printfmt.d: libs/printfmt.c libs/defs.h \ - libs/x86.h libs/error.h libs/stdio.h libs/stdarg.h libs/string.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/libs/printfmt.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/libs/printfmt.o" deleted file mode 100644 index b99b4900f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/libs/printfmt.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/libs/string.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/libs/string.d" deleted file mode 100644 index dd7b1bae0..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/libs/string.d" +++ /dev/null @@ -1,2 +0,0 @@ -obj/libs/string.o obj/libs/string.d: libs/string.c libs/string.h \ - libs/defs.h libs/x86.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/libs/string.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/libs/string.o" deleted file mode 100644 index cb0ff1fa5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/libs/string.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/sign/tools/sign.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/sign/tools/sign.d" deleted file mode 100644 index c988243d1..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/sign/tools/sign.d" +++ /dev/null @@ -1 +0,0 @@ -obj/sign/tools/sign.o obj/sign/tools/sign.d: tools/sign.c diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/sign/tools/sign.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/sign/tools/sign.o" deleted file mode 100644 index 60721afd4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738787_395404561_lab1/obj/sign/tools/sign.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/bin/bootblock" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/bin/bootblock" deleted file mode 100644 index 50018d23a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/bin/bootblock" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/bin/kernel" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/bin/kernel" deleted file mode 100644 index 708631afd..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/bin/kernel" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/bin/kernel_nopage" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/bin/kernel_nopage" deleted file mode 100644 index 71226aecb..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/bin/kernel_nopage" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/bin/sign" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/bin/sign" deleted file mode 100644 index 48599cb37..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/bin/sign" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/bin/ucore.img" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/bin/ucore.img" deleted file mode 100644 index 84d6d50ac..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/bin/ucore.img" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/boot/bootasm.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/boot/bootasm.d" deleted file mode 100644 index 081467461..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/boot/bootasm.d" +++ /dev/null @@ -1 +0,0 @@ -obj/boot/bootasm.o obj/boot/bootasm.d: boot/bootasm.S boot/asm.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/boot/bootasm.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/boot/bootasm.o" deleted file mode 100644 index 6242969c4..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/boot/bootasm.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/boot/bootmain.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/boot/bootmain.d" deleted file mode 100644 index c0d98e63c..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/boot/bootmain.d" +++ /dev/null @@ -1,2 +0,0 @@ -obj/boot/bootmain.o obj/boot/bootmain.d: boot/bootmain.c libs/defs.h \ - libs/x86.h libs/elf.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/boot/bootmain.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/boot/bootmain.o" deleted file mode 100644 index 77b223cbb..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/boot/bootmain.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/bootblock.asm" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/bootblock.asm" deleted file mode 100644 index 37691e3b2..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/bootblock.asm" +++ /dev/null @@ -1,406 +0,0 @@ - -obj/bootblock.o: file format elf32-i386 - - -Disassembly of section .startup: - -00007c00 : - -# start address should be 0:7c00, in real mode, the beginning address of the running bootloader -.globl start -start: -.code16 # Assemble for 16-bit mode - cli # Disable interrupts - 7c00: fa cli - cld # String operations increment - 7c01: fc cld - - # Set up the important data segment registers (DS, ES, SS). - xorw %ax, %ax # Segment number zero - 7c02: 31 c0 xor %eax,%eax - movw %ax, %ds # -> Data Segment - 7c04: 8e d8 mov %eax,%ds - movw %ax, %es # -> Extra Segment - 7c06: 8e c0 mov %eax,%es - movw %ax, %ss # -> Stack Segment - 7c08: 8e d0 mov %eax,%ss - -00007c0a : - # Enable A20: - # For backwards compatibility with the earliest PCs, physical - # address line 20 is tied low, so that addresses higher than - # 1MB wrap around to zero by default. This code undoes this. -seta20.1: - inb $0x64, %al # Wait for not busy(8042 input buffer empty). - 7c0a: e4 64 in $0x64,%al - testb $0x2, %al - 7c0c: a8 02 test $0x2,%al - jnz seta20.1 - 7c0e: 75 fa jne 7c0a - - movb $0xd1, %al # 0xd1 -> port 0x64 - 7c10: b0 d1 mov $0xd1,%al - outb %al, $0x64 # 0xd1 means: write data to 8042's P2 port - 7c12: e6 64 out %al,$0x64 - -00007c14 : - -seta20.2: - inb $0x64, %al # Wait for not busy(8042 input buffer empty). - 7c14: e4 64 in $0x64,%al - testb $0x2, %al - 7c16: a8 02 test $0x2,%al - jnz seta20.2 - 7c18: 75 fa jne 7c14 - - movb $0xdf, %al # 0xdf -> port 0x60 - 7c1a: b0 df mov $0xdf,%al - outb %al, $0x60 # 0xdf = 11011111, means set P2's A20 bit(the 1 bit) to 1 - 7c1c: e6 60 out %al,$0x60 - -00007c1e : - -probe_memory: - movl $0, 0x8000 - 7c1e: 66 c7 06 00 80 movw $0x8000,(%esi) - 7c23: 00 00 add %al,(%eax) - 7c25: 00 00 add %al,(%eax) - xorl %ebx, %ebx - 7c27: 66 31 db xor %bx,%bx - movw $0x8004, %di - 7c2a: bf .byte 0xbf - 7c2b: 04 80 add $0x80,%al - -00007c2d : -start_probe: - movl $0xE820, %eax - 7c2d: 66 b8 20 e8 mov $0xe820,%ax - 7c31: 00 00 add %al,(%eax) - movl $20, %ecx - 7c33: 66 b9 14 00 mov $0x14,%cx - 7c37: 00 00 add %al,(%eax) - movl $SMAP, %edx - 7c39: 66 ba 50 41 mov $0x4150,%dx - 7c3d: 4d dec %ebp - 7c3e: 53 push %ebx - int $0x15 - 7c3f: cd 15 int $0x15 - jnc cont - 7c41: 73 08 jae 7c4b - movw $12345, 0x8000 - 7c43: c7 06 00 80 39 30 movl $0x30398000,(%esi) - jmp finish_probe - 7c49: eb 0e jmp 7c59 - -00007c4b : -cont: - addw $20, %di - 7c4b: 83 c7 14 add $0x14,%edi - incl 0x8000 - 7c4e: 66 ff 06 incw (%esi) - 7c51: 00 80 66 83 fb 00 add %al,0xfb8366(%eax) - cmpl $0, %ebx - jnz start_probe - 7c57: 75 d4 jne 7c2d - -00007c59 : - - # Switch from real to protected mode, using a bootstrap GDT - # and segment translation that makes virtual addresses - # identical to physical addresses, so that the - # effective memory map does not change during the switch. - lgdt gdtdesc - 7c59: 0f 01 16 lgdtl (%esi) - 7c5c: b4 7d mov $0x7d,%ah - movl %cr0, %eax - 7c5e: 0f 20 c0 mov %cr0,%eax - orl $CR0_PE_ON, %eax - 7c61: 66 83 c8 01 or $0x1,%ax - movl %eax, %cr0 - 7c65: 0f 22 c0 mov %eax,%cr0 - - # Jump to next instruction, but in 32-bit code segment. - # Switches processor into 32-bit mode. - ljmp $PROT_MODE_CSEG, $protcseg - 7c68: ea .byte 0xea - 7c69: 6d insl (%dx),%es:(%edi) - 7c6a: 7c 08 jl 7c74 - ... - -00007c6d : - -.code32 # Assemble for 32-bit mode -protcseg: - # Set up the protected-mode data segment registers - movw $PROT_MODE_DSEG, %ax # Our data segment selector - 7c6d: 66 b8 10 00 mov $0x10,%ax - movw %ax, %ds # -> DS: Data Segment - 7c71: 8e d8 mov %eax,%ds - movw %ax, %es # -> ES: Extra Segment - 7c73: 8e c0 mov %eax,%es - movw %ax, %fs # -> FS - 7c75: 8e e0 mov %eax,%fs - movw %ax, %gs # -> GS - 7c77: 8e e8 mov %eax,%gs - movw %ax, %ss # -> SS: Stack Segment - 7c79: 8e d0 mov %eax,%ss - - # Set up the stack pointer and call into C. The stack region is from 0--start(0x7c00) - movl $0x0, %ebp - 7c7b: bd 00 00 00 00 mov $0x0,%ebp - movl $start, %esp - 7c80: bc 00 7c 00 00 mov $0x7c00,%esp - call bootmain - 7c85: e8 9d 00 00 00 call 7d27 - -00007c8a : - - # If bootmain returns (it shouldn't), loop. -spin: - jmp spin - 7c8a: eb fe jmp 7c8a - -Disassembly of section .text: - -00007c8c : -/* * - * readseg - read @count bytes at @offset from kernel into virtual address @va, - * might copy more than asked. - * */ -static void -readseg(uintptr_t va, uint32_t count, uint32_t offset) { - 7c8c: 55 push %ebp - 7c8d: 89 e5 mov %esp,%ebp - 7c8f: 57 push %edi - uintptr_t end_va = va + count; - 7c90: 8d 3c 10 lea (%eax,%edx,1),%edi - - // round down to sector boundary - va -= offset % SECTSIZE; - 7c93: 89 ca mov %ecx,%edx - - // translate from bytes to sectors; kernel starts at sector 1 - uint32_t secno = (offset / SECTSIZE) + 1; - 7c95: c1 e9 09 shr $0x9,%ecx -/* * - * readseg - read @count bytes at @offset from kernel into virtual address @va, - * might copy more than asked. - * */ -static void -readseg(uintptr_t va, uint32_t count, uint32_t offset) { - 7c98: 56 push %esi - uintptr_t end_va = va + count; - - // round down to sector boundary - va -= offset % SECTSIZE; - 7c99: 81 e2 ff 01 00 00 and $0x1ff,%edx - - // translate from bytes to sectors; kernel starts at sector 1 - uint32_t secno = (offset / SECTSIZE) + 1; - 7c9f: 8d 71 01 lea 0x1(%ecx),%esi -/* * - * readseg - read @count bytes at @offset from kernel into virtual address @va, - * might copy more than asked. - * */ -static void -readseg(uintptr_t va, uint32_t count, uint32_t offset) { - 7ca2: 53 push %ebx - uintptr_t end_va = va + count; - - // round down to sector boundary - va -= offset % SECTSIZE; - 7ca3: 29 d0 sub %edx,%eax -/* * - * readseg - read @count bytes at @offset from kernel into virtual address @va, - * might copy more than asked. - * */ -static void -readseg(uintptr_t va, uint32_t count, uint32_t offset) { - 7ca5: 53 push %ebx - uintptr_t end_va = va + count; - 7ca6: 89 7d f0 mov %edi,-0x10(%ebp) - - // round down to sector boundary - va -= offset % SECTSIZE; - 7ca9: 89 c3 mov %eax,%ebx - uint32_t secno = (offset / SECTSIZE) + 1; - - // If this is too slow, we could read lots of sectors at a time. - // We'd write more to memory than asked, but it doesn't matter -- - // we load in increasing order. - for (; va < end_va; va += SECTSIZE, secno ++) { - 7cab: 3b 5d f0 cmp -0x10(%ebp),%ebx - 7cae: 73 71 jae 7d21 -static inline void invlpg(void *addr) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); - 7cb0: ba f7 01 00 00 mov $0x1f7,%edx - 7cb5: ec in (%dx),%al -#define ELFHDR ((struct elfhdr *)0x10000) // scratch space - -/* waitdisk - wait for disk ready */ -static void -waitdisk(void) { - while ((inb(0x1F7) & 0xC0) != 0x40) - 7cb6: 83 e0 c0 and $0xffffffc0,%eax - 7cb9: 3c 40 cmp $0x40,%al - 7cbb: 75 f3 jne 7cb0 - : "memory", "cc"); -} - -static inline void -outb(uint16_t port, uint8_t data) { - asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); - 7cbd: ba f2 01 00 00 mov $0x1f2,%edx - 7cc2: b0 01 mov $0x1,%al - 7cc4: ee out %al,(%dx) - 7cc5: ba f3 01 00 00 mov $0x1f3,%edx - 7cca: 89 f0 mov %esi,%eax - 7ccc: ee out %al,(%dx) - 7ccd: 89 f0 mov %esi,%eax - 7ccf: ba f4 01 00 00 mov $0x1f4,%edx - 7cd4: c1 e8 08 shr $0x8,%eax - 7cd7: ee out %al,(%dx) - 7cd8: 89 f0 mov %esi,%eax - 7cda: ba f5 01 00 00 mov $0x1f5,%edx - 7cdf: c1 e8 10 shr $0x10,%eax - 7ce2: ee out %al,(%dx) - 7ce3: 89 f0 mov %esi,%eax - 7ce5: ba f6 01 00 00 mov $0x1f6,%edx - 7cea: c1 e8 18 shr $0x18,%eax - 7ced: 83 e0 0f and $0xf,%eax - 7cf0: 83 c8 e0 or $0xffffffe0,%eax - 7cf3: ee out %al,(%dx) - 7cf4: b0 20 mov $0x20,%al - 7cf6: ba f7 01 00 00 mov $0x1f7,%edx - 7cfb: ee out %al,(%dx) -static inline void invlpg(void *addr) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); - 7cfc: ba f7 01 00 00 mov $0x1f7,%edx - 7d01: ec in (%dx),%al - 7d02: 83 e0 c0 and $0xffffffc0,%eax - 7d05: 3c 40 cmp $0x40,%al - 7d07: 75 f3 jne 7cfc - return data; -} - -static inline void -insl(uint32_t port, void *addr, int cnt) { - asm volatile ( - 7d09: 89 df mov %ebx,%edi - 7d0b: b9 80 00 00 00 mov $0x80,%ecx - 7d10: ba f0 01 00 00 mov $0x1f0,%edx - 7d15: fc cld - 7d16: f2 6d repnz insl (%dx),%es:(%edi) - uint32_t secno = (offset / SECTSIZE) + 1; - - // If this is too slow, we could read lots of sectors at a time. - // We'd write more to memory than asked, but it doesn't matter -- - // we load in increasing order. - for (; va < end_va; va += SECTSIZE, secno ++) { - 7d18: 81 c3 00 02 00 00 add $0x200,%ebx - 7d1e: 46 inc %esi - 7d1f: eb 8a jmp 7cab - readsect((void *)va, secno); - } -} - 7d21: 58 pop %eax - 7d22: 5b pop %ebx - 7d23: 5e pop %esi - 7d24: 5f pop %edi - 7d25: 5d pop %ebp - 7d26: c3 ret - -00007d27 : - -/* bootmain - the entry of bootloader */ -void -bootmain(void) { - 7d27: 55 push %ebp - // read the 1st page off disk - readseg((uintptr_t)ELFHDR, SECTSIZE * 8, 0); - 7d28: 31 c9 xor %ecx,%ecx - 7d2a: ba 00 10 00 00 mov $0x1000,%edx - 7d2f: b8 00 00 01 00 mov $0x10000,%eax - } -} - -/* bootmain - the entry of bootloader */ -void -bootmain(void) { - 7d34: 89 e5 mov %esp,%ebp - 7d36: 56 push %esi - 7d37: 53 push %ebx - // read the 1st page off disk - readseg((uintptr_t)ELFHDR, SECTSIZE * 8, 0); - 7d38: e8 4f ff ff ff call 7c8c - - // is this a valid ELF? - if (ELFHDR->e_magic != ELF_MAGIC) { - 7d3d: 81 3d 00 00 01 00 7f cmpl $0x464c457f,0x10000 - 7d44: 45 4c 46 - 7d47: 75 3f jne 7d88 - } - - struct proghdr *ph, *eph; - - // load each program segment (ignores ph flags) - ph = (struct proghdr *)((uintptr_t)ELFHDR + ELFHDR->e_phoff); - 7d49: a1 1c 00 01 00 mov 0x1001c,%eax - eph = ph + ELFHDR->e_phnum; - 7d4e: 0f b7 35 2c 00 01 00 movzwl 0x1002c,%esi - } - - struct proghdr *ph, *eph; - - // load each program segment (ignores ph flags) - ph = (struct proghdr *)((uintptr_t)ELFHDR + ELFHDR->e_phoff); - 7d55: 8d 98 00 00 01 00 lea 0x10000(%eax),%ebx - eph = ph + ELFHDR->e_phnum; - 7d5b: c1 e6 05 shl $0x5,%esi - 7d5e: 01 de add %ebx,%esi - for (; ph < eph; ph ++) { - 7d60: 39 f3 cmp %esi,%ebx - 7d62: 73 18 jae 7d7c - readseg(ph->p_va & 0xFFFFFF, ph->p_memsz, ph->p_offset); - 7d64: 8b 43 08 mov 0x8(%ebx),%eax - 7d67: 8b 4b 04 mov 0x4(%ebx),%ecx - struct proghdr *ph, *eph; - - // load each program segment (ignores ph flags) - ph = (struct proghdr *)((uintptr_t)ELFHDR + ELFHDR->e_phoff); - eph = ph + ELFHDR->e_phnum; - for (; ph < eph; ph ++) { - 7d6a: 83 c3 20 add $0x20,%ebx - readseg(ph->p_va & 0xFFFFFF, ph->p_memsz, ph->p_offset); - 7d6d: 8b 53 f4 mov -0xc(%ebx),%edx - 7d70: 25 ff ff ff 00 and $0xffffff,%eax - 7d75: e8 12 ff ff ff call 7c8c - 7d7a: eb e4 jmp 7d60 - } - - // call the entry point from the ELF header - // note: does not return - ((void (*)(void))(ELFHDR->e_entry & 0xFFFFFF))(); - 7d7c: a1 18 00 01 00 mov 0x10018,%eax - 7d81: 25 ff ff ff 00 and $0xffffff,%eax - 7d86: ff d0 call *%eax - asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); -} - -static inline void -outw(uint16_t port, uint16_t data) { - asm volatile ("outw %0, %1" :: "a" (data), "d" (port) : "memory"); - 7d88: ba 00 8a ff ff mov $0xffff8a00,%edx - 7d8d: 89 d0 mov %edx,%eax - 7d8f: 66 ef out %ax,(%dx) - 7d91: b8 00 8e ff ff mov $0xffff8e00,%eax - 7d96: 66 ef out %ax,(%dx) - 7d98: eb fe jmp 7d98 diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/bootblock.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/bootblock.o" deleted file mode 100644 index ff0861c1d..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/bootblock.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/bootblock.out" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/bootblock.out" deleted file mode 100644 index cbbbd82d9..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/bootblock.out" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/debug/kdebug.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/debug/kdebug.d" deleted file mode 100644 index 61cab7920..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/debug/kdebug.d" +++ /dev/null @@ -1,5 +0,0 @@ -obj/kern/debug/kdebug.o obj/kern/debug/kdebug.d: kern/debug/kdebug.c \ - libs/defs.h libs/x86.h kern/debug/stab.h libs/stdio.h libs/stdarg.h \ - libs/string.h kern/sync/sync.h kern/driver/intr.h kern/mm/mmu.h \ - kern/debug/kdebug.h kern/trap/trap.h kern/debug/kmonitor.h \ - kern/debug/assert.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/debug/kdebug.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/debug/kdebug.o" deleted file mode 100644 index ce7cf4347..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/debug/kdebug.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/debug/kmonitor.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/debug/kmonitor.d" deleted file mode 100644 index 11c2af26a..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/debug/kmonitor.d" +++ /dev/null @@ -1,4 +0,0 @@ -obj/kern/debug/kmonitor.o obj/kern/debug/kmonitor.d: \ - kern/debug/kmonitor.c libs/stdio.h libs/defs.h libs/stdarg.h \ - libs/string.h kern/mm/mmu.h kern/trap/trap.h kern/debug/kmonitor.h \ - kern/debug/kdebug.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/debug/kmonitor.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/debug/kmonitor.o" deleted file mode 100644 index 87df00305..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/debug/kmonitor.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/debug/panic.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/debug/panic.d" deleted file mode 100644 index 084ebb66b..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/debug/panic.d" +++ /dev/null @@ -1,3 +0,0 @@ -obj/kern/debug/panic.o obj/kern/debug/panic.d: kern/debug/panic.c \ - libs/defs.h libs/stdio.h libs/stdarg.h kern/driver/intr.h \ - kern/debug/kmonitor.h kern/trap/trap.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/debug/panic.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/debug/panic.o" deleted file mode 100644 index ee2b01a19..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/debug/panic.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/driver/clock.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/driver/clock.d" deleted file mode 100644 index bdff3ffda..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/driver/clock.d" +++ /dev/null @@ -1,3 +0,0 @@ -obj/kern/driver/clock.o obj/kern/driver/clock.d: kern/driver/clock.c \ - libs/x86.h libs/defs.h kern/trap/trap.h libs/stdio.h libs/stdarg.h \ - kern/driver/picirq.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/driver/clock.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/driver/clock.o" deleted file mode 100644 index dc2dc69cf..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/driver/clock.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/driver/console.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/driver/console.d" deleted file mode 100644 index 196db2fc1..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/driver/console.d" +++ /dev/null @@ -1,5 +0,0 @@ -obj/kern/driver/console.o obj/kern/driver/console.d: \ - kern/driver/console.c libs/defs.h libs/x86.h libs/stdio.h libs/stdarg.h \ - libs/string.h kern/driver/kbdreg.h kern/driver/picirq.h kern/trap/trap.h \ - kern/mm/memlayout.h libs/atomic.h libs/list.h kern/sync/sync.h \ - kern/driver/intr.h kern/mm/mmu.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/driver/console.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/driver/console.o" deleted file mode 100644 index c8f5d7c38..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/driver/console.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/driver/intr.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/driver/intr.d" deleted file mode 100644 index d0f9177c9..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/driver/intr.d" +++ /dev/null @@ -1,2 +0,0 @@ -obj/kern/driver/intr.o obj/kern/driver/intr.d: kern/driver/intr.c \ - libs/x86.h libs/defs.h kern/driver/intr.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/driver/intr.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/driver/intr.o" deleted file mode 100644 index 6c19a7f2a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/driver/intr.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/driver/picirq.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/driver/picirq.d" deleted file mode 100644 index 2de8ab189..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/driver/picirq.d" +++ /dev/null @@ -1,2 +0,0 @@ -obj/kern/driver/picirq.o obj/kern/driver/picirq.d: kern/driver/picirq.c \ - libs/defs.h libs/x86.h kern/driver/picirq.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/driver/picirq.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/driver/picirq.o" deleted file mode 100644 index 9905ff213..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/driver/picirq.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/init/entry.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/init/entry.d" deleted file mode 100644 index c6b2d371d..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/init/entry.d" +++ /dev/null @@ -1,2 +0,0 @@ -obj/kern/init/entry.o obj/kern/init/entry.d: kern/init/entry.S \ - kern/mm/mmu.h kern/mm/memlayout.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/init/entry.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/init/entry.o" deleted file mode 100644 index 7ba0bc062..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/init/entry.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/init/init.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/init/init.d" deleted file mode 100644 index 9982ea0b6..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/init/init.d" +++ /dev/null @@ -1,6 +0,0 @@ -obj/kern/init/init.o obj/kern/init/init.d: kern/init/init.c libs/defs.h \ - libs/stdio.h libs/stdarg.h libs/string.h kern/driver/console.h \ - kern/debug/kdebug.h kern/trap/trap.h kern/driver/picirq.h \ - kern/driver/clock.h kern/driver/intr.h kern/mm/pmm.h kern/mm/mmu.h \ - kern/mm/memlayout.h libs/atomic.h libs/list.h kern/debug/assert.h \ - kern/debug/kmonitor.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/init/init.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/init/init.o" deleted file mode 100644 index d42ce1a84..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/init/init.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/libs/readline.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/libs/readline.d" deleted file mode 100644 index 656abf96b..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/libs/readline.d" +++ /dev/null @@ -1,2 +0,0 @@ -obj/kern/libs/readline.o obj/kern/libs/readline.d: kern/libs/readline.c \ - libs/stdio.h libs/defs.h libs/stdarg.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/libs/readline.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/libs/readline.o" deleted file mode 100644 index 844924b81..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/libs/readline.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/libs/stdio.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/libs/stdio.d" deleted file mode 100644 index 5e205ace5..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/libs/stdio.d" +++ /dev/null @@ -1,2 +0,0 @@ -obj/kern/libs/stdio.o obj/kern/libs/stdio.d: kern/libs/stdio.c \ - libs/defs.h libs/stdio.h libs/stdarg.h kern/driver/console.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/libs/stdio.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/libs/stdio.o" deleted file mode 100644 index 3b16fd27e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/libs/stdio.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/mm/buddy_pmm.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/mm/buddy_pmm.d" deleted file mode 100644 index c89b6886a..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/mm/buddy_pmm.d" +++ /dev/null @@ -1,4 +0,0 @@ -obj/kern/mm/buddy_pmm.o obj/kern/mm/buddy_pmm.d: kern/mm/buddy_pmm.c \ - kern/mm/pmm.h libs/defs.h kern/mm/mmu.h kern/mm/memlayout.h \ - libs/atomic.h libs/list.h kern/debug/assert.h libs/string.h \ - kern/mm/buddy_pmm.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/mm/buddy_pmm.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/mm/buddy_pmm.o" deleted file mode 100644 index 6031a8b14..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/mm/buddy_pmm.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/mm/default_pmm.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/mm/default_pmm.d" deleted file mode 100644 index 8c415bfea..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/mm/default_pmm.d" +++ /dev/null @@ -1,4 +0,0 @@ -obj/kern/mm/default_pmm.o obj/kern/mm/default_pmm.d: \ - kern/mm/default_pmm.c kern/mm/pmm.h libs/defs.h kern/mm/mmu.h \ - kern/mm/memlayout.h libs/atomic.h libs/list.h kern/debug/assert.h \ - libs/string.h kern/mm/default_pmm.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/mm/default_pmm.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/mm/default_pmm.o" deleted file mode 100644 index 1353a6aa3..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/mm/default_pmm.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/mm/pmm.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/mm/pmm.d" deleted file mode 100644 index 42f85549c..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/mm/pmm.d" +++ /dev/null @@ -1,5 +0,0 @@ -obj/kern/mm/pmm.o obj/kern/mm/pmm.d: kern/mm/pmm.c libs/defs.h libs/x86.h \ - libs/stdio.h libs/stdarg.h libs/string.h kern/mm/mmu.h \ - kern/mm/memlayout.h libs/atomic.h libs/list.h kern/mm/pmm.h \ - kern/debug/assert.h kern/mm/default_pmm.h kern/mm/buddy_pmm.h \ - kern/sync/sync.h kern/driver/intr.h libs/error.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/mm/pmm.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/mm/pmm.o" deleted file mode 100644 index 0c5750918..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/mm/pmm.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/trap/trap.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/trap/trap.d" deleted file mode 100644 index c91f221a1..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/trap/trap.d" +++ /dev/null @@ -1,5 +0,0 @@ -obj/kern/trap/trap.o obj/kern/trap/trap.d: kern/trap/trap.c libs/defs.h \ - kern/mm/mmu.h kern/mm/memlayout.h libs/atomic.h libs/list.h \ - kern/driver/clock.h kern/trap/trap.h libs/x86.h libs/stdio.h \ - libs/stdarg.h kern/debug/assert.h kern/driver/console.h \ - kern/debug/kdebug.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/trap/trap.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/trap/trap.o" deleted file mode 100644 index 23faac458..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/trap/trap.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/trap/trapentry.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/trap/trapentry.d" deleted file mode 100644 index f37d596cc..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/trap/trapentry.d" +++ /dev/null @@ -1,2 +0,0 @@ -obj/kern/trap/trapentry.o obj/kern/trap/trapentry.d: \ - kern/trap/trapentry.S kern/mm/memlayout.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/trap/trapentry.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/trap/trapentry.o" deleted file mode 100644 index cfb45e67b..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/trap/trapentry.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/trap/vectors.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/trap/vectors.d" deleted file mode 100644 index e5813e776..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/trap/vectors.d" +++ /dev/null @@ -1 +0,0 @@ -obj/kern/trap/vectors.o obj/kern/trap/vectors.d: kern/trap/vectors.S diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/trap/vectors.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/trap/vectors.o" deleted file mode 100644 index c7e9b04f1..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kern/trap/vectors.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kernel.asm" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kernel.asm" deleted file mode 100644 index 063e24637..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kernel.asm" +++ /dev/null @@ -1,14474 +0,0 @@ - -bin/kernel: file format elf32-i386 - - -Disassembly of section .text: - -c0100000 : -.text -.globl kern_entry -kern_entry: - # reload temperate gdt (second time) to remap all physical memory - # virtual_addr 0~4G=linear_addr&physical_addr -KERNBASE~4G-KERNBASE - lgdt REALLOC(__gdtdesc) -c0100000: 0f 01 15 18 90 11 00 lgdtl 0x119018 - movl $KERNEL_DS, %eax -c0100007: b8 10 00 00 00 mov $0x10,%eax - movw %ax, %ds -c010000c: 8e d8 mov %eax,%ds - movw %ax, %es -c010000e: 8e c0 mov %eax,%es - movw %ax, %ss -c0100010: 8e d0 mov %eax,%ss - - ljmp $KERNEL_CS, $relocated -c0100012: ea 19 00 10 c0 08 00 ljmp $0x8,$0xc0100019 - -c0100019 : - -relocated: - - # set ebp, esp - movl $0x0, %ebp -c0100019: bd 00 00 00 00 mov $0x0,%ebp - # the kernel stack region is from bootstack -- bootstacktop, - # the kernel stack size is KSTACKSIZE (8KB)defined in memlayout.h - movl $bootstacktop, %esp -c010001e: bc 00 90 11 c0 mov $0xc0119000,%esp - # now kernel stack is ready , call the first C function - call kern_init -c0100023: e8 02 00 00 00 call c010002a - -c0100028 : - -# should never get here -spin: - jmp spin -c0100028: eb fe jmp c0100028 - -c010002a : -int kern_init(void) __attribute__((noreturn)); -void grade_backtrace(void); -static void lab1_switch_test(void); - -int -kern_init(void) { -c010002a: 55 push %ebp -c010002b: 89 e5 mov %esp,%ebp -c010002d: 83 ec 18 sub $0x18,%esp - extern char edata[], end[]; - memset(edata, 0, end - edata); -c0100030: ba 74 a9 11 c0 mov $0xc011a974,%edx -c0100035: b8 36 9a 11 c0 mov $0xc0119a36,%eax -c010003a: 29 c2 sub %eax,%edx -c010003c: 89 d0 mov %edx,%eax -c010003e: 83 ec 04 sub $0x4,%esp -c0100041: 50 push %eax -c0100042: 6a 00 push $0x0 -c0100044: 68 36 9a 11 c0 push $0xc0119a36 -c0100049: e8 19 61 00 00 call c0106167 -c010004e: 83 c4 10 add $0x10,%esp - - cons_init(); // init the console -c0100051: e8 55 15 00 00 call c01015ab - - const char *message = "(THU.CST) os is loading ..."; -c0100056: c7 45 f4 00 69 10 c0 movl $0xc0106900,-0xc(%ebp) - cprintf("%s\n\n", message); -c010005d: 83 ec 08 sub $0x8,%esp -c0100060: ff 75 f4 pushl -0xc(%ebp) -c0100063: 68 1c 69 10 c0 push $0xc010691c -c0100068: e8 fa 01 00 00 call c0100267 -c010006d: 83 c4 10 add $0x10,%esp - - print_kerninfo(); -c0100070: e8 7c 08 00 00 call c01008f1 - - grade_backtrace(); -c0100075: e8 74 00 00 00 call c01000ee - - pmm_init(); // init physical memory management -c010007a: e8 24 33 00 00 call c01033a3 - - pic_init(); // init interrupt controller -c010007f: e8 99 16 00 00 call c010171d - idt_init(); // init interrupt descriptor table -c0100084: e8 1b 18 00 00 call c01018a4 - - clock_init(); // init clock interrupt -c0100089: e8 c4 0c 00 00 call c0100d52 - intr_enable(); // enable irq interrupt -c010008e: e8 c7 17 00 00 call c010185a - //LAB1: CAHLLENGE 1 If you try to do it, uncomment lab1_switch_test() - // user/kernel mode switch test - //lab1_switch_test(); - - /* do nothing */ - while (1); -c0100093: eb fe jmp c0100093 - -c0100095 : -} - -void __attribute__((noinline)) -grade_backtrace2(int arg0, int arg1, int arg2, int arg3) { -c0100095: 55 push %ebp -c0100096: 89 e5 mov %esp,%ebp -c0100098: 83 ec 08 sub $0x8,%esp - mon_backtrace(0, NULL, NULL); -c010009b: 83 ec 04 sub $0x4,%esp -c010009e: 6a 00 push $0x0 -c01000a0: 6a 00 push $0x0 -c01000a2: 6a 00 push $0x0 -c01000a4: e8 97 0c 00 00 call c0100d40 -c01000a9: 83 c4 10 add $0x10,%esp -} -c01000ac: 90 nop -c01000ad: c9 leave -c01000ae: c3 ret - -c01000af : - -void __attribute__((noinline)) -grade_backtrace1(int arg0, int arg1) { -c01000af: 55 push %ebp -c01000b0: 89 e5 mov %esp,%ebp -c01000b2: 53 push %ebx -c01000b3: 83 ec 04 sub $0x4,%esp - grade_backtrace2(arg0, (int)&arg0, arg1, (int)&arg1); -c01000b6: 8d 4d 0c lea 0xc(%ebp),%ecx -c01000b9: 8b 55 0c mov 0xc(%ebp),%edx -c01000bc: 8d 5d 08 lea 0x8(%ebp),%ebx -c01000bf: 8b 45 08 mov 0x8(%ebp),%eax -c01000c2: 51 push %ecx -c01000c3: 52 push %edx -c01000c4: 53 push %ebx -c01000c5: 50 push %eax -c01000c6: e8 ca ff ff ff call c0100095 -c01000cb: 83 c4 10 add $0x10,%esp -} -c01000ce: 90 nop -c01000cf: 8b 5d fc mov -0x4(%ebp),%ebx -c01000d2: c9 leave -c01000d3: c3 ret - -c01000d4 : - -void __attribute__((noinline)) -grade_backtrace0(int arg0, int arg1, int arg2) { -c01000d4: 55 push %ebp -c01000d5: 89 e5 mov %esp,%ebp -c01000d7: 83 ec 08 sub $0x8,%esp - grade_backtrace1(arg0, arg2); -c01000da: 83 ec 08 sub $0x8,%esp -c01000dd: ff 75 10 pushl 0x10(%ebp) -c01000e0: ff 75 08 pushl 0x8(%ebp) -c01000e3: e8 c7 ff ff ff call c01000af -c01000e8: 83 c4 10 add $0x10,%esp -} -c01000eb: 90 nop -c01000ec: c9 leave -c01000ed: c3 ret - -c01000ee : - -void -grade_backtrace(void) { -c01000ee: 55 push %ebp -c01000ef: 89 e5 mov %esp,%ebp -c01000f1: 83 ec 08 sub $0x8,%esp - grade_backtrace0(0, (int)kern_init, 0xffff0000); -c01000f4: b8 2a 00 10 c0 mov $0xc010002a,%eax -c01000f9: 83 ec 04 sub $0x4,%esp -c01000fc: 68 00 00 ff ff push $0xffff0000 -c0100101: 50 push %eax -c0100102: 6a 00 push $0x0 -c0100104: e8 cb ff ff ff call c01000d4 -c0100109: 83 c4 10 add $0x10,%esp -} -c010010c: 90 nop -c010010d: c9 leave -c010010e: c3 ret - -c010010f : - -static void -lab1_print_cur_status(void) { -c010010f: 55 push %ebp -c0100110: 89 e5 mov %esp,%ebp -c0100112: 83 ec 18 sub $0x18,%esp - static int round = 0; - uint16_t reg1, reg2, reg3, reg4; - asm volatile ( -c0100115: 8c 4d f6 mov %cs,-0xa(%ebp) -c0100118: 8c 5d f4 mov %ds,-0xc(%ebp) -c010011b: 8c 45 f2 mov %es,-0xe(%ebp) -c010011e: 8c 55 f0 mov %ss,-0x10(%ebp) - "mov %%cs, %0;" - "mov %%ds, %1;" - "mov %%es, %2;" - "mov %%ss, %3;" - : "=m"(reg1), "=m"(reg2), "=m"(reg3), "=m"(reg4)); - cprintf("%d: @ring %d\n", round, reg1 & 3); -c0100121: 0f b7 45 f6 movzwl -0xa(%ebp),%eax -c0100125: 0f b7 c0 movzwl %ax,%eax -c0100128: 83 e0 03 and $0x3,%eax -c010012b: 89 c2 mov %eax,%edx -c010012d: a1 40 9a 11 c0 mov 0xc0119a40,%eax -c0100132: 83 ec 04 sub $0x4,%esp -c0100135: 52 push %edx -c0100136: 50 push %eax -c0100137: 68 21 69 10 c0 push $0xc0106921 -c010013c: e8 26 01 00 00 call c0100267 -c0100141: 83 c4 10 add $0x10,%esp - cprintf("%d: cs = %x\n", round, reg1); -c0100144: 0f b7 45 f6 movzwl -0xa(%ebp),%eax -c0100148: 0f b7 d0 movzwl %ax,%edx -c010014b: a1 40 9a 11 c0 mov 0xc0119a40,%eax -c0100150: 83 ec 04 sub $0x4,%esp -c0100153: 52 push %edx -c0100154: 50 push %eax -c0100155: 68 2f 69 10 c0 push $0xc010692f -c010015a: e8 08 01 00 00 call c0100267 -c010015f: 83 c4 10 add $0x10,%esp - cprintf("%d: ds = %x\n", round, reg2); -c0100162: 0f b7 45 f4 movzwl -0xc(%ebp),%eax -c0100166: 0f b7 d0 movzwl %ax,%edx -c0100169: a1 40 9a 11 c0 mov 0xc0119a40,%eax -c010016e: 83 ec 04 sub $0x4,%esp -c0100171: 52 push %edx -c0100172: 50 push %eax -c0100173: 68 3d 69 10 c0 push $0xc010693d -c0100178: e8 ea 00 00 00 call c0100267 -c010017d: 83 c4 10 add $0x10,%esp - cprintf("%d: es = %x\n", round, reg3); -c0100180: 0f b7 45 f2 movzwl -0xe(%ebp),%eax -c0100184: 0f b7 d0 movzwl %ax,%edx -c0100187: a1 40 9a 11 c0 mov 0xc0119a40,%eax -c010018c: 83 ec 04 sub $0x4,%esp -c010018f: 52 push %edx -c0100190: 50 push %eax -c0100191: 68 4b 69 10 c0 push $0xc010694b -c0100196: e8 cc 00 00 00 call c0100267 -c010019b: 83 c4 10 add $0x10,%esp - cprintf("%d: ss = %x\n", round, reg4); -c010019e: 0f b7 45 f0 movzwl -0x10(%ebp),%eax -c01001a2: 0f b7 d0 movzwl %ax,%edx -c01001a5: a1 40 9a 11 c0 mov 0xc0119a40,%eax -c01001aa: 83 ec 04 sub $0x4,%esp -c01001ad: 52 push %edx -c01001ae: 50 push %eax -c01001af: 68 59 69 10 c0 push $0xc0106959 -c01001b4: e8 ae 00 00 00 call c0100267 -c01001b9: 83 c4 10 add $0x10,%esp - round ++; -c01001bc: a1 40 9a 11 c0 mov 0xc0119a40,%eax -c01001c1: 83 c0 01 add $0x1,%eax -c01001c4: a3 40 9a 11 c0 mov %eax,0xc0119a40 -} -c01001c9: 90 nop -c01001ca: c9 leave -c01001cb: c3 ret - -c01001cc : - -static void -lab1_switch_to_user(void) { -c01001cc: 55 push %ebp -c01001cd: 89 e5 mov %esp,%ebp - //LAB1 CHALLENGE 1 : TODO -} -c01001cf: 90 nop -c01001d0: 5d pop %ebp -c01001d1: c3 ret - -c01001d2 : - -static void -lab1_switch_to_kernel(void) { -c01001d2: 55 push %ebp -c01001d3: 89 e5 mov %esp,%ebp - //LAB1 CHALLENGE 1 : TODO -} -c01001d5: 90 nop -c01001d6: 5d pop %ebp -c01001d7: c3 ret - -c01001d8 : - -static void -lab1_switch_test(void) { -c01001d8: 55 push %ebp -c01001d9: 89 e5 mov %esp,%ebp -c01001db: 83 ec 08 sub $0x8,%esp - lab1_print_cur_status(); -c01001de: e8 2c ff ff ff call c010010f - cprintf("+++ switch to user mode +++\n"); -c01001e3: 83 ec 0c sub $0xc,%esp -c01001e6: 68 68 69 10 c0 push $0xc0106968 -c01001eb: e8 77 00 00 00 call c0100267 -c01001f0: 83 c4 10 add $0x10,%esp - lab1_switch_to_user(); -c01001f3: e8 d4 ff ff ff call c01001cc - lab1_print_cur_status(); -c01001f8: e8 12 ff ff ff call c010010f - cprintf("+++ switch to kernel mode +++\n"); -c01001fd: 83 ec 0c sub $0xc,%esp -c0100200: 68 88 69 10 c0 push $0xc0106988 -c0100205: e8 5d 00 00 00 call c0100267 -c010020a: 83 c4 10 add $0x10,%esp - lab1_switch_to_kernel(); -c010020d: e8 c0 ff ff ff call c01001d2 - lab1_print_cur_status(); -c0100212: e8 f8 fe ff ff call c010010f -} -c0100217: 90 nop -c0100218: c9 leave -c0100219: c3 ret - -c010021a : -/* * - * cputch - writes a single character @c to stdout, and it will - * increace the value of counter pointed by @cnt. - * */ -static void -cputch(int c, int *cnt) { -c010021a: 55 push %ebp -c010021b: 89 e5 mov %esp,%ebp -c010021d: 83 ec 08 sub $0x8,%esp - cons_putc(c); -c0100220: 83 ec 0c sub $0xc,%esp -c0100223: ff 75 08 pushl 0x8(%ebp) -c0100226: e8 b1 13 00 00 call c01015dc -c010022b: 83 c4 10 add $0x10,%esp - (*cnt) ++; -c010022e: 8b 45 0c mov 0xc(%ebp),%eax -c0100231: 8b 00 mov (%eax),%eax -c0100233: 8d 50 01 lea 0x1(%eax),%edx -c0100236: 8b 45 0c mov 0xc(%ebp),%eax -c0100239: 89 10 mov %edx,(%eax) -} -c010023b: 90 nop -c010023c: c9 leave -c010023d: c3 ret - -c010023e : - * - * Call this function if you are already dealing with a va_list. - * Or you probably want cprintf() instead. - * */ -int -vcprintf(const char *fmt, va_list ap) { -c010023e: 55 push %ebp -c010023f: 89 e5 mov %esp,%ebp -c0100241: 83 ec 18 sub $0x18,%esp - int cnt = 0; -c0100244: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - vprintfmt((void*)cputch, &cnt, fmt, ap); -c010024b: ff 75 0c pushl 0xc(%ebp) -c010024e: ff 75 08 pushl 0x8(%ebp) -c0100251: 8d 45 f4 lea -0xc(%ebp),%eax -c0100254: 50 push %eax -c0100255: 68 1a 02 10 c0 push $0xc010021a -c010025a: e8 3e 62 00 00 call c010649d -c010025f: 83 c4 10 add $0x10,%esp - return cnt; -c0100262: 8b 45 f4 mov -0xc(%ebp),%eax -} -c0100265: c9 leave -c0100266: c3 ret - -c0100267 : - * - * The return value is the number of characters which would be - * written to stdout. - * */ -int -cprintf(const char *fmt, ...) { -c0100267: 55 push %ebp -c0100268: 89 e5 mov %esp,%ebp -c010026a: 83 ec 18 sub $0x18,%esp - va_list ap; - int cnt; - va_start(ap, fmt); -c010026d: 8d 45 0c lea 0xc(%ebp),%eax -c0100270: 89 45 f0 mov %eax,-0x10(%ebp) - cnt = vcprintf(fmt, ap); -c0100273: 8b 45 f0 mov -0x10(%ebp),%eax -c0100276: 83 ec 08 sub $0x8,%esp -c0100279: 50 push %eax -c010027a: ff 75 08 pushl 0x8(%ebp) -c010027d: e8 bc ff ff ff call c010023e -c0100282: 83 c4 10 add $0x10,%esp -c0100285: 89 45 f4 mov %eax,-0xc(%ebp) - va_end(ap); - return cnt; -c0100288: 8b 45 f4 mov -0xc(%ebp),%eax -} -c010028b: c9 leave -c010028c: c3 ret - -c010028d : - -/* cputchar - writes a single character to stdout */ -void -cputchar(int c) { -c010028d: 55 push %ebp -c010028e: 89 e5 mov %esp,%ebp -c0100290: 83 ec 08 sub $0x8,%esp - cons_putc(c); -c0100293: 83 ec 0c sub $0xc,%esp -c0100296: ff 75 08 pushl 0x8(%ebp) -c0100299: e8 3e 13 00 00 call c01015dc -c010029e: 83 c4 10 add $0x10,%esp -} -c01002a1: 90 nop -c01002a2: c9 leave -c01002a3: c3 ret - -c01002a4 : -/* * - * cputs- writes the string pointed by @str to stdout and - * appends a newline character. - * */ -int -cputs(const char *str) { -c01002a4: 55 push %ebp -c01002a5: 89 e5 mov %esp,%ebp -c01002a7: 83 ec 18 sub $0x18,%esp - int cnt = 0; -c01002aa: c7 45 f0 00 00 00 00 movl $0x0,-0x10(%ebp) - char c; - while ((c = *str ++) != '\0') { -c01002b1: eb 14 jmp c01002c7 - cputch(c, &cnt); -c01002b3: 0f be 45 f7 movsbl -0x9(%ebp),%eax -c01002b7: 83 ec 08 sub $0x8,%esp -c01002ba: 8d 55 f0 lea -0x10(%ebp),%edx -c01002bd: 52 push %edx -c01002be: 50 push %eax -c01002bf: e8 56 ff ff ff call c010021a -c01002c4: 83 c4 10 add $0x10,%esp - * */ -int -cputs(const char *str) { - int cnt = 0; - char c; - while ((c = *str ++) != '\0') { -c01002c7: 8b 45 08 mov 0x8(%ebp),%eax -c01002ca: 8d 50 01 lea 0x1(%eax),%edx -c01002cd: 89 55 08 mov %edx,0x8(%ebp) -c01002d0: 0f b6 00 movzbl (%eax),%eax -c01002d3: 88 45 f7 mov %al,-0x9(%ebp) -c01002d6: 80 7d f7 00 cmpb $0x0,-0x9(%ebp) -c01002da: 75 d7 jne c01002b3 - cputch(c, &cnt); - } - cputch('\n', &cnt); -c01002dc: 83 ec 08 sub $0x8,%esp -c01002df: 8d 45 f0 lea -0x10(%ebp),%eax -c01002e2: 50 push %eax -c01002e3: 6a 0a push $0xa -c01002e5: e8 30 ff ff ff call c010021a -c01002ea: 83 c4 10 add $0x10,%esp - return cnt; -c01002ed: 8b 45 f0 mov -0x10(%ebp),%eax -} -c01002f0: c9 leave -c01002f1: c3 ret - -c01002f2 : - -/* getchar - reads a single non-zero character from stdin */ -int -getchar(void) { -c01002f2: 55 push %ebp -c01002f3: 89 e5 mov %esp,%ebp -c01002f5: 83 ec 18 sub $0x18,%esp - int c; - while ((c = cons_getc()) == 0) -c01002f8: e8 28 13 00 00 call c0101625 -c01002fd: 89 45 f4 mov %eax,-0xc(%ebp) -c0100300: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c0100304: 74 f2 je c01002f8 - /* do nothing */; - return c; -c0100306: 8b 45 f4 mov -0xc(%ebp),%eax -} -c0100309: c9 leave -c010030a: c3 ret - -c010030b : - * The readline() function returns the text of the line read. If some errors - * are happened, NULL is returned. The return value is a global variable, - * thus it should be copied before it is used. - * */ -char * -readline(const char *prompt) { -c010030b: 55 push %ebp -c010030c: 89 e5 mov %esp,%ebp -c010030e: 83 ec 18 sub $0x18,%esp - if (prompt != NULL) { -c0100311: 83 7d 08 00 cmpl $0x0,0x8(%ebp) -c0100315: 74 13 je c010032a - cprintf("%s", prompt); -c0100317: 83 ec 08 sub $0x8,%esp -c010031a: ff 75 08 pushl 0x8(%ebp) -c010031d: 68 a7 69 10 c0 push $0xc01069a7 -c0100322: e8 40 ff ff ff call c0100267 -c0100327: 83 c4 10 add $0x10,%esp - } - int i = 0, c; -c010032a: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - while (1) { - c = getchar(); -c0100331: e8 bc ff ff ff call c01002f2 -c0100336: 89 45 f0 mov %eax,-0x10(%ebp) - if (c < 0) { -c0100339: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) -c010033d: 79 0a jns c0100349 - return NULL; -c010033f: b8 00 00 00 00 mov $0x0,%eax -c0100344: e9 82 00 00 00 jmp c01003cb - } - else if (c >= ' ' && i < BUFSIZE - 1) { -c0100349: 83 7d f0 1f cmpl $0x1f,-0x10(%ebp) -c010034d: 7e 2b jle c010037a -c010034f: 81 7d f4 fe 03 00 00 cmpl $0x3fe,-0xc(%ebp) -c0100356: 7f 22 jg c010037a - cputchar(c); -c0100358: 83 ec 0c sub $0xc,%esp -c010035b: ff 75 f0 pushl -0x10(%ebp) -c010035e: e8 2a ff ff ff call c010028d -c0100363: 83 c4 10 add $0x10,%esp - buf[i ++] = c; -c0100366: 8b 45 f4 mov -0xc(%ebp),%eax -c0100369: 8d 50 01 lea 0x1(%eax),%edx -c010036c: 89 55 f4 mov %edx,-0xc(%ebp) -c010036f: 8b 55 f0 mov -0x10(%ebp),%edx -c0100372: 88 90 60 9a 11 c0 mov %dl,-0x3fee65a0(%eax) -c0100378: eb 4c jmp c01003c6 - } - else if (c == '\b' && i > 0) { -c010037a: 83 7d f0 08 cmpl $0x8,-0x10(%ebp) -c010037e: 75 1a jne c010039a -c0100380: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c0100384: 7e 14 jle c010039a - cputchar(c); -c0100386: 83 ec 0c sub $0xc,%esp -c0100389: ff 75 f0 pushl -0x10(%ebp) -c010038c: e8 fc fe ff ff call c010028d -c0100391: 83 c4 10 add $0x10,%esp - i --; -c0100394: 83 6d f4 01 subl $0x1,-0xc(%ebp) -c0100398: eb 2c jmp c01003c6 - } - else if (c == '\n' || c == '\r') { -c010039a: 83 7d f0 0a cmpl $0xa,-0x10(%ebp) -c010039e: 74 06 je c01003a6 -c01003a0: 83 7d f0 0d cmpl $0xd,-0x10(%ebp) -c01003a4: 75 8b jne c0100331 - cputchar(c); -c01003a6: 83 ec 0c sub $0xc,%esp -c01003a9: ff 75 f0 pushl -0x10(%ebp) -c01003ac: e8 dc fe ff ff call c010028d -c01003b1: 83 c4 10 add $0x10,%esp - buf[i] = '\0'; -c01003b4: 8b 45 f4 mov -0xc(%ebp),%eax -c01003b7: 05 60 9a 11 c0 add $0xc0119a60,%eax -c01003bc: c6 00 00 movb $0x0,(%eax) - return buf; -c01003bf: b8 60 9a 11 c0 mov $0xc0119a60,%eax -c01003c4: eb 05 jmp c01003cb - } - } -c01003c6: e9 66 ff ff ff jmp c0100331 -} -c01003cb: c9 leave -c01003cc: c3 ret - -c01003cd <__panic>: -/* * - * __panic - __panic is called on unresolvable fatal errors. it prints - * "panic: 'message'", and then enters the kernel monitor. - * */ -void -__panic(const char *file, int line, const char *fmt, ...) { -c01003cd: 55 push %ebp -c01003ce: 89 e5 mov %esp,%ebp -c01003d0: 83 ec 18 sub $0x18,%esp - if (is_panic) { -c01003d3: a1 60 9e 11 c0 mov 0xc0119e60,%eax -c01003d8: 85 c0 test %eax,%eax -c01003da: 75 4a jne c0100426 <__panic+0x59> - goto panic_dead; - } - is_panic = 1; -c01003dc: c7 05 60 9e 11 c0 01 movl $0x1,0xc0119e60 -c01003e3: 00 00 00 - - // print the 'message' - va_list ap; - va_start(ap, fmt); -c01003e6: 8d 45 14 lea 0x14(%ebp),%eax -c01003e9: 89 45 f4 mov %eax,-0xc(%ebp) - cprintf("kernel panic at %s:%d:\n ", file, line); -c01003ec: 83 ec 04 sub $0x4,%esp -c01003ef: ff 75 0c pushl 0xc(%ebp) -c01003f2: ff 75 08 pushl 0x8(%ebp) -c01003f5: 68 aa 69 10 c0 push $0xc01069aa -c01003fa: e8 68 fe ff ff call c0100267 -c01003ff: 83 c4 10 add $0x10,%esp - vcprintf(fmt, ap); -c0100402: 8b 45 f4 mov -0xc(%ebp),%eax -c0100405: 83 ec 08 sub $0x8,%esp -c0100408: 50 push %eax -c0100409: ff 75 10 pushl 0x10(%ebp) -c010040c: e8 2d fe ff ff call c010023e -c0100411: 83 c4 10 add $0x10,%esp - cprintf("\n"); -c0100414: 83 ec 0c sub $0xc,%esp -c0100417: 68 c6 69 10 c0 push $0xc01069c6 -c010041c: e8 46 fe ff ff call c0100267 -c0100421: 83 c4 10 add $0x10,%esp -c0100424: eb 01 jmp c0100427 <__panic+0x5a> - * "panic: 'message'", and then enters the kernel monitor. - * */ -void -__panic(const char *file, int line, const char *fmt, ...) { - if (is_panic) { - goto panic_dead; -c0100426: 90 nop - vcprintf(fmt, ap); - cprintf("\n"); - va_end(ap); - -panic_dead: - intr_disable(); -c0100427: e8 35 14 00 00 call c0101861 - while (1) { - kmonitor(NULL); -c010042c: 83 ec 0c sub $0xc,%esp -c010042f: 6a 00 push $0x0 -c0100431: e8 30 08 00 00 call c0100c66 -c0100436: 83 c4 10 add $0x10,%esp - } -c0100439: eb f1 jmp c010042c <__panic+0x5f> - -c010043b <__warn>: -} - -/* __warn - like panic, but don't */ -void -__warn(const char *file, int line, const char *fmt, ...) { -c010043b: 55 push %ebp -c010043c: 89 e5 mov %esp,%ebp -c010043e: 83 ec 18 sub $0x18,%esp - va_list ap; - va_start(ap, fmt); -c0100441: 8d 45 14 lea 0x14(%ebp),%eax -c0100444: 89 45 f4 mov %eax,-0xc(%ebp) - cprintf("kernel warning at %s:%d:\n ", file, line); -c0100447: 83 ec 04 sub $0x4,%esp -c010044a: ff 75 0c pushl 0xc(%ebp) -c010044d: ff 75 08 pushl 0x8(%ebp) -c0100450: 68 c8 69 10 c0 push $0xc01069c8 -c0100455: e8 0d fe ff ff call c0100267 -c010045a: 83 c4 10 add $0x10,%esp - vcprintf(fmt, ap); -c010045d: 8b 45 f4 mov -0xc(%ebp),%eax -c0100460: 83 ec 08 sub $0x8,%esp -c0100463: 50 push %eax -c0100464: ff 75 10 pushl 0x10(%ebp) -c0100467: e8 d2 fd ff ff call c010023e -c010046c: 83 c4 10 add $0x10,%esp - cprintf("\n"); -c010046f: 83 ec 0c sub $0xc,%esp -c0100472: 68 c6 69 10 c0 push $0xc01069c6 -c0100477: e8 eb fd ff ff call c0100267 -c010047c: 83 c4 10 add $0x10,%esp - va_end(ap); -} -c010047f: 90 nop -c0100480: c9 leave -c0100481: c3 ret - -c0100482 : - -bool -is_kernel_panic(void) { -c0100482: 55 push %ebp -c0100483: 89 e5 mov %esp,%ebp - return is_panic; -c0100485: a1 60 9e 11 c0 mov 0xc0119e60,%eax -} -c010048a: 5d pop %ebp -c010048b: c3 ret - -c010048c : - * stab_binsearch(stabs, &left, &right, N_SO, 0xf0100184); - * will exit setting left = 118, right = 554. - * */ -static void -stab_binsearch(const struct stab *stabs, int *region_left, int *region_right, - int type, uintptr_t addr) { -c010048c: 55 push %ebp -c010048d: 89 e5 mov %esp,%ebp -c010048f: 83 ec 20 sub $0x20,%esp - int l = *region_left, r = *region_right, any_matches = 0; -c0100492: 8b 45 0c mov 0xc(%ebp),%eax -c0100495: 8b 00 mov (%eax),%eax -c0100497: 89 45 fc mov %eax,-0x4(%ebp) -c010049a: 8b 45 10 mov 0x10(%ebp),%eax -c010049d: 8b 00 mov (%eax),%eax -c010049f: 89 45 f8 mov %eax,-0x8(%ebp) -c01004a2: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - - while (l <= r) { -c01004a9: e9 d2 00 00 00 jmp c0100580 - int true_m = (l + r) / 2, m = true_m; -c01004ae: 8b 55 fc mov -0x4(%ebp),%edx -c01004b1: 8b 45 f8 mov -0x8(%ebp),%eax -c01004b4: 01 d0 add %edx,%eax -c01004b6: 89 c2 mov %eax,%edx -c01004b8: c1 ea 1f shr $0x1f,%edx -c01004bb: 01 d0 add %edx,%eax -c01004bd: d1 f8 sar %eax -c01004bf: 89 45 ec mov %eax,-0x14(%ebp) -c01004c2: 8b 45 ec mov -0x14(%ebp),%eax -c01004c5: 89 45 f0 mov %eax,-0x10(%ebp) - - // search for earliest stab with right type - while (m >= l && stabs[m].n_type != type) { -c01004c8: eb 04 jmp c01004ce - m --; -c01004ca: 83 6d f0 01 subl $0x1,-0x10(%ebp) - - while (l <= r) { - int true_m = (l + r) / 2, m = true_m; - - // search for earliest stab with right type - while (m >= l && stabs[m].n_type != type) { -c01004ce: 8b 45 f0 mov -0x10(%ebp),%eax -c01004d1: 3b 45 fc cmp -0x4(%ebp),%eax -c01004d4: 7c 1f jl c01004f5 -c01004d6: 8b 55 f0 mov -0x10(%ebp),%edx -c01004d9: 89 d0 mov %edx,%eax -c01004db: 01 c0 add %eax,%eax -c01004dd: 01 d0 add %edx,%eax -c01004df: c1 e0 02 shl $0x2,%eax -c01004e2: 89 c2 mov %eax,%edx -c01004e4: 8b 45 08 mov 0x8(%ebp),%eax -c01004e7: 01 d0 add %edx,%eax -c01004e9: 0f b6 40 04 movzbl 0x4(%eax),%eax -c01004ed: 0f b6 c0 movzbl %al,%eax -c01004f0: 3b 45 14 cmp 0x14(%ebp),%eax -c01004f3: 75 d5 jne c01004ca - m --; - } - if (m < l) { // no match in [l, m] -c01004f5: 8b 45 f0 mov -0x10(%ebp),%eax -c01004f8: 3b 45 fc cmp -0x4(%ebp),%eax -c01004fb: 7d 0b jge c0100508 - l = true_m + 1; -c01004fd: 8b 45 ec mov -0x14(%ebp),%eax -c0100500: 83 c0 01 add $0x1,%eax -c0100503: 89 45 fc mov %eax,-0x4(%ebp) - continue; -c0100506: eb 78 jmp c0100580 - } - - // actual binary search - any_matches = 1; -c0100508: c7 45 f4 01 00 00 00 movl $0x1,-0xc(%ebp) - if (stabs[m].n_value < addr) { -c010050f: 8b 55 f0 mov -0x10(%ebp),%edx -c0100512: 89 d0 mov %edx,%eax -c0100514: 01 c0 add %eax,%eax -c0100516: 01 d0 add %edx,%eax -c0100518: c1 e0 02 shl $0x2,%eax -c010051b: 89 c2 mov %eax,%edx -c010051d: 8b 45 08 mov 0x8(%ebp),%eax -c0100520: 01 d0 add %edx,%eax -c0100522: 8b 40 08 mov 0x8(%eax),%eax -c0100525: 3b 45 18 cmp 0x18(%ebp),%eax -c0100528: 73 13 jae c010053d - *region_left = m; -c010052a: 8b 45 0c mov 0xc(%ebp),%eax -c010052d: 8b 55 f0 mov -0x10(%ebp),%edx -c0100530: 89 10 mov %edx,(%eax) - l = true_m + 1; -c0100532: 8b 45 ec mov -0x14(%ebp),%eax -c0100535: 83 c0 01 add $0x1,%eax -c0100538: 89 45 fc mov %eax,-0x4(%ebp) -c010053b: eb 43 jmp c0100580 - } else if (stabs[m].n_value > addr) { -c010053d: 8b 55 f0 mov -0x10(%ebp),%edx -c0100540: 89 d0 mov %edx,%eax -c0100542: 01 c0 add %eax,%eax -c0100544: 01 d0 add %edx,%eax -c0100546: c1 e0 02 shl $0x2,%eax -c0100549: 89 c2 mov %eax,%edx -c010054b: 8b 45 08 mov 0x8(%ebp),%eax -c010054e: 01 d0 add %edx,%eax -c0100550: 8b 40 08 mov 0x8(%eax),%eax -c0100553: 3b 45 18 cmp 0x18(%ebp),%eax -c0100556: 76 16 jbe c010056e - *region_right = m - 1; -c0100558: 8b 45 f0 mov -0x10(%ebp),%eax -c010055b: 8d 50 ff lea -0x1(%eax),%edx -c010055e: 8b 45 10 mov 0x10(%ebp),%eax -c0100561: 89 10 mov %edx,(%eax) - r = m - 1; -c0100563: 8b 45 f0 mov -0x10(%ebp),%eax -c0100566: 83 e8 01 sub $0x1,%eax -c0100569: 89 45 f8 mov %eax,-0x8(%ebp) -c010056c: eb 12 jmp c0100580 - } else { - // exact match for 'addr', but continue loop to find - // *region_right - *region_left = m; -c010056e: 8b 45 0c mov 0xc(%ebp),%eax -c0100571: 8b 55 f0 mov -0x10(%ebp),%edx -c0100574: 89 10 mov %edx,(%eax) - l = m; -c0100576: 8b 45 f0 mov -0x10(%ebp),%eax -c0100579: 89 45 fc mov %eax,-0x4(%ebp) - addr ++; -c010057c: 83 45 18 01 addl $0x1,0x18(%ebp) -static void -stab_binsearch(const struct stab *stabs, int *region_left, int *region_right, - int type, uintptr_t addr) { - int l = *region_left, r = *region_right, any_matches = 0; - - while (l <= r) { -c0100580: 8b 45 fc mov -0x4(%ebp),%eax -c0100583: 3b 45 f8 cmp -0x8(%ebp),%eax -c0100586: 0f 8e 22 ff ff ff jle c01004ae - l = m; - addr ++; - } - } - - if (!any_matches) { -c010058c: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c0100590: 75 0f jne c01005a1 - *region_right = *region_left - 1; -c0100592: 8b 45 0c mov 0xc(%ebp),%eax -c0100595: 8b 00 mov (%eax),%eax -c0100597: 8d 50 ff lea -0x1(%eax),%edx -c010059a: 8b 45 10 mov 0x10(%ebp),%eax -c010059d: 89 10 mov %edx,(%eax) - l = *region_right; - for (; l > *region_left && stabs[l].n_type != type; l --) - /* do nothing */; - *region_left = l; - } -} -c010059f: eb 3f jmp c01005e0 - if (!any_matches) { - *region_right = *region_left - 1; - } - else { - // find rightmost region containing 'addr' - l = *region_right; -c01005a1: 8b 45 10 mov 0x10(%ebp),%eax -c01005a4: 8b 00 mov (%eax),%eax -c01005a6: 89 45 fc mov %eax,-0x4(%ebp) - for (; l > *region_left && stabs[l].n_type != type; l --) -c01005a9: eb 04 jmp c01005af -c01005ab: 83 6d fc 01 subl $0x1,-0x4(%ebp) -c01005af: 8b 45 0c mov 0xc(%ebp),%eax -c01005b2: 8b 00 mov (%eax),%eax -c01005b4: 3b 45 fc cmp -0x4(%ebp),%eax -c01005b7: 7d 1f jge c01005d8 -c01005b9: 8b 55 fc mov -0x4(%ebp),%edx -c01005bc: 89 d0 mov %edx,%eax -c01005be: 01 c0 add %eax,%eax -c01005c0: 01 d0 add %edx,%eax -c01005c2: c1 e0 02 shl $0x2,%eax -c01005c5: 89 c2 mov %eax,%edx -c01005c7: 8b 45 08 mov 0x8(%ebp),%eax -c01005ca: 01 d0 add %edx,%eax -c01005cc: 0f b6 40 04 movzbl 0x4(%eax),%eax -c01005d0: 0f b6 c0 movzbl %al,%eax -c01005d3: 3b 45 14 cmp 0x14(%ebp),%eax -c01005d6: 75 d3 jne c01005ab - /* do nothing */; - *region_left = l; -c01005d8: 8b 45 0c mov 0xc(%ebp),%eax -c01005db: 8b 55 fc mov -0x4(%ebp),%edx -c01005de: 89 10 mov %edx,(%eax) - } -} -c01005e0: 90 nop -c01005e1: c9 leave -c01005e2: c3 ret - -c01005e3 : - * the specified instruction address, @addr. Returns 0 if information - * was found, and negative if not. But even if it returns negative it - * has stored some information into '*info'. - * */ -int -debuginfo_eip(uintptr_t addr, struct eipdebuginfo *info) { -c01005e3: 55 push %ebp -c01005e4: 89 e5 mov %esp,%ebp -c01005e6: 83 ec 38 sub $0x38,%esp - const struct stab *stabs, *stab_end; - const char *stabstr, *stabstr_end; - - info->eip_file = ""; -c01005e9: 8b 45 0c mov 0xc(%ebp),%eax -c01005ec: c7 00 e8 69 10 c0 movl $0xc01069e8,(%eax) - info->eip_line = 0; -c01005f2: 8b 45 0c mov 0xc(%ebp),%eax -c01005f5: c7 40 04 00 00 00 00 movl $0x0,0x4(%eax) - info->eip_fn_name = ""; -c01005fc: 8b 45 0c mov 0xc(%ebp),%eax -c01005ff: c7 40 08 e8 69 10 c0 movl $0xc01069e8,0x8(%eax) - info->eip_fn_namelen = 9; -c0100606: 8b 45 0c mov 0xc(%ebp),%eax -c0100609: c7 40 0c 09 00 00 00 movl $0x9,0xc(%eax) - info->eip_fn_addr = addr; -c0100610: 8b 45 0c mov 0xc(%ebp),%eax -c0100613: 8b 55 08 mov 0x8(%ebp),%edx -c0100616: 89 50 10 mov %edx,0x10(%eax) - info->eip_fn_narg = 0; -c0100619: 8b 45 0c mov 0xc(%ebp),%eax -c010061c: c7 40 14 00 00 00 00 movl $0x0,0x14(%eax) - - stabs = __STAB_BEGIN__; -c0100623: c7 45 f4 88 7f 10 c0 movl $0xc0107f88,-0xc(%ebp) - stab_end = __STAB_END__; -c010062a: c7 45 f0 4c 42 11 c0 movl $0xc011424c,-0x10(%ebp) - stabstr = __STABSTR_BEGIN__; -c0100631: c7 45 ec 4d 42 11 c0 movl $0xc011424d,-0x14(%ebp) - stabstr_end = __STABSTR_END__; -c0100638: c7 45 e8 a9 6f 11 c0 movl $0xc0116fa9,-0x18(%ebp) - - // String table validity checks - if (stabstr_end <= stabstr || stabstr_end[-1] != 0) { -c010063f: 8b 45 e8 mov -0x18(%ebp),%eax -c0100642: 3b 45 ec cmp -0x14(%ebp),%eax -c0100645: 76 0d jbe c0100654 -c0100647: 8b 45 e8 mov -0x18(%ebp),%eax -c010064a: 83 e8 01 sub $0x1,%eax -c010064d: 0f b6 00 movzbl (%eax),%eax -c0100650: 84 c0 test %al,%al -c0100652: 74 0a je c010065e - return -1; -c0100654: b8 ff ff ff ff mov $0xffffffff,%eax -c0100659: e9 91 02 00 00 jmp c01008ef - // 'eip'. First, we find the basic source file containing 'eip'. - // Then, we look in that source file for the function. Then we look - // for the line number. - - // Search the entire set of stabs for the source file (type N_SO). - int lfile = 0, rfile = (stab_end - stabs) - 1; -c010065e: c7 45 e4 00 00 00 00 movl $0x0,-0x1c(%ebp) -c0100665: 8b 55 f0 mov -0x10(%ebp),%edx -c0100668: 8b 45 f4 mov -0xc(%ebp),%eax -c010066b: 29 c2 sub %eax,%edx -c010066d: 89 d0 mov %edx,%eax -c010066f: c1 f8 02 sar $0x2,%eax -c0100672: 69 c0 ab aa aa aa imul $0xaaaaaaab,%eax,%eax -c0100678: 83 e8 01 sub $0x1,%eax -c010067b: 89 45 e0 mov %eax,-0x20(%ebp) - stab_binsearch(stabs, &lfile, &rfile, N_SO, addr); -c010067e: ff 75 08 pushl 0x8(%ebp) -c0100681: 6a 64 push $0x64 -c0100683: 8d 45 e0 lea -0x20(%ebp),%eax -c0100686: 50 push %eax -c0100687: 8d 45 e4 lea -0x1c(%ebp),%eax -c010068a: 50 push %eax -c010068b: ff 75 f4 pushl -0xc(%ebp) -c010068e: e8 f9 fd ff ff call c010048c -c0100693: 83 c4 14 add $0x14,%esp - if (lfile == 0) -c0100696: 8b 45 e4 mov -0x1c(%ebp),%eax -c0100699: 85 c0 test %eax,%eax -c010069b: 75 0a jne c01006a7 - return -1; -c010069d: b8 ff ff ff ff mov $0xffffffff,%eax -c01006a2: e9 48 02 00 00 jmp c01008ef - - // Search within that file's stabs for the function definition - // (N_FUN). - int lfun = lfile, rfun = rfile; -c01006a7: 8b 45 e4 mov -0x1c(%ebp),%eax -c01006aa: 89 45 dc mov %eax,-0x24(%ebp) -c01006ad: 8b 45 e0 mov -0x20(%ebp),%eax -c01006b0: 89 45 d8 mov %eax,-0x28(%ebp) - int lline, rline; - stab_binsearch(stabs, &lfun, &rfun, N_FUN, addr); -c01006b3: ff 75 08 pushl 0x8(%ebp) -c01006b6: 6a 24 push $0x24 -c01006b8: 8d 45 d8 lea -0x28(%ebp),%eax -c01006bb: 50 push %eax -c01006bc: 8d 45 dc lea -0x24(%ebp),%eax -c01006bf: 50 push %eax -c01006c0: ff 75 f4 pushl -0xc(%ebp) -c01006c3: e8 c4 fd ff ff call c010048c -c01006c8: 83 c4 14 add $0x14,%esp - - if (lfun <= rfun) { -c01006cb: 8b 55 dc mov -0x24(%ebp),%edx -c01006ce: 8b 45 d8 mov -0x28(%ebp),%eax -c01006d1: 39 c2 cmp %eax,%edx -c01006d3: 7f 7c jg c0100751 - // stabs[lfun] points to the function name - // in the string table, but check bounds just in case. - if (stabs[lfun].n_strx < stabstr_end - stabstr) { -c01006d5: 8b 45 dc mov -0x24(%ebp),%eax -c01006d8: 89 c2 mov %eax,%edx -c01006da: 89 d0 mov %edx,%eax -c01006dc: 01 c0 add %eax,%eax -c01006de: 01 d0 add %edx,%eax -c01006e0: c1 e0 02 shl $0x2,%eax -c01006e3: 89 c2 mov %eax,%edx -c01006e5: 8b 45 f4 mov -0xc(%ebp),%eax -c01006e8: 01 d0 add %edx,%eax -c01006ea: 8b 00 mov (%eax),%eax -c01006ec: 8b 4d e8 mov -0x18(%ebp),%ecx -c01006ef: 8b 55 ec mov -0x14(%ebp),%edx -c01006f2: 29 d1 sub %edx,%ecx -c01006f4: 89 ca mov %ecx,%edx -c01006f6: 39 d0 cmp %edx,%eax -c01006f8: 73 22 jae c010071c - info->eip_fn_name = stabstr + stabs[lfun].n_strx; -c01006fa: 8b 45 dc mov -0x24(%ebp),%eax -c01006fd: 89 c2 mov %eax,%edx -c01006ff: 89 d0 mov %edx,%eax -c0100701: 01 c0 add %eax,%eax -c0100703: 01 d0 add %edx,%eax -c0100705: c1 e0 02 shl $0x2,%eax -c0100708: 89 c2 mov %eax,%edx -c010070a: 8b 45 f4 mov -0xc(%ebp),%eax -c010070d: 01 d0 add %edx,%eax -c010070f: 8b 10 mov (%eax),%edx -c0100711: 8b 45 ec mov -0x14(%ebp),%eax -c0100714: 01 c2 add %eax,%edx -c0100716: 8b 45 0c mov 0xc(%ebp),%eax -c0100719: 89 50 08 mov %edx,0x8(%eax) - } - info->eip_fn_addr = stabs[lfun].n_value; -c010071c: 8b 45 dc mov -0x24(%ebp),%eax -c010071f: 89 c2 mov %eax,%edx -c0100721: 89 d0 mov %edx,%eax -c0100723: 01 c0 add %eax,%eax -c0100725: 01 d0 add %edx,%eax -c0100727: c1 e0 02 shl $0x2,%eax -c010072a: 89 c2 mov %eax,%edx -c010072c: 8b 45 f4 mov -0xc(%ebp),%eax -c010072f: 01 d0 add %edx,%eax -c0100731: 8b 50 08 mov 0x8(%eax),%edx -c0100734: 8b 45 0c mov 0xc(%ebp),%eax -c0100737: 89 50 10 mov %edx,0x10(%eax) - addr -= info->eip_fn_addr; -c010073a: 8b 45 0c mov 0xc(%ebp),%eax -c010073d: 8b 40 10 mov 0x10(%eax),%eax -c0100740: 29 45 08 sub %eax,0x8(%ebp) - // Search within the function definition for the line number. - lline = lfun; -c0100743: 8b 45 dc mov -0x24(%ebp),%eax -c0100746: 89 45 d4 mov %eax,-0x2c(%ebp) - rline = rfun; -c0100749: 8b 45 d8 mov -0x28(%ebp),%eax -c010074c: 89 45 d0 mov %eax,-0x30(%ebp) -c010074f: eb 15 jmp c0100766 - } else { - // Couldn't find function stab! Maybe we're in an assembly - // file. Search the whole file for the line number. - info->eip_fn_addr = addr; -c0100751: 8b 45 0c mov 0xc(%ebp),%eax -c0100754: 8b 55 08 mov 0x8(%ebp),%edx -c0100757: 89 50 10 mov %edx,0x10(%eax) - lline = lfile; -c010075a: 8b 45 e4 mov -0x1c(%ebp),%eax -c010075d: 89 45 d4 mov %eax,-0x2c(%ebp) - rline = rfile; -c0100760: 8b 45 e0 mov -0x20(%ebp),%eax -c0100763: 89 45 d0 mov %eax,-0x30(%ebp) - } - info->eip_fn_namelen = strfind(info->eip_fn_name, ':') - info->eip_fn_name; -c0100766: 8b 45 0c mov 0xc(%ebp),%eax -c0100769: 8b 40 08 mov 0x8(%eax),%eax -c010076c: 83 ec 08 sub $0x8,%esp -c010076f: 6a 3a push $0x3a -c0100771: 50 push %eax -c0100772: e8 64 58 00 00 call c0105fdb -c0100777: 83 c4 10 add $0x10,%esp -c010077a: 89 c2 mov %eax,%edx -c010077c: 8b 45 0c mov 0xc(%ebp),%eax -c010077f: 8b 40 08 mov 0x8(%eax),%eax -c0100782: 29 c2 sub %eax,%edx -c0100784: 8b 45 0c mov 0xc(%ebp),%eax -c0100787: 89 50 0c mov %edx,0xc(%eax) - - // Search within [lline, rline] for the line number stab. - // If found, set info->eip_line to the right line number. - // If not found, return -1. - stab_binsearch(stabs, &lline, &rline, N_SLINE, addr); -c010078a: 83 ec 0c sub $0xc,%esp -c010078d: ff 75 08 pushl 0x8(%ebp) -c0100790: 6a 44 push $0x44 -c0100792: 8d 45 d0 lea -0x30(%ebp),%eax -c0100795: 50 push %eax -c0100796: 8d 45 d4 lea -0x2c(%ebp),%eax -c0100799: 50 push %eax -c010079a: ff 75 f4 pushl -0xc(%ebp) -c010079d: e8 ea fc ff ff call c010048c -c01007a2: 83 c4 20 add $0x20,%esp - if (lline <= rline) { -c01007a5: 8b 55 d4 mov -0x2c(%ebp),%edx -c01007a8: 8b 45 d0 mov -0x30(%ebp),%eax -c01007ab: 39 c2 cmp %eax,%edx -c01007ad: 7f 24 jg c01007d3 - info->eip_line = stabs[rline].n_desc; -c01007af: 8b 45 d0 mov -0x30(%ebp),%eax -c01007b2: 89 c2 mov %eax,%edx -c01007b4: 89 d0 mov %edx,%eax -c01007b6: 01 c0 add %eax,%eax -c01007b8: 01 d0 add %edx,%eax -c01007ba: c1 e0 02 shl $0x2,%eax -c01007bd: 89 c2 mov %eax,%edx -c01007bf: 8b 45 f4 mov -0xc(%ebp),%eax -c01007c2: 01 d0 add %edx,%eax -c01007c4: 0f b7 40 06 movzwl 0x6(%eax),%eax -c01007c8: 0f b7 d0 movzwl %ax,%edx -c01007cb: 8b 45 0c mov 0xc(%ebp),%eax -c01007ce: 89 50 04 mov %edx,0x4(%eax) - - // Search backwards from the line number for the relevant filename stab. - // We can't just use the "lfile" stab because inlined functions - // can interpolate code from a different file! - // Such included source files use the N_SOL stab type. - while (lline >= lfile -c01007d1: eb 13 jmp c01007e6 - // If not found, return -1. - stab_binsearch(stabs, &lline, &rline, N_SLINE, addr); - if (lline <= rline) { - info->eip_line = stabs[rline].n_desc; - } else { - return -1; -c01007d3: b8 ff ff ff ff mov $0xffffffff,%eax -c01007d8: e9 12 01 00 00 jmp c01008ef - // can interpolate code from a different file! - // Such included source files use the N_SOL stab type. - while (lline >= lfile - && stabs[lline].n_type != N_SOL - && (stabs[lline].n_type != N_SO || !stabs[lline].n_value)) { - lline --; -c01007dd: 8b 45 d4 mov -0x2c(%ebp),%eax -c01007e0: 83 e8 01 sub $0x1,%eax -c01007e3: 89 45 d4 mov %eax,-0x2c(%ebp) - - // Search backwards from the line number for the relevant filename stab. - // We can't just use the "lfile" stab because inlined functions - // can interpolate code from a different file! - // Such included source files use the N_SOL stab type. - while (lline >= lfile -c01007e6: 8b 55 d4 mov -0x2c(%ebp),%edx -c01007e9: 8b 45 e4 mov -0x1c(%ebp),%eax -c01007ec: 39 c2 cmp %eax,%edx -c01007ee: 7c 56 jl c0100846 - && stabs[lline].n_type != N_SOL -c01007f0: 8b 45 d4 mov -0x2c(%ebp),%eax -c01007f3: 89 c2 mov %eax,%edx -c01007f5: 89 d0 mov %edx,%eax -c01007f7: 01 c0 add %eax,%eax -c01007f9: 01 d0 add %edx,%eax -c01007fb: c1 e0 02 shl $0x2,%eax -c01007fe: 89 c2 mov %eax,%edx -c0100800: 8b 45 f4 mov -0xc(%ebp),%eax -c0100803: 01 d0 add %edx,%eax -c0100805: 0f b6 40 04 movzbl 0x4(%eax),%eax -c0100809: 3c 84 cmp $0x84,%al -c010080b: 74 39 je c0100846 - && (stabs[lline].n_type != N_SO || !stabs[lline].n_value)) { -c010080d: 8b 45 d4 mov -0x2c(%ebp),%eax -c0100810: 89 c2 mov %eax,%edx -c0100812: 89 d0 mov %edx,%eax -c0100814: 01 c0 add %eax,%eax -c0100816: 01 d0 add %edx,%eax -c0100818: c1 e0 02 shl $0x2,%eax -c010081b: 89 c2 mov %eax,%edx -c010081d: 8b 45 f4 mov -0xc(%ebp),%eax -c0100820: 01 d0 add %edx,%eax -c0100822: 0f b6 40 04 movzbl 0x4(%eax),%eax -c0100826: 3c 64 cmp $0x64,%al -c0100828: 75 b3 jne c01007dd -c010082a: 8b 45 d4 mov -0x2c(%ebp),%eax -c010082d: 89 c2 mov %eax,%edx -c010082f: 89 d0 mov %edx,%eax -c0100831: 01 c0 add %eax,%eax -c0100833: 01 d0 add %edx,%eax -c0100835: c1 e0 02 shl $0x2,%eax -c0100838: 89 c2 mov %eax,%edx -c010083a: 8b 45 f4 mov -0xc(%ebp),%eax -c010083d: 01 d0 add %edx,%eax -c010083f: 8b 40 08 mov 0x8(%eax),%eax -c0100842: 85 c0 test %eax,%eax -c0100844: 74 97 je c01007dd - lline --; - } - if (lline >= lfile && stabs[lline].n_strx < stabstr_end - stabstr) { -c0100846: 8b 55 d4 mov -0x2c(%ebp),%edx -c0100849: 8b 45 e4 mov -0x1c(%ebp),%eax -c010084c: 39 c2 cmp %eax,%edx -c010084e: 7c 46 jl c0100896 -c0100850: 8b 45 d4 mov -0x2c(%ebp),%eax -c0100853: 89 c2 mov %eax,%edx -c0100855: 89 d0 mov %edx,%eax -c0100857: 01 c0 add %eax,%eax -c0100859: 01 d0 add %edx,%eax -c010085b: c1 e0 02 shl $0x2,%eax -c010085e: 89 c2 mov %eax,%edx -c0100860: 8b 45 f4 mov -0xc(%ebp),%eax -c0100863: 01 d0 add %edx,%eax -c0100865: 8b 00 mov (%eax),%eax -c0100867: 8b 4d e8 mov -0x18(%ebp),%ecx -c010086a: 8b 55 ec mov -0x14(%ebp),%edx -c010086d: 29 d1 sub %edx,%ecx -c010086f: 89 ca mov %ecx,%edx -c0100871: 39 d0 cmp %edx,%eax -c0100873: 73 21 jae c0100896 - info->eip_file = stabstr + stabs[lline].n_strx; -c0100875: 8b 45 d4 mov -0x2c(%ebp),%eax -c0100878: 89 c2 mov %eax,%edx -c010087a: 89 d0 mov %edx,%eax -c010087c: 01 c0 add %eax,%eax -c010087e: 01 d0 add %edx,%eax -c0100880: c1 e0 02 shl $0x2,%eax -c0100883: 89 c2 mov %eax,%edx -c0100885: 8b 45 f4 mov -0xc(%ebp),%eax -c0100888: 01 d0 add %edx,%eax -c010088a: 8b 10 mov (%eax),%edx -c010088c: 8b 45 ec mov -0x14(%ebp),%eax -c010088f: 01 c2 add %eax,%edx -c0100891: 8b 45 0c mov 0xc(%ebp),%eax -c0100894: 89 10 mov %edx,(%eax) - } - - // Set eip_fn_narg to the number of arguments taken by the function, - // or 0 if there was no containing function. - if (lfun < rfun) { -c0100896: 8b 55 dc mov -0x24(%ebp),%edx -c0100899: 8b 45 d8 mov -0x28(%ebp),%eax -c010089c: 39 c2 cmp %eax,%edx -c010089e: 7d 4a jge c01008ea - for (lline = lfun + 1; -c01008a0: 8b 45 dc mov -0x24(%ebp),%eax -c01008a3: 83 c0 01 add $0x1,%eax -c01008a6: 89 45 d4 mov %eax,-0x2c(%ebp) -c01008a9: eb 18 jmp c01008c3 - lline < rfun && stabs[lline].n_type == N_PSYM; - lline ++) { - info->eip_fn_narg ++; -c01008ab: 8b 45 0c mov 0xc(%ebp),%eax -c01008ae: 8b 40 14 mov 0x14(%eax),%eax -c01008b1: 8d 50 01 lea 0x1(%eax),%edx -c01008b4: 8b 45 0c mov 0xc(%ebp),%eax -c01008b7: 89 50 14 mov %edx,0x14(%eax) - // Set eip_fn_narg to the number of arguments taken by the function, - // or 0 if there was no containing function. - if (lfun < rfun) { - for (lline = lfun + 1; - lline < rfun && stabs[lline].n_type == N_PSYM; - lline ++) { -c01008ba: 8b 45 d4 mov -0x2c(%ebp),%eax -c01008bd: 83 c0 01 add $0x1,%eax -c01008c0: 89 45 d4 mov %eax,-0x2c(%ebp) - - // Set eip_fn_narg to the number of arguments taken by the function, - // or 0 if there was no containing function. - if (lfun < rfun) { - for (lline = lfun + 1; - lline < rfun && stabs[lline].n_type == N_PSYM; -c01008c3: 8b 55 d4 mov -0x2c(%ebp),%edx -c01008c6: 8b 45 d8 mov -0x28(%ebp),%eax - } - - // Set eip_fn_narg to the number of arguments taken by the function, - // or 0 if there was no containing function. - if (lfun < rfun) { - for (lline = lfun + 1; -c01008c9: 39 c2 cmp %eax,%edx -c01008cb: 7d 1d jge c01008ea - lline < rfun && stabs[lline].n_type == N_PSYM; -c01008cd: 8b 45 d4 mov -0x2c(%ebp),%eax -c01008d0: 89 c2 mov %eax,%edx -c01008d2: 89 d0 mov %edx,%eax -c01008d4: 01 c0 add %eax,%eax -c01008d6: 01 d0 add %edx,%eax -c01008d8: c1 e0 02 shl $0x2,%eax -c01008db: 89 c2 mov %eax,%edx -c01008dd: 8b 45 f4 mov -0xc(%ebp),%eax -c01008e0: 01 d0 add %edx,%eax -c01008e2: 0f b6 40 04 movzbl 0x4(%eax),%eax -c01008e6: 3c a0 cmp $0xa0,%al -c01008e8: 74 c1 je c01008ab - lline ++) { - info->eip_fn_narg ++; - } - } - return 0; -c01008ea: b8 00 00 00 00 mov $0x0,%eax -} -c01008ef: c9 leave -c01008f0: c3 ret - -c01008f1 : - * print_kerninfo - print the information about kernel, including the location - * of kernel entry, the start addresses of data and text segements, the start - * address of free memory and how many memory that kernel has used. - * */ -void -print_kerninfo(void) { -c01008f1: 55 push %ebp -c01008f2: 89 e5 mov %esp,%ebp -c01008f4: 83 ec 08 sub $0x8,%esp - extern char etext[], edata[], end[], kern_init[]; - cprintf("Special kernel symbols:\n"); -c01008f7: 83 ec 0c sub $0xc,%esp -c01008fa: 68 f2 69 10 c0 push $0xc01069f2 -c01008ff: e8 63 f9 ff ff call c0100267 -c0100904: 83 c4 10 add $0x10,%esp - cprintf(" entry 0x%08x (phys)\n", kern_init); -c0100907: 83 ec 08 sub $0x8,%esp -c010090a: 68 2a 00 10 c0 push $0xc010002a -c010090f: 68 0b 6a 10 c0 push $0xc0106a0b -c0100914: e8 4e f9 ff ff call c0100267 -c0100919: 83 c4 10 add $0x10,%esp - cprintf(" etext 0x%08x (phys)\n", etext); -c010091c: 83 ec 08 sub $0x8,%esp -c010091f: 68 fe 68 10 c0 push $0xc01068fe -c0100924: 68 23 6a 10 c0 push $0xc0106a23 -c0100929: e8 39 f9 ff ff call c0100267 -c010092e: 83 c4 10 add $0x10,%esp - cprintf(" edata 0x%08x (phys)\n", edata); -c0100931: 83 ec 08 sub $0x8,%esp -c0100934: 68 36 9a 11 c0 push $0xc0119a36 -c0100939: 68 3b 6a 10 c0 push $0xc0106a3b -c010093e: e8 24 f9 ff ff call c0100267 -c0100943: 83 c4 10 add $0x10,%esp - cprintf(" end 0x%08x (phys)\n", end); -c0100946: 83 ec 08 sub $0x8,%esp -c0100949: 68 74 a9 11 c0 push $0xc011a974 -c010094e: 68 53 6a 10 c0 push $0xc0106a53 -c0100953: e8 0f f9 ff ff call c0100267 -c0100958: 83 c4 10 add $0x10,%esp - cprintf("Kernel executable memory footprint: %dKB\n", (end - kern_init + 1023)/1024); -c010095b: b8 74 a9 11 c0 mov $0xc011a974,%eax -c0100960: 05 ff 03 00 00 add $0x3ff,%eax -c0100965: ba 2a 00 10 c0 mov $0xc010002a,%edx -c010096a: 29 d0 sub %edx,%eax -c010096c: 8d 90 ff 03 00 00 lea 0x3ff(%eax),%edx -c0100972: 85 c0 test %eax,%eax -c0100974: 0f 48 c2 cmovs %edx,%eax -c0100977: c1 f8 0a sar $0xa,%eax -c010097a: 83 ec 08 sub $0x8,%esp -c010097d: 50 push %eax -c010097e: 68 6c 6a 10 c0 push $0xc0106a6c -c0100983: e8 df f8 ff ff call c0100267 -c0100988: 83 c4 10 add $0x10,%esp -} -c010098b: 90 nop -c010098c: c9 leave -c010098d: c3 ret - -c010098e : -/* * - * print_debuginfo - read and print the stat information for the address @eip, - * and info.eip_fn_addr should be the first address of the related function. - * */ -void -print_debuginfo(uintptr_t eip) { -c010098e: 55 push %ebp -c010098f: 89 e5 mov %esp,%ebp -c0100991: 81 ec 28 01 00 00 sub $0x128,%esp - struct eipdebuginfo info; - if (debuginfo_eip(eip, &info) != 0) { -c0100997: 83 ec 08 sub $0x8,%esp -c010099a: 8d 45 dc lea -0x24(%ebp),%eax -c010099d: 50 push %eax -c010099e: ff 75 08 pushl 0x8(%ebp) -c01009a1: e8 3d fc ff ff call c01005e3 -c01009a6: 83 c4 10 add $0x10,%esp -c01009a9: 85 c0 test %eax,%eax -c01009ab: 74 15 je c01009c2 - cprintf(" : -- 0x%08x --\n", eip); -c01009ad: 83 ec 08 sub $0x8,%esp -c01009b0: ff 75 08 pushl 0x8(%ebp) -c01009b3: 68 96 6a 10 c0 push $0xc0106a96 -c01009b8: e8 aa f8 ff ff call c0100267 -c01009bd: 83 c4 10 add $0x10,%esp - } - fnname[j] = '\0'; - cprintf(" %s:%d: %s+%d\n", info.eip_file, info.eip_line, - fnname, eip - info.eip_fn_addr); - } -} -c01009c0: eb 65 jmp c0100a27 - cprintf(" : -- 0x%08x --\n", eip); - } - else { - char fnname[256]; - int j; - for (j = 0; j < info.eip_fn_namelen; j ++) { -c01009c2: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) -c01009c9: eb 1c jmp c01009e7 - fnname[j] = info.eip_fn_name[j]; -c01009cb: 8b 55 e4 mov -0x1c(%ebp),%edx -c01009ce: 8b 45 f4 mov -0xc(%ebp),%eax -c01009d1: 01 d0 add %edx,%eax -c01009d3: 0f b6 00 movzbl (%eax),%eax -c01009d6: 8d 8d dc fe ff ff lea -0x124(%ebp),%ecx -c01009dc: 8b 55 f4 mov -0xc(%ebp),%edx -c01009df: 01 ca add %ecx,%edx -c01009e1: 88 02 mov %al,(%edx) - cprintf(" : -- 0x%08x --\n", eip); - } - else { - char fnname[256]; - int j; - for (j = 0; j < info.eip_fn_namelen; j ++) { -c01009e3: 83 45 f4 01 addl $0x1,-0xc(%ebp) -c01009e7: 8b 45 e8 mov -0x18(%ebp),%eax -c01009ea: 3b 45 f4 cmp -0xc(%ebp),%eax -c01009ed: 7f dc jg c01009cb - fnname[j] = info.eip_fn_name[j]; - } - fnname[j] = '\0'; -c01009ef: 8d 95 dc fe ff ff lea -0x124(%ebp),%edx -c01009f5: 8b 45 f4 mov -0xc(%ebp),%eax -c01009f8: 01 d0 add %edx,%eax -c01009fa: c6 00 00 movb $0x0,(%eax) - cprintf(" %s:%d: %s+%d\n", info.eip_file, info.eip_line, - fnname, eip - info.eip_fn_addr); -c01009fd: 8b 45 ec mov -0x14(%ebp),%eax - int j; - for (j = 0; j < info.eip_fn_namelen; j ++) { - fnname[j] = info.eip_fn_name[j]; - } - fnname[j] = '\0'; - cprintf(" %s:%d: %s+%d\n", info.eip_file, info.eip_line, -c0100a00: 8b 55 08 mov 0x8(%ebp),%edx -c0100a03: 89 d1 mov %edx,%ecx -c0100a05: 29 c1 sub %eax,%ecx -c0100a07: 8b 55 e0 mov -0x20(%ebp),%edx -c0100a0a: 8b 45 dc mov -0x24(%ebp),%eax -c0100a0d: 83 ec 0c sub $0xc,%esp -c0100a10: 51 push %ecx -c0100a11: 8d 8d dc fe ff ff lea -0x124(%ebp),%ecx -c0100a17: 51 push %ecx -c0100a18: 52 push %edx -c0100a19: 50 push %eax -c0100a1a: 68 b2 6a 10 c0 push $0xc0106ab2 -c0100a1f: e8 43 f8 ff ff call c0100267 -c0100a24: 83 c4 20 add $0x20,%esp - fnname, eip - info.eip_fn_addr); - } -} -c0100a27: 90 nop -c0100a28: c9 leave -c0100a29: c3 ret - -c0100a2a : - -static __noinline uint32_t -read_eip(void) { -c0100a2a: 55 push %ebp -c0100a2b: 89 e5 mov %esp,%ebp -c0100a2d: 83 ec 10 sub $0x10,%esp - uint32_t eip; - asm volatile("movl 4(%%ebp), %0" : "=r" (eip)); -c0100a30: 8b 45 04 mov 0x4(%ebp),%eax -c0100a33: 89 45 fc mov %eax,-0x4(%ebp) - return eip; -c0100a36: 8b 45 fc mov -0x4(%ebp),%eax -} -c0100a39: c9 leave -c0100a3a: c3 ret - -c0100a3b : - * - * Note that, the length of ebp-chain is limited. In boot/bootasm.S, before jumping - * to the kernel entry, the value of ebp has been set to zero, that's the boundary. - * */ -void -print_stackframe(void) { -c0100a3b: 55 push %ebp -c0100a3c: 89 e5 mov %esp,%ebp -c0100a3e: 83 ec 28 sub $0x28,%esp -} - -static inline uint32_t -read_ebp(void) { - uint32_t ebp; - asm volatile ("movl %%ebp, %0" : "=r" (ebp)); -c0100a41: 89 e8 mov %ebp,%eax -c0100a43: 89 45 e4 mov %eax,-0x1c(%ebp) - return ebp; -c0100a46: 8b 45 e4 mov -0x1c(%ebp),%eax - * (3.4) call print_debuginfo(eip-1) to print the C calling function name and line number, etc. - * (3.5) popup a calling stackframe - * NOTICE: the calling funciton's return addr eip = ss:[ebp+4] - * the calling funciton's ebp = ss:[ebp] - */ - uint32_t current_ebp = read_ebp(); -c0100a49: 89 45 f4 mov %eax,-0xc(%ebp) - uint32_t current_eip = read_eip(); -c0100a4c: e8 d9 ff ff ff call c0100a2a -c0100a51: 89 45 f0 mov %eax,-0x10(%ebp) - for (int i = 0; i < STACKFRAME_DEPTH && current_ebp != 0; ++ i) { -c0100a54: c7 45 ec 00 00 00 00 movl $0x0,-0x14(%ebp) -c0100a5b: e9 87 00 00 00 jmp c0100ae7 - cprintf("ebp:0x%08x eip:0x%08x args:", current_ebp, current_eip); -c0100a60: 83 ec 04 sub $0x4,%esp -c0100a63: ff 75 f0 pushl -0x10(%ebp) -c0100a66: ff 75 f4 pushl -0xc(%ebp) -c0100a69: 68 c4 6a 10 c0 push $0xc0106ac4 -c0100a6e: e8 f4 f7 ff ff call c0100267 -c0100a73: 83 c4 10 add $0x10,%esp - for (int argi = 0; argi < 4; ++ argi) { -c0100a76: c7 45 e8 00 00 00 00 movl $0x0,-0x18(%ebp) -c0100a7d: eb 29 jmp c0100aa8 - cprintf("0x%08x ", *((uint32_t*) current_ebp + 2 + argi)); -c0100a7f: 8b 45 e8 mov -0x18(%ebp),%eax -c0100a82: 8d 14 85 00 00 00 00 lea 0x0(,%eax,4),%edx -c0100a89: 8b 45 f4 mov -0xc(%ebp),%eax -c0100a8c: 01 d0 add %edx,%eax -c0100a8e: 83 c0 08 add $0x8,%eax -c0100a91: 8b 00 mov (%eax),%eax -c0100a93: 83 ec 08 sub $0x8,%esp -c0100a96: 50 push %eax -c0100a97: 68 e0 6a 10 c0 push $0xc0106ae0 -c0100a9c: e8 c6 f7 ff ff call c0100267 -c0100aa1: 83 c4 10 add $0x10,%esp - */ - uint32_t current_ebp = read_ebp(); - uint32_t current_eip = read_eip(); - for (int i = 0; i < STACKFRAME_DEPTH && current_ebp != 0; ++ i) { - cprintf("ebp:0x%08x eip:0x%08x args:", current_ebp, current_eip); - for (int argi = 0; argi < 4; ++ argi) { -c0100aa4: 83 45 e8 01 addl $0x1,-0x18(%ebp) -c0100aa8: 83 7d e8 03 cmpl $0x3,-0x18(%ebp) -c0100aac: 7e d1 jle c0100a7f - cprintf("0x%08x ", *((uint32_t*) current_ebp + 2 + argi)); - } - cprintf("\n"); -c0100aae: 83 ec 0c sub $0xc,%esp -c0100ab1: 68 e8 6a 10 c0 push $0xc0106ae8 -c0100ab6: e8 ac f7 ff ff call c0100267 -c0100abb: 83 c4 10 add $0x10,%esp - print_debuginfo(current_eip - 1); -c0100abe: 8b 45 f0 mov -0x10(%ebp),%eax -c0100ac1: 83 e8 01 sub $0x1,%eax -c0100ac4: 83 ec 0c sub $0xc,%esp -c0100ac7: 50 push %eax -c0100ac8: e8 c1 fe ff ff call c010098e -c0100acd: 83 c4 10 add $0x10,%esp - current_eip = *((uint32_t*)current_ebp + 1); -c0100ad0: 8b 45 f4 mov -0xc(%ebp),%eax -c0100ad3: 83 c0 04 add $0x4,%eax -c0100ad6: 8b 00 mov (%eax),%eax -c0100ad8: 89 45 f0 mov %eax,-0x10(%ebp) - current_ebp = *((uint32_t*)current_ebp); -c0100adb: 8b 45 f4 mov -0xc(%ebp),%eax -c0100ade: 8b 00 mov (%eax),%eax -c0100ae0: 89 45 f4 mov %eax,-0xc(%ebp) - * NOTICE: the calling funciton's return addr eip = ss:[ebp+4] - * the calling funciton's ebp = ss:[ebp] - */ - uint32_t current_ebp = read_ebp(); - uint32_t current_eip = read_eip(); - for (int i = 0; i < STACKFRAME_DEPTH && current_ebp != 0; ++ i) { -c0100ae3: 83 45 ec 01 addl $0x1,-0x14(%ebp) -c0100ae7: 83 7d ec 13 cmpl $0x13,-0x14(%ebp) -c0100aeb: 7f 0a jg c0100af7 -c0100aed: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c0100af1: 0f 85 69 ff ff ff jne c0100a60 - cprintf("\n"); - print_debuginfo(current_eip - 1); - current_eip = *((uint32_t*)current_ebp + 1); - current_ebp = *((uint32_t*)current_ebp); - } -} -c0100af7: 90 nop -c0100af8: c9 leave -c0100af9: c3 ret - -c0100afa : -#define MAXARGS 16 -#define WHITESPACE " \t\n\r" - -/* parse - parse the command buffer into whitespace-separated arguments */ -static int -parse(char *buf, char **argv) { -c0100afa: 55 push %ebp -c0100afb: 89 e5 mov %esp,%ebp -c0100afd: 83 ec 18 sub $0x18,%esp - int argc = 0; -c0100b00: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - while (1) { - // find global whitespace - while (*buf != '\0' && strchr(WHITESPACE, *buf) != NULL) { -c0100b07: eb 0c jmp c0100b15 - *buf ++ = '\0'; -c0100b09: 8b 45 08 mov 0x8(%ebp),%eax -c0100b0c: 8d 50 01 lea 0x1(%eax),%edx -c0100b0f: 89 55 08 mov %edx,0x8(%ebp) -c0100b12: c6 00 00 movb $0x0,(%eax) -static int -parse(char *buf, char **argv) { - int argc = 0; - while (1) { - // find global whitespace - while (*buf != '\0' && strchr(WHITESPACE, *buf) != NULL) { -c0100b15: 8b 45 08 mov 0x8(%ebp),%eax -c0100b18: 0f b6 00 movzbl (%eax),%eax -c0100b1b: 84 c0 test %al,%al -c0100b1d: 74 1e je c0100b3d -c0100b1f: 8b 45 08 mov 0x8(%ebp),%eax -c0100b22: 0f b6 00 movzbl (%eax),%eax -c0100b25: 0f be c0 movsbl %al,%eax -c0100b28: 83 ec 08 sub $0x8,%esp -c0100b2b: 50 push %eax -c0100b2c: 68 6c 6b 10 c0 push $0xc0106b6c -c0100b31: e8 72 54 00 00 call c0105fa8 -c0100b36: 83 c4 10 add $0x10,%esp -c0100b39: 85 c0 test %eax,%eax -c0100b3b: 75 cc jne c0100b09 - *buf ++ = '\0'; - } - if (*buf == '\0') { -c0100b3d: 8b 45 08 mov 0x8(%ebp),%eax -c0100b40: 0f b6 00 movzbl (%eax),%eax -c0100b43: 84 c0 test %al,%al -c0100b45: 74 69 je c0100bb0 - break; - } - - // save and scan past next arg - if (argc == MAXARGS - 1) { -c0100b47: 83 7d f4 0f cmpl $0xf,-0xc(%ebp) -c0100b4b: 75 12 jne c0100b5f - cprintf("Too many arguments (max %d).\n", MAXARGS); -c0100b4d: 83 ec 08 sub $0x8,%esp -c0100b50: 6a 10 push $0x10 -c0100b52: 68 71 6b 10 c0 push $0xc0106b71 -c0100b57: e8 0b f7 ff ff call c0100267 -c0100b5c: 83 c4 10 add $0x10,%esp - } - argv[argc ++] = buf; -c0100b5f: 8b 45 f4 mov -0xc(%ebp),%eax -c0100b62: 8d 50 01 lea 0x1(%eax),%edx -c0100b65: 89 55 f4 mov %edx,-0xc(%ebp) -c0100b68: 8d 14 85 00 00 00 00 lea 0x0(,%eax,4),%edx -c0100b6f: 8b 45 0c mov 0xc(%ebp),%eax -c0100b72: 01 c2 add %eax,%edx -c0100b74: 8b 45 08 mov 0x8(%ebp),%eax -c0100b77: 89 02 mov %eax,(%edx) - while (*buf != '\0' && strchr(WHITESPACE, *buf) == NULL) { -c0100b79: eb 04 jmp c0100b7f - buf ++; -c0100b7b: 83 45 08 01 addl $0x1,0x8(%ebp) - // save and scan past next arg - if (argc == MAXARGS - 1) { - cprintf("Too many arguments (max %d).\n", MAXARGS); - } - argv[argc ++] = buf; - while (*buf != '\0' && strchr(WHITESPACE, *buf) == NULL) { -c0100b7f: 8b 45 08 mov 0x8(%ebp),%eax -c0100b82: 0f b6 00 movzbl (%eax),%eax -c0100b85: 84 c0 test %al,%al -c0100b87: 0f 84 7a ff ff ff je c0100b07 -c0100b8d: 8b 45 08 mov 0x8(%ebp),%eax -c0100b90: 0f b6 00 movzbl (%eax),%eax -c0100b93: 0f be c0 movsbl %al,%eax -c0100b96: 83 ec 08 sub $0x8,%esp -c0100b99: 50 push %eax -c0100b9a: 68 6c 6b 10 c0 push $0xc0106b6c -c0100b9f: e8 04 54 00 00 call c0105fa8 -c0100ba4: 83 c4 10 add $0x10,%esp -c0100ba7: 85 c0 test %eax,%eax -c0100ba9: 74 d0 je c0100b7b - buf ++; - } - } -c0100bab: e9 57 ff ff ff jmp c0100b07 - // find global whitespace - while (*buf != '\0' && strchr(WHITESPACE, *buf) != NULL) { - *buf ++ = '\0'; - } - if (*buf == '\0') { - break; -c0100bb0: 90 nop - argv[argc ++] = buf; - while (*buf != '\0' && strchr(WHITESPACE, *buf) == NULL) { - buf ++; - } - } - return argc; -c0100bb1: 8b 45 f4 mov -0xc(%ebp),%eax -} -c0100bb4: c9 leave -c0100bb5: c3 ret - -c0100bb6 : -/* * - * runcmd - parse the input string, split it into separated arguments - * and then lookup and invoke some related commands/ - * */ -static int -runcmd(char *buf, struct trapframe *tf) { -c0100bb6: 55 push %ebp -c0100bb7: 89 e5 mov %esp,%ebp -c0100bb9: 83 ec 58 sub $0x58,%esp - char *argv[MAXARGS]; - int argc = parse(buf, argv); -c0100bbc: 83 ec 08 sub $0x8,%esp -c0100bbf: 8d 45 b0 lea -0x50(%ebp),%eax -c0100bc2: 50 push %eax -c0100bc3: ff 75 08 pushl 0x8(%ebp) -c0100bc6: e8 2f ff ff ff call c0100afa -c0100bcb: 83 c4 10 add $0x10,%esp -c0100bce: 89 45 f0 mov %eax,-0x10(%ebp) - if (argc == 0) { -c0100bd1: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) -c0100bd5: 75 0a jne c0100be1 - return 0; -c0100bd7: b8 00 00 00 00 mov $0x0,%eax -c0100bdc: e9 83 00 00 00 jmp c0100c64 - } - int i; - for (i = 0; i < NCOMMANDS; i ++) { -c0100be1: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) -c0100be8: eb 59 jmp c0100c43 - if (strcmp(commands[i].name, argv[0]) == 0) { -c0100bea: 8b 4d b0 mov -0x50(%ebp),%ecx -c0100bed: 8b 55 f4 mov -0xc(%ebp),%edx -c0100bf0: 89 d0 mov %edx,%eax -c0100bf2: 01 c0 add %eax,%eax -c0100bf4: 01 d0 add %edx,%eax -c0100bf6: c1 e0 02 shl $0x2,%eax -c0100bf9: 05 20 90 11 c0 add $0xc0119020,%eax -c0100bfe: 8b 00 mov (%eax),%eax -c0100c00: 83 ec 08 sub $0x8,%esp -c0100c03: 51 push %ecx -c0100c04: 50 push %eax -c0100c05: e8 fe 52 00 00 call c0105f08 -c0100c0a: 83 c4 10 add $0x10,%esp -c0100c0d: 85 c0 test %eax,%eax -c0100c0f: 75 2e jne c0100c3f - return commands[i].func(argc - 1, argv + 1, tf); -c0100c11: 8b 55 f4 mov -0xc(%ebp),%edx -c0100c14: 89 d0 mov %edx,%eax -c0100c16: 01 c0 add %eax,%eax -c0100c18: 01 d0 add %edx,%eax -c0100c1a: c1 e0 02 shl $0x2,%eax -c0100c1d: 05 28 90 11 c0 add $0xc0119028,%eax -c0100c22: 8b 10 mov (%eax),%edx -c0100c24: 8d 45 b0 lea -0x50(%ebp),%eax -c0100c27: 83 c0 04 add $0x4,%eax -c0100c2a: 8b 4d f0 mov -0x10(%ebp),%ecx -c0100c2d: 83 e9 01 sub $0x1,%ecx -c0100c30: 83 ec 04 sub $0x4,%esp -c0100c33: ff 75 0c pushl 0xc(%ebp) -c0100c36: 50 push %eax -c0100c37: 51 push %ecx -c0100c38: ff d2 call *%edx -c0100c3a: 83 c4 10 add $0x10,%esp -c0100c3d: eb 25 jmp c0100c64 - int argc = parse(buf, argv); - if (argc == 0) { - return 0; - } - int i; - for (i = 0; i < NCOMMANDS; i ++) { -c0100c3f: 83 45 f4 01 addl $0x1,-0xc(%ebp) -c0100c43: 8b 45 f4 mov -0xc(%ebp),%eax -c0100c46: 83 f8 02 cmp $0x2,%eax -c0100c49: 76 9f jbe c0100bea - if (strcmp(commands[i].name, argv[0]) == 0) { - return commands[i].func(argc - 1, argv + 1, tf); - } - } - cprintf("Unknown command '%s'\n", argv[0]); -c0100c4b: 8b 45 b0 mov -0x50(%ebp),%eax -c0100c4e: 83 ec 08 sub $0x8,%esp -c0100c51: 50 push %eax -c0100c52: 68 8f 6b 10 c0 push $0xc0106b8f -c0100c57: e8 0b f6 ff ff call c0100267 -c0100c5c: 83 c4 10 add $0x10,%esp - return 0; -c0100c5f: b8 00 00 00 00 mov $0x0,%eax -} -c0100c64: c9 leave -c0100c65: c3 ret - -c0100c66 : - -/***** Implementations of basic kernel monitor commands *****/ - -void -kmonitor(struct trapframe *tf) { -c0100c66: 55 push %ebp -c0100c67: 89 e5 mov %esp,%ebp -c0100c69: 83 ec 18 sub $0x18,%esp - cprintf("Welcome to the kernel debug monitor!!\n"); -c0100c6c: 83 ec 0c sub $0xc,%esp -c0100c6f: 68 a8 6b 10 c0 push $0xc0106ba8 -c0100c74: e8 ee f5 ff ff call c0100267 -c0100c79: 83 c4 10 add $0x10,%esp - cprintf("Type 'help' for a list of commands.\n"); -c0100c7c: 83 ec 0c sub $0xc,%esp -c0100c7f: 68 d0 6b 10 c0 push $0xc0106bd0 -c0100c84: e8 de f5 ff ff call c0100267 -c0100c89: 83 c4 10 add $0x10,%esp - - if (tf != NULL) { -c0100c8c: 83 7d 08 00 cmpl $0x0,0x8(%ebp) -c0100c90: 74 0e je c0100ca0 - print_trapframe(tf); -c0100c92: 83 ec 0c sub $0xc,%esp -c0100c95: ff 75 08 pushl 0x8(%ebp) -c0100c98: e8 14 0e 00 00 call c0101ab1 -c0100c9d: 83 c4 10 add $0x10,%esp - } - - char *buf; - while (1) { - if ((buf = readline("K> ")) != NULL) { -c0100ca0: 83 ec 0c sub $0xc,%esp -c0100ca3: 68 f5 6b 10 c0 push $0xc0106bf5 -c0100ca8: e8 5e f6 ff ff call c010030b -c0100cad: 83 c4 10 add $0x10,%esp -c0100cb0: 89 45 f4 mov %eax,-0xc(%ebp) -c0100cb3: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c0100cb7: 74 e7 je c0100ca0 - if (runcmd(buf, tf) < 0) { -c0100cb9: 83 ec 08 sub $0x8,%esp -c0100cbc: ff 75 08 pushl 0x8(%ebp) -c0100cbf: ff 75 f4 pushl -0xc(%ebp) -c0100cc2: e8 ef fe ff ff call c0100bb6 -c0100cc7: 83 c4 10 add $0x10,%esp -c0100cca: 85 c0 test %eax,%eax -c0100ccc: 78 02 js c0100cd0 - break; - } - } - } -c0100cce: eb d0 jmp c0100ca0 - - char *buf; - while (1) { - if ((buf = readline("K> ")) != NULL) { - if (runcmd(buf, tf) < 0) { - break; -c0100cd0: 90 nop - } - } - } -} -c0100cd1: 90 nop -c0100cd2: c9 leave -c0100cd3: c3 ret - -c0100cd4 : - -/* mon_help - print the information about mon_* functions */ -int -mon_help(int argc, char **argv, struct trapframe *tf) { -c0100cd4: 55 push %ebp -c0100cd5: 89 e5 mov %esp,%ebp -c0100cd7: 83 ec 18 sub $0x18,%esp - int i; - for (i = 0; i < NCOMMANDS; i ++) { -c0100cda: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) -c0100ce1: eb 3c jmp c0100d1f - cprintf("%s - %s\n", commands[i].name, commands[i].desc); -c0100ce3: 8b 55 f4 mov -0xc(%ebp),%edx -c0100ce6: 89 d0 mov %edx,%eax -c0100ce8: 01 c0 add %eax,%eax -c0100cea: 01 d0 add %edx,%eax -c0100cec: c1 e0 02 shl $0x2,%eax -c0100cef: 05 24 90 11 c0 add $0xc0119024,%eax -c0100cf4: 8b 08 mov (%eax),%ecx -c0100cf6: 8b 55 f4 mov -0xc(%ebp),%edx -c0100cf9: 89 d0 mov %edx,%eax -c0100cfb: 01 c0 add %eax,%eax -c0100cfd: 01 d0 add %edx,%eax -c0100cff: c1 e0 02 shl $0x2,%eax -c0100d02: 05 20 90 11 c0 add $0xc0119020,%eax -c0100d07: 8b 00 mov (%eax),%eax -c0100d09: 83 ec 04 sub $0x4,%esp -c0100d0c: 51 push %ecx -c0100d0d: 50 push %eax -c0100d0e: 68 f9 6b 10 c0 push $0xc0106bf9 -c0100d13: e8 4f f5 ff ff call c0100267 -c0100d18: 83 c4 10 add $0x10,%esp - -/* mon_help - print the information about mon_* functions */ -int -mon_help(int argc, char **argv, struct trapframe *tf) { - int i; - for (i = 0; i < NCOMMANDS; i ++) { -c0100d1b: 83 45 f4 01 addl $0x1,-0xc(%ebp) -c0100d1f: 8b 45 f4 mov -0xc(%ebp),%eax -c0100d22: 83 f8 02 cmp $0x2,%eax -c0100d25: 76 bc jbe c0100ce3 - cprintf("%s - %s\n", commands[i].name, commands[i].desc); - } - return 0; -c0100d27: b8 00 00 00 00 mov $0x0,%eax -} -c0100d2c: c9 leave -c0100d2d: c3 ret - -c0100d2e : -/* * - * mon_kerninfo - call print_kerninfo in kern/debug/kdebug.c to - * print the memory occupancy in kernel. - * */ -int -mon_kerninfo(int argc, char **argv, struct trapframe *tf) { -c0100d2e: 55 push %ebp -c0100d2f: 89 e5 mov %esp,%ebp -c0100d31: 83 ec 08 sub $0x8,%esp - print_kerninfo(); -c0100d34: e8 b8 fb ff ff call c01008f1 - return 0; -c0100d39: b8 00 00 00 00 mov $0x0,%eax -} -c0100d3e: c9 leave -c0100d3f: c3 ret - -c0100d40 : -/* * - * mon_backtrace - call print_stackframe in kern/debug/kdebug.c to - * print a backtrace of the stack. - * */ -int -mon_backtrace(int argc, char **argv, struct trapframe *tf) { -c0100d40: 55 push %ebp -c0100d41: 89 e5 mov %esp,%ebp -c0100d43: 83 ec 08 sub $0x8,%esp - print_stackframe(); -c0100d46: e8 f0 fc ff ff call c0100a3b - return 0; -c0100d4b: b8 00 00 00 00 mov $0x0,%eax -} -c0100d50: c9 leave -c0100d51: c3 ret - -c0100d52 : -/* * - * clock_init - initialize 8253 clock to interrupt 100 times per second, - * and then enable IRQ_TIMER. - * */ -void -clock_init(void) { -c0100d52: 55 push %ebp -c0100d53: 89 e5 mov %esp,%ebp -c0100d55: 83 ec 18 sub $0x18,%esp -c0100d58: 66 c7 45 f6 43 00 movw $0x43,-0xa(%ebp) -c0100d5e: c6 45 ef 34 movb $0x34,-0x11(%ebp) - : "memory", "cc"); -} - -static inline void -outb(uint16_t port, uint8_t data) { - asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); -c0100d62: 0f b6 45 ef movzbl -0x11(%ebp),%eax -c0100d66: 0f b7 55 f6 movzwl -0xa(%ebp),%edx -c0100d6a: ee out %al,(%dx) -c0100d6b: 66 c7 45 f4 40 00 movw $0x40,-0xc(%ebp) -c0100d71: c6 45 f0 9c movb $0x9c,-0x10(%ebp) -c0100d75: 0f b6 45 f0 movzbl -0x10(%ebp),%eax -c0100d79: 0f b7 55 f4 movzwl -0xc(%ebp),%edx -c0100d7d: ee out %al,(%dx) -c0100d7e: 66 c7 45 f2 40 00 movw $0x40,-0xe(%ebp) -c0100d84: c6 45 f1 2e movb $0x2e,-0xf(%ebp) -c0100d88: 0f b6 45 f1 movzbl -0xf(%ebp),%eax -c0100d8c: 0f b7 55 f2 movzwl -0xe(%ebp),%edx -c0100d90: ee out %al,(%dx) - outb(TIMER_MODE, TIMER_SEL0 | TIMER_RATEGEN | TIMER_16BIT); - outb(IO_TIMER1, TIMER_DIV(100) % 256); - outb(IO_TIMER1, TIMER_DIV(100) / 256); - - // initialize time counter 'ticks' to zero - ticks = 0; -c0100d91: c7 05 58 a9 11 c0 00 movl $0x0,0xc011a958 -c0100d98: 00 00 00 - - cprintf("++ setup timer interrupts\n"); -c0100d9b: 83 ec 0c sub $0xc,%esp -c0100d9e: 68 02 6c 10 c0 push $0xc0106c02 -c0100da3: e8 bf f4 ff ff call c0100267 -c0100da8: 83 c4 10 add $0x10,%esp - pic_enable(IRQ_TIMER); -c0100dab: 83 ec 0c sub $0xc,%esp -c0100dae: 6a 00 push $0x0 -c0100db0: e8 3b 09 00 00 call c01016f0 -c0100db5: 83 c4 10 add $0x10,%esp -} -c0100db8: 90 nop -c0100db9: c9 leave -c0100dba: c3 ret - -c0100dbb <__intr_save>: -#include -#include -#include - -static inline bool -__intr_save(void) { -c0100dbb: 55 push %ebp -c0100dbc: 89 e5 mov %esp,%ebp -c0100dbe: 83 ec 18 sub $0x18,%esp -} - -static inline uint32_t -read_eflags(void) { - uint32_t eflags; - asm volatile ("pushfl; popl %0" : "=r" (eflags)); -c0100dc1: 9c pushf -c0100dc2: 58 pop %eax -c0100dc3: 89 45 f4 mov %eax,-0xc(%ebp) - return eflags; -c0100dc6: 8b 45 f4 mov -0xc(%ebp),%eax - if (read_eflags() & FL_IF) { -c0100dc9: 25 00 02 00 00 and $0x200,%eax -c0100dce: 85 c0 test %eax,%eax -c0100dd0: 74 0c je c0100dde <__intr_save+0x23> - intr_disable(); -c0100dd2: e8 8a 0a 00 00 call c0101861 - return 1; -c0100dd7: b8 01 00 00 00 mov $0x1,%eax -c0100ddc: eb 05 jmp c0100de3 <__intr_save+0x28> - } - return 0; -c0100dde: b8 00 00 00 00 mov $0x0,%eax -} -c0100de3: c9 leave -c0100de4: c3 ret - -c0100de5 <__intr_restore>: - -static inline void -__intr_restore(bool flag) { -c0100de5: 55 push %ebp -c0100de6: 89 e5 mov %esp,%ebp -c0100de8: 83 ec 08 sub $0x8,%esp - if (flag) { -c0100deb: 83 7d 08 00 cmpl $0x0,0x8(%ebp) -c0100def: 74 05 je c0100df6 <__intr_restore+0x11> - intr_enable(); -c0100df1: e8 64 0a 00 00 call c010185a - } -} -c0100df6: 90 nop -c0100df7: c9 leave -c0100df8: c3 ret - -c0100df9 : -#include -#include - -/* stupid I/O delay routine necessitated by historical PC design flaws */ -static void -delay(void) { -c0100df9: 55 push %ebp -c0100dfa: 89 e5 mov %esp,%ebp -c0100dfc: 83 ec 10 sub $0x10,%esp -c0100dff: 66 c7 45 fe 84 00 movw $0x84,-0x2(%ebp) -static inline void invlpg(void *addr) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); -c0100e05: 0f b7 45 fe movzwl -0x2(%ebp),%eax -c0100e09: 89 c2 mov %eax,%edx -c0100e0b: ec in (%dx),%al -c0100e0c: 88 45 f4 mov %al,-0xc(%ebp) -c0100e0f: 66 c7 45 fc 84 00 movw $0x84,-0x4(%ebp) -c0100e15: 0f b7 45 fc movzwl -0x4(%ebp),%eax -c0100e19: 89 c2 mov %eax,%edx -c0100e1b: ec in (%dx),%al -c0100e1c: 88 45 f5 mov %al,-0xb(%ebp) -c0100e1f: 66 c7 45 fa 84 00 movw $0x84,-0x6(%ebp) -c0100e25: 0f b7 45 fa movzwl -0x6(%ebp),%eax -c0100e29: 89 c2 mov %eax,%edx -c0100e2b: ec in (%dx),%al -c0100e2c: 88 45 f6 mov %al,-0xa(%ebp) -c0100e2f: 66 c7 45 f8 84 00 movw $0x84,-0x8(%ebp) -c0100e35: 0f b7 45 f8 movzwl -0x8(%ebp),%eax -c0100e39: 89 c2 mov %eax,%edx -c0100e3b: ec in (%dx),%al -c0100e3c: 88 45 f7 mov %al,-0x9(%ebp) - inb(0x84); - inb(0x84); - inb(0x84); - inb(0x84); -} -c0100e3f: 90 nop -c0100e40: c9 leave -c0100e41: c3 ret - -c0100e42 : -static uint16_t addr_6845; - -/* TEXT-mode CGA/VGA display output */ - -static void -cga_init(void) { -c0100e42: 55 push %ebp -c0100e43: 89 e5 mov %esp,%ebp -c0100e45: 83 ec 20 sub $0x20,%esp - volatile uint16_t *cp = (uint16_t *)(CGA_BUF + KERNBASE); -c0100e48: c7 45 fc 00 80 0b c0 movl $0xc00b8000,-0x4(%ebp) - uint16_t was = *cp; -c0100e4f: 8b 45 fc mov -0x4(%ebp),%eax -c0100e52: 0f b7 00 movzwl (%eax),%eax -c0100e55: 66 89 45 fa mov %ax,-0x6(%ebp) - *cp = (uint16_t) 0xA55A; -c0100e59: 8b 45 fc mov -0x4(%ebp),%eax -c0100e5c: 66 c7 00 5a a5 movw $0xa55a,(%eax) - if (*cp != 0xA55A) { -c0100e61: 8b 45 fc mov -0x4(%ebp),%eax -c0100e64: 0f b7 00 movzwl (%eax),%eax -c0100e67: 66 3d 5a a5 cmp $0xa55a,%ax -c0100e6b: 74 12 je c0100e7f - cp = (uint16_t*)(MONO_BUF + KERNBASE); -c0100e6d: c7 45 fc 00 00 0b c0 movl $0xc00b0000,-0x4(%ebp) - addr_6845 = MONO_BASE; -c0100e74: 66 c7 05 86 9e 11 c0 movw $0x3b4,0xc0119e86 -c0100e7b: b4 03 -c0100e7d: eb 13 jmp c0100e92 - } else { - *cp = was; -c0100e7f: 8b 45 fc mov -0x4(%ebp),%eax -c0100e82: 0f b7 55 fa movzwl -0x6(%ebp),%edx -c0100e86: 66 89 10 mov %dx,(%eax) - addr_6845 = CGA_BASE; -c0100e89: 66 c7 05 86 9e 11 c0 movw $0x3d4,0xc0119e86 -c0100e90: d4 03 - } - - // Extract cursor location - uint32_t pos; - outb(addr_6845, 14); -c0100e92: 0f b7 05 86 9e 11 c0 movzwl 0xc0119e86,%eax -c0100e99: 0f b7 c0 movzwl %ax,%eax -c0100e9c: 66 89 45 f8 mov %ax,-0x8(%ebp) -c0100ea0: c6 45 ea 0e movb $0xe,-0x16(%ebp) - : "memory", "cc"); -} - -static inline void -outb(uint16_t port, uint8_t data) { - asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); -c0100ea4: 0f b6 45 ea movzbl -0x16(%ebp),%eax -c0100ea8: 0f b7 55 f8 movzwl -0x8(%ebp),%edx -c0100eac: ee out %al,(%dx) - pos = inb(addr_6845 + 1) << 8; -c0100ead: 0f b7 05 86 9e 11 c0 movzwl 0xc0119e86,%eax -c0100eb4: 83 c0 01 add $0x1,%eax -c0100eb7: 0f b7 c0 movzwl %ax,%eax -c0100eba: 66 89 45 f2 mov %ax,-0xe(%ebp) -static inline void invlpg(void *addr) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); -c0100ebe: 0f b7 45 f2 movzwl -0xe(%ebp),%eax -c0100ec2: 89 c2 mov %eax,%edx -c0100ec4: ec in (%dx),%al -c0100ec5: 88 45 eb mov %al,-0x15(%ebp) - return data; -c0100ec8: 0f b6 45 eb movzbl -0x15(%ebp),%eax -c0100ecc: 0f b6 c0 movzbl %al,%eax -c0100ecf: c1 e0 08 shl $0x8,%eax -c0100ed2: 89 45 f4 mov %eax,-0xc(%ebp) - outb(addr_6845, 15); -c0100ed5: 0f b7 05 86 9e 11 c0 movzwl 0xc0119e86,%eax -c0100edc: 0f b7 c0 movzwl %ax,%eax -c0100edf: 66 89 45 f0 mov %ax,-0x10(%ebp) -c0100ee3: c6 45 ec 0f movb $0xf,-0x14(%ebp) - : "memory", "cc"); -} - -static inline void -outb(uint16_t port, uint8_t data) { - asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); -c0100ee7: 0f b6 45 ec movzbl -0x14(%ebp),%eax -c0100eeb: 0f b7 55 f0 movzwl -0x10(%ebp),%edx -c0100eef: ee out %al,(%dx) - pos |= inb(addr_6845 + 1); -c0100ef0: 0f b7 05 86 9e 11 c0 movzwl 0xc0119e86,%eax -c0100ef7: 83 c0 01 add $0x1,%eax -c0100efa: 0f b7 c0 movzwl %ax,%eax -c0100efd: 66 89 45 ee mov %ax,-0x12(%ebp) -static inline void invlpg(void *addr) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); -c0100f01: 0f b7 45 ee movzwl -0x12(%ebp),%eax -c0100f05: 89 c2 mov %eax,%edx -c0100f07: ec in (%dx),%al -c0100f08: 88 45 ed mov %al,-0x13(%ebp) - return data; -c0100f0b: 0f b6 45 ed movzbl -0x13(%ebp),%eax -c0100f0f: 0f b6 c0 movzbl %al,%eax -c0100f12: 09 45 f4 or %eax,-0xc(%ebp) - - crt_buf = (uint16_t*) cp; -c0100f15: 8b 45 fc mov -0x4(%ebp),%eax -c0100f18: a3 80 9e 11 c0 mov %eax,0xc0119e80 - crt_pos = pos; -c0100f1d: 8b 45 f4 mov -0xc(%ebp),%eax -c0100f20: 66 a3 84 9e 11 c0 mov %ax,0xc0119e84 -} -c0100f26: 90 nop -c0100f27: c9 leave -c0100f28: c3 ret - -c0100f29 : - -static bool serial_exists = 0; - -static void -serial_init(void) { -c0100f29: 55 push %ebp -c0100f2a: 89 e5 mov %esp,%ebp -c0100f2c: 83 ec 28 sub $0x28,%esp -c0100f2f: 66 c7 45 f6 fa 03 movw $0x3fa,-0xa(%ebp) -c0100f35: c6 45 da 00 movb $0x0,-0x26(%ebp) - : "memory", "cc"); -} - -static inline void -outb(uint16_t port, uint8_t data) { - asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); -c0100f39: 0f b6 45 da movzbl -0x26(%ebp),%eax -c0100f3d: 0f b7 55 f6 movzwl -0xa(%ebp),%edx -c0100f41: ee out %al,(%dx) -c0100f42: 66 c7 45 f4 fb 03 movw $0x3fb,-0xc(%ebp) -c0100f48: c6 45 db 80 movb $0x80,-0x25(%ebp) -c0100f4c: 0f b6 45 db movzbl -0x25(%ebp),%eax -c0100f50: 0f b7 55 f4 movzwl -0xc(%ebp),%edx -c0100f54: ee out %al,(%dx) -c0100f55: 66 c7 45 f2 f8 03 movw $0x3f8,-0xe(%ebp) -c0100f5b: c6 45 dc 0c movb $0xc,-0x24(%ebp) -c0100f5f: 0f b6 45 dc movzbl -0x24(%ebp),%eax -c0100f63: 0f b7 55 f2 movzwl -0xe(%ebp),%edx -c0100f67: ee out %al,(%dx) -c0100f68: 66 c7 45 f0 f9 03 movw $0x3f9,-0x10(%ebp) -c0100f6e: c6 45 dd 00 movb $0x0,-0x23(%ebp) -c0100f72: 0f b6 45 dd movzbl -0x23(%ebp),%eax -c0100f76: 0f b7 55 f0 movzwl -0x10(%ebp),%edx -c0100f7a: ee out %al,(%dx) -c0100f7b: 66 c7 45 ee fb 03 movw $0x3fb,-0x12(%ebp) -c0100f81: c6 45 de 03 movb $0x3,-0x22(%ebp) -c0100f85: 0f b6 45 de movzbl -0x22(%ebp),%eax -c0100f89: 0f b7 55 ee movzwl -0x12(%ebp),%edx -c0100f8d: ee out %al,(%dx) -c0100f8e: 66 c7 45 ec fc 03 movw $0x3fc,-0x14(%ebp) -c0100f94: c6 45 df 00 movb $0x0,-0x21(%ebp) -c0100f98: 0f b6 45 df movzbl -0x21(%ebp),%eax -c0100f9c: 0f b7 55 ec movzwl -0x14(%ebp),%edx -c0100fa0: ee out %al,(%dx) -c0100fa1: 66 c7 45 ea f9 03 movw $0x3f9,-0x16(%ebp) -c0100fa7: c6 45 e0 01 movb $0x1,-0x20(%ebp) -c0100fab: 0f b6 45 e0 movzbl -0x20(%ebp),%eax -c0100faf: 0f b7 55 ea movzwl -0x16(%ebp),%edx -c0100fb3: ee out %al,(%dx) -c0100fb4: 66 c7 45 e8 fd 03 movw $0x3fd,-0x18(%ebp) -static inline void invlpg(void *addr) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); -c0100fba: 0f b7 45 e8 movzwl -0x18(%ebp),%eax -c0100fbe: 89 c2 mov %eax,%edx -c0100fc0: ec in (%dx),%al -c0100fc1: 88 45 e1 mov %al,-0x1f(%ebp) - return data; -c0100fc4: 0f b6 45 e1 movzbl -0x1f(%ebp),%eax - // Enable rcv interrupts - outb(COM1 + COM_IER, COM_IER_RDI); - - // Clear any preexisting overrun indications and interrupts - // Serial port doesn't exist if COM_LSR returns 0xFF - serial_exists = (inb(COM1 + COM_LSR) != 0xFF); -c0100fc8: 3c ff cmp $0xff,%al -c0100fca: 0f 95 c0 setne %al -c0100fcd: 0f b6 c0 movzbl %al,%eax -c0100fd0: a3 88 9e 11 c0 mov %eax,0xc0119e88 -c0100fd5: 66 c7 45 e6 fa 03 movw $0x3fa,-0x1a(%ebp) -static inline void invlpg(void *addr) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); -c0100fdb: 0f b7 45 e6 movzwl -0x1a(%ebp),%eax -c0100fdf: 89 c2 mov %eax,%edx -c0100fe1: ec in (%dx),%al -c0100fe2: 88 45 e2 mov %al,-0x1e(%ebp) -c0100fe5: 66 c7 45 e4 f8 03 movw $0x3f8,-0x1c(%ebp) -c0100feb: 0f b7 45 e4 movzwl -0x1c(%ebp),%eax -c0100fef: 89 c2 mov %eax,%edx -c0100ff1: ec in (%dx),%al -c0100ff2: 88 45 e3 mov %al,-0x1d(%ebp) - (void) inb(COM1+COM_IIR); - (void) inb(COM1+COM_RX); - - if (serial_exists) { -c0100ff5: a1 88 9e 11 c0 mov 0xc0119e88,%eax -c0100ffa: 85 c0 test %eax,%eax -c0100ffc: 74 0d je c010100b - pic_enable(IRQ_COM1); -c0100ffe: 83 ec 0c sub $0xc,%esp -c0101001: 6a 04 push $0x4 -c0101003: e8 e8 06 00 00 call c01016f0 -c0101008: 83 c4 10 add $0x10,%esp - } -} -c010100b: 90 nop -c010100c: c9 leave -c010100d: c3 ret - -c010100e : - -static void -lpt_putc_sub(int c) { -c010100e: 55 push %ebp -c010100f: 89 e5 mov %esp,%ebp -c0101011: 83 ec 10 sub $0x10,%esp - int i; - for (i = 0; !(inb(LPTPORT + 1) & 0x80) && i < 12800; i ++) { -c0101014: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp) -c010101b: eb 09 jmp c0101026 - delay(); -c010101d: e8 d7 fd ff ff call c0100df9 -} - -static void -lpt_putc_sub(int c) { - int i; - for (i = 0; !(inb(LPTPORT + 1) & 0x80) && i < 12800; i ++) { -c0101022: 83 45 fc 01 addl $0x1,-0x4(%ebp) -c0101026: 66 c7 45 f4 79 03 movw $0x379,-0xc(%ebp) -c010102c: 0f b7 45 f4 movzwl -0xc(%ebp),%eax -c0101030: 89 c2 mov %eax,%edx -c0101032: ec in (%dx),%al -c0101033: 88 45 f3 mov %al,-0xd(%ebp) - return data; -c0101036: 0f b6 45 f3 movzbl -0xd(%ebp),%eax -c010103a: 84 c0 test %al,%al -c010103c: 78 09 js c0101047 -c010103e: 81 7d fc ff 31 00 00 cmpl $0x31ff,-0x4(%ebp) -c0101045: 7e d6 jle c010101d - delay(); - } - outb(LPTPORT + 0, c); -c0101047: 8b 45 08 mov 0x8(%ebp),%eax -c010104a: 0f b6 c0 movzbl %al,%eax -c010104d: 66 c7 45 f8 78 03 movw $0x378,-0x8(%ebp) -c0101053: 88 45 f0 mov %al,-0x10(%ebp) - : "memory", "cc"); -} - -static inline void -outb(uint16_t port, uint8_t data) { - asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); -c0101056: 0f b6 45 f0 movzbl -0x10(%ebp),%eax -c010105a: 0f b7 55 f8 movzwl -0x8(%ebp),%edx -c010105e: ee out %al,(%dx) -c010105f: 66 c7 45 f6 7a 03 movw $0x37a,-0xa(%ebp) -c0101065: c6 45 f1 0d movb $0xd,-0xf(%ebp) -c0101069: 0f b6 45 f1 movzbl -0xf(%ebp),%eax -c010106d: 0f b7 55 f6 movzwl -0xa(%ebp),%edx -c0101071: ee out %al,(%dx) -c0101072: 66 c7 45 fa 7a 03 movw $0x37a,-0x6(%ebp) -c0101078: c6 45 f2 08 movb $0x8,-0xe(%ebp) -c010107c: 0f b6 45 f2 movzbl -0xe(%ebp),%eax -c0101080: 0f b7 55 fa movzwl -0x6(%ebp),%edx -c0101084: ee out %al,(%dx) - outb(LPTPORT + 2, 0x08 | 0x04 | 0x01); - outb(LPTPORT + 2, 0x08); -} -c0101085: 90 nop -c0101086: c9 leave -c0101087: c3 ret - -c0101088 : - -/* lpt_putc - copy console output to parallel port */ -static void -lpt_putc(int c) { -c0101088: 55 push %ebp -c0101089: 89 e5 mov %esp,%ebp - if (c != '\b') { -c010108b: 83 7d 08 08 cmpl $0x8,0x8(%ebp) -c010108f: 74 0d je c010109e - lpt_putc_sub(c); -c0101091: ff 75 08 pushl 0x8(%ebp) -c0101094: e8 75 ff ff ff call c010100e -c0101099: 83 c4 04 add $0x4,%esp - else { - lpt_putc_sub('\b'); - lpt_putc_sub(' '); - lpt_putc_sub('\b'); - } -} -c010109c: eb 1e jmp c01010bc -lpt_putc(int c) { - if (c != '\b') { - lpt_putc_sub(c); - } - else { - lpt_putc_sub('\b'); -c010109e: 6a 08 push $0x8 -c01010a0: e8 69 ff ff ff call c010100e -c01010a5: 83 c4 04 add $0x4,%esp - lpt_putc_sub(' '); -c01010a8: 6a 20 push $0x20 -c01010aa: e8 5f ff ff ff call c010100e -c01010af: 83 c4 04 add $0x4,%esp - lpt_putc_sub('\b'); -c01010b2: 6a 08 push $0x8 -c01010b4: e8 55 ff ff ff call c010100e -c01010b9: 83 c4 04 add $0x4,%esp - } -} -c01010bc: 90 nop -c01010bd: c9 leave -c01010be: c3 ret - -c01010bf : - -/* cga_putc - print character to console */ -static void -cga_putc(int c) { -c01010bf: 55 push %ebp -c01010c0: 89 e5 mov %esp,%ebp -c01010c2: 53 push %ebx -c01010c3: 83 ec 14 sub $0x14,%esp - // set black on white - if (!(c & ~0xFF)) { -c01010c6: 8b 45 08 mov 0x8(%ebp),%eax -c01010c9: b0 00 mov $0x0,%al -c01010cb: 85 c0 test %eax,%eax -c01010cd: 75 07 jne c01010d6 - c |= 0x0700; -c01010cf: 81 4d 08 00 07 00 00 orl $0x700,0x8(%ebp) - } - - switch (c & 0xff) { -c01010d6: 8b 45 08 mov 0x8(%ebp),%eax -c01010d9: 0f b6 c0 movzbl %al,%eax -c01010dc: 83 f8 0a cmp $0xa,%eax -c01010df: 74 4e je c010112f -c01010e1: 83 f8 0d cmp $0xd,%eax -c01010e4: 74 59 je c010113f -c01010e6: 83 f8 08 cmp $0x8,%eax -c01010e9: 0f 85 8a 00 00 00 jne c0101179 - case '\b': - if (crt_pos > 0) { -c01010ef: 0f b7 05 84 9e 11 c0 movzwl 0xc0119e84,%eax -c01010f6: 66 85 c0 test %ax,%ax -c01010f9: 0f 84 a0 00 00 00 je c010119f - crt_pos --; -c01010ff: 0f b7 05 84 9e 11 c0 movzwl 0xc0119e84,%eax -c0101106: 83 e8 01 sub $0x1,%eax -c0101109: 66 a3 84 9e 11 c0 mov %ax,0xc0119e84 - crt_buf[crt_pos] = (c & ~0xff) | ' '; -c010110f: a1 80 9e 11 c0 mov 0xc0119e80,%eax -c0101114: 0f b7 15 84 9e 11 c0 movzwl 0xc0119e84,%edx -c010111b: 0f b7 d2 movzwl %dx,%edx -c010111e: 01 d2 add %edx,%edx -c0101120: 01 d0 add %edx,%eax -c0101122: 8b 55 08 mov 0x8(%ebp),%edx -c0101125: b2 00 mov $0x0,%dl -c0101127: 83 ca 20 or $0x20,%edx -c010112a: 66 89 10 mov %dx,(%eax) - } - break; -c010112d: eb 70 jmp c010119f - case '\n': - crt_pos += CRT_COLS; -c010112f: 0f b7 05 84 9e 11 c0 movzwl 0xc0119e84,%eax -c0101136: 83 c0 50 add $0x50,%eax -c0101139: 66 a3 84 9e 11 c0 mov %ax,0xc0119e84 - case '\r': - crt_pos -= (crt_pos % CRT_COLS); -c010113f: 0f b7 1d 84 9e 11 c0 movzwl 0xc0119e84,%ebx -c0101146: 0f b7 0d 84 9e 11 c0 movzwl 0xc0119e84,%ecx -c010114d: 0f b7 c1 movzwl %cx,%eax -c0101150: 69 c0 cd cc 00 00 imul $0xcccd,%eax,%eax -c0101156: c1 e8 10 shr $0x10,%eax -c0101159: 89 c2 mov %eax,%edx -c010115b: 66 c1 ea 06 shr $0x6,%dx -c010115f: 89 d0 mov %edx,%eax -c0101161: c1 e0 02 shl $0x2,%eax -c0101164: 01 d0 add %edx,%eax -c0101166: c1 e0 04 shl $0x4,%eax -c0101169: 29 c1 sub %eax,%ecx -c010116b: 89 ca mov %ecx,%edx -c010116d: 89 d8 mov %ebx,%eax -c010116f: 29 d0 sub %edx,%eax -c0101171: 66 a3 84 9e 11 c0 mov %ax,0xc0119e84 - break; -c0101177: eb 27 jmp c01011a0 - default: - crt_buf[crt_pos ++] = c; // write the character -c0101179: 8b 0d 80 9e 11 c0 mov 0xc0119e80,%ecx -c010117f: 0f b7 05 84 9e 11 c0 movzwl 0xc0119e84,%eax -c0101186: 8d 50 01 lea 0x1(%eax),%edx -c0101189: 66 89 15 84 9e 11 c0 mov %dx,0xc0119e84 -c0101190: 0f b7 c0 movzwl %ax,%eax -c0101193: 01 c0 add %eax,%eax -c0101195: 01 c8 add %ecx,%eax -c0101197: 8b 55 08 mov 0x8(%ebp),%edx -c010119a: 66 89 10 mov %dx,(%eax) - break; -c010119d: eb 01 jmp c01011a0 - case '\b': - if (crt_pos > 0) { - crt_pos --; - crt_buf[crt_pos] = (c & ~0xff) | ' '; - } - break; -c010119f: 90 nop - crt_buf[crt_pos ++] = c; // write the character - break; - } - - // What is the purpose of this? - if (crt_pos >= CRT_SIZE) { -c01011a0: 0f b7 05 84 9e 11 c0 movzwl 0xc0119e84,%eax -c01011a7: 66 3d cf 07 cmp $0x7cf,%ax -c01011ab: 76 59 jbe c0101206 - int i; - memmove(crt_buf, crt_buf + CRT_COLS, (CRT_SIZE - CRT_COLS) * sizeof(uint16_t)); -c01011ad: a1 80 9e 11 c0 mov 0xc0119e80,%eax -c01011b2: 8d 90 a0 00 00 00 lea 0xa0(%eax),%edx -c01011b8: a1 80 9e 11 c0 mov 0xc0119e80,%eax -c01011bd: 83 ec 04 sub $0x4,%esp -c01011c0: 68 00 0f 00 00 push $0xf00 -c01011c5: 52 push %edx -c01011c6: 50 push %eax -c01011c7: e8 db 4f 00 00 call c01061a7 -c01011cc: 83 c4 10 add $0x10,%esp - for (i = CRT_SIZE - CRT_COLS; i < CRT_SIZE; i ++) { -c01011cf: c7 45 f4 80 07 00 00 movl $0x780,-0xc(%ebp) -c01011d6: eb 15 jmp c01011ed - crt_buf[i] = 0x0700 | ' '; -c01011d8: a1 80 9e 11 c0 mov 0xc0119e80,%eax -c01011dd: 8b 55 f4 mov -0xc(%ebp),%edx -c01011e0: 01 d2 add %edx,%edx -c01011e2: 01 d0 add %edx,%eax -c01011e4: 66 c7 00 20 07 movw $0x720,(%eax) - - // What is the purpose of this? - if (crt_pos >= CRT_SIZE) { - int i; - memmove(crt_buf, crt_buf + CRT_COLS, (CRT_SIZE - CRT_COLS) * sizeof(uint16_t)); - for (i = CRT_SIZE - CRT_COLS; i < CRT_SIZE; i ++) { -c01011e9: 83 45 f4 01 addl $0x1,-0xc(%ebp) -c01011ed: 81 7d f4 cf 07 00 00 cmpl $0x7cf,-0xc(%ebp) -c01011f4: 7e e2 jle c01011d8 - crt_buf[i] = 0x0700 | ' '; - } - crt_pos -= CRT_COLS; -c01011f6: 0f b7 05 84 9e 11 c0 movzwl 0xc0119e84,%eax -c01011fd: 83 e8 50 sub $0x50,%eax -c0101200: 66 a3 84 9e 11 c0 mov %ax,0xc0119e84 - } - - // move that little blinky thing - outb(addr_6845, 14); -c0101206: 0f b7 05 86 9e 11 c0 movzwl 0xc0119e86,%eax -c010120d: 0f b7 c0 movzwl %ax,%eax -c0101210: 66 89 45 f2 mov %ax,-0xe(%ebp) -c0101214: c6 45 e8 0e movb $0xe,-0x18(%ebp) -c0101218: 0f b6 45 e8 movzbl -0x18(%ebp),%eax -c010121c: 0f b7 55 f2 movzwl -0xe(%ebp),%edx -c0101220: ee out %al,(%dx) - outb(addr_6845 + 1, crt_pos >> 8); -c0101221: 0f b7 05 84 9e 11 c0 movzwl 0xc0119e84,%eax -c0101228: 66 c1 e8 08 shr $0x8,%ax -c010122c: 0f b6 c0 movzbl %al,%eax -c010122f: 0f b7 15 86 9e 11 c0 movzwl 0xc0119e86,%edx -c0101236: 83 c2 01 add $0x1,%edx -c0101239: 0f b7 d2 movzwl %dx,%edx -c010123c: 66 89 55 f0 mov %dx,-0x10(%ebp) -c0101240: 88 45 e9 mov %al,-0x17(%ebp) -c0101243: 0f b6 45 e9 movzbl -0x17(%ebp),%eax -c0101247: 0f b7 55 f0 movzwl -0x10(%ebp),%edx -c010124b: ee out %al,(%dx) - outb(addr_6845, 15); -c010124c: 0f b7 05 86 9e 11 c0 movzwl 0xc0119e86,%eax -c0101253: 0f b7 c0 movzwl %ax,%eax -c0101256: 66 89 45 ee mov %ax,-0x12(%ebp) -c010125a: c6 45 ea 0f movb $0xf,-0x16(%ebp) -c010125e: 0f b6 45 ea movzbl -0x16(%ebp),%eax -c0101262: 0f b7 55 ee movzwl -0x12(%ebp),%edx -c0101266: ee out %al,(%dx) - outb(addr_6845 + 1, crt_pos); -c0101267: 0f b7 05 84 9e 11 c0 movzwl 0xc0119e84,%eax -c010126e: 0f b6 c0 movzbl %al,%eax -c0101271: 0f b7 15 86 9e 11 c0 movzwl 0xc0119e86,%edx -c0101278: 83 c2 01 add $0x1,%edx -c010127b: 0f b7 d2 movzwl %dx,%edx -c010127e: 66 89 55 ec mov %dx,-0x14(%ebp) -c0101282: 88 45 eb mov %al,-0x15(%ebp) -c0101285: 0f b6 45 eb movzbl -0x15(%ebp),%eax -c0101289: 0f b7 55 ec movzwl -0x14(%ebp),%edx -c010128d: ee out %al,(%dx) -} -c010128e: 90 nop -c010128f: 8b 5d fc mov -0x4(%ebp),%ebx -c0101292: c9 leave -c0101293: c3 ret - -c0101294 : - -static void -serial_putc_sub(int c) { -c0101294: 55 push %ebp -c0101295: 89 e5 mov %esp,%ebp -c0101297: 83 ec 10 sub $0x10,%esp - int i; - for (i = 0; !(inb(COM1 + COM_LSR) & COM_LSR_TXRDY) && i < 12800; i ++) { -c010129a: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp) -c01012a1: eb 09 jmp c01012ac - delay(); -c01012a3: e8 51 fb ff ff call c0100df9 -} - -static void -serial_putc_sub(int c) { - int i; - for (i = 0; !(inb(COM1 + COM_LSR) & COM_LSR_TXRDY) && i < 12800; i ++) { -c01012a8: 83 45 fc 01 addl $0x1,-0x4(%ebp) -c01012ac: 66 c7 45 f8 fd 03 movw $0x3fd,-0x8(%ebp) -static inline void invlpg(void *addr) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); -c01012b2: 0f b7 45 f8 movzwl -0x8(%ebp),%eax -c01012b6: 89 c2 mov %eax,%edx -c01012b8: ec in (%dx),%al -c01012b9: 88 45 f7 mov %al,-0x9(%ebp) - return data; -c01012bc: 0f b6 45 f7 movzbl -0x9(%ebp),%eax -c01012c0: 0f b6 c0 movzbl %al,%eax -c01012c3: 83 e0 20 and $0x20,%eax -c01012c6: 85 c0 test %eax,%eax -c01012c8: 75 09 jne c01012d3 -c01012ca: 81 7d fc ff 31 00 00 cmpl $0x31ff,-0x4(%ebp) -c01012d1: 7e d0 jle c01012a3 - delay(); - } - outb(COM1 + COM_TX, c); -c01012d3: 8b 45 08 mov 0x8(%ebp),%eax -c01012d6: 0f b6 c0 movzbl %al,%eax -c01012d9: 66 c7 45 fa f8 03 movw $0x3f8,-0x6(%ebp) -c01012df: 88 45 f6 mov %al,-0xa(%ebp) - : "memory", "cc"); -} - -static inline void -outb(uint16_t port, uint8_t data) { - asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); -c01012e2: 0f b6 45 f6 movzbl -0xa(%ebp),%eax -c01012e6: 0f b7 55 fa movzwl -0x6(%ebp),%edx -c01012ea: ee out %al,(%dx) -} -c01012eb: 90 nop -c01012ec: c9 leave -c01012ed: c3 ret - -c01012ee : - -/* serial_putc - print character to serial port */ -static void -serial_putc(int c) { -c01012ee: 55 push %ebp -c01012ef: 89 e5 mov %esp,%ebp - if (c != '\b') { -c01012f1: 83 7d 08 08 cmpl $0x8,0x8(%ebp) -c01012f5: 74 0d je c0101304 - serial_putc_sub(c); -c01012f7: ff 75 08 pushl 0x8(%ebp) -c01012fa: e8 95 ff ff ff call c0101294 -c01012ff: 83 c4 04 add $0x4,%esp - else { - serial_putc_sub('\b'); - serial_putc_sub(' '); - serial_putc_sub('\b'); - } -} -c0101302: eb 1e jmp c0101322 -serial_putc(int c) { - if (c != '\b') { - serial_putc_sub(c); - } - else { - serial_putc_sub('\b'); -c0101304: 6a 08 push $0x8 -c0101306: e8 89 ff ff ff call c0101294 -c010130b: 83 c4 04 add $0x4,%esp - serial_putc_sub(' '); -c010130e: 6a 20 push $0x20 -c0101310: e8 7f ff ff ff call c0101294 -c0101315: 83 c4 04 add $0x4,%esp - serial_putc_sub('\b'); -c0101318: 6a 08 push $0x8 -c010131a: e8 75 ff ff ff call c0101294 -c010131f: 83 c4 04 add $0x4,%esp - } -} -c0101322: 90 nop -c0101323: c9 leave -c0101324: c3 ret - -c0101325 : -/* * - * cons_intr - called by device interrupt routines to feed input - * characters into the circular console input buffer. - * */ -static void -cons_intr(int (*proc)(void)) { -c0101325: 55 push %ebp -c0101326: 89 e5 mov %esp,%ebp -c0101328: 83 ec 18 sub $0x18,%esp - int c; - while ((c = (*proc)()) != -1) { -c010132b: eb 33 jmp c0101360 - if (c != 0) { -c010132d: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c0101331: 74 2d je c0101360 - cons.buf[cons.wpos ++] = c; -c0101333: a1 a4 a0 11 c0 mov 0xc011a0a4,%eax -c0101338: 8d 50 01 lea 0x1(%eax),%edx -c010133b: 89 15 a4 a0 11 c0 mov %edx,0xc011a0a4 -c0101341: 8b 55 f4 mov -0xc(%ebp),%edx -c0101344: 88 90 a0 9e 11 c0 mov %dl,-0x3fee6160(%eax) - if (cons.wpos == CONSBUFSIZE) { -c010134a: a1 a4 a0 11 c0 mov 0xc011a0a4,%eax -c010134f: 3d 00 02 00 00 cmp $0x200,%eax -c0101354: 75 0a jne c0101360 - cons.wpos = 0; -c0101356: c7 05 a4 a0 11 c0 00 movl $0x0,0xc011a0a4 -c010135d: 00 00 00 - * characters into the circular console input buffer. - * */ -static void -cons_intr(int (*proc)(void)) { - int c; - while ((c = (*proc)()) != -1) { -c0101360: 8b 45 08 mov 0x8(%ebp),%eax -c0101363: ff d0 call *%eax -c0101365: 89 45 f4 mov %eax,-0xc(%ebp) -c0101368: 83 7d f4 ff cmpl $0xffffffff,-0xc(%ebp) -c010136c: 75 bf jne c010132d - if (cons.wpos == CONSBUFSIZE) { - cons.wpos = 0; - } - } - } -} -c010136e: 90 nop -c010136f: c9 leave -c0101370: c3 ret - -c0101371 : - -/* serial_proc_data - get data from serial port */ -static int -serial_proc_data(void) { -c0101371: 55 push %ebp -c0101372: 89 e5 mov %esp,%ebp -c0101374: 83 ec 10 sub $0x10,%esp -c0101377: 66 c7 45 f8 fd 03 movw $0x3fd,-0x8(%ebp) -static inline void invlpg(void *addr) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); -c010137d: 0f b7 45 f8 movzwl -0x8(%ebp),%eax -c0101381: 89 c2 mov %eax,%edx -c0101383: ec in (%dx),%al -c0101384: 88 45 f7 mov %al,-0x9(%ebp) - return data; -c0101387: 0f b6 45 f7 movzbl -0x9(%ebp),%eax - if (!(inb(COM1 + COM_LSR) & COM_LSR_DATA)) { -c010138b: 0f b6 c0 movzbl %al,%eax -c010138e: 83 e0 01 and $0x1,%eax -c0101391: 85 c0 test %eax,%eax -c0101393: 75 07 jne c010139c - return -1; -c0101395: b8 ff ff ff ff mov $0xffffffff,%eax -c010139a: eb 2a jmp c01013c6 -c010139c: 66 c7 45 fa f8 03 movw $0x3f8,-0x6(%ebp) -static inline void invlpg(void *addr) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); -c01013a2: 0f b7 45 fa movzwl -0x6(%ebp),%eax -c01013a6: 89 c2 mov %eax,%edx -c01013a8: ec in (%dx),%al -c01013a9: 88 45 f6 mov %al,-0xa(%ebp) - return data; -c01013ac: 0f b6 45 f6 movzbl -0xa(%ebp),%eax - } - int c = inb(COM1 + COM_RX); -c01013b0: 0f b6 c0 movzbl %al,%eax -c01013b3: 89 45 fc mov %eax,-0x4(%ebp) - if (c == 127) { -c01013b6: 83 7d fc 7f cmpl $0x7f,-0x4(%ebp) -c01013ba: 75 07 jne c01013c3 - c = '\b'; -c01013bc: c7 45 fc 08 00 00 00 movl $0x8,-0x4(%ebp) - } - return c; -c01013c3: 8b 45 fc mov -0x4(%ebp),%eax -} -c01013c6: c9 leave -c01013c7: c3 ret - -c01013c8 : - -/* serial_intr - try to feed input characters from serial port */ -void -serial_intr(void) { -c01013c8: 55 push %ebp -c01013c9: 89 e5 mov %esp,%ebp -c01013cb: 83 ec 08 sub $0x8,%esp - if (serial_exists) { -c01013ce: a1 88 9e 11 c0 mov 0xc0119e88,%eax -c01013d3: 85 c0 test %eax,%eax -c01013d5: 74 10 je c01013e7 - cons_intr(serial_proc_data); -c01013d7: 83 ec 0c sub $0xc,%esp -c01013da: 68 71 13 10 c0 push $0xc0101371 -c01013df: e8 41 ff ff ff call c0101325 -c01013e4: 83 c4 10 add $0x10,%esp - } -} -c01013e7: 90 nop -c01013e8: c9 leave -c01013e9: c3 ret - -c01013ea : - * - * The kbd_proc_data() function gets data from the keyboard. - * If we finish a character, return it, else 0. And return -1 if no data. - * */ -static int -kbd_proc_data(void) { -c01013ea: 55 push %ebp -c01013eb: 89 e5 mov %esp,%ebp -c01013ed: 83 ec 18 sub $0x18,%esp -c01013f0: 66 c7 45 ec 64 00 movw $0x64,-0x14(%ebp) -static inline void invlpg(void *addr) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); -c01013f6: 0f b7 45 ec movzwl -0x14(%ebp),%eax -c01013fa: 89 c2 mov %eax,%edx -c01013fc: ec in (%dx),%al -c01013fd: 88 45 eb mov %al,-0x15(%ebp) - return data; -c0101400: 0f b6 45 eb movzbl -0x15(%ebp),%eax - int c; - uint8_t data; - static uint32_t shift; - - if ((inb(KBSTATP) & KBS_DIB) == 0) { -c0101404: 0f b6 c0 movzbl %al,%eax -c0101407: 83 e0 01 and $0x1,%eax -c010140a: 85 c0 test %eax,%eax -c010140c: 75 0a jne c0101418 - return -1; -c010140e: b8 ff ff ff ff mov $0xffffffff,%eax -c0101413: e9 5d 01 00 00 jmp c0101575 -c0101418: 66 c7 45 f0 60 00 movw $0x60,-0x10(%ebp) -static inline void invlpg(void *addr) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); -c010141e: 0f b7 45 f0 movzwl -0x10(%ebp),%eax -c0101422: 89 c2 mov %eax,%edx -c0101424: ec in (%dx),%al -c0101425: 88 45 ea mov %al,-0x16(%ebp) - return data; -c0101428: 0f b6 45 ea movzbl -0x16(%ebp),%eax - } - - data = inb(KBDATAP); -c010142c: 88 45 f3 mov %al,-0xd(%ebp) - - if (data == 0xE0) { -c010142f: 80 7d f3 e0 cmpb $0xe0,-0xd(%ebp) -c0101433: 75 17 jne c010144c - // E0 escape character - shift |= E0ESC; -c0101435: a1 a8 a0 11 c0 mov 0xc011a0a8,%eax -c010143a: 83 c8 40 or $0x40,%eax -c010143d: a3 a8 a0 11 c0 mov %eax,0xc011a0a8 - return 0; -c0101442: b8 00 00 00 00 mov $0x0,%eax -c0101447: e9 29 01 00 00 jmp c0101575 - } else if (data & 0x80) { -c010144c: 0f b6 45 f3 movzbl -0xd(%ebp),%eax -c0101450: 84 c0 test %al,%al -c0101452: 79 47 jns c010149b - // Key released - data = (shift & E0ESC ? data : data & 0x7F); -c0101454: a1 a8 a0 11 c0 mov 0xc011a0a8,%eax -c0101459: 83 e0 40 and $0x40,%eax -c010145c: 85 c0 test %eax,%eax -c010145e: 75 09 jne c0101469 -c0101460: 0f b6 45 f3 movzbl -0xd(%ebp),%eax -c0101464: 83 e0 7f and $0x7f,%eax -c0101467: eb 04 jmp c010146d -c0101469: 0f b6 45 f3 movzbl -0xd(%ebp),%eax -c010146d: 88 45 f3 mov %al,-0xd(%ebp) - shift &= ~(shiftcode[data] | E0ESC); -c0101470: 0f b6 45 f3 movzbl -0xd(%ebp),%eax -c0101474: 0f b6 80 60 90 11 c0 movzbl -0x3fee6fa0(%eax),%eax -c010147b: 83 c8 40 or $0x40,%eax -c010147e: 0f b6 c0 movzbl %al,%eax -c0101481: f7 d0 not %eax -c0101483: 89 c2 mov %eax,%edx -c0101485: a1 a8 a0 11 c0 mov 0xc011a0a8,%eax -c010148a: 21 d0 and %edx,%eax -c010148c: a3 a8 a0 11 c0 mov %eax,0xc011a0a8 - return 0; -c0101491: b8 00 00 00 00 mov $0x0,%eax -c0101496: e9 da 00 00 00 jmp c0101575 - } else if (shift & E0ESC) { -c010149b: a1 a8 a0 11 c0 mov 0xc011a0a8,%eax -c01014a0: 83 e0 40 and $0x40,%eax -c01014a3: 85 c0 test %eax,%eax -c01014a5: 74 11 je c01014b8 - // Last character was an E0 escape; or with 0x80 - data |= 0x80; -c01014a7: 80 4d f3 80 orb $0x80,-0xd(%ebp) - shift &= ~E0ESC; -c01014ab: a1 a8 a0 11 c0 mov 0xc011a0a8,%eax -c01014b0: 83 e0 bf and $0xffffffbf,%eax -c01014b3: a3 a8 a0 11 c0 mov %eax,0xc011a0a8 - } - - shift |= shiftcode[data]; -c01014b8: 0f b6 45 f3 movzbl -0xd(%ebp),%eax -c01014bc: 0f b6 80 60 90 11 c0 movzbl -0x3fee6fa0(%eax),%eax -c01014c3: 0f b6 d0 movzbl %al,%edx -c01014c6: a1 a8 a0 11 c0 mov 0xc011a0a8,%eax -c01014cb: 09 d0 or %edx,%eax -c01014cd: a3 a8 a0 11 c0 mov %eax,0xc011a0a8 - shift ^= togglecode[data]; -c01014d2: 0f b6 45 f3 movzbl -0xd(%ebp),%eax -c01014d6: 0f b6 80 60 91 11 c0 movzbl -0x3fee6ea0(%eax),%eax -c01014dd: 0f b6 d0 movzbl %al,%edx -c01014e0: a1 a8 a0 11 c0 mov 0xc011a0a8,%eax -c01014e5: 31 d0 xor %edx,%eax -c01014e7: a3 a8 a0 11 c0 mov %eax,0xc011a0a8 - - c = charcode[shift & (CTL | SHIFT)][data]; -c01014ec: a1 a8 a0 11 c0 mov 0xc011a0a8,%eax -c01014f1: 83 e0 03 and $0x3,%eax -c01014f4: 8b 14 85 60 95 11 c0 mov -0x3fee6aa0(,%eax,4),%edx -c01014fb: 0f b6 45 f3 movzbl -0xd(%ebp),%eax -c01014ff: 01 d0 add %edx,%eax -c0101501: 0f b6 00 movzbl (%eax),%eax -c0101504: 0f b6 c0 movzbl %al,%eax -c0101507: 89 45 f4 mov %eax,-0xc(%ebp) - if (shift & CAPSLOCK) { -c010150a: a1 a8 a0 11 c0 mov 0xc011a0a8,%eax -c010150f: 83 e0 08 and $0x8,%eax -c0101512: 85 c0 test %eax,%eax -c0101514: 74 22 je c0101538 - if ('a' <= c && c <= 'z') -c0101516: 83 7d f4 60 cmpl $0x60,-0xc(%ebp) -c010151a: 7e 0c jle c0101528 -c010151c: 83 7d f4 7a cmpl $0x7a,-0xc(%ebp) -c0101520: 7f 06 jg c0101528 - c += 'A' - 'a'; -c0101522: 83 6d f4 20 subl $0x20,-0xc(%ebp) -c0101526: eb 10 jmp c0101538 - else if ('A' <= c && c <= 'Z') -c0101528: 83 7d f4 40 cmpl $0x40,-0xc(%ebp) -c010152c: 7e 0a jle c0101538 -c010152e: 83 7d f4 5a cmpl $0x5a,-0xc(%ebp) -c0101532: 7f 04 jg c0101538 - c += 'a' - 'A'; -c0101534: 83 45 f4 20 addl $0x20,-0xc(%ebp) - } - - // Process special keys - // Ctrl-Alt-Del: reboot - if (!(~shift & (CTL | ALT)) && c == KEY_DEL) { -c0101538: a1 a8 a0 11 c0 mov 0xc011a0a8,%eax -c010153d: f7 d0 not %eax -c010153f: 83 e0 06 and $0x6,%eax -c0101542: 85 c0 test %eax,%eax -c0101544: 75 2c jne c0101572 -c0101546: 81 7d f4 e9 00 00 00 cmpl $0xe9,-0xc(%ebp) -c010154d: 75 23 jne c0101572 - cprintf("Rebooting!\n"); -c010154f: 83 ec 0c sub $0xc,%esp -c0101552: 68 1d 6c 10 c0 push $0xc0106c1d -c0101557: e8 0b ed ff ff call c0100267 -c010155c: 83 c4 10 add $0x10,%esp -c010155f: 66 c7 45 ee 92 00 movw $0x92,-0x12(%ebp) -c0101565: c6 45 e9 03 movb $0x3,-0x17(%ebp) - : "memory", "cc"); -} - -static inline void -outb(uint16_t port, uint8_t data) { - asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); -c0101569: 0f b6 45 e9 movzbl -0x17(%ebp),%eax -c010156d: 0f b7 55 ee movzwl -0x12(%ebp),%edx -c0101571: ee out %al,(%dx) - outb(0x92, 0x3); // courtesy of Chris Frost - } - return c; -c0101572: 8b 45 f4 mov -0xc(%ebp),%eax -} -c0101575: c9 leave -c0101576: c3 ret - -c0101577 : - -/* kbd_intr - try to feed input characters from keyboard */ -static void -kbd_intr(void) { -c0101577: 55 push %ebp -c0101578: 89 e5 mov %esp,%ebp -c010157a: 83 ec 08 sub $0x8,%esp - cons_intr(kbd_proc_data); -c010157d: 83 ec 0c sub $0xc,%esp -c0101580: 68 ea 13 10 c0 push $0xc01013ea -c0101585: e8 9b fd ff ff call c0101325 -c010158a: 83 c4 10 add $0x10,%esp -} -c010158d: 90 nop -c010158e: c9 leave -c010158f: c3 ret - -c0101590 : - -static void -kbd_init(void) { -c0101590: 55 push %ebp -c0101591: 89 e5 mov %esp,%ebp -c0101593: 83 ec 08 sub $0x8,%esp - // drain the kbd buffer - kbd_intr(); -c0101596: e8 dc ff ff ff call c0101577 - pic_enable(IRQ_KBD); -c010159b: 83 ec 0c sub $0xc,%esp -c010159e: 6a 01 push $0x1 -c01015a0: e8 4b 01 00 00 call c01016f0 -c01015a5: 83 c4 10 add $0x10,%esp -} -c01015a8: 90 nop -c01015a9: c9 leave -c01015aa: c3 ret - -c01015ab : - -/* cons_init - initializes the console devices */ -void -cons_init(void) { -c01015ab: 55 push %ebp -c01015ac: 89 e5 mov %esp,%ebp -c01015ae: 83 ec 08 sub $0x8,%esp - cga_init(); -c01015b1: e8 8c f8 ff ff call c0100e42 - serial_init(); -c01015b6: e8 6e f9 ff ff call c0100f29 - kbd_init(); -c01015bb: e8 d0 ff ff ff call c0101590 - if (!serial_exists) { -c01015c0: a1 88 9e 11 c0 mov 0xc0119e88,%eax -c01015c5: 85 c0 test %eax,%eax -c01015c7: 75 10 jne c01015d9 - cprintf("serial port does not exist!!\n"); -c01015c9: 83 ec 0c sub $0xc,%esp -c01015cc: 68 29 6c 10 c0 push $0xc0106c29 -c01015d1: e8 91 ec ff ff call c0100267 -c01015d6: 83 c4 10 add $0x10,%esp - } -} -c01015d9: 90 nop -c01015da: c9 leave -c01015db: c3 ret - -c01015dc : - -/* cons_putc - print a single character @c to console devices */ -void -cons_putc(int c) { -c01015dc: 55 push %ebp -c01015dd: 89 e5 mov %esp,%ebp -c01015df: 83 ec 18 sub $0x18,%esp - bool intr_flag; - local_intr_save(intr_flag); -c01015e2: e8 d4 f7 ff ff call c0100dbb <__intr_save> -c01015e7: 89 45 f4 mov %eax,-0xc(%ebp) - { - lpt_putc(c); -c01015ea: 83 ec 0c sub $0xc,%esp -c01015ed: ff 75 08 pushl 0x8(%ebp) -c01015f0: e8 93 fa ff ff call c0101088 -c01015f5: 83 c4 10 add $0x10,%esp - cga_putc(c); -c01015f8: 83 ec 0c sub $0xc,%esp -c01015fb: ff 75 08 pushl 0x8(%ebp) -c01015fe: e8 bc fa ff ff call c01010bf -c0101603: 83 c4 10 add $0x10,%esp - serial_putc(c); -c0101606: 83 ec 0c sub $0xc,%esp -c0101609: ff 75 08 pushl 0x8(%ebp) -c010160c: e8 dd fc ff ff call c01012ee -c0101611: 83 c4 10 add $0x10,%esp - } - local_intr_restore(intr_flag); -c0101614: 83 ec 0c sub $0xc,%esp -c0101617: ff 75 f4 pushl -0xc(%ebp) -c010161a: e8 c6 f7 ff ff call c0100de5 <__intr_restore> -c010161f: 83 c4 10 add $0x10,%esp -} -c0101622: 90 nop -c0101623: c9 leave -c0101624: c3 ret - -c0101625 : -/* * - * cons_getc - return the next input character from console, - * or 0 if none waiting. - * */ -int -cons_getc(void) { -c0101625: 55 push %ebp -c0101626: 89 e5 mov %esp,%ebp -c0101628: 83 ec 18 sub $0x18,%esp - int c = 0; -c010162b: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - bool intr_flag; - local_intr_save(intr_flag); -c0101632: e8 84 f7 ff ff call c0100dbb <__intr_save> -c0101637: 89 45 f0 mov %eax,-0x10(%ebp) - { - // poll for any pending input characters, - // so that this function works even when interrupts are disabled - // (e.g., when called from the kernel monitor). - serial_intr(); -c010163a: e8 89 fd ff ff call c01013c8 - kbd_intr(); -c010163f: e8 33 ff ff ff call c0101577 - - // grab the next character from the input buffer. - if (cons.rpos != cons.wpos) { -c0101644: 8b 15 a0 a0 11 c0 mov 0xc011a0a0,%edx -c010164a: a1 a4 a0 11 c0 mov 0xc011a0a4,%eax -c010164f: 39 c2 cmp %eax,%edx -c0101651: 74 31 je c0101684 - c = cons.buf[cons.rpos ++]; -c0101653: a1 a0 a0 11 c0 mov 0xc011a0a0,%eax -c0101658: 8d 50 01 lea 0x1(%eax),%edx -c010165b: 89 15 a0 a0 11 c0 mov %edx,0xc011a0a0 -c0101661: 0f b6 80 a0 9e 11 c0 movzbl -0x3fee6160(%eax),%eax -c0101668: 0f b6 c0 movzbl %al,%eax -c010166b: 89 45 f4 mov %eax,-0xc(%ebp) - if (cons.rpos == CONSBUFSIZE) { -c010166e: a1 a0 a0 11 c0 mov 0xc011a0a0,%eax -c0101673: 3d 00 02 00 00 cmp $0x200,%eax -c0101678: 75 0a jne c0101684 - cons.rpos = 0; -c010167a: c7 05 a0 a0 11 c0 00 movl $0x0,0xc011a0a0 -c0101681: 00 00 00 - } - } - } - local_intr_restore(intr_flag); -c0101684: 83 ec 0c sub $0xc,%esp -c0101687: ff 75 f0 pushl -0x10(%ebp) -c010168a: e8 56 f7 ff ff call c0100de5 <__intr_restore> -c010168f: 83 c4 10 add $0x10,%esp - return c; -c0101692: 8b 45 f4 mov -0xc(%ebp),%eax -} -c0101695: c9 leave -c0101696: c3 ret - -c0101697 : -// Initial IRQ mask has interrupt 2 enabled (for slave 8259A). -static uint16_t irq_mask = 0xFFFF & ~(1 << IRQ_SLAVE); -static bool did_init = 0; - -static void -pic_setmask(uint16_t mask) { -c0101697: 55 push %ebp -c0101698: 89 e5 mov %esp,%ebp -c010169a: 83 ec 14 sub $0x14,%esp -c010169d: 8b 45 08 mov 0x8(%ebp),%eax -c01016a0: 66 89 45 ec mov %ax,-0x14(%ebp) - irq_mask = mask; -c01016a4: 0f b7 45 ec movzwl -0x14(%ebp),%eax -c01016a8: 66 a3 70 95 11 c0 mov %ax,0xc0119570 - if (did_init) { -c01016ae: a1 ac a0 11 c0 mov 0xc011a0ac,%eax -c01016b3: 85 c0 test %eax,%eax -c01016b5: 74 36 je c01016ed - outb(IO_PIC1 + 1, mask); -c01016b7: 0f b7 45 ec movzwl -0x14(%ebp),%eax -c01016bb: 0f b6 c0 movzbl %al,%eax -c01016be: 66 c7 45 fe 21 00 movw $0x21,-0x2(%ebp) -c01016c4: 88 45 fa mov %al,-0x6(%ebp) -c01016c7: 0f b6 45 fa movzbl -0x6(%ebp),%eax -c01016cb: 0f b7 55 fe movzwl -0x2(%ebp),%edx -c01016cf: ee out %al,(%dx) - outb(IO_PIC2 + 1, mask >> 8); -c01016d0: 0f b7 45 ec movzwl -0x14(%ebp),%eax -c01016d4: 66 c1 e8 08 shr $0x8,%ax -c01016d8: 0f b6 c0 movzbl %al,%eax -c01016db: 66 c7 45 fc a1 00 movw $0xa1,-0x4(%ebp) -c01016e1: 88 45 fb mov %al,-0x5(%ebp) -c01016e4: 0f b6 45 fb movzbl -0x5(%ebp),%eax -c01016e8: 0f b7 55 fc movzwl -0x4(%ebp),%edx -c01016ec: ee out %al,(%dx) - } -} -c01016ed: 90 nop -c01016ee: c9 leave -c01016ef: c3 ret - -c01016f0 : - -void -pic_enable(unsigned int irq) { -c01016f0: 55 push %ebp -c01016f1: 89 e5 mov %esp,%ebp - pic_setmask(irq_mask & ~(1 << irq)); -c01016f3: 8b 45 08 mov 0x8(%ebp),%eax -c01016f6: ba 01 00 00 00 mov $0x1,%edx -c01016fb: 89 c1 mov %eax,%ecx -c01016fd: d3 e2 shl %cl,%edx -c01016ff: 89 d0 mov %edx,%eax -c0101701: f7 d0 not %eax -c0101703: 89 c2 mov %eax,%edx -c0101705: 0f b7 05 70 95 11 c0 movzwl 0xc0119570,%eax -c010170c: 21 d0 and %edx,%eax -c010170e: 0f b7 c0 movzwl %ax,%eax -c0101711: 50 push %eax -c0101712: e8 80 ff ff ff call c0101697 -c0101717: 83 c4 04 add $0x4,%esp -} -c010171a: 90 nop -c010171b: c9 leave -c010171c: c3 ret - -c010171d : - -/* pic_init - initialize the 8259A interrupt controllers */ -void -pic_init(void) { -c010171d: 55 push %ebp -c010171e: 89 e5 mov %esp,%ebp -c0101720: 83 ec 30 sub $0x30,%esp - did_init = 1; -c0101723: c7 05 ac a0 11 c0 01 movl $0x1,0xc011a0ac -c010172a: 00 00 00 -c010172d: 66 c7 45 fe 21 00 movw $0x21,-0x2(%ebp) -c0101733: c6 45 d6 ff movb $0xff,-0x2a(%ebp) -c0101737: 0f b6 45 d6 movzbl -0x2a(%ebp),%eax -c010173b: 0f b7 55 fe movzwl -0x2(%ebp),%edx -c010173f: ee out %al,(%dx) -c0101740: 66 c7 45 fc a1 00 movw $0xa1,-0x4(%ebp) -c0101746: c6 45 d7 ff movb $0xff,-0x29(%ebp) -c010174a: 0f b6 45 d7 movzbl -0x29(%ebp),%eax -c010174e: 0f b7 55 fc movzwl -0x4(%ebp),%edx -c0101752: ee out %al,(%dx) -c0101753: 66 c7 45 fa 20 00 movw $0x20,-0x6(%ebp) -c0101759: c6 45 d8 11 movb $0x11,-0x28(%ebp) -c010175d: 0f b6 45 d8 movzbl -0x28(%ebp),%eax -c0101761: 0f b7 55 fa movzwl -0x6(%ebp),%edx -c0101765: ee out %al,(%dx) -c0101766: 66 c7 45 f8 21 00 movw $0x21,-0x8(%ebp) -c010176c: c6 45 d9 20 movb $0x20,-0x27(%ebp) -c0101770: 0f b6 45 d9 movzbl -0x27(%ebp),%eax -c0101774: 0f b7 55 f8 movzwl -0x8(%ebp),%edx -c0101778: ee out %al,(%dx) -c0101779: 66 c7 45 f6 21 00 movw $0x21,-0xa(%ebp) -c010177f: c6 45 da 04 movb $0x4,-0x26(%ebp) -c0101783: 0f b6 45 da movzbl -0x26(%ebp),%eax -c0101787: 0f b7 55 f6 movzwl -0xa(%ebp),%edx -c010178b: ee out %al,(%dx) -c010178c: 66 c7 45 f4 21 00 movw $0x21,-0xc(%ebp) -c0101792: c6 45 db 03 movb $0x3,-0x25(%ebp) -c0101796: 0f b6 45 db movzbl -0x25(%ebp),%eax -c010179a: 0f b7 55 f4 movzwl -0xc(%ebp),%edx -c010179e: ee out %al,(%dx) -c010179f: 66 c7 45 f2 a0 00 movw $0xa0,-0xe(%ebp) -c01017a5: c6 45 dc 11 movb $0x11,-0x24(%ebp) -c01017a9: 0f b6 45 dc movzbl -0x24(%ebp),%eax -c01017ad: 0f b7 55 f2 movzwl -0xe(%ebp),%edx -c01017b1: ee out %al,(%dx) -c01017b2: 66 c7 45 f0 a1 00 movw $0xa1,-0x10(%ebp) -c01017b8: c6 45 dd 28 movb $0x28,-0x23(%ebp) -c01017bc: 0f b6 45 dd movzbl -0x23(%ebp),%eax -c01017c0: 0f b7 55 f0 movzwl -0x10(%ebp),%edx -c01017c4: ee out %al,(%dx) -c01017c5: 66 c7 45 ee a1 00 movw $0xa1,-0x12(%ebp) -c01017cb: c6 45 de 02 movb $0x2,-0x22(%ebp) -c01017cf: 0f b6 45 de movzbl -0x22(%ebp),%eax -c01017d3: 0f b7 55 ee movzwl -0x12(%ebp),%edx -c01017d7: ee out %al,(%dx) -c01017d8: 66 c7 45 ec a1 00 movw $0xa1,-0x14(%ebp) -c01017de: c6 45 df 03 movb $0x3,-0x21(%ebp) -c01017e2: 0f b6 45 df movzbl -0x21(%ebp),%eax -c01017e6: 0f b7 55 ec movzwl -0x14(%ebp),%edx -c01017ea: ee out %al,(%dx) -c01017eb: 66 c7 45 ea 20 00 movw $0x20,-0x16(%ebp) -c01017f1: c6 45 e0 68 movb $0x68,-0x20(%ebp) -c01017f5: 0f b6 45 e0 movzbl -0x20(%ebp),%eax -c01017f9: 0f b7 55 ea movzwl -0x16(%ebp),%edx -c01017fd: ee out %al,(%dx) -c01017fe: 66 c7 45 e8 20 00 movw $0x20,-0x18(%ebp) -c0101804: c6 45 e1 0a movb $0xa,-0x1f(%ebp) -c0101808: 0f b6 45 e1 movzbl -0x1f(%ebp),%eax -c010180c: 0f b7 55 e8 movzwl -0x18(%ebp),%edx -c0101810: ee out %al,(%dx) -c0101811: 66 c7 45 e6 a0 00 movw $0xa0,-0x1a(%ebp) -c0101817: c6 45 e2 68 movb $0x68,-0x1e(%ebp) -c010181b: 0f b6 45 e2 movzbl -0x1e(%ebp),%eax -c010181f: 0f b7 55 e6 movzwl -0x1a(%ebp),%edx -c0101823: ee out %al,(%dx) -c0101824: 66 c7 45 e4 a0 00 movw $0xa0,-0x1c(%ebp) -c010182a: c6 45 e3 0a movb $0xa,-0x1d(%ebp) -c010182e: 0f b6 45 e3 movzbl -0x1d(%ebp),%eax -c0101832: 0f b7 55 e4 movzwl -0x1c(%ebp),%edx -c0101836: ee out %al,(%dx) - outb(IO_PIC1, 0x0a); // read IRR by default - - outb(IO_PIC2, 0x68); // OCW3 - outb(IO_PIC2, 0x0a); // OCW3 - - if (irq_mask != 0xFFFF) { -c0101837: 0f b7 05 70 95 11 c0 movzwl 0xc0119570,%eax -c010183e: 66 83 f8 ff cmp $0xffff,%ax -c0101842: 74 13 je c0101857 - pic_setmask(irq_mask); -c0101844: 0f b7 05 70 95 11 c0 movzwl 0xc0119570,%eax -c010184b: 0f b7 c0 movzwl %ax,%eax -c010184e: 50 push %eax -c010184f: e8 43 fe ff ff call c0101697 -c0101854: 83 c4 04 add $0x4,%esp - } -} -c0101857: 90 nop -c0101858: c9 leave -c0101859: c3 ret - -c010185a : -#include -#include - -/* intr_enable - enable irq interrupt */ -void -intr_enable(void) { -c010185a: 55 push %ebp -c010185b: 89 e5 mov %esp,%ebp - asm volatile ("lidt (%0)" :: "r" (pd) : "memory"); -} - -static inline void -sti(void) { - asm volatile ("sti"); -c010185d: fb sti - sti(); -} -c010185e: 90 nop -c010185f: 5d pop %ebp -c0101860: c3 ret - -c0101861 : - -/* intr_disable - disable irq interrupt */ -void -intr_disable(void) { -c0101861: 55 push %ebp -c0101862: 89 e5 mov %esp,%ebp -} - -static inline void -cli(void) { - asm volatile ("cli" ::: "memory"); -c0101864: fa cli - cli(); -} -c0101865: 90 nop -c0101866: 5d pop %ebp -c0101867: c3 ret - -c0101868 : -#include -#include - -#define TICK_NUM 100 - -static void print_ticks() { -c0101868: 55 push %ebp -c0101869: 89 e5 mov %esp,%ebp -c010186b: 83 ec 08 sub $0x8,%esp - cprintf("%d ticks\n",TICK_NUM); -c010186e: 83 ec 08 sub $0x8,%esp -c0101871: 6a 64 push $0x64 -c0101873: 68 60 6c 10 c0 push $0xc0106c60 -c0101878: e8 ea e9 ff ff call c0100267 -c010187d: 83 c4 10 add $0x10,%esp -#ifdef DEBUG_GRADE - cprintf("End of Test.\n"); -c0101880: 83 ec 0c sub $0xc,%esp -c0101883: 68 6a 6c 10 c0 push $0xc0106c6a -c0101888: e8 da e9 ff ff call c0100267 -c010188d: 83 c4 10 add $0x10,%esp - panic("EOT: kernel seems ok."); -c0101890: 83 ec 04 sub $0x4,%esp -c0101893: 68 78 6c 10 c0 push $0xc0106c78 -c0101898: 6a 12 push $0x12 -c010189a: 68 8e 6c 10 c0 push $0xc0106c8e -c010189f: e8 29 eb ff ff call c01003cd <__panic> - -c01018a4 : - sizeof(idt) - 1, (uintptr_t)idt -}; - -/* idt_init - initialize IDT to each of the entry points in kern/trap/vectors.S */ -void -idt_init(void) { -c01018a4: 55 push %ebp -c01018a5: 89 e5 mov %esp,%ebp -c01018a7: 83 ec 10 sub $0x10,%esp - * (3) After setup the contents of IDT, you will let CPU know where is the IDT by using 'lidt' instruction. - * You don't know the meaning of this instruction? just google it! and check the libs/x86.h to know more. - * Notice: the argument of lidt is idt_pd. try to find it! - */ - extern uintptr_t __vectors[]; - for (int i = 0; i < 256; ++ i) { -c01018aa: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp) -c01018b1: e9 97 01 00 00 jmp c0101a4d -// cprintf("vectors %d: 0x%08x\n", i, __vectors[i]); - if (i == T_SYSCALL || i == T_SWITCH_TOK) { -c01018b6: 81 7d fc 80 00 00 00 cmpl $0x80,-0x4(%ebp) -c01018bd: 74 0a je c01018c9 -c01018bf: 83 7d fc 79 cmpl $0x79,-0x4(%ebp) -c01018c3: 0f 85 c1 00 00 00 jne c010198a - SETGATE(idt[i], 1, KERNEL_CS, __vectors[i], DPL_USER); -c01018c9: 8b 45 fc mov -0x4(%ebp),%eax -c01018cc: 8b 04 85 00 96 11 c0 mov -0x3fee6a00(,%eax,4),%eax -c01018d3: 89 c2 mov %eax,%edx -c01018d5: 8b 45 fc mov -0x4(%ebp),%eax -c01018d8: 66 89 14 c5 c0 a0 11 mov %dx,-0x3fee5f40(,%eax,8) -c01018df: c0 -c01018e0: 8b 45 fc mov -0x4(%ebp),%eax -c01018e3: 66 c7 04 c5 c2 a0 11 movw $0x8,-0x3fee5f3e(,%eax,8) -c01018ea: c0 08 00 -c01018ed: 8b 45 fc mov -0x4(%ebp),%eax -c01018f0: 0f b6 14 c5 c4 a0 11 movzbl -0x3fee5f3c(,%eax,8),%edx -c01018f7: c0 -c01018f8: 83 e2 e0 and $0xffffffe0,%edx -c01018fb: 88 14 c5 c4 a0 11 c0 mov %dl,-0x3fee5f3c(,%eax,8) -c0101902: 8b 45 fc mov -0x4(%ebp),%eax -c0101905: 0f b6 14 c5 c4 a0 11 movzbl -0x3fee5f3c(,%eax,8),%edx -c010190c: c0 -c010190d: 83 e2 1f and $0x1f,%edx -c0101910: 88 14 c5 c4 a0 11 c0 mov %dl,-0x3fee5f3c(,%eax,8) -c0101917: 8b 45 fc mov -0x4(%ebp),%eax -c010191a: 0f b6 14 c5 c5 a0 11 movzbl -0x3fee5f3b(,%eax,8),%edx -c0101921: c0 -c0101922: 83 ca 0f or $0xf,%edx -c0101925: 88 14 c5 c5 a0 11 c0 mov %dl,-0x3fee5f3b(,%eax,8) -c010192c: 8b 45 fc mov -0x4(%ebp),%eax -c010192f: 0f b6 14 c5 c5 a0 11 movzbl -0x3fee5f3b(,%eax,8),%edx -c0101936: c0 -c0101937: 83 e2 ef and $0xffffffef,%edx -c010193a: 88 14 c5 c5 a0 11 c0 mov %dl,-0x3fee5f3b(,%eax,8) -c0101941: 8b 45 fc mov -0x4(%ebp),%eax -c0101944: 0f b6 14 c5 c5 a0 11 movzbl -0x3fee5f3b(,%eax,8),%edx -c010194b: c0 -c010194c: 83 ca 60 or $0x60,%edx -c010194f: 88 14 c5 c5 a0 11 c0 mov %dl,-0x3fee5f3b(,%eax,8) -c0101956: 8b 45 fc mov -0x4(%ebp),%eax -c0101959: 0f b6 14 c5 c5 a0 11 movzbl -0x3fee5f3b(,%eax,8),%edx -c0101960: c0 -c0101961: 83 ca 80 or $0xffffff80,%edx -c0101964: 88 14 c5 c5 a0 11 c0 mov %dl,-0x3fee5f3b(,%eax,8) -c010196b: 8b 45 fc mov -0x4(%ebp),%eax -c010196e: 8b 04 85 00 96 11 c0 mov -0x3fee6a00(,%eax,4),%eax -c0101975: c1 e8 10 shr $0x10,%eax -c0101978: 89 c2 mov %eax,%edx -c010197a: 8b 45 fc mov -0x4(%ebp),%eax -c010197d: 66 89 14 c5 c6 a0 11 mov %dx,-0x3fee5f3a(,%eax,8) -c0101984: c0 -c0101985: e9 bf 00 00 00 jmp c0101a49 - } else { - SETGATE(idt[i], 0, KERNEL_CS, __vectors[i], DPL_KERNEL); -c010198a: 8b 45 fc mov -0x4(%ebp),%eax -c010198d: 8b 04 85 00 96 11 c0 mov -0x3fee6a00(,%eax,4),%eax -c0101994: 89 c2 mov %eax,%edx -c0101996: 8b 45 fc mov -0x4(%ebp),%eax -c0101999: 66 89 14 c5 c0 a0 11 mov %dx,-0x3fee5f40(,%eax,8) -c01019a0: c0 -c01019a1: 8b 45 fc mov -0x4(%ebp),%eax -c01019a4: 66 c7 04 c5 c2 a0 11 movw $0x8,-0x3fee5f3e(,%eax,8) -c01019ab: c0 08 00 -c01019ae: 8b 45 fc mov -0x4(%ebp),%eax -c01019b1: 0f b6 14 c5 c4 a0 11 movzbl -0x3fee5f3c(,%eax,8),%edx -c01019b8: c0 -c01019b9: 83 e2 e0 and $0xffffffe0,%edx -c01019bc: 88 14 c5 c4 a0 11 c0 mov %dl,-0x3fee5f3c(,%eax,8) -c01019c3: 8b 45 fc mov -0x4(%ebp),%eax -c01019c6: 0f b6 14 c5 c4 a0 11 movzbl -0x3fee5f3c(,%eax,8),%edx -c01019cd: c0 -c01019ce: 83 e2 1f and $0x1f,%edx -c01019d1: 88 14 c5 c4 a0 11 c0 mov %dl,-0x3fee5f3c(,%eax,8) -c01019d8: 8b 45 fc mov -0x4(%ebp),%eax -c01019db: 0f b6 14 c5 c5 a0 11 movzbl -0x3fee5f3b(,%eax,8),%edx -c01019e2: c0 -c01019e3: 83 e2 f0 and $0xfffffff0,%edx -c01019e6: 83 ca 0e or $0xe,%edx -c01019e9: 88 14 c5 c5 a0 11 c0 mov %dl,-0x3fee5f3b(,%eax,8) -c01019f0: 8b 45 fc mov -0x4(%ebp),%eax -c01019f3: 0f b6 14 c5 c5 a0 11 movzbl -0x3fee5f3b(,%eax,8),%edx -c01019fa: c0 -c01019fb: 83 e2 ef and $0xffffffef,%edx -c01019fe: 88 14 c5 c5 a0 11 c0 mov %dl,-0x3fee5f3b(,%eax,8) -c0101a05: 8b 45 fc mov -0x4(%ebp),%eax -c0101a08: 0f b6 14 c5 c5 a0 11 movzbl -0x3fee5f3b(,%eax,8),%edx -c0101a0f: c0 -c0101a10: 83 e2 9f and $0xffffff9f,%edx -c0101a13: 88 14 c5 c5 a0 11 c0 mov %dl,-0x3fee5f3b(,%eax,8) -c0101a1a: 8b 45 fc mov -0x4(%ebp),%eax -c0101a1d: 0f b6 14 c5 c5 a0 11 movzbl -0x3fee5f3b(,%eax,8),%edx -c0101a24: c0 -c0101a25: 83 ca 80 or $0xffffff80,%edx -c0101a28: 88 14 c5 c5 a0 11 c0 mov %dl,-0x3fee5f3b(,%eax,8) -c0101a2f: 8b 45 fc mov -0x4(%ebp),%eax -c0101a32: 8b 04 85 00 96 11 c0 mov -0x3fee6a00(,%eax,4),%eax -c0101a39: c1 e8 10 shr $0x10,%eax -c0101a3c: 89 c2 mov %eax,%edx -c0101a3e: 8b 45 fc mov -0x4(%ebp),%eax -c0101a41: 66 89 14 c5 c6 a0 11 mov %dx,-0x3fee5f3a(,%eax,8) -c0101a48: c0 - * (3) After setup the contents of IDT, you will let CPU know where is the IDT by using 'lidt' instruction. - * You don't know the meaning of this instruction? just google it! and check the libs/x86.h to know more. - * Notice: the argument of lidt is idt_pd. try to find it! - */ - extern uintptr_t __vectors[]; - for (int i = 0; i < 256; ++ i) { -c0101a49: 83 45 fc 01 addl $0x1,-0x4(%ebp) -c0101a4d: 81 7d fc ff 00 00 00 cmpl $0xff,-0x4(%ebp) -c0101a54: 0f 8e 5c fe ff ff jle c01018b6 -c0101a5a: c7 45 f8 80 95 11 c0 movl $0xc0119580,-0x8(%ebp) - } -} - -static inline void -lidt(struct pseudodesc *pd) { - asm volatile ("lidt (%0)" :: "r" (pd) : "memory"); -c0101a61: 8b 45 f8 mov -0x8(%ebp),%eax -c0101a64: 0f 01 18 lidtl (%eax) - } else { - SETGATE(idt[i], 0, KERNEL_CS, __vectors[i], DPL_KERNEL); - } - } - lidt(&idt_pd); -} -c0101a67: 90 nop -c0101a68: c9 leave -c0101a69: c3 ret - -c0101a6a : - -static const char * -trapname(int trapno) { -c0101a6a: 55 push %ebp -c0101a6b: 89 e5 mov %esp,%ebp - "Alignment Check", - "Machine-Check", - "SIMD Floating-Point Exception" - }; - - if (trapno < sizeof(excnames)/sizeof(const char * const)) { -c0101a6d: 8b 45 08 mov 0x8(%ebp),%eax -c0101a70: 83 f8 13 cmp $0x13,%eax -c0101a73: 77 0c ja c0101a81 - return excnames[trapno]; -c0101a75: 8b 45 08 mov 0x8(%ebp),%eax -c0101a78: 8b 04 85 00 70 10 c0 mov -0x3fef9000(,%eax,4),%eax -c0101a7f: eb 18 jmp c0101a99 - } - if (trapno >= IRQ_OFFSET && trapno < IRQ_OFFSET + 16) { -c0101a81: 83 7d 08 1f cmpl $0x1f,0x8(%ebp) -c0101a85: 7e 0d jle c0101a94 -c0101a87: 83 7d 08 2f cmpl $0x2f,0x8(%ebp) -c0101a8b: 7f 07 jg c0101a94 - return "Hardware Interrupt"; -c0101a8d: b8 9f 6c 10 c0 mov $0xc0106c9f,%eax -c0101a92: eb 05 jmp c0101a99 - } - return "(unknown trap)"; -c0101a94: b8 b2 6c 10 c0 mov $0xc0106cb2,%eax -} -c0101a99: 5d pop %ebp -c0101a9a: c3 ret - -c0101a9b : - -/* trap_in_kernel - test if trap happened in kernel */ -bool -trap_in_kernel(struct trapframe *tf) { -c0101a9b: 55 push %ebp -c0101a9c: 89 e5 mov %esp,%ebp - return (tf->tf_cs == (uint16_t)KERNEL_CS); -c0101a9e: 8b 45 08 mov 0x8(%ebp),%eax -c0101aa1: 0f b7 40 3c movzwl 0x3c(%eax),%eax -c0101aa5: 66 83 f8 08 cmp $0x8,%ax -c0101aa9: 0f 94 c0 sete %al -c0101aac: 0f b6 c0 movzbl %al,%eax -} -c0101aaf: 5d pop %ebp -c0101ab0: c3 ret - -c0101ab1 : - "TF", "IF", "DF", "OF", NULL, NULL, "NT", NULL, - "RF", "VM", "AC", "VIF", "VIP", "ID", NULL, NULL, -}; - -void -print_trapframe(struct trapframe *tf) { -c0101ab1: 55 push %ebp -c0101ab2: 89 e5 mov %esp,%ebp -c0101ab4: 83 ec 18 sub $0x18,%esp - cprintf("trapframe at %p\n", tf); -c0101ab7: 83 ec 08 sub $0x8,%esp -c0101aba: ff 75 08 pushl 0x8(%ebp) -c0101abd: 68 f3 6c 10 c0 push $0xc0106cf3 -c0101ac2: e8 a0 e7 ff ff call c0100267 -c0101ac7: 83 c4 10 add $0x10,%esp - print_regs(&tf->tf_regs); -c0101aca: 8b 45 08 mov 0x8(%ebp),%eax -c0101acd: 83 ec 0c sub $0xc,%esp -c0101ad0: 50 push %eax -c0101ad1: e8 b8 01 00 00 call c0101c8e -c0101ad6: 83 c4 10 add $0x10,%esp - cprintf(" ds 0x----%04x\n", tf->tf_ds); -c0101ad9: 8b 45 08 mov 0x8(%ebp),%eax -c0101adc: 0f b7 40 2c movzwl 0x2c(%eax),%eax -c0101ae0: 0f b7 c0 movzwl %ax,%eax -c0101ae3: 83 ec 08 sub $0x8,%esp -c0101ae6: 50 push %eax -c0101ae7: 68 04 6d 10 c0 push $0xc0106d04 -c0101aec: e8 76 e7 ff ff call c0100267 -c0101af1: 83 c4 10 add $0x10,%esp - cprintf(" es 0x----%04x\n", tf->tf_es); -c0101af4: 8b 45 08 mov 0x8(%ebp),%eax -c0101af7: 0f b7 40 28 movzwl 0x28(%eax),%eax -c0101afb: 0f b7 c0 movzwl %ax,%eax -c0101afe: 83 ec 08 sub $0x8,%esp -c0101b01: 50 push %eax -c0101b02: 68 17 6d 10 c0 push $0xc0106d17 -c0101b07: e8 5b e7 ff ff call c0100267 -c0101b0c: 83 c4 10 add $0x10,%esp - cprintf(" fs 0x----%04x\n", tf->tf_fs); -c0101b0f: 8b 45 08 mov 0x8(%ebp),%eax -c0101b12: 0f b7 40 24 movzwl 0x24(%eax),%eax -c0101b16: 0f b7 c0 movzwl %ax,%eax -c0101b19: 83 ec 08 sub $0x8,%esp -c0101b1c: 50 push %eax -c0101b1d: 68 2a 6d 10 c0 push $0xc0106d2a -c0101b22: e8 40 e7 ff ff call c0100267 -c0101b27: 83 c4 10 add $0x10,%esp - cprintf(" gs 0x----%04x\n", tf->tf_gs); -c0101b2a: 8b 45 08 mov 0x8(%ebp),%eax -c0101b2d: 0f b7 40 20 movzwl 0x20(%eax),%eax -c0101b31: 0f b7 c0 movzwl %ax,%eax -c0101b34: 83 ec 08 sub $0x8,%esp -c0101b37: 50 push %eax -c0101b38: 68 3d 6d 10 c0 push $0xc0106d3d -c0101b3d: e8 25 e7 ff ff call c0100267 -c0101b42: 83 c4 10 add $0x10,%esp - cprintf(" trap 0x%08x %s\n", tf->tf_trapno, trapname(tf->tf_trapno)); -c0101b45: 8b 45 08 mov 0x8(%ebp),%eax -c0101b48: 8b 40 30 mov 0x30(%eax),%eax -c0101b4b: 83 ec 0c sub $0xc,%esp -c0101b4e: 50 push %eax -c0101b4f: e8 16 ff ff ff call c0101a6a -c0101b54: 83 c4 10 add $0x10,%esp -c0101b57: 89 c2 mov %eax,%edx -c0101b59: 8b 45 08 mov 0x8(%ebp),%eax -c0101b5c: 8b 40 30 mov 0x30(%eax),%eax -c0101b5f: 83 ec 04 sub $0x4,%esp -c0101b62: 52 push %edx -c0101b63: 50 push %eax -c0101b64: 68 50 6d 10 c0 push $0xc0106d50 -c0101b69: e8 f9 e6 ff ff call c0100267 -c0101b6e: 83 c4 10 add $0x10,%esp - cprintf(" err 0x%08x\n", tf->tf_err); -c0101b71: 8b 45 08 mov 0x8(%ebp),%eax -c0101b74: 8b 40 34 mov 0x34(%eax),%eax -c0101b77: 83 ec 08 sub $0x8,%esp -c0101b7a: 50 push %eax -c0101b7b: 68 62 6d 10 c0 push $0xc0106d62 -c0101b80: e8 e2 e6 ff ff call c0100267 -c0101b85: 83 c4 10 add $0x10,%esp - cprintf(" eip 0x%08x\n", tf->tf_eip); -c0101b88: 8b 45 08 mov 0x8(%ebp),%eax -c0101b8b: 8b 40 38 mov 0x38(%eax),%eax -c0101b8e: 83 ec 08 sub $0x8,%esp -c0101b91: 50 push %eax -c0101b92: 68 71 6d 10 c0 push $0xc0106d71 -c0101b97: e8 cb e6 ff ff call c0100267 -c0101b9c: 83 c4 10 add $0x10,%esp - cprintf(" cs 0x----%04x\n", tf->tf_cs); -c0101b9f: 8b 45 08 mov 0x8(%ebp),%eax -c0101ba2: 0f b7 40 3c movzwl 0x3c(%eax),%eax -c0101ba6: 0f b7 c0 movzwl %ax,%eax -c0101ba9: 83 ec 08 sub $0x8,%esp -c0101bac: 50 push %eax -c0101bad: 68 80 6d 10 c0 push $0xc0106d80 -c0101bb2: e8 b0 e6 ff ff call c0100267 -c0101bb7: 83 c4 10 add $0x10,%esp - cprintf(" flag 0x%08x ", tf->tf_eflags); -c0101bba: 8b 45 08 mov 0x8(%ebp),%eax -c0101bbd: 8b 40 40 mov 0x40(%eax),%eax -c0101bc0: 83 ec 08 sub $0x8,%esp -c0101bc3: 50 push %eax -c0101bc4: 68 93 6d 10 c0 push $0xc0106d93 -c0101bc9: e8 99 e6 ff ff call c0100267 -c0101bce: 83 c4 10 add $0x10,%esp - - int i, j; - for (i = 0, j = 1; i < sizeof(IA32flags) / sizeof(IA32flags[0]); i ++, j <<= 1) { -c0101bd1: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) -c0101bd8: c7 45 f0 01 00 00 00 movl $0x1,-0x10(%ebp) -c0101bdf: eb 3f jmp c0101c20 - if ((tf->tf_eflags & j) && IA32flags[i] != NULL) { -c0101be1: 8b 45 08 mov 0x8(%ebp),%eax -c0101be4: 8b 50 40 mov 0x40(%eax),%edx -c0101be7: 8b 45 f0 mov -0x10(%ebp),%eax -c0101bea: 21 d0 and %edx,%eax -c0101bec: 85 c0 test %eax,%eax -c0101bee: 74 29 je c0101c19 -c0101bf0: 8b 45 f4 mov -0xc(%ebp),%eax -c0101bf3: 8b 04 85 a0 95 11 c0 mov -0x3fee6a60(,%eax,4),%eax -c0101bfa: 85 c0 test %eax,%eax -c0101bfc: 74 1b je c0101c19 - cprintf("%s,", IA32flags[i]); -c0101bfe: 8b 45 f4 mov -0xc(%ebp),%eax -c0101c01: 8b 04 85 a0 95 11 c0 mov -0x3fee6a60(,%eax,4),%eax -c0101c08: 83 ec 08 sub $0x8,%esp -c0101c0b: 50 push %eax -c0101c0c: 68 a2 6d 10 c0 push $0xc0106da2 -c0101c11: e8 51 e6 ff ff call c0100267 -c0101c16: 83 c4 10 add $0x10,%esp - cprintf(" eip 0x%08x\n", tf->tf_eip); - cprintf(" cs 0x----%04x\n", tf->tf_cs); - cprintf(" flag 0x%08x ", tf->tf_eflags); - - int i, j; - for (i = 0, j = 1; i < sizeof(IA32flags) / sizeof(IA32flags[0]); i ++, j <<= 1) { -c0101c19: 83 45 f4 01 addl $0x1,-0xc(%ebp) -c0101c1d: d1 65 f0 shll -0x10(%ebp) -c0101c20: 8b 45 f4 mov -0xc(%ebp),%eax -c0101c23: 83 f8 17 cmp $0x17,%eax -c0101c26: 76 b9 jbe c0101be1 - if ((tf->tf_eflags & j) && IA32flags[i] != NULL) { - cprintf("%s,", IA32flags[i]); - } - } - cprintf("IOPL=%d\n", (tf->tf_eflags & FL_IOPL_MASK) >> 12); -c0101c28: 8b 45 08 mov 0x8(%ebp),%eax -c0101c2b: 8b 40 40 mov 0x40(%eax),%eax -c0101c2e: 25 00 30 00 00 and $0x3000,%eax -c0101c33: c1 e8 0c shr $0xc,%eax -c0101c36: 83 ec 08 sub $0x8,%esp -c0101c39: 50 push %eax -c0101c3a: 68 a6 6d 10 c0 push $0xc0106da6 -c0101c3f: e8 23 e6 ff ff call c0100267 -c0101c44: 83 c4 10 add $0x10,%esp - - if (!trap_in_kernel(tf)) { -c0101c47: 83 ec 0c sub $0xc,%esp -c0101c4a: ff 75 08 pushl 0x8(%ebp) -c0101c4d: e8 49 fe ff ff call c0101a9b -c0101c52: 83 c4 10 add $0x10,%esp -c0101c55: 85 c0 test %eax,%eax -c0101c57: 75 32 jne c0101c8b - cprintf(" esp 0x%08x\n", tf->tf_esp); -c0101c59: 8b 45 08 mov 0x8(%ebp),%eax -c0101c5c: 8b 40 44 mov 0x44(%eax),%eax -c0101c5f: 83 ec 08 sub $0x8,%esp -c0101c62: 50 push %eax -c0101c63: 68 af 6d 10 c0 push $0xc0106daf -c0101c68: e8 fa e5 ff ff call c0100267 -c0101c6d: 83 c4 10 add $0x10,%esp - cprintf(" ss 0x----%04x\n", tf->tf_ss); -c0101c70: 8b 45 08 mov 0x8(%ebp),%eax -c0101c73: 0f b7 40 48 movzwl 0x48(%eax),%eax -c0101c77: 0f b7 c0 movzwl %ax,%eax -c0101c7a: 83 ec 08 sub $0x8,%esp -c0101c7d: 50 push %eax -c0101c7e: 68 be 6d 10 c0 push $0xc0106dbe -c0101c83: e8 df e5 ff ff call c0100267 -c0101c88: 83 c4 10 add $0x10,%esp - } -} -c0101c8b: 90 nop -c0101c8c: c9 leave -c0101c8d: c3 ret - -c0101c8e : - -void -print_regs(struct pushregs *regs) { -c0101c8e: 55 push %ebp -c0101c8f: 89 e5 mov %esp,%ebp -c0101c91: 83 ec 08 sub $0x8,%esp - cprintf(" edi 0x%08x\n", regs->reg_edi); -c0101c94: 8b 45 08 mov 0x8(%ebp),%eax -c0101c97: 8b 00 mov (%eax),%eax -c0101c99: 83 ec 08 sub $0x8,%esp -c0101c9c: 50 push %eax -c0101c9d: 68 d1 6d 10 c0 push $0xc0106dd1 -c0101ca2: e8 c0 e5 ff ff call c0100267 -c0101ca7: 83 c4 10 add $0x10,%esp - cprintf(" esi 0x%08x\n", regs->reg_esi); -c0101caa: 8b 45 08 mov 0x8(%ebp),%eax -c0101cad: 8b 40 04 mov 0x4(%eax),%eax -c0101cb0: 83 ec 08 sub $0x8,%esp -c0101cb3: 50 push %eax -c0101cb4: 68 e0 6d 10 c0 push $0xc0106de0 -c0101cb9: e8 a9 e5 ff ff call c0100267 -c0101cbe: 83 c4 10 add $0x10,%esp - cprintf(" ebp 0x%08x\n", regs->reg_ebp); -c0101cc1: 8b 45 08 mov 0x8(%ebp),%eax -c0101cc4: 8b 40 08 mov 0x8(%eax),%eax -c0101cc7: 83 ec 08 sub $0x8,%esp -c0101cca: 50 push %eax -c0101ccb: 68 ef 6d 10 c0 push $0xc0106def -c0101cd0: e8 92 e5 ff ff call c0100267 -c0101cd5: 83 c4 10 add $0x10,%esp - cprintf(" oesp 0x%08x\n", regs->reg_oesp); -c0101cd8: 8b 45 08 mov 0x8(%ebp),%eax -c0101cdb: 8b 40 0c mov 0xc(%eax),%eax -c0101cde: 83 ec 08 sub $0x8,%esp -c0101ce1: 50 push %eax -c0101ce2: 68 fe 6d 10 c0 push $0xc0106dfe -c0101ce7: e8 7b e5 ff ff call c0100267 -c0101cec: 83 c4 10 add $0x10,%esp - cprintf(" ebx 0x%08x\n", regs->reg_ebx); -c0101cef: 8b 45 08 mov 0x8(%ebp),%eax -c0101cf2: 8b 40 10 mov 0x10(%eax),%eax -c0101cf5: 83 ec 08 sub $0x8,%esp -c0101cf8: 50 push %eax -c0101cf9: 68 0d 6e 10 c0 push $0xc0106e0d -c0101cfe: e8 64 e5 ff ff call c0100267 -c0101d03: 83 c4 10 add $0x10,%esp - cprintf(" edx 0x%08x\n", regs->reg_edx); -c0101d06: 8b 45 08 mov 0x8(%ebp),%eax -c0101d09: 8b 40 14 mov 0x14(%eax),%eax -c0101d0c: 83 ec 08 sub $0x8,%esp -c0101d0f: 50 push %eax -c0101d10: 68 1c 6e 10 c0 push $0xc0106e1c -c0101d15: e8 4d e5 ff ff call c0100267 -c0101d1a: 83 c4 10 add $0x10,%esp - cprintf(" ecx 0x%08x\n", regs->reg_ecx); -c0101d1d: 8b 45 08 mov 0x8(%ebp),%eax -c0101d20: 8b 40 18 mov 0x18(%eax),%eax -c0101d23: 83 ec 08 sub $0x8,%esp -c0101d26: 50 push %eax -c0101d27: 68 2b 6e 10 c0 push $0xc0106e2b -c0101d2c: e8 36 e5 ff ff call c0100267 -c0101d31: 83 c4 10 add $0x10,%esp - cprintf(" eax 0x%08x\n", regs->reg_eax); -c0101d34: 8b 45 08 mov 0x8(%ebp),%eax -c0101d37: 8b 40 1c mov 0x1c(%eax),%eax -c0101d3a: 83 ec 08 sub $0x8,%esp -c0101d3d: 50 push %eax -c0101d3e: 68 3a 6e 10 c0 push $0xc0106e3a -c0101d43: e8 1f e5 ff ff call c0100267 -c0101d48: 83 c4 10 add $0x10,%esp -} -c0101d4b: 90 nop -c0101d4c: c9 leave -c0101d4d: c3 ret - -c0101d4e : - -/* trap_dispatch - dispatch based on what type of trap occurred */ -static void -trap_dispatch(struct trapframe *tf) { -c0101d4e: 55 push %ebp -c0101d4f: 89 e5 mov %esp,%ebp -c0101d51: 83 ec 18 sub $0x18,%esp - char c; - - switch (tf->tf_trapno) { -c0101d54: 8b 45 08 mov 0x8(%ebp),%eax -c0101d57: 8b 40 30 mov 0x30(%eax),%eax -c0101d5a: 83 f8 2f cmp $0x2f,%eax -c0101d5d: 77 21 ja c0101d80 -c0101d5f: 83 f8 2e cmp $0x2e,%eax -c0101d62: 0f 83 32 02 00 00 jae c0101f9a -c0101d68: 83 f8 21 cmp $0x21,%eax -c0101d6b: 0f 84 87 00 00 00 je c0101df8 -c0101d71: 83 f8 24 cmp $0x24,%eax -c0101d74: 74 5b je c0101dd1 -c0101d76: 83 f8 20 cmp $0x20,%eax -c0101d79: 74 1c je c0101d97 -c0101d7b: e9 e4 01 00 00 jmp c0101f64 -c0101d80: 83 f8 78 cmp $0x78,%eax -c0101d83: 0f 84 4c 01 00 00 je c0101ed5 -c0101d89: 83 f8 79 cmp $0x79,%eax -c0101d8c: 0f 84 95 01 00 00 je c0101f27 -c0101d92: e9 cd 01 00 00 jmp c0101f64 - /* handle the timer interrupt */ - /* (1) After a timer interrupt, you should record this event using a global variable (increase it), such as ticks in kern/driver/clock.c - * (2) Every TICK_NUM cycle, you can print some info using a funciton, such as print_ticks(). - * (3) Too Simple? Yes, I think so! - */ - ticks ++; -c0101d97: a1 58 a9 11 c0 mov 0xc011a958,%eax -c0101d9c: 83 c0 01 add $0x1,%eax -c0101d9f: a3 58 a9 11 c0 mov %eax,0xc011a958 - if (ticks % TICK_NUM == 0) { -c0101da4: 8b 0d 58 a9 11 c0 mov 0xc011a958,%ecx -c0101daa: ba 1f 85 eb 51 mov $0x51eb851f,%edx -c0101daf: 89 c8 mov %ecx,%eax -c0101db1: f7 e2 mul %edx -c0101db3: 89 d0 mov %edx,%eax -c0101db5: c1 e8 05 shr $0x5,%eax -c0101db8: 6b c0 64 imul $0x64,%eax,%eax -c0101dbb: 29 c1 sub %eax,%ecx -c0101dbd: 89 c8 mov %ecx,%eax -c0101dbf: 85 c0 test %eax,%eax -c0101dc1: 0f 85 d6 01 00 00 jne c0101f9d - print_ticks(); -c0101dc7: e8 9c fa ff ff call c0101868 - } - break; -c0101dcc: e9 cc 01 00 00 jmp c0101f9d - case IRQ_OFFSET + IRQ_COM1: - c = cons_getc(); -c0101dd1: e8 4f f8 ff ff call c0101625 -c0101dd6: 88 45 f7 mov %al,-0x9(%ebp) - cprintf("serial [%03d] %c\n", c, c); -c0101dd9: 0f be 55 f7 movsbl -0x9(%ebp),%edx -c0101ddd: 0f be 45 f7 movsbl -0x9(%ebp),%eax -c0101de1: 83 ec 04 sub $0x4,%esp -c0101de4: 52 push %edx -c0101de5: 50 push %eax -c0101de6: 68 49 6e 10 c0 push $0xc0106e49 -c0101deb: e8 77 e4 ff ff call c0100267 -c0101df0: 83 c4 10 add $0x10,%esp - break; -c0101df3: e9 af 01 00 00 jmp c0101fa7 - case IRQ_OFFSET + IRQ_KBD: - c = cons_getc(); -c0101df8: e8 28 f8 ff ff call c0101625 -c0101dfd: 88 45 f7 mov %al,-0x9(%ebp) - cprintf("kbd [%03d] %c\n", c, c); -c0101e00: 0f be 55 f7 movsbl -0x9(%ebp),%edx -c0101e04: 0f be 45 f7 movsbl -0x9(%ebp),%eax -c0101e08: 83 ec 04 sub $0x4,%esp -c0101e0b: 52 push %edx -c0101e0c: 50 push %eax -c0101e0d: 68 5b 6e 10 c0 push $0xc0106e5b -c0101e12: e8 50 e4 ff ff call c0100267 -c0101e17: 83 c4 10 add $0x10,%esp - if (c == '0') { -c0101e1a: 80 7d f7 30 cmpb $0x30,-0x9(%ebp) -c0101e1e: 75 46 jne c0101e66 - cprintf("Now switched to kernel mode"); -c0101e20: 83 ec 0c sub $0xc,%esp -c0101e23: 68 6a 6e 10 c0 push $0xc0106e6a -c0101e28: e8 3a e4 ff ff call c0100267 -c0101e2d: 83 c4 10 add $0x10,%esp - if (tf->tf_cs != KERNEL_CS) { -c0101e30: 8b 45 08 mov 0x8(%ebp),%eax -c0101e33: 0f b7 40 3c movzwl 0x3c(%eax),%eax -c0101e37: 66 83 f8 08 cmp $0x8,%ax -c0101e3b: 0f 84 5f 01 00 00 je c0101fa0 - tf->tf_cs = KERNEL_CS; -c0101e41: 8b 45 08 mov 0x8(%ebp),%eax -c0101e44: 66 c7 40 3c 08 00 movw $0x8,0x3c(%eax) - tf->tf_ds = tf->tf_es = KERNEL_DS; -c0101e4a: 8b 45 08 mov 0x8(%ebp),%eax -c0101e4d: 66 c7 40 28 10 00 movw $0x10,0x28(%eax) -c0101e53: 8b 45 08 mov 0x8(%ebp),%eax -c0101e56: 0f b7 50 28 movzwl 0x28(%eax),%edx -c0101e5a: 8b 45 08 mov 0x8(%ebp),%eax -c0101e5d: 66 89 50 2c mov %dx,0x2c(%eax) - tf->tf_cs = USER_CS; - tf->tf_ds = tf->tf_es = tf->tf_ss = USER_DS; - tf->tf_eflags |= FL_IOPL_MASK; - } - } - break; -c0101e61: e9 3a 01 00 00 jmp c0101fa0 - cprintf("Now switched to kernel mode"); - if (tf->tf_cs != KERNEL_CS) { - tf->tf_cs = KERNEL_CS; - tf->tf_ds = tf->tf_es = KERNEL_DS; - } - } else if (c == '3') { -c0101e66: 80 7d f7 33 cmpb $0x33,-0x9(%ebp) -c0101e6a: 0f 85 30 01 00 00 jne c0101fa0 - cprintf("Now switched to user mode"); -c0101e70: 83 ec 0c sub $0xc,%esp -c0101e73: 68 86 6e 10 c0 push $0xc0106e86 -c0101e78: e8 ea e3 ff ff call c0100267 -c0101e7d: 83 c4 10 add $0x10,%esp - if (tf->tf_cs != USER_CS) { -c0101e80: 8b 45 08 mov 0x8(%ebp),%eax -c0101e83: 0f b7 40 3c movzwl 0x3c(%eax),%eax -c0101e87: 66 83 f8 1b cmp $0x1b,%ax -c0101e8b: 0f 84 0f 01 00 00 je c0101fa0 - tf->tf_cs = USER_CS; -c0101e91: 8b 45 08 mov 0x8(%ebp),%eax -c0101e94: 66 c7 40 3c 1b 00 movw $0x1b,0x3c(%eax) - tf->tf_ds = tf->tf_es = tf->tf_ss = USER_DS; -c0101e9a: 8b 45 08 mov 0x8(%ebp),%eax -c0101e9d: 66 c7 40 48 23 00 movw $0x23,0x48(%eax) -c0101ea3: 8b 45 08 mov 0x8(%ebp),%eax -c0101ea6: 0f b7 50 48 movzwl 0x48(%eax),%edx -c0101eaa: 8b 45 08 mov 0x8(%ebp),%eax -c0101ead: 66 89 50 28 mov %dx,0x28(%eax) -c0101eb1: 8b 45 08 mov 0x8(%ebp),%eax -c0101eb4: 0f b7 50 28 movzwl 0x28(%eax),%edx -c0101eb8: 8b 45 08 mov 0x8(%ebp),%eax -c0101ebb: 66 89 50 2c mov %dx,0x2c(%eax) - tf->tf_eflags |= FL_IOPL_MASK; -c0101ebf: 8b 45 08 mov 0x8(%ebp),%eax -c0101ec2: 8b 40 40 mov 0x40(%eax),%eax -c0101ec5: 80 cc 30 or $0x30,%ah -c0101ec8: 89 c2 mov %eax,%edx -c0101eca: 8b 45 08 mov 0x8(%ebp),%eax -c0101ecd: 89 50 40 mov %edx,0x40(%eax) - } - } - break; -c0101ed0: e9 cb 00 00 00 jmp c0101fa0 - //LAB1 CHALLENGE 1 : YOUR CODE you should modify below codes. - case T_SWITCH_TOU: - if (tf->tf_cs != USER_CS) { -c0101ed5: 8b 45 08 mov 0x8(%ebp),%eax -c0101ed8: 0f b7 40 3c movzwl 0x3c(%eax),%eax -c0101edc: 66 83 f8 1b cmp $0x1b,%ax -c0101ee0: 0f 84 bd 00 00 00 je c0101fa3 - tf->tf_cs = USER_CS; -c0101ee6: 8b 45 08 mov 0x8(%ebp),%eax -c0101ee9: 66 c7 40 3c 1b 00 movw $0x1b,0x3c(%eax) - tf->tf_ds = tf->tf_es = tf->tf_ss = USER_DS; -c0101eef: 8b 45 08 mov 0x8(%ebp),%eax -c0101ef2: 66 c7 40 48 23 00 movw $0x23,0x48(%eax) -c0101ef8: 8b 45 08 mov 0x8(%ebp),%eax -c0101efb: 0f b7 50 48 movzwl 0x48(%eax),%edx -c0101eff: 8b 45 08 mov 0x8(%ebp),%eax -c0101f02: 66 89 50 28 mov %dx,0x28(%eax) -c0101f06: 8b 45 08 mov 0x8(%ebp),%eax -c0101f09: 0f b7 50 28 movzwl 0x28(%eax),%edx -c0101f0d: 8b 45 08 mov 0x8(%ebp),%eax -c0101f10: 66 89 50 2c mov %dx,0x2c(%eax) - tf->tf_eflags |= FL_IOPL_MASK; -c0101f14: 8b 45 08 mov 0x8(%ebp),%eax -c0101f17: 8b 40 40 mov 0x40(%eax),%eax -c0101f1a: 80 cc 30 or $0x30,%ah -c0101f1d: 89 c2 mov %eax,%edx -c0101f1f: 8b 45 08 mov 0x8(%ebp),%eax -c0101f22: 89 50 40 mov %edx,0x40(%eax) - } - break; -c0101f25: eb 7c jmp c0101fa3 - case T_SWITCH_TOK: - if (tf->tf_cs != KERNEL_CS) { -c0101f27: 8b 45 08 mov 0x8(%ebp),%eax -c0101f2a: 0f b7 40 3c movzwl 0x3c(%eax),%eax -c0101f2e: 66 83 f8 08 cmp $0x8,%ax -c0101f32: 74 72 je c0101fa6 - tf->tf_cs = KERNEL_CS; -c0101f34: 8b 45 08 mov 0x8(%ebp),%eax -c0101f37: 66 c7 40 3c 08 00 movw $0x8,0x3c(%eax) - tf->tf_ds = tf->tf_es = tf->tf_ss = KERNEL_DS; -c0101f3d: 8b 45 08 mov 0x8(%ebp),%eax -c0101f40: 66 c7 40 48 10 00 movw $0x10,0x48(%eax) -c0101f46: 8b 45 08 mov 0x8(%ebp),%eax -c0101f49: 0f b7 50 48 movzwl 0x48(%eax),%edx -c0101f4d: 8b 45 08 mov 0x8(%ebp),%eax -c0101f50: 66 89 50 28 mov %dx,0x28(%eax) -c0101f54: 8b 45 08 mov 0x8(%ebp),%eax -c0101f57: 0f b7 50 28 movzwl 0x28(%eax),%edx -c0101f5b: 8b 45 08 mov 0x8(%ebp),%eax -c0101f5e: 66 89 50 2c mov %dx,0x2c(%eax) - } - break; -c0101f62: eb 42 jmp c0101fa6 - case IRQ_OFFSET + IRQ_IDE2: - /* do nothing */ - break; - default: - // in kernel, it must be a mistake - if ((tf->tf_cs & 3) == 0) { -c0101f64: 8b 45 08 mov 0x8(%ebp),%eax -c0101f67: 0f b7 40 3c movzwl 0x3c(%eax),%eax -c0101f6b: 0f b7 c0 movzwl %ax,%eax -c0101f6e: 83 e0 03 and $0x3,%eax -c0101f71: 85 c0 test %eax,%eax -c0101f73: 75 32 jne c0101fa7 - print_trapframe(tf); -c0101f75: 83 ec 0c sub $0xc,%esp -c0101f78: ff 75 08 pushl 0x8(%ebp) -c0101f7b: e8 31 fb ff ff call c0101ab1 -c0101f80: 83 c4 10 add $0x10,%esp - panic("unexpected trap in kernel.\n"); -c0101f83: 83 ec 04 sub $0x4,%esp -c0101f86: 68 a0 6e 10 c0 push $0xc0106ea0 -c0101f8b: 68 d1 00 00 00 push $0xd1 -c0101f90: 68 8e 6c 10 c0 push $0xc0106c8e -c0101f95: e8 33 e4 ff ff call c01003cd <__panic> - } - break; - case IRQ_OFFSET + IRQ_IDE1: - case IRQ_OFFSET + IRQ_IDE2: - /* do nothing */ - break; -c0101f9a: 90 nop -c0101f9b: eb 0a jmp c0101fa7 - */ - ticks ++; - if (ticks % TICK_NUM == 0) { - print_ticks(); - } - break; -c0101f9d: 90 nop -c0101f9e: eb 07 jmp c0101fa7 - tf->tf_cs = USER_CS; - tf->tf_ds = tf->tf_es = tf->tf_ss = USER_DS; - tf->tf_eflags |= FL_IOPL_MASK; - } - } - break; -c0101fa0: 90 nop -c0101fa1: eb 04 jmp c0101fa7 - if (tf->tf_cs != USER_CS) { - tf->tf_cs = USER_CS; - tf->tf_ds = tf->tf_es = tf->tf_ss = USER_DS; - tf->tf_eflags |= FL_IOPL_MASK; - } - break; -c0101fa3: 90 nop -c0101fa4: eb 01 jmp c0101fa7 - case T_SWITCH_TOK: - if (tf->tf_cs != KERNEL_CS) { - tf->tf_cs = KERNEL_CS; - tf->tf_ds = tf->tf_es = tf->tf_ss = KERNEL_DS; - } - break; -c0101fa6: 90 nop - if ((tf->tf_cs & 3) == 0) { - print_trapframe(tf); - panic("unexpected trap in kernel.\n"); - } - } -} -c0101fa7: 90 nop -c0101fa8: c9 leave -c0101fa9: c3 ret - -c0101faa : - * trap - handles or dispatches an exception/interrupt. if and when trap() returns, - * the code in kern/trap/trapentry.S restores the old CPU state saved in the - * trapframe and then uses the iret instruction to return from the exception. - * */ -void -trap(struct trapframe *tf) { -c0101faa: 55 push %ebp -c0101fab: 89 e5 mov %esp,%ebp -c0101fad: 83 ec 08 sub $0x8,%esp - // dispatch based on what type of trap occurred - trap_dispatch(tf); -c0101fb0: 83 ec 0c sub $0xc,%esp -c0101fb3: ff 75 08 pushl 0x8(%ebp) -c0101fb6: e8 93 fd ff ff call c0101d4e -c0101fbb: 83 c4 10 add $0x10,%esp -} -c0101fbe: 90 nop -c0101fbf: c9 leave -c0101fc0: c3 ret - -c0101fc1 : -# handler -.text -.globl __alltraps -.globl vector0 -vector0: - pushl $0 -c0101fc1: 6a 00 push $0x0 - pushl $0 -c0101fc3: 6a 00 push $0x0 - jmp __alltraps -c0101fc5: e9 67 0a 00 00 jmp c0102a31 <__alltraps> - -c0101fca : -.globl vector1 -vector1: - pushl $0 -c0101fca: 6a 00 push $0x0 - pushl $1 -c0101fcc: 6a 01 push $0x1 - jmp __alltraps -c0101fce: e9 5e 0a 00 00 jmp c0102a31 <__alltraps> - -c0101fd3 : -.globl vector2 -vector2: - pushl $0 -c0101fd3: 6a 00 push $0x0 - pushl $2 -c0101fd5: 6a 02 push $0x2 - jmp __alltraps -c0101fd7: e9 55 0a 00 00 jmp c0102a31 <__alltraps> - -c0101fdc : -.globl vector3 -vector3: - pushl $0 -c0101fdc: 6a 00 push $0x0 - pushl $3 -c0101fde: 6a 03 push $0x3 - jmp __alltraps -c0101fe0: e9 4c 0a 00 00 jmp c0102a31 <__alltraps> - -c0101fe5 : -.globl vector4 -vector4: - pushl $0 -c0101fe5: 6a 00 push $0x0 - pushl $4 -c0101fe7: 6a 04 push $0x4 - jmp __alltraps -c0101fe9: e9 43 0a 00 00 jmp c0102a31 <__alltraps> - -c0101fee : -.globl vector5 -vector5: - pushl $0 -c0101fee: 6a 00 push $0x0 - pushl $5 -c0101ff0: 6a 05 push $0x5 - jmp __alltraps -c0101ff2: e9 3a 0a 00 00 jmp c0102a31 <__alltraps> - -c0101ff7 : -.globl vector6 -vector6: - pushl $0 -c0101ff7: 6a 00 push $0x0 - pushl $6 -c0101ff9: 6a 06 push $0x6 - jmp __alltraps -c0101ffb: e9 31 0a 00 00 jmp c0102a31 <__alltraps> - -c0102000 : -.globl vector7 -vector7: - pushl $0 -c0102000: 6a 00 push $0x0 - pushl $7 -c0102002: 6a 07 push $0x7 - jmp __alltraps -c0102004: e9 28 0a 00 00 jmp c0102a31 <__alltraps> - -c0102009 : -.globl vector8 -vector8: - pushl $8 -c0102009: 6a 08 push $0x8 - jmp __alltraps -c010200b: e9 21 0a 00 00 jmp c0102a31 <__alltraps> - -c0102010 : -.globl vector9 -vector9: - pushl $9 -c0102010: 6a 09 push $0x9 - jmp __alltraps -c0102012: e9 1a 0a 00 00 jmp c0102a31 <__alltraps> - -c0102017 : -.globl vector10 -vector10: - pushl $10 -c0102017: 6a 0a push $0xa - jmp __alltraps -c0102019: e9 13 0a 00 00 jmp c0102a31 <__alltraps> - -c010201e : -.globl vector11 -vector11: - pushl $11 -c010201e: 6a 0b push $0xb - jmp __alltraps -c0102020: e9 0c 0a 00 00 jmp c0102a31 <__alltraps> - -c0102025 : -.globl vector12 -vector12: - pushl $12 -c0102025: 6a 0c push $0xc - jmp __alltraps -c0102027: e9 05 0a 00 00 jmp c0102a31 <__alltraps> - -c010202c : -.globl vector13 -vector13: - pushl $13 -c010202c: 6a 0d push $0xd - jmp __alltraps -c010202e: e9 fe 09 00 00 jmp c0102a31 <__alltraps> - -c0102033 : -.globl vector14 -vector14: - pushl $14 -c0102033: 6a 0e push $0xe - jmp __alltraps -c0102035: e9 f7 09 00 00 jmp c0102a31 <__alltraps> - -c010203a : -.globl vector15 -vector15: - pushl $0 -c010203a: 6a 00 push $0x0 - pushl $15 -c010203c: 6a 0f push $0xf - jmp __alltraps -c010203e: e9 ee 09 00 00 jmp c0102a31 <__alltraps> - -c0102043 : -.globl vector16 -vector16: - pushl $0 -c0102043: 6a 00 push $0x0 - pushl $16 -c0102045: 6a 10 push $0x10 - jmp __alltraps -c0102047: e9 e5 09 00 00 jmp c0102a31 <__alltraps> - -c010204c : -.globl vector17 -vector17: - pushl $17 -c010204c: 6a 11 push $0x11 - jmp __alltraps -c010204e: e9 de 09 00 00 jmp c0102a31 <__alltraps> - -c0102053 : -.globl vector18 -vector18: - pushl $0 -c0102053: 6a 00 push $0x0 - pushl $18 -c0102055: 6a 12 push $0x12 - jmp __alltraps -c0102057: e9 d5 09 00 00 jmp c0102a31 <__alltraps> - -c010205c : -.globl vector19 -vector19: - pushl $0 -c010205c: 6a 00 push $0x0 - pushl $19 -c010205e: 6a 13 push $0x13 - jmp __alltraps -c0102060: e9 cc 09 00 00 jmp c0102a31 <__alltraps> - -c0102065 : -.globl vector20 -vector20: - pushl $0 -c0102065: 6a 00 push $0x0 - pushl $20 -c0102067: 6a 14 push $0x14 - jmp __alltraps -c0102069: e9 c3 09 00 00 jmp c0102a31 <__alltraps> - -c010206e : -.globl vector21 -vector21: - pushl $0 -c010206e: 6a 00 push $0x0 - pushl $21 -c0102070: 6a 15 push $0x15 - jmp __alltraps -c0102072: e9 ba 09 00 00 jmp c0102a31 <__alltraps> - -c0102077 : -.globl vector22 -vector22: - pushl $0 -c0102077: 6a 00 push $0x0 - pushl $22 -c0102079: 6a 16 push $0x16 - jmp __alltraps -c010207b: e9 b1 09 00 00 jmp c0102a31 <__alltraps> - -c0102080 : -.globl vector23 -vector23: - pushl $0 -c0102080: 6a 00 push $0x0 - pushl $23 -c0102082: 6a 17 push $0x17 - jmp __alltraps -c0102084: e9 a8 09 00 00 jmp c0102a31 <__alltraps> - -c0102089 : -.globl vector24 -vector24: - pushl $0 -c0102089: 6a 00 push $0x0 - pushl $24 -c010208b: 6a 18 push $0x18 - jmp __alltraps -c010208d: e9 9f 09 00 00 jmp c0102a31 <__alltraps> - -c0102092 : -.globl vector25 -vector25: - pushl $0 -c0102092: 6a 00 push $0x0 - pushl $25 -c0102094: 6a 19 push $0x19 - jmp __alltraps -c0102096: e9 96 09 00 00 jmp c0102a31 <__alltraps> - -c010209b : -.globl vector26 -vector26: - pushl $0 -c010209b: 6a 00 push $0x0 - pushl $26 -c010209d: 6a 1a push $0x1a - jmp __alltraps -c010209f: e9 8d 09 00 00 jmp c0102a31 <__alltraps> - -c01020a4 : -.globl vector27 -vector27: - pushl $0 -c01020a4: 6a 00 push $0x0 - pushl $27 -c01020a6: 6a 1b push $0x1b - jmp __alltraps -c01020a8: e9 84 09 00 00 jmp c0102a31 <__alltraps> - -c01020ad : -.globl vector28 -vector28: - pushl $0 -c01020ad: 6a 00 push $0x0 - pushl $28 -c01020af: 6a 1c push $0x1c - jmp __alltraps -c01020b1: e9 7b 09 00 00 jmp c0102a31 <__alltraps> - -c01020b6 : -.globl vector29 -vector29: - pushl $0 -c01020b6: 6a 00 push $0x0 - pushl $29 -c01020b8: 6a 1d push $0x1d - jmp __alltraps -c01020ba: e9 72 09 00 00 jmp c0102a31 <__alltraps> - -c01020bf : -.globl vector30 -vector30: - pushl $0 -c01020bf: 6a 00 push $0x0 - pushl $30 -c01020c1: 6a 1e push $0x1e - jmp __alltraps -c01020c3: e9 69 09 00 00 jmp c0102a31 <__alltraps> - -c01020c8 : -.globl vector31 -vector31: - pushl $0 -c01020c8: 6a 00 push $0x0 - pushl $31 -c01020ca: 6a 1f push $0x1f - jmp __alltraps -c01020cc: e9 60 09 00 00 jmp c0102a31 <__alltraps> - -c01020d1 : -.globl vector32 -vector32: - pushl $0 -c01020d1: 6a 00 push $0x0 - pushl $32 -c01020d3: 6a 20 push $0x20 - jmp __alltraps -c01020d5: e9 57 09 00 00 jmp c0102a31 <__alltraps> - -c01020da : -.globl vector33 -vector33: - pushl $0 -c01020da: 6a 00 push $0x0 - pushl $33 -c01020dc: 6a 21 push $0x21 - jmp __alltraps -c01020de: e9 4e 09 00 00 jmp c0102a31 <__alltraps> - -c01020e3 : -.globl vector34 -vector34: - pushl $0 -c01020e3: 6a 00 push $0x0 - pushl $34 -c01020e5: 6a 22 push $0x22 - jmp __alltraps -c01020e7: e9 45 09 00 00 jmp c0102a31 <__alltraps> - -c01020ec : -.globl vector35 -vector35: - pushl $0 -c01020ec: 6a 00 push $0x0 - pushl $35 -c01020ee: 6a 23 push $0x23 - jmp __alltraps -c01020f0: e9 3c 09 00 00 jmp c0102a31 <__alltraps> - -c01020f5 : -.globl vector36 -vector36: - pushl $0 -c01020f5: 6a 00 push $0x0 - pushl $36 -c01020f7: 6a 24 push $0x24 - jmp __alltraps -c01020f9: e9 33 09 00 00 jmp c0102a31 <__alltraps> - -c01020fe : -.globl vector37 -vector37: - pushl $0 -c01020fe: 6a 00 push $0x0 - pushl $37 -c0102100: 6a 25 push $0x25 - jmp __alltraps -c0102102: e9 2a 09 00 00 jmp c0102a31 <__alltraps> - -c0102107 : -.globl vector38 -vector38: - pushl $0 -c0102107: 6a 00 push $0x0 - pushl $38 -c0102109: 6a 26 push $0x26 - jmp __alltraps -c010210b: e9 21 09 00 00 jmp c0102a31 <__alltraps> - -c0102110 : -.globl vector39 -vector39: - pushl $0 -c0102110: 6a 00 push $0x0 - pushl $39 -c0102112: 6a 27 push $0x27 - jmp __alltraps -c0102114: e9 18 09 00 00 jmp c0102a31 <__alltraps> - -c0102119 : -.globl vector40 -vector40: - pushl $0 -c0102119: 6a 00 push $0x0 - pushl $40 -c010211b: 6a 28 push $0x28 - jmp __alltraps -c010211d: e9 0f 09 00 00 jmp c0102a31 <__alltraps> - -c0102122 : -.globl vector41 -vector41: - pushl $0 -c0102122: 6a 00 push $0x0 - pushl $41 -c0102124: 6a 29 push $0x29 - jmp __alltraps -c0102126: e9 06 09 00 00 jmp c0102a31 <__alltraps> - -c010212b : -.globl vector42 -vector42: - pushl $0 -c010212b: 6a 00 push $0x0 - pushl $42 -c010212d: 6a 2a push $0x2a - jmp __alltraps -c010212f: e9 fd 08 00 00 jmp c0102a31 <__alltraps> - -c0102134 : -.globl vector43 -vector43: - pushl $0 -c0102134: 6a 00 push $0x0 - pushl $43 -c0102136: 6a 2b push $0x2b - jmp __alltraps -c0102138: e9 f4 08 00 00 jmp c0102a31 <__alltraps> - -c010213d : -.globl vector44 -vector44: - pushl $0 -c010213d: 6a 00 push $0x0 - pushl $44 -c010213f: 6a 2c push $0x2c - jmp __alltraps -c0102141: e9 eb 08 00 00 jmp c0102a31 <__alltraps> - -c0102146 : -.globl vector45 -vector45: - pushl $0 -c0102146: 6a 00 push $0x0 - pushl $45 -c0102148: 6a 2d push $0x2d - jmp __alltraps -c010214a: e9 e2 08 00 00 jmp c0102a31 <__alltraps> - -c010214f : -.globl vector46 -vector46: - pushl $0 -c010214f: 6a 00 push $0x0 - pushl $46 -c0102151: 6a 2e push $0x2e - jmp __alltraps -c0102153: e9 d9 08 00 00 jmp c0102a31 <__alltraps> - -c0102158 : -.globl vector47 -vector47: - pushl $0 -c0102158: 6a 00 push $0x0 - pushl $47 -c010215a: 6a 2f push $0x2f - jmp __alltraps -c010215c: e9 d0 08 00 00 jmp c0102a31 <__alltraps> - -c0102161 : -.globl vector48 -vector48: - pushl $0 -c0102161: 6a 00 push $0x0 - pushl $48 -c0102163: 6a 30 push $0x30 - jmp __alltraps -c0102165: e9 c7 08 00 00 jmp c0102a31 <__alltraps> - -c010216a : -.globl vector49 -vector49: - pushl $0 -c010216a: 6a 00 push $0x0 - pushl $49 -c010216c: 6a 31 push $0x31 - jmp __alltraps -c010216e: e9 be 08 00 00 jmp c0102a31 <__alltraps> - -c0102173 : -.globl vector50 -vector50: - pushl $0 -c0102173: 6a 00 push $0x0 - pushl $50 -c0102175: 6a 32 push $0x32 - jmp __alltraps -c0102177: e9 b5 08 00 00 jmp c0102a31 <__alltraps> - -c010217c : -.globl vector51 -vector51: - pushl $0 -c010217c: 6a 00 push $0x0 - pushl $51 -c010217e: 6a 33 push $0x33 - jmp __alltraps -c0102180: e9 ac 08 00 00 jmp c0102a31 <__alltraps> - -c0102185 : -.globl vector52 -vector52: - pushl $0 -c0102185: 6a 00 push $0x0 - pushl $52 -c0102187: 6a 34 push $0x34 - jmp __alltraps -c0102189: e9 a3 08 00 00 jmp c0102a31 <__alltraps> - -c010218e : -.globl vector53 -vector53: - pushl $0 -c010218e: 6a 00 push $0x0 - pushl $53 -c0102190: 6a 35 push $0x35 - jmp __alltraps -c0102192: e9 9a 08 00 00 jmp c0102a31 <__alltraps> - -c0102197 : -.globl vector54 -vector54: - pushl $0 -c0102197: 6a 00 push $0x0 - pushl $54 -c0102199: 6a 36 push $0x36 - jmp __alltraps -c010219b: e9 91 08 00 00 jmp c0102a31 <__alltraps> - -c01021a0 : -.globl vector55 -vector55: - pushl $0 -c01021a0: 6a 00 push $0x0 - pushl $55 -c01021a2: 6a 37 push $0x37 - jmp __alltraps -c01021a4: e9 88 08 00 00 jmp c0102a31 <__alltraps> - -c01021a9 : -.globl vector56 -vector56: - pushl $0 -c01021a9: 6a 00 push $0x0 - pushl $56 -c01021ab: 6a 38 push $0x38 - jmp __alltraps -c01021ad: e9 7f 08 00 00 jmp c0102a31 <__alltraps> - -c01021b2 : -.globl vector57 -vector57: - pushl $0 -c01021b2: 6a 00 push $0x0 - pushl $57 -c01021b4: 6a 39 push $0x39 - jmp __alltraps -c01021b6: e9 76 08 00 00 jmp c0102a31 <__alltraps> - -c01021bb : -.globl vector58 -vector58: - pushl $0 -c01021bb: 6a 00 push $0x0 - pushl $58 -c01021bd: 6a 3a push $0x3a - jmp __alltraps -c01021bf: e9 6d 08 00 00 jmp c0102a31 <__alltraps> - -c01021c4 : -.globl vector59 -vector59: - pushl $0 -c01021c4: 6a 00 push $0x0 - pushl $59 -c01021c6: 6a 3b push $0x3b - jmp __alltraps -c01021c8: e9 64 08 00 00 jmp c0102a31 <__alltraps> - -c01021cd : -.globl vector60 -vector60: - pushl $0 -c01021cd: 6a 00 push $0x0 - pushl $60 -c01021cf: 6a 3c push $0x3c - jmp __alltraps -c01021d1: e9 5b 08 00 00 jmp c0102a31 <__alltraps> - -c01021d6 : -.globl vector61 -vector61: - pushl $0 -c01021d6: 6a 00 push $0x0 - pushl $61 -c01021d8: 6a 3d push $0x3d - jmp __alltraps -c01021da: e9 52 08 00 00 jmp c0102a31 <__alltraps> - -c01021df : -.globl vector62 -vector62: - pushl $0 -c01021df: 6a 00 push $0x0 - pushl $62 -c01021e1: 6a 3e push $0x3e - jmp __alltraps -c01021e3: e9 49 08 00 00 jmp c0102a31 <__alltraps> - -c01021e8 : -.globl vector63 -vector63: - pushl $0 -c01021e8: 6a 00 push $0x0 - pushl $63 -c01021ea: 6a 3f push $0x3f - jmp __alltraps -c01021ec: e9 40 08 00 00 jmp c0102a31 <__alltraps> - -c01021f1 : -.globl vector64 -vector64: - pushl $0 -c01021f1: 6a 00 push $0x0 - pushl $64 -c01021f3: 6a 40 push $0x40 - jmp __alltraps -c01021f5: e9 37 08 00 00 jmp c0102a31 <__alltraps> - -c01021fa : -.globl vector65 -vector65: - pushl $0 -c01021fa: 6a 00 push $0x0 - pushl $65 -c01021fc: 6a 41 push $0x41 - jmp __alltraps -c01021fe: e9 2e 08 00 00 jmp c0102a31 <__alltraps> - -c0102203 : -.globl vector66 -vector66: - pushl $0 -c0102203: 6a 00 push $0x0 - pushl $66 -c0102205: 6a 42 push $0x42 - jmp __alltraps -c0102207: e9 25 08 00 00 jmp c0102a31 <__alltraps> - -c010220c : -.globl vector67 -vector67: - pushl $0 -c010220c: 6a 00 push $0x0 - pushl $67 -c010220e: 6a 43 push $0x43 - jmp __alltraps -c0102210: e9 1c 08 00 00 jmp c0102a31 <__alltraps> - -c0102215 : -.globl vector68 -vector68: - pushl $0 -c0102215: 6a 00 push $0x0 - pushl $68 -c0102217: 6a 44 push $0x44 - jmp __alltraps -c0102219: e9 13 08 00 00 jmp c0102a31 <__alltraps> - -c010221e : -.globl vector69 -vector69: - pushl $0 -c010221e: 6a 00 push $0x0 - pushl $69 -c0102220: 6a 45 push $0x45 - jmp __alltraps -c0102222: e9 0a 08 00 00 jmp c0102a31 <__alltraps> - -c0102227 : -.globl vector70 -vector70: - pushl $0 -c0102227: 6a 00 push $0x0 - pushl $70 -c0102229: 6a 46 push $0x46 - jmp __alltraps -c010222b: e9 01 08 00 00 jmp c0102a31 <__alltraps> - -c0102230 : -.globl vector71 -vector71: - pushl $0 -c0102230: 6a 00 push $0x0 - pushl $71 -c0102232: 6a 47 push $0x47 - jmp __alltraps -c0102234: e9 f8 07 00 00 jmp c0102a31 <__alltraps> - -c0102239 : -.globl vector72 -vector72: - pushl $0 -c0102239: 6a 00 push $0x0 - pushl $72 -c010223b: 6a 48 push $0x48 - jmp __alltraps -c010223d: e9 ef 07 00 00 jmp c0102a31 <__alltraps> - -c0102242 : -.globl vector73 -vector73: - pushl $0 -c0102242: 6a 00 push $0x0 - pushl $73 -c0102244: 6a 49 push $0x49 - jmp __alltraps -c0102246: e9 e6 07 00 00 jmp c0102a31 <__alltraps> - -c010224b : -.globl vector74 -vector74: - pushl $0 -c010224b: 6a 00 push $0x0 - pushl $74 -c010224d: 6a 4a push $0x4a - jmp __alltraps -c010224f: e9 dd 07 00 00 jmp c0102a31 <__alltraps> - -c0102254 : -.globl vector75 -vector75: - pushl $0 -c0102254: 6a 00 push $0x0 - pushl $75 -c0102256: 6a 4b push $0x4b - jmp __alltraps -c0102258: e9 d4 07 00 00 jmp c0102a31 <__alltraps> - -c010225d : -.globl vector76 -vector76: - pushl $0 -c010225d: 6a 00 push $0x0 - pushl $76 -c010225f: 6a 4c push $0x4c - jmp __alltraps -c0102261: e9 cb 07 00 00 jmp c0102a31 <__alltraps> - -c0102266 : -.globl vector77 -vector77: - pushl $0 -c0102266: 6a 00 push $0x0 - pushl $77 -c0102268: 6a 4d push $0x4d - jmp __alltraps -c010226a: e9 c2 07 00 00 jmp c0102a31 <__alltraps> - -c010226f : -.globl vector78 -vector78: - pushl $0 -c010226f: 6a 00 push $0x0 - pushl $78 -c0102271: 6a 4e push $0x4e - jmp __alltraps -c0102273: e9 b9 07 00 00 jmp c0102a31 <__alltraps> - -c0102278 : -.globl vector79 -vector79: - pushl $0 -c0102278: 6a 00 push $0x0 - pushl $79 -c010227a: 6a 4f push $0x4f - jmp __alltraps -c010227c: e9 b0 07 00 00 jmp c0102a31 <__alltraps> - -c0102281 : -.globl vector80 -vector80: - pushl $0 -c0102281: 6a 00 push $0x0 - pushl $80 -c0102283: 6a 50 push $0x50 - jmp __alltraps -c0102285: e9 a7 07 00 00 jmp c0102a31 <__alltraps> - -c010228a : -.globl vector81 -vector81: - pushl $0 -c010228a: 6a 00 push $0x0 - pushl $81 -c010228c: 6a 51 push $0x51 - jmp __alltraps -c010228e: e9 9e 07 00 00 jmp c0102a31 <__alltraps> - -c0102293 : -.globl vector82 -vector82: - pushl $0 -c0102293: 6a 00 push $0x0 - pushl $82 -c0102295: 6a 52 push $0x52 - jmp __alltraps -c0102297: e9 95 07 00 00 jmp c0102a31 <__alltraps> - -c010229c : -.globl vector83 -vector83: - pushl $0 -c010229c: 6a 00 push $0x0 - pushl $83 -c010229e: 6a 53 push $0x53 - jmp __alltraps -c01022a0: e9 8c 07 00 00 jmp c0102a31 <__alltraps> - -c01022a5 : -.globl vector84 -vector84: - pushl $0 -c01022a5: 6a 00 push $0x0 - pushl $84 -c01022a7: 6a 54 push $0x54 - jmp __alltraps -c01022a9: e9 83 07 00 00 jmp c0102a31 <__alltraps> - -c01022ae : -.globl vector85 -vector85: - pushl $0 -c01022ae: 6a 00 push $0x0 - pushl $85 -c01022b0: 6a 55 push $0x55 - jmp __alltraps -c01022b2: e9 7a 07 00 00 jmp c0102a31 <__alltraps> - -c01022b7 : -.globl vector86 -vector86: - pushl $0 -c01022b7: 6a 00 push $0x0 - pushl $86 -c01022b9: 6a 56 push $0x56 - jmp __alltraps -c01022bb: e9 71 07 00 00 jmp c0102a31 <__alltraps> - -c01022c0 : -.globl vector87 -vector87: - pushl $0 -c01022c0: 6a 00 push $0x0 - pushl $87 -c01022c2: 6a 57 push $0x57 - jmp __alltraps -c01022c4: e9 68 07 00 00 jmp c0102a31 <__alltraps> - -c01022c9 : -.globl vector88 -vector88: - pushl $0 -c01022c9: 6a 00 push $0x0 - pushl $88 -c01022cb: 6a 58 push $0x58 - jmp __alltraps -c01022cd: e9 5f 07 00 00 jmp c0102a31 <__alltraps> - -c01022d2 : -.globl vector89 -vector89: - pushl $0 -c01022d2: 6a 00 push $0x0 - pushl $89 -c01022d4: 6a 59 push $0x59 - jmp __alltraps -c01022d6: e9 56 07 00 00 jmp c0102a31 <__alltraps> - -c01022db : -.globl vector90 -vector90: - pushl $0 -c01022db: 6a 00 push $0x0 - pushl $90 -c01022dd: 6a 5a push $0x5a - jmp __alltraps -c01022df: e9 4d 07 00 00 jmp c0102a31 <__alltraps> - -c01022e4 : -.globl vector91 -vector91: - pushl $0 -c01022e4: 6a 00 push $0x0 - pushl $91 -c01022e6: 6a 5b push $0x5b - jmp __alltraps -c01022e8: e9 44 07 00 00 jmp c0102a31 <__alltraps> - -c01022ed : -.globl vector92 -vector92: - pushl $0 -c01022ed: 6a 00 push $0x0 - pushl $92 -c01022ef: 6a 5c push $0x5c - jmp __alltraps -c01022f1: e9 3b 07 00 00 jmp c0102a31 <__alltraps> - -c01022f6 : -.globl vector93 -vector93: - pushl $0 -c01022f6: 6a 00 push $0x0 - pushl $93 -c01022f8: 6a 5d push $0x5d - jmp __alltraps -c01022fa: e9 32 07 00 00 jmp c0102a31 <__alltraps> - -c01022ff : -.globl vector94 -vector94: - pushl $0 -c01022ff: 6a 00 push $0x0 - pushl $94 -c0102301: 6a 5e push $0x5e - jmp __alltraps -c0102303: e9 29 07 00 00 jmp c0102a31 <__alltraps> - -c0102308 : -.globl vector95 -vector95: - pushl $0 -c0102308: 6a 00 push $0x0 - pushl $95 -c010230a: 6a 5f push $0x5f - jmp __alltraps -c010230c: e9 20 07 00 00 jmp c0102a31 <__alltraps> - -c0102311 : -.globl vector96 -vector96: - pushl $0 -c0102311: 6a 00 push $0x0 - pushl $96 -c0102313: 6a 60 push $0x60 - jmp __alltraps -c0102315: e9 17 07 00 00 jmp c0102a31 <__alltraps> - -c010231a : -.globl vector97 -vector97: - pushl $0 -c010231a: 6a 00 push $0x0 - pushl $97 -c010231c: 6a 61 push $0x61 - jmp __alltraps -c010231e: e9 0e 07 00 00 jmp c0102a31 <__alltraps> - -c0102323 : -.globl vector98 -vector98: - pushl $0 -c0102323: 6a 00 push $0x0 - pushl $98 -c0102325: 6a 62 push $0x62 - jmp __alltraps -c0102327: e9 05 07 00 00 jmp c0102a31 <__alltraps> - -c010232c : -.globl vector99 -vector99: - pushl $0 -c010232c: 6a 00 push $0x0 - pushl $99 -c010232e: 6a 63 push $0x63 - jmp __alltraps -c0102330: e9 fc 06 00 00 jmp c0102a31 <__alltraps> - -c0102335 : -.globl vector100 -vector100: - pushl $0 -c0102335: 6a 00 push $0x0 - pushl $100 -c0102337: 6a 64 push $0x64 - jmp __alltraps -c0102339: e9 f3 06 00 00 jmp c0102a31 <__alltraps> - -c010233e : -.globl vector101 -vector101: - pushl $0 -c010233e: 6a 00 push $0x0 - pushl $101 -c0102340: 6a 65 push $0x65 - jmp __alltraps -c0102342: e9 ea 06 00 00 jmp c0102a31 <__alltraps> - -c0102347 : -.globl vector102 -vector102: - pushl $0 -c0102347: 6a 00 push $0x0 - pushl $102 -c0102349: 6a 66 push $0x66 - jmp __alltraps -c010234b: e9 e1 06 00 00 jmp c0102a31 <__alltraps> - -c0102350 : -.globl vector103 -vector103: - pushl $0 -c0102350: 6a 00 push $0x0 - pushl $103 -c0102352: 6a 67 push $0x67 - jmp __alltraps -c0102354: e9 d8 06 00 00 jmp c0102a31 <__alltraps> - -c0102359 : -.globl vector104 -vector104: - pushl $0 -c0102359: 6a 00 push $0x0 - pushl $104 -c010235b: 6a 68 push $0x68 - jmp __alltraps -c010235d: e9 cf 06 00 00 jmp c0102a31 <__alltraps> - -c0102362 : -.globl vector105 -vector105: - pushl $0 -c0102362: 6a 00 push $0x0 - pushl $105 -c0102364: 6a 69 push $0x69 - jmp __alltraps -c0102366: e9 c6 06 00 00 jmp c0102a31 <__alltraps> - -c010236b : -.globl vector106 -vector106: - pushl $0 -c010236b: 6a 00 push $0x0 - pushl $106 -c010236d: 6a 6a push $0x6a - jmp __alltraps -c010236f: e9 bd 06 00 00 jmp c0102a31 <__alltraps> - -c0102374 : -.globl vector107 -vector107: - pushl $0 -c0102374: 6a 00 push $0x0 - pushl $107 -c0102376: 6a 6b push $0x6b - jmp __alltraps -c0102378: e9 b4 06 00 00 jmp c0102a31 <__alltraps> - -c010237d : -.globl vector108 -vector108: - pushl $0 -c010237d: 6a 00 push $0x0 - pushl $108 -c010237f: 6a 6c push $0x6c - jmp __alltraps -c0102381: e9 ab 06 00 00 jmp c0102a31 <__alltraps> - -c0102386 : -.globl vector109 -vector109: - pushl $0 -c0102386: 6a 00 push $0x0 - pushl $109 -c0102388: 6a 6d push $0x6d - jmp __alltraps -c010238a: e9 a2 06 00 00 jmp c0102a31 <__alltraps> - -c010238f : -.globl vector110 -vector110: - pushl $0 -c010238f: 6a 00 push $0x0 - pushl $110 -c0102391: 6a 6e push $0x6e - jmp __alltraps -c0102393: e9 99 06 00 00 jmp c0102a31 <__alltraps> - -c0102398 : -.globl vector111 -vector111: - pushl $0 -c0102398: 6a 00 push $0x0 - pushl $111 -c010239a: 6a 6f push $0x6f - jmp __alltraps -c010239c: e9 90 06 00 00 jmp c0102a31 <__alltraps> - -c01023a1 : -.globl vector112 -vector112: - pushl $0 -c01023a1: 6a 00 push $0x0 - pushl $112 -c01023a3: 6a 70 push $0x70 - jmp __alltraps -c01023a5: e9 87 06 00 00 jmp c0102a31 <__alltraps> - -c01023aa : -.globl vector113 -vector113: - pushl $0 -c01023aa: 6a 00 push $0x0 - pushl $113 -c01023ac: 6a 71 push $0x71 - jmp __alltraps -c01023ae: e9 7e 06 00 00 jmp c0102a31 <__alltraps> - -c01023b3 : -.globl vector114 -vector114: - pushl $0 -c01023b3: 6a 00 push $0x0 - pushl $114 -c01023b5: 6a 72 push $0x72 - jmp __alltraps -c01023b7: e9 75 06 00 00 jmp c0102a31 <__alltraps> - -c01023bc : -.globl vector115 -vector115: - pushl $0 -c01023bc: 6a 00 push $0x0 - pushl $115 -c01023be: 6a 73 push $0x73 - jmp __alltraps -c01023c0: e9 6c 06 00 00 jmp c0102a31 <__alltraps> - -c01023c5 : -.globl vector116 -vector116: - pushl $0 -c01023c5: 6a 00 push $0x0 - pushl $116 -c01023c7: 6a 74 push $0x74 - jmp __alltraps -c01023c9: e9 63 06 00 00 jmp c0102a31 <__alltraps> - -c01023ce : -.globl vector117 -vector117: - pushl $0 -c01023ce: 6a 00 push $0x0 - pushl $117 -c01023d0: 6a 75 push $0x75 - jmp __alltraps -c01023d2: e9 5a 06 00 00 jmp c0102a31 <__alltraps> - -c01023d7 : -.globl vector118 -vector118: - pushl $0 -c01023d7: 6a 00 push $0x0 - pushl $118 -c01023d9: 6a 76 push $0x76 - jmp __alltraps -c01023db: e9 51 06 00 00 jmp c0102a31 <__alltraps> - -c01023e0 : -.globl vector119 -vector119: - pushl $0 -c01023e0: 6a 00 push $0x0 - pushl $119 -c01023e2: 6a 77 push $0x77 - jmp __alltraps -c01023e4: e9 48 06 00 00 jmp c0102a31 <__alltraps> - -c01023e9 : -.globl vector120 -vector120: - pushl $0 -c01023e9: 6a 00 push $0x0 - pushl $120 -c01023eb: 6a 78 push $0x78 - jmp __alltraps -c01023ed: e9 3f 06 00 00 jmp c0102a31 <__alltraps> - -c01023f2 : -.globl vector121 -vector121: - pushl $0 -c01023f2: 6a 00 push $0x0 - pushl $121 -c01023f4: 6a 79 push $0x79 - jmp __alltraps -c01023f6: e9 36 06 00 00 jmp c0102a31 <__alltraps> - -c01023fb : -.globl vector122 -vector122: - pushl $0 -c01023fb: 6a 00 push $0x0 - pushl $122 -c01023fd: 6a 7a push $0x7a - jmp __alltraps -c01023ff: e9 2d 06 00 00 jmp c0102a31 <__alltraps> - -c0102404 : -.globl vector123 -vector123: - pushl $0 -c0102404: 6a 00 push $0x0 - pushl $123 -c0102406: 6a 7b push $0x7b - jmp __alltraps -c0102408: e9 24 06 00 00 jmp c0102a31 <__alltraps> - -c010240d : -.globl vector124 -vector124: - pushl $0 -c010240d: 6a 00 push $0x0 - pushl $124 -c010240f: 6a 7c push $0x7c - jmp __alltraps -c0102411: e9 1b 06 00 00 jmp c0102a31 <__alltraps> - -c0102416 : -.globl vector125 -vector125: - pushl $0 -c0102416: 6a 00 push $0x0 - pushl $125 -c0102418: 6a 7d push $0x7d - jmp __alltraps -c010241a: e9 12 06 00 00 jmp c0102a31 <__alltraps> - -c010241f : -.globl vector126 -vector126: - pushl $0 -c010241f: 6a 00 push $0x0 - pushl $126 -c0102421: 6a 7e push $0x7e - jmp __alltraps -c0102423: e9 09 06 00 00 jmp c0102a31 <__alltraps> - -c0102428 : -.globl vector127 -vector127: - pushl $0 -c0102428: 6a 00 push $0x0 - pushl $127 -c010242a: 6a 7f push $0x7f - jmp __alltraps -c010242c: e9 00 06 00 00 jmp c0102a31 <__alltraps> - -c0102431 : -.globl vector128 -vector128: - pushl $0 -c0102431: 6a 00 push $0x0 - pushl $128 -c0102433: 68 80 00 00 00 push $0x80 - jmp __alltraps -c0102438: e9 f4 05 00 00 jmp c0102a31 <__alltraps> - -c010243d : -.globl vector129 -vector129: - pushl $0 -c010243d: 6a 00 push $0x0 - pushl $129 -c010243f: 68 81 00 00 00 push $0x81 - jmp __alltraps -c0102444: e9 e8 05 00 00 jmp c0102a31 <__alltraps> - -c0102449 : -.globl vector130 -vector130: - pushl $0 -c0102449: 6a 00 push $0x0 - pushl $130 -c010244b: 68 82 00 00 00 push $0x82 - jmp __alltraps -c0102450: e9 dc 05 00 00 jmp c0102a31 <__alltraps> - -c0102455 : -.globl vector131 -vector131: - pushl $0 -c0102455: 6a 00 push $0x0 - pushl $131 -c0102457: 68 83 00 00 00 push $0x83 - jmp __alltraps -c010245c: e9 d0 05 00 00 jmp c0102a31 <__alltraps> - -c0102461 : -.globl vector132 -vector132: - pushl $0 -c0102461: 6a 00 push $0x0 - pushl $132 -c0102463: 68 84 00 00 00 push $0x84 - jmp __alltraps -c0102468: e9 c4 05 00 00 jmp c0102a31 <__alltraps> - -c010246d : -.globl vector133 -vector133: - pushl $0 -c010246d: 6a 00 push $0x0 - pushl $133 -c010246f: 68 85 00 00 00 push $0x85 - jmp __alltraps -c0102474: e9 b8 05 00 00 jmp c0102a31 <__alltraps> - -c0102479 : -.globl vector134 -vector134: - pushl $0 -c0102479: 6a 00 push $0x0 - pushl $134 -c010247b: 68 86 00 00 00 push $0x86 - jmp __alltraps -c0102480: e9 ac 05 00 00 jmp c0102a31 <__alltraps> - -c0102485 : -.globl vector135 -vector135: - pushl $0 -c0102485: 6a 00 push $0x0 - pushl $135 -c0102487: 68 87 00 00 00 push $0x87 - jmp __alltraps -c010248c: e9 a0 05 00 00 jmp c0102a31 <__alltraps> - -c0102491 : -.globl vector136 -vector136: - pushl $0 -c0102491: 6a 00 push $0x0 - pushl $136 -c0102493: 68 88 00 00 00 push $0x88 - jmp __alltraps -c0102498: e9 94 05 00 00 jmp c0102a31 <__alltraps> - -c010249d : -.globl vector137 -vector137: - pushl $0 -c010249d: 6a 00 push $0x0 - pushl $137 -c010249f: 68 89 00 00 00 push $0x89 - jmp __alltraps -c01024a4: e9 88 05 00 00 jmp c0102a31 <__alltraps> - -c01024a9 : -.globl vector138 -vector138: - pushl $0 -c01024a9: 6a 00 push $0x0 - pushl $138 -c01024ab: 68 8a 00 00 00 push $0x8a - jmp __alltraps -c01024b0: e9 7c 05 00 00 jmp c0102a31 <__alltraps> - -c01024b5 : -.globl vector139 -vector139: - pushl $0 -c01024b5: 6a 00 push $0x0 - pushl $139 -c01024b7: 68 8b 00 00 00 push $0x8b - jmp __alltraps -c01024bc: e9 70 05 00 00 jmp c0102a31 <__alltraps> - -c01024c1 : -.globl vector140 -vector140: - pushl $0 -c01024c1: 6a 00 push $0x0 - pushl $140 -c01024c3: 68 8c 00 00 00 push $0x8c - jmp __alltraps -c01024c8: e9 64 05 00 00 jmp c0102a31 <__alltraps> - -c01024cd : -.globl vector141 -vector141: - pushl $0 -c01024cd: 6a 00 push $0x0 - pushl $141 -c01024cf: 68 8d 00 00 00 push $0x8d - jmp __alltraps -c01024d4: e9 58 05 00 00 jmp c0102a31 <__alltraps> - -c01024d9 : -.globl vector142 -vector142: - pushl $0 -c01024d9: 6a 00 push $0x0 - pushl $142 -c01024db: 68 8e 00 00 00 push $0x8e - jmp __alltraps -c01024e0: e9 4c 05 00 00 jmp c0102a31 <__alltraps> - -c01024e5 : -.globl vector143 -vector143: - pushl $0 -c01024e5: 6a 00 push $0x0 - pushl $143 -c01024e7: 68 8f 00 00 00 push $0x8f - jmp __alltraps -c01024ec: e9 40 05 00 00 jmp c0102a31 <__alltraps> - -c01024f1 : -.globl vector144 -vector144: - pushl $0 -c01024f1: 6a 00 push $0x0 - pushl $144 -c01024f3: 68 90 00 00 00 push $0x90 - jmp __alltraps -c01024f8: e9 34 05 00 00 jmp c0102a31 <__alltraps> - -c01024fd : -.globl vector145 -vector145: - pushl $0 -c01024fd: 6a 00 push $0x0 - pushl $145 -c01024ff: 68 91 00 00 00 push $0x91 - jmp __alltraps -c0102504: e9 28 05 00 00 jmp c0102a31 <__alltraps> - -c0102509 : -.globl vector146 -vector146: - pushl $0 -c0102509: 6a 00 push $0x0 - pushl $146 -c010250b: 68 92 00 00 00 push $0x92 - jmp __alltraps -c0102510: e9 1c 05 00 00 jmp c0102a31 <__alltraps> - -c0102515 : -.globl vector147 -vector147: - pushl $0 -c0102515: 6a 00 push $0x0 - pushl $147 -c0102517: 68 93 00 00 00 push $0x93 - jmp __alltraps -c010251c: e9 10 05 00 00 jmp c0102a31 <__alltraps> - -c0102521 : -.globl vector148 -vector148: - pushl $0 -c0102521: 6a 00 push $0x0 - pushl $148 -c0102523: 68 94 00 00 00 push $0x94 - jmp __alltraps -c0102528: e9 04 05 00 00 jmp c0102a31 <__alltraps> - -c010252d : -.globl vector149 -vector149: - pushl $0 -c010252d: 6a 00 push $0x0 - pushl $149 -c010252f: 68 95 00 00 00 push $0x95 - jmp __alltraps -c0102534: e9 f8 04 00 00 jmp c0102a31 <__alltraps> - -c0102539 : -.globl vector150 -vector150: - pushl $0 -c0102539: 6a 00 push $0x0 - pushl $150 -c010253b: 68 96 00 00 00 push $0x96 - jmp __alltraps -c0102540: e9 ec 04 00 00 jmp c0102a31 <__alltraps> - -c0102545 : -.globl vector151 -vector151: - pushl $0 -c0102545: 6a 00 push $0x0 - pushl $151 -c0102547: 68 97 00 00 00 push $0x97 - jmp __alltraps -c010254c: e9 e0 04 00 00 jmp c0102a31 <__alltraps> - -c0102551 : -.globl vector152 -vector152: - pushl $0 -c0102551: 6a 00 push $0x0 - pushl $152 -c0102553: 68 98 00 00 00 push $0x98 - jmp __alltraps -c0102558: e9 d4 04 00 00 jmp c0102a31 <__alltraps> - -c010255d : -.globl vector153 -vector153: - pushl $0 -c010255d: 6a 00 push $0x0 - pushl $153 -c010255f: 68 99 00 00 00 push $0x99 - jmp __alltraps -c0102564: e9 c8 04 00 00 jmp c0102a31 <__alltraps> - -c0102569 : -.globl vector154 -vector154: - pushl $0 -c0102569: 6a 00 push $0x0 - pushl $154 -c010256b: 68 9a 00 00 00 push $0x9a - jmp __alltraps -c0102570: e9 bc 04 00 00 jmp c0102a31 <__alltraps> - -c0102575 : -.globl vector155 -vector155: - pushl $0 -c0102575: 6a 00 push $0x0 - pushl $155 -c0102577: 68 9b 00 00 00 push $0x9b - jmp __alltraps -c010257c: e9 b0 04 00 00 jmp c0102a31 <__alltraps> - -c0102581 : -.globl vector156 -vector156: - pushl $0 -c0102581: 6a 00 push $0x0 - pushl $156 -c0102583: 68 9c 00 00 00 push $0x9c - jmp __alltraps -c0102588: e9 a4 04 00 00 jmp c0102a31 <__alltraps> - -c010258d : -.globl vector157 -vector157: - pushl $0 -c010258d: 6a 00 push $0x0 - pushl $157 -c010258f: 68 9d 00 00 00 push $0x9d - jmp __alltraps -c0102594: e9 98 04 00 00 jmp c0102a31 <__alltraps> - -c0102599 : -.globl vector158 -vector158: - pushl $0 -c0102599: 6a 00 push $0x0 - pushl $158 -c010259b: 68 9e 00 00 00 push $0x9e - jmp __alltraps -c01025a0: e9 8c 04 00 00 jmp c0102a31 <__alltraps> - -c01025a5 : -.globl vector159 -vector159: - pushl $0 -c01025a5: 6a 00 push $0x0 - pushl $159 -c01025a7: 68 9f 00 00 00 push $0x9f - jmp __alltraps -c01025ac: e9 80 04 00 00 jmp c0102a31 <__alltraps> - -c01025b1 : -.globl vector160 -vector160: - pushl $0 -c01025b1: 6a 00 push $0x0 - pushl $160 -c01025b3: 68 a0 00 00 00 push $0xa0 - jmp __alltraps -c01025b8: e9 74 04 00 00 jmp c0102a31 <__alltraps> - -c01025bd : -.globl vector161 -vector161: - pushl $0 -c01025bd: 6a 00 push $0x0 - pushl $161 -c01025bf: 68 a1 00 00 00 push $0xa1 - jmp __alltraps -c01025c4: e9 68 04 00 00 jmp c0102a31 <__alltraps> - -c01025c9 : -.globl vector162 -vector162: - pushl $0 -c01025c9: 6a 00 push $0x0 - pushl $162 -c01025cb: 68 a2 00 00 00 push $0xa2 - jmp __alltraps -c01025d0: e9 5c 04 00 00 jmp c0102a31 <__alltraps> - -c01025d5 : -.globl vector163 -vector163: - pushl $0 -c01025d5: 6a 00 push $0x0 - pushl $163 -c01025d7: 68 a3 00 00 00 push $0xa3 - jmp __alltraps -c01025dc: e9 50 04 00 00 jmp c0102a31 <__alltraps> - -c01025e1 : -.globl vector164 -vector164: - pushl $0 -c01025e1: 6a 00 push $0x0 - pushl $164 -c01025e3: 68 a4 00 00 00 push $0xa4 - jmp __alltraps -c01025e8: e9 44 04 00 00 jmp c0102a31 <__alltraps> - -c01025ed : -.globl vector165 -vector165: - pushl $0 -c01025ed: 6a 00 push $0x0 - pushl $165 -c01025ef: 68 a5 00 00 00 push $0xa5 - jmp __alltraps -c01025f4: e9 38 04 00 00 jmp c0102a31 <__alltraps> - -c01025f9 : -.globl vector166 -vector166: - pushl $0 -c01025f9: 6a 00 push $0x0 - pushl $166 -c01025fb: 68 a6 00 00 00 push $0xa6 - jmp __alltraps -c0102600: e9 2c 04 00 00 jmp c0102a31 <__alltraps> - -c0102605 : -.globl vector167 -vector167: - pushl $0 -c0102605: 6a 00 push $0x0 - pushl $167 -c0102607: 68 a7 00 00 00 push $0xa7 - jmp __alltraps -c010260c: e9 20 04 00 00 jmp c0102a31 <__alltraps> - -c0102611 : -.globl vector168 -vector168: - pushl $0 -c0102611: 6a 00 push $0x0 - pushl $168 -c0102613: 68 a8 00 00 00 push $0xa8 - jmp __alltraps -c0102618: e9 14 04 00 00 jmp c0102a31 <__alltraps> - -c010261d : -.globl vector169 -vector169: - pushl $0 -c010261d: 6a 00 push $0x0 - pushl $169 -c010261f: 68 a9 00 00 00 push $0xa9 - jmp __alltraps -c0102624: e9 08 04 00 00 jmp c0102a31 <__alltraps> - -c0102629 : -.globl vector170 -vector170: - pushl $0 -c0102629: 6a 00 push $0x0 - pushl $170 -c010262b: 68 aa 00 00 00 push $0xaa - jmp __alltraps -c0102630: e9 fc 03 00 00 jmp c0102a31 <__alltraps> - -c0102635 : -.globl vector171 -vector171: - pushl $0 -c0102635: 6a 00 push $0x0 - pushl $171 -c0102637: 68 ab 00 00 00 push $0xab - jmp __alltraps -c010263c: e9 f0 03 00 00 jmp c0102a31 <__alltraps> - -c0102641 : -.globl vector172 -vector172: - pushl $0 -c0102641: 6a 00 push $0x0 - pushl $172 -c0102643: 68 ac 00 00 00 push $0xac - jmp __alltraps -c0102648: e9 e4 03 00 00 jmp c0102a31 <__alltraps> - -c010264d : -.globl vector173 -vector173: - pushl $0 -c010264d: 6a 00 push $0x0 - pushl $173 -c010264f: 68 ad 00 00 00 push $0xad - jmp __alltraps -c0102654: e9 d8 03 00 00 jmp c0102a31 <__alltraps> - -c0102659 : -.globl vector174 -vector174: - pushl $0 -c0102659: 6a 00 push $0x0 - pushl $174 -c010265b: 68 ae 00 00 00 push $0xae - jmp __alltraps -c0102660: e9 cc 03 00 00 jmp c0102a31 <__alltraps> - -c0102665 : -.globl vector175 -vector175: - pushl $0 -c0102665: 6a 00 push $0x0 - pushl $175 -c0102667: 68 af 00 00 00 push $0xaf - jmp __alltraps -c010266c: e9 c0 03 00 00 jmp c0102a31 <__alltraps> - -c0102671 : -.globl vector176 -vector176: - pushl $0 -c0102671: 6a 00 push $0x0 - pushl $176 -c0102673: 68 b0 00 00 00 push $0xb0 - jmp __alltraps -c0102678: e9 b4 03 00 00 jmp c0102a31 <__alltraps> - -c010267d : -.globl vector177 -vector177: - pushl $0 -c010267d: 6a 00 push $0x0 - pushl $177 -c010267f: 68 b1 00 00 00 push $0xb1 - jmp __alltraps -c0102684: e9 a8 03 00 00 jmp c0102a31 <__alltraps> - -c0102689 : -.globl vector178 -vector178: - pushl $0 -c0102689: 6a 00 push $0x0 - pushl $178 -c010268b: 68 b2 00 00 00 push $0xb2 - jmp __alltraps -c0102690: e9 9c 03 00 00 jmp c0102a31 <__alltraps> - -c0102695 : -.globl vector179 -vector179: - pushl $0 -c0102695: 6a 00 push $0x0 - pushl $179 -c0102697: 68 b3 00 00 00 push $0xb3 - jmp __alltraps -c010269c: e9 90 03 00 00 jmp c0102a31 <__alltraps> - -c01026a1 : -.globl vector180 -vector180: - pushl $0 -c01026a1: 6a 00 push $0x0 - pushl $180 -c01026a3: 68 b4 00 00 00 push $0xb4 - jmp __alltraps -c01026a8: e9 84 03 00 00 jmp c0102a31 <__alltraps> - -c01026ad : -.globl vector181 -vector181: - pushl $0 -c01026ad: 6a 00 push $0x0 - pushl $181 -c01026af: 68 b5 00 00 00 push $0xb5 - jmp __alltraps -c01026b4: e9 78 03 00 00 jmp c0102a31 <__alltraps> - -c01026b9 : -.globl vector182 -vector182: - pushl $0 -c01026b9: 6a 00 push $0x0 - pushl $182 -c01026bb: 68 b6 00 00 00 push $0xb6 - jmp __alltraps -c01026c0: e9 6c 03 00 00 jmp c0102a31 <__alltraps> - -c01026c5 : -.globl vector183 -vector183: - pushl $0 -c01026c5: 6a 00 push $0x0 - pushl $183 -c01026c7: 68 b7 00 00 00 push $0xb7 - jmp __alltraps -c01026cc: e9 60 03 00 00 jmp c0102a31 <__alltraps> - -c01026d1 : -.globl vector184 -vector184: - pushl $0 -c01026d1: 6a 00 push $0x0 - pushl $184 -c01026d3: 68 b8 00 00 00 push $0xb8 - jmp __alltraps -c01026d8: e9 54 03 00 00 jmp c0102a31 <__alltraps> - -c01026dd : -.globl vector185 -vector185: - pushl $0 -c01026dd: 6a 00 push $0x0 - pushl $185 -c01026df: 68 b9 00 00 00 push $0xb9 - jmp __alltraps -c01026e4: e9 48 03 00 00 jmp c0102a31 <__alltraps> - -c01026e9 : -.globl vector186 -vector186: - pushl $0 -c01026e9: 6a 00 push $0x0 - pushl $186 -c01026eb: 68 ba 00 00 00 push $0xba - jmp __alltraps -c01026f0: e9 3c 03 00 00 jmp c0102a31 <__alltraps> - -c01026f5 : -.globl vector187 -vector187: - pushl $0 -c01026f5: 6a 00 push $0x0 - pushl $187 -c01026f7: 68 bb 00 00 00 push $0xbb - jmp __alltraps -c01026fc: e9 30 03 00 00 jmp c0102a31 <__alltraps> - -c0102701 : -.globl vector188 -vector188: - pushl $0 -c0102701: 6a 00 push $0x0 - pushl $188 -c0102703: 68 bc 00 00 00 push $0xbc - jmp __alltraps -c0102708: e9 24 03 00 00 jmp c0102a31 <__alltraps> - -c010270d : -.globl vector189 -vector189: - pushl $0 -c010270d: 6a 00 push $0x0 - pushl $189 -c010270f: 68 bd 00 00 00 push $0xbd - jmp __alltraps -c0102714: e9 18 03 00 00 jmp c0102a31 <__alltraps> - -c0102719 : -.globl vector190 -vector190: - pushl $0 -c0102719: 6a 00 push $0x0 - pushl $190 -c010271b: 68 be 00 00 00 push $0xbe - jmp __alltraps -c0102720: e9 0c 03 00 00 jmp c0102a31 <__alltraps> - -c0102725 : -.globl vector191 -vector191: - pushl $0 -c0102725: 6a 00 push $0x0 - pushl $191 -c0102727: 68 bf 00 00 00 push $0xbf - jmp __alltraps -c010272c: e9 00 03 00 00 jmp c0102a31 <__alltraps> - -c0102731 : -.globl vector192 -vector192: - pushl $0 -c0102731: 6a 00 push $0x0 - pushl $192 -c0102733: 68 c0 00 00 00 push $0xc0 - jmp __alltraps -c0102738: e9 f4 02 00 00 jmp c0102a31 <__alltraps> - -c010273d : -.globl vector193 -vector193: - pushl $0 -c010273d: 6a 00 push $0x0 - pushl $193 -c010273f: 68 c1 00 00 00 push $0xc1 - jmp __alltraps -c0102744: e9 e8 02 00 00 jmp c0102a31 <__alltraps> - -c0102749 : -.globl vector194 -vector194: - pushl $0 -c0102749: 6a 00 push $0x0 - pushl $194 -c010274b: 68 c2 00 00 00 push $0xc2 - jmp __alltraps -c0102750: e9 dc 02 00 00 jmp c0102a31 <__alltraps> - -c0102755 : -.globl vector195 -vector195: - pushl $0 -c0102755: 6a 00 push $0x0 - pushl $195 -c0102757: 68 c3 00 00 00 push $0xc3 - jmp __alltraps -c010275c: e9 d0 02 00 00 jmp c0102a31 <__alltraps> - -c0102761 : -.globl vector196 -vector196: - pushl $0 -c0102761: 6a 00 push $0x0 - pushl $196 -c0102763: 68 c4 00 00 00 push $0xc4 - jmp __alltraps -c0102768: e9 c4 02 00 00 jmp c0102a31 <__alltraps> - -c010276d : -.globl vector197 -vector197: - pushl $0 -c010276d: 6a 00 push $0x0 - pushl $197 -c010276f: 68 c5 00 00 00 push $0xc5 - jmp __alltraps -c0102774: e9 b8 02 00 00 jmp c0102a31 <__alltraps> - -c0102779 : -.globl vector198 -vector198: - pushl $0 -c0102779: 6a 00 push $0x0 - pushl $198 -c010277b: 68 c6 00 00 00 push $0xc6 - jmp __alltraps -c0102780: e9 ac 02 00 00 jmp c0102a31 <__alltraps> - -c0102785 : -.globl vector199 -vector199: - pushl $0 -c0102785: 6a 00 push $0x0 - pushl $199 -c0102787: 68 c7 00 00 00 push $0xc7 - jmp __alltraps -c010278c: e9 a0 02 00 00 jmp c0102a31 <__alltraps> - -c0102791 : -.globl vector200 -vector200: - pushl $0 -c0102791: 6a 00 push $0x0 - pushl $200 -c0102793: 68 c8 00 00 00 push $0xc8 - jmp __alltraps -c0102798: e9 94 02 00 00 jmp c0102a31 <__alltraps> - -c010279d : -.globl vector201 -vector201: - pushl $0 -c010279d: 6a 00 push $0x0 - pushl $201 -c010279f: 68 c9 00 00 00 push $0xc9 - jmp __alltraps -c01027a4: e9 88 02 00 00 jmp c0102a31 <__alltraps> - -c01027a9 : -.globl vector202 -vector202: - pushl $0 -c01027a9: 6a 00 push $0x0 - pushl $202 -c01027ab: 68 ca 00 00 00 push $0xca - jmp __alltraps -c01027b0: e9 7c 02 00 00 jmp c0102a31 <__alltraps> - -c01027b5 : -.globl vector203 -vector203: - pushl $0 -c01027b5: 6a 00 push $0x0 - pushl $203 -c01027b7: 68 cb 00 00 00 push $0xcb - jmp __alltraps -c01027bc: e9 70 02 00 00 jmp c0102a31 <__alltraps> - -c01027c1 : -.globl vector204 -vector204: - pushl $0 -c01027c1: 6a 00 push $0x0 - pushl $204 -c01027c3: 68 cc 00 00 00 push $0xcc - jmp __alltraps -c01027c8: e9 64 02 00 00 jmp c0102a31 <__alltraps> - -c01027cd : -.globl vector205 -vector205: - pushl $0 -c01027cd: 6a 00 push $0x0 - pushl $205 -c01027cf: 68 cd 00 00 00 push $0xcd - jmp __alltraps -c01027d4: e9 58 02 00 00 jmp c0102a31 <__alltraps> - -c01027d9 : -.globl vector206 -vector206: - pushl $0 -c01027d9: 6a 00 push $0x0 - pushl $206 -c01027db: 68 ce 00 00 00 push $0xce - jmp __alltraps -c01027e0: e9 4c 02 00 00 jmp c0102a31 <__alltraps> - -c01027e5 : -.globl vector207 -vector207: - pushl $0 -c01027e5: 6a 00 push $0x0 - pushl $207 -c01027e7: 68 cf 00 00 00 push $0xcf - jmp __alltraps -c01027ec: e9 40 02 00 00 jmp c0102a31 <__alltraps> - -c01027f1 : -.globl vector208 -vector208: - pushl $0 -c01027f1: 6a 00 push $0x0 - pushl $208 -c01027f3: 68 d0 00 00 00 push $0xd0 - jmp __alltraps -c01027f8: e9 34 02 00 00 jmp c0102a31 <__alltraps> - -c01027fd : -.globl vector209 -vector209: - pushl $0 -c01027fd: 6a 00 push $0x0 - pushl $209 -c01027ff: 68 d1 00 00 00 push $0xd1 - jmp __alltraps -c0102804: e9 28 02 00 00 jmp c0102a31 <__alltraps> - -c0102809 : -.globl vector210 -vector210: - pushl $0 -c0102809: 6a 00 push $0x0 - pushl $210 -c010280b: 68 d2 00 00 00 push $0xd2 - jmp __alltraps -c0102810: e9 1c 02 00 00 jmp c0102a31 <__alltraps> - -c0102815 : -.globl vector211 -vector211: - pushl $0 -c0102815: 6a 00 push $0x0 - pushl $211 -c0102817: 68 d3 00 00 00 push $0xd3 - jmp __alltraps -c010281c: e9 10 02 00 00 jmp c0102a31 <__alltraps> - -c0102821 : -.globl vector212 -vector212: - pushl $0 -c0102821: 6a 00 push $0x0 - pushl $212 -c0102823: 68 d4 00 00 00 push $0xd4 - jmp __alltraps -c0102828: e9 04 02 00 00 jmp c0102a31 <__alltraps> - -c010282d : -.globl vector213 -vector213: - pushl $0 -c010282d: 6a 00 push $0x0 - pushl $213 -c010282f: 68 d5 00 00 00 push $0xd5 - jmp __alltraps -c0102834: e9 f8 01 00 00 jmp c0102a31 <__alltraps> - -c0102839 : -.globl vector214 -vector214: - pushl $0 -c0102839: 6a 00 push $0x0 - pushl $214 -c010283b: 68 d6 00 00 00 push $0xd6 - jmp __alltraps -c0102840: e9 ec 01 00 00 jmp c0102a31 <__alltraps> - -c0102845 : -.globl vector215 -vector215: - pushl $0 -c0102845: 6a 00 push $0x0 - pushl $215 -c0102847: 68 d7 00 00 00 push $0xd7 - jmp __alltraps -c010284c: e9 e0 01 00 00 jmp c0102a31 <__alltraps> - -c0102851 : -.globl vector216 -vector216: - pushl $0 -c0102851: 6a 00 push $0x0 - pushl $216 -c0102853: 68 d8 00 00 00 push $0xd8 - jmp __alltraps -c0102858: e9 d4 01 00 00 jmp c0102a31 <__alltraps> - -c010285d : -.globl vector217 -vector217: - pushl $0 -c010285d: 6a 00 push $0x0 - pushl $217 -c010285f: 68 d9 00 00 00 push $0xd9 - jmp __alltraps -c0102864: e9 c8 01 00 00 jmp c0102a31 <__alltraps> - -c0102869 : -.globl vector218 -vector218: - pushl $0 -c0102869: 6a 00 push $0x0 - pushl $218 -c010286b: 68 da 00 00 00 push $0xda - jmp __alltraps -c0102870: e9 bc 01 00 00 jmp c0102a31 <__alltraps> - -c0102875 : -.globl vector219 -vector219: - pushl $0 -c0102875: 6a 00 push $0x0 - pushl $219 -c0102877: 68 db 00 00 00 push $0xdb - jmp __alltraps -c010287c: e9 b0 01 00 00 jmp c0102a31 <__alltraps> - -c0102881 : -.globl vector220 -vector220: - pushl $0 -c0102881: 6a 00 push $0x0 - pushl $220 -c0102883: 68 dc 00 00 00 push $0xdc - jmp __alltraps -c0102888: e9 a4 01 00 00 jmp c0102a31 <__alltraps> - -c010288d : -.globl vector221 -vector221: - pushl $0 -c010288d: 6a 00 push $0x0 - pushl $221 -c010288f: 68 dd 00 00 00 push $0xdd - jmp __alltraps -c0102894: e9 98 01 00 00 jmp c0102a31 <__alltraps> - -c0102899 : -.globl vector222 -vector222: - pushl $0 -c0102899: 6a 00 push $0x0 - pushl $222 -c010289b: 68 de 00 00 00 push $0xde - jmp __alltraps -c01028a0: e9 8c 01 00 00 jmp c0102a31 <__alltraps> - -c01028a5 : -.globl vector223 -vector223: - pushl $0 -c01028a5: 6a 00 push $0x0 - pushl $223 -c01028a7: 68 df 00 00 00 push $0xdf - jmp __alltraps -c01028ac: e9 80 01 00 00 jmp c0102a31 <__alltraps> - -c01028b1 : -.globl vector224 -vector224: - pushl $0 -c01028b1: 6a 00 push $0x0 - pushl $224 -c01028b3: 68 e0 00 00 00 push $0xe0 - jmp __alltraps -c01028b8: e9 74 01 00 00 jmp c0102a31 <__alltraps> - -c01028bd : -.globl vector225 -vector225: - pushl $0 -c01028bd: 6a 00 push $0x0 - pushl $225 -c01028bf: 68 e1 00 00 00 push $0xe1 - jmp __alltraps -c01028c4: e9 68 01 00 00 jmp c0102a31 <__alltraps> - -c01028c9 : -.globl vector226 -vector226: - pushl $0 -c01028c9: 6a 00 push $0x0 - pushl $226 -c01028cb: 68 e2 00 00 00 push $0xe2 - jmp __alltraps -c01028d0: e9 5c 01 00 00 jmp c0102a31 <__alltraps> - -c01028d5 : -.globl vector227 -vector227: - pushl $0 -c01028d5: 6a 00 push $0x0 - pushl $227 -c01028d7: 68 e3 00 00 00 push $0xe3 - jmp __alltraps -c01028dc: e9 50 01 00 00 jmp c0102a31 <__alltraps> - -c01028e1 : -.globl vector228 -vector228: - pushl $0 -c01028e1: 6a 00 push $0x0 - pushl $228 -c01028e3: 68 e4 00 00 00 push $0xe4 - jmp __alltraps -c01028e8: e9 44 01 00 00 jmp c0102a31 <__alltraps> - -c01028ed : -.globl vector229 -vector229: - pushl $0 -c01028ed: 6a 00 push $0x0 - pushl $229 -c01028ef: 68 e5 00 00 00 push $0xe5 - jmp __alltraps -c01028f4: e9 38 01 00 00 jmp c0102a31 <__alltraps> - -c01028f9 : -.globl vector230 -vector230: - pushl $0 -c01028f9: 6a 00 push $0x0 - pushl $230 -c01028fb: 68 e6 00 00 00 push $0xe6 - jmp __alltraps -c0102900: e9 2c 01 00 00 jmp c0102a31 <__alltraps> - -c0102905 : -.globl vector231 -vector231: - pushl $0 -c0102905: 6a 00 push $0x0 - pushl $231 -c0102907: 68 e7 00 00 00 push $0xe7 - jmp __alltraps -c010290c: e9 20 01 00 00 jmp c0102a31 <__alltraps> - -c0102911 : -.globl vector232 -vector232: - pushl $0 -c0102911: 6a 00 push $0x0 - pushl $232 -c0102913: 68 e8 00 00 00 push $0xe8 - jmp __alltraps -c0102918: e9 14 01 00 00 jmp c0102a31 <__alltraps> - -c010291d : -.globl vector233 -vector233: - pushl $0 -c010291d: 6a 00 push $0x0 - pushl $233 -c010291f: 68 e9 00 00 00 push $0xe9 - jmp __alltraps -c0102924: e9 08 01 00 00 jmp c0102a31 <__alltraps> - -c0102929 : -.globl vector234 -vector234: - pushl $0 -c0102929: 6a 00 push $0x0 - pushl $234 -c010292b: 68 ea 00 00 00 push $0xea - jmp __alltraps -c0102930: e9 fc 00 00 00 jmp c0102a31 <__alltraps> - -c0102935 : -.globl vector235 -vector235: - pushl $0 -c0102935: 6a 00 push $0x0 - pushl $235 -c0102937: 68 eb 00 00 00 push $0xeb - jmp __alltraps -c010293c: e9 f0 00 00 00 jmp c0102a31 <__alltraps> - -c0102941 : -.globl vector236 -vector236: - pushl $0 -c0102941: 6a 00 push $0x0 - pushl $236 -c0102943: 68 ec 00 00 00 push $0xec - jmp __alltraps -c0102948: e9 e4 00 00 00 jmp c0102a31 <__alltraps> - -c010294d : -.globl vector237 -vector237: - pushl $0 -c010294d: 6a 00 push $0x0 - pushl $237 -c010294f: 68 ed 00 00 00 push $0xed - jmp __alltraps -c0102954: e9 d8 00 00 00 jmp c0102a31 <__alltraps> - -c0102959 : -.globl vector238 -vector238: - pushl $0 -c0102959: 6a 00 push $0x0 - pushl $238 -c010295b: 68 ee 00 00 00 push $0xee - jmp __alltraps -c0102960: e9 cc 00 00 00 jmp c0102a31 <__alltraps> - -c0102965 : -.globl vector239 -vector239: - pushl $0 -c0102965: 6a 00 push $0x0 - pushl $239 -c0102967: 68 ef 00 00 00 push $0xef - jmp __alltraps -c010296c: e9 c0 00 00 00 jmp c0102a31 <__alltraps> - -c0102971 : -.globl vector240 -vector240: - pushl $0 -c0102971: 6a 00 push $0x0 - pushl $240 -c0102973: 68 f0 00 00 00 push $0xf0 - jmp __alltraps -c0102978: e9 b4 00 00 00 jmp c0102a31 <__alltraps> - -c010297d : -.globl vector241 -vector241: - pushl $0 -c010297d: 6a 00 push $0x0 - pushl $241 -c010297f: 68 f1 00 00 00 push $0xf1 - jmp __alltraps -c0102984: e9 a8 00 00 00 jmp c0102a31 <__alltraps> - -c0102989 : -.globl vector242 -vector242: - pushl $0 -c0102989: 6a 00 push $0x0 - pushl $242 -c010298b: 68 f2 00 00 00 push $0xf2 - jmp __alltraps -c0102990: e9 9c 00 00 00 jmp c0102a31 <__alltraps> - -c0102995 : -.globl vector243 -vector243: - pushl $0 -c0102995: 6a 00 push $0x0 - pushl $243 -c0102997: 68 f3 00 00 00 push $0xf3 - jmp __alltraps -c010299c: e9 90 00 00 00 jmp c0102a31 <__alltraps> - -c01029a1 : -.globl vector244 -vector244: - pushl $0 -c01029a1: 6a 00 push $0x0 - pushl $244 -c01029a3: 68 f4 00 00 00 push $0xf4 - jmp __alltraps -c01029a8: e9 84 00 00 00 jmp c0102a31 <__alltraps> - -c01029ad : -.globl vector245 -vector245: - pushl $0 -c01029ad: 6a 00 push $0x0 - pushl $245 -c01029af: 68 f5 00 00 00 push $0xf5 - jmp __alltraps -c01029b4: e9 78 00 00 00 jmp c0102a31 <__alltraps> - -c01029b9 : -.globl vector246 -vector246: - pushl $0 -c01029b9: 6a 00 push $0x0 - pushl $246 -c01029bb: 68 f6 00 00 00 push $0xf6 - jmp __alltraps -c01029c0: e9 6c 00 00 00 jmp c0102a31 <__alltraps> - -c01029c5 : -.globl vector247 -vector247: - pushl $0 -c01029c5: 6a 00 push $0x0 - pushl $247 -c01029c7: 68 f7 00 00 00 push $0xf7 - jmp __alltraps -c01029cc: e9 60 00 00 00 jmp c0102a31 <__alltraps> - -c01029d1 : -.globl vector248 -vector248: - pushl $0 -c01029d1: 6a 00 push $0x0 - pushl $248 -c01029d3: 68 f8 00 00 00 push $0xf8 - jmp __alltraps -c01029d8: e9 54 00 00 00 jmp c0102a31 <__alltraps> - -c01029dd : -.globl vector249 -vector249: - pushl $0 -c01029dd: 6a 00 push $0x0 - pushl $249 -c01029df: 68 f9 00 00 00 push $0xf9 - jmp __alltraps -c01029e4: e9 48 00 00 00 jmp c0102a31 <__alltraps> - -c01029e9 : -.globl vector250 -vector250: - pushl $0 -c01029e9: 6a 00 push $0x0 - pushl $250 -c01029eb: 68 fa 00 00 00 push $0xfa - jmp __alltraps -c01029f0: e9 3c 00 00 00 jmp c0102a31 <__alltraps> - -c01029f5 : -.globl vector251 -vector251: - pushl $0 -c01029f5: 6a 00 push $0x0 - pushl $251 -c01029f7: 68 fb 00 00 00 push $0xfb - jmp __alltraps -c01029fc: e9 30 00 00 00 jmp c0102a31 <__alltraps> - -c0102a01 : -.globl vector252 -vector252: - pushl $0 -c0102a01: 6a 00 push $0x0 - pushl $252 -c0102a03: 68 fc 00 00 00 push $0xfc - jmp __alltraps -c0102a08: e9 24 00 00 00 jmp c0102a31 <__alltraps> - -c0102a0d : -.globl vector253 -vector253: - pushl $0 -c0102a0d: 6a 00 push $0x0 - pushl $253 -c0102a0f: 68 fd 00 00 00 push $0xfd - jmp __alltraps -c0102a14: e9 18 00 00 00 jmp c0102a31 <__alltraps> - -c0102a19 : -.globl vector254 -vector254: - pushl $0 -c0102a19: 6a 00 push $0x0 - pushl $254 -c0102a1b: 68 fe 00 00 00 push $0xfe - jmp __alltraps -c0102a20: e9 0c 00 00 00 jmp c0102a31 <__alltraps> - -c0102a25 : -.globl vector255 -vector255: - pushl $0 -c0102a25: 6a 00 push $0x0 - pushl $255 -c0102a27: 68 ff 00 00 00 push $0xff - jmp __alltraps -c0102a2c: e9 00 00 00 00 jmp c0102a31 <__alltraps> - -c0102a31 <__alltraps>: -.text -.globl __alltraps -__alltraps: - # push registers to build a trap frame - # therefore make the stack look like a struct trapframe - pushl %ds -c0102a31: 1e push %ds - pushl %es -c0102a32: 06 push %es - pushl %fs -c0102a33: 0f a0 push %fs - pushl %gs -c0102a35: 0f a8 push %gs - pushal -c0102a37: 60 pusha - - # load GD_KDATA into %ds and %es to set up data segments for kernel - movl $GD_KDATA, %eax -c0102a38: b8 10 00 00 00 mov $0x10,%eax - movw %ax, %ds -c0102a3d: 8e d8 mov %eax,%ds - movw %ax, %es -c0102a3f: 8e c0 mov %eax,%es - - # push %esp to pass a pointer to the trapframe as an argument to trap() - pushl %esp -c0102a41: 54 push %esp - - # call trap(tf), where tf=%esp - call trap -c0102a42: e8 63 f5 ff ff call c0101faa - - # pop the pushed stack pointer - popl %esp -c0102a47: 5c pop %esp - -c0102a48 <__trapret>: - - # return falls through to trapret... -.globl __trapret -__trapret: - # restore registers from stack - popal -c0102a48: 61 popa - - # restore %ds, %es, %fs and %gs - popl %gs -c0102a49: 0f a9 pop %gs - popl %fs -c0102a4b: 0f a1 pop %fs - popl %es -c0102a4d: 07 pop %es - popl %ds -c0102a4e: 1f pop %ds - - # get rid of the trap number and error code - addl $0x8, %esp -c0102a4f: 83 c4 08 add $0x8,%esp - iret -c0102a52: cf iret - -c0102a53 : - -extern struct Page *pages; -extern size_t npage; - -static inline ppn_t -page2ppn(struct Page *page) { -c0102a53: 55 push %ebp -c0102a54: 89 e5 mov %esp,%ebp - return page - pages; -c0102a56: 8b 45 08 mov 0x8(%ebp),%eax -c0102a59: 8b 15 64 a9 11 c0 mov 0xc011a964,%edx -c0102a5f: 29 d0 sub %edx,%eax -c0102a61: c1 f8 02 sar $0x2,%eax -c0102a64: 69 c0 cd cc cc cc imul $0xcccccccd,%eax,%eax -} -c0102a6a: 5d pop %ebp -c0102a6b: c3 ret - -c0102a6c : - -static inline uintptr_t -page2pa(struct Page *page) { -c0102a6c: 55 push %ebp -c0102a6d: 89 e5 mov %esp,%ebp - return page2ppn(page) << PGSHIFT; -c0102a6f: ff 75 08 pushl 0x8(%ebp) -c0102a72: e8 dc ff ff ff call c0102a53 -c0102a77: 83 c4 04 add $0x4,%esp -c0102a7a: c1 e0 0c shl $0xc,%eax -} -c0102a7d: c9 leave -c0102a7e: c3 ret - -c0102a7f : - -static inline struct Page * -pa2page(uintptr_t pa) { -c0102a7f: 55 push %ebp -c0102a80: 89 e5 mov %esp,%ebp -c0102a82: 83 ec 08 sub $0x8,%esp - if (PPN(pa) >= npage) { -c0102a85: 8b 45 08 mov 0x8(%ebp),%eax -c0102a88: c1 e8 0c shr $0xc,%eax -c0102a8b: 89 c2 mov %eax,%edx -c0102a8d: a1 c0 a8 11 c0 mov 0xc011a8c0,%eax -c0102a92: 39 c2 cmp %eax,%edx -c0102a94: 72 14 jb c0102aaa - panic("pa2page called with invalid pa"); -c0102a96: 83 ec 04 sub $0x4,%esp -c0102a99: 68 50 70 10 c0 push $0xc0107050 -c0102a9e: 6a 5a push $0x5a -c0102aa0: 68 6f 70 10 c0 push $0xc010706f -c0102aa5: e8 23 d9 ff ff call c01003cd <__panic> - } - return &pages[PPN(pa)]; -c0102aaa: 8b 0d 64 a9 11 c0 mov 0xc011a964,%ecx -c0102ab0: 8b 45 08 mov 0x8(%ebp),%eax -c0102ab3: c1 e8 0c shr $0xc,%eax -c0102ab6: 89 c2 mov %eax,%edx -c0102ab8: 89 d0 mov %edx,%eax -c0102aba: c1 e0 02 shl $0x2,%eax -c0102abd: 01 d0 add %edx,%eax -c0102abf: c1 e0 02 shl $0x2,%eax -c0102ac2: 01 c8 add %ecx,%eax -} -c0102ac4: c9 leave -c0102ac5: c3 ret - -c0102ac6 : - -static inline void * -page2kva(struct Page *page) { -c0102ac6: 55 push %ebp -c0102ac7: 89 e5 mov %esp,%ebp -c0102ac9: 83 ec 18 sub $0x18,%esp - return KADDR(page2pa(page)); -c0102acc: ff 75 08 pushl 0x8(%ebp) -c0102acf: e8 98 ff ff ff call c0102a6c -c0102ad4: 83 c4 04 add $0x4,%esp -c0102ad7: 89 45 f4 mov %eax,-0xc(%ebp) -c0102ada: 8b 45 f4 mov -0xc(%ebp),%eax -c0102add: c1 e8 0c shr $0xc,%eax -c0102ae0: 89 45 f0 mov %eax,-0x10(%ebp) -c0102ae3: a1 c0 a8 11 c0 mov 0xc011a8c0,%eax -c0102ae8: 39 45 f0 cmp %eax,-0x10(%ebp) -c0102aeb: 72 14 jb c0102b01 -c0102aed: ff 75 f4 pushl -0xc(%ebp) -c0102af0: 68 80 70 10 c0 push $0xc0107080 -c0102af5: 6a 61 push $0x61 -c0102af7: 68 6f 70 10 c0 push $0xc010706f -c0102afc: e8 cc d8 ff ff call c01003cd <__panic> -c0102b01: 8b 45 f4 mov -0xc(%ebp),%eax -c0102b04: 2d 00 00 00 40 sub $0x40000000,%eax -} -c0102b09: c9 leave -c0102b0a: c3 ret - -c0102b0b : -kva2page(void *kva) { - return pa2page(PADDR(kva)); -} - -static inline struct Page * -pte2page(pte_t pte) { -c0102b0b: 55 push %ebp -c0102b0c: 89 e5 mov %esp,%ebp -c0102b0e: 83 ec 08 sub $0x8,%esp - if (!(pte & PTE_P)) { -c0102b11: 8b 45 08 mov 0x8(%ebp),%eax -c0102b14: 83 e0 01 and $0x1,%eax -c0102b17: 85 c0 test %eax,%eax -c0102b19: 75 14 jne c0102b2f - panic("pte2page called with invalid pte"); -c0102b1b: 83 ec 04 sub $0x4,%esp -c0102b1e: 68 a4 70 10 c0 push $0xc01070a4 -c0102b23: 6a 6c push $0x6c -c0102b25: 68 6f 70 10 c0 push $0xc010706f -c0102b2a: e8 9e d8 ff ff call c01003cd <__panic> - } - return pa2page(PTE_ADDR(pte)); -c0102b2f: 8b 45 08 mov 0x8(%ebp),%eax -c0102b32: 25 00 f0 ff ff and $0xfffff000,%eax -c0102b37: 83 ec 0c sub $0xc,%esp -c0102b3a: 50 push %eax -c0102b3b: e8 3f ff ff ff call c0102a7f -c0102b40: 83 c4 10 add $0x10,%esp -} -c0102b43: c9 leave -c0102b44: c3 ret - -c0102b45 : - -static inline struct Page * -pde2page(pde_t pde) { -c0102b45: 55 push %ebp -c0102b46: 89 e5 mov %esp,%ebp -c0102b48: 83 ec 08 sub $0x8,%esp - return pa2page(PDE_ADDR(pde)); -c0102b4b: 8b 45 08 mov 0x8(%ebp),%eax -c0102b4e: 25 00 f0 ff ff and $0xfffff000,%eax -c0102b53: 83 ec 0c sub $0xc,%esp -c0102b56: 50 push %eax -c0102b57: e8 23 ff ff ff call c0102a7f -c0102b5c: 83 c4 10 add $0x10,%esp -} -c0102b5f: c9 leave -c0102b60: c3 ret - -c0102b61 : - -static inline int -page_ref(struct Page *page) { -c0102b61: 55 push %ebp -c0102b62: 89 e5 mov %esp,%ebp - return page->ref; -c0102b64: 8b 45 08 mov 0x8(%ebp),%eax -c0102b67: 8b 00 mov (%eax),%eax -} -c0102b69: 5d pop %ebp -c0102b6a: c3 ret - -c0102b6b : - -static inline void -set_page_ref(struct Page *page, int val) { -c0102b6b: 55 push %ebp -c0102b6c: 89 e5 mov %esp,%ebp - page->ref = val; -c0102b6e: 8b 45 08 mov 0x8(%ebp),%eax -c0102b71: 8b 55 0c mov 0xc(%ebp),%edx -c0102b74: 89 10 mov %edx,(%eax) -} -c0102b76: 90 nop -c0102b77: 5d pop %ebp -c0102b78: c3 ret - -c0102b79 : - -static inline int -page_ref_inc(struct Page *page) { -c0102b79: 55 push %ebp -c0102b7a: 89 e5 mov %esp,%ebp - page->ref += 1; -c0102b7c: 8b 45 08 mov 0x8(%ebp),%eax -c0102b7f: 8b 00 mov (%eax),%eax -c0102b81: 8d 50 01 lea 0x1(%eax),%edx -c0102b84: 8b 45 08 mov 0x8(%ebp),%eax -c0102b87: 89 10 mov %edx,(%eax) - return page->ref; -c0102b89: 8b 45 08 mov 0x8(%ebp),%eax -c0102b8c: 8b 00 mov (%eax),%eax -} -c0102b8e: 5d pop %ebp -c0102b8f: c3 ret - -c0102b90 : - -static inline int -page_ref_dec(struct Page *page) { -c0102b90: 55 push %ebp -c0102b91: 89 e5 mov %esp,%ebp - page->ref -= 1; -c0102b93: 8b 45 08 mov 0x8(%ebp),%eax -c0102b96: 8b 00 mov (%eax),%eax -c0102b98: 8d 50 ff lea -0x1(%eax),%edx -c0102b9b: 8b 45 08 mov 0x8(%ebp),%eax -c0102b9e: 89 10 mov %edx,(%eax) - return page->ref; -c0102ba0: 8b 45 08 mov 0x8(%ebp),%eax -c0102ba3: 8b 00 mov (%eax),%eax -} -c0102ba5: 5d pop %ebp -c0102ba6: c3 ret - -c0102ba7 <__intr_save>: -#include -#include -#include - -static inline bool -__intr_save(void) { -c0102ba7: 55 push %ebp -c0102ba8: 89 e5 mov %esp,%ebp -c0102baa: 83 ec 18 sub $0x18,%esp -} - -static inline uint32_t -read_eflags(void) { - uint32_t eflags; - asm volatile ("pushfl; popl %0" : "=r" (eflags)); -c0102bad: 9c pushf -c0102bae: 58 pop %eax -c0102baf: 89 45 f4 mov %eax,-0xc(%ebp) - return eflags; -c0102bb2: 8b 45 f4 mov -0xc(%ebp),%eax - if (read_eflags() & FL_IF) { -c0102bb5: 25 00 02 00 00 and $0x200,%eax -c0102bba: 85 c0 test %eax,%eax -c0102bbc: 74 0c je c0102bca <__intr_save+0x23> - intr_disable(); -c0102bbe: e8 9e ec ff ff call c0101861 - return 1; -c0102bc3: b8 01 00 00 00 mov $0x1,%eax -c0102bc8: eb 05 jmp c0102bcf <__intr_save+0x28> - } - return 0; -c0102bca: b8 00 00 00 00 mov $0x0,%eax -} -c0102bcf: c9 leave -c0102bd0: c3 ret - -c0102bd1 <__intr_restore>: - -static inline void -__intr_restore(bool flag) { -c0102bd1: 55 push %ebp -c0102bd2: 89 e5 mov %esp,%ebp -c0102bd4: 83 ec 08 sub $0x8,%esp - if (flag) { -c0102bd7: 83 7d 08 00 cmpl $0x0,0x8(%ebp) -c0102bdb: 74 05 je c0102be2 <__intr_restore+0x11> - intr_enable(); -c0102bdd: e8 78 ec ff ff call c010185a - } -} -c0102be2: 90 nop -c0102be3: c9 leave -c0102be4: c3 ret - -c0102be5 : -/* * - * lgdt - load the global descriptor table register and reset the - * data/code segement registers for kernel. - * */ -static inline void -lgdt(struct pseudodesc *pd) { -c0102be5: 55 push %ebp -c0102be6: 89 e5 mov %esp,%ebp - asm volatile ("lgdt (%0)" :: "r" (pd)); -c0102be8: 8b 45 08 mov 0x8(%ebp),%eax -c0102beb: 0f 01 10 lgdtl (%eax) - asm volatile ("movw %%ax, %%gs" :: "a" (USER_DS)); -c0102bee: b8 23 00 00 00 mov $0x23,%eax -c0102bf3: 8e e8 mov %eax,%gs - asm volatile ("movw %%ax, %%fs" :: "a" (USER_DS)); -c0102bf5: b8 23 00 00 00 mov $0x23,%eax -c0102bfa: 8e e0 mov %eax,%fs - asm volatile ("movw %%ax, %%es" :: "a" (KERNEL_DS)); -c0102bfc: b8 10 00 00 00 mov $0x10,%eax -c0102c01: 8e c0 mov %eax,%es - asm volatile ("movw %%ax, %%ds" :: "a" (KERNEL_DS)); -c0102c03: b8 10 00 00 00 mov $0x10,%eax -c0102c08: 8e d8 mov %eax,%ds - asm volatile ("movw %%ax, %%ss" :: "a" (KERNEL_DS)); -c0102c0a: b8 10 00 00 00 mov $0x10,%eax -c0102c0f: 8e d0 mov %eax,%ss - // reload cs - asm volatile ("ljmp %0, $1f\n 1:\n" :: "i" (KERNEL_CS)); -c0102c11: ea 18 2c 10 c0 08 00 ljmp $0x8,$0xc0102c18 -} -c0102c18: 90 nop -c0102c19: 5d pop %ebp -c0102c1a: c3 ret - -c0102c1b : - * load_esp0 - change the ESP0 in default task state segment, - * so that we can use different kernel stack when we trap frame - * user to kernel. - * */ -void -load_esp0(uintptr_t esp0) { -c0102c1b: 55 push %ebp -c0102c1c: 89 e5 mov %esp,%ebp - ts.ts_esp0 = esp0; -c0102c1e: 8b 45 08 mov 0x8(%ebp),%eax -c0102c21: a3 e4 a8 11 c0 mov %eax,0xc011a8e4 -} -c0102c26: 90 nop -c0102c27: 5d pop %ebp -c0102c28: c3 ret - -c0102c29 : - -/* gdt_init - initialize the default GDT and TSS */ -static void -gdt_init(void) { -c0102c29: 55 push %ebp -c0102c2a: 89 e5 mov %esp,%ebp -c0102c2c: 83 ec 10 sub $0x10,%esp - // set boot kernel stack and default SS0 - load_esp0((uintptr_t)bootstacktop); -c0102c2f: b8 00 90 11 c0 mov $0xc0119000,%eax -c0102c34: 50 push %eax -c0102c35: e8 e1 ff ff ff call c0102c1b -c0102c3a: 83 c4 04 add $0x4,%esp - ts.ts_ss0 = KERNEL_DS; -c0102c3d: 66 c7 05 e8 a8 11 c0 movw $0x10,0xc011a8e8 -c0102c44: 10 00 - - // initialize the TSS filed of the gdt - gdt[SEG_TSS] = SEGTSS(STS_T32A, (uintptr_t)&ts, sizeof(ts), DPL_KERNEL); -c0102c46: 66 c7 05 28 9a 11 c0 movw $0x68,0xc0119a28 -c0102c4d: 68 00 -c0102c4f: b8 e0 a8 11 c0 mov $0xc011a8e0,%eax -c0102c54: 66 a3 2a 9a 11 c0 mov %ax,0xc0119a2a -c0102c5a: b8 e0 a8 11 c0 mov $0xc011a8e0,%eax -c0102c5f: c1 e8 10 shr $0x10,%eax -c0102c62: a2 2c 9a 11 c0 mov %al,0xc0119a2c -c0102c67: 0f b6 05 2d 9a 11 c0 movzbl 0xc0119a2d,%eax -c0102c6e: 83 e0 f0 and $0xfffffff0,%eax -c0102c71: 83 c8 09 or $0x9,%eax -c0102c74: a2 2d 9a 11 c0 mov %al,0xc0119a2d -c0102c79: 0f b6 05 2d 9a 11 c0 movzbl 0xc0119a2d,%eax -c0102c80: 83 e0 ef and $0xffffffef,%eax -c0102c83: a2 2d 9a 11 c0 mov %al,0xc0119a2d -c0102c88: 0f b6 05 2d 9a 11 c0 movzbl 0xc0119a2d,%eax -c0102c8f: 83 e0 9f and $0xffffff9f,%eax -c0102c92: a2 2d 9a 11 c0 mov %al,0xc0119a2d -c0102c97: 0f b6 05 2d 9a 11 c0 movzbl 0xc0119a2d,%eax -c0102c9e: 83 c8 80 or $0xffffff80,%eax -c0102ca1: a2 2d 9a 11 c0 mov %al,0xc0119a2d -c0102ca6: 0f b6 05 2e 9a 11 c0 movzbl 0xc0119a2e,%eax -c0102cad: 83 e0 f0 and $0xfffffff0,%eax -c0102cb0: a2 2e 9a 11 c0 mov %al,0xc0119a2e -c0102cb5: 0f b6 05 2e 9a 11 c0 movzbl 0xc0119a2e,%eax -c0102cbc: 83 e0 ef and $0xffffffef,%eax -c0102cbf: a2 2e 9a 11 c0 mov %al,0xc0119a2e -c0102cc4: 0f b6 05 2e 9a 11 c0 movzbl 0xc0119a2e,%eax -c0102ccb: 83 e0 df and $0xffffffdf,%eax -c0102cce: a2 2e 9a 11 c0 mov %al,0xc0119a2e -c0102cd3: 0f b6 05 2e 9a 11 c0 movzbl 0xc0119a2e,%eax -c0102cda: 83 c8 40 or $0x40,%eax -c0102cdd: a2 2e 9a 11 c0 mov %al,0xc0119a2e -c0102ce2: 0f b6 05 2e 9a 11 c0 movzbl 0xc0119a2e,%eax -c0102ce9: 83 e0 7f and $0x7f,%eax -c0102cec: a2 2e 9a 11 c0 mov %al,0xc0119a2e -c0102cf1: b8 e0 a8 11 c0 mov $0xc011a8e0,%eax -c0102cf6: c1 e8 18 shr $0x18,%eax -c0102cf9: a2 2f 9a 11 c0 mov %al,0xc0119a2f - - // reload all segment registers - lgdt(&gdt_pd); -c0102cfe: 68 30 9a 11 c0 push $0xc0119a30 -c0102d03: e8 dd fe ff ff call c0102be5 -c0102d08: 83 c4 04 add $0x4,%esp -c0102d0b: 66 c7 45 fe 28 00 movw $0x28,-0x2(%ebp) - asm volatile ("cli" ::: "memory"); -} - -static inline void -ltr(uint16_t sel) { - asm volatile ("ltr %0" :: "r" (sel) : "memory"); -c0102d11: 0f b7 45 fe movzwl -0x2(%ebp),%eax -c0102d15: 0f 00 d8 ltr %ax - - // load the TSS - ltr(GD_TSS); -} -c0102d18: 90 nop -c0102d19: c9 leave -c0102d1a: c3 ret - -c0102d1b : - -//init_pmm_manager - initialize a pmm_manager instance -static void -init_pmm_manager(void) { -c0102d1b: 55 push %ebp -c0102d1c: 89 e5 mov %esp,%ebp -c0102d1e: 83 ec 08 sub $0x8,%esp - pmm_manager = &default_pmm_manager; -c0102d21: c7 05 5c a9 11 c0 00 movl $0xc0107b00,0xc011a95c -c0102d28: 7b 10 c0 - // pmm_manager = &buddy_pmm_manager; - cprintf("memory management: %s\n", pmm_manager->name); -c0102d2b: a1 5c a9 11 c0 mov 0xc011a95c,%eax -c0102d30: 8b 00 mov (%eax),%eax -c0102d32: 83 ec 08 sub $0x8,%esp -c0102d35: 50 push %eax -c0102d36: 68 d0 70 10 c0 push $0xc01070d0 -c0102d3b: e8 27 d5 ff ff call c0100267 -c0102d40: 83 c4 10 add $0x10,%esp - pmm_manager->init(); -c0102d43: a1 5c a9 11 c0 mov 0xc011a95c,%eax -c0102d48: 8b 40 04 mov 0x4(%eax),%eax -c0102d4b: ff d0 call *%eax -} -c0102d4d: 90 nop -c0102d4e: c9 leave -c0102d4f: c3 ret - -c0102d50 : - -//init_memmap - call pmm->init_memmap to build Page struct for free memory -static void -init_memmap(struct Page *base, size_t n) { -c0102d50: 55 push %ebp -c0102d51: 89 e5 mov %esp,%ebp -c0102d53: 83 ec 08 sub $0x8,%esp - pmm_manager->init_memmap(base, n); -c0102d56: a1 5c a9 11 c0 mov 0xc011a95c,%eax -c0102d5b: 8b 40 08 mov 0x8(%eax),%eax -c0102d5e: 83 ec 08 sub $0x8,%esp -c0102d61: ff 75 0c pushl 0xc(%ebp) -c0102d64: ff 75 08 pushl 0x8(%ebp) -c0102d67: ff d0 call *%eax -c0102d69: 83 c4 10 add $0x10,%esp -} -c0102d6c: 90 nop -c0102d6d: c9 leave -c0102d6e: c3 ret - -c0102d6f : - -//alloc_pages - call pmm->alloc_pages to allocate a continuous n*PAGESIZE memory -struct Page * -alloc_pages(size_t n) { -c0102d6f: 55 push %ebp -c0102d70: 89 e5 mov %esp,%ebp -c0102d72: 83 ec 18 sub $0x18,%esp - struct Page *page=NULL; -c0102d75: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - bool intr_flag; - local_intr_save(intr_flag); -c0102d7c: e8 26 fe ff ff call c0102ba7 <__intr_save> -c0102d81: 89 45 f0 mov %eax,-0x10(%ebp) - { - page = pmm_manager->alloc_pages(n); -c0102d84: a1 5c a9 11 c0 mov 0xc011a95c,%eax -c0102d89: 8b 40 0c mov 0xc(%eax),%eax -c0102d8c: 83 ec 0c sub $0xc,%esp -c0102d8f: ff 75 08 pushl 0x8(%ebp) -c0102d92: ff d0 call *%eax -c0102d94: 83 c4 10 add $0x10,%esp -c0102d97: 89 45 f4 mov %eax,-0xc(%ebp) - } - local_intr_restore(intr_flag); -c0102d9a: 83 ec 0c sub $0xc,%esp -c0102d9d: ff 75 f0 pushl -0x10(%ebp) -c0102da0: e8 2c fe ff ff call c0102bd1 <__intr_restore> -c0102da5: 83 c4 10 add $0x10,%esp - return page; -c0102da8: 8b 45 f4 mov -0xc(%ebp),%eax -} -c0102dab: c9 leave -c0102dac: c3 ret - -c0102dad : - -//free_pages - call pmm->free_pages to free a continuous n*PAGESIZE memory -void -free_pages(struct Page *base, size_t n) { -c0102dad: 55 push %ebp -c0102dae: 89 e5 mov %esp,%ebp -c0102db0: 83 ec 18 sub $0x18,%esp - bool intr_flag; - local_intr_save(intr_flag); -c0102db3: e8 ef fd ff ff call c0102ba7 <__intr_save> -c0102db8: 89 45 f4 mov %eax,-0xc(%ebp) - { - pmm_manager->free_pages(base, n); -c0102dbb: a1 5c a9 11 c0 mov 0xc011a95c,%eax -c0102dc0: 8b 40 10 mov 0x10(%eax),%eax -c0102dc3: 83 ec 08 sub $0x8,%esp -c0102dc6: ff 75 0c pushl 0xc(%ebp) -c0102dc9: ff 75 08 pushl 0x8(%ebp) -c0102dcc: ff d0 call *%eax -c0102dce: 83 c4 10 add $0x10,%esp - } - local_intr_restore(intr_flag); -c0102dd1: 83 ec 0c sub $0xc,%esp -c0102dd4: ff 75 f4 pushl -0xc(%ebp) -c0102dd7: e8 f5 fd ff ff call c0102bd1 <__intr_restore> -c0102ddc: 83 c4 10 add $0x10,%esp -} -c0102ddf: 90 nop -c0102de0: c9 leave -c0102de1: c3 ret - -c0102de2 : - -//nr_free_pages - call pmm->nr_free_pages to get the size (nr*PAGESIZE) -//of current free memory -size_t -nr_free_pages(void) { -c0102de2: 55 push %ebp -c0102de3: 89 e5 mov %esp,%ebp -c0102de5: 83 ec 18 sub $0x18,%esp - size_t ret; - bool intr_flag; - local_intr_save(intr_flag); -c0102de8: e8 ba fd ff ff call c0102ba7 <__intr_save> -c0102ded: 89 45 f4 mov %eax,-0xc(%ebp) - { - ret = pmm_manager->nr_free_pages(); -c0102df0: a1 5c a9 11 c0 mov 0xc011a95c,%eax -c0102df5: 8b 40 14 mov 0x14(%eax),%eax -c0102df8: ff d0 call *%eax -c0102dfa: 89 45 f0 mov %eax,-0x10(%ebp) - } - local_intr_restore(intr_flag); -c0102dfd: 83 ec 0c sub $0xc,%esp -c0102e00: ff 75 f4 pushl -0xc(%ebp) -c0102e03: e8 c9 fd ff ff call c0102bd1 <__intr_restore> -c0102e08: 83 c4 10 add $0x10,%esp - return ret; -c0102e0b: 8b 45 f0 mov -0x10(%ebp),%eax -} -c0102e0e: c9 leave -c0102e0f: c3 ret - -c0102e10 : - -/* pmm_init - initialize the physical memory management */ -static void -page_init(void) { -c0102e10: 55 push %ebp -c0102e11: 89 e5 mov %esp,%ebp -c0102e13: 57 push %edi -c0102e14: 56 push %esi -c0102e15: 53 push %ebx -c0102e16: 83 ec 7c sub $0x7c,%esp - // e820map is at 0xC0008000 (PA) defined in bootloader. - struct e820map *memmap = (struct e820map *)(0x8000 + KERNBASE); -c0102e19: c7 45 c4 00 80 00 c0 movl $0xc0008000,-0x3c(%ebp) - uint64_t maxpa = 0; -c0102e20: c7 45 e0 00 00 00 00 movl $0x0,-0x20(%ebp) -c0102e27: c7 45 e4 00 00 00 00 movl $0x0,-0x1c(%ebp) - - cprintf("e820map:\n"); -c0102e2e: 83 ec 0c sub $0xc,%esp -c0102e31: 68 e7 70 10 c0 push $0xc01070e7 -c0102e36: e8 2c d4 ff ff call c0100267 -c0102e3b: 83 c4 10 add $0x10,%esp - int i; - for (i = 0; i < memmap->nr_map; i ++) { -c0102e3e: c7 45 dc 00 00 00 00 movl $0x0,-0x24(%ebp) -c0102e45: e9 fc 00 00 00 jmp c0102f46 - uint64_t begin = memmap->map[i].addr, end = begin + memmap->map[i].size; -c0102e4a: 8b 4d c4 mov -0x3c(%ebp),%ecx -c0102e4d: 8b 55 dc mov -0x24(%ebp),%edx -c0102e50: 89 d0 mov %edx,%eax -c0102e52: c1 e0 02 shl $0x2,%eax -c0102e55: 01 d0 add %edx,%eax -c0102e57: c1 e0 02 shl $0x2,%eax -c0102e5a: 01 c8 add %ecx,%eax -c0102e5c: 8b 50 08 mov 0x8(%eax),%edx -c0102e5f: 8b 40 04 mov 0x4(%eax),%eax -c0102e62: 89 45 b8 mov %eax,-0x48(%ebp) -c0102e65: 89 55 bc mov %edx,-0x44(%ebp) -c0102e68: 8b 4d c4 mov -0x3c(%ebp),%ecx -c0102e6b: 8b 55 dc mov -0x24(%ebp),%edx -c0102e6e: 89 d0 mov %edx,%eax -c0102e70: c1 e0 02 shl $0x2,%eax -c0102e73: 01 d0 add %edx,%eax -c0102e75: c1 e0 02 shl $0x2,%eax -c0102e78: 01 c8 add %ecx,%eax -c0102e7a: 8b 48 0c mov 0xc(%eax),%ecx -c0102e7d: 8b 58 10 mov 0x10(%eax),%ebx -c0102e80: 8b 45 b8 mov -0x48(%ebp),%eax -c0102e83: 8b 55 bc mov -0x44(%ebp),%edx -c0102e86: 01 c8 add %ecx,%eax -c0102e88: 11 da adc %ebx,%edx -c0102e8a: 89 45 b0 mov %eax,-0x50(%ebp) -c0102e8d: 89 55 b4 mov %edx,-0x4c(%ebp) - cprintf(" memory: %08llx, [%08llx, %08llx], type = %d.\n", -c0102e90: 8b 4d c4 mov -0x3c(%ebp),%ecx -c0102e93: 8b 55 dc mov -0x24(%ebp),%edx -c0102e96: 89 d0 mov %edx,%eax -c0102e98: c1 e0 02 shl $0x2,%eax -c0102e9b: 01 d0 add %edx,%eax -c0102e9d: c1 e0 02 shl $0x2,%eax -c0102ea0: 01 c8 add %ecx,%eax -c0102ea2: 83 c0 14 add $0x14,%eax -c0102ea5: 8b 00 mov (%eax),%eax -c0102ea7: 89 45 84 mov %eax,-0x7c(%ebp) -c0102eaa: 8b 45 b0 mov -0x50(%ebp),%eax -c0102ead: 8b 55 b4 mov -0x4c(%ebp),%edx -c0102eb0: 83 c0 ff add $0xffffffff,%eax -c0102eb3: 83 d2 ff adc $0xffffffff,%edx -c0102eb6: 89 c1 mov %eax,%ecx -c0102eb8: 89 d3 mov %edx,%ebx -c0102eba: 8b 55 c4 mov -0x3c(%ebp),%edx -c0102ebd: 89 55 80 mov %edx,-0x80(%ebp) -c0102ec0: 8b 55 dc mov -0x24(%ebp),%edx -c0102ec3: 89 d0 mov %edx,%eax -c0102ec5: c1 e0 02 shl $0x2,%eax -c0102ec8: 01 d0 add %edx,%eax -c0102eca: c1 e0 02 shl $0x2,%eax -c0102ecd: 03 45 80 add -0x80(%ebp),%eax -c0102ed0: 8b 50 10 mov 0x10(%eax),%edx -c0102ed3: 8b 40 0c mov 0xc(%eax),%eax -c0102ed6: ff 75 84 pushl -0x7c(%ebp) -c0102ed9: 53 push %ebx -c0102eda: 51 push %ecx -c0102edb: ff 75 bc pushl -0x44(%ebp) -c0102ede: ff 75 b8 pushl -0x48(%ebp) -c0102ee1: 52 push %edx -c0102ee2: 50 push %eax -c0102ee3: 68 f4 70 10 c0 push $0xc01070f4 -c0102ee8: e8 7a d3 ff ff call c0100267 -c0102eed: 83 c4 20 add $0x20,%esp - memmap->map[i].size, begin, end - 1, memmap->map[i].type); - if (memmap->map[i].type == E820_ARM) { -c0102ef0: 8b 4d c4 mov -0x3c(%ebp),%ecx -c0102ef3: 8b 55 dc mov -0x24(%ebp),%edx -c0102ef6: 89 d0 mov %edx,%eax -c0102ef8: c1 e0 02 shl $0x2,%eax -c0102efb: 01 d0 add %edx,%eax -c0102efd: c1 e0 02 shl $0x2,%eax -c0102f00: 01 c8 add %ecx,%eax -c0102f02: 83 c0 14 add $0x14,%eax -c0102f05: 8b 00 mov (%eax),%eax -c0102f07: 83 f8 01 cmp $0x1,%eax -c0102f0a: 75 36 jne c0102f42 - // KMEMSIZE restricts the maximum detected physical address. - // Thus the block with starting address >= KMEMSIZE will not be recognized. - if (maxpa < end && begin < KMEMSIZE) { -c0102f0c: 8b 45 e0 mov -0x20(%ebp),%eax -c0102f0f: 8b 55 e4 mov -0x1c(%ebp),%edx -c0102f12: 3b 55 b4 cmp -0x4c(%ebp),%edx -c0102f15: 77 2b ja c0102f42 -c0102f17: 3b 55 b4 cmp -0x4c(%ebp),%edx -c0102f1a: 72 05 jb c0102f21 -c0102f1c: 3b 45 b0 cmp -0x50(%ebp),%eax -c0102f1f: 73 21 jae c0102f42 -c0102f21: 83 7d bc 00 cmpl $0x0,-0x44(%ebp) -c0102f25: 77 1b ja c0102f42 -c0102f27: 83 7d bc 00 cmpl $0x0,-0x44(%ebp) -c0102f2b: 72 09 jb c0102f36 -c0102f2d: 81 7d b8 ff ff ff 37 cmpl $0x37ffffff,-0x48(%ebp) -c0102f34: 77 0c ja c0102f42 - maxpa = end; -c0102f36: 8b 45 b0 mov -0x50(%ebp),%eax -c0102f39: 8b 55 b4 mov -0x4c(%ebp),%edx -c0102f3c: 89 45 e0 mov %eax,-0x20(%ebp) -c0102f3f: 89 55 e4 mov %edx,-0x1c(%ebp) - struct e820map *memmap = (struct e820map *)(0x8000 + KERNBASE); - uint64_t maxpa = 0; - - cprintf("e820map:\n"); - int i; - for (i = 0; i < memmap->nr_map; i ++) { -c0102f42: 83 45 dc 01 addl $0x1,-0x24(%ebp) -c0102f46: 8b 45 c4 mov -0x3c(%ebp),%eax -c0102f49: 8b 00 mov (%eax),%eax -c0102f4b: 3b 45 dc cmp -0x24(%ebp),%eax -c0102f4e: 0f 8f f6 fe ff ff jg c0102e4a - if (maxpa < end && begin < KMEMSIZE) { - maxpa = end; - } - } - } - if (maxpa > KMEMSIZE) { -c0102f54: 83 7d e4 00 cmpl $0x0,-0x1c(%ebp) -c0102f58: 72 1d jb c0102f77 -c0102f5a: 83 7d e4 00 cmpl $0x0,-0x1c(%ebp) -c0102f5e: 77 09 ja c0102f69 -c0102f60: 81 7d e0 00 00 00 38 cmpl $0x38000000,-0x20(%ebp) -c0102f67: 76 0e jbe c0102f77 - maxpa = KMEMSIZE; -c0102f69: c7 45 e0 00 00 00 38 movl $0x38000000,-0x20(%ebp) -c0102f70: c7 45 e4 00 00 00 00 movl $0x0,-0x1c(%ebp) - } - - // Provided in kernel.ld - End of kernel bss. - extern char end[]; - cprintf("Detected maxpa = %08llx\n", maxpa); -c0102f77: 83 ec 04 sub $0x4,%esp -c0102f7a: ff 75 e4 pushl -0x1c(%ebp) -c0102f7d: ff 75 e0 pushl -0x20(%ebp) -c0102f80: 68 24 71 10 c0 push $0xc0107124 -c0102f85: e8 dd d2 ff ff call c0100267 -c0102f8a: 83 c4 10 add $0x10,%esp - // Here, npage is only used for an estimation of how many entries in the page table. - npage = maxpa / PGSIZE; -c0102f8d: 8b 45 e0 mov -0x20(%ebp),%eax -c0102f90: 8b 55 e4 mov -0x1c(%ebp),%edx -c0102f93: 0f ac d0 0c shrd $0xc,%edx,%eax -c0102f97: c1 ea 0c shr $0xc,%edx -c0102f9a: a3 c0 a8 11 c0 mov %eax,0xc011a8c0 - // virtual address of physical pages descriptor array. - // The array starts at the end of the kernel code. - pages = (struct Page *)ROUNDUP((void *)end, PGSIZE); -c0102f9f: c7 45 ac 00 10 00 00 movl $0x1000,-0x54(%ebp) -c0102fa6: b8 74 a9 11 c0 mov $0xc011a974,%eax -c0102fab: 8d 50 ff lea -0x1(%eax),%edx -c0102fae: 8b 45 ac mov -0x54(%ebp),%eax -c0102fb1: 01 d0 add %edx,%eax -c0102fb3: 89 45 a8 mov %eax,-0x58(%ebp) -c0102fb6: 8b 45 a8 mov -0x58(%ebp),%eax -c0102fb9: ba 00 00 00 00 mov $0x0,%edx -c0102fbe: f7 75 ac divl -0x54(%ebp) -c0102fc1: 8b 45 a8 mov -0x58(%ebp),%eax -c0102fc4: 29 d0 sub %edx,%eax -c0102fc6: a3 64 a9 11 c0 mov %eax,0xc011a964 - - for (i = 0; i < npage; i ++) { -c0102fcb: c7 45 dc 00 00 00 00 movl $0x0,-0x24(%ebp) -c0102fd2: eb 2f jmp c0103003 - SetPageReserved(pages + i); -c0102fd4: 8b 0d 64 a9 11 c0 mov 0xc011a964,%ecx -c0102fda: 8b 55 dc mov -0x24(%ebp),%edx -c0102fdd: 89 d0 mov %edx,%eax -c0102fdf: c1 e0 02 shl $0x2,%eax -c0102fe2: 01 d0 add %edx,%eax -c0102fe4: c1 e0 02 shl $0x2,%eax -c0102fe7: 01 c8 add %ecx,%eax -c0102fe9: 83 c0 04 add $0x4,%eax -c0102fec: c7 45 90 00 00 00 00 movl $0x0,-0x70(%ebp) -c0102ff3: 89 45 8c mov %eax,-0x74(%ebp) - * Note that @nr may be almost arbitrarily large; this function is not - * restricted to acting on a single-word quantity. - * */ -static inline void -set_bit(int nr, volatile void *addr) { - asm volatile ("btsl %1, %0" :"=m" (*(volatile long *)addr) : "Ir" (nr)); -c0102ff6: 8b 45 8c mov -0x74(%ebp),%eax -c0102ff9: 8b 55 90 mov -0x70(%ebp),%edx -c0102ffc: 0f ab 10 bts %edx,(%eax) - npage = maxpa / PGSIZE; - // virtual address of physical pages descriptor array. - // The array starts at the end of the kernel code. - pages = (struct Page *)ROUNDUP((void *)end, PGSIZE); - - for (i = 0; i < npage; i ++) { -c0102fff: 83 45 dc 01 addl $0x1,-0x24(%ebp) -c0103003: 8b 55 dc mov -0x24(%ebp),%edx -c0103006: a1 c0 a8 11 c0 mov 0xc011a8c0,%eax -c010300b: 39 c2 cmp %eax,%edx -c010300d: 72 c5 jb c0102fd4 - SetPageReserved(pages + i); - } - - uintptr_t freemem = PADDR((uintptr_t)pages + sizeof(struct Page) * npage); -c010300f: 8b 15 c0 a8 11 c0 mov 0xc011a8c0,%edx -c0103015: 89 d0 mov %edx,%eax -c0103017: c1 e0 02 shl $0x2,%eax -c010301a: 01 d0 add %edx,%eax -c010301c: c1 e0 02 shl $0x2,%eax -c010301f: 89 c2 mov %eax,%edx -c0103021: a1 64 a9 11 c0 mov 0xc011a964,%eax -c0103026: 01 d0 add %edx,%eax -c0103028: 89 45 a4 mov %eax,-0x5c(%ebp) -c010302b: 81 7d a4 ff ff ff bf cmpl $0xbfffffff,-0x5c(%ebp) -c0103032: 77 17 ja c010304b -c0103034: ff 75 a4 pushl -0x5c(%ebp) -c0103037: 68 40 71 10 c0 push $0xc0107140 -c010303c: 68 e4 00 00 00 push $0xe4 -c0103041: 68 64 71 10 c0 push $0xc0107164 -c0103046: e8 82 d3 ff ff call c01003cd <__panic> -c010304b: 8b 45 a4 mov -0x5c(%ebp),%eax -c010304e: 05 00 00 00 40 add $0x40000000,%eax -c0103053: 89 45 a0 mov %eax,-0x60(%ebp) - - cprintf("Kernel ends at (va): %08x, Total pages = %d, which takes up %d.\n", -c0103056: 8b 15 c0 a8 11 c0 mov 0xc011a8c0,%edx -c010305c: 89 d0 mov %edx,%eax -c010305e: c1 e0 02 shl $0x2,%eax -c0103061: 01 d0 add %edx,%eax -c0103063: c1 e0 02 shl $0x2,%eax -c0103066: 89 c1 mov %eax,%ecx -c0103068: a1 c0 a8 11 c0 mov 0xc011a8c0,%eax -c010306d: ba 74 a9 11 c0 mov $0xc011a974,%edx -c0103072: 51 push %ecx -c0103073: 50 push %eax -c0103074: 52 push %edx -c0103075: 68 74 71 10 c0 push $0xc0107174 -c010307a: e8 e8 d1 ff ff call c0100267 -c010307f: 83 c4 10 add $0x10,%esp - (uintptr_t)end, npage, sizeof(struct Page) * npage); - cprintf("Freemem = (pa) %08x\n", freemem); -c0103082: 83 ec 08 sub $0x8,%esp -c0103085: ff 75 a0 pushl -0x60(%ebp) -c0103088: 68 b5 71 10 c0 push $0xc01071b5 -c010308d: e8 d5 d1 ff ff call c0100267 -c0103092: 83 c4 10 add $0x10,%esp - - for (i = 0; i < memmap->nr_map; i ++) { -c0103095: c7 45 dc 00 00 00 00 movl $0x0,-0x24(%ebp) -c010309c: e9 85 01 00 00 jmp c0103226 - uint64_t begin = memmap->map[i].addr, end = begin + memmap->map[i].size; -c01030a1: 8b 4d c4 mov -0x3c(%ebp),%ecx -c01030a4: 8b 55 dc mov -0x24(%ebp),%edx -c01030a7: 89 d0 mov %edx,%eax -c01030a9: c1 e0 02 shl $0x2,%eax -c01030ac: 01 d0 add %edx,%eax -c01030ae: c1 e0 02 shl $0x2,%eax -c01030b1: 01 c8 add %ecx,%eax -c01030b3: 8b 50 08 mov 0x8(%eax),%edx -c01030b6: 8b 40 04 mov 0x4(%eax),%eax -c01030b9: 89 45 d0 mov %eax,-0x30(%ebp) -c01030bc: 89 55 d4 mov %edx,-0x2c(%ebp) -c01030bf: 8b 4d c4 mov -0x3c(%ebp),%ecx -c01030c2: 8b 55 dc mov -0x24(%ebp),%edx -c01030c5: 89 d0 mov %edx,%eax -c01030c7: c1 e0 02 shl $0x2,%eax -c01030ca: 01 d0 add %edx,%eax -c01030cc: c1 e0 02 shl $0x2,%eax -c01030cf: 01 c8 add %ecx,%eax -c01030d1: 8b 48 0c mov 0xc(%eax),%ecx -c01030d4: 8b 58 10 mov 0x10(%eax),%ebx -c01030d7: 8b 45 d0 mov -0x30(%ebp),%eax -c01030da: 8b 55 d4 mov -0x2c(%ebp),%edx -c01030dd: 01 c8 add %ecx,%eax -c01030df: 11 da adc %ebx,%edx -c01030e1: 89 45 c8 mov %eax,-0x38(%ebp) -c01030e4: 89 55 cc mov %edx,-0x34(%ebp) - if (memmap->map[i].type == E820_ARM) { -c01030e7: 8b 4d c4 mov -0x3c(%ebp),%ecx -c01030ea: 8b 55 dc mov -0x24(%ebp),%edx -c01030ed: 89 d0 mov %edx,%eax -c01030ef: c1 e0 02 shl $0x2,%eax -c01030f2: 01 d0 add %edx,%eax -c01030f4: c1 e0 02 shl $0x2,%eax -c01030f7: 01 c8 add %ecx,%eax -c01030f9: 83 c0 14 add $0x14,%eax -c01030fc: 8b 00 mov (%eax),%eax -c01030fe: 83 f8 01 cmp $0x1,%eax -c0103101: 0f 85 1b 01 00 00 jne c0103222 - if (begin < freemem) { -c0103107: 8b 45 a0 mov -0x60(%ebp),%eax -c010310a: ba 00 00 00 00 mov $0x0,%edx -c010310f: 3b 55 d4 cmp -0x2c(%ebp),%edx -c0103112: 72 17 jb c010312b -c0103114: 3b 55 d4 cmp -0x2c(%ebp),%edx -c0103117: 77 05 ja c010311e -c0103119: 3b 45 d0 cmp -0x30(%ebp),%eax -c010311c: 76 0d jbe c010312b - begin = freemem; -c010311e: 8b 45 a0 mov -0x60(%ebp),%eax -c0103121: 89 45 d0 mov %eax,-0x30(%ebp) -c0103124: c7 45 d4 00 00 00 00 movl $0x0,-0x2c(%ebp) - } - if (end > KMEMSIZE) { -c010312b: 83 7d cc 00 cmpl $0x0,-0x34(%ebp) -c010312f: 72 1d jb c010314e -c0103131: 83 7d cc 00 cmpl $0x0,-0x34(%ebp) -c0103135: 77 09 ja c0103140 -c0103137: 81 7d c8 00 00 00 38 cmpl $0x38000000,-0x38(%ebp) -c010313e: 76 0e jbe c010314e - end = KMEMSIZE; -c0103140: c7 45 c8 00 00 00 38 movl $0x38000000,-0x38(%ebp) -c0103147: c7 45 cc 00 00 00 00 movl $0x0,-0x34(%ebp) - } - // Gather all available blocks and build pages linked list. - if (begin < end) { -c010314e: 8b 45 d0 mov -0x30(%ebp),%eax -c0103151: 8b 55 d4 mov -0x2c(%ebp),%edx -c0103154: 3b 55 cc cmp -0x34(%ebp),%edx -c0103157: 0f 87 c5 00 00 00 ja c0103222 -c010315d: 3b 55 cc cmp -0x34(%ebp),%edx -c0103160: 72 09 jb c010316b -c0103162: 3b 45 c8 cmp -0x38(%ebp),%eax -c0103165: 0f 83 b7 00 00 00 jae c0103222 - begin = ROUNDUP(begin, PGSIZE); -c010316b: c7 45 9c 00 10 00 00 movl $0x1000,-0x64(%ebp) -c0103172: 8b 55 d0 mov -0x30(%ebp),%edx -c0103175: 8b 45 9c mov -0x64(%ebp),%eax -c0103178: 01 d0 add %edx,%eax -c010317a: 83 e8 01 sub $0x1,%eax -c010317d: 89 45 98 mov %eax,-0x68(%ebp) -c0103180: 8b 45 98 mov -0x68(%ebp),%eax -c0103183: ba 00 00 00 00 mov $0x0,%edx -c0103188: f7 75 9c divl -0x64(%ebp) -c010318b: 8b 45 98 mov -0x68(%ebp),%eax -c010318e: 29 d0 sub %edx,%eax -c0103190: ba 00 00 00 00 mov $0x0,%edx -c0103195: 89 45 d0 mov %eax,-0x30(%ebp) -c0103198: 89 55 d4 mov %edx,-0x2c(%ebp) - end = ROUNDDOWN(end, PGSIZE); -c010319b: 8b 45 c8 mov -0x38(%ebp),%eax -c010319e: 89 45 94 mov %eax,-0x6c(%ebp) -c01031a1: 8b 45 94 mov -0x6c(%ebp),%eax -c01031a4: ba 00 00 00 00 mov $0x0,%edx -c01031a9: 89 c3 mov %eax,%ebx -c01031ab: 81 e3 00 f0 ff ff and $0xfffff000,%ebx -c01031b1: 89 de mov %ebx,%esi -c01031b3: 89 d0 mov %edx,%eax -c01031b5: 83 e0 00 and $0x0,%eax -c01031b8: 89 c7 mov %eax,%edi -c01031ba: 89 75 c8 mov %esi,-0x38(%ebp) -c01031bd: 89 7d cc mov %edi,-0x34(%ebp) - if (begin < end) { -c01031c0: 8b 45 d0 mov -0x30(%ebp),%eax -c01031c3: 8b 55 d4 mov -0x2c(%ebp),%edx -c01031c6: 3b 55 cc cmp -0x34(%ebp),%edx -c01031c9: 77 57 ja c0103222 -c01031cb: 3b 55 cc cmp -0x34(%ebp),%edx -c01031ce: 72 05 jb c01031d5 -c01031d0: 3b 45 c8 cmp -0x38(%ebp),%eax -c01031d3: 73 4d jae c0103222 - cprintf("Detected one allocatable block (pa) start = %08llx, end = %08llx\n", begin, end); -c01031d5: 83 ec 0c sub $0xc,%esp -c01031d8: ff 75 cc pushl -0x34(%ebp) -c01031db: ff 75 c8 pushl -0x38(%ebp) -c01031de: ff 75 d4 pushl -0x2c(%ebp) -c01031e1: ff 75 d0 pushl -0x30(%ebp) -c01031e4: 68 cc 71 10 c0 push $0xc01071cc -c01031e9: e8 79 d0 ff ff call c0100267 -c01031ee: 83 c4 20 add $0x20,%esp - // pa2page converts physical address into its page descriptor's virtual address. - init_memmap(pa2page(begin), (end - begin) / PGSIZE); -c01031f1: 8b 45 c8 mov -0x38(%ebp),%eax -c01031f4: 8b 55 cc mov -0x34(%ebp),%edx -c01031f7: 2b 45 d0 sub -0x30(%ebp),%eax -c01031fa: 1b 55 d4 sbb -0x2c(%ebp),%edx -c01031fd: 0f ac d0 0c shrd $0xc,%edx,%eax -c0103201: c1 ea 0c shr $0xc,%edx -c0103204: 89 c3 mov %eax,%ebx -c0103206: 8b 45 d0 mov -0x30(%ebp),%eax -c0103209: 83 ec 0c sub $0xc,%esp -c010320c: 50 push %eax -c010320d: e8 6d f8 ff ff call c0102a7f -c0103212: 83 c4 10 add $0x10,%esp -c0103215: 83 ec 08 sub $0x8,%esp -c0103218: 53 push %ebx -c0103219: 50 push %eax -c010321a: e8 31 fb ff ff call c0102d50 -c010321f: 83 c4 10 add $0x10,%esp - - cprintf("Kernel ends at (va): %08x, Total pages = %d, which takes up %d.\n", - (uintptr_t)end, npage, sizeof(struct Page) * npage); - cprintf("Freemem = (pa) %08x\n", freemem); - - for (i = 0; i < memmap->nr_map; i ++) { -c0103222: 83 45 dc 01 addl $0x1,-0x24(%ebp) -c0103226: 8b 45 c4 mov -0x3c(%ebp),%eax -c0103229: 8b 00 mov (%eax),%eax -c010322b: 3b 45 dc cmp -0x24(%ebp),%eax -c010322e: 0f 8f 6d fe ff ff jg c01030a1 - init_memmap(pa2page(begin), (end - begin) / PGSIZE); - } - } - } - } -} -c0103234: 90 nop -c0103235: 8d 65 f4 lea -0xc(%ebp),%esp -c0103238: 5b pop %ebx -c0103239: 5e pop %esi -c010323a: 5f pop %edi -c010323b: 5d pop %ebp -c010323c: c3 ret - -c010323d : - -static void -enable_paging(void) { -c010323d: 55 push %ebp -c010323e: 89 e5 mov %esp,%ebp -c0103240: 83 ec 10 sub $0x10,%esp - lcr3(boot_cr3); -c0103243: a1 60 a9 11 c0 mov 0xc011a960,%eax -c0103248: 89 45 fc mov %eax,-0x4(%ebp) - asm volatile ("mov %0, %%cr0" :: "r" (cr0) : "memory"); -} - -static inline void -lcr3(uintptr_t cr3) { - asm volatile ("mov %0, %%cr3" :: "r" (cr3) : "memory"); -c010324b: 8b 45 fc mov -0x4(%ebp),%eax -c010324e: 0f 22 d8 mov %eax,%cr3 -} - -static inline uintptr_t -rcr0(void) { - uintptr_t cr0; - asm volatile ("mov %%cr0, %0" : "=r" (cr0) :: "memory"); -c0103251: 0f 20 c0 mov %cr0,%eax -c0103254: 89 45 f4 mov %eax,-0xc(%ebp) - return cr0; -c0103257: 8b 45 f4 mov -0xc(%ebp),%eax - - // turn on paging - uint32_t cr0 = rcr0(); -c010325a: 89 45 f8 mov %eax,-0x8(%ebp) - cr0 |= CR0_PE | CR0_PG | CR0_AM | CR0_WP | CR0_NE | CR0_TS | CR0_EM | CR0_MP; -c010325d: 81 4d f8 2f 00 05 80 orl $0x8005002f,-0x8(%ebp) - cr0 &= ~(CR0_TS | CR0_EM); -c0103264: 83 65 f8 f3 andl $0xfffffff3,-0x8(%ebp) -c0103268: 8b 45 f8 mov -0x8(%ebp),%eax -c010326b: 89 45 f0 mov %eax,-0x10(%ebp) - asm volatile ("pushl %0; popfl" :: "r" (eflags)); -} - -static inline void -lcr0(uintptr_t cr0) { - asm volatile ("mov %0, %%cr0" :: "r" (cr0) : "memory"); -c010326e: 8b 45 f0 mov -0x10(%ebp),%eax -c0103271: 0f 22 c0 mov %eax,%cr0 - lcr0(cr0); -} -c0103274: 90 nop -c0103275: c9 leave -c0103276: c3 ret - -c0103277 : -// la: linear address of this memory need to map (after x86 segment map) -// size: memory size -// pa: physical address of this memory -// perm: permission of this memory -static void -boot_map_segment(pde_t *pgdir, uintptr_t la, size_t size, uintptr_t pa, uint32_t perm) { -c0103277: 55 push %ebp -c0103278: 89 e5 mov %esp,%ebp -c010327a: 83 ec 28 sub $0x28,%esp - assert(PGOFF(la) == PGOFF(pa)); -c010327d: 8b 45 0c mov 0xc(%ebp),%eax -c0103280: 33 45 14 xor 0x14(%ebp),%eax -c0103283: 25 ff 0f 00 00 and $0xfff,%eax -c0103288: 85 c0 test %eax,%eax -c010328a: 74 19 je c01032a5 -c010328c: 68 0e 72 10 c0 push $0xc010720e -c0103291: 68 25 72 10 c0 push $0xc0107225 -c0103296: 68 14 01 00 00 push $0x114 -c010329b: 68 64 71 10 c0 push $0xc0107164 -c01032a0: e8 28 d1 ff ff call c01003cd <__panic> - size_t n = ROUNDUP(size + PGOFF(la), PGSIZE) / PGSIZE; -c01032a5: c7 45 f0 00 10 00 00 movl $0x1000,-0x10(%ebp) -c01032ac: 8b 45 0c mov 0xc(%ebp),%eax -c01032af: 25 ff 0f 00 00 and $0xfff,%eax -c01032b4: 89 c2 mov %eax,%edx -c01032b6: 8b 45 10 mov 0x10(%ebp),%eax -c01032b9: 01 c2 add %eax,%edx -c01032bb: 8b 45 f0 mov -0x10(%ebp),%eax -c01032be: 01 d0 add %edx,%eax -c01032c0: 83 e8 01 sub $0x1,%eax -c01032c3: 89 45 ec mov %eax,-0x14(%ebp) -c01032c6: 8b 45 ec mov -0x14(%ebp),%eax -c01032c9: ba 00 00 00 00 mov $0x0,%edx -c01032ce: f7 75 f0 divl -0x10(%ebp) -c01032d1: 8b 45 ec mov -0x14(%ebp),%eax -c01032d4: 29 d0 sub %edx,%eax -c01032d6: c1 e8 0c shr $0xc,%eax -c01032d9: 89 45 f4 mov %eax,-0xc(%ebp) - la = ROUNDDOWN(la, PGSIZE); -c01032dc: 8b 45 0c mov 0xc(%ebp),%eax -c01032df: 89 45 e8 mov %eax,-0x18(%ebp) -c01032e2: 8b 45 e8 mov -0x18(%ebp),%eax -c01032e5: 25 00 f0 ff ff and $0xfffff000,%eax -c01032ea: 89 45 0c mov %eax,0xc(%ebp) - pa = ROUNDDOWN(pa, PGSIZE); -c01032ed: 8b 45 14 mov 0x14(%ebp),%eax -c01032f0: 89 45 e4 mov %eax,-0x1c(%ebp) -c01032f3: 8b 45 e4 mov -0x1c(%ebp),%eax -c01032f6: 25 00 f0 ff ff and $0xfffff000,%eax -c01032fb: 89 45 14 mov %eax,0x14(%ebp) - for (; n > 0; n --, la += PGSIZE, pa += PGSIZE) { -c01032fe: eb 57 jmp c0103357 - pte_t *ptep = get_pte(pgdir, la, 1); -c0103300: 83 ec 04 sub $0x4,%esp -c0103303: 6a 01 push $0x1 -c0103305: ff 75 0c pushl 0xc(%ebp) -c0103308: ff 75 08 pushl 0x8(%ebp) -c010330b: e8 98 01 00 00 call c01034a8 -c0103310: 83 c4 10 add $0x10,%esp -c0103313: 89 45 e0 mov %eax,-0x20(%ebp) - assert(ptep != NULL); -c0103316: 83 7d e0 00 cmpl $0x0,-0x20(%ebp) -c010331a: 75 19 jne c0103335 -c010331c: 68 3a 72 10 c0 push $0xc010723a -c0103321: 68 25 72 10 c0 push $0xc0107225 -c0103326: 68 1a 01 00 00 push $0x11a -c010332b: 68 64 71 10 c0 push $0xc0107164 -c0103330: e8 98 d0 ff ff call c01003cd <__panic> - *ptep = pa | PTE_P | perm; -c0103335: 8b 45 14 mov 0x14(%ebp),%eax -c0103338: 0b 45 18 or 0x18(%ebp),%eax -c010333b: 83 c8 01 or $0x1,%eax -c010333e: 89 c2 mov %eax,%edx -c0103340: 8b 45 e0 mov -0x20(%ebp),%eax -c0103343: 89 10 mov %edx,(%eax) -boot_map_segment(pde_t *pgdir, uintptr_t la, size_t size, uintptr_t pa, uint32_t perm) { - assert(PGOFF(la) == PGOFF(pa)); - size_t n = ROUNDUP(size + PGOFF(la), PGSIZE) / PGSIZE; - la = ROUNDDOWN(la, PGSIZE); - pa = ROUNDDOWN(pa, PGSIZE); - for (; n > 0; n --, la += PGSIZE, pa += PGSIZE) { -c0103345: 83 6d f4 01 subl $0x1,-0xc(%ebp) -c0103349: 81 45 0c 00 10 00 00 addl $0x1000,0xc(%ebp) -c0103350: 81 45 14 00 10 00 00 addl $0x1000,0x14(%ebp) -c0103357: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c010335b: 75 a3 jne c0103300 - pte_t *ptep = get_pte(pgdir, la, 1); - assert(ptep != NULL); - *ptep = pa | PTE_P | perm; - } -} -c010335d: 90 nop -c010335e: c9 leave -c010335f: c3 ret - -c0103360 : - -//boot_alloc_page - allocate one page using pmm->alloc_pages(1) -// return value: the kernel virtual address of this allocated page -//note: this function is used to get the memory for PDT(Page Directory Table)&PT(Page Table) -static void * -boot_alloc_page(void) { -c0103360: 55 push %ebp -c0103361: 89 e5 mov %esp,%ebp -c0103363: 83 ec 18 sub $0x18,%esp - struct Page *p = alloc_page(); -c0103366: 83 ec 0c sub $0xc,%esp -c0103369: 6a 01 push $0x1 -c010336b: e8 ff f9 ff ff call c0102d6f -c0103370: 83 c4 10 add $0x10,%esp -c0103373: 89 45 f4 mov %eax,-0xc(%ebp) - if (p == NULL) { -c0103376: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c010337a: 75 17 jne c0103393 - panic("boot_alloc_page failed.\n"); -c010337c: 83 ec 04 sub $0x4,%esp -c010337f: 68 47 72 10 c0 push $0xc0107247 -c0103384: 68 26 01 00 00 push $0x126 -c0103389: 68 64 71 10 c0 push $0xc0107164 -c010338e: e8 3a d0 ff ff call c01003cd <__panic> - } - return page2kva(p); -c0103393: 83 ec 0c sub $0xc,%esp -c0103396: ff 75 f4 pushl -0xc(%ebp) -c0103399: e8 28 f7 ff ff call c0102ac6 -c010339e: 83 c4 10 add $0x10,%esp -} -c01033a1: c9 leave -c01033a2: c3 ret - -c01033a3 : - -//pmm_init - setup a pmm to manage physical memory, build PDT&PT to setup paging mechanism -// - check the correctness of pmm & paging mechanism, print PDT&PT -void -pmm_init(void) { -c01033a3: 55 push %ebp -c01033a4: 89 e5 mov %esp,%ebp -c01033a6: 83 ec 18 sub $0x18,%esp - //We need to alloc/free the physical memory (granularity is 4KB or other size). - //So a framework of physical memory manager (struct pmm_manager)is defined in pmm.h - //First we should init a physical memory manager(pmm) based on the framework. - //Then pmm can alloc/free the physical memory. - //Now the first_fit/best_fit/worst_fit/buddy_system pmm are available. - init_pmm_manager(); -c01033a9: e8 6d f9 ff ff call c0102d1b - - // detect physical memory space, reserve already used memory, - // then use pmm->init_memmap to create free page list - page_init(); -c01033ae: e8 5d fa ff ff call c0102e10 - - //use pmm->check to verify the correctness of the alloc/free function in a pmm - check_alloc_page(); -c01033b3: e8 2d 04 00 00 call c01037e5 - - // create boot_pgdir, an initial page directory(Page Directory Table, PDT) - boot_pgdir = boot_alloc_page(); -c01033b8: e8 a3 ff ff ff call c0103360 -c01033bd: a3 c4 a8 11 c0 mov %eax,0xc011a8c4 - memset(boot_pgdir, 0, PGSIZE); -c01033c2: a1 c4 a8 11 c0 mov 0xc011a8c4,%eax -c01033c7: 83 ec 04 sub $0x4,%esp -c01033ca: 68 00 10 00 00 push $0x1000 -c01033cf: 6a 00 push $0x0 -c01033d1: 50 push %eax -c01033d2: e8 90 2d 00 00 call c0106167 -c01033d7: 83 c4 10 add $0x10,%esp - boot_cr3 = PADDR(boot_pgdir); -c01033da: a1 c4 a8 11 c0 mov 0xc011a8c4,%eax -c01033df: 89 45 f4 mov %eax,-0xc(%ebp) -c01033e2: 81 7d f4 ff ff ff bf cmpl $0xbfffffff,-0xc(%ebp) -c01033e9: 77 17 ja c0103402 -c01033eb: ff 75 f4 pushl -0xc(%ebp) -c01033ee: 68 40 71 10 c0 push $0xc0107140 -c01033f3: 68 40 01 00 00 push $0x140 -c01033f8: 68 64 71 10 c0 push $0xc0107164 -c01033fd: e8 cb cf ff ff call c01003cd <__panic> -c0103402: 8b 45 f4 mov -0xc(%ebp),%eax -c0103405: 05 00 00 00 40 add $0x40000000,%eax -c010340a: a3 60 a9 11 c0 mov %eax,0xc011a960 - - check_pgdir(); -c010340f: e8 f4 03 00 00 call c0103808 - - static_assert(KERNBASE % PTSIZE == 0 && KERNTOP % PTSIZE == 0); - - // recursively insert boot_pgdir in itself - // to form a virtual page table at virtual address VPT - boot_pgdir[PDX(VPT)] = PADDR(boot_pgdir) | PTE_P | PTE_W; -c0103414: a1 c4 a8 11 c0 mov 0xc011a8c4,%eax -c0103419: 8d 90 ac 0f 00 00 lea 0xfac(%eax),%edx -c010341f: a1 c4 a8 11 c0 mov 0xc011a8c4,%eax -c0103424: 89 45 f0 mov %eax,-0x10(%ebp) -c0103427: 81 7d f0 ff ff ff bf cmpl $0xbfffffff,-0x10(%ebp) -c010342e: 77 17 ja c0103447 -c0103430: ff 75 f0 pushl -0x10(%ebp) -c0103433: 68 40 71 10 c0 push $0xc0107140 -c0103438: 68 48 01 00 00 push $0x148 -c010343d: 68 64 71 10 c0 push $0xc0107164 -c0103442: e8 86 cf ff ff call c01003cd <__panic> -c0103447: 8b 45 f0 mov -0x10(%ebp),%eax -c010344a: 05 00 00 00 40 add $0x40000000,%eax -c010344f: 83 c8 03 or $0x3,%eax -c0103452: 89 02 mov %eax,(%edx) - - // map all physical memory to linear memory with base linear addr KERNBASE - //linear_addr KERNBASE~KERNBASE+KMEMSIZE = phy_addr 0~KMEMSIZE - //But shouldn't use this map until enable_paging() & gdt_init() finished. - boot_map_segment(boot_pgdir, KERNBASE, KMEMSIZE, 0, PTE_W); -c0103454: a1 c4 a8 11 c0 mov 0xc011a8c4,%eax -c0103459: 83 ec 0c sub $0xc,%esp -c010345c: 6a 02 push $0x2 -c010345e: 6a 00 push $0x0 -c0103460: 68 00 00 00 38 push $0x38000000 -c0103465: 68 00 00 00 c0 push $0xc0000000 -c010346a: 50 push %eax -c010346b: e8 07 fe ff ff call c0103277 -c0103470: 83 c4 20 add $0x20,%esp - - //temporary map: - //virtual_addr 3G~3G+4M = linear_addr 0~4M = linear_addr 3G~3G+4M = phy_addr 0~4M - boot_pgdir[0] = boot_pgdir[PDX(KERNBASE)]; -c0103473: a1 c4 a8 11 c0 mov 0xc011a8c4,%eax -c0103478: 8b 15 c4 a8 11 c0 mov 0xc011a8c4,%edx -c010347e: 8b 92 00 0c 00 00 mov 0xc00(%edx),%edx -c0103484: 89 10 mov %edx,(%eax) - - enable_paging(); -c0103486: e8 b2 fd ff ff call c010323d - - //reload gdt(third time,the last time) to map all physical memory - //virtual_addr 0~4G=liear_addr 0~4G - //then set kernel stack(ss:esp) in TSS, setup TSS in gdt, load TSS - gdt_init(); -c010348b: e8 99 f7 ff ff call c0102c29 - - //disable the map of virtual_addr 0~4M - boot_pgdir[0] = 0; -c0103490: a1 c4 a8 11 c0 mov 0xc011a8c4,%eax -c0103495: c7 00 00 00 00 00 movl $0x0,(%eax) - - //now the basic virtual memory map(see memalyout.h) is established. - //check the correctness of the basic virtual memory map. - check_boot_pgdir(); -c010349b: e8 ce 08 00 00 call c0103d6e - - print_pgdir(); -c01034a0: e8 c4 0c 00 00 call c0104169 - -} -c01034a5: 90 nop -c01034a6: c9 leave -c01034a7: c3 ret - -c01034a8 : -// pgdir: the kernel virtual base address of PDT -// la: the linear address need to map -// create: a logical value to decide if alloc a page for PT -// return vaule: the kernel virtual address of this pte -pte_t * -get_pte(pde_t *pgdir, uintptr_t la, bool create) { -c01034a8: 55 push %ebp -c01034a9: 89 e5 mov %esp,%ebp -c01034ab: 83 ec 28 sub $0x28,%esp - * DEFINEs: - * PTE_P 0x001 // page table/directory entry flags bit : Present - * PTE_W 0x002 // page table/directory entry flags bit : Writeable - * PTE_U 0x004 // page table/directory entry flags bit : User can access - */ - pde_t *pdep = pgdir + PDX(la); // (1) find page directory entry -c01034ae: 8b 45 0c mov 0xc(%ebp),%eax -c01034b1: c1 e8 16 shr $0x16,%eax -c01034b4: 8d 14 85 00 00 00 00 lea 0x0(,%eax,4),%edx -c01034bb: 8b 45 08 mov 0x8(%ebp),%eax -c01034be: 01 d0 add %edx,%eax -c01034c0: 89 45 f4 mov %eax,-0xc(%ebp) - if (((*pdep) & PTE_P) != 1) { // (2) check if entry is not present -c01034c3: 8b 45 f4 mov -0xc(%ebp),%eax -c01034c6: 8b 00 mov (%eax),%eax -c01034c8: 83 e0 01 and $0x1,%eax -c01034cb: 85 c0 test %eax,%eax -c01034cd: 0f 85 bd 00 00 00 jne c0103590 - if (!create) return NULL; // (3) check if creating is needed, then alloc page for page table -c01034d3: 83 7d 10 00 cmpl $0x0,0x10(%ebp) -c01034d7: 75 0a jne c01034e3 -c01034d9: b8 00 00 00 00 mov $0x0,%eax -c01034de: e9 fe 00 00 00 jmp c01035e1 - struct Page* ptPage; - assert(ptPage = alloc_page()); -c01034e3: 83 ec 0c sub $0xc,%esp -c01034e6: 6a 01 push $0x1 -c01034e8: e8 82 f8 ff ff call c0102d6f -c01034ed: 83 c4 10 add $0x10,%esp -c01034f0: 89 45 f0 mov %eax,-0x10(%ebp) -c01034f3: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) -c01034f7: 75 19 jne c0103512 -c01034f9: 68 60 72 10 c0 push $0xc0107260 -c01034fe: 68 25 72 10 c0 push $0xc0107225 -c0103503: 68 87 01 00 00 push $0x187 -c0103508: 68 64 71 10 c0 push $0xc0107164 -c010350d: e8 bb ce ff ff call c01003cd <__panic> - set_page_ref(ptPage, 1); // (4) set page reference -c0103512: 83 ec 08 sub $0x8,%esp -c0103515: 6a 01 push $0x1 -c0103517: ff 75 f0 pushl -0x10(%ebp) -c010351a: e8 4c f6 ff ff call c0102b6b -c010351f: 83 c4 10 add $0x10,%esp - uintptr_t pa = page2pa(ptPage); // (5) get linear address of page -c0103522: 83 ec 0c sub $0xc,%esp -c0103525: ff 75 f0 pushl -0x10(%ebp) -c0103528: e8 3f f5 ff ff call c0102a6c -c010352d: 83 c4 10 add $0x10,%esp -c0103530: 89 45 ec mov %eax,-0x14(%ebp) - memset(KADDR(pa), 0, PGSIZE); // (6) clear page content using memset -c0103533: 8b 45 ec mov -0x14(%ebp),%eax -c0103536: 89 45 e8 mov %eax,-0x18(%ebp) -c0103539: 8b 45 e8 mov -0x18(%ebp),%eax -c010353c: c1 e8 0c shr $0xc,%eax -c010353f: 89 45 e4 mov %eax,-0x1c(%ebp) -c0103542: a1 c0 a8 11 c0 mov 0xc011a8c0,%eax -c0103547: 39 45 e4 cmp %eax,-0x1c(%ebp) -c010354a: 72 17 jb c0103563 -c010354c: ff 75 e8 pushl -0x18(%ebp) -c010354f: 68 80 70 10 c0 push $0xc0107080 -c0103554: 68 8a 01 00 00 push $0x18a -c0103559: 68 64 71 10 c0 push $0xc0107164 -c010355e: e8 6a ce ff ff call c01003cd <__panic> -c0103563: 8b 45 e8 mov -0x18(%ebp),%eax -c0103566: 2d 00 00 00 40 sub $0x40000000,%eax -c010356b: 83 ec 04 sub $0x4,%esp -c010356e: 68 00 10 00 00 push $0x1000 -c0103573: 6a 00 push $0x0 -c0103575: 50 push %eax -c0103576: e8 ec 2b 00 00 call c0106167 -c010357b: 83 c4 10 add $0x10,%esp - *pdep = ((pa & ~0x0FFF) | PTE_U | PTE_W | PTE_P); // (7) set page directory entry's permission -c010357e: 8b 45 ec mov -0x14(%ebp),%eax -c0103581: 25 00 f0 ff ff and $0xfffff000,%eax -c0103586: 83 c8 07 or $0x7,%eax -c0103589: 89 c2 mov %eax,%edx -c010358b: 8b 45 f4 mov -0xc(%ebp),%eax -c010358e: 89 10 mov %edx,(%eax) - } - return ((pte_t*)KADDR((*pdep) & ~0xFFF)) + PTX(la); // (8) return page table entry -c0103590: 8b 45 f4 mov -0xc(%ebp),%eax -c0103593: 8b 00 mov (%eax),%eax -c0103595: 25 00 f0 ff ff and $0xfffff000,%eax -c010359a: 89 45 e0 mov %eax,-0x20(%ebp) -c010359d: 8b 45 e0 mov -0x20(%ebp),%eax -c01035a0: c1 e8 0c shr $0xc,%eax -c01035a3: 89 45 dc mov %eax,-0x24(%ebp) -c01035a6: a1 c0 a8 11 c0 mov 0xc011a8c0,%eax -c01035ab: 39 45 dc cmp %eax,-0x24(%ebp) -c01035ae: 72 17 jb c01035c7 -c01035b0: ff 75 e0 pushl -0x20(%ebp) -c01035b3: 68 80 70 10 c0 push $0xc0107080 -c01035b8: 68 8d 01 00 00 push $0x18d -c01035bd: 68 64 71 10 c0 push $0xc0107164 -c01035c2: e8 06 ce ff ff call c01003cd <__panic> -c01035c7: 8b 45 e0 mov -0x20(%ebp),%eax -c01035ca: 2d 00 00 00 40 sub $0x40000000,%eax -c01035cf: 89 c2 mov %eax,%edx -c01035d1: 8b 45 0c mov 0xc(%ebp),%eax -c01035d4: c1 e8 0c shr $0xc,%eax -c01035d7: 25 ff 03 00 00 and $0x3ff,%eax -c01035dc: c1 e0 02 shl $0x2,%eax -c01035df: 01 d0 add %edx,%eax -} -c01035e1: c9 leave -c01035e2: c3 ret - -c01035e3 : - -//get_page - get related Page struct for linear address la using PDT pgdir -struct Page * -get_page(pde_t *pgdir, uintptr_t la, pte_t **ptep_store) { -c01035e3: 55 push %ebp -c01035e4: 89 e5 mov %esp,%ebp -c01035e6: 83 ec 18 sub $0x18,%esp - pte_t *ptep = get_pte(pgdir, la, 0); -c01035e9: 83 ec 04 sub $0x4,%esp -c01035ec: 6a 00 push $0x0 -c01035ee: ff 75 0c pushl 0xc(%ebp) -c01035f1: ff 75 08 pushl 0x8(%ebp) -c01035f4: e8 af fe ff ff call c01034a8 -c01035f9: 83 c4 10 add $0x10,%esp -c01035fc: 89 45 f4 mov %eax,-0xc(%ebp) - if (ptep_store != NULL) { -c01035ff: 83 7d 10 00 cmpl $0x0,0x10(%ebp) -c0103603: 74 08 je c010360d - *ptep_store = ptep; -c0103605: 8b 45 10 mov 0x10(%ebp),%eax -c0103608: 8b 55 f4 mov -0xc(%ebp),%edx -c010360b: 89 10 mov %edx,(%eax) - } - if (ptep != NULL && *ptep & PTE_P) { -c010360d: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c0103611: 74 1f je c0103632 -c0103613: 8b 45 f4 mov -0xc(%ebp),%eax -c0103616: 8b 00 mov (%eax),%eax -c0103618: 83 e0 01 and $0x1,%eax -c010361b: 85 c0 test %eax,%eax -c010361d: 74 13 je c0103632 - return pte2page(*ptep); -c010361f: 8b 45 f4 mov -0xc(%ebp),%eax -c0103622: 8b 00 mov (%eax),%eax -c0103624: 83 ec 0c sub $0xc,%esp -c0103627: 50 push %eax -c0103628: e8 de f4 ff ff call c0102b0b -c010362d: 83 c4 10 add $0x10,%esp -c0103630: eb 05 jmp c0103637 - } - return NULL; -c0103632: b8 00 00 00 00 mov $0x0,%eax -} -c0103637: c9 leave -c0103638: c3 ret - -c0103639 : - -//page_remove_pte - free an Page sturct which is related linear address la -// - and clean(invalidate) pte which is related linear address la -//note: PT is changed, so the TLB need to be invalidate -static inline void -page_remove_pte(pde_t *pgdir, uintptr_t la, pte_t *ptep) { -c0103639: 55 push %ebp -c010363a: 89 e5 mov %esp,%ebp -c010363c: 83 ec 18 sub $0x18,%esp - * tlb_invalidate(pde_t *pgdir, uintptr_t la) : Invalidate a TLB entry, but only if the page tables being - * edited are the ones currently in use by the processor. - * DEFINEs: - * PTE_P 0x001 // page table/directory entry flags bit : Present - */ - if (((*ptep) & PTE_P) == 1) { //(1) check if this page table entry is present -c010363f: 8b 45 10 mov 0x10(%ebp),%eax -c0103642: 8b 00 mov (%eax),%eax -c0103644: 83 e0 01 and $0x1,%eax -c0103647: 85 c0 test %eax,%eax -c0103649: 74 55 je c01036a0 - struct Page *page = pte2page(*ptep); //(2) find corresponding page to pte -c010364b: 8b 45 10 mov 0x10(%ebp),%eax -c010364e: 8b 00 mov (%eax),%eax -c0103650: 83 ec 0c sub $0xc,%esp -c0103653: 50 push %eax -c0103654: e8 b2 f4 ff ff call c0102b0b -c0103659: 83 c4 10 add $0x10,%esp -c010365c: 89 45 f4 mov %eax,-0xc(%ebp) - page_ref_dec(page); //(3) decrease page reference -c010365f: 83 ec 0c sub $0xc,%esp -c0103662: ff 75 f4 pushl -0xc(%ebp) -c0103665: e8 26 f5 ff ff call c0102b90 -c010366a: 83 c4 10 add $0x10,%esp - if (page->ref == 0) { -c010366d: 8b 45 f4 mov -0xc(%ebp),%eax -c0103670: 8b 00 mov (%eax),%eax -c0103672: 85 c0 test %eax,%eax -c0103674: 75 10 jne c0103686 - free_page(page); //(4) and free this page when page reference reachs 0 -c0103676: 83 ec 08 sub $0x8,%esp -c0103679: 6a 01 push $0x1 -c010367b: ff 75 f4 pushl -0xc(%ebp) -c010367e: e8 2a f7 ff ff call c0102dad -c0103683: 83 c4 10 add $0x10,%esp - } - (*ptep) = 0; //(5) clear second page table entry -c0103686: 8b 45 10 mov 0x10(%ebp),%eax -c0103689: c7 00 00 00 00 00 movl $0x0,(%eax) - tlb_invalidate(pgdir, la); //(6) flush tlb -c010368f: 83 ec 08 sub $0x8,%esp -c0103692: ff 75 0c pushl 0xc(%ebp) -c0103695: ff 75 08 pushl 0x8(%ebp) -c0103698: e8 f8 00 00 00 call c0103795 -c010369d: 83 c4 10 add $0x10,%esp - } - // Should I check whether all entries in PT is not present and recycle the PT? - // Then Maybe I should set the pde to be not present. -} -c01036a0: 90 nop -c01036a1: c9 leave -c01036a2: c3 ret - -c01036a3 : - -//page_remove - free an Page which is related linear address la and has an validated pte -void -page_remove(pde_t *pgdir, uintptr_t la) { -c01036a3: 55 push %ebp -c01036a4: 89 e5 mov %esp,%ebp -c01036a6: 83 ec 18 sub $0x18,%esp - pte_t *ptep = get_pte(pgdir, la, 0); -c01036a9: 83 ec 04 sub $0x4,%esp -c01036ac: 6a 00 push $0x0 -c01036ae: ff 75 0c pushl 0xc(%ebp) -c01036b1: ff 75 08 pushl 0x8(%ebp) -c01036b4: e8 ef fd ff ff call c01034a8 -c01036b9: 83 c4 10 add $0x10,%esp -c01036bc: 89 45 f4 mov %eax,-0xc(%ebp) - if (ptep != NULL) { -c01036bf: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c01036c3: 74 14 je c01036d9 - page_remove_pte(pgdir, la, ptep); -c01036c5: 83 ec 04 sub $0x4,%esp -c01036c8: ff 75 f4 pushl -0xc(%ebp) -c01036cb: ff 75 0c pushl 0xc(%ebp) -c01036ce: ff 75 08 pushl 0x8(%ebp) -c01036d1: e8 63 ff ff ff call c0103639 -c01036d6: 83 c4 10 add $0x10,%esp - } -} -c01036d9: 90 nop -c01036da: c9 leave -c01036db: c3 ret - -c01036dc : -// la: the linear address need to map -// perm: the permission of this Page which is setted in related pte -// return value: always 0 -//note: PT is changed, so the TLB need to be invalidate -int -page_insert(pde_t *pgdir, struct Page *page, uintptr_t la, uint32_t perm) { -c01036dc: 55 push %ebp -c01036dd: 89 e5 mov %esp,%ebp -c01036df: 83 ec 18 sub $0x18,%esp - pte_t *ptep = get_pte(pgdir, la, 1); -c01036e2: 83 ec 04 sub $0x4,%esp -c01036e5: 6a 01 push $0x1 -c01036e7: ff 75 10 pushl 0x10(%ebp) -c01036ea: ff 75 08 pushl 0x8(%ebp) -c01036ed: e8 b6 fd ff ff call c01034a8 -c01036f2: 83 c4 10 add $0x10,%esp -c01036f5: 89 45 f4 mov %eax,-0xc(%ebp) - if (ptep == NULL) { -c01036f8: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c01036fc: 75 0a jne c0103708 - return -E_NO_MEM; -c01036fe: b8 fc ff ff ff mov $0xfffffffc,%eax -c0103703: e9 8b 00 00 00 jmp c0103793 - } - page_ref_inc(page); -c0103708: 83 ec 0c sub $0xc,%esp -c010370b: ff 75 0c pushl 0xc(%ebp) -c010370e: e8 66 f4 ff ff call c0102b79 -c0103713: 83 c4 10 add $0x10,%esp - if (*ptep & PTE_P) { -c0103716: 8b 45 f4 mov -0xc(%ebp),%eax -c0103719: 8b 00 mov (%eax),%eax -c010371b: 83 e0 01 and $0x1,%eax -c010371e: 85 c0 test %eax,%eax -c0103720: 74 40 je c0103762 - struct Page *p = pte2page(*ptep); -c0103722: 8b 45 f4 mov -0xc(%ebp),%eax -c0103725: 8b 00 mov (%eax),%eax -c0103727: 83 ec 0c sub $0xc,%esp -c010372a: 50 push %eax -c010372b: e8 db f3 ff ff call c0102b0b -c0103730: 83 c4 10 add $0x10,%esp -c0103733: 89 45 f0 mov %eax,-0x10(%ebp) - if (p == page) { -c0103736: 8b 45 f0 mov -0x10(%ebp),%eax -c0103739: 3b 45 0c cmp 0xc(%ebp),%eax -c010373c: 75 10 jne c010374e - page_ref_dec(page); -c010373e: 83 ec 0c sub $0xc,%esp -c0103741: ff 75 0c pushl 0xc(%ebp) -c0103744: e8 47 f4 ff ff call c0102b90 -c0103749: 83 c4 10 add $0x10,%esp -c010374c: eb 14 jmp c0103762 - } - else { - page_remove_pte(pgdir, la, ptep); -c010374e: 83 ec 04 sub $0x4,%esp -c0103751: ff 75 f4 pushl -0xc(%ebp) -c0103754: ff 75 10 pushl 0x10(%ebp) -c0103757: ff 75 08 pushl 0x8(%ebp) -c010375a: e8 da fe ff ff call c0103639 -c010375f: 83 c4 10 add $0x10,%esp - } - } - *ptep = page2pa(page) | PTE_P | perm; -c0103762: 83 ec 0c sub $0xc,%esp -c0103765: ff 75 0c pushl 0xc(%ebp) -c0103768: e8 ff f2 ff ff call c0102a6c -c010376d: 83 c4 10 add $0x10,%esp -c0103770: 0b 45 14 or 0x14(%ebp),%eax -c0103773: 83 c8 01 or $0x1,%eax -c0103776: 89 c2 mov %eax,%edx -c0103778: 8b 45 f4 mov -0xc(%ebp),%eax -c010377b: 89 10 mov %edx,(%eax) - tlb_invalidate(pgdir, la); -c010377d: 83 ec 08 sub $0x8,%esp -c0103780: ff 75 10 pushl 0x10(%ebp) -c0103783: ff 75 08 pushl 0x8(%ebp) -c0103786: e8 0a 00 00 00 call c0103795 -c010378b: 83 c4 10 add $0x10,%esp - return 0; -c010378e: b8 00 00 00 00 mov $0x0,%eax -} -c0103793: c9 leave -c0103794: c3 ret - -c0103795 : - -// invalidate a TLB entry, but only if the page tables being -// edited are the ones currently in use by the processor. -void -tlb_invalidate(pde_t *pgdir, uintptr_t la) { -c0103795: 55 push %ebp -c0103796: 89 e5 mov %esp,%ebp -c0103798: 83 ec 18 sub $0x18,%esp -} - -static inline uintptr_t -rcr3(void) { - uintptr_t cr3; - asm volatile ("mov %%cr3, %0" : "=r" (cr3) :: "memory"); -c010379b: 0f 20 d8 mov %cr3,%eax -c010379e: 89 45 ec mov %eax,-0x14(%ebp) - return cr3; -c01037a1: 8b 55 ec mov -0x14(%ebp),%edx - if (rcr3() == PADDR(pgdir)) { -c01037a4: 8b 45 08 mov 0x8(%ebp),%eax -c01037a7: 89 45 f0 mov %eax,-0x10(%ebp) -c01037aa: 81 7d f0 ff ff ff bf cmpl $0xbfffffff,-0x10(%ebp) -c01037b1: 77 17 ja c01037ca -c01037b3: ff 75 f0 pushl -0x10(%ebp) -c01037b6: 68 40 71 10 c0 push $0xc0107140 -c01037bb: 68 e9 01 00 00 push $0x1e9 -c01037c0: 68 64 71 10 c0 push $0xc0107164 -c01037c5: e8 03 cc ff ff call c01003cd <__panic> -c01037ca: 8b 45 f0 mov -0x10(%ebp),%eax -c01037cd: 05 00 00 00 40 add $0x40000000,%eax -c01037d2: 39 c2 cmp %eax,%edx -c01037d4: 75 0c jne c01037e2 - invlpg((void *)la); -c01037d6: 8b 45 0c mov 0xc(%ebp),%eax -c01037d9: 89 45 f4 mov %eax,-0xc(%ebp) -} - -static inline void -invlpg(void *addr) { - asm volatile ("invlpg (%0)" :: "r" (addr) : "memory"); -c01037dc: 8b 45 f4 mov -0xc(%ebp),%eax -c01037df: 0f 01 38 invlpg (%eax) - } -} -c01037e2: 90 nop -c01037e3: c9 leave -c01037e4: c3 ret - -c01037e5 : - -static void -check_alloc_page(void) { -c01037e5: 55 push %ebp -c01037e6: 89 e5 mov %esp,%ebp -c01037e8: 83 ec 08 sub $0x8,%esp - pmm_manager->check(); -c01037eb: a1 5c a9 11 c0 mov 0xc011a95c,%eax -c01037f0: 8b 40 18 mov 0x18(%eax),%eax -c01037f3: ff d0 call *%eax - cprintf("check_alloc_page() succeeded!\n"); -c01037f5: 83 ec 0c sub $0xc,%esp -c01037f8: 68 78 72 10 c0 push $0xc0107278 -c01037fd: e8 65 ca ff ff call c0100267 -c0103802: 83 c4 10 add $0x10,%esp -} -c0103805: 90 nop -c0103806: c9 leave -c0103807: c3 ret - -c0103808 : - -static void -check_pgdir(void) { -c0103808: 55 push %ebp -c0103809: 89 e5 mov %esp,%ebp -c010380b: 83 ec 28 sub $0x28,%esp - assert(npage <= KMEMSIZE / PGSIZE); -c010380e: a1 c0 a8 11 c0 mov 0xc011a8c0,%eax -c0103813: 3d 00 80 03 00 cmp $0x38000,%eax -c0103818: 76 19 jbe c0103833 -c010381a: 68 97 72 10 c0 push $0xc0107297 -c010381f: 68 25 72 10 c0 push $0xc0107225 -c0103824: 68 f6 01 00 00 push $0x1f6 -c0103829: 68 64 71 10 c0 push $0xc0107164 -c010382e: e8 9a cb ff ff call c01003cd <__panic> - assert(boot_pgdir != NULL && (uint32_t)PGOFF(boot_pgdir) == 0); -c0103833: a1 c4 a8 11 c0 mov 0xc011a8c4,%eax -c0103838: 85 c0 test %eax,%eax -c010383a: 74 0e je c010384a -c010383c: a1 c4 a8 11 c0 mov 0xc011a8c4,%eax -c0103841: 25 ff 0f 00 00 and $0xfff,%eax -c0103846: 85 c0 test %eax,%eax -c0103848: 74 19 je c0103863 -c010384a: 68 b4 72 10 c0 push $0xc01072b4 -c010384f: 68 25 72 10 c0 push $0xc0107225 -c0103854: 68 f7 01 00 00 push $0x1f7 -c0103859: 68 64 71 10 c0 push $0xc0107164 -c010385e: e8 6a cb ff ff call c01003cd <__panic> - assert(get_page(boot_pgdir, 0x0, NULL) == NULL); -c0103863: a1 c4 a8 11 c0 mov 0xc011a8c4,%eax -c0103868: 83 ec 04 sub $0x4,%esp -c010386b: 6a 00 push $0x0 -c010386d: 6a 00 push $0x0 -c010386f: 50 push %eax -c0103870: e8 6e fd ff ff call c01035e3 -c0103875: 83 c4 10 add $0x10,%esp -c0103878: 85 c0 test %eax,%eax -c010387a: 74 19 je c0103895 -c010387c: 68 ec 72 10 c0 push $0xc01072ec -c0103881: 68 25 72 10 c0 push $0xc0107225 -c0103886: 68 f8 01 00 00 push $0x1f8 -c010388b: 68 64 71 10 c0 push $0xc0107164 -c0103890: e8 38 cb ff ff call c01003cd <__panic> - - struct Page *p1, *p2; - p1 = alloc_page(); -c0103895: 83 ec 0c sub $0xc,%esp -c0103898: 6a 01 push $0x1 -c010389a: e8 d0 f4 ff ff call c0102d6f -c010389f: 83 c4 10 add $0x10,%esp -c01038a2: 89 45 f4 mov %eax,-0xc(%ebp) - assert(page_insert(boot_pgdir, p1, 0x0, 0) == 0); -c01038a5: a1 c4 a8 11 c0 mov 0xc011a8c4,%eax -c01038aa: 6a 00 push $0x0 -c01038ac: 6a 00 push $0x0 -c01038ae: ff 75 f4 pushl -0xc(%ebp) -c01038b1: 50 push %eax -c01038b2: e8 25 fe ff ff call c01036dc -c01038b7: 83 c4 10 add $0x10,%esp -c01038ba: 85 c0 test %eax,%eax -c01038bc: 74 19 je c01038d7 -c01038be: 68 14 73 10 c0 push $0xc0107314 -c01038c3: 68 25 72 10 c0 push $0xc0107225 -c01038c8: 68 fc 01 00 00 push $0x1fc -c01038cd: 68 64 71 10 c0 push $0xc0107164 -c01038d2: e8 f6 ca ff ff call c01003cd <__panic> - - pte_t *ptep; - assert((ptep = get_pte(boot_pgdir, 0x0, 0)) != NULL); -c01038d7: a1 c4 a8 11 c0 mov 0xc011a8c4,%eax -c01038dc: 83 ec 04 sub $0x4,%esp -c01038df: 6a 00 push $0x0 -c01038e1: 6a 00 push $0x0 -c01038e3: 50 push %eax -c01038e4: e8 bf fb ff ff call c01034a8 -c01038e9: 83 c4 10 add $0x10,%esp -c01038ec: 89 45 f0 mov %eax,-0x10(%ebp) -c01038ef: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) -c01038f3: 75 19 jne c010390e -c01038f5: 68 40 73 10 c0 push $0xc0107340 -c01038fa: 68 25 72 10 c0 push $0xc0107225 -c01038ff: 68 ff 01 00 00 push $0x1ff -c0103904: 68 64 71 10 c0 push $0xc0107164 -c0103909: e8 bf ca ff ff call c01003cd <__panic> - assert(pte2page(*ptep) == p1); -c010390e: 8b 45 f0 mov -0x10(%ebp),%eax -c0103911: 8b 00 mov (%eax),%eax -c0103913: 83 ec 0c sub $0xc,%esp -c0103916: 50 push %eax -c0103917: e8 ef f1 ff ff call c0102b0b -c010391c: 83 c4 10 add $0x10,%esp -c010391f: 3b 45 f4 cmp -0xc(%ebp),%eax -c0103922: 74 19 je c010393d -c0103924: 68 6d 73 10 c0 push $0xc010736d -c0103929: 68 25 72 10 c0 push $0xc0107225 -c010392e: 68 00 02 00 00 push $0x200 -c0103933: 68 64 71 10 c0 push $0xc0107164 -c0103938: e8 90 ca ff ff call c01003cd <__panic> - assert(page_ref(p1) == 1); -c010393d: 83 ec 0c sub $0xc,%esp -c0103940: ff 75 f4 pushl -0xc(%ebp) -c0103943: e8 19 f2 ff ff call c0102b61 -c0103948: 83 c4 10 add $0x10,%esp -c010394b: 83 f8 01 cmp $0x1,%eax -c010394e: 74 19 je c0103969 -c0103950: 68 83 73 10 c0 push $0xc0107383 -c0103955: 68 25 72 10 c0 push $0xc0107225 -c010395a: 68 01 02 00 00 push $0x201 -c010395f: 68 64 71 10 c0 push $0xc0107164 -c0103964: e8 64 ca ff ff call c01003cd <__panic> - - ptep = &((pte_t *)KADDR(PDE_ADDR(boot_pgdir[0])))[1]; -c0103969: a1 c4 a8 11 c0 mov 0xc011a8c4,%eax -c010396e: 8b 00 mov (%eax),%eax -c0103970: 25 00 f0 ff ff and $0xfffff000,%eax -c0103975: 89 45 ec mov %eax,-0x14(%ebp) -c0103978: 8b 45 ec mov -0x14(%ebp),%eax -c010397b: c1 e8 0c shr $0xc,%eax -c010397e: 89 45 e8 mov %eax,-0x18(%ebp) -c0103981: a1 c0 a8 11 c0 mov 0xc011a8c0,%eax -c0103986: 39 45 e8 cmp %eax,-0x18(%ebp) -c0103989: 72 17 jb c01039a2 -c010398b: ff 75 ec pushl -0x14(%ebp) -c010398e: 68 80 70 10 c0 push $0xc0107080 -c0103993: 68 03 02 00 00 push $0x203 -c0103998: 68 64 71 10 c0 push $0xc0107164 -c010399d: e8 2b ca ff ff call c01003cd <__panic> -c01039a2: 8b 45 ec mov -0x14(%ebp),%eax -c01039a5: 2d 00 00 00 40 sub $0x40000000,%eax -c01039aa: 83 c0 04 add $0x4,%eax -c01039ad: 89 45 f0 mov %eax,-0x10(%ebp) - assert(get_pte(boot_pgdir, PGSIZE, 0) == ptep); -c01039b0: a1 c4 a8 11 c0 mov 0xc011a8c4,%eax -c01039b5: 83 ec 04 sub $0x4,%esp -c01039b8: 6a 00 push $0x0 -c01039ba: 68 00 10 00 00 push $0x1000 -c01039bf: 50 push %eax -c01039c0: e8 e3 fa ff ff call c01034a8 -c01039c5: 83 c4 10 add $0x10,%esp -c01039c8: 3b 45 f0 cmp -0x10(%ebp),%eax -c01039cb: 74 19 je c01039e6 -c01039cd: 68 98 73 10 c0 push $0xc0107398 -c01039d2: 68 25 72 10 c0 push $0xc0107225 -c01039d7: 68 04 02 00 00 push $0x204 -c01039dc: 68 64 71 10 c0 push $0xc0107164 -c01039e1: e8 e7 c9 ff ff call c01003cd <__panic> - - p2 = alloc_page(); -c01039e6: 83 ec 0c sub $0xc,%esp -c01039e9: 6a 01 push $0x1 -c01039eb: e8 7f f3 ff ff call c0102d6f -c01039f0: 83 c4 10 add $0x10,%esp -c01039f3: 89 45 e4 mov %eax,-0x1c(%ebp) - assert(page_insert(boot_pgdir, p2, PGSIZE, PTE_U | PTE_W) == 0); -c01039f6: a1 c4 a8 11 c0 mov 0xc011a8c4,%eax -c01039fb: 6a 06 push $0x6 -c01039fd: 68 00 10 00 00 push $0x1000 -c0103a02: ff 75 e4 pushl -0x1c(%ebp) -c0103a05: 50 push %eax -c0103a06: e8 d1 fc ff ff call c01036dc -c0103a0b: 83 c4 10 add $0x10,%esp -c0103a0e: 85 c0 test %eax,%eax -c0103a10: 74 19 je c0103a2b -c0103a12: 68 c0 73 10 c0 push $0xc01073c0 -c0103a17: 68 25 72 10 c0 push $0xc0107225 -c0103a1c: 68 07 02 00 00 push $0x207 -c0103a21: 68 64 71 10 c0 push $0xc0107164 -c0103a26: e8 a2 c9 ff ff call c01003cd <__panic> - assert((ptep = get_pte(boot_pgdir, PGSIZE, 0)) != NULL); -c0103a2b: a1 c4 a8 11 c0 mov 0xc011a8c4,%eax -c0103a30: 83 ec 04 sub $0x4,%esp -c0103a33: 6a 00 push $0x0 -c0103a35: 68 00 10 00 00 push $0x1000 -c0103a3a: 50 push %eax -c0103a3b: e8 68 fa ff ff call c01034a8 -c0103a40: 83 c4 10 add $0x10,%esp -c0103a43: 89 45 f0 mov %eax,-0x10(%ebp) -c0103a46: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) -c0103a4a: 75 19 jne c0103a65 -c0103a4c: 68 f8 73 10 c0 push $0xc01073f8 -c0103a51: 68 25 72 10 c0 push $0xc0107225 -c0103a56: 68 08 02 00 00 push $0x208 -c0103a5b: 68 64 71 10 c0 push $0xc0107164 -c0103a60: e8 68 c9 ff ff call c01003cd <__panic> - assert(*ptep & PTE_U); -c0103a65: 8b 45 f0 mov -0x10(%ebp),%eax -c0103a68: 8b 00 mov (%eax),%eax -c0103a6a: 83 e0 04 and $0x4,%eax -c0103a6d: 85 c0 test %eax,%eax -c0103a6f: 75 19 jne c0103a8a -c0103a71: 68 28 74 10 c0 push $0xc0107428 -c0103a76: 68 25 72 10 c0 push $0xc0107225 -c0103a7b: 68 09 02 00 00 push $0x209 -c0103a80: 68 64 71 10 c0 push $0xc0107164 -c0103a85: e8 43 c9 ff ff call c01003cd <__panic> - assert(*ptep & PTE_W); -c0103a8a: 8b 45 f0 mov -0x10(%ebp),%eax -c0103a8d: 8b 00 mov (%eax),%eax -c0103a8f: 83 e0 02 and $0x2,%eax -c0103a92: 85 c0 test %eax,%eax -c0103a94: 75 19 jne c0103aaf -c0103a96: 68 36 74 10 c0 push $0xc0107436 -c0103a9b: 68 25 72 10 c0 push $0xc0107225 -c0103aa0: 68 0a 02 00 00 push $0x20a -c0103aa5: 68 64 71 10 c0 push $0xc0107164 -c0103aaa: e8 1e c9 ff ff call c01003cd <__panic> - assert(boot_pgdir[0] & PTE_U); -c0103aaf: a1 c4 a8 11 c0 mov 0xc011a8c4,%eax -c0103ab4: 8b 00 mov (%eax),%eax -c0103ab6: 83 e0 04 and $0x4,%eax -c0103ab9: 85 c0 test %eax,%eax -c0103abb: 75 19 jne c0103ad6 -c0103abd: 68 44 74 10 c0 push $0xc0107444 -c0103ac2: 68 25 72 10 c0 push $0xc0107225 -c0103ac7: 68 0b 02 00 00 push $0x20b -c0103acc: 68 64 71 10 c0 push $0xc0107164 -c0103ad1: e8 f7 c8 ff ff call c01003cd <__panic> - assert(page_ref(p2) == 1); -c0103ad6: 83 ec 0c sub $0xc,%esp -c0103ad9: ff 75 e4 pushl -0x1c(%ebp) -c0103adc: e8 80 f0 ff ff call c0102b61 -c0103ae1: 83 c4 10 add $0x10,%esp -c0103ae4: 83 f8 01 cmp $0x1,%eax -c0103ae7: 74 19 je c0103b02 -c0103ae9: 68 5a 74 10 c0 push $0xc010745a -c0103aee: 68 25 72 10 c0 push $0xc0107225 -c0103af3: 68 0c 02 00 00 push $0x20c -c0103af8: 68 64 71 10 c0 push $0xc0107164 -c0103afd: e8 cb c8 ff ff call c01003cd <__panic> - - assert(page_insert(boot_pgdir, p1, PGSIZE, 0) == 0); -c0103b02: a1 c4 a8 11 c0 mov 0xc011a8c4,%eax -c0103b07: 6a 00 push $0x0 -c0103b09: 68 00 10 00 00 push $0x1000 -c0103b0e: ff 75 f4 pushl -0xc(%ebp) -c0103b11: 50 push %eax -c0103b12: e8 c5 fb ff ff call c01036dc -c0103b17: 83 c4 10 add $0x10,%esp -c0103b1a: 85 c0 test %eax,%eax -c0103b1c: 74 19 je c0103b37 -c0103b1e: 68 6c 74 10 c0 push $0xc010746c -c0103b23: 68 25 72 10 c0 push $0xc0107225 -c0103b28: 68 0e 02 00 00 push $0x20e -c0103b2d: 68 64 71 10 c0 push $0xc0107164 -c0103b32: e8 96 c8 ff ff call c01003cd <__panic> - assert(page_ref(p1) == 2); -c0103b37: 83 ec 0c sub $0xc,%esp -c0103b3a: ff 75 f4 pushl -0xc(%ebp) -c0103b3d: e8 1f f0 ff ff call c0102b61 -c0103b42: 83 c4 10 add $0x10,%esp -c0103b45: 83 f8 02 cmp $0x2,%eax -c0103b48: 74 19 je c0103b63 -c0103b4a: 68 98 74 10 c0 push $0xc0107498 -c0103b4f: 68 25 72 10 c0 push $0xc0107225 -c0103b54: 68 0f 02 00 00 push $0x20f -c0103b59: 68 64 71 10 c0 push $0xc0107164 -c0103b5e: e8 6a c8 ff ff call c01003cd <__panic> - assert(page_ref(p2) == 0); -c0103b63: 83 ec 0c sub $0xc,%esp -c0103b66: ff 75 e4 pushl -0x1c(%ebp) -c0103b69: e8 f3 ef ff ff call c0102b61 -c0103b6e: 83 c4 10 add $0x10,%esp -c0103b71: 85 c0 test %eax,%eax -c0103b73: 74 19 je c0103b8e -c0103b75: 68 aa 74 10 c0 push $0xc01074aa -c0103b7a: 68 25 72 10 c0 push $0xc0107225 -c0103b7f: 68 10 02 00 00 push $0x210 -c0103b84: 68 64 71 10 c0 push $0xc0107164 -c0103b89: e8 3f c8 ff ff call c01003cd <__panic> - assert((ptep = get_pte(boot_pgdir, PGSIZE, 0)) != NULL); -c0103b8e: a1 c4 a8 11 c0 mov 0xc011a8c4,%eax -c0103b93: 83 ec 04 sub $0x4,%esp -c0103b96: 6a 00 push $0x0 -c0103b98: 68 00 10 00 00 push $0x1000 -c0103b9d: 50 push %eax -c0103b9e: e8 05 f9 ff ff call c01034a8 -c0103ba3: 83 c4 10 add $0x10,%esp -c0103ba6: 89 45 f0 mov %eax,-0x10(%ebp) -c0103ba9: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) -c0103bad: 75 19 jne c0103bc8 -c0103baf: 68 f8 73 10 c0 push $0xc01073f8 -c0103bb4: 68 25 72 10 c0 push $0xc0107225 -c0103bb9: 68 11 02 00 00 push $0x211 -c0103bbe: 68 64 71 10 c0 push $0xc0107164 -c0103bc3: e8 05 c8 ff ff call c01003cd <__panic> - assert(pte2page(*ptep) == p1); -c0103bc8: 8b 45 f0 mov -0x10(%ebp),%eax -c0103bcb: 8b 00 mov (%eax),%eax -c0103bcd: 83 ec 0c sub $0xc,%esp -c0103bd0: 50 push %eax -c0103bd1: e8 35 ef ff ff call c0102b0b -c0103bd6: 83 c4 10 add $0x10,%esp -c0103bd9: 3b 45 f4 cmp -0xc(%ebp),%eax -c0103bdc: 74 19 je c0103bf7 -c0103bde: 68 6d 73 10 c0 push $0xc010736d -c0103be3: 68 25 72 10 c0 push $0xc0107225 -c0103be8: 68 12 02 00 00 push $0x212 -c0103bed: 68 64 71 10 c0 push $0xc0107164 -c0103bf2: e8 d6 c7 ff ff call c01003cd <__panic> - assert((*ptep & PTE_U) == 0); -c0103bf7: 8b 45 f0 mov -0x10(%ebp),%eax -c0103bfa: 8b 00 mov (%eax),%eax -c0103bfc: 83 e0 04 and $0x4,%eax -c0103bff: 85 c0 test %eax,%eax -c0103c01: 74 19 je c0103c1c -c0103c03: 68 bc 74 10 c0 push $0xc01074bc -c0103c08: 68 25 72 10 c0 push $0xc0107225 -c0103c0d: 68 13 02 00 00 push $0x213 -c0103c12: 68 64 71 10 c0 push $0xc0107164 -c0103c17: e8 b1 c7 ff ff call c01003cd <__panic> - - page_remove(boot_pgdir, 0x0); -c0103c1c: a1 c4 a8 11 c0 mov 0xc011a8c4,%eax -c0103c21: 83 ec 08 sub $0x8,%esp -c0103c24: 6a 00 push $0x0 -c0103c26: 50 push %eax -c0103c27: e8 77 fa ff ff call c01036a3 -c0103c2c: 83 c4 10 add $0x10,%esp - assert(page_ref(p1) == 1); -c0103c2f: 83 ec 0c sub $0xc,%esp -c0103c32: ff 75 f4 pushl -0xc(%ebp) -c0103c35: e8 27 ef ff ff call c0102b61 -c0103c3a: 83 c4 10 add $0x10,%esp -c0103c3d: 83 f8 01 cmp $0x1,%eax -c0103c40: 74 19 je c0103c5b -c0103c42: 68 83 73 10 c0 push $0xc0107383 -c0103c47: 68 25 72 10 c0 push $0xc0107225 -c0103c4c: 68 16 02 00 00 push $0x216 -c0103c51: 68 64 71 10 c0 push $0xc0107164 -c0103c56: e8 72 c7 ff ff call c01003cd <__panic> - assert(page_ref(p2) == 0); -c0103c5b: 83 ec 0c sub $0xc,%esp -c0103c5e: ff 75 e4 pushl -0x1c(%ebp) -c0103c61: e8 fb ee ff ff call c0102b61 -c0103c66: 83 c4 10 add $0x10,%esp -c0103c69: 85 c0 test %eax,%eax -c0103c6b: 74 19 je c0103c86 -c0103c6d: 68 aa 74 10 c0 push $0xc01074aa -c0103c72: 68 25 72 10 c0 push $0xc0107225 -c0103c77: 68 17 02 00 00 push $0x217 -c0103c7c: 68 64 71 10 c0 push $0xc0107164 -c0103c81: e8 47 c7 ff ff call c01003cd <__panic> - - page_remove(boot_pgdir, PGSIZE); -c0103c86: a1 c4 a8 11 c0 mov 0xc011a8c4,%eax -c0103c8b: 83 ec 08 sub $0x8,%esp -c0103c8e: 68 00 10 00 00 push $0x1000 -c0103c93: 50 push %eax -c0103c94: e8 0a fa ff ff call c01036a3 -c0103c99: 83 c4 10 add $0x10,%esp - assert(page_ref(p1) == 0); -c0103c9c: 83 ec 0c sub $0xc,%esp -c0103c9f: ff 75 f4 pushl -0xc(%ebp) -c0103ca2: e8 ba ee ff ff call c0102b61 -c0103ca7: 83 c4 10 add $0x10,%esp -c0103caa: 85 c0 test %eax,%eax -c0103cac: 74 19 je c0103cc7 -c0103cae: 68 d1 74 10 c0 push $0xc01074d1 -c0103cb3: 68 25 72 10 c0 push $0xc0107225 -c0103cb8: 68 1a 02 00 00 push $0x21a -c0103cbd: 68 64 71 10 c0 push $0xc0107164 -c0103cc2: e8 06 c7 ff ff call c01003cd <__panic> - assert(page_ref(p2) == 0); -c0103cc7: 83 ec 0c sub $0xc,%esp -c0103cca: ff 75 e4 pushl -0x1c(%ebp) -c0103ccd: e8 8f ee ff ff call c0102b61 -c0103cd2: 83 c4 10 add $0x10,%esp -c0103cd5: 85 c0 test %eax,%eax -c0103cd7: 74 19 je c0103cf2 -c0103cd9: 68 aa 74 10 c0 push $0xc01074aa -c0103cde: 68 25 72 10 c0 push $0xc0107225 -c0103ce3: 68 1b 02 00 00 push $0x21b -c0103ce8: 68 64 71 10 c0 push $0xc0107164 -c0103ced: e8 db c6 ff ff call c01003cd <__panic> - - assert(page_ref(pde2page(boot_pgdir[0])) == 1); -c0103cf2: a1 c4 a8 11 c0 mov 0xc011a8c4,%eax -c0103cf7: 8b 00 mov (%eax),%eax -c0103cf9: 83 ec 0c sub $0xc,%esp -c0103cfc: 50 push %eax -c0103cfd: e8 43 ee ff ff call c0102b45 -c0103d02: 83 c4 10 add $0x10,%esp -c0103d05: 83 ec 0c sub $0xc,%esp -c0103d08: 50 push %eax -c0103d09: e8 53 ee ff ff call c0102b61 -c0103d0e: 83 c4 10 add $0x10,%esp -c0103d11: 83 f8 01 cmp $0x1,%eax -c0103d14: 74 19 je c0103d2f -c0103d16: 68 e4 74 10 c0 push $0xc01074e4 -c0103d1b: 68 25 72 10 c0 push $0xc0107225 -c0103d20: 68 1d 02 00 00 push $0x21d -c0103d25: 68 64 71 10 c0 push $0xc0107164 -c0103d2a: e8 9e c6 ff ff call c01003cd <__panic> - free_page(pde2page(boot_pgdir[0])); -c0103d2f: a1 c4 a8 11 c0 mov 0xc011a8c4,%eax -c0103d34: 8b 00 mov (%eax),%eax -c0103d36: 83 ec 0c sub $0xc,%esp -c0103d39: 50 push %eax -c0103d3a: e8 06 ee ff ff call c0102b45 -c0103d3f: 83 c4 10 add $0x10,%esp -c0103d42: 83 ec 08 sub $0x8,%esp -c0103d45: 6a 01 push $0x1 -c0103d47: 50 push %eax -c0103d48: e8 60 f0 ff ff call c0102dad -c0103d4d: 83 c4 10 add $0x10,%esp - boot_pgdir[0] = 0; -c0103d50: a1 c4 a8 11 c0 mov 0xc011a8c4,%eax -c0103d55: c7 00 00 00 00 00 movl $0x0,(%eax) - - cprintf("check_pgdir() succeeded!\n"); -c0103d5b: 83 ec 0c sub $0xc,%esp -c0103d5e: 68 0b 75 10 c0 push $0xc010750b -c0103d63: e8 ff c4 ff ff call c0100267 -c0103d68: 83 c4 10 add $0x10,%esp -} -c0103d6b: 90 nop -c0103d6c: c9 leave -c0103d6d: c3 ret - -c0103d6e : - -static void -check_boot_pgdir(void) { -c0103d6e: 55 push %ebp -c0103d6f: 89 e5 mov %esp,%ebp -c0103d71: 83 ec 28 sub $0x28,%esp - pte_t *ptep; - int i; - for (i = 0; i < npage; i += PGSIZE) { -c0103d74: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) -c0103d7b: e9 a3 00 00 00 jmp c0103e23 - assert((ptep = get_pte(boot_pgdir, (uintptr_t)KADDR(i), 0)) != NULL); -c0103d80: 8b 45 f4 mov -0xc(%ebp),%eax -c0103d83: 89 45 f0 mov %eax,-0x10(%ebp) -c0103d86: 8b 45 f0 mov -0x10(%ebp),%eax -c0103d89: c1 e8 0c shr $0xc,%eax -c0103d8c: 89 45 ec mov %eax,-0x14(%ebp) -c0103d8f: a1 c0 a8 11 c0 mov 0xc011a8c0,%eax -c0103d94: 39 45 ec cmp %eax,-0x14(%ebp) -c0103d97: 72 17 jb c0103db0 -c0103d99: ff 75 f0 pushl -0x10(%ebp) -c0103d9c: 68 80 70 10 c0 push $0xc0107080 -c0103da1: 68 29 02 00 00 push $0x229 -c0103da6: 68 64 71 10 c0 push $0xc0107164 -c0103dab: e8 1d c6 ff ff call c01003cd <__panic> -c0103db0: 8b 45 f0 mov -0x10(%ebp),%eax -c0103db3: 2d 00 00 00 40 sub $0x40000000,%eax -c0103db8: 89 c2 mov %eax,%edx -c0103dba: a1 c4 a8 11 c0 mov 0xc011a8c4,%eax -c0103dbf: 83 ec 04 sub $0x4,%esp -c0103dc2: 6a 00 push $0x0 -c0103dc4: 52 push %edx -c0103dc5: 50 push %eax -c0103dc6: e8 dd f6 ff ff call c01034a8 -c0103dcb: 83 c4 10 add $0x10,%esp -c0103dce: 89 45 e8 mov %eax,-0x18(%ebp) -c0103dd1: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) -c0103dd5: 75 19 jne c0103df0 -c0103dd7: 68 28 75 10 c0 push $0xc0107528 -c0103ddc: 68 25 72 10 c0 push $0xc0107225 -c0103de1: 68 29 02 00 00 push $0x229 -c0103de6: 68 64 71 10 c0 push $0xc0107164 -c0103deb: e8 dd c5 ff ff call c01003cd <__panic> - assert(PTE_ADDR(*ptep) == i); -c0103df0: 8b 45 e8 mov -0x18(%ebp),%eax -c0103df3: 8b 00 mov (%eax),%eax -c0103df5: 25 00 f0 ff ff and $0xfffff000,%eax -c0103dfa: 89 c2 mov %eax,%edx -c0103dfc: 8b 45 f4 mov -0xc(%ebp),%eax -c0103dff: 39 c2 cmp %eax,%edx -c0103e01: 74 19 je c0103e1c -c0103e03: 68 65 75 10 c0 push $0xc0107565 -c0103e08: 68 25 72 10 c0 push $0xc0107225 -c0103e0d: 68 2a 02 00 00 push $0x22a -c0103e12: 68 64 71 10 c0 push $0xc0107164 -c0103e17: e8 b1 c5 ff ff call c01003cd <__panic> - -static void -check_boot_pgdir(void) { - pte_t *ptep; - int i; - for (i = 0; i < npage; i += PGSIZE) { -c0103e1c: 81 45 f4 00 10 00 00 addl $0x1000,-0xc(%ebp) -c0103e23: 8b 55 f4 mov -0xc(%ebp),%edx -c0103e26: a1 c0 a8 11 c0 mov 0xc011a8c0,%eax -c0103e2b: 39 c2 cmp %eax,%edx -c0103e2d: 0f 82 4d ff ff ff jb c0103d80 - assert((ptep = get_pte(boot_pgdir, (uintptr_t)KADDR(i), 0)) != NULL); - assert(PTE_ADDR(*ptep) == i); - } - - assert(PDE_ADDR(boot_pgdir[PDX(VPT)]) == PADDR(boot_pgdir)); -c0103e33: a1 c4 a8 11 c0 mov 0xc011a8c4,%eax -c0103e38: 05 ac 0f 00 00 add $0xfac,%eax -c0103e3d: 8b 00 mov (%eax),%eax -c0103e3f: 25 00 f0 ff ff and $0xfffff000,%eax -c0103e44: 89 c2 mov %eax,%edx -c0103e46: a1 c4 a8 11 c0 mov 0xc011a8c4,%eax -c0103e4b: 89 45 e4 mov %eax,-0x1c(%ebp) -c0103e4e: 81 7d e4 ff ff ff bf cmpl $0xbfffffff,-0x1c(%ebp) -c0103e55: 77 17 ja c0103e6e -c0103e57: ff 75 e4 pushl -0x1c(%ebp) -c0103e5a: 68 40 71 10 c0 push $0xc0107140 -c0103e5f: 68 2d 02 00 00 push $0x22d -c0103e64: 68 64 71 10 c0 push $0xc0107164 -c0103e69: e8 5f c5 ff ff call c01003cd <__panic> -c0103e6e: 8b 45 e4 mov -0x1c(%ebp),%eax -c0103e71: 05 00 00 00 40 add $0x40000000,%eax -c0103e76: 39 c2 cmp %eax,%edx -c0103e78: 74 19 je c0103e93 -c0103e7a: 68 7c 75 10 c0 push $0xc010757c -c0103e7f: 68 25 72 10 c0 push $0xc0107225 -c0103e84: 68 2d 02 00 00 push $0x22d -c0103e89: 68 64 71 10 c0 push $0xc0107164 -c0103e8e: e8 3a c5 ff ff call c01003cd <__panic> - - assert(boot_pgdir[0] == 0); -c0103e93: a1 c4 a8 11 c0 mov 0xc011a8c4,%eax -c0103e98: 8b 00 mov (%eax),%eax -c0103e9a: 85 c0 test %eax,%eax -c0103e9c: 74 19 je c0103eb7 -c0103e9e: 68 b0 75 10 c0 push $0xc01075b0 -c0103ea3: 68 25 72 10 c0 push $0xc0107225 -c0103ea8: 68 2f 02 00 00 push $0x22f -c0103ead: 68 64 71 10 c0 push $0xc0107164 -c0103eb2: e8 16 c5 ff ff call c01003cd <__panic> - - struct Page *p; - p = alloc_page(); -c0103eb7: 83 ec 0c sub $0xc,%esp -c0103eba: 6a 01 push $0x1 -c0103ebc: e8 ae ee ff ff call c0102d6f -c0103ec1: 83 c4 10 add $0x10,%esp -c0103ec4: 89 45 e0 mov %eax,-0x20(%ebp) - assert(page_insert(boot_pgdir, p, 0x100, PTE_W) == 0); -c0103ec7: a1 c4 a8 11 c0 mov 0xc011a8c4,%eax -c0103ecc: 6a 02 push $0x2 -c0103ece: 68 00 01 00 00 push $0x100 -c0103ed3: ff 75 e0 pushl -0x20(%ebp) -c0103ed6: 50 push %eax -c0103ed7: e8 00 f8 ff ff call c01036dc -c0103edc: 83 c4 10 add $0x10,%esp -c0103edf: 85 c0 test %eax,%eax -c0103ee1: 74 19 je c0103efc -c0103ee3: 68 c4 75 10 c0 push $0xc01075c4 -c0103ee8: 68 25 72 10 c0 push $0xc0107225 -c0103eed: 68 33 02 00 00 push $0x233 -c0103ef2: 68 64 71 10 c0 push $0xc0107164 -c0103ef7: e8 d1 c4 ff ff call c01003cd <__panic> - assert(page_ref(p) == 1); -c0103efc: 83 ec 0c sub $0xc,%esp -c0103eff: ff 75 e0 pushl -0x20(%ebp) -c0103f02: e8 5a ec ff ff call c0102b61 -c0103f07: 83 c4 10 add $0x10,%esp -c0103f0a: 83 f8 01 cmp $0x1,%eax -c0103f0d: 74 19 je c0103f28 -c0103f0f: 68 f2 75 10 c0 push $0xc01075f2 -c0103f14: 68 25 72 10 c0 push $0xc0107225 -c0103f19: 68 34 02 00 00 push $0x234 -c0103f1e: 68 64 71 10 c0 push $0xc0107164 -c0103f23: e8 a5 c4 ff ff call c01003cd <__panic> - assert(page_insert(boot_pgdir, p, 0x100 + PGSIZE, PTE_W) == 0); -c0103f28: a1 c4 a8 11 c0 mov 0xc011a8c4,%eax -c0103f2d: 6a 02 push $0x2 -c0103f2f: 68 00 11 00 00 push $0x1100 -c0103f34: ff 75 e0 pushl -0x20(%ebp) -c0103f37: 50 push %eax -c0103f38: e8 9f f7 ff ff call c01036dc -c0103f3d: 83 c4 10 add $0x10,%esp -c0103f40: 85 c0 test %eax,%eax -c0103f42: 74 19 je c0103f5d -c0103f44: 68 04 76 10 c0 push $0xc0107604 -c0103f49: 68 25 72 10 c0 push $0xc0107225 -c0103f4e: 68 35 02 00 00 push $0x235 -c0103f53: 68 64 71 10 c0 push $0xc0107164 -c0103f58: e8 70 c4 ff ff call c01003cd <__panic> - assert(page_ref(p) == 2); -c0103f5d: 83 ec 0c sub $0xc,%esp -c0103f60: ff 75 e0 pushl -0x20(%ebp) -c0103f63: e8 f9 eb ff ff call c0102b61 -c0103f68: 83 c4 10 add $0x10,%esp -c0103f6b: 83 f8 02 cmp $0x2,%eax -c0103f6e: 74 19 je c0103f89 -c0103f70: 68 3b 76 10 c0 push $0xc010763b -c0103f75: 68 25 72 10 c0 push $0xc0107225 -c0103f7a: 68 36 02 00 00 push $0x236 -c0103f7f: 68 64 71 10 c0 push $0xc0107164 -c0103f84: e8 44 c4 ff ff call c01003cd <__panic> - - const char *str = "ucore: Hello world!!"; -c0103f89: c7 45 dc 4c 76 10 c0 movl $0xc010764c,-0x24(%ebp) - strcpy((void *)0x100, str); -c0103f90: 83 ec 08 sub $0x8,%esp -c0103f93: ff 75 dc pushl -0x24(%ebp) -c0103f96: 68 00 01 00 00 push $0x100 -c0103f9b: e8 ee 1e 00 00 call c0105e8e -c0103fa0: 83 c4 10 add $0x10,%esp - assert(strcmp((void *)0x100, (void *)(0x100 + PGSIZE)) == 0); -c0103fa3: 83 ec 08 sub $0x8,%esp -c0103fa6: 68 00 11 00 00 push $0x1100 -c0103fab: 68 00 01 00 00 push $0x100 -c0103fb0: e8 53 1f 00 00 call c0105f08 -c0103fb5: 83 c4 10 add $0x10,%esp -c0103fb8: 85 c0 test %eax,%eax -c0103fba: 74 19 je c0103fd5 -c0103fbc: 68 64 76 10 c0 push $0xc0107664 -c0103fc1: 68 25 72 10 c0 push $0xc0107225 -c0103fc6: 68 3a 02 00 00 push $0x23a -c0103fcb: 68 64 71 10 c0 push $0xc0107164 -c0103fd0: e8 f8 c3 ff ff call c01003cd <__panic> - - *(char *)(page2kva(p) + 0x100) = '\0'; -c0103fd5: 83 ec 0c sub $0xc,%esp -c0103fd8: ff 75 e0 pushl -0x20(%ebp) -c0103fdb: e8 e6 ea ff ff call c0102ac6 -c0103fe0: 83 c4 10 add $0x10,%esp -c0103fe3: 05 00 01 00 00 add $0x100,%eax -c0103fe8: c6 00 00 movb $0x0,(%eax) - assert(strlen((const char *)0x100) == 0); -c0103feb: 83 ec 0c sub $0xc,%esp -c0103fee: 68 00 01 00 00 push $0x100 -c0103ff3: e8 3e 1e 00 00 call c0105e36 -c0103ff8: 83 c4 10 add $0x10,%esp -c0103ffb: 85 c0 test %eax,%eax -c0103ffd: 74 19 je c0104018 -c0103fff: 68 9c 76 10 c0 push $0xc010769c -c0104004: 68 25 72 10 c0 push $0xc0107225 -c0104009: 68 3d 02 00 00 push $0x23d -c010400e: 68 64 71 10 c0 push $0xc0107164 -c0104013: e8 b5 c3 ff ff call c01003cd <__panic> - - free_page(p); -c0104018: 83 ec 08 sub $0x8,%esp -c010401b: 6a 01 push $0x1 -c010401d: ff 75 e0 pushl -0x20(%ebp) -c0104020: e8 88 ed ff ff call c0102dad -c0104025: 83 c4 10 add $0x10,%esp - free_page(pde2page(boot_pgdir[0])); -c0104028: a1 c4 a8 11 c0 mov 0xc011a8c4,%eax -c010402d: 8b 00 mov (%eax),%eax -c010402f: 83 ec 0c sub $0xc,%esp -c0104032: 50 push %eax -c0104033: e8 0d eb ff ff call c0102b45 -c0104038: 83 c4 10 add $0x10,%esp -c010403b: 83 ec 08 sub $0x8,%esp -c010403e: 6a 01 push $0x1 -c0104040: 50 push %eax -c0104041: e8 67 ed ff ff call c0102dad -c0104046: 83 c4 10 add $0x10,%esp - boot_pgdir[0] = 0; -c0104049: a1 c4 a8 11 c0 mov 0xc011a8c4,%eax -c010404e: c7 00 00 00 00 00 movl $0x0,(%eax) - - cprintf("check_boot_pgdir() succeeded!\n"); -c0104054: 83 ec 0c sub $0xc,%esp -c0104057: 68 c0 76 10 c0 push $0xc01076c0 -c010405c: e8 06 c2 ff ff call c0100267 -c0104061: 83 c4 10 add $0x10,%esp -} -c0104064: 90 nop -c0104065: c9 leave -c0104066: c3 ret - -c0104067 : - -//perm2str - use string 'u,r,w,-' to present the permission -static const char * -perm2str(int perm) { -c0104067: 55 push %ebp -c0104068: 89 e5 mov %esp,%ebp - static char str[4]; - str[0] = (perm & PTE_U) ? 'u' : '-'; -c010406a: 8b 45 08 mov 0x8(%ebp),%eax -c010406d: 83 e0 04 and $0x4,%eax -c0104070: 85 c0 test %eax,%eax -c0104072: 74 07 je c010407b -c0104074: b8 75 00 00 00 mov $0x75,%eax -c0104079: eb 05 jmp c0104080 -c010407b: b8 2d 00 00 00 mov $0x2d,%eax -c0104080: a2 48 a9 11 c0 mov %al,0xc011a948 - str[1] = 'r'; -c0104085: c6 05 49 a9 11 c0 72 movb $0x72,0xc011a949 - str[2] = (perm & PTE_W) ? 'w' : '-'; -c010408c: 8b 45 08 mov 0x8(%ebp),%eax -c010408f: 83 e0 02 and $0x2,%eax -c0104092: 85 c0 test %eax,%eax -c0104094: 74 07 je c010409d -c0104096: b8 77 00 00 00 mov $0x77,%eax -c010409b: eb 05 jmp c01040a2 -c010409d: b8 2d 00 00 00 mov $0x2d,%eax -c01040a2: a2 4a a9 11 c0 mov %al,0xc011a94a - str[3] = '\0'; -c01040a7: c6 05 4b a9 11 c0 00 movb $0x0,0xc011a94b - return str; -c01040ae: b8 48 a9 11 c0 mov $0xc011a948,%eax -} -c01040b3: 5d pop %ebp -c01040b4: c3 ret - -c01040b5 : -// table: the beginning addr of table -// left_store: the pointer of the high side of table's next range -// right_store: the pointer of the low side of table's next range -// return value: 0 - not a invalid item range, perm - a valid item range with perm permission -static int -get_pgtable_items(size_t left, size_t right, size_t start, uintptr_t *table, size_t *left_store, size_t *right_store) { -c01040b5: 55 push %ebp -c01040b6: 89 e5 mov %esp,%ebp -c01040b8: 83 ec 10 sub $0x10,%esp - if (start >= right) { -c01040bb: 8b 45 10 mov 0x10(%ebp),%eax -c01040be: 3b 45 0c cmp 0xc(%ebp),%eax -c01040c1: 72 0e jb c01040d1 - return 0; -c01040c3: b8 00 00 00 00 mov $0x0,%eax -c01040c8: e9 9a 00 00 00 jmp c0104167 - } - while (start < right && !(table[start] & PTE_P)) { - start ++; -c01040cd: 83 45 10 01 addl $0x1,0x10(%ebp) -static int -get_pgtable_items(size_t left, size_t right, size_t start, uintptr_t *table, size_t *left_store, size_t *right_store) { - if (start >= right) { - return 0; - } - while (start < right && !(table[start] & PTE_P)) { -c01040d1: 8b 45 10 mov 0x10(%ebp),%eax -c01040d4: 3b 45 0c cmp 0xc(%ebp),%eax -c01040d7: 73 18 jae c01040f1 -c01040d9: 8b 45 10 mov 0x10(%ebp),%eax -c01040dc: 8d 14 85 00 00 00 00 lea 0x0(,%eax,4),%edx -c01040e3: 8b 45 14 mov 0x14(%ebp),%eax -c01040e6: 01 d0 add %edx,%eax -c01040e8: 8b 00 mov (%eax),%eax -c01040ea: 83 e0 01 and $0x1,%eax -c01040ed: 85 c0 test %eax,%eax -c01040ef: 74 dc je c01040cd - start ++; - } - if (start < right) { -c01040f1: 8b 45 10 mov 0x10(%ebp),%eax -c01040f4: 3b 45 0c cmp 0xc(%ebp),%eax -c01040f7: 73 69 jae c0104162 - if (left_store != NULL) { -c01040f9: 83 7d 18 00 cmpl $0x0,0x18(%ebp) -c01040fd: 74 08 je c0104107 - *left_store = start; -c01040ff: 8b 45 18 mov 0x18(%ebp),%eax -c0104102: 8b 55 10 mov 0x10(%ebp),%edx -c0104105: 89 10 mov %edx,(%eax) - } - int perm = (table[start ++] & PTE_USER); -c0104107: 8b 45 10 mov 0x10(%ebp),%eax -c010410a: 8d 50 01 lea 0x1(%eax),%edx -c010410d: 89 55 10 mov %edx,0x10(%ebp) -c0104110: 8d 14 85 00 00 00 00 lea 0x0(,%eax,4),%edx -c0104117: 8b 45 14 mov 0x14(%ebp),%eax -c010411a: 01 d0 add %edx,%eax -c010411c: 8b 00 mov (%eax),%eax -c010411e: 83 e0 07 and $0x7,%eax -c0104121: 89 45 fc mov %eax,-0x4(%ebp) - while (start < right && (table[start] & PTE_USER) == perm) { -c0104124: eb 04 jmp c010412a - start ++; -c0104126: 83 45 10 01 addl $0x1,0x10(%ebp) - if (start < right) { - if (left_store != NULL) { - *left_store = start; - } - int perm = (table[start ++] & PTE_USER); - while (start < right && (table[start] & PTE_USER) == perm) { -c010412a: 8b 45 10 mov 0x10(%ebp),%eax -c010412d: 3b 45 0c cmp 0xc(%ebp),%eax -c0104130: 73 1d jae c010414f -c0104132: 8b 45 10 mov 0x10(%ebp),%eax -c0104135: 8d 14 85 00 00 00 00 lea 0x0(,%eax,4),%edx -c010413c: 8b 45 14 mov 0x14(%ebp),%eax -c010413f: 01 d0 add %edx,%eax -c0104141: 8b 00 mov (%eax),%eax -c0104143: 83 e0 07 and $0x7,%eax -c0104146: 89 c2 mov %eax,%edx -c0104148: 8b 45 fc mov -0x4(%ebp),%eax -c010414b: 39 c2 cmp %eax,%edx -c010414d: 74 d7 je c0104126 - start ++; - } - if (right_store != NULL) { -c010414f: 83 7d 1c 00 cmpl $0x0,0x1c(%ebp) -c0104153: 74 08 je c010415d - *right_store = start; -c0104155: 8b 45 1c mov 0x1c(%ebp),%eax -c0104158: 8b 55 10 mov 0x10(%ebp),%edx -c010415b: 89 10 mov %edx,(%eax) - } - return perm; -c010415d: 8b 45 fc mov -0x4(%ebp),%eax -c0104160: eb 05 jmp c0104167 - } - return 0; -c0104162: b8 00 00 00 00 mov $0x0,%eax -} -c0104167: c9 leave -c0104168: c3 ret - -c0104169 : - -//print_pgdir - print the PDT&PT -void -print_pgdir(void) { -c0104169: 55 push %ebp -c010416a: 89 e5 mov %esp,%ebp -c010416c: 57 push %edi -c010416d: 56 push %esi -c010416e: 53 push %ebx -c010416f: 83 ec 2c sub $0x2c,%esp - cprintf("-------------------- BEGIN --------------------\n"); -c0104172: 83 ec 0c sub $0xc,%esp -c0104175: 68 e0 76 10 c0 push $0xc01076e0 -c010417a: e8 e8 c0 ff ff call c0100267 -c010417f: 83 c4 10 add $0x10,%esp - size_t left, right = 0, perm; -c0104182: c7 45 dc 00 00 00 00 movl $0x0,-0x24(%ebp) - while ((perm = get_pgtable_items(0, NPDEENTRY, right, vpd, &left, &right)) != 0) { -c0104189: e9 e5 00 00 00 jmp c0104273 - cprintf("PDE(%03x) %08x-%08x %08x %s\n", right - left, -c010418e: 8b 45 e4 mov -0x1c(%ebp),%eax -c0104191: 83 ec 0c sub $0xc,%esp -c0104194: 50 push %eax -c0104195: e8 cd fe ff ff call c0104067 -c010419a: 83 c4 10 add $0x10,%esp -c010419d: 89 c7 mov %eax,%edi - left * PTSIZE, right * PTSIZE, (right - left) * PTSIZE, perm2str(perm)); -c010419f: 8b 55 dc mov -0x24(%ebp),%edx -c01041a2: 8b 45 e0 mov -0x20(%ebp),%eax -c01041a5: 29 c2 sub %eax,%edx -c01041a7: 89 d0 mov %edx,%eax -void -print_pgdir(void) { - cprintf("-------------------- BEGIN --------------------\n"); - size_t left, right = 0, perm; - while ((perm = get_pgtable_items(0, NPDEENTRY, right, vpd, &left, &right)) != 0) { - cprintf("PDE(%03x) %08x-%08x %08x %s\n", right - left, -c01041a9: c1 e0 16 shl $0x16,%eax -c01041ac: 89 c3 mov %eax,%ebx -c01041ae: 8b 45 dc mov -0x24(%ebp),%eax -c01041b1: c1 e0 16 shl $0x16,%eax -c01041b4: 89 c1 mov %eax,%ecx -c01041b6: 8b 45 e0 mov -0x20(%ebp),%eax -c01041b9: c1 e0 16 shl $0x16,%eax -c01041bc: 89 c2 mov %eax,%edx -c01041be: 8b 75 dc mov -0x24(%ebp),%esi -c01041c1: 8b 45 e0 mov -0x20(%ebp),%eax -c01041c4: 29 c6 sub %eax,%esi -c01041c6: 89 f0 mov %esi,%eax -c01041c8: 83 ec 08 sub $0x8,%esp -c01041cb: 57 push %edi -c01041cc: 53 push %ebx -c01041cd: 51 push %ecx -c01041ce: 52 push %edx -c01041cf: 50 push %eax -c01041d0: 68 11 77 10 c0 push $0xc0107711 -c01041d5: e8 8d c0 ff ff call c0100267 -c01041da: 83 c4 20 add $0x20,%esp - left * PTSIZE, right * PTSIZE, (right - left) * PTSIZE, perm2str(perm)); - size_t l, r = left * NPTEENTRY; -c01041dd: 8b 45 e0 mov -0x20(%ebp),%eax -c01041e0: c1 e0 0a shl $0xa,%eax -c01041e3: 89 45 d4 mov %eax,-0x2c(%ebp) - while ((perm = get_pgtable_items(left * NPTEENTRY, right * NPTEENTRY, r, vpt, &l, &r)) != 0) { -c01041e6: eb 4f jmp c0104237 - cprintf(" |-- PTE(%05x) %08x-%08x %08x %s\n", r - l, -c01041e8: 8b 45 e4 mov -0x1c(%ebp),%eax -c01041eb: 83 ec 0c sub $0xc,%esp -c01041ee: 50 push %eax -c01041ef: e8 73 fe ff ff call c0104067 -c01041f4: 83 c4 10 add $0x10,%esp -c01041f7: 89 c7 mov %eax,%edi - l * PGSIZE, r * PGSIZE, (r - l) * PGSIZE, perm2str(perm)); -c01041f9: 8b 55 d4 mov -0x2c(%ebp),%edx -c01041fc: 8b 45 d8 mov -0x28(%ebp),%eax -c01041ff: 29 c2 sub %eax,%edx -c0104201: 89 d0 mov %edx,%eax - while ((perm = get_pgtable_items(0, NPDEENTRY, right, vpd, &left, &right)) != 0) { - cprintf("PDE(%03x) %08x-%08x %08x %s\n", right - left, - left * PTSIZE, right * PTSIZE, (right - left) * PTSIZE, perm2str(perm)); - size_t l, r = left * NPTEENTRY; - while ((perm = get_pgtable_items(left * NPTEENTRY, right * NPTEENTRY, r, vpt, &l, &r)) != 0) { - cprintf(" |-- PTE(%05x) %08x-%08x %08x %s\n", r - l, -c0104203: c1 e0 0c shl $0xc,%eax -c0104206: 89 c3 mov %eax,%ebx -c0104208: 8b 45 d4 mov -0x2c(%ebp),%eax -c010420b: c1 e0 0c shl $0xc,%eax -c010420e: 89 c1 mov %eax,%ecx -c0104210: 8b 45 d8 mov -0x28(%ebp),%eax -c0104213: c1 e0 0c shl $0xc,%eax -c0104216: 89 c2 mov %eax,%edx -c0104218: 8b 75 d4 mov -0x2c(%ebp),%esi -c010421b: 8b 45 d8 mov -0x28(%ebp),%eax -c010421e: 29 c6 sub %eax,%esi -c0104220: 89 f0 mov %esi,%eax -c0104222: 83 ec 08 sub $0x8,%esp -c0104225: 57 push %edi -c0104226: 53 push %ebx -c0104227: 51 push %ecx -c0104228: 52 push %edx -c0104229: 50 push %eax -c010422a: 68 30 77 10 c0 push $0xc0107730 -c010422f: e8 33 c0 ff ff call c0100267 -c0104234: 83 c4 20 add $0x20,%esp - size_t left, right = 0, perm; - while ((perm = get_pgtable_items(0, NPDEENTRY, right, vpd, &left, &right)) != 0) { - cprintf("PDE(%03x) %08x-%08x %08x %s\n", right - left, - left * PTSIZE, right * PTSIZE, (right - left) * PTSIZE, perm2str(perm)); - size_t l, r = left * NPTEENTRY; - while ((perm = get_pgtable_items(left * NPTEENTRY, right * NPTEENTRY, r, vpt, &l, &r)) != 0) { -c0104237: be 00 00 c0 fa mov $0xfac00000,%esi -c010423c: 8b 45 d4 mov -0x2c(%ebp),%eax -c010423f: 8b 55 dc mov -0x24(%ebp),%edx -c0104242: 89 d3 mov %edx,%ebx -c0104244: c1 e3 0a shl $0xa,%ebx -c0104247: 8b 55 e0 mov -0x20(%ebp),%edx -c010424a: 89 d1 mov %edx,%ecx -c010424c: c1 e1 0a shl $0xa,%ecx -c010424f: 83 ec 08 sub $0x8,%esp -c0104252: 8d 55 d4 lea -0x2c(%ebp),%edx -c0104255: 52 push %edx -c0104256: 8d 55 d8 lea -0x28(%ebp),%edx -c0104259: 52 push %edx -c010425a: 56 push %esi -c010425b: 50 push %eax -c010425c: 53 push %ebx -c010425d: 51 push %ecx -c010425e: e8 52 fe ff ff call c01040b5 -c0104263: 83 c4 20 add $0x20,%esp -c0104266: 89 45 e4 mov %eax,-0x1c(%ebp) -c0104269: 83 7d e4 00 cmpl $0x0,-0x1c(%ebp) -c010426d: 0f 85 75 ff ff ff jne c01041e8 -//print_pgdir - print the PDT&PT -void -print_pgdir(void) { - cprintf("-------------------- BEGIN --------------------\n"); - size_t left, right = 0, perm; - while ((perm = get_pgtable_items(0, NPDEENTRY, right, vpd, &left, &right)) != 0) { -c0104273: b9 00 b0 fe fa mov $0xfafeb000,%ecx -c0104278: 8b 45 dc mov -0x24(%ebp),%eax -c010427b: 83 ec 08 sub $0x8,%esp -c010427e: 8d 55 dc lea -0x24(%ebp),%edx -c0104281: 52 push %edx -c0104282: 8d 55 e0 lea -0x20(%ebp),%edx -c0104285: 52 push %edx -c0104286: 51 push %ecx -c0104287: 50 push %eax -c0104288: 68 00 04 00 00 push $0x400 -c010428d: 6a 00 push $0x0 -c010428f: e8 21 fe ff ff call c01040b5 -c0104294: 83 c4 20 add $0x20,%esp -c0104297: 89 45 e4 mov %eax,-0x1c(%ebp) -c010429a: 83 7d e4 00 cmpl $0x0,-0x1c(%ebp) -c010429e: 0f 85 ea fe ff ff jne c010418e - while ((perm = get_pgtable_items(left * NPTEENTRY, right * NPTEENTRY, r, vpt, &l, &r)) != 0) { - cprintf(" |-- PTE(%05x) %08x-%08x %08x %s\n", r - l, - l * PGSIZE, r * PGSIZE, (r - l) * PGSIZE, perm2str(perm)); - } - } - cprintf("--------------------- END ---------------------\n"); -c01042a4: 83 ec 0c sub $0xc,%esp -c01042a7: 68 54 77 10 c0 push $0xc0107754 -c01042ac: e8 b6 bf ff ff call c0100267 -c01042b1: 83 c4 10 add $0x10,%esp -} -c01042b4: 90 nop -c01042b5: 8d 65 f4 lea -0xc(%ebp),%esp -c01042b8: 5b pop %ebx -c01042b9: 5e pop %esi -c01042ba: 5f pop %edi -c01042bb: 5d pop %ebp -c01042bc: c3 ret - -c01042bd : - -extern struct Page *pages; -extern size_t npage; - -static inline ppn_t -page2ppn(struct Page *page) { -c01042bd: 55 push %ebp -c01042be: 89 e5 mov %esp,%ebp - return page - pages; -c01042c0: 8b 45 08 mov 0x8(%ebp),%eax -c01042c3: 8b 15 64 a9 11 c0 mov 0xc011a964,%edx -c01042c9: 29 d0 sub %edx,%eax -c01042cb: c1 f8 02 sar $0x2,%eax -c01042ce: 69 c0 cd cc cc cc imul $0xcccccccd,%eax,%eax -} -c01042d4: 5d pop %ebp -c01042d5: c3 ret - -c01042d6 : - -static inline uintptr_t -page2pa(struct Page *page) { -c01042d6: 55 push %ebp -c01042d7: 89 e5 mov %esp,%ebp - return page2ppn(page) << PGSHIFT; -c01042d9: ff 75 08 pushl 0x8(%ebp) -c01042dc: e8 dc ff ff ff call c01042bd -c01042e1: 83 c4 04 add $0x4,%esp -c01042e4: c1 e0 0c shl $0xc,%eax -} -c01042e7: c9 leave -c01042e8: c3 ret - -c01042e9 : -pde2page(pde_t pde) { - return pa2page(PDE_ADDR(pde)); -} - -static inline int -page_ref(struct Page *page) { -c01042e9: 55 push %ebp -c01042ea: 89 e5 mov %esp,%ebp - return page->ref; -c01042ec: 8b 45 08 mov 0x8(%ebp),%eax -c01042ef: 8b 00 mov (%eax),%eax -} -c01042f1: 5d pop %ebp -c01042f2: c3 ret - -c01042f3 : - -static inline void -set_page_ref(struct Page *page, int val) { -c01042f3: 55 push %ebp -c01042f4: 89 e5 mov %esp,%ebp - page->ref = val; -c01042f6: 8b 45 08 mov 0x8(%ebp),%eax -c01042f9: 8b 55 0c mov 0xc(%ebp),%edx -c01042fc: 89 10 mov %edx,(%eax) -} -c01042fe: 90 nop -c01042ff: 5d pop %ebp -c0104300: c3 ret - -c0104301 : - -#define free_list (free_area.free_list) -#define nr_free (free_area.nr_free) - -static void -default_init(void) { -c0104301: 55 push %ebp -c0104302: 89 e5 mov %esp,%ebp -c0104304: 83 ec 10 sub $0x10,%esp -c0104307: c7 45 fc 68 a9 11 c0 movl $0xc011a968,-0x4(%ebp) - * list_init - initialize a new entry - * @elm: new entry to be initialized - * */ -static inline void -list_init(list_entry_t *elm) { - elm->prev = elm->next = elm; -c010430e: 8b 45 fc mov -0x4(%ebp),%eax -c0104311: 8b 55 fc mov -0x4(%ebp),%edx -c0104314: 89 50 04 mov %edx,0x4(%eax) -c0104317: 8b 45 fc mov -0x4(%ebp),%eax -c010431a: 8b 50 04 mov 0x4(%eax),%edx -c010431d: 8b 45 fc mov -0x4(%ebp),%eax -c0104320: 89 10 mov %edx,(%eax) - list_init(&free_list); - nr_free = 0; -c0104322: c7 05 70 a9 11 c0 00 movl $0x0,0xc011a970 -c0104329: 00 00 00 -} -c010432c: 90 nop -c010432d: c9 leave -c010432e: c3 ret - -c010432f : - -static void -default_init_memmap(struct Page *base, size_t n) { -c010432f: 55 push %ebp -c0104330: 89 e5 mov %esp,%ebp -c0104332: 83 ec 38 sub $0x38,%esp - assert(n > 0); -c0104335: 83 7d 0c 00 cmpl $0x0,0xc(%ebp) -c0104339: 75 16 jne c0104351 -c010433b: 68 88 77 10 c0 push $0xc0107788 -c0104340: 68 8e 77 10 c0 push $0xc010778e -c0104345: 6a 46 push $0x46 -c0104347: 68 a3 77 10 c0 push $0xc01077a3 -c010434c: e8 7c c0 ff ff call c01003cd <__panic> - struct Page *p = base; -c0104351: 8b 45 08 mov 0x8(%ebp),%eax -c0104354: 89 45 f4 mov %eax,-0xc(%ebp) - for (; p != base + n; p ++) { -c0104357: eb 6c jmp c01043c5 - // Before: the page must have been set reserved in page_init. - assert(PageReserved(p)); -c0104359: 8b 45 f4 mov -0xc(%ebp),%eax -c010435c: 83 c0 04 add $0x4,%eax -c010435f: c7 45 e8 00 00 00 00 movl $0x0,-0x18(%ebp) -c0104366: 89 45 e4 mov %eax,-0x1c(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); -c0104369: 8b 45 e4 mov -0x1c(%ebp),%eax -c010436c: 8b 55 e8 mov -0x18(%ebp),%edx -c010436f: 0f a3 10 bt %edx,(%eax) -c0104372: 19 c0 sbb %eax,%eax -c0104374: 89 45 e0 mov %eax,-0x20(%ebp) - return oldbit != 0; -c0104377: 83 7d e0 00 cmpl $0x0,-0x20(%ebp) -c010437b: 0f 95 c0 setne %al -c010437e: 0f b6 c0 movzbl %al,%eax -c0104381: 85 c0 test %eax,%eax -c0104383: 75 16 jne c010439b -c0104385: 68 b9 77 10 c0 push $0xc01077b9 -c010438a: 68 8e 77 10 c0 push $0xc010778e -c010438f: 6a 4a push $0x4a -c0104391: 68 a3 77 10 c0 push $0xc01077a3 -c0104396: e8 32 c0 ff ff call c01003cd <__panic> - // Initialize flags, property and ref - p->flags = p->property = 0; -c010439b: 8b 45 f4 mov -0xc(%ebp),%eax -c010439e: c7 40 08 00 00 00 00 movl $0x0,0x8(%eax) -c01043a5: 8b 45 f4 mov -0xc(%ebp),%eax -c01043a8: 8b 50 08 mov 0x8(%eax),%edx -c01043ab: 8b 45 f4 mov -0xc(%ebp),%eax -c01043ae: 89 50 04 mov %edx,0x4(%eax) - set_page_ref(p, 0); -c01043b1: 83 ec 08 sub $0x8,%esp -c01043b4: 6a 00 push $0x0 -c01043b6: ff 75 f4 pushl -0xc(%ebp) -c01043b9: e8 35 ff ff ff call c01042f3 -c01043be: 83 c4 10 add $0x10,%esp - -static void -default_init_memmap(struct Page *base, size_t n) { - assert(n > 0); - struct Page *p = base; - for (; p != base + n; p ++) { -c01043c1: 83 45 f4 14 addl $0x14,-0xc(%ebp) -c01043c5: 8b 55 0c mov 0xc(%ebp),%edx -c01043c8: 89 d0 mov %edx,%eax -c01043ca: c1 e0 02 shl $0x2,%eax -c01043cd: 01 d0 add %edx,%eax -c01043cf: c1 e0 02 shl $0x2,%eax -c01043d2: 89 c2 mov %eax,%edx -c01043d4: 8b 45 08 mov 0x8(%ebp),%eax -c01043d7: 01 d0 add %edx,%eax -c01043d9: 3b 45 f4 cmp -0xc(%ebp),%eax -c01043dc: 0f 85 77 ff ff ff jne c0104359 - // Initialize flags, property and ref - p->flags = p->property = 0; - set_page_ref(p, 0); - } - // The base page is the start of continuous free pages. - base->property = n; -c01043e2: 8b 45 08 mov 0x8(%ebp),%eax -c01043e5: 8b 55 0c mov 0xc(%ebp),%edx -c01043e8: 89 50 08 mov %edx,0x8(%eax) - SetPageProperty(base); -c01043eb: 8b 45 08 mov 0x8(%ebp),%eax -c01043ee: 83 c0 04 add $0x4,%eax -c01043f1: c7 45 ec 01 00 00 00 movl $0x1,-0x14(%ebp) -c01043f8: 89 45 cc mov %eax,-0x34(%ebp) - * Note that @nr may be almost arbitrarily large; this function is not - * restricted to acting on a single-word quantity. - * */ -static inline void -set_bit(int nr, volatile void *addr) { - asm volatile ("btsl %1, %0" :"=m" (*(volatile long *)addr) : "Ir" (nr)); -c01043fb: 8b 45 cc mov -0x34(%ebp),%eax -c01043fe: 8b 55 ec mov -0x14(%ebp),%edx -c0104401: 0f ab 10 bts %edx,(%eax) - nr_free += n; -c0104404: 8b 15 70 a9 11 c0 mov 0xc011a970,%edx -c010440a: 8b 45 0c mov 0xc(%ebp),%eax -c010440d: 01 d0 add %edx,%eax -c010440f: a3 70 a9 11 c0 mov %eax,0xc011a970 - list_add_before(&free_list, &(base->page_link)); -c0104414: 8b 45 08 mov 0x8(%ebp),%eax -c0104417: 83 c0 0c add $0xc,%eax -c010441a: c7 45 f0 68 a9 11 c0 movl $0xc011a968,-0x10(%ebp) -c0104421: 89 45 dc mov %eax,-0x24(%ebp) - * Insert the new element @elm *before* the element @listelm which - * is already in the list. - * */ -static inline void -list_add_before(list_entry_t *listelm, list_entry_t *elm) { - __list_add(elm, listelm->prev, listelm); -c0104424: 8b 45 f0 mov -0x10(%ebp),%eax -c0104427: 8b 00 mov (%eax),%eax -c0104429: 8b 55 dc mov -0x24(%ebp),%edx -c010442c: 89 55 d8 mov %edx,-0x28(%ebp) -c010442f: 89 45 d4 mov %eax,-0x2c(%ebp) -c0104432: 8b 45 f0 mov -0x10(%ebp),%eax -c0104435: 89 45 d0 mov %eax,-0x30(%ebp) - * This is only for internal list manipulation where we know - * the prev/next entries already! - * */ -static inline void -__list_add(list_entry_t *elm, list_entry_t *prev, list_entry_t *next) { - prev->next = next->prev = elm; -c0104438: 8b 45 d0 mov -0x30(%ebp),%eax -c010443b: 8b 55 d8 mov -0x28(%ebp),%edx -c010443e: 89 10 mov %edx,(%eax) -c0104440: 8b 45 d0 mov -0x30(%ebp),%eax -c0104443: 8b 10 mov (%eax),%edx -c0104445: 8b 45 d4 mov -0x2c(%ebp),%eax -c0104448: 89 50 04 mov %edx,0x4(%eax) - elm->next = next; -c010444b: 8b 45 d8 mov -0x28(%ebp),%eax -c010444e: 8b 55 d0 mov -0x30(%ebp),%edx -c0104451: 89 50 04 mov %edx,0x4(%eax) - elm->prev = prev; -c0104454: 8b 45 d8 mov -0x28(%ebp),%eax -c0104457: 8b 55 d4 mov -0x2c(%ebp),%edx -c010445a: 89 10 mov %edx,(%eax) -} -c010445c: 90 nop -c010445d: c9 leave -c010445e: c3 ret - -c010445f : - -static struct Page * -default_alloc_pages(size_t n) { -c010445f: 55 push %ebp -c0104460: 89 e5 mov %esp,%ebp -c0104462: 83 ec 68 sub $0x68,%esp - assert(n > 0); -c0104465: 83 7d 08 00 cmpl $0x0,0x8(%ebp) -c0104469: 75 16 jne c0104481 -c010446b: 68 88 77 10 c0 push $0xc0107788 -c0104470: 68 8e 77 10 c0 push $0xc010778e -c0104475: 6a 58 push $0x58 -c0104477: 68 a3 77 10 c0 push $0xc01077a3 -c010447c: e8 4c bf ff ff call c01003cd <__panic> - if (n > nr_free) { -c0104481: a1 70 a9 11 c0 mov 0xc011a970,%eax -c0104486: 3b 45 08 cmp 0x8(%ebp),%eax -c0104489: 73 0a jae c0104495 - return NULL; -c010448b: b8 00 00 00 00 mov $0x0,%eax -c0104490: e9 a8 01 00 00 jmp c010463d - } - struct Page *page = NULL; -c0104495: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - list_entry_t *le = &free_list; -c010449c: c7 45 f0 68 a9 11 c0 movl $0xc011a968,-0x10(%ebp) - while ((le = list_next(le)) != &free_list) { -c01044a3: eb 1c jmp c01044c1 - struct Page *p = le2page(le, page_link); -c01044a5: 8b 45 f0 mov -0x10(%ebp),%eax -c01044a8: 83 e8 0c sub $0xc,%eax -c01044ab: 89 45 e4 mov %eax,-0x1c(%ebp) - if (p->property >= n) { -c01044ae: 8b 45 e4 mov -0x1c(%ebp),%eax -c01044b1: 8b 40 08 mov 0x8(%eax),%eax -c01044b4: 3b 45 08 cmp 0x8(%ebp),%eax -c01044b7: 72 08 jb c01044c1 - page = p; -c01044b9: 8b 45 e4 mov -0x1c(%ebp),%eax -c01044bc: 89 45 f4 mov %eax,-0xc(%ebp) - break; -c01044bf: eb 18 jmp c01044d9 -c01044c1: 8b 45 f0 mov -0x10(%ebp),%eax -c01044c4: 89 45 c8 mov %eax,-0x38(%ebp) - * list_next - get the next entry - * @listelm: the list head - **/ -static inline list_entry_t * -list_next(list_entry_t *listelm) { - return listelm->next; -c01044c7: 8b 45 c8 mov -0x38(%ebp),%eax -c01044ca: 8b 40 04 mov 0x4(%eax),%eax - if (n > nr_free) { - return NULL; - } - struct Page *page = NULL; - list_entry_t *le = &free_list; - while ((le = list_next(le)) != &free_list) { -c01044cd: 89 45 f0 mov %eax,-0x10(%ebp) -c01044d0: 81 7d f0 68 a9 11 c0 cmpl $0xc011a968,-0x10(%ebp) -c01044d7: 75 cc jne c01044a5 - if (p->property >= n) { - page = p; - break; - } - } - if (page != NULL) { -c01044d9: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c01044dd: 0f 84 57 01 00 00 je c010463a - for (int i = 1; i < n; ++ i) { -c01044e3: c7 45 ec 01 00 00 00 movl $0x1,-0x14(%ebp) -c01044ea: eb 4e jmp c010453a - struct Page *p = page + i; -c01044ec: 8b 55 ec mov -0x14(%ebp),%edx -c01044ef: 89 d0 mov %edx,%eax -c01044f1: c1 e0 02 shl $0x2,%eax -c01044f4: 01 d0 add %edx,%eax -c01044f6: c1 e0 02 shl $0x2,%eax -c01044f9: 89 c2 mov %eax,%edx -c01044fb: 8b 45 f4 mov -0xc(%ebp),%eax -c01044fe: 01 d0 add %edx,%eax -c0104500: 89 45 e0 mov %eax,-0x20(%ebp) - // assert(!PageReserved(p)); - ClearPageProperty(p); -c0104503: 8b 45 e0 mov -0x20(%ebp),%eax -c0104506: 83 c0 04 add $0x4,%eax -c0104509: c7 45 e8 01 00 00 00 movl $0x1,-0x18(%ebp) -c0104510: 89 45 c4 mov %eax,-0x3c(%ebp) - * @nr: the bit to clear - * @addr: the address to start counting from - * */ -static inline void -clear_bit(int nr, volatile void *addr) { - asm volatile ("btrl %1, %0" :"=m" (*(volatile long *)addr) : "Ir" (nr)); -c0104513: 8b 45 c4 mov -0x3c(%ebp),%eax -c0104516: 8b 55 e8 mov -0x18(%ebp),%edx -c0104519: 0f b3 10 btr %edx,(%eax) - p->property = 0; -c010451c: 8b 45 e0 mov -0x20(%ebp),%eax -c010451f: c7 40 08 00 00 00 00 movl $0x0,0x8(%eax) - set_page_ref(p, 0); -c0104526: 83 ec 08 sub $0x8,%esp -c0104529: 6a 00 push $0x0 -c010452b: ff 75 e0 pushl -0x20(%ebp) -c010452e: e8 c0 fd ff ff call c01042f3 -c0104533: 83 c4 10 add $0x10,%esp - page = p; - break; - } - } - if (page != NULL) { - for (int i = 1; i < n; ++ i) { -c0104536: 83 45 ec 01 addl $0x1,-0x14(%ebp) -c010453a: 8b 45 ec mov -0x14(%ebp),%eax -c010453d: 3b 45 08 cmp 0x8(%ebp),%eax -c0104540: 72 aa jb c01044ec - // assert(!PageReserved(p)); - ClearPageProperty(p); - p->property = 0; - set_page_ref(p, 0); - } - if (page->property > n) { -c0104542: 8b 45 f4 mov -0xc(%ebp),%eax -c0104545: 8b 40 08 mov 0x8(%eax),%eax -c0104548: 3b 45 08 cmp 0x8(%ebp),%eax -c010454b: 0f 86 98 00 00 00 jbe c01045e9 - struct Page *p = page + n; -c0104551: 8b 55 08 mov 0x8(%ebp),%edx -c0104554: 89 d0 mov %edx,%eax -c0104556: c1 e0 02 shl $0x2,%eax -c0104559: 01 d0 add %edx,%eax -c010455b: c1 e0 02 shl $0x2,%eax -c010455e: 89 c2 mov %eax,%edx -c0104560: 8b 45 f4 mov -0xc(%ebp),%eax -c0104563: 01 d0 add %edx,%eax -c0104565: 89 45 d8 mov %eax,-0x28(%ebp) - p->property = page->property - n; -c0104568: 8b 45 f4 mov -0xc(%ebp),%eax -c010456b: 8b 40 08 mov 0x8(%eax),%eax -c010456e: 2b 45 08 sub 0x8(%ebp),%eax -c0104571: 89 c2 mov %eax,%edx -c0104573: 8b 45 d8 mov -0x28(%ebp),%eax -c0104576: 89 50 08 mov %edx,0x8(%eax) - SetPageProperty(p); -c0104579: 8b 45 d8 mov -0x28(%ebp),%eax -c010457c: 83 c0 04 add $0x4,%eax -c010457f: c7 45 d0 01 00 00 00 movl $0x1,-0x30(%ebp) -c0104586: 89 45 a8 mov %eax,-0x58(%ebp) - * Note that @nr may be almost arbitrarily large; this function is not - * restricted to acting on a single-word quantity. - * */ -static inline void -set_bit(int nr, volatile void *addr) { - asm volatile ("btsl %1, %0" :"=m" (*(volatile long *)addr) : "Ir" (nr)); -c0104589: 8b 45 a8 mov -0x58(%ebp),%eax -c010458c: 8b 55 d0 mov -0x30(%ebp),%edx -c010458f: 0f ab 10 bts %edx,(%eax) - list_add(&(page->page_link), &(p->page_link)); -c0104592: 8b 45 d8 mov -0x28(%ebp),%eax -c0104595: 83 c0 0c add $0xc,%eax -c0104598: 8b 55 f4 mov -0xc(%ebp),%edx -c010459b: 83 c2 0c add $0xc,%edx -c010459e: 89 55 dc mov %edx,-0x24(%ebp) -c01045a1: 89 45 c0 mov %eax,-0x40(%ebp) -c01045a4: 8b 45 dc mov -0x24(%ebp),%eax -c01045a7: 89 45 bc mov %eax,-0x44(%ebp) -c01045aa: 8b 45 c0 mov -0x40(%ebp),%eax -c01045ad: 89 45 b8 mov %eax,-0x48(%ebp) - * Insert the new element @elm *after* the element @listelm which - * is already in the list. - * */ -static inline void -list_add_after(list_entry_t *listelm, list_entry_t *elm) { - __list_add(elm, listelm, listelm->next); -c01045b0: 8b 45 bc mov -0x44(%ebp),%eax -c01045b3: 8b 40 04 mov 0x4(%eax),%eax -c01045b6: 8b 55 b8 mov -0x48(%ebp),%edx -c01045b9: 89 55 b4 mov %edx,-0x4c(%ebp) -c01045bc: 8b 55 bc mov -0x44(%ebp),%edx -c01045bf: 89 55 b0 mov %edx,-0x50(%ebp) -c01045c2: 89 45 ac mov %eax,-0x54(%ebp) - * This is only for internal list manipulation where we know - * the prev/next entries already! - * */ -static inline void -__list_add(list_entry_t *elm, list_entry_t *prev, list_entry_t *next) { - prev->next = next->prev = elm; -c01045c5: 8b 45 ac mov -0x54(%ebp),%eax -c01045c8: 8b 55 b4 mov -0x4c(%ebp),%edx -c01045cb: 89 10 mov %edx,(%eax) -c01045cd: 8b 45 ac mov -0x54(%ebp),%eax -c01045d0: 8b 10 mov (%eax),%edx -c01045d2: 8b 45 b0 mov -0x50(%ebp),%eax -c01045d5: 89 50 04 mov %edx,0x4(%eax) - elm->next = next; -c01045d8: 8b 45 b4 mov -0x4c(%ebp),%eax -c01045db: 8b 55 ac mov -0x54(%ebp),%edx -c01045de: 89 50 04 mov %edx,0x4(%eax) - elm->prev = prev; -c01045e1: 8b 45 b4 mov -0x4c(%ebp),%eax -c01045e4: 8b 55 b0 mov -0x50(%ebp),%edx -c01045e7: 89 10 mov %edx,(%eax) - } - list_del(&(page->page_link)); -c01045e9: 8b 45 f4 mov -0xc(%ebp),%eax -c01045ec: 83 c0 0c add $0xc,%eax -c01045ef: 89 45 cc mov %eax,-0x34(%ebp) - * Note: list_empty() on @listelm does not return true after this, the entry is - * in an undefined state. - * */ -static inline void -list_del(list_entry_t *listelm) { - __list_del(listelm->prev, listelm->next); -c01045f2: 8b 45 cc mov -0x34(%ebp),%eax -c01045f5: 8b 40 04 mov 0x4(%eax),%eax -c01045f8: 8b 55 cc mov -0x34(%ebp),%edx -c01045fb: 8b 12 mov (%edx),%edx -c01045fd: 89 55 a0 mov %edx,-0x60(%ebp) -c0104600: 89 45 9c mov %eax,-0x64(%ebp) - * This is only for internal list manipulation where we know - * the prev/next entries already! - * */ -static inline void -__list_del(list_entry_t *prev, list_entry_t *next) { - prev->next = next; -c0104603: 8b 45 a0 mov -0x60(%ebp),%eax -c0104606: 8b 55 9c mov -0x64(%ebp),%edx -c0104609: 89 50 04 mov %edx,0x4(%eax) - next->prev = prev; -c010460c: 8b 45 9c mov -0x64(%ebp),%eax -c010460f: 8b 55 a0 mov -0x60(%ebp),%edx -c0104612: 89 10 mov %edx,(%eax) - nr_free -= n; -c0104614: a1 70 a9 11 c0 mov 0xc011a970,%eax -c0104619: 2b 45 08 sub 0x8(%ebp),%eax -c010461c: a3 70 a9 11 c0 mov %eax,0xc011a970 - ClearPageProperty(page); -c0104621: 8b 45 f4 mov -0xc(%ebp),%eax -c0104624: 83 c0 04 add $0x4,%eax -c0104627: c7 45 d4 01 00 00 00 movl $0x1,-0x2c(%ebp) -c010462e: 89 45 a4 mov %eax,-0x5c(%ebp) - * @nr: the bit to clear - * @addr: the address to start counting from - * */ -static inline void -clear_bit(int nr, volatile void *addr) { - asm volatile ("btrl %1, %0" :"=m" (*(volatile long *)addr) : "Ir" (nr)); -c0104631: 8b 45 a4 mov -0x5c(%ebp),%eax -c0104634: 8b 55 d4 mov -0x2c(%ebp),%edx -c0104637: 0f b3 10 btr %edx,(%eax) - } - return page; -c010463a: 8b 45 f4 mov -0xc(%ebp),%eax -} -c010463d: c9 leave -c010463e: c3 ret - -c010463f : - -static void -default_free_pages(struct Page *base, size_t n) { -c010463f: 55 push %ebp -c0104640: 89 e5 mov %esp,%ebp -c0104642: 81 ec 98 00 00 00 sub $0x98,%esp - assert(n > 0); -c0104648: 83 7d 0c 00 cmpl $0x0,0xc(%ebp) -c010464c: 75 16 jne c0104664 -c010464e: 68 88 77 10 c0 push $0xc0107788 -c0104653: 68 8e 77 10 c0 push $0xc010778e -c0104658: 6a 7c push $0x7c -c010465a: 68 a3 77 10 c0 push $0xc01077a3 -c010465f: e8 69 bd ff ff call c01003cd <__panic> - struct Page *p = base; -c0104664: 8b 45 08 mov 0x8(%ebp),%eax -c0104667: 89 45 f4 mov %eax,-0xc(%ebp) - for (; p != base + n; p ++) { -c010466a: e9 8c 00 00 00 jmp c01046fb - assert(!PageReserved(p) && !PageProperty(p)); -c010466f: 8b 45 f4 mov -0xc(%ebp),%eax -c0104672: 83 c0 04 add $0x4,%eax -c0104675: c7 45 bc 00 00 00 00 movl $0x0,-0x44(%ebp) -c010467c: 89 45 b8 mov %eax,-0x48(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); -c010467f: 8b 45 b8 mov -0x48(%ebp),%eax -c0104682: 8b 55 bc mov -0x44(%ebp),%edx -c0104685: 0f a3 10 bt %edx,(%eax) -c0104688: 19 c0 sbb %eax,%eax -c010468a: 89 45 b4 mov %eax,-0x4c(%ebp) - return oldbit != 0; -c010468d: 83 7d b4 00 cmpl $0x0,-0x4c(%ebp) -c0104691: 0f 95 c0 setne %al -c0104694: 0f b6 c0 movzbl %al,%eax -c0104697: 85 c0 test %eax,%eax -c0104699: 75 2c jne c01046c7 -c010469b: 8b 45 f4 mov -0xc(%ebp),%eax -c010469e: 83 c0 04 add $0x4,%eax -c01046a1: c7 45 e4 01 00 00 00 movl $0x1,-0x1c(%ebp) -c01046a8: 89 45 b0 mov %eax,-0x50(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); -c01046ab: 8b 45 b0 mov -0x50(%ebp),%eax -c01046ae: 8b 55 e4 mov -0x1c(%ebp),%edx -c01046b1: 0f a3 10 bt %edx,(%eax) -c01046b4: 19 c0 sbb %eax,%eax -c01046b6: 89 45 ac mov %eax,-0x54(%ebp) - return oldbit != 0; -c01046b9: 83 7d ac 00 cmpl $0x0,-0x54(%ebp) -c01046bd: 0f 95 c0 setne %al -c01046c0: 0f b6 c0 movzbl %al,%eax -c01046c3: 85 c0 test %eax,%eax -c01046c5: 74 16 je c01046dd -c01046c7: 68 cc 77 10 c0 push $0xc01077cc -c01046cc: 68 8e 77 10 c0 push $0xc010778e -c01046d1: 6a 7f push $0x7f -c01046d3: 68 a3 77 10 c0 push $0xc01077a3 -c01046d8: e8 f0 bc ff ff call c01003cd <__panic> - p->flags = 0; -c01046dd: 8b 45 f4 mov -0xc(%ebp),%eax -c01046e0: c7 40 04 00 00 00 00 movl $0x0,0x4(%eax) - set_page_ref(p, 0); -c01046e7: 83 ec 08 sub $0x8,%esp -c01046ea: 6a 00 push $0x0 -c01046ec: ff 75 f4 pushl -0xc(%ebp) -c01046ef: e8 ff fb ff ff call c01042f3 -c01046f4: 83 c4 10 add $0x10,%esp - -static void -default_free_pages(struct Page *base, size_t n) { - assert(n > 0); - struct Page *p = base; - for (; p != base + n; p ++) { -c01046f7: 83 45 f4 14 addl $0x14,-0xc(%ebp) -c01046fb: 8b 55 0c mov 0xc(%ebp),%edx -c01046fe: 89 d0 mov %edx,%eax -c0104700: c1 e0 02 shl $0x2,%eax -c0104703: 01 d0 add %edx,%eax -c0104705: c1 e0 02 shl $0x2,%eax -c0104708: 89 c2 mov %eax,%edx -c010470a: 8b 45 08 mov 0x8(%ebp),%eax -c010470d: 01 d0 add %edx,%eax -c010470f: 3b 45 f4 cmp -0xc(%ebp),%eax -c0104712: 0f 85 57 ff ff ff jne c010466f - assert(!PageReserved(p) && !PageProperty(p)); - p->flags = 0; - set_page_ref(p, 0); - } - base->property = n; -c0104718: 8b 45 08 mov 0x8(%ebp),%eax -c010471b: 8b 55 0c mov 0xc(%ebp),%edx -c010471e: 89 50 08 mov %edx,0x8(%eax) - SetPageProperty(base); -c0104721: 8b 45 08 mov 0x8(%ebp),%eax -c0104724: 83 c0 04 add $0x4,%eax -c0104727: c7 45 d8 01 00 00 00 movl $0x1,-0x28(%ebp) -c010472e: 89 45 a8 mov %eax,-0x58(%ebp) - * Note that @nr may be almost arbitrarily large; this function is not - * restricted to acting on a single-word quantity. - * */ -static inline void -set_bit(int nr, volatile void *addr) { - asm volatile ("btsl %1, %0" :"=m" (*(volatile long *)addr) : "Ir" (nr)); -c0104731: 8b 45 a8 mov -0x58(%ebp),%eax -c0104734: 8b 55 d8 mov -0x28(%ebp),%edx -c0104737: 0f ab 10 bts %edx,(%eax) -c010473a: c7 45 e0 68 a9 11 c0 movl $0xc011a968,-0x20(%ebp) - * list_next - get the next entry - * @listelm: the list head - **/ -static inline list_entry_t * -list_next(list_entry_t *listelm) { - return listelm->next; -c0104741: 8b 45 e0 mov -0x20(%ebp),%eax -c0104744: 8b 40 04 mov 0x4(%eax),%eax - list_entry_t *le = list_next(&free_list); -c0104747: 89 45 f0 mov %eax,-0x10(%ebp) - struct Page *merge_previous = NULL; -c010474a: c7 45 ec 00 00 00 00 movl $0x0,-0x14(%ebp) - struct Page *merge_next = NULL; -c0104751: c7 45 e8 00 00 00 00 movl $0x0,-0x18(%ebp) - while (le != &free_list) { -c0104758: eb 66 jmp c01047c0 - p = le2page(le, page_link); -c010475a: 8b 45 f0 mov -0x10(%ebp),%eax -c010475d: 83 e8 0c sub $0xc,%eax -c0104760: 89 45 f4 mov %eax,-0xc(%ebp) -c0104763: 8b 45 f0 mov -0x10(%ebp),%eax -c0104766: 89 45 dc mov %eax,-0x24(%ebp) -c0104769: 8b 45 dc mov -0x24(%ebp),%eax -c010476c: 8b 40 04 mov 0x4(%eax),%eax - le = list_next(le); -c010476f: 89 45 f0 mov %eax,-0x10(%ebp) - if (base + base->property == p) { -c0104772: 8b 45 08 mov 0x8(%ebp),%eax -c0104775: 8b 50 08 mov 0x8(%eax),%edx -c0104778: 89 d0 mov %edx,%eax -c010477a: c1 e0 02 shl $0x2,%eax -c010477d: 01 d0 add %edx,%eax -c010477f: c1 e0 02 shl $0x2,%eax -c0104782: 89 c2 mov %eax,%edx -c0104784: 8b 45 08 mov 0x8(%ebp),%eax -c0104787: 01 d0 add %edx,%eax -c0104789: 3b 45 f4 cmp -0xc(%ebp),%eax -c010478c: 75 08 jne c0104796 - merge_next = p; -c010478e: 8b 45 f4 mov -0xc(%ebp),%eax -c0104791: 89 45 e8 mov %eax,-0x18(%ebp) - break; -c0104794: eb 36 jmp c01047cc - } - else if (p + p->property == base) { -c0104796: 8b 45 f4 mov -0xc(%ebp),%eax -c0104799: 8b 50 08 mov 0x8(%eax),%edx -c010479c: 89 d0 mov %edx,%eax -c010479e: c1 e0 02 shl $0x2,%eax -c01047a1: 01 d0 add %edx,%eax -c01047a3: c1 e0 02 shl $0x2,%eax -c01047a6: 89 c2 mov %eax,%edx -c01047a8: 8b 45 f4 mov -0xc(%ebp),%eax -c01047ab: 01 d0 add %edx,%eax -c01047ad: 3b 45 08 cmp 0x8(%ebp),%eax -c01047b0: 75 06 jne c01047b8 - merge_previous = p; -c01047b2: 8b 45 f4 mov -0xc(%ebp),%eax -c01047b5: 89 45 ec mov %eax,-0x14(%ebp) - } - if (p > base) break; -c01047b8: 8b 45 f4 mov -0xc(%ebp),%eax -c01047bb: 3b 45 08 cmp 0x8(%ebp),%eax -c01047be: 77 0b ja c01047cb - base->property = n; - SetPageProperty(base); - list_entry_t *le = list_next(&free_list); - struct Page *merge_previous = NULL; - struct Page *merge_next = NULL; - while (le != &free_list) { -c01047c0: 81 7d f0 68 a9 11 c0 cmpl $0xc011a968,-0x10(%ebp) -c01047c7: 75 91 jne c010475a -c01047c9: eb 01 jmp c01047cc - break; - } - else if (p + p->property == base) { - merge_previous = p; - } - if (p > base) break; -c01047cb: 90 nop - } - nr_free += n; -c01047cc: 8b 15 70 a9 11 c0 mov 0xc011a970,%edx -c01047d2: 8b 45 0c mov 0xc(%ebp),%eax -c01047d5: 01 d0 add %edx,%eax -c01047d7: a3 70 a9 11 c0 mov %eax,0xc011a970 - // Try to merge base with merge_previous and merge_next. - if (merge_previous != NULL) { -c01047dc: 83 7d ec 00 cmpl $0x0,-0x14(%ebp) -c01047e0: 74 33 je c0104815 - merge_previous->property += base->property; -c01047e2: 8b 45 ec mov -0x14(%ebp),%eax -c01047e5: 8b 50 08 mov 0x8(%eax),%edx -c01047e8: 8b 45 08 mov 0x8(%ebp),%eax -c01047eb: 8b 40 08 mov 0x8(%eax),%eax -c01047ee: 01 c2 add %eax,%edx -c01047f0: 8b 45 ec mov -0x14(%ebp),%eax -c01047f3: 89 50 08 mov %edx,0x8(%eax) - ClearPageProperty(base); -c01047f6: 8b 45 08 mov 0x8(%ebp),%eax -c01047f9: 83 c0 04 add $0x4,%eax -c01047fc: c7 45 d4 01 00 00 00 movl $0x1,-0x2c(%ebp) -c0104803: 89 45 a4 mov %eax,-0x5c(%ebp) - * @nr: the bit to clear - * @addr: the address to start counting from - * */ -static inline void -clear_bit(int nr, volatile void *addr) { - asm volatile ("btrl %1, %0" :"=m" (*(volatile long *)addr) : "Ir" (nr)); -c0104806: 8b 45 a4 mov -0x5c(%ebp),%eax -c0104809: 8b 55 d4 mov -0x2c(%ebp),%edx -c010480c: 0f b3 10 btr %edx,(%eax) - base = merge_previous; -c010480f: 8b 45 ec mov -0x14(%ebp),%eax -c0104812: 89 45 08 mov %eax,0x8(%ebp) - } - if (merge_next != NULL) { -c0104815: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) -c0104819: 0f 84 a8 00 00 00 je c01048c7 - base->property += merge_next->property; -c010481f: 8b 45 08 mov 0x8(%ebp),%eax -c0104822: 8b 50 08 mov 0x8(%eax),%edx -c0104825: 8b 45 e8 mov -0x18(%ebp),%eax -c0104828: 8b 40 08 mov 0x8(%eax),%eax -c010482b: 01 c2 add %eax,%edx -c010482d: 8b 45 08 mov 0x8(%ebp),%eax -c0104830: 89 50 08 mov %edx,0x8(%eax) - ClearPageProperty(merge_next); -c0104833: 8b 45 e8 mov -0x18(%ebp),%eax -c0104836: 83 c0 04 add $0x4,%eax -c0104839: c7 45 d0 01 00 00 00 movl $0x1,-0x30(%ebp) -c0104840: 89 45 a0 mov %eax,-0x60(%ebp) -c0104843: 8b 45 a0 mov -0x60(%ebp),%eax -c0104846: 8b 55 d0 mov -0x30(%ebp),%edx -c0104849: 0f b3 10 btr %edx,(%eax) - if (merge_previous == NULL) { -c010484c: 83 7d ec 00 cmpl $0x0,-0x14(%ebp) -c0104850: 75 4a jne c010489c - list_add_before(&(merge_next->page_link), &(base->page_link)); -c0104852: 8b 45 08 mov 0x8(%ebp),%eax -c0104855: 83 c0 0c add $0xc,%eax -c0104858: 8b 55 e8 mov -0x18(%ebp),%edx -c010485b: 83 c2 0c add $0xc,%edx -c010485e: 89 55 cc mov %edx,-0x34(%ebp) -c0104861: 89 45 9c mov %eax,-0x64(%ebp) - * Insert the new element @elm *before* the element @listelm which - * is already in the list. - * */ -static inline void -list_add_before(list_entry_t *listelm, list_entry_t *elm) { - __list_add(elm, listelm->prev, listelm); -c0104864: 8b 45 cc mov -0x34(%ebp),%eax -c0104867: 8b 00 mov (%eax),%eax -c0104869: 8b 55 9c mov -0x64(%ebp),%edx -c010486c: 89 55 98 mov %edx,-0x68(%ebp) -c010486f: 89 45 94 mov %eax,-0x6c(%ebp) -c0104872: 8b 45 cc mov -0x34(%ebp),%eax -c0104875: 89 45 90 mov %eax,-0x70(%ebp) - * This is only for internal list manipulation where we know - * the prev/next entries already! - * */ -static inline void -__list_add(list_entry_t *elm, list_entry_t *prev, list_entry_t *next) { - prev->next = next->prev = elm; -c0104878: 8b 45 90 mov -0x70(%ebp),%eax -c010487b: 8b 55 98 mov -0x68(%ebp),%edx -c010487e: 89 10 mov %edx,(%eax) -c0104880: 8b 45 90 mov -0x70(%ebp),%eax -c0104883: 8b 10 mov (%eax),%edx -c0104885: 8b 45 94 mov -0x6c(%ebp),%eax -c0104888: 89 50 04 mov %edx,0x4(%eax) - elm->next = next; -c010488b: 8b 45 98 mov -0x68(%ebp),%eax -c010488e: 8b 55 90 mov -0x70(%ebp),%edx -c0104891: 89 50 04 mov %edx,0x4(%eax) - elm->prev = prev; -c0104894: 8b 45 98 mov -0x68(%ebp),%eax -c0104897: 8b 55 94 mov -0x6c(%ebp),%edx -c010489a: 89 10 mov %edx,(%eax) - } - - list_del(&(merge_next->page_link)); -c010489c: 8b 45 e8 mov -0x18(%ebp),%eax -c010489f: 83 c0 0c add $0xc,%eax -c01048a2: 89 45 c8 mov %eax,-0x38(%ebp) - * Note: list_empty() on @listelm does not return true after this, the entry is - * in an undefined state. - * */ -static inline void -list_del(list_entry_t *listelm) { - __list_del(listelm->prev, listelm->next); -c01048a5: 8b 45 c8 mov -0x38(%ebp),%eax -c01048a8: 8b 40 04 mov 0x4(%eax),%eax -c01048ab: 8b 55 c8 mov -0x38(%ebp),%edx -c01048ae: 8b 12 mov (%edx),%edx -c01048b0: 89 55 8c mov %edx,-0x74(%ebp) -c01048b3: 89 45 88 mov %eax,-0x78(%ebp) - * This is only for internal list manipulation where we know - * the prev/next entries already! - * */ -static inline void -__list_del(list_entry_t *prev, list_entry_t *next) { - prev->next = next; -c01048b6: 8b 45 8c mov -0x74(%ebp),%eax -c01048b9: 8b 55 88 mov -0x78(%ebp),%edx -c01048bc: 89 50 04 mov %edx,0x4(%eax) - next->prev = prev; -c01048bf: 8b 45 88 mov -0x78(%ebp),%eax -c01048c2: 8b 55 8c mov -0x74(%ebp),%edx -c01048c5: 89 10 mov %edx,(%eax) - } - if (merge_next == NULL && merge_previous == NULL) { -c01048c7: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) -c01048cb: 0f 85 fc 00 00 00 jne c01049cd -c01048d1: 83 7d ec 00 cmpl $0x0,-0x14(%ebp) -c01048d5: 0f 85 f2 00 00 00 jne c01049cd - if (p > base && p != (base + n)) { -c01048db: 8b 45 f4 mov -0xc(%ebp),%eax -c01048de: 3b 45 08 cmp 0x8(%ebp),%eax -c01048e1: 76 7b jbe c010495e -c01048e3: 8b 55 0c mov 0xc(%ebp),%edx -c01048e6: 89 d0 mov %edx,%eax -c01048e8: c1 e0 02 shl $0x2,%eax -c01048eb: 01 d0 add %edx,%eax -c01048ed: c1 e0 02 shl $0x2,%eax -c01048f0: 89 c2 mov %eax,%edx -c01048f2: 8b 45 08 mov 0x8(%ebp),%eax -c01048f5: 01 d0 add %edx,%eax -c01048f7: 3b 45 f4 cmp -0xc(%ebp),%eax -c01048fa: 74 62 je c010495e - list_add_before(&(p->page_link), &(base->page_link)); -c01048fc: 8b 45 08 mov 0x8(%ebp),%eax -c01048ff: 83 c0 0c add $0xc,%eax -c0104902: 8b 55 f4 mov -0xc(%ebp),%edx -c0104905: 83 c2 0c add $0xc,%edx -c0104908: 89 55 c4 mov %edx,-0x3c(%ebp) -c010490b: 89 45 84 mov %eax,-0x7c(%ebp) - * Insert the new element @elm *before* the element @listelm which - * is already in the list. - * */ -static inline void -list_add_before(list_entry_t *listelm, list_entry_t *elm) { - __list_add(elm, listelm->prev, listelm); -c010490e: 8b 45 c4 mov -0x3c(%ebp),%eax -c0104911: 8b 00 mov (%eax),%eax -c0104913: 8b 55 84 mov -0x7c(%ebp),%edx -c0104916: 89 55 80 mov %edx,-0x80(%ebp) -c0104919: 89 85 7c ff ff ff mov %eax,-0x84(%ebp) -c010491f: 8b 45 c4 mov -0x3c(%ebp),%eax -c0104922: 89 85 78 ff ff ff mov %eax,-0x88(%ebp) - * This is only for internal list manipulation where we know - * the prev/next entries already! - * */ -static inline void -__list_add(list_entry_t *elm, list_entry_t *prev, list_entry_t *next) { - prev->next = next->prev = elm; -c0104928: 8b 85 78 ff ff ff mov -0x88(%ebp),%eax -c010492e: 8b 55 80 mov -0x80(%ebp),%edx -c0104931: 89 10 mov %edx,(%eax) -c0104933: 8b 85 78 ff ff ff mov -0x88(%ebp),%eax -c0104939: 8b 10 mov (%eax),%edx -c010493b: 8b 85 7c ff ff ff mov -0x84(%ebp),%eax -c0104941: 89 50 04 mov %edx,0x4(%eax) - elm->next = next; -c0104944: 8b 45 80 mov -0x80(%ebp),%eax -c0104947: 8b 95 78 ff ff ff mov -0x88(%ebp),%edx -c010494d: 89 50 04 mov %edx,0x4(%eax) - elm->prev = prev; -c0104950: 8b 45 80 mov -0x80(%ebp),%eax -c0104953: 8b 95 7c ff ff ff mov -0x84(%ebp),%edx -c0104959: 89 10 mov %edx,(%eax) -c010495b: 90 nop - } else { - list_add_before(&free_list, &(base->page_link)); - } - } -} -c010495c: eb 6f jmp c01049cd - } - if (merge_next == NULL && merge_previous == NULL) { - if (p > base && p != (base + n)) { - list_add_before(&(p->page_link), &(base->page_link)); - } else { - list_add_before(&free_list, &(base->page_link)); -c010495e: 8b 45 08 mov 0x8(%ebp),%eax -c0104961: 83 c0 0c add $0xc,%eax -c0104964: c7 45 c0 68 a9 11 c0 movl $0xc011a968,-0x40(%ebp) -c010496b: 89 85 74 ff ff ff mov %eax,-0x8c(%ebp) - * Insert the new element @elm *before* the element @listelm which - * is already in the list. - * */ -static inline void -list_add_before(list_entry_t *listelm, list_entry_t *elm) { - __list_add(elm, listelm->prev, listelm); -c0104971: 8b 45 c0 mov -0x40(%ebp),%eax -c0104974: 8b 00 mov (%eax),%eax -c0104976: 8b 95 74 ff ff ff mov -0x8c(%ebp),%edx -c010497c: 89 95 70 ff ff ff mov %edx,-0x90(%ebp) -c0104982: 89 85 6c ff ff ff mov %eax,-0x94(%ebp) -c0104988: 8b 45 c0 mov -0x40(%ebp),%eax -c010498b: 89 85 68 ff ff ff mov %eax,-0x98(%ebp) - * This is only for internal list manipulation where we know - * the prev/next entries already! - * */ -static inline void -__list_add(list_entry_t *elm, list_entry_t *prev, list_entry_t *next) { - prev->next = next->prev = elm; -c0104991: 8b 85 68 ff ff ff mov -0x98(%ebp),%eax -c0104997: 8b 95 70 ff ff ff mov -0x90(%ebp),%edx -c010499d: 89 10 mov %edx,(%eax) -c010499f: 8b 85 68 ff ff ff mov -0x98(%ebp),%eax -c01049a5: 8b 10 mov (%eax),%edx -c01049a7: 8b 85 6c ff ff ff mov -0x94(%ebp),%eax -c01049ad: 89 50 04 mov %edx,0x4(%eax) - elm->next = next; -c01049b0: 8b 85 70 ff ff ff mov -0x90(%ebp),%eax -c01049b6: 8b 95 68 ff ff ff mov -0x98(%ebp),%edx -c01049bc: 89 50 04 mov %edx,0x4(%eax) - elm->prev = prev; -c01049bf: 8b 85 70 ff ff ff mov -0x90(%ebp),%eax -c01049c5: 8b 95 6c ff ff ff mov -0x94(%ebp),%edx -c01049cb: 89 10 mov %edx,(%eax) - } - } -} -c01049cd: 90 nop -c01049ce: c9 leave -c01049cf: c3 ret - -c01049d0 : - -static size_t -default_nr_free_pages(void) { -c01049d0: 55 push %ebp -c01049d1: 89 e5 mov %esp,%ebp - return nr_free; -c01049d3: a1 70 a9 11 c0 mov 0xc011a970,%eax -} -c01049d8: 5d pop %ebp -c01049d9: c3 ret - -c01049da : - cprintf("+ 1 = %x, 1.next = %x, prev = %x\n", &(p2->page_link), p2->page_link.next, p2->page_link.prev); - cprintf("+ 2 = %x, 2.next = %x, prev = %x\n", &(p3->page_link), p3->page_link.next, p3->page_link.prev); -} -*/ -static void -basic_check(void) { -c01049da: 55 push %ebp -c01049db: 89 e5 mov %esp,%ebp -c01049dd: 83 ec 38 sub $0x38,%esp - struct Page *p0, *p1, *p2; - p0 = p1 = p2 = NULL; -c01049e0: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) -c01049e7: 8b 45 f4 mov -0xc(%ebp),%eax -c01049ea: 89 45 f0 mov %eax,-0x10(%ebp) -c01049ed: 8b 45 f0 mov -0x10(%ebp),%eax -c01049f0: 89 45 ec mov %eax,-0x14(%ebp) - assert((p0 = alloc_page()) != NULL); -c01049f3: 83 ec 0c sub $0xc,%esp -c01049f6: 6a 01 push $0x1 -c01049f8: e8 72 e3 ff ff call c0102d6f -c01049fd: 83 c4 10 add $0x10,%esp -c0104a00: 89 45 ec mov %eax,-0x14(%ebp) -c0104a03: 83 7d ec 00 cmpl $0x0,-0x14(%ebp) -c0104a07: 75 19 jne c0104a22 -c0104a09: 68 f1 77 10 c0 push $0xc01077f1 -c0104a0e: 68 8e 77 10 c0 push $0xc010778e -c0104a13: 68 be 00 00 00 push $0xbe -c0104a18: 68 a3 77 10 c0 push $0xc01077a3 -c0104a1d: e8 ab b9 ff ff call c01003cd <__panic> - assert((p1 = alloc_page()) != NULL); -c0104a22: 83 ec 0c sub $0xc,%esp -c0104a25: 6a 01 push $0x1 -c0104a27: e8 43 e3 ff ff call c0102d6f -c0104a2c: 83 c4 10 add $0x10,%esp -c0104a2f: 89 45 f0 mov %eax,-0x10(%ebp) -c0104a32: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) -c0104a36: 75 19 jne c0104a51 -c0104a38: 68 0d 78 10 c0 push $0xc010780d -c0104a3d: 68 8e 77 10 c0 push $0xc010778e -c0104a42: 68 bf 00 00 00 push $0xbf -c0104a47: 68 a3 77 10 c0 push $0xc01077a3 -c0104a4c: e8 7c b9 ff ff call c01003cd <__panic> - assert((p2 = alloc_page()) != NULL); -c0104a51: 83 ec 0c sub $0xc,%esp -c0104a54: 6a 01 push $0x1 -c0104a56: e8 14 e3 ff ff call c0102d6f -c0104a5b: 83 c4 10 add $0x10,%esp -c0104a5e: 89 45 f4 mov %eax,-0xc(%ebp) -c0104a61: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c0104a65: 75 19 jne c0104a80 -c0104a67: 68 29 78 10 c0 push $0xc0107829 -c0104a6c: 68 8e 77 10 c0 push $0xc010778e -c0104a71: 68 c0 00 00 00 push $0xc0 -c0104a76: 68 a3 77 10 c0 push $0xc01077a3 -c0104a7b: e8 4d b9 ff ff call c01003cd <__panic> - - assert(p0 != p1 && p0 != p2 && p1 != p2); -c0104a80: 8b 45 ec mov -0x14(%ebp),%eax -c0104a83: 3b 45 f0 cmp -0x10(%ebp),%eax -c0104a86: 74 10 je c0104a98 -c0104a88: 8b 45 ec mov -0x14(%ebp),%eax -c0104a8b: 3b 45 f4 cmp -0xc(%ebp),%eax -c0104a8e: 74 08 je c0104a98 -c0104a90: 8b 45 f0 mov -0x10(%ebp),%eax -c0104a93: 3b 45 f4 cmp -0xc(%ebp),%eax -c0104a96: 75 19 jne c0104ab1 -c0104a98: 68 48 78 10 c0 push $0xc0107848 -c0104a9d: 68 8e 77 10 c0 push $0xc010778e -c0104aa2: 68 c2 00 00 00 push $0xc2 -c0104aa7: 68 a3 77 10 c0 push $0xc01077a3 -c0104aac: e8 1c b9 ff ff call c01003cd <__panic> - assert(page_ref(p0) == 0 && page_ref(p1) == 0 && page_ref(p2) == 0); -c0104ab1: 83 ec 0c sub $0xc,%esp -c0104ab4: ff 75 ec pushl -0x14(%ebp) -c0104ab7: e8 2d f8 ff ff call c01042e9 -c0104abc: 83 c4 10 add $0x10,%esp -c0104abf: 85 c0 test %eax,%eax -c0104ac1: 75 24 jne c0104ae7 -c0104ac3: 83 ec 0c sub $0xc,%esp -c0104ac6: ff 75 f0 pushl -0x10(%ebp) -c0104ac9: e8 1b f8 ff ff call c01042e9 -c0104ace: 83 c4 10 add $0x10,%esp -c0104ad1: 85 c0 test %eax,%eax -c0104ad3: 75 12 jne c0104ae7 -c0104ad5: 83 ec 0c sub $0xc,%esp -c0104ad8: ff 75 f4 pushl -0xc(%ebp) -c0104adb: e8 09 f8 ff ff call c01042e9 -c0104ae0: 83 c4 10 add $0x10,%esp -c0104ae3: 85 c0 test %eax,%eax -c0104ae5: 74 19 je c0104b00 -c0104ae7: 68 6c 78 10 c0 push $0xc010786c -c0104aec: 68 8e 77 10 c0 push $0xc010778e -c0104af1: 68 c3 00 00 00 push $0xc3 -c0104af6: 68 a3 77 10 c0 push $0xc01077a3 -c0104afb: e8 cd b8 ff ff call c01003cd <__panic> - - assert(page2pa(p0) < npage * PGSIZE); -c0104b00: 83 ec 0c sub $0xc,%esp -c0104b03: ff 75 ec pushl -0x14(%ebp) -c0104b06: e8 cb f7 ff ff call c01042d6 -c0104b0b: 83 c4 10 add $0x10,%esp -c0104b0e: 89 c2 mov %eax,%edx -c0104b10: a1 c0 a8 11 c0 mov 0xc011a8c0,%eax -c0104b15: c1 e0 0c shl $0xc,%eax -c0104b18: 39 c2 cmp %eax,%edx -c0104b1a: 72 19 jb c0104b35 -c0104b1c: 68 a8 78 10 c0 push $0xc01078a8 -c0104b21: 68 8e 77 10 c0 push $0xc010778e -c0104b26: 68 c5 00 00 00 push $0xc5 -c0104b2b: 68 a3 77 10 c0 push $0xc01077a3 -c0104b30: e8 98 b8 ff ff call c01003cd <__panic> - assert(page2pa(p1) < npage * PGSIZE); -c0104b35: 83 ec 0c sub $0xc,%esp -c0104b38: ff 75 f0 pushl -0x10(%ebp) -c0104b3b: e8 96 f7 ff ff call c01042d6 -c0104b40: 83 c4 10 add $0x10,%esp -c0104b43: 89 c2 mov %eax,%edx -c0104b45: a1 c0 a8 11 c0 mov 0xc011a8c0,%eax -c0104b4a: c1 e0 0c shl $0xc,%eax -c0104b4d: 39 c2 cmp %eax,%edx -c0104b4f: 72 19 jb c0104b6a -c0104b51: 68 c5 78 10 c0 push $0xc01078c5 -c0104b56: 68 8e 77 10 c0 push $0xc010778e -c0104b5b: 68 c6 00 00 00 push $0xc6 -c0104b60: 68 a3 77 10 c0 push $0xc01077a3 -c0104b65: e8 63 b8 ff ff call c01003cd <__panic> - assert(page2pa(p2) < npage * PGSIZE); -c0104b6a: 83 ec 0c sub $0xc,%esp -c0104b6d: ff 75 f4 pushl -0xc(%ebp) -c0104b70: e8 61 f7 ff ff call c01042d6 -c0104b75: 83 c4 10 add $0x10,%esp -c0104b78: 89 c2 mov %eax,%edx -c0104b7a: a1 c0 a8 11 c0 mov 0xc011a8c0,%eax -c0104b7f: c1 e0 0c shl $0xc,%eax -c0104b82: 39 c2 cmp %eax,%edx -c0104b84: 72 19 jb c0104b9f -c0104b86: 68 e2 78 10 c0 push $0xc01078e2 -c0104b8b: 68 8e 77 10 c0 push $0xc010778e -c0104b90: 68 c7 00 00 00 push $0xc7 -c0104b95: 68 a3 77 10 c0 push $0xc01077a3 -c0104b9a: e8 2e b8 ff ff call c01003cd <__panic> - - list_entry_t free_list_store = free_list; -c0104b9f: a1 68 a9 11 c0 mov 0xc011a968,%eax -c0104ba4: 8b 15 6c a9 11 c0 mov 0xc011a96c,%edx -c0104baa: 89 45 d0 mov %eax,-0x30(%ebp) -c0104bad: 89 55 d4 mov %edx,-0x2c(%ebp) -c0104bb0: c7 45 e4 68 a9 11 c0 movl $0xc011a968,-0x1c(%ebp) - * list_init - initialize a new entry - * @elm: new entry to be initialized - * */ -static inline void -list_init(list_entry_t *elm) { - elm->prev = elm->next = elm; -c0104bb7: 8b 45 e4 mov -0x1c(%ebp),%eax -c0104bba: 8b 55 e4 mov -0x1c(%ebp),%edx -c0104bbd: 89 50 04 mov %edx,0x4(%eax) -c0104bc0: 8b 45 e4 mov -0x1c(%ebp),%eax -c0104bc3: 8b 50 04 mov 0x4(%eax),%edx -c0104bc6: 8b 45 e4 mov -0x1c(%ebp),%eax -c0104bc9: 89 10 mov %edx,(%eax) -c0104bcb: c7 45 d8 68 a9 11 c0 movl $0xc011a968,-0x28(%ebp) - * list_empty - tests whether a list is empty - * @list: the list to test. - * */ -static inline bool -list_empty(list_entry_t *list) { - return list->next == list; -c0104bd2: 8b 45 d8 mov -0x28(%ebp),%eax -c0104bd5: 8b 40 04 mov 0x4(%eax),%eax -c0104bd8: 39 45 d8 cmp %eax,-0x28(%ebp) -c0104bdb: 0f 94 c0 sete %al -c0104bde: 0f b6 c0 movzbl %al,%eax - list_init(&free_list); - assert(list_empty(&free_list)); -c0104be1: 85 c0 test %eax,%eax -c0104be3: 75 19 jne c0104bfe -c0104be5: 68 ff 78 10 c0 push $0xc01078ff -c0104bea: 68 8e 77 10 c0 push $0xc010778e -c0104bef: 68 cb 00 00 00 push $0xcb -c0104bf4: 68 a3 77 10 c0 push $0xc01077a3 -c0104bf9: e8 cf b7 ff ff call c01003cd <__panic> - - unsigned int nr_free_store = nr_free; -c0104bfe: a1 70 a9 11 c0 mov 0xc011a970,%eax -c0104c03: 89 45 e0 mov %eax,-0x20(%ebp) - nr_free = 0; -c0104c06: c7 05 70 a9 11 c0 00 movl $0x0,0xc011a970 -c0104c0d: 00 00 00 - - assert(alloc_page() == NULL); -c0104c10: 83 ec 0c sub $0xc,%esp -c0104c13: 6a 01 push $0x1 -c0104c15: e8 55 e1 ff ff call c0102d6f -c0104c1a: 83 c4 10 add $0x10,%esp -c0104c1d: 85 c0 test %eax,%eax -c0104c1f: 74 19 je c0104c3a -c0104c21: 68 16 79 10 c0 push $0xc0107916 -c0104c26: 68 8e 77 10 c0 push $0xc010778e -c0104c2b: 68 d0 00 00 00 push $0xd0 -c0104c30: 68 a3 77 10 c0 push $0xc01077a3 -c0104c35: e8 93 b7 ff ff call c01003cd <__panic> - free_page(p0); -c0104c3a: 83 ec 08 sub $0x8,%esp -c0104c3d: 6a 01 push $0x1 -c0104c3f: ff 75 ec pushl -0x14(%ebp) -c0104c42: e8 66 e1 ff ff call c0102dad -c0104c47: 83 c4 10 add $0x10,%esp - free_page(p1); -c0104c4a: 83 ec 08 sub $0x8,%esp -c0104c4d: 6a 01 push $0x1 -c0104c4f: ff 75 f0 pushl -0x10(%ebp) -c0104c52: e8 56 e1 ff ff call c0102dad -c0104c57: 83 c4 10 add $0x10,%esp - free_page(p2); -c0104c5a: 83 ec 08 sub $0x8,%esp -c0104c5d: 6a 01 push $0x1 -c0104c5f: ff 75 f4 pushl -0xc(%ebp) -c0104c62: e8 46 e1 ff ff call c0102dad -c0104c67: 83 c4 10 add $0x10,%esp - assert(nr_free == 3); -c0104c6a: a1 70 a9 11 c0 mov 0xc011a970,%eax -c0104c6f: 83 f8 03 cmp $0x3,%eax -c0104c72: 74 19 je c0104c8d -c0104c74: 68 2b 79 10 c0 push $0xc010792b -c0104c79: 68 8e 77 10 c0 push $0xc010778e -c0104c7e: 68 d4 00 00 00 push $0xd4 -c0104c83: 68 a3 77 10 c0 push $0xc01077a3 -c0104c88: e8 40 b7 ff ff call c01003cd <__panic> - assert((p0 = alloc_page()) != NULL); -c0104c8d: 83 ec 0c sub $0xc,%esp -c0104c90: 6a 01 push $0x1 -c0104c92: e8 d8 e0 ff ff call c0102d6f -c0104c97: 83 c4 10 add $0x10,%esp -c0104c9a: 89 45 ec mov %eax,-0x14(%ebp) -c0104c9d: 83 7d ec 00 cmpl $0x0,-0x14(%ebp) -c0104ca1: 75 19 jne c0104cbc -c0104ca3: 68 f1 77 10 c0 push $0xc01077f1 -c0104ca8: 68 8e 77 10 c0 push $0xc010778e -c0104cad: 68 d5 00 00 00 push $0xd5 -c0104cb2: 68 a3 77 10 c0 push $0xc01077a3 -c0104cb7: e8 11 b7 ff ff call c01003cd <__panic> - assert((p1 = alloc_page()) != NULL); -c0104cbc: 83 ec 0c sub $0xc,%esp -c0104cbf: 6a 01 push $0x1 -c0104cc1: e8 a9 e0 ff ff call c0102d6f -c0104cc6: 83 c4 10 add $0x10,%esp -c0104cc9: 89 45 f0 mov %eax,-0x10(%ebp) -c0104ccc: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) -c0104cd0: 75 19 jne c0104ceb -c0104cd2: 68 0d 78 10 c0 push $0xc010780d -c0104cd7: 68 8e 77 10 c0 push $0xc010778e -c0104cdc: 68 d6 00 00 00 push $0xd6 -c0104ce1: 68 a3 77 10 c0 push $0xc01077a3 -c0104ce6: e8 e2 b6 ff ff call c01003cd <__panic> - assert((p2 = alloc_page()) != NULL); -c0104ceb: 83 ec 0c sub $0xc,%esp -c0104cee: 6a 01 push $0x1 -c0104cf0: e8 7a e0 ff ff call c0102d6f -c0104cf5: 83 c4 10 add $0x10,%esp -c0104cf8: 89 45 f4 mov %eax,-0xc(%ebp) -c0104cfb: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c0104cff: 75 19 jne c0104d1a -c0104d01: 68 29 78 10 c0 push $0xc0107829 -c0104d06: 68 8e 77 10 c0 push $0xc010778e -c0104d0b: 68 d7 00 00 00 push $0xd7 -c0104d10: 68 a3 77 10 c0 push $0xc01077a3 -c0104d15: e8 b3 b6 ff ff call c01003cd <__panic> - - assert(alloc_page() == NULL); -c0104d1a: 83 ec 0c sub $0xc,%esp -c0104d1d: 6a 01 push $0x1 -c0104d1f: e8 4b e0 ff ff call c0102d6f -c0104d24: 83 c4 10 add $0x10,%esp -c0104d27: 85 c0 test %eax,%eax -c0104d29: 74 19 je c0104d44 -c0104d2b: 68 16 79 10 c0 push $0xc0107916 -c0104d30: 68 8e 77 10 c0 push $0xc010778e -c0104d35: 68 d9 00 00 00 push $0xd9 -c0104d3a: 68 a3 77 10 c0 push $0xc01077a3 -c0104d3f: e8 89 b6 ff ff call c01003cd <__panic> - - free_page(p0); -c0104d44: 83 ec 08 sub $0x8,%esp -c0104d47: 6a 01 push $0x1 -c0104d49: ff 75 ec pushl -0x14(%ebp) -c0104d4c: e8 5c e0 ff ff call c0102dad -c0104d51: 83 c4 10 add $0x10,%esp -c0104d54: c7 45 e8 68 a9 11 c0 movl $0xc011a968,-0x18(%ebp) -c0104d5b: 8b 45 e8 mov -0x18(%ebp),%eax -c0104d5e: 8b 40 04 mov 0x4(%eax),%eax -c0104d61: 39 45 e8 cmp %eax,-0x18(%ebp) -c0104d64: 0f 94 c0 sete %al -c0104d67: 0f b6 c0 movzbl %al,%eax - assert(!list_empty(&free_list)); -c0104d6a: 85 c0 test %eax,%eax -c0104d6c: 74 19 je c0104d87 -c0104d6e: 68 38 79 10 c0 push $0xc0107938 -c0104d73: 68 8e 77 10 c0 push $0xc010778e -c0104d78: 68 dc 00 00 00 push $0xdc -c0104d7d: 68 a3 77 10 c0 push $0xc01077a3 -c0104d82: e8 46 b6 ff ff call c01003cd <__panic> - - struct Page *p; - assert((p = alloc_page()) == p0); -c0104d87: 83 ec 0c sub $0xc,%esp -c0104d8a: 6a 01 push $0x1 -c0104d8c: e8 de df ff ff call c0102d6f -c0104d91: 83 c4 10 add $0x10,%esp -c0104d94: 89 45 dc mov %eax,-0x24(%ebp) -c0104d97: 8b 45 dc mov -0x24(%ebp),%eax -c0104d9a: 3b 45 ec cmp -0x14(%ebp),%eax -c0104d9d: 74 19 je c0104db8 -c0104d9f: 68 50 79 10 c0 push $0xc0107950 -c0104da4: 68 8e 77 10 c0 push $0xc010778e -c0104da9: 68 df 00 00 00 push $0xdf -c0104dae: 68 a3 77 10 c0 push $0xc01077a3 -c0104db3: e8 15 b6 ff ff call c01003cd <__panic> - assert(alloc_page() == NULL); -c0104db8: 83 ec 0c sub $0xc,%esp -c0104dbb: 6a 01 push $0x1 -c0104dbd: e8 ad df ff ff call c0102d6f -c0104dc2: 83 c4 10 add $0x10,%esp -c0104dc5: 85 c0 test %eax,%eax -c0104dc7: 74 19 je c0104de2 -c0104dc9: 68 16 79 10 c0 push $0xc0107916 -c0104dce: 68 8e 77 10 c0 push $0xc010778e -c0104dd3: 68 e0 00 00 00 push $0xe0 -c0104dd8: 68 a3 77 10 c0 push $0xc01077a3 -c0104ddd: e8 eb b5 ff ff call c01003cd <__panic> - - assert(nr_free == 0); -c0104de2: a1 70 a9 11 c0 mov 0xc011a970,%eax -c0104de7: 85 c0 test %eax,%eax -c0104de9: 74 19 je c0104e04 -c0104deb: 68 69 79 10 c0 push $0xc0107969 -c0104df0: 68 8e 77 10 c0 push $0xc010778e -c0104df5: 68 e2 00 00 00 push $0xe2 -c0104dfa: 68 a3 77 10 c0 push $0xc01077a3 -c0104dff: e8 c9 b5 ff ff call c01003cd <__panic> - free_list = free_list_store; -c0104e04: 8b 45 d0 mov -0x30(%ebp),%eax -c0104e07: 8b 55 d4 mov -0x2c(%ebp),%edx -c0104e0a: a3 68 a9 11 c0 mov %eax,0xc011a968 -c0104e0f: 89 15 6c a9 11 c0 mov %edx,0xc011a96c - nr_free = nr_free_store; -c0104e15: 8b 45 e0 mov -0x20(%ebp),%eax -c0104e18: a3 70 a9 11 c0 mov %eax,0xc011a970 - - free_page(p); -c0104e1d: 83 ec 08 sub $0x8,%esp -c0104e20: 6a 01 push $0x1 -c0104e22: ff 75 dc pushl -0x24(%ebp) -c0104e25: e8 83 df ff ff call c0102dad -c0104e2a: 83 c4 10 add $0x10,%esp - free_page(p1); -c0104e2d: 83 ec 08 sub $0x8,%esp -c0104e30: 6a 01 push $0x1 -c0104e32: ff 75 f0 pushl -0x10(%ebp) -c0104e35: e8 73 df ff ff call c0102dad -c0104e3a: 83 c4 10 add $0x10,%esp - free_page(p2); -c0104e3d: 83 ec 08 sub $0x8,%esp -c0104e40: 6a 01 push $0x1 -c0104e42: ff 75 f4 pushl -0xc(%ebp) -c0104e45: e8 63 df ff ff call c0102dad -c0104e4a: 83 c4 10 add $0x10,%esp -} -c0104e4d: 90 nop -c0104e4e: c9 leave -c0104e4f: c3 ret - -c0104e50 : - -// LAB2: below code is used to check the first fit allocation algorithm (your EXERCISE 1) -// NOTICE: You SHOULD NOT CHANGE basic_check, default_check functions! -static void -default_check(void) { -c0104e50: 55 push %ebp -c0104e51: 89 e5 mov %esp,%ebp -c0104e53: 81 ec 88 00 00 00 sub $0x88,%esp - int count = 0, total = 0; -c0104e59: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) -c0104e60: c7 45 f0 00 00 00 00 movl $0x0,-0x10(%ebp) - list_entry_t *le = &free_list; -c0104e67: c7 45 ec 68 a9 11 c0 movl $0xc011a968,-0x14(%ebp) - while ((le = list_next(le)) != &free_list) { -c0104e6e: eb 60 jmp c0104ed0 - struct Page *p = le2page(le, page_link); -c0104e70: 8b 45 ec mov -0x14(%ebp),%eax -c0104e73: 83 e8 0c sub $0xc,%eax -c0104e76: 89 45 e4 mov %eax,-0x1c(%ebp) - assert(PageProperty(p)); -c0104e79: 8b 45 e4 mov -0x1c(%ebp),%eax -c0104e7c: 83 c0 04 add $0x4,%eax -c0104e7f: c7 45 ac 01 00 00 00 movl $0x1,-0x54(%ebp) -c0104e86: 89 45 a8 mov %eax,-0x58(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); -c0104e89: 8b 45 a8 mov -0x58(%ebp),%eax -c0104e8c: 8b 55 ac mov -0x54(%ebp),%edx -c0104e8f: 0f a3 10 bt %edx,(%eax) -c0104e92: 19 c0 sbb %eax,%eax -c0104e94: 89 45 a4 mov %eax,-0x5c(%ebp) - return oldbit != 0; -c0104e97: 83 7d a4 00 cmpl $0x0,-0x5c(%ebp) -c0104e9b: 0f 95 c0 setne %al -c0104e9e: 0f b6 c0 movzbl %al,%eax -c0104ea1: 85 c0 test %eax,%eax -c0104ea3: 75 19 jne c0104ebe -c0104ea5: 68 76 79 10 c0 push $0xc0107976 -c0104eaa: 68 8e 77 10 c0 push $0xc010778e -c0104eaf: 68 f3 00 00 00 push $0xf3 -c0104eb4: 68 a3 77 10 c0 push $0xc01077a3 -c0104eb9: e8 0f b5 ff ff call c01003cd <__panic> - count ++, total += p->property; -c0104ebe: 83 45 f4 01 addl $0x1,-0xc(%ebp) -c0104ec2: 8b 45 e4 mov -0x1c(%ebp),%eax -c0104ec5: 8b 50 08 mov 0x8(%eax),%edx -c0104ec8: 8b 45 f0 mov -0x10(%ebp),%eax -c0104ecb: 01 d0 add %edx,%eax -c0104ecd: 89 45 f0 mov %eax,-0x10(%ebp) -c0104ed0: 8b 45 ec mov -0x14(%ebp),%eax -c0104ed3: 89 45 e0 mov %eax,-0x20(%ebp) - * list_next - get the next entry - * @listelm: the list head - **/ -static inline list_entry_t * -list_next(list_entry_t *listelm) { - return listelm->next; -c0104ed6: 8b 45 e0 mov -0x20(%ebp),%eax -c0104ed9: 8b 40 04 mov 0x4(%eax),%eax -// NOTICE: You SHOULD NOT CHANGE basic_check, default_check functions! -static void -default_check(void) { - int count = 0, total = 0; - list_entry_t *le = &free_list; - while ((le = list_next(le)) != &free_list) { -c0104edc: 89 45 ec mov %eax,-0x14(%ebp) -c0104edf: 81 7d ec 68 a9 11 c0 cmpl $0xc011a968,-0x14(%ebp) -c0104ee6: 75 88 jne c0104e70 - struct Page *p = le2page(le, page_link); - assert(PageProperty(p)); - count ++, total += p->property; - } - assert(total == nr_free_pages()); -c0104ee8: e8 f5 de ff ff call c0102de2 -c0104eed: 89 c2 mov %eax,%edx -c0104eef: 8b 45 f0 mov -0x10(%ebp),%eax -c0104ef2: 39 c2 cmp %eax,%edx -c0104ef4: 74 19 je c0104f0f -c0104ef6: 68 86 79 10 c0 push $0xc0107986 -c0104efb: 68 8e 77 10 c0 push $0xc010778e -c0104f00: 68 f6 00 00 00 push $0xf6 -c0104f05: 68 a3 77 10 c0 push $0xc01077a3 -c0104f0a: e8 be b4 ff ff call c01003cd <__panic> - - basic_check(); -c0104f0f: e8 c6 fa ff ff call c01049da - - struct Page *p0 = alloc_pages(5), *p1, *p2; -c0104f14: 83 ec 0c sub $0xc,%esp -c0104f17: 6a 05 push $0x5 -c0104f19: e8 51 de ff ff call c0102d6f -c0104f1e: 83 c4 10 add $0x10,%esp -c0104f21: 89 45 dc mov %eax,-0x24(%ebp) - struct Page *p0_saved = p0; -c0104f24: 8b 45 dc mov -0x24(%ebp),%eax -c0104f27: 89 45 d8 mov %eax,-0x28(%ebp) - - assert(p0 != NULL); -c0104f2a: 83 7d dc 00 cmpl $0x0,-0x24(%ebp) -c0104f2e: 75 19 jne c0104f49 -c0104f30: 68 9f 79 10 c0 push $0xc010799f -c0104f35: 68 8e 77 10 c0 push $0xc010778e -c0104f3a: 68 fd 00 00 00 push $0xfd -c0104f3f: 68 a3 77 10 c0 push $0xc01077a3 -c0104f44: e8 84 b4 ff ff call c01003cd <__panic> - assert(!PageProperty(p0)); -c0104f49: 8b 45 dc mov -0x24(%ebp),%eax -c0104f4c: 83 c0 04 add $0x4,%eax -c0104f4f: c7 45 e8 01 00 00 00 movl $0x1,-0x18(%ebp) -c0104f56: 89 45 a0 mov %eax,-0x60(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); -c0104f59: 8b 45 a0 mov -0x60(%ebp),%eax -c0104f5c: 8b 55 e8 mov -0x18(%ebp),%edx -c0104f5f: 0f a3 10 bt %edx,(%eax) -c0104f62: 19 c0 sbb %eax,%eax -c0104f64: 89 45 9c mov %eax,-0x64(%ebp) - return oldbit != 0; -c0104f67: 83 7d 9c 00 cmpl $0x0,-0x64(%ebp) -c0104f6b: 0f 95 c0 setne %al -c0104f6e: 0f b6 c0 movzbl %al,%eax -c0104f71: 85 c0 test %eax,%eax -c0104f73: 74 19 je c0104f8e -c0104f75: 68 aa 79 10 c0 push $0xc01079aa -c0104f7a: 68 8e 77 10 c0 push $0xc010778e -c0104f7f: 68 fe 00 00 00 push $0xfe -c0104f84: 68 a3 77 10 c0 push $0xc01077a3 -c0104f89: e8 3f b4 ff ff call c01003cd <__panic> - - list_entry_t free_list_store = free_list; -c0104f8e: a1 68 a9 11 c0 mov 0xc011a968,%eax -c0104f93: 8b 15 6c a9 11 c0 mov 0xc011a96c,%edx -c0104f99: 89 85 7c ff ff ff mov %eax,-0x84(%ebp) -c0104f9f: 89 55 80 mov %edx,-0x80(%ebp) -c0104fa2: c7 45 cc 68 a9 11 c0 movl $0xc011a968,-0x34(%ebp) - * list_init - initialize a new entry - * @elm: new entry to be initialized - * */ -static inline void -list_init(list_entry_t *elm) { - elm->prev = elm->next = elm; -c0104fa9: 8b 45 cc mov -0x34(%ebp),%eax -c0104fac: 8b 55 cc mov -0x34(%ebp),%edx -c0104faf: 89 50 04 mov %edx,0x4(%eax) -c0104fb2: 8b 45 cc mov -0x34(%ebp),%eax -c0104fb5: 8b 50 04 mov 0x4(%eax),%edx -c0104fb8: 8b 45 cc mov -0x34(%ebp),%eax -c0104fbb: 89 10 mov %edx,(%eax) -c0104fbd: c7 45 d4 68 a9 11 c0 movl $0xc011a968,-0x2c(%ebp) - * list_empty - tests whether a list is empty - * @list: the list to test. - * */ -static inline bool -list_empty(list_entry_t *list) { - return list->next == list; -c0104fc4: 8b 45 d4 mov -0x2c(%ebp),%eax -c0104fc7: 8b 40 04 mov 0x4(%eax),%eax -c0104fca: 39 45 d4 cmp %eax,-0x2c(%ebp) -c0104fcd: 0f 94 c0 sete %al -c0104fd0: 0f b6 c0 movzbl %al,%eax - list_init(&free_list); - assert(list_empty(&free_list)); -c0104fd3: 85 c0 test %eax,%eax -c0104fd5: 75 19 jne c0104ff0 -c0104fd7: 68 ff 78 10 c0 push $0xc01078ff -c0104fdc: 68 8e 77 10 c0 push $0xc010778e -c0104fe1: 68 02 01 00 00 push $0x102 -c0104fe6: 68 a3 77 10 c0 push $0xc01077a3 -c0104feb: e8 dd b3 ff ff call c01003cd <__panic> - assert(alloc_page() == NULL); -c0104ff0: 83 ec 0c sub $0xc,%esp -c0104ff3: 6a 01 push $0x1 -c0104ff5: e8 75 dd ff ff call c0102d6f -c0104ffa: 83 c4 10 add $0x10,%esp -c0104ffd: 85 c0 test %eax,%eax -c0104fff: 74 19 je c010501a -c0105001: 68 16 79 10 c0 push $0xc0107916 -c0105006: 68 8e 77 10 c0 push $0xc010778e -c010500b: 68 03 01 00 00 push $0x103 -c0105010: 68 a3 77 10 c0 push $0xc01077a3 -c0105015: e8 b3 b3 ff ff call c01003cd <__panic> - - unsigned int nr_free_store = nr_free; -c010501a: a1 70 a9 11 c0 mov 0xc011a970,%eax -c010501f: 89 45 c8 mov %eax,-0x38(%ebp) - nr_free = 0; -c0105022: c7 05 70 a9 11 c0 00 movl $0x0,0xc011a970 -c0105029: 00 00 00 - - free_pages(p0 + 2, 3); -c010502c: 8b 45 dc mov -0x24(%ebp),%eax -c010502f: 83 c0 28 add $0x28,%eax -c0105032: 83 ec 08 sub $0x8,%esp -c0105035: 6a 03 push $0x3 -c0105037: 50 push %eax -c0105038: e8 70 dd ff ff call c0102dad -c010503d: 83 c4 10 add $0x10,%esp - assert(alloc_pages(4) == NULL); -c0105040: 83 ec 0c sub $0xc,%esp -c0105043: 6a 04 push $0x4 -c0105045: e8 25 dd ff ff call c0102d6f -c010504a: 83 c4 10 add $0x10,%esp -c010504d: 85 c0 test %eax,%eax -c010504f: 74 19 je c010506a -c0105051: 68 bc 79 10 c0 push $0xc01079bc -c0105056: 68 8e 77 10 c0 push $0xc010778e -c010505b: 68 09 01 00 00 push $0x109 -c0105060: 68 a3 77 10 c0 push $0xc01077a3 -c0105065: e8 63 b3 ff ff call c01003cd <__panic> - assert(PageProperty(p0 + 2) && p0[2].property == 3); -c010506a: 8b 45 dc mov -0x24(%ebp),%eax -c010506d: 83 c0 28 add $0x28,%eax -c0105070: 83 c0 04 add $0x4,%eax -c0105073: c7 45 d0 01 00 00 00 movl $0x1,-0x30(%ebp) -c010507a: 89 45 98 mov %eax,-0x68(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); -c010507d: 8b 45 98 mov -0x68(%ebp),%eax -c0105080: 8b 55 d0 mov -0x30(%ebp),%edx -c0105083: 0f a3 10 bt %edx,(%eax) -c0105086: 19 c0 sbb %eax,%eax -c0105088: 89 45 94 mov %eax,-0x6c(%ebp) - return oldbit != 0; -c010508b: 83 7d 94 00 cmpl $0x0,-0x6c(%ebp) -c010508f: 0f 95 c0 setne %al -c0105092: 0f b6 c0 movzbl %al,%eax -c0105095: 85 c0 test %eax,%eax -c0105097: 74 0e je c01050a7 -c0105099: 8b 45 dc mov -0x24(%ebp),%eax -c010509c: 83 c0 28 add $0x28,%eax -c010509f: 8b 40 08 mov 0x8(%eax),%eax -c01050a2: 83 f8 03 cmp $0x3,%eax -c01050a5: 74 19 je c01050c0 -c01050a7: 68 d4 79 10 c0 push $0xc01079d4 -c01050ac: 68 8e 77 10 c0 push $0xc010778e -c01050b1: 68 0a 01 00 00 push $0x10a -c01050b6: 68 a3 77 10 c0 push $0xc01077a3 -c01050bb: e8 0d b3 ff ff call c01003cd <__panic> - assert((p1 = alloc_pages(3)) != NULL); -c01050c0: 83 ec 0c sub $0xc,%esp -c01050c3: 6a 03 push $0x3 -c01050c5: e8 a5 dc ff ff call c0102d6f -c01050ca: 83 c4 10 add $0x10,%esp -c01050cd: 89 45 c0 mov %eax,-0x40(%ebp) -c01050d0: 83 7d c0 00 cmpl $0x0,-0x40(%ebp) -c01050d4: 75 19 jne c01050ef -c01050d6: 68 00 7a 10 c0 push $0xc0107a00 -c01050db: 68 8e 77 10 c0 push $0xc010778e -c01050e0: 68 0b 01 00 00 push $0x10b -c01050e5: 68 a3 77 10 c0 push $0xc01077a3 -c01050ea: e8 de b2 ff ff call c01003cd <__panic> - assert(alloc_page() == NULL); -c01050ef: 83 ec 0c sub $0xc,%esp -c01050f2: 6a 01 push $0x1 -c01050f4: e8 76 dc ff ff call c0102d6f -c01050f9: 83 c4 10 add $0x10,%esp -c01050fc: 85 c0 test %eax,%eax -c01050fe: 74 19 je c0105119 -c0105100: 68 16 79 10 c0 push $0xc0107916 -c0105105: 68 8e 77 10 c0 push $0xc010778e -c010510a: 68 0c 01 00 00 push $0x10c -c010510f: 68 a3 77 10 c0 push $0xc01077a3 -c0105114: e8 b4 b2 ff ff call c01003cd <__panic> - assert(p0 + 2 == p1); -c0105119: 8b 45 dc mov -0x24(%ebp),%eax -c010511c: 83 c0 28 add $0x28,%eax -c010511f: 3b 45 c0 cmp -0x40(%ebp),%eax -c0105122: 74 19 je c010513d -c0105124: 68 1e 7a 10 c0 push $0xc0107a1e -c0105129: 68 8e 77 10 c0 push $0xc010778e -c010512e: 68 0d 01 00 00 push $0x10d -c0105133: 68 a3 77 10 c0 push $0xc01077a3 -c0105138: e8 90 b2 ff ff call c01003cd <__panic> - - p2 = p0 + 1; -c010513d: 8b 45 dc mov -0x24(%ebp),%eax -c0105140: 83 c0 14 add $0x14,%eax -c0105143: 89 45 bc mov %eax,-0x44(%ebp) - free_page(p0); -c0105146: 83 ec 08 sub $0x8,%esp -c0105149: 6a 01 push $0x1 -c010514b: ff 75 dc pushl -0x24(%ebp) -c010514e: e8 5a dc ff ff call c0102dad -c0105153: 83 c4 10 add $0x10,%esp - free_pages(p1, 3); -c0105156: 83 ec 08 sub $0x8,%esp -c0105159: 6a 03 push $0x3 -c010515b: ff 75 c0 pushl -0x40(%ebp) -c010515e: e8 4a dc ff ff call c0102dad -c0105163: 83 c4 10 add $0x10,%esp - assert(PageProperty(p0) && p0->property == 1); -c0105166: 8b 45 dc mov -0x24(%ebp),%eax -c0105169: 83 c0 04 add $0x4,%eax -c010516c: c7 45 c4 01 00 00 00 movl $0x1,-0x3c(%ebp) -c0105173: 89 45 90 mov %eax,-0x70(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); -c0105176: 8b 45 90 mov -0x70(%ebp),%eax -c0105179: 8b 55 c4 mov -0x3c(%ebp),%edx -c010517c: 0f a3 10 bt %edx,(%eax) -c010517f: 19 c0 sbb %eax,%eax -c0105181: 89 45 8c mov %eax,-0x74(%ebp) - return oldbit != 0; -c0105184: 83 7d 8c 00 cmpl $0x0,-0x74(%ebp) -c0105188: 0f 95 c0 setne %al -c010518b: 0f b6 c0 movzbl %al,%eax -c010518e: 85 c0 test %eax,%eax -c0105190: 74 0b je c010519d -c0105192: 8b 45 dc mov -0x24(%ebp),%eax -c0105195: 8b 40 08 mov 0x8(%eax),%eax -c0105198: 83 f8 01 cmp $0x1,%eax -c010519b: 74 19 je c01051b6 -c010519d: 68 2c 7a 10 c0 push $0xc0107a2c -c01051a2: 68 8e 77 10 c0 push $0xc010778e -c01051a7: 68 12 01 00 00 push $0x112 -c01051ac: 68 a3 77 10 c0 push $0xc01077a3 -c01051b1: e8 17 b2 ff ff call c01003cd <__panic> - assert(PageProperty(p1) && p1->property == 3); -c01051b6: 8b 45 c0 mov -0x40(%ebp),%eax -c01051b9: 83 c0 04 add $0x4,%eax -c01051bc: c7 45 b8 01 00 00 00 movl $0x1,-0x48(%ebp) -c01051c3: 89 45 88 mov %eax,-0x78(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); -c01051c6: 8b 45 88 mov -0x78(%ebp),%eax -c01051c9: 8b 55 b8 mov -0x48(%ebp),%edx -c01051cc: 0f a3 10 bt %edx,(%eax) -c01051cf: 19 c0 sbb %eax,%eax -c01051d1: 89 45 84 mov %eax,-0x7c(%ebp) - return oldbit != 0; -c01051d4: 83 7d 84 00 cmpl $0x0,-0x7c(%ebp) -c01051d8: 0f 95 c0 setne %al -c01051db: 0f b6 c0 movzbl %al,%eax -c01051de: 85 c0 test %eax,%eax -c01051e0: 74 0b je c01051ed -c01051e2: 8b 45 c0 mov -0x40(%ebp),%eax -c01051e5: 8b 40 08 mov 0x8(%eax),%eax -c01051e8: 83 f8 03 cmp $0x3,%eax -c01051eb: 74 19 je c0105206 -c01051ed: 68 54 7a 10 c0 push $0xc0107a54 -c01051f2: 68 8e 77 10 c0 push $0xc010778e -c01051f7: 68 13 01 00 00 push $0x113 -c01051fc: 68 a3 77 10 c0 push $0xc01077a3 -c0105201: e8 c7 b1 ff ff call c01003cd <__panic> - - assert((p0 = alloc_page()) == p2 - 1); -c0105206: 83 ec 0c sub $0xc,%esp -c0105209: 6a 01 push $0x1 -c010520b: e8 5f db ff ff call c0102d6f -c0105210: 83 c4 10 add $0x10,%esp -c0105213: 89 45 dc mov %eax,-0x24(%ebp) -c0105216: 8b 45 bc mov -0x44(%ebp),%eax -c0105219: 83 e8 14 sub $0x14,%eax -c010521c: 39 45 dc cmp %eax,-0x24(%ebp) -c010521f: 74 19 je c010523a -c0105221: 68 7a 7a 10 c0 push $0xc0107a7a -c0105226: 68 8e 77 10 c0 push $0xc010778e -c010522b: 68 15 01 00 00 push $0x115 -c0105230: 68 a3 77 10 c0 push $0xc01077a3 -c0105235: e8 93 b1 ff ff call c01003cd <__panic> - free_page(p0); -c010523a: 83 ec 08 sub $0x8,%esp -c010523d: 6a 01 push $0x1 -c010523f: ff 75 dc pushl -0x24(%ebp) -c0105242: e8 66 db ff ff call c0102dad -c0105247: 83 c4 10 add $0x10,%esp - assert((p0 = alloc_pages(2)) == p2 + 1); -c010524a: 83 ec 0c sub $0xc,%esp -c010524d: 6a 02 push $0x2 -c010524f: e8 1b db ff ff call c0102d6f -c0105254: 83 c4 10 add $0x10,%esp -c0105257: 89 45 dc mov %eax,-0x24(%ebp) -c010525a: 8b 45 bc mov -0x44(%ebp),%eax -c010525d: 83 c0 14 add $0x14,%eax -c0105260: 39 45 dc cmp %eax,-0x24(%ebp) -c0105263: 74 19 je c010527e -c0105265: 68 98 7a 10 c0 push $0xc0107a98 -c010526a: 68 8e 77 10 c0 push $0xc010778e -c010526f: 68 17 01 00 00 push $0x117 -c0105274: 68 a3 77 10 c0 push $0xc01077a3 -c0105279: e8 4f b1 ff ff call c01003cd <__panic> - - free_pages(p0, 2); -c010527e: 83 ec 08 sub $0x8,%esp -c0105281: 6a 02 push $0x2 -c0105283: ff 75 dc pushl -0x24(%ebp) -c0105286: e8 22 db ff ff call c0102dad -c010528b: 83 c4 10 add $0x10,%esp - free_page(p2); -c010528e: 83 ec 08 sub $0x8,%esp -c0105291: 6a 01 push $0x1 -c0105293: ff 75 bc pushl -0x44(%ebp) -c0105296: e8 12 db ff ff call c0102dad -c010529b: 83 c4 10 add $0x10,%esp - - assert((p0 = alloc_pages(5)) != NULL); -c010529e: 83 ec 0c sub $0xc,%esp -c01052a1: 6a 05 push $0x5 -c01052a3: e8 c7 da ff ff call c0102d6f -c01052a8: 83 c4 10 add $0x10,%esp -c01052ab: 89 45 dc mov %eax,-0x24(%ebp) -c01052ae: 83 7d dc 00 cmpl $0x0,-0x24(%ebp) -c01052b2: 75 19 jne c01052cd -c01052b4: 68 b8 7a 10 c0 push $0xc0107ab8 -c01052b9: 68 8e 77 10 c0 push $0xc010778e -c01052be: 68 1c 01 00 00 push $0x11c -c01052c3: 68 a3 77 10 c0 push $0xc01077a3 -c01052c8: e8 00 b1 ff ff call c01003cd <__panic> - assert(alloc_page() == NULL); -c01052cd: 83 ec 0c sub $0xc,%esp -c01052d0: 6a 01 push $0x1 -c01052d2: e8 98 da ff ff call c0102d6f -c01052d7: 83 c4 10 add $0x10,%esp -c01052da: 85 c0 test %eax,%eax -c01052dc: 74 19 je c01052f7 -c01052de: 68 16 79 10 c0 push $0xc0107916 -c01052e3: 68 8e 77 10 c0 push $0xc010778e -c01052e8: 68 1d 01 00 00 push $0x11d -c01052ed: 68 a3 77 10 c0 push $0xc01077a3 -c01052f2: e8 d6 b0 ff ff call c01003cd <__panic> - - assert(nr_free == 0); -c01052f7: a1 70 a9 11 c0 mov 0xc011a970,%eax -c01052fc: 85 c0 test %eax,%eax -c01052fe: 74 19 je c0105319 -c0105300: 68 69 79 10 c0 push $0xc0107969 -c0105305: 68 8e 77 10 c0 push $0xc010778e -c010530a: 68 1f 01 00 00 push $0x11f -c010530f: 68 a3 77 10 c0 push $0xc01077a3 -c0105314: e8 b4 b0 ff ff call c01003cd <__panic> - nr_free = nr_free_store; -c0105319: 8b 45 c8 mov -0x38(%ebp),%eax -c010531c: a3 70 a9 11 c0 mov %eax,0xc011a970 - - free_list = free_list_store; -c0105321: 8b 85 7c ff ff ff mov -0x84(%ebp),%eax -c0105327: 8b 55 80 mov -0x80(%ebp),%edx -c010532a: a3 68 a9 11 c0 mov %eax,0xc011a968 -c010532f: 89 15 6c a9 11 c0 mov %edx,0xc011a96c - free_pages(p0, 5); -c0105335: 83 ec 08 sub $0x8,%esp -c0105338: 6a 05 push $0x5 -c010533a: ff 75 dc pushl -0x24(%ebp) -c010533d: e8 6b da ff ff call c0102dad -c0105342: 83 c4 10 add $0x10,%esp - - le = &free_list; -c0105345: c7 45 ec 68 a9 11 c0 movl $0xc011a968,-0x14(%ebp) - while ((le = list_next(le)) != &free_list) { -c010534c: eb 1d jmp c010536b - struct Page *p = le2page(le, page_link); -c010534e: 8b 45 ec mov -0x14(%ebp),%eax -c0105351: 83 e8 0c sub $0xc,%eax -c0105354: 89 45 b0 mov %eax,-0x50(%ebp) - count --, total -= p->property; -c0105357: 83 6d f4 01 subl $0x1,-0xc(%ebp) -c010535b: 8b 55 f0 mov -0x10(%ebp),%edx -c010535e: 8b 45 b0 mov -0x50(%ebp),%eax -c0105361: 8b 40 08 mov 0x8(%eax),%eax -c0105364: 29 c2 sub %eax,%edx -c0105366: 89 d0 mov %edx,%eax -c0105368: 89 45 f0 mov %eax,-0x10(%ebp) -c010536b: 8b 45 ec mov -0x14(%ebp),%eax -c010536e: 89 45 b4 mov %eax,-0x4c(%ebp) - * list_next - get the next entry - * @listelm: the list head - **/ -static inline list_entry_t * -list_next(list_entry_t *listelm) { - return listelm->next; -c0105371: 8b 45 b4 mov -0x4c(%ebp),%eax -c0105374: 8b 40 04 mov 0x4(%eax),%eax - - free_list = free_list_store; - free_pages(p0, 5); - - le = &free_list; - while ((le = list_next(le)) != &free_list) { -c0105377: 89 45 ec mov %eax,-0x14(%ebp) -c010537a: 81 7d ec 68 a9 11 c0 cmpl $0xc011a968,-0x14(%ebp) -c0105381: 75 cb jne c010534e - struct Page *p = le2page(le, page_link); - count --, total -= p->property; - } - assert(count == 0); -c0105383: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c0105387: 74 19 je c01053a2 -c0105389: 68 d6 7a 10 c0 push $0xc0107ad6 -c010538e: 68 8e 77 10 c0 push $0xc010778e -c0105393: 68 2a 01 00 00 push $0x12a -c0105398: 68 a3 77 10 c0 push $0xc01077a3 -c010539d: e8 2b b0 ff ff call c01003cd <__panic> - assert(total == 0); -c01053a2: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) -c01053a6: 74 19 je c01053c1 -c01053a8: 68 e1 7a 10 c0 push $0xc0107ae1 -c01053ad: 68 8e 77 10 c0 push $0xc010778e -c01053b2: 68 2b 01 00 00 push $0x12b -c01053b7: 68 a3 77 10 c0 push $0xc01077a3 -c01053bc: e8 0c b0 ff ff call c01003cd <__panic> -} -c01053c1: 90 nop -c01053c2: c9 leave -c01053c3: c3 ret - -c01053c4 : - -extern struct Page *pages; -extern size_t npage; - -static inline ppn_t -page2ppn(struct Page *page) { -c01053c4: 55 push %ebp -c01053c5: 89 e5 mov %esp,%ebp - return page - pages; -c01053c7: 8b 45 08 mov 0x8(%ebp),%eax -c01053ca: 8b 15 64 a9 11 c0 mov 0xc011a964,%edx -c01053d0: 29 d0 sub %edx,%eax -c01053d2: c1 f8 02 sar $0x2,%eax -c01053d5: 69 c0 cd cc cc cc imul $0xcccccccd,%eax,%eax -} -c01053db: 5d pop %ebp -c01053dc: c3 ret - -c01053dd : - -static inline uintptr_t -page2pa(struct Page *page) { -c01053dd: 55 push %ebp -c01053de: 89 e5 mov %esp,%ebp - return page2ppn(page) << PGSHIFT; -c01053e0: ff 75 08 pushl 0x8(%ebp) -c01053e3: e8 dc ff ff ff call c01053c4 -c01053e8: 83 c4 04 add $0x4,%esp -c01053eb: c1 e0 0c shl $0xc,%eax -} -c01053ee: c9 leave -c01053ef: c3 ret - -c01053f0 : -page_ref(struct Page *page) { - return page->ref; -} - -static inline void -set_page_ref(struct Page *page, int val) { -c01053f0: 55 push %ebp -c01053f1: 89 e5 mov %esp,%ebp - page->ref = val; -c01053f3: 8b 45 08 mov 0x8(%ebp),%eax -c01053f6: 8b 55 0c mov 0xc(%ebp),%edx -c01053f9: 89 10 mov %edx,(%eax) -} -c01053fb: 90 nop -c01053fc: 5d pop %ebp -c01053fd: c3 ret - -c01053fe : -#define RIGHT_LEAF(index) ((index) * 2 + 2) -#define PARENT(index) ( ((index) + 1) / 2 - 1) -#define MAX(a, b) ((a) > (b) ? (a) : (b)) - -static unsigned int -buddy_find_first_zero(unsigned int bit_array) { -c01053fe: 55 push %ebp -c01053ff: 89 e5 mov %esp,%ebp -c0105401: 83 ec 10 sub $0x10,%esp - unsigned pos = 0; -c0105404: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp) - while (bit_array >>= 1) ++ pos; -c010540b: eb 04 jmp c0105411 -c010540d: 83 45 fc 01 addl $0x1,-0x4(%ebp) -c0105411: d1 6d 08 shrl 0x8(%ebp) -c0105414: 83 7d 08 00 cmpl $0x0,0x8(%ebp) -c0105418: 75 f3 jne c010540d - return pos; -c010541a: 8b 45 fc mov -0x4(%ebp),%eax -} -c010541d: c9 leave -c010541e: c3 ret - -c010541f : - -static struct Page* -buddy_node_index_to_page(unsigned int index, unsigned int node_size) { -c010541f: 55 push %ebp -c0105420: 89 e5 mov %esp,%ebp - return buddy_allocatable_base + ((index + 1) * node_size - buddy_max_pages); -c0105422: 8b 0d 54 a9 11 c0 mov 0xc011a954,%ecx -c0105428: 8b 45 08 mov 0x8(%ebp),%eax -c010542b: 83 c0 01 add $0x1,%eax -c010542e: 0f af 45 0c imul 0xc(%ebp),%eax -c0105432: 89 c2 mov %eax,%edx -c0105434: a1 50 a9 11 c0 mov 0xc011a950,%eax -c0105439: 29 c2 sub %eax,%edx -c010543b: 89 d0 mov %edx,%eax -c010543d: c1 e0 02 shl $0x2,%eax -c0105440: 01 d0 add %edx,%eax -c0105442: c1 e0 02 shl $0x2,%eax -c0105445: 01 c8 add %ecx,%eax -} -c0105447: 5d pop %ebp -c0105448: c3 ret - -c0105449 : - -static void -buddy_init(void) { -c0105449: 55 push %ebp -c010544a: 89 e5 mov %esp,%ebp - // do nothing. -} -c010544c: 90 nop -c010544d: 5d pop %ebp -c010544e: c3 ret - -c010544f : - -static void -buddy_init_memmap(struct Page *base, size_t n) { -c010544f: 55 push %ebp -c0105450: 89 e5 mov %esp,%ebp -c0105452: 83 ec 58 sub $0x58,%esp - assert(n > 0); -c0105455: 83 7d 0c 00 cmpl $0x0,0xc(%ebp) -c0105459: 75 16 jne c0105471 -c010545b: 68 1c 7b 10 c0 push $0xc0107b1c -c0105460: 68 22 7b 10 c0 push $0xc0107b22 -c0105465: 6a 28 push $0x28 -c0105467: 68 37 7b 10 c0 push $0xc0107b37 -c010546c: e8 5c af ff ff call c01003cd <__panic> - // Calculate maximum manageable memory zone - unsigned int max_pages = 1; -c0105471: c7 45 f4 01 00 00 00 movl $0x1,-0xc(%ebp) - for (unsigned int i = 1; i < BUDDY_MAX_DEPTH; ++ i) { -c0105478: c7 45 f0 01 00 00 00 movl $0x1,-0x10(%ebp) -c010547f: eb 23 jmp c01054a4 - // Should consider the page for storing 'longest' array. - if (max_pages + max_pages / 512 >= n) { -c0105481: 8b 45 f4 mov -0xc(%ebp),%eax -c0105484: c1 e8 09 shr $0x9,%eax -c0105487: 89 c2 mov %eax,%edx -c0105489: 8b 45 f4 mov -0xc(%ebp),%eax -c010548c: 01 d0 add %edx,%eax -c010548e: 3b 45 0c cmp 0xc(%ebp),%eax -c0105491: 72 0a jb c010549d - max_pages /= 2; -c0105493: 8b 45 f4 mov -0xc(%ebp),%eax -c0105496: d1 e8 shr %eax -c0105498: 89 45 f4 mov %eax,-0xc(%ebp) - break; -c010549b: eb 0d jmp c01054aa - } - max_pages *= 2; -c010549d: d1 65 f4 shll -0xc(%ebp) -static void -buddy_init_memmap(struct Page *base, size_t n) { - assert(n > 0); - // Calculate maximum manageable memory zone - unsigned int max_pages = 1; - for (unsigned int i = 1; i < BUDDY_MAX_DEPTH; ++ i) { -c01054a0: 83 45 f0 01 addl $0x1,-0x10(%ebp) -c01054a4: 83 7d f0 1d cmpl $0x1d,-0x10(%ebp) -c01054a8: 76 d7 jbe c0105481 - max_pages /= 2; - break; - } - max_pages *= 2; - } - unsigned int longest_array_pages = max_pages / 512 + 1; -c01054aa: 8b 45 f4 mov -0xc(%ebp),%eax -c01054ad: c1 e8 09 shr $0x9,%eax -c01054b0: 83 c0 01 add $0x1,%eax -c01054b3: 89 45 dc mov %eax,-0x24(%ebp) - cprintf("BUDDY: Maximum manageable pages = %d, pages for storing longest = %d\n", -c01054b6: 83 ec 04 sub $0x4,%esp -c01054b9: ff 75 dc pushl -0x24(%ebp) -c01054bc: ff 75 f4 pushl -0xc(%ebp) -c01054bf: 68 4c 7b 10 c0 push $0xc0107b4c -c01054c4: e8 9e ad ff ff call c0100267 -c01054c9: 83 c4 10 add $0x10,%esp - max_pages, longest_array_pages); - buddy_longest = (unsigned int*)KADDR(page2pa(base)); -c01054cc: 83 ec 0c sub $0xc,%esp -c01054cf: ff 75 08 pushl 0x8(%ebp) -c01054d2: e8 06 ff ff ff call c01053dd -c01054d7: 83 c4 10 add $0x10,%esp -c01054da: 89 45 d8 mov %eax,-0x28(%ebp) -c01054dd: 8b 45 d8 mov -0x28(%ebp),%eax -c01054e0: c1 e8 0c shr $0xc,%eax -c01054e3: 89 45 d4 mov %eax,-0x2c(%ebp) -c01054e6: a1 c0 a8 11 c0 mov 0xc011a8c0,%eax -c01054eb: 39 45 d4 cmp %eax,-0x2c(%ebp) -c01054ee: 72 14 jb c0105504 -c01054f0: ff 75 d8 pushl -0x28(%ebp) -c01054f3: 68 94 7b 10 c0 push $0xc0107b94 -c01054f8: 6a 36 push $0x36 -c01054fa: 68 37 7b 10 c0 push $0xc0107b37 -c01054ff: e8 c9 ae ff ff call c01003cd <__panic> -c0105504: 8b 45 d8 mov -0x28(%ebp),%eax -c0105507: 2d 00 00 00 40 sub $0x40000000,%eax -c010550c: a3 4c a9 11 c0 mov %eax,0xc011a94c - buddy_max_pages = max_pages; -c0105511: 8b 45 f4 mov -0xc(%ebp),%eax -c0105514: a3 50 a9 11 c0 mov %eax,0xc011a950 - - unsigned int node_size = max_pages * 2; -c0105519: 8b 45 f4 mov -0xc(%ebp),%eax -c010551c: 01 c0 add %eax,%eax -c010551e: 89 45 ec mov %eax,-0x14(%ebp) - for (unsigned int i = 0; i < 2 * max_pages - 1; ++ i) { -c0105521: c7 45 e8 00 00 00 00 movl $0x0,-0x18(%ebp) -c0105528: eb 2b jmp c0105555 - if (IS_POWER_OF_2(i + 1)) node_size /= 2; -c010552a: 8b 45 e8 mov -0x18(%ebp),%eax -c010552d: 83 c0 01 add $0x1,%eax -c0105530: 23 45 e8 and -0x18(%ebp),%eax -c0105533: 85 c0 test %eax,%eax -c0105535: 75 08 jne c010553f -c0105537: 8b 45 ec mov -0x14(%ebp),%eax -c010553a: d1 e8 shr %eax -c010553c: 89 45 ec mov %eax,-0x14(%ebp) - buddy_longest[i] = node_size; -c010553f: a1 4c a9 11 c0 mov 0xc011a94c,%eax -c0105544: 8b 55 e8 mov -0x18(%ebp),%edx -c0105547: c1 e2 02 shl $0x2,%edx -c010554a: 01 c2 add %eax,%edx -c010554c: 8b 45 ec mov -0x14(%ebp),%eax -c010554f: 89 02 mov %eax,(%edx) - max_pages, longest_array_pages); - buddy_longest = (unsigned int*)KADDR(page2pa(base)); - buddy_max_pages = max_pages; - - unsigned int node_size = max_pages * 2; - for (unsigned int i = 0; i < 2 * max_pages - 1; ++ i) { -c0105551: 83 45 e8 01 addl $0x1,-0x18(%ebp) -c0105555: 8b 45 f4 mov -0xc(%ebp),%eax -c0105558: 01 c0 add %eax,%eax -c010555a: 83 e8 01 sub $0x1,%eax -c010555d: 3b 45 e8 cmp -0x18(%ebp),%eax -c0105560: 77 c8 ja c010552a - if (IS_POWER_OF_2(i + 1)) node_size /= 2; - buddy_longest[i] = node_size; - } - - for (int i = 0; i < longest_array_pages; ++ i) { -c0105562: c7 45 e4 00 00 00 00 movl $0x0,-0x1c(%ebp) -c0105569: eb 34 jmp c010559f - struct Page *p = base + i; -c010556b: 8b 55 e4 mov -0x1c(%ebp),%edx -c010556e: 89 d0 mov %edx,%eax -c0105570: c1 e0 02 shl $0x2,%eax -c0105573: 01 d0 add %edx,%eax -c0105575: c1 e0 02 shl $0x2,%eax -c0105578: 89 c2 mov %eax,%edx -c010557a: 8b 45 08 mov 0x8(%ebp),%eax -c010557d: 01 d0 add %edx,%eax -c010557f: 89 45 d0 mov %eax,-0x30(%ebp) - SetPageReserved(p); -c0105582: 8b 45 d0 mov -0x30(%ebp),%eax -c0105585: 83 c0 04 add $0x4,%eax -c0105588: c7 45 c0 00 00 00 00 movl $0x0,-0x40(%ebp) -c010558f: 89 45 bc mov %eax,-0x44(%ebp) - * Note that @nr may be almost arbitrarily large; this function is not - * restricted to acting on a single-word quantity. - * */ -static inline void -set_bit(int nr, volatile void *addr) { - asm volatile ("btsl %1, %0" :"=m" (*(volatile long *)addr) : "Ir" (nr)); -c0105592: 8b 45 bc mov -0x44(%ebp),%eax -c0105595: 8b 55 c0 mov -0x40(%ebp),%edx -c0105598: 0f ab 10 bts %edx,(%eax) - for (unsigned int i = 0; i < 2 * max_pages - 1; ++ i) { - if (IS_POWER_OF_2(i + 1)) node_size /= 2; - buddy_longest[i] = node_size; - } - - for (int i = 0; i < longest_array_pages; ++ i) { -c010559b: 83 45 e4 01 addl $0x1,-0x1c(%ebp) -c010559f: 8b 45 e4 mov -0x1c(%ebp),%eax -c01055a2: 3b 45 dc cmp -0x24(%ebp),%eax -c01055a5: 72 c4 jb c010556b - struct Page *p = base + i; - SetPageReserved(p); - } - - struct Page *p = base + longest_array_pages; -c01055a7: 8b 55 dc mov -0x24(%ebp),%edx -c01055aa: 89 d0 mov %edx,%eax -c01055ac: c1 e0 02 shl $0x2,%eax -c01055af: 01 d0 add %edx,%eax -c01055b1: c1 e0 02 shl $0x2,%eax -c01055b4: 89 c2 mov %eax,%edx -c01055b6: 8b 45 08 mov 0x8(%ebp),%eax -c01055b9: 01 d0 add %edx,%eax -c01055bb: 89 45 e0 mov %eax,-0x20(%ebp) - buddy_allocatable_base = p; -c01055be: 8b 45 e0 mov -0x20(%ebp),%eax -c01055c1: a3 54 a9 11 c0 mov %eax,0xc011a954 - for (; p != base + n; p ++) { -c01055c6: e9 88 00 00 00 jmp c0105653 - assert(PageReserved(p)); -c01055cb: 8b 45 e0 mov -0x20(%ebp),%eax -c01055ce: 83 c0 04 add $0x4,%eax -c01055d1: c7 45 cc 00 00 00 00 movl $0x0,-0x34(%ebp) -c01055d8: 89 45 b8 mov %eax,-0x48(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); -c01055db: 8b 45 b8 mov -0x48(%ebp),%eax -c01055de: 8b 55 cc mov -0x34(%ebp),%edx -c01055e1: 0f a3 10 bt %edx,(%eax) -c01055e4: 19 c0 sbb %eax,%eax -c01055e6: 89 45 b4 mov %eax,-0x4c(%ebp) - return oldbit != 0; -c01055e9: 83 7d b4 00 cmpl $0x0,-0x4c(%ebp) -c01055ed: 0f 95 c0 setne %al -c01055f0: 0f b6 c0 movzbl %al,%eax -c01055f3: 85 c0 test %eax,%eax -c01055f5: 75 16 jne c010560d -c01055f7: 68 b7 7b 10 c0 push $0xc0107bb7 -c01055fc: 68 22 7b 10 c0 push $0xc0107b22 -c0105601: 6a 47 push $0x47 -c0105603: 68 37 7b 10 c0 push $0xc0107b37 -c0105608: e8 c0 ad ff ff call c01003cd <__panic> - ClearPageReserved(p); -c010560d: 8b 45 e0 mov -0x20(%ebp),%eax -c0105610: 83 c0 04 add $0x4,%eax -c0105613: c7 45 c4 00 00 00 00 movl $0x0,-0x3c(%ebp) -c010561a: 89 45 ac mov %eax,-0x54(%ebp) - * @nr: the bit to clear - * @addr: the address to start counting from - * */ -static inline void -clear_bit(int nr, volatile void *addr) { - asm volatile ("btrl %1, %0" :"=m" (*(volatile long *)addr) : "Ir" (nr)); -c010561d: 8b 45 ac mov -0x54(%ebp),%eax -c0105620: 8b 55 c4 mov -0x3c(%ebp),%edx -c0105623: 0f b3 10 btr %edx,(%eax) - SetPageProperty(p); -c0105626: 8b 45 e0 mov -0x20(%ebp),%eax -c0105629: 83 c0 04 add $0x4,%eax -c010562c: c7 45 c8 01 00 00 00 movl $0x1,-0x38(%ebp) -c0105633: 89 45 b0 mov %eax,-0x50(%ebp) - * Note that @nr may be almost arbitrarily large; this function is not - * restricted to acting on a single-word quantity. - * */ -static inline void -set_bit(int nr, volatile void *addr) { - asm volatile ("btsl %1, %0" :"=m" (*(volatile long *)addr) : "Ir" (nr)); -c0105636: 8b 45 b0 mov -0x50(%ebp),%eax -c0105639: 8b 55 c8 mov -0x38(%ebp),%edx -c010563c: 0f ab 10 bts %edx,(%eax) - set_page_ref(p, 0); -c010563f: 83 ec 08 sub $0x8,%esp -c0105642: 6a 00 push $0x0 -c0105644: ff 75 e0 pushl -0x20(%ebp) -c0105647: e8 a4 fd ff ff call c01053f0 -c010564c: 83 c4 10 add $0x10,%esp - SetPageReserved(p); - } - - struct Page *p = base + longest_array_pages; - buddy_allocatable_base = p; - for (; p != base + n; p ++) { -c010564f: 83 45 e0 14 addl $0x14,-0x20(%ebp) -c0105653: 8b 55 0c mov 0xc(%ebp),%edx -c0105656: 89 d0 mov %edx,%eax -c0105658: c1 e0 02 shl $0x2,%eax -c010565b: 01 d0 add %edx,%eax -c010565d: c1 e0 02 shl $0x2,%eax -c0105660: 89 c2 mov %eax,%edx -c0105662: 8b 45 08 mov 0x8(%ebp),%eax -c0105665: 01 d0 add %edx,%eax -c0105667: 3b 45 e0 cmp -0x20(%ebp),%eax -c010566a: 0f 85 5b ff ff ff jne c01055cb - assert(PageReserved(p)); - ClearPageReserved(p); - SetPageProperty(p); - set_page_ref(p, 0); - } -} -c0105670: 90 nop -c0105671: c9 leave -c0105672: c3 ret - -c0105673 : - -static size_t -buddy_fix_size(size_t before) { -c0105673: 55 push %ebp -c0105674: 89 e5 mov %esp,%ebp -c0105676: 83 ec 10 sub $0x10,%esp - unsigned int ffz = buddy_find_first_zero(before) + 1; -c0105679: ff 75 08 pushl 0x8(%ebp) -c010567c: e8 7d fd ff ff call c01053fe -c0105681: 83 c4 04 add $0x4,%esp -c0105684: 83 c0 01 add $0x1,%eax -c0105687: 89 45 fc mov %eax,-0x4(%ebp) - return (1 << ffz); -c010568a: 8b 45 fc mov -0x4(%ebp),%eax -c010568d: ba 01 00 00 00 mov $0x1,%edx -c0105692: 89 c1 mov %eax,%ecx -c0105694: d3 e2 shl %cl,%edx -c0105696: 89 d0 mov %edx,%eax -} -c0105698: c9 leave -c0105699: c3 ret - -c010569a : - -static struct Page * -buddy_alloc_pages(size_t n) { -c010569a: 55 push %ebp -c010569b: 89 e5 mov %esp,%ebp -c010569d: 53 push %ebx -c010569e: 83 ec 24 sub $0x24,%esp - assert(n > 0); -c01056a1: 83 7d 08 00 cmpl $0x0,0x8(%ebp) -c01056a5: 75 16 jne c01056bd -c01056a7: 68 1c 7b 10 c0 push $0xc0107b1c -c01056ac: 68 22 7b 10 c0 push $0xc0107b22 -c01056b1: 6a 56 push $0x56 -c01056b3: 68 37 7b 10 c0 push $0xc0107b37 -c01056b8: e8 10 ad ff ff call c01003cd <__panic> - if (!IS_POWER_OF_2(n)) { -c01056bd: 8b 45 08 mov 0x8(%ebp),%eax -c01056c0: 83 e8 01 sub $0x1,%eax -c01056c3: 23 45 08 and 0x8(%ebp),%eax -c01056c6: 85 c0 test %eax,%eax -c01056c8: 74 11 je c01056db - n = buddy_fix_size(n); -c01056ca: 83 ec 0c sub $0xc,%esp -c01056cd: ff 75 08 pushl 0x8(%ebp) -c01056d0: e8 9e ff ff ff call c0105673 -c01056d5: 83 c4 10 add $0x10,%esp -c01056d8: 89 45 08 mov %eax,0x8(%ebp) - } - if (n > buddy_longest[0]) { -c01056db: a1 4c a9 11 c0 mov 0xc011a94c,%eax -c01056e0: 8b 00 mov (%eax),%eax -c01056e2: 3b 45 08 cmp 0x8(%ebp),%eax -c01056e5: 73 0a jae c01056f1 - return NULL; -c01056e7: b8 00 00 00 00 mov $0x0,%eax -c01056ec: e9 17 01 00 00 jmp c0105808 - } - - // Find the top node for allocation. - // Starting from root - unsigned int index = 0; -c01056f1: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - // The size of current node - unsigned int node_size; - - // go from the root and find the most suitable position - for (node_size = buddy_max_pages; node_size != n; node_size /= 2) { -c01056f8: a1 50 a9 11 c0 mov 0xc011a950,%eax -c01056fd: 89 45 f0 mov %eax,-0x10(%ebp) -c0105700: eb 37 jmp c0105739 - if (buddy_longest[LEFT_LEAF(index)] >= n) { -c0105702: a1 4c a9 11 c0 mov 0xc011a94c,%eax -c0105707: 8b 55 f4 mov -0xc(%ebp),%edx -c010570a: c1 e2 03 shl $0x3,%edx -c010570d: 83 c2 04 add $0x4,%edx -c0105710: 01 d0 add %edx,%eax -c0105712: 8b 00 mov (%eax),%eax -c0105714: 3b 45 08 cmp 0x8(%ebp),%eax -c0105717: 72 0d jb c0105726 - index = LEFT_LEAF(index); -c0105719: 8b 45 f4 mov -0xc(%ebp),%eax -c010571c: 01 c0 add %eax,%eax -c010571e: 83 c0 01 add $0x1,%eax -c0105721: 89 45 f4 mov %eax,-0xc(%ebp) -c0105724: eb 0b jmp c0105731 - } else { - index = RIGHT_LEAF(index); -c0105726: 8b 45 f4 mov -0xc(%ebp),%eax -c0105729: 83 c0 01 add $0x1,%eax -c010572c: 01 c0 add %eax,%eax -c010572e: 89 45 f4 mov %eax,-0xc(%ebp) - unsigned int index = 0; - // The size of current node - unsigned int node_size; - - // go from the root and find the most suitable position - for (node_size = buddy_max_pages; node_size != n; node_size /= 2) { -c0105731: 8b 45 f0 mov -0x10(%ebp),%eax -c0105734: d1 e8 shr %eax -c0105736: 89 45 f0 mov %eax,-0x10(%ebp) -c0105739: 8b 45 f0 mov -0x10(%ebp),%eax -c010573c: 3b 45 08 cmp 0x8(%ebp),%eax -c010573f: 75 c1 jne c0105702 - index = RIGHT_LEAF(index); - } - } - - // Allocate all pages under this node. - buddy_longest[index] = 0; -c0105741: a1 4c a9 11 c0 mov 0xc011a94c,%eax -c0105746: 8b 55 f4 mov -0xc(%ebp),%edx -c0105749: c1 e2 02 shl $0x2,%edx -c010574c: 01 d0 add %edx,%eax -c010574e: c7 00 00 00 00 00 movl $0x0,(%eax) - struct Page* new_page = buddy_node_index_to_page(index, node_size); -c0105754: 83 ec 08 sub $0x8,%esp -c0105757: ff 75 f0 pushl -0x10(%ebp) -c010575a: ff 75 f4 pushl -0xc(%ebp) -c010575d: e8 bd fc ff ff call c010541f -c0105762: 83 c4 10 add $0x10,%esp -c0105765: 89 45 e8 mov %eax,-0x18(%ebp) - for (struct Page* p = new_page; p != (new_page + node_size); ++ p) { -c0105768: 8b 45 e8 mov -0x18(%ebp),%eax -c010576b: 89 45 ec mov %eax,-0x14(%ebp) -c010576e: eb 2d jmp c010579d - // Set new allocated page ref = 0; - set_page_ref(p, 0); -c0105770: 83 ec 08 sub $0x8,%esp -c0105773: 6a 00 push $0x0 -c0105775: ff 75 ec pushl -0x14(%ebp) -c0105778: e8 73 fc ff ff call c01053f0 -c010577d: 83 c4 10 add $0x10,%esp - // Set property = not free. - ClearPageProperty(p); -c0105780: 8b 45 ec mov -0x14(%ebp),%eax -c0105783: 83 c0 04 add $0x4,%eax -c0105786: c7 45 e4 01 00 00 00 movl $0x1,-0x1c(%ebp) -c010578d: 89 45 e0 mov %eax,-0x20(%ebp) - * @nr: the bit to clear - * @addr: the address to start counting from - * */ -static inline void -clear_bit(int nr, volatile void *addr) { - asm volatile ("btrl %1, %0" :"=m" (*(volatile long *)addr) : "Ir" (nr)); -c0105790: 8b 45 e0 mov -0x20(%ebp),%eax -c0105793: 8b 55 e4 mov -0x1c(%ebp),%edx -c0105796: 0f b3 10 btr %edx,(%eax) - } - - // Allocate all pages under this node. - buddy_longest[index] = 0; - struct Page* new_page = buddy_node_index_to_page(index, node_size); - for (struct Page* p = new_page; p != (new_page + node_size); ++ p) { -c0105799: 83 45 ec 14 addl $0x14,-0x14(%ebp) -c010579d: 8b 55 f0 mov -0x10(%ebp),%edx -c01057a0: 89 d0 mov %edx,%eax -c01057a2: c1 e0 02 shl $0x2,%eax -c01057a5: 01 d0 add %edx,%eax -c01057a7: c1 e0 02 shl $0x2,%eax -c01057aa: 89 c2 mov %eax,%edx -c01057ac: 8b 45 e8 mov -0x18(%ebp),%eax -c01057af: 01 d0 add %edx,%eax -c01057b1: 3b 45 ec cmp -0x14(%ebp),%eax -c01057b4: 75 ba jne c0105770 - // Set property = not free. - ClearPageProperty(p); - } - - // Update parent longest value because this node is used. - while (index) { -c01057b6: eb 47 jmp c01057ff - index = PARENT(index); -c01057b8: 8b 45 f4 mov -0xc(%ebp),%eax -c01057bb: 83 c0 01 add $0x1,%eax -c01057be: d1 e8 shr %eax -c01057c0: 83 e8 01 sub $0x1,%eax -c01057c3: 89 45 f4 mov %eax,-0xc(%ebp) - buddy_longest[index] = -c01057c6: a1 4c a9 11 c0 mov 0xc011a94c,%eax -c01057cb: 8b 55 f4 mov -0xc(%ebp),%edx -c01057ce: c1 e2 02 shl $0x2,%edx -c01057d1: 8d 0c 10 lea (%eax,%edx,1),%ecx - MAX(buddy_longest[LEFT_LEAF(index)], buddy_longest[RIGHT_LEAF(index)]); -c01057d4: a1 4c a9 11 c0 mov 0xc011a94c,%eax -c01057d9: 8b 55 f4 mov -0xc(%ebp),%edx -c01057dc: 83 c2 01 add $0x1,%edx -c01057df: c1 e2 03 shl $0x3,%edx -c01057e2: 01 d0 add %edx,%eax -c01057e4: 8b 10 mov (%eax),%edx -c01057e6: a1 4c a9 11 c0 mov 0xc011a94c,%eax -c01057eb: 8b 5d f4 mov -0xc(%ebp),%ebx -c01057ee: c1 e3 03 shl $0x3,%ebx -c01057f1: 83 c3 04 add $0x4,%ebx -c01057f4: 01 d8 add %ebx,%eax -c01057f6: 8b 00 mov (%eax),%eax -c01057f8: 39 c2 cmp %eax,%edx -c01057fa: 0f 43 c2 cmovae %edx,%eax - } - - // Update parent longest value because this node is used. - while (index) { - index = PARENT(index); - buddy_longest[index] = -c01057fd: 89 01 mov %eax,(%ecx) - // Set property = not free. - ClearPageProperty(p); - } - - // Update parent longest value because this node is used. - while (index) { -c01057ff: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c0105803: 75 b3 jne c01057b8 - index = PARENT(index); - buddy_longest[index] = - MAX(buddy_longest[LEFT_LEAF(index)], buddy_longest[RIGHT_LEAF(index)]); - } - return new_page; -c0105805: 8b 45 e8 mov -0x18(%ebp),%eax -} -c0105808: 8b 5d fc mov -0x4(%ebp),%ebx -c010580b: c9 leave -c010580c: c3 ret - -c010580d : - -static void -buddy_free_pages(struct Page *base, size_t n) { -c010580d: 55 push %ebp -c010580e: 89 e5 mov %esp,%ebp -c0105810: 83 ec 48 sub $0x48,%esp - assert(n > 0); -c0105813: 83 7d 0c 00 cmpl $0x0,0xc(%ebp) -c0105817: 75 19 jne c0105832 -c0105819: 68 1c 7b 10 c0 push $0xc0107b1c -c010581e: 68 22 7b 10 c0 push $0xc0107b22 -c0105823: 68 82 00 00 00 push $0x82 -c0105828: 68 37 7b 10 c0 push $0xc0107b37 -c010582d: e8 9b ab ff ff call c01003cd <__panic> - // Find the base-correponded node and its size; - unsigned int index = (unsigned int)(base - buddy_allocatable_base) + buddy_max_pages - 1; -c0105832: 8b 45 08 mov 0x8(%ebp),%eax -c0105835: 8b 15 54 a9 11 c0 mov 0xc011a954,%edx -c010583b: 29 d0 sub %edx,%eax -c010583d: c1 f8 02 sar $0x2,%eax -c0105840: 69 c0 cd cc cc cc imul $0xcccccccd,%eax,%eax -c0105846: 89 c2 mov %eax,%edx -c0105848: a1 50 a9 11 c0 mov 0xc011a950,%eax -c010584d: 01 d0 add %edx,%eax -c010584f: 83 e8 01 sub $0x1,%eax -c0105852: 89 45 f4 mov %eax,-0xc(%ebp) - unsigned int node_size = 1; -c0105855: c7 45 f0 01 00 00 00 movl $0x1,-0x10(%ebp) - - // Starting from the leaf and find the first (lowest) node has longest = 0; - while (buddy_longest[index] != 0) { -c010585c: eb 30 jmp c010588e - node_size *= 2; -c010585e: d1 65 f0 shll -0x10(%ebp) - // cannot find the corresponding node for the base. - assert(index != 0); -c0105861: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c0105865: 75 19 jne c0105880 -c0105867: 68 c7 7b 10 c0 push $0xc0107bc7 -c010586c: 68 22 7b 10 c0 push $0xc0107b22 -c0105871: 68 8b 00 00 00 push $0x8b -c0105876: 68 37 7b 10 c0 push $0xc0107b37 -c010587b: e8 4d ab ff ff call c01003cd <__panic> - index = PARENT(index); -c0105880: 8b 45 f4 mov -0xc(%ebp),%eax -c0105883: 83 c0 01 add $0x1,%eax -c0105886: d1 e8 shr %eax -c0105888: 83 e8 01 sub $0x1,%eax -c010588b: 89 45 f4 mov %eax,-0xc(%ebp) - // Find the base-correponded node and its size; - unsigned int index = (unsigned int)(base - buddy_allocatable_base) + buddy_max_pages - 1; - unsigned int node_size = 1; - - // Starting from the leaf and find the first (lowest) node has longest = 0; - while (buddy_longest[index] != 0) { -c010588e: a1 4c a9 11 c0 mov 0xc011a94c,%eax -c0105893: 8b 55 f4 mov -0xc(%ebp),%edx -c0105896: c1 e2 02 shl $0x2,%edx -c0105899: 01 d0 add %edx,%eax -c010589b: 8b 00 mov (%eax),%eax -c010589d: 85 c0 test %eax,%eax -c010589f: 75 bd jne c010585e - - // NOTICE: Be careful when releasing memory if the following line is commented. - // assert(node_size == n); - - // Free the pages. - struct Page *p = base; -c01058a1: 8b 45 08 mov 0x8(%ebp),%eax -c01058a4: 89 45 ec mov %eax,-0x14(%ebp) - for (; p != base + n; p ++) { -c01058a7: e9 9e 00 00 00 jmp c010594a - assert(!PageReserved(p) && !PageProperty(p)); -c01058ac: 8b 45 ec mov -0x14(%ebp),%eax -c01058af: 83 c0 04 add $0x4,%eax -c01058b2: c7 45 d8 00 00 00 00 movl $0x0,-0x28(%ebp) -c01058b9: 89 45 d4 mov %eax,-0x2c(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); -c01058bc: 8b 45 d4 mov -0x2c(%ebp),%eax -c01058bf: 8b 55 d8 mov -0x28(%ebp),%edx -c01058c2: 0f a3 10 bt %edx,(%eax) -c01058c5: 19 c0 sbb %eax,%eax -c01058c7: 89 45 d0 mov %eax,-0x30(%ebp) - return oldbit != 0; -c01058ca: 83 7d d0 00 cmpl $0x0,-0x30(%ebp) -c01058ce: 0f 95 c0 setne %al -c01058d1: 0f b6 c0 movzbl %al,%eax -c01058d4: 85 c0 test %eax,%eax -c01058d6: 75 2c jne c0105904 -c01058d8: 8b 45 ec mov -0x14(%ebp),%eax -c01058db: 83 c0 04 add $0x4,%eax -c01058de: c7 45 e8 01 00 00 00 movl $0x1,-0x18(%ebp) -c01058e5: 89 45 cc mov %eax,-0x34(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); -c01058e8: 8b 45 cc mov -0x34(%ebp),%eax -c01058eb: 8b 55 e8 mov -0x18(%ebp),%edx -c01058ee: 0f a3 10 bt %edx,(%eax) -c01058f1: 19 c0 sbb %eax,%eax -c01058f3: 89 45 c8 mov %eax,-0x38(%ebp) - return oldbit != 0; -c01058f6: 83 7d c8 00 cmpl $0x0,-0x38(%ebp) -c01058fa: 0f 95 c0 setne %al -c01058fd: 0f b6 c0 movzbl %al,%eax -c0105900: 85 c0 test %eax,%eax -c0105902: 74 19 je c010591d -c0105904: 68 d4 7b 10 c0 push $0xc0107bd4 -c0105909: 68 22 7b 10 c0 push $0xc0107b22 -c010590e: 68 95 00 00 00 push $0x95 -c0105913: 68 37 7b 10 c0 push $0xc0107b37 -c0105918: e8 b0 aa ff ff call c01003cd <__panic> - SetPageProperty(p); -c010591d: 8b 45 ec mov -0x14(%ebp),%eax -c0105920: 83 c0 04 add $0x4,%eax -c0105923: c7 45 e4 01 00 00 00 movl $0x1,-0x1c(%ebp) -c010592a: 89 45 c4 mov %eax,-0x3c(%ebp) - * Note that @nr may be almost arbitrarily large; this function is not - * restricted to acting on a single-word quantity. - * */ -static inline void -set_bit(int nr, volatile void *addr) { - asm volatile ("btsl %1, %0" :"=m" (*(volatile long *)addr) : "Ir" (nr)); -c010592d: 8b 45 c4 mov -0x3c(%ebp),%eax -c0105930: 8b 55 e4 mov -0x1c(%ebp),%edx -c0105933: 0f ab 10 bts %edx,(%eax) - set_page_ref(p, 0); -c0105936: 83 ec 08 sub $0x8,%esp -c0105939: 6a 00 push $0x0 -c010593b: ff 75 ec pushl -0x14(%ebp) -c010593e: e8 ad fa ff ff call c01053f0 -c0105943: 83 c4 10 add $0x10,%esp - // NOTICE: Be careful when releasing memory if the following line is commented. - // assert(node_size == n); - - // Free the pages. - struct Page *p = base; - for (; p != base + n; p ++) { -c0105946: 83 45 ec 14 addl $0x14,-0x14(%ebp) -c010594a: 8b 55 0c mov 0xc(%ebp),%edx -c010594d: 89 d0 mov %edx,%eax -c010594f: c1 e0 02 shl $0x2,%eax -c0105952: 01 d0 add %edx,%eax -c0105954: c1 e0 02 shl $0x2,%eax -c0105957: 89 c2 mov %eax,%edx -c0105959: 8b 45 08 mov 0x8(%ebp),%eax -c010595c: 01 d0 add %edx,%eax -c010595e: 3b 45 ec cmp -0x14(%ebp),%eax -c0105961: 0f 85 45 ff ff ff jne c01058ac - SetPageProperty(p); - set_page_ref(p, 0); - } - - // Update longest. - buddy_longest[index] = node_size; -c0105967: a1 4c a9 11 c0 mov 0xc011a94c,%eax -c010596c: 8b 55 f4 mov -0xc(%ebp),%edx -c010596f: c1 e2 02 shl $0x2,%edx -c0105972: 01 c2 add %eax,%edx -c0105974: 8b 45 f0 mov -0x10(%ebp),%eax -c0105977: 89 02 mov %eax,(%edx) - while (index != 0) { -c0105979: eb 75 jmp c01059f0 - // Starting from this node, try to merge all the way to parent. - // The condition for merging is (left_child + right_child = node_size) - index = PARENT(index); -c010597b: 8b 45 f4 mov -0xc(%ebp),%eax -c010597e: 83 c0 01 add $0x1,%eax -c0105981: d1 e8 shr %eax -c0105983: 83 e8 01 sub $0x1,%eax -c0105986: 89 45 f4 mov %eax,-0xc(%ebp) - node_size *= 2; -c0105989: d1 65 f0 shll -0x10(%ebp) - unsigned int left_longest = buddy_longest[LEFT_LEAF(index)]; -c010598c: a1 4c a9 11 c0 mov 0xc011a94c,%eax -c0105991: 8b 55 f4 mov -0xc(%ebp),%edx -c0105994: c1 e2 03 shl $0x3,%edx -c0105997: 83 c2 04 add $0x4,%edx -c010599a: 01 d0 add %edx,%eax -c010599c: 8b 00 mov (%eax),%eax -c010599e: 89 45 e0 mov %eax,-0x20(%ebp) - unsigned int right_longest = buddy_longest[RIGHT_LEAF(index)]; -c01059a1: a1 4c a9 11 c0 mov 0xc011a94c,%eax -c01059a6: 8b 55 f4 mov -0xc(%ebp),%edx -c01059a9: 83 c2 01 add $0x1,%edx -c01059ac: c1 e2 03 shl $0x3,%edx -c01059af: 01 d0 add %edx,%eax -c01059b1: 8b 00 mov (%eax),%eax -c01059b3: 89 45 dc mov %eax,-0x24(%ebp) - - if (left_longest + right_longest == node_size) { -c01059b6: 8b 55 e0 mov -0x20(%ebp),%edx -c01059b9: 8b 45 dc mov -0x24(%ebp),%eax -c01059bc: 01 d0 add %edx,%eax -c01059be: 3b 45 f0 cmp -0x10(%ebp),%eax -c01059c1: 75 14 jne c01059d7 - buddy_longest[index] = node_size; -c01059c3: a1 4c a9 11 c0 mov 0xc011a94c,%eax -c01059c8: 8b 55 f4 mov -0xc(%ebp),%edx -c01059cb: c1 e2 02 shl $0x2,%edx -c01059ce: 01 c2 add %eax,%edx -c01059d0: 8b 45 f0 mov -0x10(%ebp),%eax -c01059d3: 89 02 mov %eax,(%edx) -c01059d5: eb 19 jmp c01059f0 - } else { - // update because the child is updated. - buddy_longest[index] = MAX(left_longest, right_longest); -c01059d7: a1 4c a9 11 c0 mov 0xc011a94c,%eax -c01059dc: 8b 55 f4 mov -0xc(%ebp),%edx -c01059df: c1 e2 02 shl $0x2,%edx -c01059e2: 01 c2 add %eax,%edx -c01059e4: 8b 45 e0 mov -0x20(%ebp),%eax -c01059e7: 39 45 dc cmp %eax,-0x24(%ebp) -c01059ea: 0f 43 45 dc cmovae -0x24(%ebp),%eax -c01059ee: 89 02 mov %eax,(%edx) - set_page_ref(p, 0); - } - - // Update longest. - buddy_longest[index] = node_size; - while (index != 0) { -c01059f0: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c01059f4: 75 85 jne c010597b - } else { - // update because the child is updated. - buddy_longest[index] = MAX(left_longest, right_longest); - } - } -} -c01059f6: 90 nop -c01059f7: c9 leave -c01059f8: c3 ret - -c01059f9 : - -static size_t -buddy_nr_free_pages(void) { -c01059f9: 55 push %ebp -c01059fa: 89 e5 mov %esp,%ebp - return buddy_longest[0]; -c01059fc: a1 4c a9 11 c0 mov 0xc011a94c,%eax -c0105a01: 8b 00 mov (%eax),%eax -} -c0105a03: 5d pop %ebp -c0105a04: c3 ret - -c0105a05 : - -static void -buddy_check(void) { -c0105a05: 55 push %ebp -c0105a06: 89 e5 mov %esp,%ebp -c0105a08: 81 ec 98 00 00 00 sub $0x98,%esp - int all_pages = nr_free_pages(); -c0105a0e: e8 cf d3 ff ff call c0102de2 -c0105a13: 89 45 f4 mov %eax,-0xc(%ebp) - struct Page* p0, *p1, *p2, *p3, *p4; - assert(alloc_pages(all_pages + 1) == NULL); -c0105a16: 8b 45 f4 mov -0xc(%ebp),%eax -c0105a19: 83 c0 01 add $0x1,%eax -c0105a1c: 83 ec 0c sub $0xc,%esp -c0105a1f: 50 push %eax -c0105a20: e8 4a d3 ff ff call c0102d6f -c0105a25: 83 c4 10 add $0x10,%esp -c0105a28: 85 c0 test %eax,%eax -c0105a2a: 74 19 je c0105a45 -c0105a2c: 68 fc 7b 10 c0 push $0xc0107bfc -c0105a31: 68 22 7b 10 c0 push $0xc0107b22 -c0105a36: 68 b6 00 00 00 push $0xb6 -c0105a3b: 68 37 7b 10 c0 push $0xc0107b37 -c0105a40: e8 88 a9 ff ff call c01003cd <__panic> - - p0 = alloc_pages(1); -c0105a45: 83 ec 0c sub $0xc,%esp -c0105a48: 6a 01 push $0x1 -c0105a4a: e8 20 d3 ff ff call c0102d6f -c0105a4f: 83 c4 10 add $0x10,%esp -c0105a52: 89 45 f0 mov %eax,-0x10(%ebp) - assert(p0 != NULL); -c0105a55: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) -c0105a59: 75 19 jne c0105a74 -c0105a5b: 68 1f 7c 10 c0 push $0xc0107c1f -c0105a60: 68 22 7b 10 c0 push $0xc0107b22 -c0105a65: 68 b9 00 00 00 push $0xb9 -c0105a6a: 68 37 7b 10 c0 push $0xc0107b37 -c0105a6f: e8 59 a9 ff ff call c01003cd <__panic> - p1 = alloc_pages(2); -c0105a74: 83 ec 0c sub $0xc,%esp -c0105a77: 6a 02 push $0x2 -c0105a79: e8 f1 d2 ff ff call c0102d6f -c0105a7e: 83 c4 10 add $0x10,%esp -c0105a81: 89 45 ec mov %eax,-0x14(%ebp) - assert(p1 == p0 + 2); -c0105a84: 8b 45 f0 mov -0x10(%ebp),%eax -c0105a87: 83 c0 28 add $0x28,%eax -c0105a8a: 3b 45 ec cmp -0x14(%ebp),%eax -c0105a8d: 74 19 je c0105aa8 -c0105a8f: 68 2a 7c 10 c0 push $0xc0107c2a -c0105a94: 68 22 7b 10 c0 push $0xc0107b22 -c0105a99: 68 bb 00 00 00 push $0xbb -c0105a9e: 68 37 7b 10 c0 push $0xc0107b37 -c0105aa3: e8 25 a9 ff ff call c01003cd <__panic> - assert(!PageReserved(p0) && !PageReserved(p1)); -c0105aa8: 8b 45 f0 mov -0x10(%ebp),%eax -c0105aab: 83 c0 04 add $0x4,%eax -c0105aae: c7 45 bc 00 00 00 00 movl $0x0,-0x44(%ebp) -c0105ab5: 89 45 b8 mov %eax,-0x48(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); -c0105ab8: 8b 45 b8 mov -0x48(%ebp),%eax -c0105abb: 8b 55 bc mov -0x44(%ebp),%edx -c0105abe: 0f a3 10 bt %edx,(%eax) -c0105ac1: 19 c0 sbb %eax,%eax -c0105ac3: 89 45 b4 mov %eax,-0x4c(%ebp) - return oldbit != 0; -c0105ac6: 83 7d b4 00 cmpl $0x0,-0x4c(%ebp) -c0105aca: 0f 95 c0 setne %al -c0105acd: 0f b6 c0 movzbl %al,%eax -c0105ad0: 85 c0 test %eax,%eax -c0105ad2: 75 2c jne c0105b00 -c0105ad4: 8b 45 ec mov -0x14(%ebp),%eax -c0105ad7: 83 c0 04 add $0x4,%eax -c0105ada: c7 45 e8 00 00 00 00 movl $0x0,-0x18(%ebp) -c0105ae1: 89 45 b0 mov %eax,-0x50(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); -c0105ae4: 8b 45 b0 mov -0x50(%ebp),%eax -c0105ae7: 8b 55 e8 mov -0x18(%ebp),%edx -c0105aea: 0f a3 10 bt %edx,(%eax) -c0105aed: 19 c0 sbb %eax,%eax -c0105aef: 89 45 ac mov %eax,-0x54(%ebp) - return oldbit != 0; -c0105af2: 83 7d ac 00 cmpl $0x0,-0x54(%ebp) -c0105af6: 0f 95 c0 setne %al -c0105af9: 0f b6 c0 movzbl %al,%eax -c0105afc: 85 c0 test %eax,%eax -c0105afe: 74 19 je c0105b19 -c0105b00: 68 38 7c 10 c0 push $0xc0107c38 -c0105b05: 68 22 7b 10 c0 push $0xc0107b22 -c0105b0a: 68 bc 00 00 00 push $0xbc -c0105b0f: 68 37 7b 10 c0 push $0xc0107b37 -c0105b14: e8 b4 a8 ff ff call c01003cd <__panic> - assert(!PageProperty(p0) && !PageProperty(p1)); -c0105b19: 8b 45 f0 mov -0x10(%ebp),%eax -c0105b1c: 83 c0 04 add $0x4,%eax -c0105b1f: c7 45 e4 01 00 00 00 movl $0x1,-0x1c(%ebp) -c0105b26: 89 45 a8 mov %eax,-0x58(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); -c0105b29: 8b 45 a8 mov -0x58(%ebp),%eax -c0105b2c: 8b 55 e4 mov -0x1c(%ebp),%edx -c0105b2f: 0f a3 10 bt %edx,(%eax) -c0105b32: 19 c0 sbb %eax,%eax -c0105b34: 89 45 a4 mov %eax,-0x5c(%ebp) - return oldbit != 0; -c0105b37: 83 7d a4 00 cmpl $0x0,-0x5c(%ebp) -c0105b3b: 0f 95 c0 setne %al -c0105b3e: 0f b6 c0 movzbl %al,%eax -c0105b41: 85 c0 test %eax,%eax -c0105b43: 75 2c jne c0105b71 -c0105b45: 8b 45 ec mov -0x14(%ebp),%eax -c0105b48: 83 c0 04 add $0x4,%eax -c0105b4b: c7 45 e0 01 00 00 00 movl $0x1,-0x20(%ebp) -c0105b52: 89 45 a0 mov %eax,-0x60(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); -c0105b55: 8b 45 a0 mov -0x60(%ebp),%eax -c0105b58: 8b 55 e0 mov -0x20(%ebp),%edx -c0105b5b: 0f a3 10 bt %edx,(%eax) -c0105b5e: 19 c0 sbb %eax,%eax -c0105b60: 89 45 9c mov %eax,-0x64(%ebp) - return oldbit != 0; -c0105b63: 83 7d 9c 00 cmpl $0x0,-0x64(%ebp) -c0105b67: 0f 95 c0 setne %al -c0105b6a: 0f b6 c0 movzbl %al,%eax -c0105b6d: 85 c0 test %eax,%eax -c0105b6f: 74 19 je c0105b8a -c0105b71: 68 60 7c 10 c0 push $0xc0107c60 -c0105b76: 68 22 7b 10 c0 push $0xc0107b22 -c0105b7b: 68 bd 00 00 00 push $0xbd -c0105b80: 68 37 7b 10 c0 push $0xc0107b37 -c0105b85: e8 43 a8 ff ff call c01003cd <__panic> - - p2 = alloc_pages(1); -c0105b8a: 83 ec 0c sub $0xc,%esp -c0105b8d: 6a 01 push $0x1 -c0105b8f: e8 db d1 ff ff call c0102d6f -c0105b94: 83 c4 10 add $0x10,%esp -c0105b97: 89 45 d8 mov %eax,-0x28(%ebp) - assert(p2 == p0 + 1); -c0105b9a: 8b 45 f0 mov -0x10(%ebp),%eax -c0105b9d: 83 c0 14 add $0x14,%eax -c0105ba0: 3b 45 d8 cmp -0x28(%ebp),%eax -c0105ba3: 74 19 je c0105bbe -c0105ba5: 68 87 7c 10 c0 push $0xc0107c87 -c0105baa: 68 22 7b 10 c0 push $0xc0107b22 -c0105baf: 68 c0 00 00 00 push $0xc0 -c0105bb4: 68 37 7b 10 c0 push $0xc0107b37 -c0105bb9: e8 0f a8 ff ff call c01003cd <__panic> - - p3 = alloc_pages(2); -c0105bbe: 83 ec 0c sub $0xc,%esp -c0105bc1: 6a 02 push $0x2 -c0105bc3: e8 a7 d1 ff ff call c0102d6f -c0105bc8: 83 c4 10 add $0x10,%esp -c0105bcb: 89 45 d4 mov %eax,-0x2c(%ebp) - assert(p3 == p0 + 4); -c0105bce: 8b 45 f0 mov -0x10(%ebp),%eax -c0105bd1: 83 c0 50 add $0x50,%eax -c0105bd4: 3b 45 d4 cmp -0x2c(%ebp),%eax -c0105bd7: 74 19 je c0105bf2 -c0105bd9: 68 94 7c 10 c0 push $0xc0107c94 -c0105bde: 68 22 7b 10 c0 push $0xc0107b22 -c0105be3: 68 c3 00 00 00 push $0xc3 -c0105be8: 68 37 7b 10 c0 push $0xc0107b37 -c0105bed: e8 db a7 ff ff call c01003cd <__panic> - assert(!PageProperty(p3) && !PageProperty(p3 + 1) && PageProperty(p3 + 2)); -c0105bf2: 8b 45 d4 mov -0x2c(%ebp),%eax -c0105bf5: 83 c0 04 add $0x4,%eax -c0105bf8: c7 45 dc 01 00 00 00 movl $0x1,-0x24(%ebp) -c0105bff: 89 45 98 mov %eax,-0x68(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); -c0105c02: 8b 45 98 mov -0x68(%ebp),%eax -c0105c05: 8b 55 dc mov -0x24(%ebp),%edx -c0105c08: 0f a3 10 bt %edx,(%eax) -c0105c0b: 19 c0 sbb %eax,%eax -c0105c0d: 89 45 94 mov %eax,-0x6c(%ebp) - return oldbit != 0; -c0105c10: 83 7d 94 00 cmpl $0x0,-0x6c(%ebp) -c0105c14: 0f 95 c0 setne %al -c0105c17: 0f b6 c0 movzbl %al,%eax -c0105c1a: 85 c0 test %eax,%eax -c0105c1c: 75 5e jne c0105c7c -c0105c1e: 8b 45 d4 mov -0x2c(%ebp),%eax -c0105c21: 83 c0 14 add $0x14,%eax -c0105c24: 83 c0 04 add $0x4,%eax -c0105c27: c7 45 d0 01 00 00 00 movl $0x1,-0x30(%ebp) -c0105c2e: 89 45 90 mov %eax,-0x70(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); -c0105c31: 8b 45 90 mov -0x70(%ebp),%eax -c0105c34: 8b 55 d0 mov -0x30(%ebp),%edx -c0105c37: 0f a3 10 bt %edx,(%eax) -c0105c3a: 19 c0 sbb %eax,%eax -c0105c3c: 89 45 8c mov %eax,-0x74(%ebp) - return oldbit != 0; -c0105c3f: 83 7d 8c 00 cmpl $0x0,-0x74(%ebp) -c0105c43: 0f 95 c0 setne %al -c0105c46: 0f b6 c0 movzbl %al,%eax -c0105c49: 85 c0 test %eax,%eax -c0105c4b: 75 2f jne c0105c7c -c0105c4d: 8b 45 d4 mov -0x2c(%ebp),%eax -c0105c50: 83 c0 28 add $0x28,%eax -c0105c53: 83 c0 04 add $0x4,%eax -c0105c56: c7 45 cc 01 00 00 00 movl $0x1,-0x34(%ebp) -c0105c5d: 89 45 88 mov %eax,-0x78(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); -c0105c60: 8b 45 88 mov -0x78(%ebp),%eax -c0105c63: 8b 55 cc mov -0x34(%ebp),%edx -c0105c66: 0f a3 10 bt %edx,(%eax) -c0105c69: 19 c0 sbb %eax,%eax -c0105c6b: 89 45 84 mov %eax,-0x7c(%ebp) - return oldbit != 0; -c0105c6e: 83 7d 84 00 cmpl $0x0,-0x7c(%ebp) -c0105c72: 0f 95 c0 setne %al -c0105c75: 0f b6 c0 movzbl %al,%eax -c0105c78: 85 c0 test %eax,%eax -c0105c7a: 75 19 jne c0105c95 -c0105c7c: 68 a4 7c 10 c0 push $0xc0107ca4 -c0105c81: 68 22 7b 10 c0 push $0xc0107b22 -c0105c86: 68 c4 00 00 00 push $0xc4 -c0105c8b: 68 37 7b 10 c0 push $0xc0107b37 -c0105c90: e8 38 a7 ff ff call c01003cd <__panic> - - free_pages(p1, 2); -c0105c95: 83 ec 08 sub $0x8,%esp -c0105c98: 6a 02 push $0x2 -c0105c9a: ff 75 ec pushl -0x14(%ebp) -c0105c9d: e8 0b d1 ff ff call c0102dad -c0105ca2: 83 c4 10 add $0x10,%esp - assert(PageProperty(p1) && PageProperty(p1 + 1)); -c0105ca5: 8b 45 ec mov -0x14(%ebp),%eax -c0105ca8: 83 c0 04 add $0x4,%eax -c0105cab: c7 45 c8 01 00 00 00 movl $0x1,-0x38(%ebp) -c0105cb2: 89 45 80 mov %eax,-0x80(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); -c0105cb5: 8b 45 80 mov -0x80(%ebp),%eax -c0105cb8: 8b 55 c8 mov -0x38(%ebp),%edx -c0105cbb: 0f a3 10 bt %edx,(%eax) -c0105cbe: 19 c0 sbb %eax,%eax -c0105cc0: 89 85 7c ff ff ff mov %eax,-0x84(%ebp) - return oldbit != 0; -c0105cc6: 83 bd 7c ff ff ff 00 cmpl $0x0,-0x84(%ebp) -c0105ccd: 0f 95 c0 setne %al -c0105cd0: 0f b6 c0 movzbl %al,%eax -c0105cd3: 85 c0 test %eax,%eax -c0105cd5: 74 3b je c0105d12 -c0105cd7: 8b 45 ec mov -0x14(%ebp),%eax -c0105cda: 83 c0 14 add $0x14,%eax -c0105cdd: 83 c0 04 add $0x4,%eax -c0105ce0: c7 45 c4 01 00 00 00 movl $0x1,-0x3c(%ebp) -c0105ce7: 89 85 78 ff ff ff mov %eax,-0x88(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); -c0105ced: 8b 85 78 ff ff ff mov -0x88(%ebp),%eax -c0105cf3: 8b 55 c4 mov -0x3c(%ebp),%edx -c0105cf6: 0f a3 10 bt %edx,(%eax) -c0105cf9: 19 c0 sbb %eax,%eax -c0105cfb: 89 85 74 ff ff ff mov %eax,-0x8c(%ebp) - return oldbit != 0; -c0105d01: 83 bd 74 ff ff ff 00 cmpl $0x0,-0x8c(%ebp) -c0105d08: 0f 95 c0 setne %al -c0105d0b: 0f b6 c0 movzbl %al,%eax -c0105d0e: 85 c0 test %eax,%eax -c0105d10: 75 19 jne c0105d2b -c0105d12: 68 e8 7c 10 c0 push $0xc0107ce8 -c0105d17: 68 22 7b 10 c0 push $0xc0107b22 -c0105d1c: 68 c7 00 00 00 push $0xc7 -c0105d21: 68 37 7b 10 c0 push $0xc0107b37 -c0105d26: e8 a2 a6 ff ff call c01003cd <__panic> - assert(p1->ref == 0); -c0105d2b: 8b 45 ec mov -0x14(%ebp),%eax -c0105d2e: 8b 00 mov (%eax),%eax -c0105d30: 85 c0 test %eax,%eax -c0105d32: 74 19 je c0105d4d -c0105d34: 68 11 7d 10 c0 push $0xc0107d11 -c0105d39: 68 22 7b 10 c0 push $0xc0107b22 -c0105d3e: 68 c8 00 00 00 push $0xc8 -c0105d43: 68 37 7b 10 c0 push $0xc0107b37 -c0105d48: e8 80 a6 ff ff call c01003cd <__panic> - - free_pages(p0, 1); -c0105d4d: 83 ec 08 sub $0x8,%esp -c0105d50: 6a 01 push $0x1 -c0105d52: ff 75 f0 pushl -0x10(%ebp) -c0105d55: e8 53 d0 ff ff call c0102dad -c0105d5a: 83 c4 10 add $0x10,%esp - free_pages(p2, 1); -c0105d5d: 83 ec 08 sub $0x8,%esp -c0105d60: 6a 01 push $0x1 -c0105d62: ff 75 d8 pushl -0x28(%ebp) -c0105d65: e8 43 d0 ff ff call c0102dad -c0105d6a: 83 c4 10 add $0x10,%esp - - p4 = alloc_pages(2); -c0105d6d: 83 ec 0c sub $0xc,%esp -c0105d70: 6a 02 push $0x2 -c0105d72: e8 f8 cf ff ff call c0102d6f -c0105d77: 83 c4 10 add $0x10,%esp -c0105d7a: 89 45 c0 mov %eax,-0x40(%ebp) - assert(p4 == p0); -c0105d7d: 8b 45 c0 mov -0x40(%ebp),%eax -c0105d80: 3b 45 f0 cmp -0x10(%ebp),%eax -c0105d83: 74 19 je c0105d9e -c0105d85: 68 1e 7d 10 c0 push $0xc0107d1e -c0105d8a: 68 22 7b 10 c0 push $0xc0107b22 -c0105d8f: 68 ce 00 00 00 push $0xce -c0105d94: 68 37 7b 10 c0 push $0xc0107b37 -c0105d99: e8 2f a6 ff ff call c01003cd <__panic> - free_pages(p4, 2); -c0105d9e: 83 ec 08 sub $0x8,%esp -c0105da1: 6a 02 push $0x2 -c0105da3: ff 75 c0 pushl -0x40(%ebp) -c0105da6: e8 02 d0 ff ff call c0102dad -c0105dab: 83 c4 10 add $0x10,%esp - assert((*(p4 + 1)).ref == 0); -c0105dae: 8b 45 c0 mov -0x40(%ebp),%eax -c0105db1: 83 c0 14 add $0x14,%eax -c0105db4: 8b 00 mov (%eax),%eax -c0105db6: 85 c0 test %eax,%eax -c0105db8: 74 19 je c0105dd3 -c0105dba: 68 27 7d 10 c0 push $0xc0107d27 -c0105dbf: 68 22 7b 10 c0 push $0xc0107b22 -c0105dc4: 68 d0 00 00 00 push $0xd0 -c0105dc9: 68 37 7b 10 c0 push $0xc0107b37 -c0105dce: e8 fa a5 ff ff call c01003cd <__panic> - - assert(nr_free_pages() == all_pages / 2); -c0105dd3: e8 0a d0 ff ff call c0102de2 -c0105dd8: 89 c1 mov %eax,%ecx -c0105dda: 8b 45 f4 mov -0xc(%ebp),%eax -c0105ddd: 89 c2 mov %eax,%edx -c0105ddf: c1 ea 1f shr $0x1f,%edx -c0105de2: 01 d0 add %edx,%eax -c0105de4: d1 f8 sar %eax -c0105de6: 39 c1 cmp %eax,%ecx -c0105de8: 74 19 je c0105e03 -c0105dea: 68 3c 7d 10 c0 push $0xc0107d3c -c0105def: 68 22 7b 10 c0 push $0xc0107b22 -c0105df4: 68 d2 00 00 00 push $0xd2 -c0105df9: 68 37 7b 10 c0 push $0xc0107b37 -c0105dfe: e8 ca a5 ff ff call c01003cd <__panic> - - free_pages(p3, 2); -c0105e03: 83 ec 08 sub $0x8,%esp -c0105e06: 6a 02 push $0x2 -c0105e08: ff 75 d4 pushl -0x2c(%ebp) -c0105e0b: e8 9d cf ff ff call c0102dad -c0105e10: 83 c4 10 add $0x10,%esp - - p1 = alloc_pages(33); -c0105e13: 83 ec 0c sub $0xc,%esp -c0105e16: 6a 21 push $0x21 -c0105e18: e8 52 cf ff ff call c0102d6f -c0105e1d: 83 c4 10 add $0x10,%esp -c0105e20: 89 45 ec mov %eax,-0x14(%ebp) - free_pages(p1, 64); -c0105e23: 83 ec 08 sub $0x8,%esp -c0105e26: 6a 40 push $0x40 -c0105e28: ff 75 ec pushl -0x14(%ebp) -c0105e2b: e8 7d cf ff ff call c0102dad -c0105e30: 83 c4 10 add $0x10,%esp -} -c0105e33: 90 nop -c0105e34: c9 leave -c0105e35: c3 ret - -c0105e36 : - * @s: the input string - * - * The strlen() function returns the length of string @s. - * */ -size_t -strlen(const char *s) { -c0105e36: 55 push %ebp -c0105e37: 89 e5 mov %esp,%ebp -c0105e39: 83 ec 10 sub $0x10,%esp - size_t cnt = 0; -c0105e3c: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp) - while (*s ++ != '\0') { -c0105e43: eb 04 jmp c0105e49 - cnt ++; -c0105e45: 83 45 fc 01 addl $0x1,-0x4(%ebp) - * The strlen() function returns the length of string @s. - * */ -size_t -strlen(const char *s) { - size_t cnt = 0; - while (*s ++ != '\0') { -c0105e49: 8b 45 08 mov 0x8(%ebp),%eax -c0105e4c: 8d 50 01 lea 0x1(%eax),%edx -c0105e4f: 89 55 08 mov %edx,0x8(%ebp) -c0105e52: 0f b6 00 movzbl (%eax),%eax -c0105e55: 84 c0 test %al,%al -c0105e57: 75 ec jne c0105e45 - cnt ++; - } - return cnt; -c0105e59: 8b 45 fc mov -0x4(%ebp),%eax -} -c0105e5c: c9 leave -c0105e5d: c3 ret - -c0105e5e : - * The return value is strlen(s), if that is less than @len, or - * @len if there is no '\0' character among the first @len characters - * pointed by @s. - * */ -size_t -strnlen(const char *s, size_t len) { -c0105e5e: 55 push %ebp -c0105e5f: 89 e5 mov %esp,%ebp -c0105e61: 83 ec 10 sub $0x10,%esp - size_t cnt = 0; -c0105e64: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp) - while (cnt < len && *s ++ != '\0') { -c0105e6b: eb 04 jmp c0105e71 - cnt ++; -c0105e6d: 83 45 fc 01 addl $0x1,-0x4(%ebp) - * pointed by @s. - * */ -size_t -strnlen(const char *s, size_t len) { - size_t cnt = 0; - while (cnt < len && *s ++ != '\0') { -c0105e71: 8b 45 fc mov -0x4(%ebp),%eax -c0105e74: 3b 45 0c cmp 0xc(%ebp),%eax -c0105e77: 73 10 jae c0105e89 -c0105e79: 8b 45 08 mov 0x8(%ebp),%eax -c0105e7c: 8d 50 01 lea 0x1(%eax),%edx -c0105e7f: 89 55 08 mov %edx,0x8(%ebp) -c0105e82: 0f b6 00 movzbl (%eax),%eax -c0105e85: 84 c0 test %al,%al -c0105e87: 75 e4 jne c0105e6d - cnt ++; - } - return cnt; -c0105e89: 8b 45 fc mov -0x4(%ebp),%eax -} -c0105e8c: c9 leave -c0105e8d: c3 ret - -c0105e8e : - * To avoid overflows, the size of array pointed by @dst should be long enough to - * contain the same string as @src (including the terminating null character), and - * should not overlap in memory with @src. - * */ -char * -strcpy(char *dst, const char *src) { -c0105e8e: 55 push %ebp -c0105e8f: 89 e5 mov %esp,%ebp -c0105e91: 57 push %edi -c0105e92: 56 push %esi -c0105e93: 83 ec 20 sub $0x20,%esp -c0105e96: 8b 45 08 mov 0x8(%ebp),%eax -c0105e99: 89 45 f4 mov %eax,-0xc(%ebp) -c0105e9c: 8b 45 0c mov 0xc(%ebp),%eax -c0105e9f: 89 45 f0 mov %eax,-0x10(%ebp) -#ifndef __HAVE_ARCH_STRCPY -#define __HAVE_ARCH_STRCPY -static inline char * -__strcpy(char *dst, const char *src) { - int d0, d1, d2; - asm volatile ( -c0105ea2: 8b 55 f0 mov -0x10(%ebp),%edx -c0105ea5: 8b 45 f4 mov -0xc(%ebp),%eax -c0105ea8: 89 d1 mov %edx,%ecx -c0105eaa: 89 c2 mov %eax,%edx -c0105eac: 89 ce mov %ecx,%esi -c0105eae: 89 d7 mov %edx,%edi -c0105eb0: ac lods %ds:(%esi),%al -c0105eb1: aa stos %al,%es:(%edi) -c0105eb2: 84 c0 test %al,%al -c0105eb4: 75 fa jne c0105eb0 -c0105eb6: 89 fa mov %edi,%edx -c0105eb8: 89 f1 mov %esi,%ecx -c0105eba: 89 4d ec mov %ecx,-0x14(%ebp) -c0105ebd: 89 55 e8 mov %edx,-0x18(%ebp) -c0105ec0: 89 45 e4 mov %eax,-0x1c(%ebp) - "stosb;" - "testb %%al, %%al;" - "jne 1b;" - : "=&S" (d0), "=&D" (d1), "=&a" (d2) - : "0" (src), "1" (dst) : "memory"); - return dst; -c0105ec3: 8b 45 f4 mov -0xc(%ebp),%eax -#ifdef __HAVE_ARCH_STRCPY - return __strcpy(dst, src); -c0105ec6: 90 nop - char *p = dst; - while ((*p ++ = *src ++) != '\0') - /* nothing */; - return dst; -#endif /* __HAVE_ARCH_STRCPY */ -} -c0105ec7: 83 c4 20 add $0x20,%esp -c0105eca: 5e pop %esi -c0105ecb: 5f pop %edi -c0105ecc: 5d pop %ebp -c0105ecd: c3 ret - -c0105ece : - * @len: maximum number of characters to be copied from @src - * - * The return value is @dst - * */ -char * -strncpy(char *dst, const char *src, size_t len) { -c0105ece: 55 push %ebp -c0105ecf: 89 e5 mov %esp,%ebp -c0105ed1: 83 ec 10 sub $0x10,%esp - char *p = dst; -c0105ed4: 8b 45 08 mov 0x8(%ebp),%eax -c0105ed7: 89 45 fc mov %eax,-0x4(%ebp) - while (len > 0) { -c0105eda: eb 21 jmp c0105efd - if ((*p = *src) != '\0') { -c0105edc: 8b 45 0c mov 0xc(%ebp),%eax -c0105edf: 0f b6 10 movzbl (%eax),%edx -c0105ee2: 8b 45 fc mov -0x4(%ebp),%eax -c0105ee5: 88 10 mov %dl,(%eax) -c0105ee7: 8b 45 fc mov -0x4(%ebp),%eax -c0105eea: 0f b6 00 movzbl (%eax),%eax -c0105eed: 84 c0 test %al,%al -c0105eef: 74 04 je c0105ef5 - src ++; -c0105ef1: 83 45 0c 01 addl $0x1,0xc(%ebp) - } - p ++, len --; -c0105ef5: 83 45 fc 01 addl $0x1,-0x4(%ebp) -c0105ef9: 83 6d 10 01 subl $0x1,0x10(%ebp) - * The return value is @dst - * */ -char * -strncpy(char *dst, const char *src, size_t len) { - char *p = dst; - while (len > 0) { -c0105efd: 83 7d 10 00 cmpl $0x0,0x10(%ebp) -c0105f01: 75 d9 jne c0105edc - if ((*p = *src) != '\0') { - src ++; - } - p ++, len --; - } - return dst; -c0105f03: 8b 45 08 mov 0x8(%ebp),%eax -} -c0105f06: c9 leave -c0105f07: c3 ret - -c0105f08 : - * - A value greater than zero indicates that the first character that does - * not match has a greater value in @s1 than in @s2; - * - And a value less than zero indicates the opposite. - * */ -int -strcmp(const char *s1, const char *s2) { -c0105f08: 55 push %ebp -c0105f09: 89 e5 mov %esp,%ebp -c0105f0b: 57 push %edi -c0105f0c: 56 push %esi -c0105f0d: 83 ec 20 sub $0x20,%esp -c0105f10: 8b 45 08 mov 0x8(%ebp),%eax -c0105f13: 89 45 f4 mov %eax,-0xc(%ebp) -c0105f16: 8b 45 0c mov 0xc(%ebp),%eax -c0105f19: 89 45 f0 mov %eax,-0x10(%ebp) -#ifndef __HAVE_ARCH_STRCMP -#define __HAVE_ARCH_STRCMP -static inline int -__strcmp(const char *s1, const char *s2) { - int d0, d1, ret; - asm volatile ( -c0105f1c: 8b 55 f4 mov -0xc(%ebp),%edx -c0105f1f: 8b 45 f0 mov -0x10(%ebp),%eax -c0105f22: 89 d1 mov %edx,%ecx -c0105f24: 89 c2 mov %eax,%edx -c0105f26: 89 ce mov %ecx,%esi -c0105f28: 89 d7 mov %edx,%edi -c0105f2a: ac lods %ds:(%esi),%al -c0105f2b: ae scas %es:(%edi),%al -c0105f2c: 75 08 jne c0105f36 -c0105f2e: 84 c0 test %al,%al -c0105f30: 75 f8 jne c0105f2a -c0105f32: 31 c0 xor %eax,%eax -c0105f34: eb 04 jmp c0105f3a -c0105f36: 19 c0 sbb %eax,%eax -c0105f38: 0c 01 or $0x1,%al -c0105f3a: 89 fa mov %edi,%edx -c0105f3c: 89 f1 mov %esi,%ecx -c0105f3e: 89 45 ec mov %eax,-0x14(%ebp) -c0105f41: 89 4d e8 mov %ecx,-0x18(%ebp) -c0105f44: 89 55 e4 mov %edx,-0x1c(%ebp) - "orb $1, %%al;" - "3:" - : "=a" (ret), "=&S" (d0), "=&D" (d1) - : "1" (s1), "2" (s2) - : "memory"); - return ret; -c0105f47: 8b 45 ec mov -0x14(%ebp),%eax -#ifdef __HAVE_ARCH_STRCMP - return __strcmp(s1, s2); -c0105f4a: 90 nop - while (*s1 != '\0' && *s1 == *s2) { - s1 ++, s2 ++; - } - return (int)((unsigned char)*s1 - (unsigned char)*s2); -#endif /* __HAVE_ARCH_STRCMP */ -} -c0105f4b: 83 c4 20 add $0x20,%esp -c0105f4e: 5e pop %esi -c0105f4f: 5f pop %edi -c0105f50: 5d pop %ebp -c0105f51: c3 ret - -c0105f52 : - * they are equal to each other, it continues with the following pairs until - * the characters differ, until a terminating null-character is reached, or - * until @n characters match in both strings, whichever happens first. - * */ -int -strncmp(const char *s1, const char *s2, size_t n) { -c0105f52: 55 push %ebp -c0105f53: 89 e5 mov %esp,%ebp - while (n > 0 && *s1 != '\0' && *s1 == *s2) { -c0105f55: eb 0c jmp c0105f63 - n --, s1 ++, s2 ++; -c0105f57: 83 6d 10 01 subl $0x1,0x10(%ebp) -c0105f5b: 83 45 08 01 addl $0x1,0x8(%ebp) -c0105f5f: 83 45 0c 01 addl $0x1,0xc(%ebp) - * the characters differ, until a terminating null-character is reached, or - * until @n characters match in both strings, whichever happens first. - * */ -int -strncmp(const char *s1, const char *s2, size_t n) { - while (n > 0 && *s1 != '\0' && *s1 == *s2) { -c0105f63: 83 7d 10 00 cmpl $0x0,0x10(%ebp) -c0105f67: 74 1a je c0105f83 -c0105f69: 8b 45 08 mov 0x8(%ebp),%eax -c0105f6c: 0f b6 00 movzbl (%eax),%eax -c0105f6f: 84 c0 test %al,%al -c0105f71: 74 10 je c0105f83 -c0105f73: 8b 45 08 mov 0x8(%ebp),%eax -c0105f76: 0f b6 10 movzbl (%eax),%edx -c0105f79: 8b 45 0c mov 0xc(%ebp),%eax -c0105f7c: 0f b6 00 movzbl (%eax),%eax -c0105f7f: 38 c2 cmp %al,%dl -c0105f81: 74 d4 je c0105f57 - n --, s1 ++, s2 ++; - } - return (n == 0) ? 0 : (int)((unsigned char)*s1 - (unsigned char)*s2); -c0105f83: 83 7d 10 00 cmpl $0x0,0x10(%ebp) -c0105f87: 74 18 je c0105fa1 -c0105f89: 8b 45 08 mov 0x8(%ebp),%eax -c0105f8c: 0f b6 00 movzbl (%eax),%eax -c0105f8f: 0f b6 d0 movzbl %al,%edx -c0105f92: 8b 45 0c mov 0xc(%ebp),%eax -c0105f95: 0f b6 00 movzbl (%eax),%eax -c0105f98: 0f b6 c0 movzbl %al,%eax -c0105f9b: 29 c2 sub %eax,%edx -c0105f9d: 89 d0 mov %edx,%eax -c0105f9f: eb 05 jmp c0105fa6 -c0105fa1: b8 00 00 00 00 mov $0x0,%eax -} -c0105fa6: 5d pop %ebp -c0105fa7: c3 ret - -c0105fa8 : - * - * The strchr() function returns a pointer to the first occurrence of - * character in @s. If the value is not found, the function returns 'NULL'. - * */ -char * -strchr(const char *s, char c) { -c0105fa8: 55 push %ebp -c0105fa9: 89 e5 mov %esp,%ebp -c0105fab: 83 ec 04 sub $0x4,%esp -c0105fae: 8b 45 0c mov 0xc(%ebp),%eax -c0105fb1: 88 45 fc mov %al,-0x4(%ebp) - while (*s != '\0') { -c0105fb4: eb 14 jmp c0105fca - if (*s == c) { -c0105fb6: 8b 45 08 mov 0x8(%ebp),%eax -c0105fb9: 0f b6 00 movzbl (%eax),%eax -c0105fbc: 3a 45 fc cmp -0x4(%ebp),%al -c0105fbf: 75 05 jne c0105fc6 - return (char *)s; -c0105fc1: 8b 45 08 mov 0x8(%ebp),%eax -c0105fc4: eb 13 jmp c0105fd9 - } - s ++; -c0105fc6: 83 45 08 01 addl $0x1,0x8(%ebp) - * The strchr() function returns a pointer to the first occurrence of - * character in @s. If the value is not found, the function returns 'NULL'. - * */ -char * -strchr(const char *s, char c) { - while (*s != '\0') { -c0105fca: 8b 45 08 mov 0x8(%ebp),%eax -c0105fcd: 0f b6 00 movzbl (%eax),%eax -c0105fd0: 84 c0 test %al,%al -c0105fd2: 75 e2 jne c0105fb6 - if (*s == c) { - return (char *)s; - } - s ++; - } - return NULL; -c0105fd4: b8 00 00 00 00 mov $0x0,%eax -} -c0105fd9: c9 leave -c0105fda: c3 ret - -c0105fdb : - * The strfind() function is like strchr() except that if @c is - * not found in @s, then it returns a pointer to the null byte at the - * end of @s, rather than 'NULL'. - * */ -char * -strfind(const char *s, char c) { -c0105fdb: 55 push %ebp -c0105fdc: 89 e5 mov %esp,%ebp -c0105fde: 83 ec 04 sub $0x4,%esp -c0105fe1: 8b 45 0c mov 0xc(%ebp),%eax -c0105fe4: 88 45 fc mov %al,-0x4(%ebp) - while (*s != '\0') { -c0105fe7: eb 0f jmp c0105ff8 - if (*s == c) { -c0105fe9: 8b 45 08 mov 0x8(%ebp),%eax -c0105fec: 0f b6 00 movzbl (%eax),%eax -c0105fef: 3a 45 fc cmp -0x4(%ebp),%al -c0105ff2: 74 10 je c0106004 - break; - } - s ++; -c0105ff4: 83 45 08 01 addl $0x1,0x8(%ebp) - * not found in @s, then it returns a pointer to the null byte at the - * end of @s, rather than 'NULL'. - * */ -char * -strfind(const char *s, char c) { - while (*s != '\0') { -c0105ff8: 8b 45 08 mov 0x8(%ebp),%eax -c0105ffb: 0f b6 00 movzbl (%eax),%eax -c0105ffe: 84 c0 test %al,%al -c0106000: 75 e7 jne c0105fe9 -c0106002: eb 01 jmp c0106005 - if (*s == c) { - break; -c0106004: 90 nop - } - s ++; - } - return (char *)s; -c0106005: 8b 45 08 mov 0x8(%ebp),%eax -} -c0106008: c9 leave -c0106009: c3 ret - -c010600a : - * an optional "0x" or "0X" prefix. - * - * The strtol() function returns the converted integral number as a long int value. - * */ -long -strtol(const char *s, char **endptr, int base) { -c010600a: 55 push %ebp -c010600b: 89 e5 mov %esp,%ebp -c010600d: 83 ec 10 sub $0x10,%esp - int neg = 0; -c0106010: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp) - long val = 0; -c0106017: c7 45 f8 00 00 00 00 movl $0x0,-0x8(%ebp) - - // gobble initial whitespace - while (*s == ' ' || *s == '\t') { -c010601e: eb 04 jmp c0106024 - s ++; -c0106020: 83 45 08 01 addl $0x1,0x8(%ebp) -strtol(const char *s, char **endptr, int base) { - int neg = 0; - long val = 0; - - // gobble initial whitespace - while (*s == ' ' || *s == '\t') { -c0106024: 8b 45 08 mov 0x8(%ebp),%eax -c0106027: 0f b6 00 movzbl (%eax),%eax -c010602a: 3c 20 cmp $0x20,%al -c010602c: 74 f2 je c0106020 -c010602e: 8b 45 08 mov 0x8(%ebp),%eax -c0106031: 0f b6 00 movzbl (%eax),%eax -c0106034: 3c 09 cmp $0x9,%al -c0106036: 74 e8 je c0106020 - s ++; - } - - // plus/minus sign - if (*s == '+') { -c0106038: 8b 45 08 mov 0x8(%ebp),%eax -c010603b: 0f b6 00 movzbl (%eax),%eax -c010603e: 3c 2b cmp $0x2b,%al -c0106040: 75 06 jne c0106048 - s ++; -c0106042: 83 45 08 01 addl $0x1,0x8(%ebp) -c0106046: eb 15 jmp c010605d - } - else if (*s == '-') { -c0106048: 8b 45 08 mov 0x8(%ebp),%eax -c010604b: 0f b6 00 movzbl (%eax),%eax -c010604e: 3c 2d cmp $0x2d,%al -c0106050: 75 0b jne c010605d - s ++, neg = 1; -c0106052: 83 45 08 01 addl $0x1,0x8(%ebp) -c0106056: c7 45 fc 01 00 00 00 movl $0x1,-0x4(%ebp) - } - - // hex or octal base prefix - if ((base == 0 || base == 16) && (s[0] == '0' && s[1] == 'x')) { -c010605d: 83 7d 10 00 cmpl $0x0,0x10(%ebp) -c0106061: 74 06 je c0106069 -c0106063: 83 7d 10 10 cmpl $0x10,0x10(%ebp) -c0106067: 75 24 jne c010608d -c0106069: 8b 45 08 mov 0x8(%ebp),%eax -c010606c: 0f b6 00 movzbl (%eax),%eax -c010606f: 3c 30 cmp $0x30,%al -c0106071: 75 1a jne c010608d -c0106073: 8b 45 08 mov 0x8(%ebp),%eax -c0106076: 83 c0 01 add $0x1,%eax -c0106079: 0f b6 00 movzbl (%eax),%eax -c010607c: 3c 78 cmp $0x78,%al -c010607e: 75 0d jne c010608d - s += 2, base = 16; -c0106080: 83 45 08 02 addl $0x2,0x8(%ebp) -c0106084: c7 45 10 10 00 00 00 movl $0x10,0x10(%ebp) -c010608b: eb 2a jmp c01060b7 - } - else if (base == 0 && s[0] == '0') { -c010608d: 83 7d 10 00 cmpl $0x0,0x10(%ebp) -c0106091: 75 17 jne c01060aa -c0106093: 8b 45 08 mov 0x8(%ebp),%eax -c0106096: 0f b6 00 movzbl (%eax),%eax -c0106099: 3c 30 cmp $0x30,%al -c010609b: 75 0d jne c01060aa - s ++, base = 8; -c010609d: 83 45 08 01 addl $0x1,0x8(%ebp) -c01060a1: c7 45 10 08 00 00 00 movl $0x8,0x10(%ebp) -c01060a8: eb 0d jmp c01060b7 - } - else if (base == 0) { -c01060aa: 83 7d 10 00 cmpl $0x0,0x10(%ebp) -c01060ae: 75 07 jne c01060b7 - base = 10; -c01060b0: c7 45 10 0a 00 00 00 movl $0xa,0x10(%ebp) - - // digits - while (1) { - int dig; - - if (*s >= '0' && *s <= '9') { -c01060b7: 8b 45 08 mov 0x8(%ebp),%eax -c01060ba: 0f b6 00 movzbl (%eax),%eax -c01060bd: 3c 2f cmp $0x2f,%al -c01060bf: 7e 1b jle c01060dc -c01060c1: 8b 45 08 mov 0x8(%ebp),%eax -c01060c4: 0f b6 00 movzbl (%eax),%eax -c01060c7: 3c 39 cmp $0x39,%al -c01060c9: 7f 11 jg c01060dc - dig = *s - '0'; -c01060cb: 8b 45 08 mov 0x8(%ebp),%eax -c01060ce: 0f b6 00 movzbl (%eax),%eax -c01060d1: 0f be c0 movsbl %al,%eax -c01060d4: 83 e8 30 sub $0x30,%eax -c01060d7: 89 45 f4 mov %eax,-0xc(%ebp) -c01060da: eb 48 jmp c0106124 - } - else if (*s >= 'a' && *s <= 'z') { -c01060dc: 8b 45 08 mov 0x8(%ebp),%eax -c01060df: 0f b6 00 movzbl (%eax),%eax -c01060e2: 3c 60 cmp $0x60,%al -c01060e4: 7e 1b jle c0106101 -c01060e6: 8b 45 08 mov 0x8(%ebp),%eax -c01060e9: 0f b6 00 movzbl (%eax),%eax -c01060ec: 3c 7a cmp $0x7a,%al -c01060ee: 7f 11 jg c0106101 - dig = *s - 'a' + 10; -c01060f0: 8b 45 08 mov 0x8(%ebp),%eax -c01060f3: 0f b6 00 movzbl (%eax),%eax -c01060f6: 0f be c0 movsbl %al,%eax -c01060f9: 83 e8 57 sub $0x57,%eax -c01060fc: 89 45 f4 mov %eax,-0xc(%ebp) -c01060ff: eb 23 jmp c0106124 - } - else if (*s >= 'A' && *s <= 'Z') { -c0106101: 8b 45 08 mov 0x8(%ebp),%eax -c0106104: 0f b6 00 movzbl (%eax),%eax -c0106107: 3c 40 cmp $0x40,%al -c0106109: 7e 3c jle c0106147 -c010610b: 8b 45 08 mov 0x8(%ebp),%eax -c010610e: 0f b6 00 movzbl (%eax),%eax -c0106111: 3c 5a cmp $0x5a,%al -c0106113: 7f 32 jg c0106147 - dig = *s - 'A' + 10; -c0106115: 8b 45 08 mov 0x8(%ebp),%eax -c0106118: 0f b6 00 movzbl (%eax),%eax -c010611b: 0f be c0 movsbl %al,%eax -c010611e: 83 e8 37 sub $0x37,%eax -c0106121: 89 45 f4 mov %eax,-0xc(%ebp) - } - else { - break; - } - if (dig >= base) { -c0106124: 8b 45 f4 mov -0xc(%ebp),%eax -c0106127: 3b 45 10 cmp 0x10(%ebp),%eax -c010612a: 7d 1a jge c0106146 - break; - } - s ++, val = (val * base) + dig; -c010612c: 83 45 08 01 addl $0x1,0x8(%ebp) -c0106130: 8b 45 f8 mov -0x8(%ebp),%eax -c0106133: 0f af 45 10 imul 0x10(%ebp),%eax -c0106137: 89 c2 mov %eax,%edx -c0106139: 8b 45 f4 mov -0xc(%ebp),%eax -c010613c: 01 d0 add %edx,%eax -c010613e: 89 45 f8 mov %eax,-0x8(%ebp) - // we don't properly detect overflow! - } -c0106141: e9 71 ff ff ff jmp c01060b7 - } - else { - break; - } - if (dig >= base) { - break; -c0106146: 90 nop - } - s ++, val = (val * base) + dig; - // we don't properly detect overflow! - } - - if (endptr) { -c0106147: 83 7d 0c 00 cmpl $0x0,0xc(%ebp) -c010614b: 74 08 je c0106155 - *endptr = (char *) s; -c010614d: 8b 45 0c mov 0xc(%ebp),%eax -c0106150: 8b 55 08 mov 0x8(%ebp),%edx -c0106153: 89 10 mov %edx,(%eax) - } - return (neg ? -val : val); -c0106155: 83 7d fc 00 cmpl $0x0,-0x4(%ebp) -c0106159: 74 07 je c0106162 -c010615b: 8b 45 f8 mov -0x8(%ebp),%eax -c010615e: f7 d8 neg %eax -c0106160: eb 03 jmp c0106165 -c0106162: 8b 45 f8 mov -0x8(%ebp),%eax -} -c0106165: c9 leave -c0106166: c3 ret - -c0106167 : - * @n: number of bytes to be set to the value - * - * The memset() function returns @s. - * */ -void * -memset(void *s, char c, size_t n) { -c0106167: 55 push %ebp -c0106168: 89 e5 mov %esp,%ebp -c010616a: 57 push %edi -c010616b: 83 ec 24 sub $0x24,%esp -c010616e: 8b 45 0c mov 0xc(%ebp),%eax -c0106171: 88 45 d8 mov %al,-0x28(%ebp) -#ifdef __HAVE_ARCH_MEMSET - return __memset(s, c, n); -c0106174: 0f be 45 d8 movsbl -0x28(%ebp),%eax -c0106178: 8b 55 08 mov 0x8(%ebp),%edx -c010617b: 89 55 f8 mov %edx,-0x8(%ebp) -c010617e: 88 45 f7 mov %al,-0x9(%ebp) -c0106181: 8b 45 10 mov 0x10(%ebp),%eax -c0106184: 89 45 f0 mov %eax,-0x10(%ebp) -#ifndef __HAVE_ARCH_MEMSET -#define __HAVE_ARCH_MEMSET -static inline void * -__memset(void *s, char c, size_t n) { - int d0, d1; - asm volatile ( -c0106187: 8b 4d f0 mov -0x10(%ebp),%ecx -c010618a: 0f b6 45 f7 movzbl -0x9(%ebp),%eax -c010618e: 8b 55 f8 mov -0x8(%ebp),%edx -c0106191: 89 d7 mov %edx,%edi -c0106193: f3 aa rep stos %al,%es:(%edi) -c0106195: 89 fa mov %edi,%edx -c0106197: 89 4d ec mov %ecx,-0x14(%ebp) -c010619a: 89 55 e8 mov %edx,-0x18(%ebp) - "rep; stosb;" - : "=&c" (d0), "=&D" (d1) - : "0" (n), "a" (c), "1" (s) - : "memory"); - return s; -c010619d: 8b 45 f8 mov -0x8(%ebp),%eax -c01061a0: 90 nop - while (n -- > 0) { - *p ++ = c; - } - return s; -#endif /* __HAVE_ARCH_MEMSET */ -} -c01061a1: 83 c4 24 add $0x24,%esp -c01061a4: 5f pop %edi -c01061a5: 5d pop %ebp -c01061a6: c3 ret - -c01061a7 : - * @n: number of bytes to copy - * - * The memmove() function returns @dst. - * */ -void * -memmove(void *dst, const void *src, size_t n) { -c01061a7: 55 push %ebp -c01061a8: 89 e5 mov %esp,%ebp -c01061aa: 57 push %edi -c01061ab: 56 push %esi -c01061ac: 53 push %ebx -c01061ad: 83 ec 30 sub $0x30,%esp -c01061b0: 8b 45 08 mov 0x8(%ebp),%eax -c01061b3: 89 45 f0 mov %eax,-0x10(%ebp) -c01061b6: 8b 45 0c mov 0xc(%ebp),%eax -c01061b9: 89 45 ec mov %eax,-0x14(%ebp) -c01061bc: 8b 45 10 mov 0x10(%ebp),%eax -c01061bf: 89 45 e8 mov %eax,-0x18(%ebp) - -#ifndef __HAVE_ARCH_MEMMOVE -#define __HAVE_ARCH_MEMMOVE -static inline void * -__memmove(void *dst, const void *src, size_t n) { - if (dst < src) { -c01061c2: 8b 45 f0 mov -0x10(%ebp),%eax -c01061c5: 3b 45 ec cmp -0x14(%ebp),%eax -c01061c8: 73 42 jae c010620c -c01061ca: 8b 45 f0 mov -0x10(%ebp),%eax -c01061cd: 89 45 e4 mov %eax,-0x1c(%ebp) -c01061d0: 8b 45 ec mov -0x14(%ebp),%eax -c01061d3: 89 45 e0 mov %eax,-0x20(%ebp) -c01061d6: 8b 45 e8 mov -0x18(%ebp),%eax -c01061d9: 89 45 dc mov %eax,-0x24(%ebp) - "andl $3, %%ecx;" - "jz 1f;" - "rep; movsb;" - "1:" - : "=&c" (d0), "=&D" (d1), "=&S" (d2) - : "0" (n / 4), "g" (n), "1" (dst), "2" (src) -c01061dc: 8b 45 dc mov -0x24(%ebp),%eax -c01061df: c1 e8 02 shr $0x2,%eax -c01061e2: 89 c1 mov %eax,%ecx -#ifndef __HAVE_ARCH_MEMCPY -#define __HAVE_ARCH_MEMCPY -static inline void * -__memcpy(void *dst, const void *src, size_t n) { - int d0, d1, d2; - asm volatile ( -c01061e4: 8b 55 e4 mov -0x1c(%ebp),%edx -c01061e7: 8b 45 e0 mov -0x20(%ebp),%eax -c01061ea: 89 d7 mov %edx,%edi -c01061ec: 89 c6 mov %eax,%esi -c01061ee: f3 a5 rep movsl %ds:(%esi),%es:(%edi) -c01061f0: 8b 4d dc mov -0x24(%ebp),%ecx -c01061f3: 83 e1 03 and $0x3,%ecx -c01061f6: 74 02 je c01061fa -c01061f8: f3 a4 rep movsb %ds:(%esi),%es:(%edi) -c01061fa: 89 f0 mov %esi,%eax -c01061fc: 89 fa mov %edi,%edx -c01061fe: 89 4d d8 mov %ecx,-0x28(%ebp) -c0106201: 89 55 d4 mov %edx,-0x2c(%ebp) -c0106204: 89 45 d0 mov %eax,-0x30(%ebp) - "rep; movsb;" - "1:" - : "=&c" (d0), "=&D" (d1), "=&S" (d2) - : "0" (n / 4), "g" (n), "1" (dst), "2" (src) - : "memory"); - return dst; -c0106207: 8b 45 e4 mov -0x1c(%ebp),%eax -#ifdef __HAVE_ARCH_MEMMOVE - return __memmove(dst, src, n); -c010620a: eb 36 jmp c0106242 - asm volatile ( - "std;" - "rep; movsb;" - "cld;" - : "=&c" (d0), "=&S" (d1), "=&D" (d2) - : "0" (n), "1" (n - 1 + src), "2" (n - 1 + dst) -c010620c: 8b 45 e8 mov -0x18(%ebp),%eax -c010620f: 8d 50 ff lea -0x1(%eax),%edx -c0106212: 8b 45 ec mov -0x14(%ebp),%eax -c0106215: 01 c2 add %eax,%edx -c0106217: 8b 45 e8 mov -0x18(%ebp),%eax -c010621a: 8d 48 ff lea -0x1(%eax),%ecx -c010621d: 8b 45 f0 mov -0x10(%ebp),%eax -c0106220: 8d 1c 01 lea (%ecx,%eax,1),%ebx -__memmove(void *dst, const void *src, size_t n) { - if (dst < src) { - return __memcpy(dst, src, n); - } - int d0, d1, d2; - asm volatile ( -c0106223: 8b 45 e8 mov -0x18(%ebp),%eax -c0106226: 89 c1 mov %eax,%ecx -c0106228: 89 d8 mov %ebx,%eax -c010622a: 89 d6 mov %edx,%esi -c010622c: 89 c7 mov %eax,%edi -c010622e: fd std -c010622f: f3 a4 rep movsb %ds:(%esi),%es:(%edi) -c0106231: fc cld -c0106232: 89 f8 mov %edi,%eax -c0106234: 89 f2 mov %esi,%edx -c0106236: 89 4d cc mov %ecx,-0x34(%ebp) -c0106239: 89 55 c8 mov %edx,-0x38(%ebp) -c010623c: 89 45 c4 mov %eax,-0x3c(%ebp) - "rep; movsb;" - "cld;" - : "=&c" (d0), "=&S" (d1), "=&D" (d2) - : "0" (n), "1" (n - 1 + src), "2" (n - 1 + dst) - : "memory"); - return dst; -c010623f: 8b 45 f0 mov -0x10(%ebp),%eax - *d ++ = *s ++; - } - } - return dst; -#endif /* __HAVE_ARCH_MEMMOVE */ -} -c0106242: 83 c4 30 add $0x30,%esp -c0106245: 5b pop %ebx -c0106246: 5e pop %esi -c0106247: 5f pop %edi -c0106248: 5d pop %ebp -c0106249: c3 ret - -c010624a : - * it always copies exactly @n bytes. To avoid overflows, the size of arrays pointed - * by both @src and @dst, should be at least @n bytes, and should not overlap - * (for overlapping memory area, memmove is a safer approach). - * */ -void * -memcpy(void *dst, const void *src, size_t n) { -c010624a: 55 push %ebp -c010624b: 89 e5 mov %esp,%ebp -c010624d: 57 push %edi -c010624e: 56 push %esi -c010624f: 83 ec 20 sub $0x20,%esp -c0106252: 8b 45 08 mov 0x8(%ebp),%eax -c0106255: 89 45 f4 mov %eax,-0xc(%ebp) -c0106258: 8b 45 0c mov 0xc(%ebp),%eax -c010625b: 89 45 f0 mov %eax,-0x10(%ebp) -c010625e: 8b 45 10 mov 0x10(%ebp),%eax -c0106261: 89 45 ec mov %eax,-0x14(%ebp) - "andl $3, %%ecx;" - "jz 1f;" - "rep; movsb;" - "1:" - : "=&c" (d0), "=&D" (d1), "=&S" (d2) - : "0" (n / 4), "g" (n), "1" (dst), "2" (src) -c0106264: 8b 45 ec mov -0x14(%ebp),%eax -c0106267: c1 e8 02 shr $0x2,%eax -c010626a: 89 c1 mov %eax,%ecx -#ifndef __HAVE_ARCH_MEMCPY -#define __HAVE_ARCH_MEMCPY -static inline void * -__memcpy(void *dst, const void *src, size_t n) { - int d0, d1, d2; - asm volatile ( -c010626c: 8b 55 f4 mov -0xc(%ebp),%edx -c010626f: 8b 45 f0 mov -0x10(%ebp),%eax -c0106272: 89 d7 mov %edx,%edi -c0106274: 89 c6 mov %eax,%esi -c0106276: f3 a5 rep movsl %ds:(%esi),%es:(%edi) -c0106278: 8b 4d ec mov -0x14(%ebp),%ecx -c010627b: 83 e1 03 and $0x3,%ecx -c010627e: 74 02 je c0106282 -c0106280: f3 a4 rep movsb %ds:(%esi),%es:(%edi) -c0106282: 89 f0 mov %esi,%eax -c0106284: 89 fa mov %edi,%edx -c0106286: 89 4d e8 mov %ecx,-0x18(%ebp) -c0106289: 89 55 e4 mov %edx,-0x1c(%ebp) -c010628c: 89 45 e0 mov %eax,-0x20(%ebp) - "rep; movsb;" - "1:" - : "=&c" (d0), "=&D" (d1), "=&S" (d2) - : "0" (n / 4), "g" (n), "1" (dst), "2" (src) - : "memory"); - return dst; -c010628f: 8b 45 f4 mov -0xc(%ebp),%eax -#ifdef __HAVE_ARCH_MEMCPY - return __memcpy(dst, src, n); -c0106292: 90 nop - while (n -- > 0) { - *d ++ = *s ++; - } - return dst; -#endif /* __HAVE_ARCH_MEMCPY */ -} -c0106293: 83 c4 20 add $0x20,%esp -c0106296: 5e pop %esi -c0106297: 5f pop %edi -c0106298: 5d pop %ebp -c0106299: c3 ret - -c010629a : - * match in both memory blocks has a greater value in @v1 than in @v2 - * as if evaluated as unsigned char values; - * - And a value less than zero indicates the opposite. - * */ -int -memcmp(const void *v1, const void *v2, size_t n) { -c010629a: 55 push %ebp -c010629b: 89 e5 mov %esp,%ebp -c010629d: 83 ec 10 sub $0x10,%esp - const char *s1 = (const char *)v1; -c01062a0: 8b 45 08 mov 0x8(%ebp),%eax -c01062a3: 89 45 fc mov %eax,-0x4(%ebp) - const char *s2 = (const char *)v2; -c01062a6: 8b 45 0c mov 0xc(%ebp),%eax -c01062a9: 89 45 f8 mov %eax,-0x8(%ebp) - while (n -- > 0) { -c01062ac: eb 30 jmp c01062de - if (*s1 != *s2) { -c01062ae: 8b 45 fc mov -0x4(%ebp),%eax -c01062b1: 0f b6 10 movzbl (%eax),%edx -c01062b4: 8b 45 f8 mov -0x8(%ebp),%eax -c01062b7: 0f b6 00 movzbl (%eax),%eax -c01062ba: 38 c2 cmp %al,%dl -c01062bc: 74 18 je c01062d6 - return (int)((unsigned char)*s1 - (unsigned char)*s2); -c01062be: 8b 45 fc mov -0x4(%ebp),%eax -c01062c1: 0f b6 00 movzbl (%eax),%eax -c01062c4: 0f b6 d0 movzbl %al,%edx -c01062c7: 8b 45 f8 mov -0x8(%ebp),%eax -c01062ca: 0f b6 00 movzbl (%eax),%eax -c01062cd: 0f b6 c0 movzbl %al,%eax -c01062d0: 29 c2 sub %eax,%edx -c01062d2: 89 d0 mov %edx,%eax -c01062d4: eb 1a jmp c01062f0 - } - s1 ++, s2 ++; -c01062d6: 83 45 fc 01 addl $0x1,-0x4(%ebp) -c01062da: 83 45 f8 01 addl $0x1,-0x8(%ebp) - * */ -int -memcmp(const void *v1, const void *v2, size_t n) { - const char *s1 = (const char *)v1; - const char *s2 = (const char *)v2; - while (n -- > 0) { -c01062de: 8b 45 10 mov 0x10(%ebp),%eax -c01062e1: 8d 50 ff lea -0x1(%eax),%edx -c01062e4: 89 55 10 mov %edx,0x10(%ebp) -c01062e7: 85 c0 test %eax,%eax -c01062e9: 75 c3 jne c01062ae - if (*s1 != *s2) { - return (int)((unsigned char)*s1 - (unsigned char)*s2); - } - s1 ++, s2 ++; - } - return 0; -c01062eb: b8 00 00 00 00 mov $0x0,%eax -} -c01062f0: c9 leave -c01062f1: c3 ret - -c01062f2 : - * @width: maximum number of digits, if the actual width is less than @width, use @padc instead - * @padc: character that padded on the left if the actual width is less than @width - * */ -static void -printnum(void (*putch)(int, void*), void *putdat, - unsigned long long num, unsigned base, int width, int padc) { -c01062f2: 55 push %ebp -c01062f3: 89 e5 mov %esp,%ebp -c01062f5: 83 ec 38 sub $0x38,%esp -c01062f8: 8b 45 10 mov 0x10(%ebp),%eax -c01062fb: 89 45 d0 mov %eax,-0x30(%ebp) -c01062fe: 8b 45 14 mov 0x14(%ebp),%eax -c0106301: 89 45 d4 mov %eax,-0x2c(%ebp) - unsigned long long result = num; -c0106304: 8b 45 d0 mov -0x30(%ebp),%eax -c0106307: 8b 55 d4 mov -0x2c(%ebp),%edx -c010630a: 89 45 e8 mov %eax,-0x18(%ebp) -c010630d: 89 55 ec mov %edx,-0x14(%ebp) - unsigned mod = do_div(result, base); -c0106310: 8b 45 18 mov 0x18(%ebp),%eax -c0106313: 89 45 e4 mov %eax,-0x1c(%ebp) -c0106316: 8b 45 e8 mov -0x18(%ebp),%eax -c0106319: 8b 55 ec mov -0x14(%ebp),%edx -c010631c: 89 45 e0 mov %eax,-0x20(%ebp) -c010631f: 89 55 f0 mov %edx,-0x10(%ebp) -c0106322: 8b 45 f0 mov -0x10(%ebp),%eax -c0106325: 89 45 f4 mov %eax,-0xc(%ebp) -c0106328: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) -c010632c: 74 1c je c010634a -c010632e: 8b 45 f0 mov -0x10(%ebp),%eax -c0106331: ba 00 00 00 00 mov $0x0,%edx -c0106336: f7 75 e4 divl -0x1c(%ebp) -c0106339: 89 55 f4 mov %edx,-0xc(%ebp) -c010633c: 8b 45 f0 mov -0x10(%ebp),%eax -c010633f: ba 00 00 00 00 mov $0x0,%edx -c0106344: f7 75 e4 divl -0x1c(%ebp) -c0106347: 89 45 f0 mov %eax,-0x10(%ebp) -c010634a: 8b 45 e0 mov -0x20(%ebp),%eax -c010634d: 8b 55 f4 mov -0xc(%ebp),%edx -c0106350: f7 75 e4 divl -0x1c(%ebp) -c0106353: 89 45 e0 mov %eax,-0x20(%ebp) -c0106356: 89 55 dc mov %edx,-0x24(%ebp) -c0106359: 8b 45 e0 mov -0x20(%ebp),%eax -c010635c: 8b 55 f0 mov -0x10(%ebp),%edx -c010635f: 89 45 e8 mov %eax,-0x18(%ebp) -c0106362: 89 55 ec mov %edx,-0x14(%ebp) -c0106365: 8b 45 dc mov -0x24(%ebp),%eax -c0106368: 89 45 d8 mov %eax,-0x28(%ebp) - - // first recursively print all preceding (more significant) digits - if (num >= base) { -c010636b: 8b 45 18 mov 0x18(%ebp),%eax -c010636e: ba 00 00 00 00 mov $0x0,%edx -c0106373: 3b 55 d4 cmp -0x2c(%ebp),%edx -c0106376: 77 41 ja c01063b9 -c0106378: 3b 55 d4 cmp -0x2c(%ebp),%edx -c010637b: 72 05 jb c0106382 -c010637d: 3b 45 d0 cmp -0x30(%ebp),%eax -c0106380: 77 37 ja c01063b9 - printnum(putch, putdat, result, base, width - 1, padc); -c0106382: 8b 45 1c mov 0x1c(%ebp),%eax -c0106385: 83 e8 01 sub $0x1,%eax -c0106388: 83 ec 04 sub $0x4,%esp -c010638b: ff 75 20 pushl 0x20(%ebp) -c010638e: 50 push %eax -c010638f: ff 75 18 pushl 0x18(%ebp) -c0106392: ff 75 ec pushl -0x14(%ebp) -c0106395: ff 75 e8 pushl -0x18(%ebp) -c0106398: ff 75 0c pushl 0xc(%ebp) -c010639b: ff 75 08 pushl 0x8(%ebp) -c010639e: e8 4f ff ff ff call c01062f2 -c01063a3: 83 c4 20 add $0x20,%esp -c01063a6: eb 1b jmp c01063c3 - } else { - // print any needed pad characters before first digit - while (-- width > 0) - putch(padc, putdat); -c01063a8: 83 ec 08 sub $0x8,%esp -c01063ab: ff 75 0c pushl 0xc(%ebp) -c01063ae: ff 75 20 pushl 0x20(%ebp) -c01063b1: 8b 45 08 mov 0x8(%ebp),%eax -c01063b4: ff d0 call *%eax -c01063b6: 83 c4 10 add $0x10,%esp - // first recursively print all preceding (more significant) digits - if (num >= base) { - printnum(putch, putdat, result, base, width - 1, padc); - } else { - // print any needed pad characters before first digit - while (-- width > 0) -c01063b9: 83 6d 1c 01 subl $0x1,0x1c(%ebp) -c01063bd: 83 7d 1c 00 cmpl $0x0,0x1c(%ebp) -c01063c1: 7f e5 jg c01063a8 - putch(padc, putdat); - } - // then print this (the least significant) digit - putch("0123456789abcdef"[mod], putdat); -c01063c3: 8b 45 d8 mov -0x28(%ebp),%eax -c01063c6: 05 0c 7e 10 c0 add $0xc0107e0c,%eax -c01063cb: 0f b6 00 movzbl (%eax),%eax -c01063ce: 0f be c0 movsbl %al,%eax -c01063d1: 83 ec 08 sub $0x8,%esp -c01063d4: ff 75 0c pushl 0xc(%ebp) -c01063d7: 50 push %eax -c01063d8: 8b 45 08 mov 0x8(%ebp),%eax -c01063db: ff d0 call *%eax -c01063dd: 83 c4 10 add $0x10,%esp -} -c01063e0: 90 nop -c01063e1: c9 leave -c01063e2: c3 ret - -c01063e3 : - * getuint - get an unsigned int of various possible sizes from a varargs list - * @ap: a varargs list pointer - * @lflag: determines the size of the vararg that @ap points to - * */ -static unsigned long long -getuint(va_list *ap, int lflag) { -c01063e3: 55 push %ebp -c01063e4: 89 e5 mov %esp,%ebp - if (lflag >= 2) { -c01063e6: 83 7d 0c 01 cmpl $0x1,0xc(%ebp) -c01063ea: 7e 14 jle c0106400 - return va_arg(*ap, unsigned long long); -c01063ec: 8b 45 08 mov 0x8(%ebp),%eax -c01063ef: 8b 00 mov (%eax),%eax -c01063f1: 8d 48 08 lea 0x8(%eax),%ecx -c01063f4: 8b 55 08 mov 0x8(%ebp),%edx -c01063f7: 89 0a mov %ecx,(%edx) -c01063f9: 8b 50 04 mov 0x4(%eax),%edx -c01063fc: 8b 00 mov (%eax),%eax -c01063fe: eb 30 jmp c0106430 - } - else if (lflag) { -c0106400: 83 7d 0c 00 cmpl $0x0,0xc(%ebp) -c0106404: 74 16 je c010641c - return va_arg(*ap, unsigned long); -c0106406: 8b 45 08 mov 0x8(%ebp),%eax -c0106409: 8b 00 mov (%eax),%eax -c010640b: 8d 48 04 lea 0x4(%eax),%ecx -c010640e: 8b 55 08 mov 0x8(%ebp),%edx -c0106411: 89 0a mov %ecx,(%edx) -c0106413: 8b 00 mov (%eax),%eax -c0106415: ba 00 00 00 00 mov $0x0,%edx -c010641a: eb 14 jmp c0106430 - } - else { - return va_arg(*ap, unsigned int); -c010641c: 8b 45 08 mov 0x8(%ebp),%eax -c010641f: 8b 00 mov (%eax),%eax -c0106421: 8d 48 04 lea 0x4(%eax),%ecx -c0106424: 8b 55 08 mov 0x8(%ebp),%edx -c0106427: 89 0a mov %ecx,(%edx) -c0106429: 8b 00 mov (%eax),%eax -c010642b: ba 00 00 00 00 mov $0x0,%edx - } -} -c0106430: 5d pop %ebp -c0106431: c3 ret - -c0106432 : - * getint - same as getuint but signed, we can't use getuint because of sign extension - * @ap: a varargs list pointer - * @lflag: determines the size of the vararg that @ap points to - * */ -static long long -getint(va_list *ap, int lflag) { -c0106432: 55 push %ebp -c0106433: 89 e5 mov %esp,%ebp - if (lflag >= 2) { -c0106435: 83 7d 0c 01 cmpl $0x1,0xc(%ebp) -c0106439: 7e 14 jle c010644f - return va_arg(*ap, long long); -c010643b: 8b 45 08 mov 0x8(%ebp),%eax -c010643e: 8b 00 mov (%eax),%eax -c0106440: 8d 48 08 lea 0x8(%eax),%ecx -c0106443: 8b 55 08 mov 0x8(%ebp),%edx -c0106446: 89 0a mov %ecx,(%edx) -c0106448: 8b 50 04 mov 0x4(%eax),%edx -c010644b: 8b 00 mov (%eax),%eax -c010644d: eb 28 jmp c0106477 - } - else if (lflag) { -c010644f: 83 7d 0c 00 cmpl $0x0,0xc(%ebp) -c0106453: 74 12 je c0106467 - return va_arg(*ap, long); -c0106455: 8b 45 08 mov 0x8(%ebp),%eax -c0106458: 8b 00 mov (%eax),%eax -c010645a: 8d 48 04 lea 0x4(%eax),%ecx -c010645d: 8b 55 08 mov 0x8(%ebp),%edx -c0106460: 89 0a mov %ecx,(%edx) -c0106462: 8b 00 mov (%eax),%eax -c0106464: 99 cltd -c0106465: eb 10 jmp c0106477 - } - else { - return va_arg(*ap, int); -c0106467: 8b 45 08 mov 0x8(%ebp),%eax -c010646a: 8b 00 mov (%eax),%eax -c010646c: 8d 48 04 lea 0x4(%eax),%ecx -c010646f: 8b 55 08 mov 0x8(%ebp),%edx -c0106472: 89 0a mov %ecx,(%edx) -c0106474: 8b 00 mov (%eax),%eax -c0106476: 99 cltd - } -} -c0106477: 5d pop %ebp -c0106478: c3 ret - -c0106479 : - * @putch: specified putch function, print a single character - * @putdat: used by @putch function - * @fmt: the format string to use - * */ -void -printfmt(void (*putch)(int, void*), void *putdat, const char *fmt, ...) { -c0106479: 55 push %ebp -c010647a: 89 e5 mov %esp,%ebp -c010647c: 83 ec 18 sub $0x18,%esp - va_list ap; - - va_start(ap, fmt); -c010647f: 8d 45 14 lea 0x14(%ebp),%eax -c0106482: 89 45 f4 mov %eax,-0xc(%ebp) - vprintfmt(putch, putdat, fmt, ap); -c0106485: 8b 45 f4 mov -0xc(%ebp),%eax -c0106488: 50 push %eax -c0106489: ff 75 10 pushl 0x10(%ebp) -c010648c: ff 75 0c pushl 0xc(%ebp) -c010648f: ff 75 08 pushl 0x8(%ebp) -c0106492: e8 06 00 00 00 call c010649d -c0106497: 83 c4 10 add $0x10,%esp - va_end(ap); -} -c010649a: 90 nop -c010649b: c9 leave -c010649c: c3 ret - -c010649d : - * - * Call this function if you are already dealing with a va_list. - * Or you probably want printfmt() instead. - * */ -void -vprintfmt(void (*putch)(int, void*), void *putdat, const char *fmt, va_list ap) { -c010649d: 55 push %ebp -c010649e: 89 e5 mov %esp,%ebp -c01064a0: 56 push %esi -c01064a1: 53 push %ebx -c01064a2: 83 ec 20 sub $0x20,%esp - register int ch, err; - unsigned long long num; - int base, width, precision, lflag, altflag; - - while (1) { - while ((ch = *(unsigned char *)fmt ++) != '%') { -c01064a5: eb 17 jmp c01064be - if (ch == '\0') { -c01064a7: 85 db test %ebx,%ebx -c01064a9: 0f 84 8e 03 00 00 je c010683d - return; - } - putch(ch, putdat); -c01064af: 83 ec 08 sub $0x8,%esp -c01064b2: ff 75 0c pushl 0xc(%ebp) -c01064b5: 53 push %ebx -c01064b6: 8b 45 08 mov 0x8(%ebp),%eax -c01064b9: ff d0 call *%eax -c01064bb: 83 c4 10 add $0x10,%esp - register int ch, err; - unsigned long long num; - int base, width, precision, lflag, altflag; - - while (1) { - while ((ch = *(unsigned char *)fmt ++) != '%') { -c01064be: 8b 45 10 mov 0x10(%ebp),%eax -c01064c1: 8d 50 01 lea 0x1(%eax),%edx -c01064c4: 89 55 10 mov %edx,0x10(%ebp) -c01064c7: 0f b6 00 movzbl (%eax),%eax -c01064ca: 0f b6 d8 movzbl %al,%ebx -c01064cd: 83 fb 25 cmp $0x25,%ebx -c01064d0: 75 d5 jne c01064a7 - } - putch(ch, putdat); - } - - // Process a %-escape sequence - char padc = ' '; -c01064d2: c6 45 db 20 movb $0x20,-0x25(%ebp) - width = precision = -1; -c01064d6: c7 45 e4 ff ff ff ff movl $0xffffffff,-0x1c(%ebp) -c01064dd: 8b 45 e4 mov -0x1c(%ebp),%eax -c01064e0: 89 45 e8 mov %eax,-0x18(%ebp) - lflag = altflag = 0; -c01064e3: c7 45 dc 00 00 00 00 movl $0x0,-0x24(%ebp) -c01064ea: 8b 45 dc mov -0x24(%ebp),%eax -c01064ed: 89 45 e0 mov %eax,-0x20(%ebp) - - reswitch: - switch (ch = *(unsigned char *)fmt ++) { -c01064f0: 8b 45 10 mov 0x10(%ebp),%eax -c01064f3: 8d 50 01 lea 0x1(%eax),%edx -c01064f6: 89 55 10 mov %edx,0x10(%ebp) -c01064f9: 0f b6 00 movzbl (%eax),%eax -c01064fc: 0f b6 d8 movzbl %al,%ebx -c01064ff: 8d 43 dd lea -0x23(%ebx),%eax -c0106502: 83 f8 55 cmp $0x55,%eax -c0106505: 0f 87 05 03 00 00 ja c0106810 -c010650b: 8b 04 85 30 7e 10 c0 mov -0x3fef81d0(,%eax,4),%eax -c0106512: ff e0 jmp *%eax - - // flag to pad on the right - case '-': - padc = '-'; -c0106514: c6 45 db 2d movb $0x2d,-0x25(%ebp) - goto reswitch; -c0106518: eb d6 jmp c01064f0 - - // flag to pad with 0's instead of spaces - case '0': - padc = '0'; -c010651a: c6 45 db 30 movb $0x30,-0x25(%ebp) - goto reswitch; -c010651e: eb d0 jmp c01064f0 - - // width field - case '1' ... '9': - for (precision = 0; ; ++ fmt) { -c0106520: c7 45 e4 00 00 00 00 movl $0x0,-0x1c(%ebp) - precision = precision * 10 + ch - '0'; -c0106527: 8b 55 e4 mov -0x1c(%ebp),%edx -c010652a: 89 d0 mov %edx,%eax -c010652c: c1 e0 02 shl $0x2,%eax -c010652f: 01 d0 add %edx,%eax -c0106531: 01 c0 add %eax,%eax -c0106533: 01 d8 add %ebx,%eax -c0106535: 83 e8 30 sub $0x30,%eax -c0106538: 89 45 e4 mov %eax,-0x1c(%ebp) - ch = *fmt; -c010653b: 8b 45 10 mov 0x10(%ebp),%eax -c010653e: 0f b6 00 movzbl (%eax),%eax -c0106541: 0f be d8 movsbl %al,%ebx - if (ch < '0' || ch > '9') { -c0106544: 83 fb 2f cmp $0x2f,%ebx -c0106547: 7e 39 jle c0106582 -c0106549: 83 fb 39 cmp $0x39,%ebx -c010654c: 7f 34 jg c0106582 - padc = '0'; - goto reswitch; - - // width field - case '1' ... '9': - for (precision = 0; ; ++ fmt) { -c010654e: 83 45 10 01 addl $0x1,0x10(%ebp) - precision = precision * 10 + ch - '0'; - ch = *fmt; - if (ch < '0' || ch > '9') { - break; - } - } -c0106552: eb d3 jmp c0106527 - goto process_precision; - - case '*': - precision = va_arg(ap, int); -c0106554: 8b 45 14 mov 0x14(%ebp),%eax -c0106557: 8d 50 04 lea 0x4(%eax),%edx -c010655a: 89 55 14 mov %edx,0x14(%ebp) -c010655d: 8b 00 mov (%eax),%eax -c010655f: 89 45 e4 mov %eax,-0x1c(%ebp) - goto process_precision; -c0106562: eb 1f jmp c0106583 - - case '.': - if (width < 0) -c0106564: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) -c0106568: 79 86 jns c01064f0 - width = 0; -c010656a: c7 45 e8 00 00 00 00 movl $0x0,-0x18(%ebp) - goto reswitch; -c0106571: e9 7a ff ff ff jmp c01064f0 - - case '#': - altflag = 1; -c0106576: c7 45 dc 01 00 00 00 movl $0x1,-0x24(%ebp) - goto reswitch; -c010657d: e9 6e ff ff ff jmp c01064f0 - ch = *fmt; - if (ch < '0' || ch > '9') { - break; - } - } - goto process_precision; -c0106582: 90 nop - case '#': - altflag = 1; - goto reswitch; - - process_precision: - if (width < 0) -c0106583: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) -c0106587: 0f 89 63 ff ff ff jns c01064f0 - width = precision, precision = -1; -c010658d: 8b 45 e4 mov -0x1c(%ebp),%eax -c0106590: 89 45 e8 mov %eax,-0x18(%ebp) -c0106593: c7 45 e4 ff ff ff ff movl $0xffffffff,-0x1c(%ebp) - goto reswitch; -c010659a: e9 51 ff ff ff jmp c01064f0 - - // long flag (doubled for long long) - case 'l': - lflag ++; -c010659f: 83 45 e0 01 addl $0x1,-0x20(%ebp) - goto reswitch; -c01065a3: e9 48 ff ff ff jmp c01064f0 - - // character - case 'c': - putch(va_arg(ap, int), putdat); -c01065a8: 8b 45 14 mov 0x14(%ebp),%eax -c01065ab: 8d 50 04 lea 0x4(%eax),%edx -c01065ae: 89 55 14 mov %edx,0x14(%ebp) -c01065b1: 8b 00 mov (%eax),%eax -c01065b3: 83 ec 08 sub $0x8,%esp -c01065b6: ff 75 0c pushl 0xc(%ebp) -c01065b9: 50 push %eax -c01065ba: 8b 45 08 mov 0x8(%ebp),%eax -c01065bd: ff d0 call *%eax -c01065bf: 83 c4 10 add $0x10,%esp - break; -c01065c2: e9 71 02 00 00 jmp c0106838 - - // error message - case 'e': - err = va_arg(ap, int); -c01065c7: 8b 45 14 mov 0x14(%ebp),%eax -c01065ca: 8d 50 04 lea 0x4(%eax),%edx -c01065cd: 89 55 14 mov %edx,0x14(%ebp) -c01065d0: 8b 18 mov (%eax),%ebx - if (err < 0) { -c01065d2: 85 db test %ebx,%ebx -c01065d4: 79 02 jns c01065d8 - err = -err; -c01065d6: f7 db neg %ebx - } - if (err > MAXERROR || (p = error_string[err]) == NULL) { -c01065d8: 83 fb 06 cmp $0x6,%ebx -c01065db: 7f 0b jg c01065e8 -c01065dd: 8b 34 9d f0 7d 10 c0 mov -0x3fef8210(,%ebx,4),%esi -c01065e4: 85 f6 test %esi,%esi -c01065e6: 75 19 jne c0106601 - printfmt(putch, putdat, "error %d", err); -c01065e8: 53 push %ebx -c01065e9: 68 1d 7e 10 c0 push $0xc0107e1d -c01065ee: ff 75 0c pushl 0xc(%ebp) -c01065f1: ff 75 08 pushl 0x8(%ebp) -c01065f4: e8 80 fe ff ff call c0106479 -c01065f9: 83 c4 10 add $0x10,%esp - } - else { - printfmt(putch, putdat, "%s", p); - } - break; -c01065fc: e9 37 02 00 00 jmp c0106838 - } - if (err > MAXERROR || (p = error_string[err]) == NULL) { - printfmt(putch, putdat, "error %d", err); - } - else { - printfmt(putch, putdat, "%s", p); -c0106601: 56 push %esi -c0106602: 68 26 7e 10 c0 push $0xc0107e26 -c0106607: ff 75 0c pushl 0xc(%ebp) -c010660a: ff 75 08 pushl 0x8(%ebp) -c010660d: e8 67 fe ff ff call c0106479 -c0106612: 83 c4 10 add $0x10,%esp - } - break; -c0106615: e9 1e 02 00 00 jmp c0106838 - - // string - case 's': - if ((p = va_arg(ap, char *)) == NULL) { -c010661a: 8b 45 14 mov 0x14(%ebp),%eax -c010661d: 8d 50 04 lea 0x4(%eax),%edx -c0106620: 89 55 14 mov %edx,0x14(%ebp) -c0106623: 8b 30 mov (%eax),%esi -c0106625: 85 f6 test %esi,%esi -c0106627: 75 05 jne c010662e - p = "(null)"; -c0106629: be 29 7e 10 c0 mov $0xc0107e29,%esi - } - if (width > 0 && padc != '-') { -c010662e: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) -c0106632: 7e 76 jle c01066aa -c0106634: 80 7d db 2d cmpb $0x2d,-0x25(%ebp) -c0106638: 74 70 je c01066aa - for (width -= strnlen(p, precision); width > 0; width --) { -c010663a: 8b 45 e4 mov -0x1c(%ebp),%eax -c010663d: 83 ec 08 sub $0x8,%esp -c0106640: 50 push %eax -c0106641: 56 push %esi -c0106642: e8 17 f8 ff ff call c0105e5e -c0106647: 83 c4 10 add $0x10,%esp -c010664a: 89 c2 mov %eax,%edx -c010664c: 8b 45 e8 mov -0x18(%ebp),%eax -c010664f: 29 d0 sub %edx,%eax -c0106651: 89 45 e8 mov %eax,-0x18(%ebp) -c0106654: eb 17 jmp c010666d - putch(padc, putdat); -c0106656: 0f be 45 db movsbl -0x25(%ebp),%eax -c010665a: 83 ec 08 sub $0x8,%esp -c010665d: ff 75 0c pushl 0xc(%ebp) -c0106660: 50 push %eax -c0106661: 8b 45 08 mov 0x8(%ebp),%eax -c0106664: ff d0 call *%eax -c0106666: 83 c4 10 add $0x10,%esp - case 's': - if ((p = va_arg(ap, char *)) == NULL) { - p = "(null)"; - } - if (width > 0 && padc != '-') { - for (width -= strnlen(p, precision); width > 0; width --) { -c0106669: 83 6d e8 01 subl $0x1,-0x18(%ebp) -c010666d: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) -c0106671: 7f e3 jg c0106656 - putch(padc, putdat); - } - } - for (; (ch = *p ++) != '\0' && (precision < 0 || -- precision >= 0); width --) { -c0106673: eb 35 jmp c01066aa - if (altflag && (ch < ' ' || ch > '~')) { -c0106675: 83 7d dc 00 cmpl $0x0,-0x24(%ebp) -c0106679: 74 1c je c0106697 -c010667b: 83 fb 1f cmp $0x1f,%ebx -c010667e: 7e 05 jle c0106685 -c0106680: 83 fb 7e cmp $0x7e,%ebx -c0106683: 7e 12 jle c0106697 - putch('?', putdat); -c0106685: 83 ec 08 sub $0x8,%esp -c0106688: ff 75 0c pushl 0xc(%ebp) -c010668b: 6a 3f push $0x3f -c010668d: 8b 45 08 mov 0x8(%ebp),%eax -c0106690: ff d0 call *%eax -c0106692: 83 c4 10 add $0x10,%esp -c0106695: eb 0f jmp c01066a6 - } - else { - putch(ch, putdat); -c0106697: 83 ec 08 sub $0x8,%esp -c010669a: ff 75 0c pushl 0xc(%ebp) -c010669d: 53 push %ebx -c010669e: 8b 45 08 mov 0x8(%ebp),%eax -c01066a1: ff d0 call *%eax -c01066a3: 83 c4 10 add $0x10,%esp - if (width > 0 && padc != '-') { - for (width -= strnlen(p, precision); width > 0; width --) { - putch(padc, putdat); - } - } - for (; (ch = *p ++) != '\0' && (precision < 0 || -- precision >= 0); width --) { -c01066a6: 83 6d e8 01 subl $0x1,-0x18(%ebp) -c01066aa: 89 f0 mov %esi,%eax -c01066ac: 8d 70 01 lea 0x1(%eax),%esi -c01066af: 0f b6 00 movzbl (%eax),%eax -c01066b2: 0f be d8 movsbl %al,%ebx -c01066b5: 85 db test %ebx,%ebx -c01066b7: 74 26 je c01066df -c01066b9: 83 7d e4 00 cmpl $0x0,-0x1c(%ebp) -c01066bd: 78 b6 js c0106675 -c01066bf: 83 6d e4 01 subl $0x1,-0x1c(%ebp) -c01066c3: 83 7d e4 00 cmpl $0x0,-0x1c(%ebp) -c01066c7: 79 ac jns c0106675 - } - else { - putch(ch, putdat); - } - } - for (; width > 0; width --) { -c01066c9: eb 14 jmp c01066df - putch(' ', putdat); -c01066cb: 83 ec 08 sub $0x8,%esp -c01066ce: ff 75 0c pushl 0xc(%ebp) -c01066d1: 6a 20 push $0x20 -c01066d3: 8b 45 08 mov 0x8(%ebp),%eax -c01066d6: ff d0 call *%eax -c01066d8: 83 c4 10 add $0x10,%esp - } - else { - putch(ch, putdat); - } - } - for (; width > 0; width --) { -c01066db: 83 6d e8 01 subl $0x1,-0x18(%ebp) -c01066df: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) -c01066e3: 7f e6 jg c01066cb - putch(' ', putdat); - } - break; -c01066e5: e9 4e 01 00 00 jmp c0106838 - - // (signed) decimal - case 'd': - num = getint(&ap, lflag); -c01066ea: 83 ec 08 sub $0x8,%esp -c01066ed: ff 75 e0 pushl -0x20(%ebp) -c01066f0: 8d 45 14 lea 0x14(%ebp),%eax -c01066f3: 50 push %eax -c01066f4: e8 39 fd ff ff call c0106432 -c01066f9: 83 c4 10 add $0x10,%esp -c01066fc: 89 45 f0 mov %eax,-0x10(%ebp) -c01066ff: 89 55 f4 mov %edx,-0xc(%ebp) - if ((long long)num < 0) { -c0106702: 8b 45 f0 mov -0x10(%ebp),%eax -c0106705: 8b 55 f4 mov -0xc(%ebp),%edx -c0106708: 85 d2 test %edx,%edx -c010670a: 79 23 jns c010672f - putch('-', putdat); -c010670c: 83 ec 08 sub $0x8,%esp -c010670f: ff 75 0c pushl 0xc(%ebp) -c0106712: 6a 2d push $0x2d -c0106714: 8b 45 08 mov 0x8(%ebp),%eax -c0106717: ff d0 call *%eax -c0106719: 83 c4 10 add $0x10,%esp - num = -(long long)num; -c010671c: 8b 45 f0 mov -0x10(%ebp),%eax -c010671f: 8b 55 f4 mov -0xc(%ebp),%edx -c0106722: f7 d8 neg %eax -c0106724: 83 d2 00 adc $0x0,%edx -c0106727: f7 da neg %edx -c0106729: 89 45 f0 mov %eax,-0x10(%ebp) -c010672c: 89 55 f4 mov %edx,-0xc(%ebp) - } - base = 10; -c010672f: c7 45 ec 0a 00 00 00 movl $0xa,-0x14(%ebp) - goto number; -c0106736: e9 9f 00 00 00 jmp c01067da - - // unsigned decimal - case 'u': - num = getuint(&ap, lflag); -c010673b: 83 ec 08 sub $0x8,%esp -c010673e: ff 75 e0 pushl -0x20(%ebp) -c0106741: 8d 45 14 lea 0x14(%ebp),%eax -c0106744: 50 push %eax -c0106745: e8 99 fc ff ff call c01063e3 -c010674a: 83 c4 10 add $0x10,%esp -c010674d: 89 45 f0 mov %eax,-0x10(%ebp) -c0106750: 89 55 f4 mov %edx,-0xc(%ebp) - base = 10; -c0106753: c7 45 ec 0a 00 00 00 movl $0xa,-0x14(%ebp) - goto number; -c010675a: eb 7e jmp c01067da - - // (unsigned) octal - case 'o': - num = getuint(&ap, lflag); -c010675c: 83 ec 08 sub $0x8,%esp -c010675f: ff 75 e0 pushl -0x20(%ebp) -c0106762: 8d 45 14 lea 0x14(%ebp),%eax -c0106765: 50 push %eax -c0106766: e8 78 fc ff ff call c01063e3 -c010676b: 83 c4 10 add $0x10,%esp -c010676e: 89 45 f0 mov %eax,-0x10(%ebp) -c0106771: 89 55 f4 mov %edx,-0xc(%ebp) - base = 8; -c0106774: c7 45 ec 08 00 00 00 movl $0x8,-0x14(%ebp) - goto number; -c010677b: eb 5d jmp c01067da - - // pointer - case 'p': - putch('0', putdat); -c010677d: 83 ec 08 sub $0x8,%esp -c0106780: ff 75 0c pushl 0xc(%ebp) -c0106783: 6a 30 push $0x30 -c0106785: 8b 45 08 mov 0x8(%ebp),%eax -c0106788: ff d0 call *%eax -c010678a: 83 c4 10 add $0x10,%esp - putch('x', putdat); -c010678d: 83 ec 08 sub $0x8,%esp -c0106790: ff 75 0c pushl 0xc(%ebp) -c0106793: 6a 78 push $0x78 -c0106795: 8b 45 08 mov 0x8(%ebp),%eax -c0106798: ff d0 call *%eax -c010679a: 83 c4 10 add $0x10,%esp - num = (unsigned long long)(uintptr_t)va_arg(ap, void *); -c010679d: 8b 45 14 mov 0x14(%ebp),%eax -c01067a0: 8d 50 04 lea 0x4(%eax),%edx -c01067a3: 89 55 14 mov %edx,0x14(%ebp) -c01067a6: 8b 00 mov (%eax),%eax -c01067a8: 89 45 f0 mov %eax,-0x10(%ebp) -c01067ab: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - base = 16; -c01067b2: c7 45 ec 10 00 00 00 movl $0x10,-0x14(%ebp) - goto number; -c01067b9: eb 1f jmp c01067da - - // (unsigned) hexadecimal - case 'x': - num = getuint(&ap, lflag); -c01067bb: 83 ec 08 sub $0x8,%esp -c01067be: ff 75 e0 pushl -0x20(%ebp) -c01067c1: 8d 45 14 lea 0x14(%ebp),%eax -c01067c4: 50 push %eax -c01067c5: e8 19 fc ff ff call c01063e3 -c01067ca: 83 c4 10 add $0x10,%esp -c01067cd: 89 45 f0 mov %eax,-0x10(%ebp) -c01067d0: 89 55 f4 mov %edx,-0xc(%ebp) - base = 16; -c01067d3: c7 45 ec 10 00 00 00 movl $0x10,-0x14(%ebp) - number: - printnum(putch, putdat, num, base, width, padc); -c01067da: 0f be 55 db movsbl -0x25(%ebp),%edx -c01067de: 8b 45 ec mov -0x14(%ebp),%eax -c01067e1: 83 ec 04 sub $0x4,%esp -c01067e4: 52 push %edx -c01067e5: ff 75 e8 pushl -0x18(%ebp) -c01067e8: 50 push %eax -c01067e9: ff 75 f4 pushl -0xc(%ebp) -c01067ec: ff 75 f0 pushl -0x10(%ebp) -c01067ef: ff 75 0c pushl 0xc(%ebp) -c01067f2: ff 75 08 pushl 0x8(%ebp) -c01067f5: e8 f8 fa ff ff call c01062f2 -c01067fa: 83 c4 20 add $0x20,%esp - break; -c01067fd: eb 39 jmp c0106838 - - // escaped '%' character - case '%': - putch(ch, putdat); -c01067ff: 83 ec 08 sub $0x8,%esp -c0106802: ff 75 0c pushl 0xc(%ebp) -c0106805: 53 push %ebx -c0106806: 8b 45 08 mov 0x8(%ebp),%eax -c0106809: ff d0 call *%eax -c010680b: 83 c4 10 add $0x10,%esp - break; -c010680e: eb 28 jmp c0106838 - - // unrecognized escape sequence - just print it literally - default: - putch('%', putdat); -c0106810: 83 ec 08 sub $0x8,%esp -c0106813: ff 75 0c pushl 0xc(%ebp) -c0106816: 6a 25 push $0x25 -c0106818: 8b 45 08 mov 0x8(%ebp),%eax -c010681b: ff d0 call *%eax -c010681d: 83 c4 10 add $0x10,%esp - for (fmt --; fmt[-1] != '%'; fmt --) -c0106820: 83 6d 10 01 subl $0x1,0x10(%ebp) -c0106824: eb 04 jmp c010682a -c0106826: 83 6d 10 01 subl $0x1,0x10(%ebp) -c010682a: 8b 45 10 mov 0x10(%ebp),%eax -c010682d: 83 e8 01 sub $0x1,%eax -c0106830: 0f b6 00 movzbl (%eax),%eax -c0106833: 3c 25 cmp $0x25,%al -c0106835: 75 ef jne c0106826 - /* do nothing */; - break; -c0106837: 90 nop - } - } -c0106838: e9 68 fc ff ff jmp c01064a5 - int base, width, precision, lflag, altflag; - - while (1) { - while ((ch = *(unsigned char *)fmt ++) != '%') { - if (ch == '\0') { - return; -c010683d: 90 nop - for (fmt --; fmt[-1] != '%'; fmt --) - /* do nothing */; - break; - } - } -} -c010683e: 8d 65 f8 lea -0x8(%ebp),%esp -c0106841: 5b pop %ebx -c0106842: 5e pop %esi -c0106843: 5d pop %ebp -c0106844: c3 ret - -c0106845 : - * sprintputch - 'print' a single character in a buffer - * @ch: the character will be printed - * @b: the buffer to place the character @ch - * */ -static void -sprintputch(int ch, struct sprintbuf *b) { -c0106845: 55 push %ebp -c0106846: 89 e5 mov %esp,%ebp - b->cnt ++; -c0106848: 8b 45 0c mov 0xc(%ebp),%eax -c010684b: 8b 40 08 mov 0x8(%eax),%eax -c010684e: 8d 50 01 lea 0x1(%eax),%edx -c0106851: 8b 45 0c mov 0xc(%ebp),%eax -c0106854: 89 50 08 mov %edx,0x8(%eax) - if (b->buf < b->ebuf) { -c0106857: 8b 45 0c mov 0xc(%ebp),%eax -c010685a: 8b 10 mov (%eax),%edx -c010685c: 8b 45 0c mov 0xc(%ebp),%eax -c010685f: 8b 40 04 mov 0x4(%eax),%eax -c0106862: 39 c2 cmp %eax,%edx -c0106864: 73 12 jae c0106878 - *b->buf ++ = ch; -c0106866: 8b 45 0c mov 0xc(%ebp),%eax -c0106869: 8b 00 mov (%eax),%eax -c010686b: 8d 48 01 lea 0x1(%eax),%ecx -c010686e: 8b 55 0c mov 0xc(%ebp),%edx -c0106871: 89 0a mov %ecx,(%edx) -c0106873: 8b 55 08 mov 0x8(%ebp),%edx -c0106876: 88 10 mov %dl,(%eax) - } -} -c0106878: 90 nop -c0106879: 5d pop %ebp -c010687a: c3 ret - -c010687b : - * @str: the buffer to place the result into - * @size: the size of buffer, including the trailing null space - * @fmt: the format string to use - * */ -int -snprintf(char *str, size_t size, const char *fmt, ...) { -c010687b: 55 push %ebp -c010687c: 89 e5 mov %esp,%ebp -c010687e: 83 ec 18 sub $0x18,%esp - va_list ap; - int cnt; - va_start(ap, fmt); -c0106881: 8d 45 14 lea 0x14(%ebp),%eax -c0106884: 89 45 f0 mov %eax,-0x10(%ebp) - cnt = vsnprintf(str, size, fmt, ap); -c0106887: 8b 45 f0 mov -0x10(%ebp),%eax -c010688a: 50 push %eax -c010688b: ff 75 10 pushl 0x10(%ebp) -c010688e: ff 75 0c pushl 0xc(%ebp) -c0106891: ff 75 08 pushl 0x8(%ebp) -c0106894: e8 0b 00 00 00 call c01068a4 -c0106899: 83 c4 10 add $0x10,%esp -c010689c: 89 45 f4 mov %eax,-0xc(%ebp) - va_end(ap); - return cnt; -c010689f: 8b 45 f4 mov -0xc(%ebp),%eax -} -c01068a2: c9 leave -c01068a3: c3 ret - -c01068a4 : - * - * Call this function if you are already dealing with a va_list. - * Or you probably want snprintf() instead. - * */ -int -vsnprintf(char *str, size_t size, const char *fmt, va_list ap) { -c01068a4: 55 push %ebp -c01068a5: 89 e5 mov %esp,%ebp -c01068a7: 83 ec 18 sub $0x18,%esp - struct sprintbuf b = {str, str + size - 1, 0}; -c01068aa: 8b 45 08 mov 0x8(%ebp),%eax -c01068ad: 89 45 ec mov %eax,-0x14(%ebp) -c01068b0: 8b 45 0c mov 0xc(%ebp),%eax -c01068b3: 8d 50 ff lea -0x1(%eax),%edx -c01068b6: 8b 45 08 mov 0x8(%ebp),%eax -c01068b9: 01 d0 add %edx,%eax -c01068bb: 89 45 f0 mov %eax,-0x10(%ebp) -c01068be: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - if (str == NULL || b.buf > b.ebuf) { -c01068c5: 83 7d 08 00 cmpl $0x0,0x8(%ebp) -c01068c9: 74 0a je c01068d5 -c01068cb: 8b 55 ec mov -0x14(%ebp),%edx -c01068ce: 8b 45 f0 mov -0x10(%ebp),%eax -c01068d1: 39 c2 cmp %eax,%edx -c01068d3: 76 07 jbe c01068dc - return -E_INVAL; -c01068d5: b8 fd ff ff ff mov $0xfffffffd,%eax -c01068da: eb 20 jmp c01068fc - } - // print the string to the buffer - vprintfmt((void*)sprintputch, &b, fmt, ap); -c01068dc: ff 75 14 pushl 0x14(%ebp) -c01068df: ff 75 10 pushl 0x10(%ebp) -c01068e2: 8d 45 ec lea -0x14(%ebp),%eax -c01068e5: 50 push %eax -c01068e6: 68 45 68 10 c0 push $0xc0106845 -c01068eb: e8 ad fb ff ff call c010649d -c01068f0: 83 c4 10 add $0x10,%esp - // null terminate the buffer - *b.buf = '\0'; -c01068f3: 8b 45 ec mov -0x14(%ebp),%eax -c01068f6: c6 00 00 movb $0x0,(%eax) - return b.cnt; -c01068f9: 8b 45 f4 mov -0xc(%ebp),%eax -} -c01068fc: c9 leave -c01068fd: c3 ret diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kernel.sym" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kernel.sym" deleted file mode 100644 index 44145033b..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kernel.sym" +++ /dev/null @@ -1,483 +0,0 @@ -c0100000 .text -c0106900 .rodata -c0107f88 .stab -c011424d .stabstr -c0117000 .data -c0119a40 .bss -00000000 .comment -00000000 obj/kern/init/entry.o -c0119018 __gdtdesc -c0100019 relocated -c0100028 spin -c0119000 __gdt -00000000 init.c -c010010f lab1_print_cur_status -c0119a40 round.1515 -c01001cc lab1_switch_to_user -c01001d2 lab1_switch_to_kernel -c01001d8 lab1_switch_test -00000000 stdio.c -c010021a cputch -00000000 readline.c -c0119a60 buf -00000000 panic.c -c0119e60 is_panic -00000000 kdebug.c -c010048c stab_binsearch -c0100a2a read_eip -00000000 kmonitor.c -c0119020 commands -c0100afa parse -c0100bb6 runcmd -00000000 clock.c -00000000 console.c -c0100dbb __intr_save -c0100de5 __intr_restore -c0100df9 delay -c0119e80 crt_buf -c0119e84 crt_pos -c0119e86 addr_6845 -c0100e42 cga_init -c0119e88 serial_exists -c0100f29 serial_init -c010100e lpt_putc_sub -c0101088 lpt_putc -c01010bf cga_putc -c0101294 serial_putc_sub -c01012ee serial_putc -c0119ea0 cons -c0101325 cons_intr -c0101371 serial_proc_data -c0119060 shiftcode -c0119160 togglecode -c0119260 normalmap -c0119360 shiftmap -c0119460 ctlmap -c0119560 charcode -c01013ea kbd_proc_data -c011a0a8 shift.1609 -c0101577 kbd_intr -c0101590 kbd_init -00000000 picirq.c -c0119570 irq_mask -c011a0ac did_init -c0101697 pic_setmask -00000000 intr.c -00000000 trap.c -c0101868 print_ticks -c011a0c0 idt -c0119580 idt_pd -c0101a6a trapname -c0107000 excnames.1514 -c01195a0 IA32flags -c0101d4e trap_dispatch -00000000 pmm.c -c0102a53 page2ppn -c0102a6c page2pa -c0102a7f pa2page -c0102ac6 page2kva -c0102b0b pte2page -c0102b45 pde2page -c0102b61 page_ref -c0102b6b set_page_ref -c0102b79 page_ref_inc -c0102b90 page_ref_dec -c0102ba7 __intr_save -c0102bd1 __intr_restore -c011a8e0 ts -c0119a00 gdt -c0119a30 gdt_pd -c0102be5 lgdt -c0102c29 gdt_init -c0102d1b init_pmm_manager -c0102d50 init_memmap -c0102e10 page_init -c010323d enable_paging -c0103277 boot_map_segment -c0103360 boot_alloc_page -c01037e5 check_alloc_page -c0103808 check_pgdir -c0103d6e check_boot_pgdir -c0103639 page_remove_pte -c0104067 perm2str -c011a948 str.1794 -c01040b5 get_pgtable_items -00000000 default_pmm.c -c01042bd page2ppn -c01042d6 page2pa -c01042e9 page_ref -c01042f3 set_page_ref -c0104301 default_init -c010432f default_init_memmap -c010445f default_alloc_pages -c010463f default_free_pages -c01049d0 default_nr_free_pages -c01049da basic_check -c0104e50 default_check -00000000 buddy_pmm.c -c01053c4 page2ppn -c01053dd page2pa -c01053f0 set_page_ref -c011a94c buddy_longest -c011a950 buddy_max_pages -c011a954 buddy_allocatable_base -c01053fe buddy_find_first_zero -c010541f buddy_node_index_to_page -c0105449 buddy_init -c010544f buddy_init_memmap -c0105673 buddy_fix_size -c010569a buddy_alloc_pages -c010580d buddy_free_pages -c01059f9 buddy_nr_free_pages -c0105a05 buddy_check -00000000 string.c -00000000 printfmt.c -c0107df0 error_string -c01062f2 printnum -c01063e3 getuint -c0106432 getint -c0106845 sprintputch -c0102989 vector242 -c01023e0 vector119 -c01008f1 print_kerninfo -c01022c0 vector87 -c01022b7 vector86 -c01029f5 vector251 -c0105e8e strcpy -c01022e4 vector91 -c01020da vector33 -c01025c9 vector162 -c010282d vector213 -c010237d vector108 -c0102134 vector43 -c0100000 kern_entry -c0100d40 mon_backtrace -c01025ed vector165 -c01026dd vector185 -c0107d70 buddy_pmm_manager -c01023bc vector115 -c01023fb vector122 -c01036dc page_insert -c0102581 vector156 -c01029ad vector245 -c010270d vector189 -c0102000 vector7 -c01021d6 vector61 -c0102089 vector24 -c0102398 vector111 -c0102791 vector200 -c010220c vector67 -c01024a9 vector138 -c010224b vector74 -c01061a7 memmove -c01021b2 vector57 -c010687b snprintf -c0101ab1 print_trapframe -c0102839 vector214 -c010649d vprintfmt -c010232c vector99 -c01035e3 get_page -c0102a31 __alltraps -c0101625 cons_getc -c01024cd vector141 -c0100482 is_kernel_panic -c0102641 vector172 -c0100a3b print_stackframe -c010297d vector241 -c0102a0d vector253 -c0101fdc vector3 -c0101fd3 vector2 -c01028d5 vector227 -c0102809 vector210 -c01028b1 vector224 -c0102122 vector41 -c0100267 cprintf -c010206e vector21 -c010267d vector177 -c01023d7 vector118 -c0102227 vector70 -c010221e vector69 -c010294d vector237 -c01021f1 vector64 -c01020a4 vector27 -c0102461 vector132 -c01026e9 vector186 -c010285d vector217 -c010624a memcpy -c0101fca vector1 -c0102689 vector178 -c0102107 vector38 -c0102959 vector238 -c010030b readline -c010246d vector133 -c0102242 vector73 -c01024f1 vector144 -c01070cc vpd -c010002a kern_init -c0102a19 vector254 -c010233e vector101 -c0102815 vector211 -c0102659 vector174 -c0102995 vector243 -c0102431 vector128 -c010228a vector81 -c0102dad free_pages -c010202c vector13 -c01068a4 vsnprintf -c010217c vector51 -c0102043 vector16 -c0119a36 edata -c01015ab cons_init -c011a95c pmm_manager -c0102971 vector240 -c0102197 vector54 -c010205c vector19 -c011424c __STAB_END__ -c01022ed vector92 -c01029a1 vector244 -c0102c1b load_esp0 -c01024c1 vector140 -c0102146 vector45 -c0102278 vector79 -c01028ed vector229 -c0102599 vector158 -c01016f0 pic_enable -c0102110 vector39 -c0102611 vector168 -c01020ec vector35 -c01023aa vector113 -c011424d __STABSTR_BEGIN__ -c0102416 vector125 -c01003cd __panic -c0102851 vector216 -c01021e8 vector63 -c010209b vector26 -c01013c8 serial_intr -c010273d vector193 -c0102761 vector196 -c01000d4 grade_backtrace0 -c01027fd vector209 -c0101fe5 vector4 -c0102629 vector170 -c0102491 vector136 -c0102017 vector10 -c01027d9 vector206 -c0102a25 vector255 -c01026ad vector181 -c01021c4 vector59 -c01000ee grade_backtrace -c01022ae vector85 -c01022a5 vector84 -c01026c5 vector183 -c01025a5 vector159 -c0102821 vector212 -c0102158 vector47 -c010600a strtol -c01028e1 vector228 -c010212b vector42 -c01023b3 vector114 -c0105e5e strnlen -c0102665 vector175 -c01024e5 vector143 -c0102449 vector130 -c0107b00 default_pmm_manager -c01029b9 vector246 -c0102010 vector9 -c01024d9 vector142 -c0102335 vector100 -c010279d vector201 -c01018a4 idt_init -c010098e print_debuginfo -c01021cd vector60 -c0102080 vector23 -c0102941 vector236 -c011a8c0 npage -c0102905 vector231 -c0102203 vector66 -c01020b6 vector29 -c0104169 print_pgdir -c0102485 vector135 -c0100c66 kmonitor -c0102266 vector77 -c01026a1 vector180 -c0100d52 clock_init -c01027f1 vector208 -c0102323 vector98 -c010231a vector97 -c0102de2 nr_free_pages -c0102671 vector176 -c0102749 vector194 -c01020d1 vector32 -c011a960 boot_cr3 -c011a974 end -c0102785 vector199 -c0102455 vector131 -c0102a01 vector252 -c0101fc1 vector0 -c0105fdb strfind -c01015dc cons_putc -c01068fe etext -c01024fd vector145 -c0102374 vector107 -c011a8c4 boot_pgdir -c0102119 vector40 -c010185a intr_enable -c0102347 vector102 -c01021a9 vector56 -c0102215 vector68 -c0101ff7 vector6 -c010243d vector129 -c010276d vector197 -c0102551 vector152 -c0119600 __vectors -c01028f9 vector230 -c0105f52 strncmp -c01034a8 get_pte -c01020fe vector37 -c01027cd vector205 -c01025bd vector161 -c0105ece strncpy -c0102230 vector71 -c01025b1 vector160 -c0102845 vector215 -c010258d vector157 -c0101861 intr_disable -c0101c8e print_regs -c01023a1 vector112 -c0100095 grade_backtrace2 -c01026b9 vector182 -c0102025 vector12 -c010629a memcmp -c0102386 vector109 -c0102065 vector20 -c010218e vector53 -c0102053 vector18 -c0102308 vector95 -c01028c9 vector226 -c010216a vector49 -c010213d vector44 -c010226f vector78 -c010264d vector173 -c01023ce vector117 -c0101a9b trap_in_kernel -c0102293 vector82 -c0102899 vector222 -c0102009 vector8 -c010252d vector149 -c010028d cputchar -c0106167 memset -c0102911 vector232 -c010236b vector106 -c0102881 vector220 -c01022db vector90 -c01025d5 vector163 -c0102929 vector234 -c01021df vector62 -c0102092 vector25 -c0102779 vector198 -c01023e9 vector120 -c01002f2 getchar -c01036a3 page_remove -c0102173 vector50 -c010203a vector15 -c0106479 printfmt -c0102545 vector151 -c010229c vector83 -c01022d2 vector89 -c01022c9 vector88 -c0101faa trap -c0102695 vector179 -c01020e3 vector34 -c0116fa9 __STABSTR_END__ -c010214f vector46 -c0105f08 strcmp -c0102479 vector134 -c01028a5 vector223 -c0102869 vector218 -c01005e3 debuginfo_eip -c010171d pic_init -c01028bd vector225 -c01026f5 vector187 -c01033a3 pmm_init -c01020bf vector30 -c0102428 vector127 -c011a958 ticks -c0102731 vector192 -c01025f9 vector166 -c010225d vector76 -c0102254 vector75 -c0102755 vector195 -c0102539 vector150 -c01021bb vector58 -c01029d1 vector248 -c0102404 vector123 -c0102311 vector96 -c01020c8 vector31 -c01027b5 vector203 -c0102d6f alloc_pages -c01024b5 vector139 -c010255d vector153 -c01025e1 vector164 -c01023f2 vector121 -c0101fee vector5 -c0102605 vector167 -c0102575 vector155 -c01029dd vector249 -c01070c8 vpt -c01029e9 vector250 -c010240d vector124 -c010238f vector110 -c01027c1 vector204 -c0102a48 __trapret -c010023e vcprintf -c010249d vector137 -c010043b __warn -c01029c5 vector247 -c0102077 vector22 -c01027a9 vector202 -c0102239 vector72 -c01021a0 vector55 -c01002a4 cputs -c0119000 bootstacktop -c010241f vector126 -c01021fa vector65 -c01020ad vector28 -c010261d vector169 -c010291d vector233 -c0102515 vector147 -c0117000 bootstack -c0102359 vector104 -c011a968 free_area -c01023c5 vector116 -c0107f88 __STAB_BEGIN__ -c0102185 vector52 -c010204c vector17 -c01026d1 vector184 -c0105e36 strlen -c01027e5 vector207 -c0102719 vector190 -c0102965 vector239 -c01022ff vector94 -c01022f6 vector93 -c0102701 vector188 -c0105fa8 strchr -c0102161 vector48 -c01000af grade_backtrace1 -c0102875 vector219 -c0102521 vector148 -c010288d vector221 -c0102281 vector80 -c0102635 vector171 -c0102569 vector154 -c01020f5 vector36 -c0102935 vector235 -c0102362 vector105 -c0100d2e mon_kerninfo -c011a964 pages -c0102509 vector146 -c0102725 vector191 -c0102350 vector103 -c0100cd4 mon_help -c010201e vector11 -c0103795 tlb_invalidate -c0102033 vector14 diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kernel_nopage.asm" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kernel_nopage.asm" deleted file mode 100644 index f1e1a4b14..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kernel_nopage.asm" +++ /dev/null @@ -1,14474 +0,0 @@ - -bin/kernel_nopage: file format elf32-i386 - - -Disassembly of section .text: - -00100000 : -.text -.globl kern_entry -kern_entry: - # reload temperate gdt (second time) to remap all physical memory - # virtual_addr 0~4G=linear_addr&physical_addr -KERNBASE~4G-KERNBASE - lgdt REALLOC(__gdtdesc) - 100000: 0f 01 15 18 90 11 40 lgdtl 0x40119018 - movl $KERNEL_DS, %eax - 100007: b8 10 00 00 00 mov $0x10,%eax - movw %ax, %ds - 10000c: 8e d8 mov %eax,%ds - movw %ax, %es - 10000e: 8e c0 mov %eax,%es - movw %ax, %ss - 100010: 8e d0 mov %eax,%ss - - ljmp $KERNEL_CS, $relocated - 100012: ea 19 00 10 00 08 00 ljmp $0x8,$0x100019 - -00100019 : - -relocated: - - # set ebp, esp - movl $0x0, %ebp - 100019: bd 00 00 00 00 mov $0x0,%ebp - # the kernel stack region is from bootstack -- bootstacktop, - # the kernel stack size is KSTACKSIZE (8KB)defined in memlayout.h - movl $bootstacktop, %esp - 10001e: bc 00 90 11 00 mov $0x119000,%esp - # now kernel stack is ready , call the first C function - call kern_init - 100023: e8 02 00 00 00 call 10002a - -00100028 : - -# should never get here -spin: - jmp spin - 100028: eb fe jmp 100028 - -0010002a : -int kern_init(void) __attribute__((noreturn)); -void grade_backtrace(void); -static void lab1_switch_test(void); - -int -kern_init(void) { - 10002a: 55 push %ebp - 10002b: 89 e5 mov %esp,%ebp - 10002d: 83 ec 18 sub $0x18,%esp - extern char edata[], end[]; - memset(edata, 0, end - edata); - 100030: ba 74 a9 11 00 mov $0x11a974,%edx - 100035: b8 36 9a 11 00 mov $0x119a36,%eax - 10003a: 29 c2 sub %eax,%edx - 10003c: 89 d0 mov %edx,%eax - 10003e: 83 ec 04 sub $0x4,%esp - 100041: 50 push %eax - 100042: 6a 00 push $0x0 - 100044: 68 36 9a 11 00 push $0x119a36 - 100049: e8 19 61 00 00 call 106167 - 10004e: 83 c4 10 add $0x10,%esp - - cons_init(); // init the console - 100051: e8 55 15 00 00 call 1015ab - - const char *message = "(THU.CST) os is loading ..."; - 100056: c7 45 f4 00 69 10 00 movl $0x106900,-0xc(%ebp) - cprintf("%s\n\n", message); - 10005d: 83 ec 08 sub $0x8,%esp - 100060: ff 75 f4 pushl -0xc(%ebp) - 100063: 68 1c 69 10 00 push $0x10691c - 100068: e8 fa 01 00 00 call 100267 - 10006d: 83 c4 10 add $0x10,%esp - - print_kerninfo(); - 100070: e8 7c 08 00 00 call 1008f1 - - grade_backtrace(); - 100075: e8 74 00 00 00 call 1000ee - - pmm_init(); // init physical memory management - 10007a: e8 24 33 00 00 call 1033a3 - - pic_init(); // init interrupt controller - 10007f: e8 99 16 00 00 call 10171d - idt_init(); // init interrupt descriptor table - 100084: e8 1b 18 00 00 call 1018a4 - - clock_init(); // init clock interrupt - 100089: e8 c4 0c 00 00 call 100d52 - intr_enable(); // enable irq interrupt - 10008e: e8 c7 17 00 00 call 10185a - //LAB1: CAHLLENGE 1 If you try to do it, uncomment lab1_switch_test() - // user/kernel mode switch test - //lab1_switch_test(); - - /* do nothing */ - while (1); - 100093: eb fe jmp 100093 - -00100095 : -} - -void __attribute__((noinline)) -grade_backtrace2(int arg0, int arg1, int arg2, int arg3) { - 100095: 55 push %ebp - 100096: 89 e5 mov %esp,%ebp - 100098: 83 ec 08 sub $0x8,%esp - mon_backtrace(0, NULL, NULL); - 10009b: 83 ec 04 sub $0x4,%esp - 10009e: 6a 00 push $0x0 - 1000a0: 6a 00 push $0x0 - 1000a2: 6a 00 push $0x0 - 1000a4: e8 97 0c 00 00 call 100d40 - 1000a9: 83 c4 10 add $0x10,%esp -} - 1000ac: 90 nop - 1000ad: c9 leave - 1000ae: c3 ret - -001000af : - -void __attribute__((noinline)) -grade_backtrace1(int arg0, int arg1) { - 1000af: 55 push %ebp - 1000b0: 89 e5 mov %esp,%ebp - 1000b2: 53 push %ebx - 1000b3: 83 ec 04 sub $0x4,%esp - grade_backtrace2(arg0, (int)&arg0, arg1, (int)&arg1); - 1000b6: 8d 4d 0c lea 0xc(%ebp),%ecx - 1000b9: 8b 55 0c mov 0xc(%ebp),%edx - 1000bc: 8d 5d 08 lea 0x8(%ebp),%ebx - 1000bf: 8b 45 08 mov 0x8(%ebp),%eax - 1000c2: 51 push %ecx - 1000c3: 52 push %edx - 1000c4: 53 push %ebx - 1000c5: 50 push %eax - 1000c6: e8 ca ff ff ff call 100095 - 1000cb: 83 c4 10 add $0x10,%esp -} - 1000ce: 90 nop - 1000cf: 8b 5d fc mov -0x4(%ebp),%ebx - 1000d2: c9 leave - 1000d3: c3 ret - -001000d4 : - -void __attribute__((noinline)) -grade_backtrace0(int arg0, int arg1, int arg2) { - 1000d4: 55 push %ebp - 1000d5: 89 e5 mov %esp,%ebp - 1000d7: 83 ec 08 sub $0x8,%esp - grade_backtrace1(arg0, arg2); - 1000da: 83 ec 08 sub $0x8,%esp - 1000dd: ff 75 10 pushl 0x10(%ebp) - 1000e0: ff 75 08 pushl 0x8(%ebp) - 1000e3: e8 c7 ff ff ff call 1000af - 1000e8: 83 c4 10 add $0x10,%esp -} - 1000eb: 90 nop - 1000ec: c9 leave - 1000ed: c3 ret - -001000ee : - -void -grade_backtrace(void) { - 1000ee: 55 push %ebp - 1000ef: 89 e5 mov %esp,%ebp - 1000f1: 83 ec 08 sub $0x8,%esp - grade_backtrace0(0, (int)kern_init, 0xffff0000); - 1000f4: b8 2a 00 10 00 mov $0x10002a,%eax - 1000f9: 83 ec 04 sub $0x4,%esp - 1000fc: 68 00 00 ff ff push $0xffff0000 - 100101: 50 push %eax - 100102: 6a 00 push $0x0 - 100104: e8 cb ff ff ff call 1000d4 - 100109: 83 c4 10 add $0x10,%esp -} - 10010c: 90 nop - 10010d: c9 leave - 10010e: c3 ret - -0010010f : - -static void -lab1_print_cur_status(void) { - 10010f: 55 push %ebp - 100110: 89 e5 mov %esp,%ebp - 100112: 83 ec 18 sub $0x18,%esp - static int round = 0; - uint16_t reg1, reg2, reg3, reg4; - asm volatile ( - 100115: 8c 4d f6 mov %cs,-0xa(%ebp) - 100118: 8c 5d f4 mov %ds,-0xc(%ebp) - 10011b: 8c 45 f2 mov %es,-0xe(%ebp) - 10011e: 8c 55 f0 mov %ss,-0x10(%ebp) - "mov %%cs, %0;" - "mov %%ds, %1;" - "mov %%es, %2;" - "mov %%ss, %3;" - : "=m"(reg1), "=m"(reg2), "=m"(reg3), "=m"(reg4)); - cprintf("%d: @ring %d\n", round, reg1 & 3); - 100121: 0f b7 45 f6 movzwl -0xa(%ebp),%eax - 100125: 0f b7 c0 movzwl %ax,%eax - 100128: 83 e0 03 and $0x3,%eax - 10012b: 89 c2 mov %eax,%edx - 10012d: a1 40 9a 11 00 mov 0x119a40,%eax - 100132: 83 ec 04 sub $0x4,%esp - 100135: 52 push %edx - 100136: 50 push %eax - 100137: 68 21 69 10 00 push $0x106921 - 10013c: e8 26 01 00 00 call 100267 - 100141: 83 c4 10 add $0x10,%esp - cprintf("%d: cs = %x\n", round, reg1); - 100144: 0f b7 45 f6 movzwl -0xa(%ebp),%eax - 100148: 0f b7 d0 movzwl %ax,%edx - 10014b: a1 40 9a 11 00 mov 0x119a40,%eax - 100150: 83 ec 04 sub $0x4,%esp - 100153: 52 push %edx - 100154: 50 push %eax - 100155: 68 2f 69 10 00 push $0x10692f - 10015a: e8 08 01 00 00 call 100267 - 10015f: 83 c4 10 add $0x10,%esp - cprintf("%d: ds = %x\n", round, reg2); - 100162: 0f b7 45 f4 movzwl -0xc(%ebp),%eax - 100166: 0f b7 d0 movzwl %ax,%edx - 100169: a1 40 9a 11 00 mov 0x119a40,%eax - 10016e: 83 ec 04 sub $0x4,%esp - 100171: 52 push %edx - 100172: 50 push %eax - 100173: 68 3d 69 10 00 push $0x10693d - 100178: e8 ea 00 00 00 call 100267 - 10017d: 83 c4 10 add $0x10,%esp - cprintf("%d: es = %x\n", round, reg3); - 100180: 0f b7 45 f2 movzwl -0xe(%ebp),%eax - 100184: 0f b7 d0 movzwl %ax,%edx - 100187: a1 40 9a 11 00 mov 0x119a40,%eax - 10018c: 83 ec 04 sub $0x4,%esp - 10018f: 52 push %edx - 100190: 50 push %eax - 100191: 68 4b 69 10 00 push $0x10694b - 100196: e8 cc 00 00 00 call 100267 - 10019b: 83 c4 10 add $0x10,%esp - cprintf("%d: ss = %x\n", round, reg4); - 10019e: 0f b7 45 f0 movzwl -0x10(%ebp),%eax - 1001a2: 0f b7 d0 movzwl %ax,%edx - 1001a5: a1 40 9a 11 00 mov 0x119a40,%eax - 1001aa: 83 ec 04 sub $0x4,%esp - 1001ad: 52 push %edx - 1001ae: 50 push %eax - 1001af: 68 59 69 10 00 push $0x106959 - 1001b4: e8 ae 00 00 00 call 100267 - 1001b9: 83 c4 10 add $0x10,%esp - round ++; - 1001bc: a1 40 9a 11 00 mov 0x119a40,%eax - 1001c1: 83 c0 01 add $0x1,%eax - 1001c4: a3 40 9a 11 00 mov %eax,0x119a40 -} - 1001c9: 90 nop - 1001ca: c9 leave - 1001cb: c3 ret - -001001cc : - -static void -lab1_switch_to_user(void) { - 1001cc: 55 push %ebp - 1001cd: 89 e5 mov %esp,%ebp - //LAB1 CHALLENGE 1 : TODO -} - 1001cf: 90 nop - 1001d0: 5d pop %ebp - 1001d1: c3 ret - -001001d2 : - -static void -lab1_switch_to_kernel(void) { - 1001d2: 55 push %ebp - 1001d3: 89 e5 mov %esp,%ebp - //LAB1 CHALLENGE 1 : TODO -} - 1001d5: 90 nop - 1001d6: 5d pop %ebp - 1001d7: c3 ret - -001001d8 : - -static void -lab1_switch_test(void) { - 1001d8: 55 push %ebp - 1001d9: 89 e5 mov %esp,%ebp - 1001db: 83 ec 08 sub $0x8,%esp - lab1_print_cur_status(); - 1001de: e8 2c ff ff ff call 10010f - cprintf("+++ switch to user mode +++\n"); - 1001e3: 83 ec 0c sub $0xc,%esp - 1001e6: 68 68 69 10 00 push $0x106968 - 1001eb: e8 77 00 00 00 call 100267 - 1001f0: 83 c4 10 add $0x10,%esp - lab1_switch_to_user(); - 1001f3: e8 d4 ff ff ff call 1001cc - lab1_print_cur_status(); - 1001f8: e8 12 ff ff ff call 10010f - cprintf("+++ switch to kernel mode +++\n"); - 1001fd: 83 ec 0c sub $0xc,%esp - 100200: 68 88 69 10 00 push $0x106988 - 100205: e8 5d 00 00 00 call 100267 - 10020a: 83 c4 10 add $0x10,%esp - lab1_switch_to_kernel(); - 10020d: e8 c0 ff ff ff call 1001d2 - lab1_print_cur_status(); - 100212: e8 f8 fe ff ff call 10010f -} - 100217: 90 nop - 100218: c9 leave - 100219: c3 ret - -0010021a : -/* * - * cputch - writes a single character @c to stdout, and it will - * increace the value of counter pointed by @cnt. - * */ -static void -cputch(int c, int *cnt) { - 10021a: 55 push %ebp - 10021b: 89 e5 mov %esp,%ebp - 10021d: 83 ec 08 sub $0x8,%esp - cons_putc(c); - 100220: 83 ec 0c sub $0xc,%esp - 100223: ff 75 08 pushl 0x8(%ebp) - 100226: e8 b1 13 00 00 call 1015dc - 10022b: 83 c4 10 add $0x10,%esp - (*cnt) ++; - 10022e: 8b 45 0c mov 0xc(%ebp),%eax - 100231: 8b 00 mov (%eax),%eax - 100233: 8d 50 01 lea 0x1(%eax),%edx - 100236: 8b 45 0c mov 0xc(%ebp),%eax - 100239: 89 10 mov %edx,(%eax) -} - 10023b: 90 nop - 10023c: c9 leave - 10023d: c3 ret - -0010023e : - * - * Call this function if you are already dealing with a va_list. - * Or you probably want cprintf() instead. - * */ -int -vcprintf(const char *fmt, va_list ap) { - 10023e: 55 push %ebp - 10023f: 89 e5 mov %esp,%ebp - 100241: 83 ec 18 sub $0x18,%esp - int cnt = 0; - 100244: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - vprintfmt((void*)cputch, &cnt, fmt, ap); - 10024b: ff 75 0c pushl 0xc(%ebp) - 10024e: ff 75 08 pushl 0x8(%ebp) - 100251: 8d 45 f4 lea -0xc(%ebp),%eax - 100254: 50 push %eax - 100255: 68 1a 02 10 00 push $0x10021a - 10025a: e8 3e 62 00 00 call 10649d - 10025f: 83 c4 10 add $0x10,%esp - return cnt; - 100262: 8b 45 f4 mov -0xc(%ebp),%eax -} - 100265: c9 leave - 100266: c3 ret - -00100267 : - * - * The return value is the number of characters which would be - * written to stdout. - * */ -int -cprintf(const char *fmt, ...) { - 100267: 55 push %ebp - 100268: 89 e5 mov %esp,%ebp - 10026a: 83 ec 18 sub $0x18,%esp - va_list ap; - int cnt; - va_start(ap, fmt); - 10026d: 8d 45 0c lea 0xc(%ebp),%eax - 100270: 89 45 f0 mov %eax,-0x10(%ebp) - cnt = vcprintf(fmt, ap); - 100273: 8b 45 f0 mov -0x10(%ebp),%eax - 100276: 83 ec 08 sub $0x8,%esp - 100279: 50 push %eax - 10027a: ff 75 08 pushl 0x8(%ebp) - 10027d: e8 bc ff ff ff call 10023e - 100282: 83 c4 10 add $0x10,%esp - 100285: 89 45 f4 mov %eax,-0xc(%ebp) - va_end(ap); - return cnt; - 100288: 8b 45 f4 mov -0xc(%ebp),%eax -} - 10028b: c9 leave - 10028c: c3 ret - -0010028d : - -/* cputchar - writes a single character to stdout */ -void -cputchar(int c) { - 10028d: 55 push %ebp - 10028e: 89 e5 mov %esp,%ebp - 100290: 83 ec 08 sub $0x8,%esp - cons_putc(c); - 100293: 83 ec 0c sub $0xc,%esp - 100296: ff 75 08 pushl 0x8(%ebp) - 100299: e8 3e 13 00 00 call 1015dc - 10029e: 83 c4 10 add $0x10,%esp -} - 1002a1: 90 nop - 1002a2: c9 leave - 1002a3: c3 ret - -001002a4 : -/* * - * cputs- writes the string pointed by @str to stdout and - * appends a newline character. - * */ -int -cputs(const char *str) { - 1002a4: 55 push %ebp - 1002a5: 89 e5 mov %esp,%ebp - 1002a7: 83 ec 18 sub $0x18,%esp - int cnt = 0; - 1002aa: c7 45 f0 00 00 00 00 movl $0x0,-0x10(%ebp) - char c; - while ((c = *str ++) != '\0') { - 1002b1: eb 14 jmp 1002c7 - cputch(c, &cnt); - 1002b3: 0f be 45 f7 movsbl -0x9(%ebp),%eax - 1002b7: 83 ec 08 sub $0x8,%esp - 1002ba: 8d 55 f0 lea -0x10(%ebp),%edx - 1002bd: 52 push %edx - 1002be: 50 push %eax - 1002bf: e8 56 ff ff ff call 10021a - 1002c4: 83 c4 10 add $0x10,%esp - * */ -int -cputs(const char *str) { - int cnt = 0; - char c; - while ((c = *str ++) != '\0') { - 1002c7: 8b 45 08 mov 0x8(%ebp),%eax - 1002ca: 8d 50 01 lea 0x1(%eax),%edx - 1002cd: 89 55 08 mov %edx,0x8(%ebp) - 1002d0: 0f b6 00 movzbl (%eax),%eax - 1002d3: 88 45 f7 mov %al,-0x9(%ebp) - 1002d6: 80 7d f7 00 cmpb $0x0,-0x9(%ebp) - 1002da: 75 d7 jne 1002b3 - cputch(c, &cnt); - } - cputch('\n', &cnt); - 1002dc: 83 ec 08 sub $0x8,%esp - 1002df: 8d 45 f0 lea -0x10(%ebp),%eax - 1002e2: 50 push %eax - 1002e3: 6a 0a push $0xa - 1002e5: e8 30 ff ff ff call 10021a - 1002ea: 83 c4 10 add $0x10,%esp - return cnt; - 1002ed: 8b 45 f0 mov -0x10(%ebp),%eax -} - 1002f0: c9 leave - 1002f1: c3 ret - -001002f2 : - -/* getchar - reads a single non-zero character from stdin */ -int -getchar(void) { - 1002f2: 55 push %ebp - 1002f3: 89 e5 mov %esp,%ebp - 1002f5: 83 ec 18 sub $0x18,%esp - int c; - while ((c = cons_getc()) == 0) - 1002f8: e8 28 13 00 00 call 101625 - 1002fd: 89 45 f4 mov %eax,-0xc(%ebp) - 100300: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) - 100304: 74 f2 je 1002f8 - /* do nothing */; - return c; - 100306: 8b 45 f4 mov -0xc(%ebp),%eax -} - 100309: c9 leave - 10030a: c3 ret - -0010030b : - * The readline() function returns the text of the line read. If some errors - * are happened, NULL is returned. The return value is a global variable, - * thus it should be copied before it is used. - * */ -char * -readline(const char *prompt) { - 10030b: 55 push %ebp - 10030c: 89 e5 mov %esp,%ebp - 10030e: 83 ec 18 sub $0x18,%esp - if (prompt != NULL) { - 100311: 83 7d 08 00 cmpl $0x0,0x8(%ebp) - 100315: 74 13 je 10032a - cprintf("%s", prompt); - 100317: 83 ec 08 sub $0x8,%esp - 10031a: ff 75 08 pushl 0x8(%ebp) - 10031d: 68 a7 69 10 00 push $0x1069a7 - 100322: e8 40 ff ff ff call 100267 - 100327: 83 c4 10 add $0x10,%esp - } - int i = 0, c; - 10032a: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - while (1) { - c = getchar(); - 100331: e8 bc ff ff ff call 1002f2 - 100336: 89 45 f0 mov %eax,-0x10(%ebp) - if (c < 0) { - 100339: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) - 10033d: 79 0a jns 100349 - return NULL; - 10033f: b8 00 00 00 00 mov $0x0,%eax - 100344: e9 82 00 00 00 jmp 1003cb - } - else if (c >= ' ' && i < BUFSIZE - 1) { - 100349: 83 7d f0 1f cmpl $0x1f,-0x10(%ebp) - 10034d: 7e 2b jle 10037a - 10034f: 81 7d f4 fe 03 00 00 cmpl $0x3fe,-0xc(%ebp) - 100356: 7f 22 jg 10037a - cputchar(c); - 100358: 83 ec 0c sub $0xc,%esp - 10035b: ff 75 f0 pushl -0x10(%ebp) - 10035e: e8 2a ff ff ff call 10028d - 100363: 83 c4 10 add $0x10,%esp - buf[i ++] = c; - 100366: 8b 45 f4 mov -0xc(%ebp),%eax - 100369: 8d 50 01 lea 0x1(%eax),%edx - 10036c: 89 55 f4 mov %edx,-0xc(%ebp) - 10036f: 8b 55 f0 mov -0x10(%ebp),%edx - 100372: 88 90 60 9a 11 00 mov %dl,0x119a60(%eax) - 100378: eb 4c jmp 1003c6 - } - else if (c == '\b' && i > 0) { - 10037a: 83 7d f0 08 cmpl $0x8,-0x10(%ebp) - 10037e: 75 1a jne 10039a - 100380: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) - 100384: 7e 14 jle 10039a - cputchar(c); - 100386: 83 ec 0c sub $0xc,%esp - 100389: ff 75 f0 pushl -0x10(%ebp) - 10038c: e8 fc fe ff ff call 10028d - 100391: 83 c4 10 add $0x10,%esp - i --; - 100394: 83 6d f4 01 subl $0x1,-0xc(%ebp) - 100398: eb 2c jmp 1003c6 - } - else if (c == '\n' || c == '\r') { - 10039a: 83 7d f0 0a cmpl $0xa,-0x10(%ebp) - 10039e: 74 06 je 1003a6 - 1003a0: 83 7d f0 0d cmpl $0xd,-0x10(%ebp) - 1003a4: 75 8b jne 100331 - cputchar(c); - 1003a6: 83 ec 0c sub $0xc,%esp - 1003a9: ff 75 f0 pushl -0x10(%ebp) - 1003ac: e8 dc fe ff ff call 10028d - 1003b1: 83 c4 10 add $0x10,%esp - buf[i] = '\0'; - 1003b4: 8b 45 f4 mov -0xc(%ebp),%eax - 1003b7: 05 60 9a 11 00 add $0x119a60,%eax - 1003bc: c6 00 00 movb $0x0,(%eax) - return buf; - 1003bf: b8 60 9a 11 00 mov $0x119a60,%eax - 1003c4: eb 05 jmp 1003cb - } - } - 1003c6: e9 66 ff ff ff jmp 100331 -} - 1003cb: c9 leave - 1003cc: c3 ret - -001003cd <__panic>: -/* * - * __panic - __panic is called on unresolvable fatal errors. it prints - * "panic: 'message'", and then enters the kernel monitor. - * */ -void -__panic(const char *file, int line, const char *fmt, ...) { - 1003cd: 55 push %ebp - 1003ce: 89 e5 mov %esp,%ebp - 1003d0: 83 ec 18 sub $0x18,%esp - if (is_panic) { - 1003d3: a1 60 9e 11 00 mov 0x119e60,%eax - 1003d8: 85 c0 test %eax,%eax - 1003da: 75 4a jne 100426 <__panic+0x59> - goto panic_dead; - } - is_panic = 1; - 1003dc: c7 05 60 9e 11 00 01 movl $0x1,0x119e60 - 1003e3: 00 00 00 - - // print the 'message' - va_list ap; - va_start(ap, fmt); - 1003e6: 8d 45 14 lea 0x14(%ebp),%eax - 1003e9: 89 45 f4 mov %eax,-0xc(%ebp) - cprintf("kernel panic at %s:%d:\n ", file, line); - 1003ec: 83 ec 04 sub $0x4,%esp - 1003ef: ff 75 0c pushl 0xc(%ebp) - 1003f2: ff 75 08 pushl 0x8(%ebp) - 1003f5: 68 aa 69 10 00 push $0x1069aa - 1003fa: e8 68 fe ff ff call 100267 - 1003ff: 83 c4 10 add $0x10,%esp - vcprintf(fmt, ap); - 100402: 8b 45 f4 mov -0xc(%ebp),%eax - 100405: 83 ec 08 sub $0x8,%esp - 100408: 50 push %eax - 100409: ff 75 10 pushl 0x10(%ebp) - 10040c: e8 2d fe ff ff call 10023e - 100411: 83 c4 10 add $0x10,%esp - cprintf("\n"); - 100414: 83 ec 0c sub $0xc,%esp - 100417: 68 c6 69 10 00 push $0x1069c6 - 10041c: e8 46 fe ff ff call 100267 - 100421: 83 c4 10 add $0x10,%esp - 100424: eb 01 jmp 100427 <__panic+0x5a> - * "panic: 'message'", and then enters the kernel monitor. - * */ -void -__panic(const char *file, int line, const char *fmt, ...) { - if (is_panic) { - goto panic_dead; - 100426: 90 nop - vcprintf(fmt, ap); - cprintf("\n"); - va_end(ap); - -panic_dead: - intr_disable(); - 100427: e8 35 14 00 00 call 101861 - while (1) { - kmonitor(NULL); - 10042c: 83 ec 0c sub $0xc,%esp - 10042f: 6a 00 push $0x0 - 100431: e8 30 08 00 00 call 100c66 - 100436: 83 c4 10 add $0x10,%esp - } - 100439: eb f1 jmp 10042c <__panic+0x5f> - -0010043b <__warn>: -} - -/* __warn - like panic, but don't */ -void -__warn(const char *file, int line, const char *fmt, ...) { - 10043b: 55 push %ebp - 10043c: 89 e5 mov %esp,%ebp - 10043e: 83 ec 18 sub $0x18,%esp - va_list ap; - va_start(ap, fmt); - 100441: 8d 45 14 lea 0x14(%ebp),%eax - 100444: 89 45 f4 mov %eax,-0xc(%ebp) - cprintf("kernel warning at %s:%d:\n ", file, line); - 100447: 83 ec 04 sub $0x4,%esp - 10044a: ff 75 0c pushl 0xc(%ebp) - 10044d: ff 75 08 pushl 0x8(%ebp) - 100450: 68 c8 69 10 00 push $0x1069c8 - 100455: e8 0d fe ff ff call 100267 - 10045a: 83 c4 10 add $0x10,%esp - vcprintf(fmt, ap); - 10045d: 8b 45 f4 mov -0xc(%ebp),%eax - 100460: 83 ec 08 sub $0x8,%esp - 100463: 50 push %eax - 100464: ff 75 10 pushl 0x10(%ebp) - 100467: e8 d2 fd ff ff call 10023e - 10046c: 83 c4 10 add $0x10,%esp - cprintf("\n"); - 10046f: 83 ec 0c sub $0xc,%esp - 100472: 68 c6 69 10 00 push $0x1069c6 - 100477: e8 eb fd ff ff call 100267 - 10047c: 83 c4 10 add $0x10,%esp - va_end(ap); -} - 10047f: 90 nop - 100480: c9 leave - 100481: c3 ret - -00100482 : - -bool -is_kernel_panic(void) { - 100482: 55 push %ebp - 100483: 89 e5 mov %esp,%ebp - return is_panic; - 100485: a1 60 9e 11 00 mov 0x119e60,%eax -} - 10048a: 5d pop %ebp - 10048b: c3 ret - -0010048c : - * stab_binsearch(stabs, &left, &right, N_SO, 0xf0100184); - * will exit setting left = 118, right = 554. - * */ -static void -stab_binsearch(const struct stab *stabs, int *region_left, int *region_right, - int type, uintptr_t addr) { - 10048c: 55 push %ebp - 10048d: 89 e5 mov %esp,%ebp - 10048f: 83 ec 20 sub $0x20,%esp - int l = *region_left, r = *region_right, any_matches = 0; - 100492: 8b 45 0c mov 0xc(%ebp),%eax - 100495: 8b 00 mov (%eax),%eax - 100497: 89 45 fc mov %eax,-0x4(%ebp) - 10049a: 8b 45 10 mov 0x10(%ebp),%eax - 10049d: 8b 00 mov (%eax),%eax - 10049f: 89 45 f8 mov %eax,-0x8(%ebp) - 1004a2: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - - while (l <= r) { - 1004a9: e9 d2 00 00 00 jmp 100580 - int true_m = (l + r) / 2, m = true_m; - 1004ae: 8b 55 fc mov -0x4(%ebp),%edx - 1004b1: 8b 45 f8 mov -0x8(%ebp),%eax - 1004b4: 01 d0 add %edx,%eax - 1004b6: 89 c2 mov %eax,%edx - 1004b8: c1 ea 1f shr $0x1f,%edx - 1004bb: 01 d0 add %edx,%eax - 1004bd: d1 f8 sar %eax - 1004bf: 89 45 ec mov %eax,-0x14(%ebp) - 1004c2: 8b 45 ec mov -0x14(%ebp),%eax - 1004c5: 89 45 f0 mov %eax,-0x10(%ebp) - - // search for earliest stab with right type - while (m >= l && stabs[m].n_type != type) { - 1004c8: eb 04 jmp 1004ce - m --; - 1004ca: 83 6d f0 01 subl $0x1,-0x10(%ebp) - - while (l <= r) { - int true_m = (l + r) / 2, m = true_m; - - // search for earliest stab with right type - while (m >= l && stabs[m].n_type != type) { - 1004ce: 8b 45 f0 mov -0x10(%ebp),%eax - 1004d1: 3b 45 fc cmp -0x4(%ebp),%eax - 1004d4: 7c 1f jl 1004f5 - 1004d6: 8b 55 f0 mov -0x10(%ebp),%edx - 1004d9: 89 d0 mov %edx,%eax - 1004db: 01 c0 add %eax,%eax - 1004dd: 01 d0 add %edx,%eax - 1004df: c1 e0 02 shl $0x2,%eax - 1004e2: 89 c2 mov %eax,%edx - 1004e4: 8b 45 08 mov 0x8(%ebp),%eax - 1004e7: 01 d0 add %edx,%eax - 1004e9: 0f b6 40 04 movzbl 0x4(%eax),%eax - 1004ed: 0f b6 c0 movzbl %al,%eax - 1004f0: 3b 45 14 cmp 0x14(%ebp),%eax - 1004f3: 75 d5 jne 1004ca - m --; - } - if (m < l) { // no match in [l, m] - 1004f5: 8b 45 f0 mov -0x10(%ebp),%eax - 1004f8: 3b 45 fc cmp -0x4(%ebp),%eax - 1004fb: 7d 0b jge 100508 - l = true_m + 1; - 1004fd: 8b 45 ec mov -0x14(%ebp),%eax - 100500: 83 c0 01 add $0x1,%eax - 100503: 89 45 fc mov %eax,-0x4(%ebp) - continue; - 100506: eb 78 jmp 100580 - } - - // actual binary search - any_matches = 1; - 100508: c7 45 f4 01 00 00 00 movl $0x1,-0xc(%ebp) - if (stabs[m].n_value < addr) { - 10050f: 8b 55 f0 mov -0x10(%ebp),%edx - 100512: 89 d0 mov %edx,%eax - 100514: 01 c0 add %eax,%eax - 100516: 01 d0 add %edx,%eax - 100518: c1 e0 02 shl $0x2,%eax - 10051b: 89 c2 mov %eax,%edx - 10051d: 8b 45 08 mov 0x8(%ebp),%eax - 100520: 01 d0 add %edx,%eax - 100522: 8b 40 08 mov 0x8(%eax),%eax - 100525: 3b 45 18 cmp 0x18(%ebp),%eax - 100528: 73 13 jae 10053d - *region_left = m; - 10052a: 8b 45 0c mov 0xc(%ebp),%eax - 10052d: 8b 55 f0 mov -0x10(%ebp),%edx - 100530: 89 10 mov %edx,(%eax) - l = true_m + 1; - 100532: 8b 45 ec mov -0x14(%ebp),%eax - 100535: 83 c0 01 add $0x1,%eax - 100538: 89 45 fc mov %eax,-0x4(%ebp) - 10053b: eb 43 jmp 100580 - } else if (stabs[m].n_value > addr) { - 10053d: 8b 55 f0 mov -0x10(%ebp),%edx - 100540: 89 d0 mov %edx,%eax - 100542: 01 c0 add %eax,%eax - 100544: 01 d0 add %edx,%eax - 100546: c1 e0 02 shl $0x2,%eax - 100549: 89 c2 mov %eax,%edx - 10054b: 8b 45 08 mov 0x8(%ebp),%eax - 10054e: 01 d0 add %edx,%eax - 100550: 8b 40 08 mov 0x8(%eax),%eax - 100553: 3b 45 18 cmp 0x18(%ebp),%eax - 100556: 76 16 jbe 10056e - *region_right = m - 1; - 100558: 8b 45 f0 mov -0x10(%ebp),%eax - 10055b: 8d 50 ff lea -0x1(%eax),%edx - 10055e: 8b 45 10 mov 0x10(%ebp),%eax - 100561: 89 10 mov %edx,(%eax) - r = m - 1; - 100563: 8b 45 f0 mov -0x10(%ebp),%eax - 100566: 83 e8 01 sub $0x1,%eax - 100569: 89 45 f8 mov %eax,-0x8(%ebp) - 10056c: eb 12 jmp 100580 - } else { - // exact match for 'addr', but continue loop to find - // *region_right - *region_left = m; - 10056e: 8b 45 0c mov 0xc(%ebp),%eax - 100571: 8b 55 f0 mov -0x10(%ebp),%edx - 100574: 89 10 mov %edx,(%eax) - l = m; - 100576: 8b 45 f0 mov -0x10(%ebp),%eax - 100579: 89 45 fc mov %eax,-0x4(%ebp) - addr ++; - 10057c: 83 45 18 01 addl $0x1,0x18(%ebp) -static void -stab_binsearch(const struct stab *stabs, int *region_left, int *region_right, - int type, uintptr_t addr) { - int l = *region_left, r = *region_right, any_matches = 0; - - while (l <= r) { - 100580: 8b 45 fc mov -0x4(%ebp),%eax - 100583: 3b 45 f8 cmp -0x8(%ebp),%eax - 100586: 0f 8e 22 ff ff ff jle 1004ae - l = m; - addr ++; - } - } - - if (!any_matches) { - 10058c: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) - 100590: 75 0f jne 1005a1 - *region_right = *region_left - 1; - 100592: 8b 45 0c mov 0xc(%ebp),%eax - 100595: 8b 00 mov (%eax),%eax - 100597: 8d 50 ff lea -0x1(%eax),%edx - 10059a: 8b 45 10 mov 0x10(%ebp),%eax - 10059d: 89 10 mov %edx,(%eax) - l = *region_right; - for (; l > *region_left && stabs[l].n_type != type; l --) - /* do nothing */; - *region_left = l; - } -} - 10059f: eb 3f jmp 1005e0 - if (!any_matches) { - *region_right = *region_left - 1; - } - else { - // find rightmost region containing 'addr' - l = *region_right; - 1005a1: 8b 45 10 mov 0x10(%ebp),%eax - 1005a4: 8b 00 mov (%eax),%eax - 1005a6: 89 45 fc mov %eax,-0x4(%ebp) - for (; l > *region_left && stabs[l].n_type != type; l --) - 1005a9: eb 04 jmp 1005af - 1005ab: 83 6d fc 01 subl $0x1,-0x4(%ebp) - 1005af: 8b 45 0c mov 0xc(%ebp),%eax - 1005b2: 8b 00 mov (%eax),%eax - 1005b4: 3b 45 fc cmp -0x4(%ebp),%eax - 1005b7: 7d 1f jge 1005d8 - 1005b9: 8b 55 fc mov -0x4(%ebp),%edx - 1005bc: 89 d0 mov %edx,%eax - 1005be: 01 c0 add %eax,%eax - 1005c0: 01 d0 add %edx,%eax - 1005c2: c1 e0 02 shl $0x2,%eax - 1005c5: 89 c2 mov %eax,%edx - 1005c7: 8b 45 08 mov 0x8(%ebp),%eax - 1005ca: 01 d0 add %edx,%eax - 1005cc: 0f b6 40 04 movzbl 0x4(%eax),%eax - 1005d0: 0f b6 c0 movzbl %al,%eax - 1005d3: 3b 45 14 cmp 0x14(%ebp),%eax - 1005d6: 75 d3 jne 1005ab - /* do nothing */; - *region_left = l; - 1005d8: 8b 45 0c mov 0xc(%ebp),%eax - 1005db: 8b 55 fc mov -0x4(%ebp),%edx - 1005de: 89 10 mov %edx,(%eax) - } -} - 1005e0: 90 nop - 1005e1: c9 leave - 1005e2: c3 ret - -001005e3 : - * the specified instruction address, @addr. Returns 0 if information - * was found, and negative if not. But even if it returns negative it - * has stored some information into '*info'. - * */ -int -debuginfo_eip(uintptr_t addr, struct eipdebuginfo *info) { - 1005e3: 55 push %ebp - 1005e4: 89 e5 mov %esp,%ebp - 1005e6: 83 ec 38 sub $0x38,%esp - const struct stab *stabs, *stab_end; - const char *stabstr, *stabstr_end; - - info->eip_file = ""; - 1005e9: 8b 45 0c mov 0xc(%ebp),%eax - 1005ec: c7 00 e8 69 10 00 movl $0x1069e8,(%eax) - info->eip_line = 0; - 1005f2: 8b 45 0c mov 0xc(%ebp),%eax - 1005f5: c7 40 04 00 00 00 00 movl $0x0,0x4(%eax) - info->eip_fn_name = ""; - 1005fc: 8b 45 0c mov 0xc(%ebp),%eax - 1005ff: c7 40 08 e8 69 10 00 movl $0x1069e8,0x8(%eax) - info->eip_fn_namelen = 9; - 100606: 8b 45 0c mov 0xc(%ebp),%eax - 100609: c7 40 0c 09 00 00 00 movl $0x9,0xc(%eax) - info->eip_fn_addr = addr; - 100610: 8b 45 0c mov 0xc(%ebp),%eax - 100613: 8b 55 08 mov 0x8(%ebp),%edx - 100616: 89 50 10 mov %edx,0x10(%eax) - info->eip_fn_narg = 0; - 100619: 8b 45 0c mov 0xc(%ebp),%eax - 10061c: c7 40 14 00 00 00 00 movl $0x0,0x14(%eax) - - stabs = __STAB_BEGIN__; - 100623: c7 45 f4 88 7f 10 00 movl $0x107f88,-0xc(%ebp) - stab_end = __STAB_END__; - 10062a: c7 45 f0 4c 42 11 00 movl $0x11424c,-0x10(%ebp) - stabstr = __STABSTR_BEGIN__; - 100631: c7 45 ec 4d 42 11 00 movl $0x11424d,-0x14(%ebp) - stabstr_end = __STABSTR_END__; - 100638: c7 45 e8 a9 6f 11 00 movl $0x116fa9,-0x18(%ebp) - - // String table validity checks - if (stabstr_end <= stabstr || stabstr_end[-1] != 0) { - 10063f: 8b 45 e8 mov -0x18(%ebp),%eax - 100642: 3b 45 ec cmp -0x14(%ebp),%eax - 100645: 76 0d jbe 100654 - 100647: 8b 45 e8 mov -0x18(%ebp),%eax - 10064a: 83 e8 01 sub $0x1,%eax - 10064d: 0f b6 00 movzbl (%eax),%eax - 100650: 84 c0 test %al,%al - 100652: 74 0a je 10065e - return -1; - 100654: b8 ff ff ff ff mov $0xffffffff,%eax - 100659: e9 91 02 00 00 jmp 1008ef - // 'eip'. First, we find the basic source file containing 'eip'. - // Then, we look in that source file for the function. Then we look - // for the line number. - - // Search the entire set of stabs for the source file (type N_SO). - int lfile = 0, rfile = (stab_end - stabs) - 1; - 10065e: c7 45 e4 00 00 00 00 movl $0x0,-0x1c(%ebp) - 100665: 8b 55 f0 mov -0x10(%ebp),%edx - 100668: 8b 45 f4 mov -0xc(%ebp),%eax - 10066b: 29 c2 sub %eax,%edx - 10066d: 89 d0 mov %edx,%eax - 10066f: c1 f8 02 sar $0x2,%eax - 100672: 69 c0 ab aa aa aa imul $0xaaaaaaab,%eax,%eax - 100678: 83 e8 01 sub $0x1,%eax - 10067b: 89 45 e0 mov %eax,-0x20(%ebp) - stab_binsearch(stabs, &lfile, &rfile, N_SO, addr); - 10067e: ff 75 08 pushl 0x8(%ebp) - 100681: 6a 64 push $0x64 - 100683: 8d 45 e0 lea -0x20(%ebp),%eax - 100686: 50 push %eax - 100687: 8d 45 e4 lea -0x1c(%ebp),%eax - 10068a: 50 push %eax - 10068b: ff 75 f4 pushl -0xc(%ebp) - 10068e: e8 f9 fd ff ff call 10048c - 100693: 83 c4 14 add $0x14,%esp - if (lfile == 0) - 100696: 8b 45 e4 mov -0x1c(%ebp),%eax - 100699: 85 c0 test %eax,%eax - 10069b: 75 0a jne 1006a7 - return -1; - 10069d: b8 ff ff ff ff mov $0xffffffff,%eax - 1006a2: e9 48 02 00 00 jmp 1008ef - - // Search within that file's stabs for the function definition - // (N_FUN). - int lfun = lfile, rfun = rfile; - 1006a7: 8b 45 e4 mov -0x1c(%ebp),%eax - 1006aa: 89 45 dc mov %eax,-0x24(%ebp) - 1006ad: 8b 45 e0 mov -0x20(%ebp),%eax - 1006b0: 89 45 d8 mov %eax,-0x28(%ebp) - int lline, rline; - stab_binsearch(stabs, &lfun, &rfun, N_FUN, addr); - 1006b3: ff 75 08 pushl 0x8(%ebp) - 1006b6: 6a 24 push $0x24 - 1006b8: 8d 45 d8 lea -0x28(%ebp),%eax - 1006bb: 50 push %eax - 1006bc: 8d 45 dc lea -0x24(%ebp),%eax - 1006bf: 50 push %eax - 1006c0: ff 75 f4 pushl -0xc(%ebp) - 1006c3: e8 c4 fd ff ff call 10048c - 1006c8: 83 c4 14 add $0x14,%esp - - if (lfun <= rfun) { - 1006cb: 8b 55 dc mov -0x24(%ebp),%edx - 1006ce: 8b 45 d8 mov -0x28(%ebp),%eax - 1006d1: 39 c2 cmp %eax,%edx - 1006d3: 7f 7c jg 100751 - // stabs[lfun] points to the function name - // in the string table, but check bounds just in case. - if (stabs[lfun].n_strx < stabstr_end - stabstr) { - 1006d5: 8b 45 dc mov -0x24(%ebp),%eax - 1006d8: 89 c2 mov %eax,%edx - 1006da: 89 d0 mov %edx,%eax - 1006dc: 01 c0 add %eax,%eax - 1006de: 01 d0 add %edx,%eax - 1006e0: c1 e0 02 shl $0x2,%eax - 1006e3: 89 c2 mov %eax,%edx - 1006e5: 8b 45 f4 mov -0xc(%ebp),%eax - 1006e8: 01 d0 add %edx,%eax - 1006ea: 8b 00 mov (%eax),%eax - 1006ec: 8b 4d e8 mov -0x18(%ebp),%ecx - 1006ef: 8b 55 ec mov -0x14(%ebp),%edx - 1006f2: 29 d1 sub %edx,%ecx - 1006f4: 89 ca mov %ecx,%edx - 1006f6: 39 d0 cmp %edx,%eax - 1006f8: 73 22 jae 10071c - info->eip_fn_name = stabstr + stabs[lfun].n_strx; - 1006fa: 8b 45 dc mov -0x24(%ebp),%eax - 1006fd: 89 c2 mov %eax,%edx - 1006ff: 89 d0 mov %edx,%eax - 100701: 01 c0 add %eax,%eax - 100703: 01 d0 add %edx,%eax - 100705: c1 e0 02 shl $0x2,%eax - 100708: 89 c2 mov %eax,%edx - 10070a: 8b 45 f4 mov -0xc(%ebp),%eax - 10070d: 01 d0 add %edx,%eax - 10070f: 8b 10 mov (%eax),%edx - 100711: 8b 45 ec mov -0x14(%ebp),%eax - 100714: 01 c2 add %eax,%edx - 100716: 8b 45 0c mov 0xc(%ebp),%eax - 100719: 89 50 08 mov %edx,0x8(%eax) - } - info->eip_fn_addr = stabs[lfun].n_value; - 10071c: 8b 45 dc mov -0x24(%ebp),%eax - 10071f: 89 c2 mov %eax,%edx - 100721: 89 d0 mov %edx,%eax - 100723: 01 c0 add %eax,%eax - 100725: 01 d0 add %edx,%eax - 100727: c1 e0 02 shl $0x2,%eax - 10072a: 89 c2 mov %eax,%edx - 10072c: 8b 45 f4 mov -0xc(%ebp),%eax - 10072f: 01 d0 add %edx,%eax - 100731: 8b 50 08 mov 0x8(%eax),%edx - 100734: 8b 45 0c mov 0xc(%ebp),%eax - 100737: 89 50 10 mov %edx,0x10(%eax) - addr -= info->eip_fn_addr; - 10073a: 8b 45 0c mov 0xc(%ebp),%eax - 10073d: 8b 40 10 mov 0x10(%eax),%eax - 100740: 29 45 08 sub %eax,0x8(%ebp) - // Search within the function definition for the line number. - lline = lfun; - 100743: 8b 45 dc mov -0x24(%ebp),%eax - 100746: 89 45 d4 mov %eax,-0x2c(%ebp) - rline = rfun; - 100749: 8b 45 d8 mov -0x28(%ebp),%eax - 10074c: 89 45 d0 mov %eax,-0x30(%ebp) - 10074f: eb 15 jmp 100766 - } else { - // Couldn't find function stab! Maybe we're in an assembly - // file. Search the whole file for the line number. - info->eip_fn_addr = addr; - 100751: 8b 45 0c mov 0xc(%ebp),%eax - 100754: 8b 55 08 mov 0x8(%ebp),%edx - 100757: 89 50 10 mov %edx,0x10(%eax) - lline = lfile; - 10075a: 8b 45 e4 mov -0x1c(%ebp),%eax - 10075d: 89 45 d4 mov %eax,-0x2c(%ebp) - rline = rfile; - 100760: 8b 45 e0 mov -0x20(%ebp),%eax - 100763: 89 45 d0 mov %eax,-0x30(%ebp) - } - info->eip_fn_namelen = strfind(info->eip_fn_name, ':') - info->eip_fn_name; - 100766: 8b 45 0c mov 0xc(%ebp),%eax - 100769: 8b 40 08 mov 0x8(%eax),%eax - 10076c: 83 ec 08 sub $0x8,%esp - 10076f: 6a 3a push $0x3a - 100771: 50 push %eax - 100772: e8 64 58 00 00 call 105fdb - 100777: 83 c4 10 add $0x10,%esp - 10077a: 89 c2 mov %eax,%edx - 10077c: 8b 45 0c mov 0xc(%ebp),%eax - 10077f: 8b 40 08 mov 0x8(%eax),%eax - 100782: 29 c2 sub %eax,%edx - 100784: 8b 45 0c mov 0xc(%ebp),%eax - 100787: 89 50 0c mov %edx,0xc(%eax) - - // Search within [lline, rline] for the line number stab. - // If found, set info->eip_line to the right line number. - // If not found, return -1. - stab_binsearch(stabs, &lline, &rline, N_SLINE, addr); - 10078a: 83 ec 0c sub $0xc,%esp - 10078d: ff 75 08 pushl 0x8(%ebp) - 100790: 6a 44 push $0x44 - 100792: 8d 45 d0 lea -0x30(%ebp),%eax - 100795: 50 push %eax - 100796: 8d 45 d4 lea -0x2c(%ebp),%eax - 100799: 50 push %eax - 10079a: ff 75 f4 pushl -0xc(%ebp) - 10079d: e8 ea fc ff ff call 10048c - 1007a2: 83 c4 20 add $0x20,%esp - if (lline <= rline) { - 1007a5: 8b 55 d4 mov -0x2c(%ebp),%edx - 1007a8: 8b 45 d0 mov -0x30(%ebp),%eax - 1007ab: 39 c2 cmp %eax,%edx - 1007ad: 7f 24 jg 1007d3 - info->eip_line = stabs[rline].n_desc; - 1007af: 8b 45 d0 mov -0x30(%ebp),%eax - 1007b2: 89 c2 mov %eax,%edx - 1007b4: 89 d0 mov %edx,%eax - 1007b6: 01 c0 add %eax,%eax - 1007b8: 01 d0 add %edx,%eax - 1007ba: c1 e0 02 shl $0x2,%eax - 1007bd: 89 c2 mov %eax,%edx - 1007bf: 8b 45 f4 mov -0xc(%ebp),%eax - 1007c2: 01 d0 add %edx,%eax - 1007c4: 0f b7 40 06 movzwl 0x6(%eax),%eax - 1007c8: 0f b7 d0 movzwl %ax,%edx - 1007cb: 8b 45 0c mov 0xc(%ebp),%eax - 1007ce: 89 50 04 mov %edx,0x4(%eax) - - // Search backwards from the line number for the relevant filename stab. - // We can't just use the "lfile" stab because inlined functions - // can interpolate code from a different file! - // Such included source files use the N_SOL stab type. - while (lline >= lfile - 1007d1: eb 13 jmp 1007e6 - // If not found, return -1. - stab_binsearch(stabs, &lline, &rline, N_SLINE, addr); - if (lline <= rline) { - info->eip_line = stabs[rline].n_desc; - } else { - return -1; - 1007d3: b8 ff ff ff ff mov $0xffffffff,%eax - 1007d8: e9 12 01 00 00 jmp 1008ef - // can interpolate code from a different file! - // Such included source files use the N_SOL stab type. - while (lline >= lfile - && stabs[lline].n_type != N_SOL - && (stabs[lline].n_type != N_SO || !stabs[lline].n_value)) { - lline --; - 1007dd: 8b 45 d4 mov -0x2c(%ebp),%eax - 1007e0: 83 e8 01 sub $0x1,%eax - 1007e3: 89 45 d4 mov %eax,-0x2c(%ebp) - - // Search backwards from the line number for the relevant filename stab. - // We can't just use the "lfile" stab because inlined functions - // can interpolate code from a different file! - // Such included source files use the N_SOL stab type. - while (lline >= lfile - 1007e6: 8b 55 d4 mov -0x2c(%ebp),%edx - 1007e9: 8b 45 e4 mov -0x1c(%ebp),%eax - 1007ec: 39 c2 cmp %eax,%edx - 1007ee: 7c 56 jl 100846 - && stabs[lline].n_type != N_SOL - 1007f0: 8b 45 d4 mov -0x2c(%ebp),%eax - 1007f3: 89 c2 mov %eax,%edx - 1007f5: 89 d0 mov %edx,%eax - 1007f7: 01 c0 add %eax,%eax - 1007f9: 01 d0 add %edx,%eax - 1007fb: c1 e0 02 shl $0x2,%eax - 1007fe: 89 c2 mov %eax,%edx - 100800: 8b 45 f4 mov -0xc(%ebp),%eax - 100803: 01 d0 add %edx,%eax - 100805: 0f b6 40 04 movzbl 0x4(%eax),%eax - 100809: 3c 84 cmp $0x84,%al - 10080b: 74 39 je 100846 - && (stabs[lline].n_type != N_SO || !stabs[lline].n_value)) { - 10080d: 8b 45 d4 mov -0x2c(%ebp),%eax - 100810: 89 c2 mov %eax,%edx - 100812: 89 d0 mov %edx,%eax - 100814: 01 c0 add %eax,%eax - 100816: 01 d0 add %edx,%eax - 100818: c1 e0 02 shl $0x2,%eax - 10081b: 89 c2 mov %eax,%edx - 10081d: 8b 45 f4 mov -0xc(%ebp),%eax - 100820: 01 d0 add %edx,%eax - 100822: 0f b6 40 04 movzbl 0x4(%eax),%eax - 100826: 3c 64 cmp $0x64,%al - 100828: 75 b3 jne 1007dd - 10082a: 8b 45 d4 mov -0x2c(%ebp),%eax - 10082d: 89 c2 mov %eax,%edx - 10082f: 89 d0 mov %edx,%eax - 100831: 01 c0 add %eax,%eax - 100833: 01 d0 add %edx,%eax - 100835: c1 e0 02 shl $0x2,%eax - 100838: 89 c2 mov %eax,%edx - 10083a: 8b 45 f4 mov -0xc(%ebp),%eax - 10083d: 01 d0 add %edx,%eax - 10083f: 8b 40 08 mov 0x8(%eax),%eax - 100842: 85 c0 test %eax,%eax - 100844: 74 97 je 1007dd - lline --; - } - if (lline >= lfile && stabs[lline].n_strx < stabstr_end - stabstr) { - 100846: 8b 55 d4 mov -0x2c(%ebp),%edx - 100849: 8b 45 e4 mov -0x1c(%ebp),%eax - 10084c: 39 c2 cmp %eax,%edx - 10084e: 7c 46 jl 100896 - 100850: 8b 45 d4 mov -0x2c(%ebp),%eax - 100853: 89 c2 mov %eax,%edx - 100855: 89 d0 mov %edx,%eax - 100857: 01 c0 add %eax,%eax - 100859: 01 d0 add %edx,%eax - 10085b: c1 e0 02 shl $0x2,%eax - 10085e: 89 c2 mov %eax,%edx - 100860: 8b 45 f4 mov -0xc(%ebp),%eax - 100863: 01 d0 add %edx,%eax - 100865: 8b 00 mov (%eax),%eax - 100867: 8b 4d e8 mov -0x18(%ebp),%ecx - 10086a: 8b 55 ec mov -0x14(%ebp),%edx - 10086d: 29 d1 sub %edx,%ecx - 10086f: 89 ca mov %ecx,%edx - 100871: 39 d0 cmp %edx,%eax - 100873: 73 21 jae 100896 - info->eip_file = stabstr + stabs[lline].n_strx; - 100875: 8b 45 d4 mov -0x2c(%ebp),%eax - 100878: 89 c2 mov %eax,%edx - 10087a: 89 d0 mov %edx,%eax - 10087c: 01 c0 add %eax,%eax - 10087e: 01 d0 add %edx,%eax - 100880: c1 e0 02 shl $0x2,%eax - 100883: 89 c2 mov %eax,%edx - 100885: 8b 45 f4 mov -0xc(%ebp),%eax - 100888: 01 d0 add %edx,%eax - 10088a: 8b 10 mov (%eax),%edx - 10088c: 8b 45 ec mov -0x14(%ebp),%eax - 10088f: 01 c2 add %eax,%edx - 100891: 8b 45 0c mov 0xc(%ebp),%eax - 100894: 89 10 mov %edx,(%eax) - } - - // Set eip_fn_narg to the number of arguments taken by the function, - // or 0 if there was no containing function. - if (lfun < rfun) { - 100896: 8b 55 dc mov -0x24(%ebp),%edx - 100899: 8b 45 d8 mov -0x28(%ebp),%eax - 10089c: 39 c2 cmp %eax,%edx - 10089e: 7d 4a jge 1008ea - for (lline = lfun + 1; - 1008a0: 8b 45 dc mov -0x24(%ebp),%eax - 1008a3: 83 c0 01 add $0x1,%eax - 1008a6: 89 45 d4 mov %eax,-0x2c(%ebp) - 1008a9: eb 18 jmp 1008c3 - lline < rfun && stabs[lline].n_type == N_PSYM; - lline ++) { - info->eip_fn_narg ++; - 1008ab: 8b 45 0c mov 0xc(%ebp),%eax - 1008ae: 8b 40 14 mov 0x14(%eax),%eax - 1008b1: 8d 50 01 lea 0x1(%eax),%edx - 1008b4: 8b 45 0c mov 0xc(%ebp),%eax - 1008b7: 89 50 14 mov %edx,0x14(%eax) - // Set eip_fn_narg to the number of arguments taken by the function, - // or 0 if there was no containing function. - if (lfun < rfun) { - for (lline = lfun + 1; - lline < rfun && stabs[lline].n_type == N_PSYM; - lline ++) { - 1008ba: 8b 45 d4 mov -0x2c(%ebp),%eax - 1008bd: 83 c0 01 add $0x1,%eax - 1008c0: 89 45 d4 mov %eax,-0x2c(%ebp) - - // Set eip_fn_narg to the number of arguments taken by the function, - // or 0 if there was no containing function. - if (lfun < rfun) { - for (lline = lfun + 1; - lline < rfun && stabs[lline].n_type == N_PSYM; - 1008c3: 8b 55 d4 mov -0x2c(%ebp),%edx - 1008c6: 8b 45 d8 mov -0x28(%ebp),%eax - } - - // Set eip_fn_narg to the number of arguments taken by the function, - // or 0 if there was no containing function. - if (lfun < rfun) { - for (lline = lfun + 1; - 1008c9: 39 c2 cmp %eax,%edx - 1008cb: 7d 1d jge 1008ea - lline < rfun && stabs[lline].n_type == N_PSYM; - 1008cd: 8b 45 d4 mov -0x2c(%ebp),%eax - 1008d0: 89 c2 mov %eax,%edx - 1008d2: 89 d0 mov %edx,%eax - 1008d4: 01 c0 add %eax,%eax - 1008d6: 01 d0 add %edx,%eax - 1008d8: c1 e0 02 shl $0x2,%eax - 1008db: 89 c2 mov %eax,%edx - 1008dd: 8b 45 f4 mov -0xc(%ebp),%eax - 1008e0: 01 d0 add %edx,%eax - 1008e2: 0f b6 40 04 movzbl 0x4(%eax),%eax - 1008e6: 3c a0 cmp $0xa0,%al - 1008e8: 74 c1 je 1008ab - lline ++) { - info->eip_fn_narg ++; - } - } - return 0; - 1008ea: b8 00 00 00 00 mov $0x0,%eax -} - 1008ef: c9 leave - 1008f0: c3 ret - -001008f1 : - * print_kerninfo - print the information about kernel, including the location - * of kernel entry, the start addresses of data and text segements, the start - * address of free memory and how many memory that kernel has used. - * */ -void -print_kerninfo(void) { - 1008f1: 55 push %ebp - 1008f2: 89 e5 mov %esp,%ebp - 1008f4: 83 ec 08 sub $0x8,%esp - extern char etext[], edata[], end[], kern_init[]; - cprintf("Special kernel symbols:\n"); - 1008f7: 83 ec 0c sub $0xc,%esp - 1008fa: 68 f2 69 10 00 push $0x1069f2 - 1008ff: e8 63 f9 ff ff call 100267 - 100904: 83 c4 10 add $0x10,%esp - cprintf(" entry 0x%08x (phys)\n", kern_init); - 100907: 83 ec 08 sub $0x8,%esp - 10090a: 68 2a 00 10 00 push $0x10002a - 10090f: 68 0b 6a 10 00 push $0x106a0b - 100914: e8 4e f9 ff ff call 100267 - 100919: 83 c4 10 add $0x10,%esp - cprintf(" etext 0x%08x (phys)\n", etext); - 10091c: 83 ec 08 sub $0x8,%esp - 10091f: 68 fe 68 10 00 push $0x1068fe - 100924: 68 23 6a 10 00 push $0x106a23 - 100929: e8 39 f9 ff ff call 100267 - 10092e: 83 c4 10 add $0x10,%esp - cprintf(" edata 0x%08x (phys)\n", edata); - 100931: 83 ec 08 sub $0x8,%esp - 100934: 68 36 9a 11 00 push $0x119a36 - 100939: 68 3b 6a 10 00 push $0x106a3b - 10093e: e8 24 f9 ff ff call 100267 - 100943: 83 c4 10 add $0x10,%esp - cprintf(" end 0x%08x (phys)\n", end); - 100946: 83 ec 08 sub $0x8,%esp - 100949: 68 74 a9 11 00 push $0x11a974 - 10094e: 68 53 6a 10 00 push $0x106a53 - 100953: e8 0f f9 ff ff call 100267 - 100958: 83 c4 10 add $0x10,%esp - cprintf("Kernel executable memory footprint: %dKB\n", (end - kern_init + 1023)/1024); - 10095b: b8 74 a9 11 00 mov $0x11a974,%eax - 100960: 05 ff 03 00 00 add $0x3ff,%eax - 100965: ba 2a 00 10 00 mov $0x10002a,%edx - 10096a: 29 d0 sub %edx,%eax - 10096c: 8d 90 ff 03 00 00 lea 0x3ff(%eax),%edx - 100972: 85 c0 test %eax,%eax - 100974: 0f 48 c2 cmovs %edx,%eax - 100977: c1 f8 0a sar $0xa,%eax - 10097a: 83 ec 08 sub $0x8,%esp - 10097d: 50 push %eax - 10097e: 68 6c 6a 10 00 push $0x106a6c - 100983: e8 df f8 ff ff call 100267 - 100988: 83 c4 10 add $0x10,%esp -} - 10098b: 90 nop - 10098c: c9 leave - 10098d: c3 ret - -0010098e : -/* * - * print_debuginfo - read and print the stat information for the address @eip, - * and info.eip_fn_addr should be the first address of the related function. - * */ -void -print_debuginfo(uintptr_t eip) { - 10098e: 55 push %ebp - 10098f: 89 e5 mov %esp,%ebp - 100991: 81 ec 28 01 00 00 sub $0x128,%esp - struct eipdebuginfo info; - if (debuginfo_eip(eip, &info) != 0) { - 100997: 83 ec 08 sub $0x8,%esp - 10099a: 8d 45 dc lea -0x24(%ebp),%eax - 10099d: 50 push %eax - 10099e: ff 75 08 pushl 0x8(%ebp) - 1009a1: e8 3d fc ff ff call 1005e3 - 1009a6: 83 c4 10 add $0x10,%esp - 1009a9: 85 c0 test %eax,%eax - 1009ab: 74 15 je 1009c2 - cprintf(" : -- 0x%08x --\n", eip); - 1009ad: 83 ec 08 sub $0x8,%esp - 1009b0: ff 75 08 pushl 0x8(%ebp) - 1009b3: 68 96 6a 10 00 push $0x106a96 - 1009b8: e8 aa f8 ff ff call 100267 - 1009bd: 83 c4 10 add $0x10,%esp - } - fnname[j] = '\0'; - cprintf(" %s:%d: %s+%d\n", info.eip_file, info.eip_line, - fnname, eip - info.eip_fn_addr); - } -} - 1009c0: eb 65 jmp 100a27 - cprintf(" : -- 0x%08x --\n", eip); - } - else { - char fnname[256]; - int j; - for (j = 0; j < info.eip_fn_namelen; j ++) { - 1009c2: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - 1009c9: eb 1c jmp 1009e7 - fnname[j] = info.eip_fn_name[j]; - 1009cb: 8b 55 e4 mov -0x1c(%ebp),%edx - 1009ce: 8b 45 f4 mov -0xc(%ebp),%eax - 1009d1: 01 d0 add %edx,%eax - 1009d3: 0f b6 00 movzbl (%eax),%eax - 1009d6: 8d 8d dc fe ff ff lea -0x124(%ebp),%ecx - 1009dc: 8b 55 f4 mov -0xc(%ebp),%edx - 1009df: 01 ca add %ecx,%edx - 1009e1: 88 02 mov %al,(%edx) - cprintf(" : -- 0x%08x --\n", eip); - } - else { - char fnname[256]; - int j; - for (j = 0; j < info.eip_fn_namelen; j ++) { - 1009e3: 83 45 f4 01 addl $0x1,-0xc(%ebp) - 1009e7: 8b 45 e8 mov -0x18(%ebp),%eax - 1009ea: 3b 45 f4 cmp -0xc(%ebp),%eax - 1009ed: 7f dc jg 1009cb - fnname[j] = info.eip_fn_name[j]; - } - fnname[j] = '\0'; - 1009ef: 8d 95 dc fe ff ff lea -0x124(%ebp),%edx - 1009f5: 8b 45 f4 mov -0xc(%ebp),%eax - 1009f8: 01 d0 add %edx,%eax - 1009fa: c6 00 00 movb $0x0,(%eax) - cprintf(" %s:%d: %s+%d\n", info.eip_file, info.eip_line, - fnname, eip - info.eip_fn_addr); - 1009fd: 8b 45 ec mov -0x14(%ebp),%eax - int j; - for (j = 0; j < info.eip_fn_namelen; j ++) { - fnname[j] = info.eip_fn_name[j]; - } - fnname[j] = '\0'; - cprintf(" %s:%d: %s+%d\n", info.eip_file, info.eip_line, - 100a00: 8b 55 08 mov 0x8(%ebp),%edx - 100a03: 89 d1 mov %edx,%ecx - 100a05: 29 c1 sub %eax,%ecx - 100a07: 8b 55 e0 mov -0x20(%ebp),%edx - 100a0a: 8b 45 dc mov -0x24(%ebp),%eax - 100a0d: 83 ec 0c sub $0xc,%esp - 100a10: 51 push %ecx - 100a11: 8d 8d dc fe ff ff lea -0x124(%ebp),%ecx - 100a17: 51 push %ecx - 100a18: 52 push %edx - 100a19: 50 push %eax - 100a1a: 68 b2 6a 10 00 push $0x106ab2 - 100a1f: e8 43 f8 ff ff call 100267 - 100a24: 83 c4 20 add $0x20,%esp - fnname, eip - info.eip_fn_addr); - } -} - 100a27: 90 nop - 100a28: c9 leave - 100a29: c3 ret - -00100a2a : - -static __noinline uint32_t -read_eip(void) { - 100a2a: 55 push %ebp - 100a2b: 89 e5 mov %esp,%ebp - 100a2d: 83 ec 10 sub $0x10,%esp - uint32_t eip; - asm volatile("movl 4(%%ebp), %0" : "=r" (eip)); - 100a30: 8b 45 04 mov 0x4(%ebp),%eax - 100a33: 89 45 fc mov %eax,-0x4(%ebp) - return eip; - 100a36: 8b 45 fc mov -0x4(%ebp),%eax -} - 100a39: c9 leave - 100a3a: c3 ret - -00100a3b : - * - * Note that, the length of ebp-chain is limited. In boot/bootasm.S, before jumping - * to the kernel entry, the value of ebp has been set to zero, that's the boundary. - * */ -void -print_stackframe(void) { - 100a3b: 55 push %ebp - 100a3c: 89 e5 mov %esp,%ebp - 100a3e: 83 ec 28 sub $0x28,%esp -} - -static inline uint32_t -read_ebp(void) { - uint32_t ebp; - asm volatile ("movl %%ebp, %0" : "=r" (ebp)); - 100a41: 89 e8 mov %ebp,%eax - 100a43: 89 45 e4 mov %eax,-0x1c(%ebp) - return ebp; - 100a46: 8b 45 e4 mov -0x1c(%ebp),%eax - * (3.4) call print_debuginfo(eip-1) to print the C calling function name and line number, etc. - * (3.5) popup a calling stackframe - * NOTICE: the calling funciton's return addr eip = ss:[ebp+4] - * the calling funciton's ebp = ss:[ebp] - */ - uint32_t current_ebp = read_ebp(); - 100a49: 89 45 f4 mov %eax,-0xc(%ebp) - uint32_t current_eip = read_eip(); - 100a4c: e8 d9 ff ff ff call 100a2a - 100a51: 89 45 f0 mov %eax,-0x10(%ebp) - for (int i = 0; i < STACKFRAME_DEPTH && current_ebp != 0; ++ i) { - 100a54: c7 45 ec 00 00 00 00 movl $0x0,-0x14(%ebp) - 100a5b: e9 87 00 00 00 jmp 100ae7 - cprintf("ebp:0x%08x eip:0x%08x args:", current_ebp, current_eip); - 100a60: 83 ec 04 sub $0x4,%esp - 100a63: ff 75 f0 pushl -0x10(%ebp) - 100a66: ff 75 f4 pushl -0xc(%ebp) - 100a69: 68 c4 6a 10 00 push $0x106ac4 - 100a6e: e8 f4 f7 ff ff call 100267 - 100a73: 83 c4 10 add $0x10,%esp - for (int argi = 0; argi < 4; ++ argi) { - 100a76: c7 45 e8 00 00 00 00 movl $0x0,-0x18(%ebp) - 100a7d: eb 29 jmp 100aa8 - cprintf("0x%08x ", *((uint32_t*) current_ebp + 2 + argi)); - 100a7f: 8b 45 e8 mov -0x18(%ebp),%eax - 100a82: 8d 14 85 00 00 00 00 lea 0x0(,%eax,4),%edx - 100a89: 8b 45 f4 mov -0xc(%ebp),%eax - 100a8c: 01 d0 add %edx,%eax - 100a8e: 83 c0 08 add $0x8,%eax - 100a91: 8b 00 mov (%eax),%eax - 100a93: 83 ec 08 sub $0x8,%esp - 100a96: 50 push %eax - 100a97: 68 e0 6a 10 00 push $0x106ae0 - 100a9c: e8 c6 f7 ff ff call 100267 - 100aa1: 83 c4 10 add $0x10,%esp - */ - uint32_t current_ebp = read_ebp(); - uint32_t current_eip = read_eip(); - for (int i = 0; i < STACKFRAME_DEPTH && current_ebp != 0; ++ i) { - cprintf("ebp:0x%08x eip:0x%08x args:", current_ebp, current_eip); - for (int argi = 0; argi < 4; ++ argi) { - 100aa4: 83 45 e8 01 addl $0x1,-0x18(%ebp) - 100aa8: 83 7d e8 03 cmpl $0x3,-0x18(%ebp) - 100aac: 7e d1 jle 100a7f - cprintf("0x%08x ", *((uint32_t*) current_ebp + 2 + argi)); - } - cprintf("\n"); - 100aae: 83 ec 0c sub $0xc,%esp - 100ab1: 68 e8 6a 10 00 push $0x106ae8 - 100ab6: e8 ac f7 ff ff call 100267 - 100abb: 83 c4 10 add $0x10,%esp - print_debuginfo(current_eip - 1); - 100abe: 8b 45 f0 mov -0x10(%ebp),%eax - 100ac1: 83 e8 01 sub $0x1,%eax - 100ac4: 83 ec 0c sub $0xc,%esp - 100ac7: 50 push %eax - 100ac8: e8 c1 fe ff ff call 10098e - 100acd: 83 c4 10 add $0x10,%esp - current_eip = *((uint32_t*)current_ebp + 1); - 100ad0: 8b 45 f4 mov -0xc(%ebp),%eax - 100ad3: 83 c0 04 add $0x4,%eax - 100ad6: 8b 00 mov (%eax),%eax - 100ad8: 89 45 f0 mov %eax,-0x10(%ebp) - current_ebp = *((uint32_t*)current_ebp); - 100adb: 8b 45 f4 mov -0xc(%ebp),%eax - 100ade: 8b 00 mov (%eax),%eax - 100ae0: 89 45 f4 mov %eax,-0xc(%ebp) - * NOTICE: the calling funciton's return addr eip = ss:[ebp+4] - * the calling funciton's ebp = ss:[ebp] - */ - uint32_t current_ebp = read_ebp(); - uint32_t current_eip = read_eip(); - for (int i = 0; i < STACKFRAME_DEPTH && current_ebp != 0; ++ i) { - 100ae3: 83 45 ec 01 addl $0x1,-0x14(%ebp) - 100ae7: 83 7d ec 13 cmpl $0x13,-0x14(%ebp) - 100aeb: 7f 0a jg 100af7 - 100aed: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) - 100af1: 0f 85 69 ff ff ff jne 100a60 - cprintf("\n"); - print_debuginfo(current_eip - 1); - current_eip = *((uint32_t*)current_ebp + 1); - current_ebp = *((uint32_t*)current_ebp); - } -} - 100af7: 90 nop - 100af8: c9 leave - 100af9: c3 ret - -00100afa : -#define MAXARGS 16 -#define WHITESPACE " \t\n\r" - -/* parse - parse the command buffer into whitespace-separated arguments */ -static int -parse(char *buf, char **argv) { - 100afa: 55 push %ebp - 100afb: 89 e5 mov %esp,%ebp - 100afd: 83 ec 18 sub $0x18,%esp - int argc = 0; - 100b00: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - while (1) { - // find global whitespace - while (*buf != '\0' && strchr(WHITESPACE, *buf) != NULL) { - 100b07: eb 0c jmp 100b15 - *buf ++ = '\0'; - 100b09: 8b 45 08 mov 0x8(%ebp),%eax - 100b0c: 8d 50 01 lea 0x1(%eax),%edx - 100b0f: 89 55 08 mov %edx,0x8(%ebp) - 100b12: c6 00 00 movb $0x0,(%eax) -static int -parse(char *buf, char **argv) { - int argc = 0; - while (1) { - // find global whitespace - while (*buf != '\0' && strchr(WHITESPACE, *buf) != NULL) { - 100b15: 8b 45 08 mov 0x8(%ebp),%eax - 100b18: 0f b6 00 movzbl (%eax),%eax - 100b1b: 84 c0 test %al,%al - 100b1d: 74 1e je 100b3d - 100b1f: 8b 45 08 mov 0x8(%ebp),%eax - 100b22: 0f b6 00 movzbl (%eax),%eax - 100b25: 0f be c0 movsbl %al,%eax - 100b28: 83 ec 08 sub $0x8,%esp - 100b2b: 50 push %eax - 100b2c: 68 6c 6b 10 00 push $0x106b6c - 100b31: e8 72 54 00 00 call 105fa8 - 100b36: 83 c4 10 add $0x10,%esp - 100b39: 85 c0 test %eax,%eax - 100b3b: 75 cc jne 100b09 - *buf ++ = '\0'; - } - if (*buf == '\0') { - 100b3d: 8b 45 08 mov 0x8(%ebp),%eax - 100b40: 0f b6 00 movzbl (%eax),%eax - 100b43: 84 c0 test %al,%al - 100b45: 74 69 je 100bb0 - break; - } - - // save and scan past next arg - if (argc == MAXARGS - 1) { - 100b47: 83 7d f4 0f cmpl $0xf,-0xc(%ebp) - 100b4b: 75 12 jne 100b5f - cprintf("Too many arguments (max %d).\n", MAXARGS); - 100b4d: 83 ec 08 sub $0x8,%esp - 100b50: 6a 10 push $0x10 - 100b52: 68 71 6b 10 00 push $0x106b71 - 100b57: e8 0b f7 ff ff call 100267 - 100b5c: 83 c4 10 add $0x10,%esp - } - argv[argc ++] = buf; - 100b5f: 8b 45 f4 mov -0xc(%ebp),%eax - 100b62: 8d 50 01 lea 0x1(%eax),%edx - 100b65: 89 55 f4 mov %edx,-0xc(%ebp) - 100b68: 8d 14 85 00 00 00 00 lea 0x0(,%eax,4),%edx - 100b6f: 8b 45 0c mov 0xc(%ebp),%eax - 100b72: 01 c2 add %eax,%edx - 100b74: 8b 45 08 mov 0x8(%ebp),%eax - 100b77: 89 02 mov %eax,(%edx) - while (*buf != '\0' && strchr(WHITESPACE, *buf) == NULL) { - 100b79: eb 04 jmp 100b7f - buf ++; - 100b7b: 83 45 08 01 addl $0x1,0x8(%ebp) - // save and scan past next arg - if (argc == MAXARGS - 1) { - cprintf("Too many arguments (max %d).\n", MAXARGS); - } - argv[argc ++] = buf; - while (*buf != '\0' && strchr(WHITESPACE, *buf) == NULL) { - 100b7f: 8b 45 08 mov 0x8(%ebp),%eax - 100b82: 0f b6 00 movzbl (%eax),%eax - 100b85: 84 c0 test %al,%al - 100b87: 0f 84 7a ff ff ff je 100b07 - 100b8d: 8b 45 08 mov 0x8(%ebp),%eax - 100b90: 0f b6 00 movzbl (%eax),%eax - 100b93: 0f be c0 movsbl %al,%eax - 100b96: 83 ec 08 sub $0x8,%esp - 100b99: 50 push %eax - 100b9a: 68 6c 6b 10 00 push $0x106b6c - 100b9f: e8 04 54 00 00 call 105fa8 - 100ba4: 83 c4 10 add $0x10,%esp - 100ba7: 85 c0 test %eax,%eax - 100ba9: 74 d0 je 100b7b - buf ++; - } - } - 100bab: e9 57 ff ff ff jmp 100b07 - // find global whitespace - while (*buf != '\0' && strchr(WHITESPACE, *buf) != NULL) { - *buf ++ = '\0'; - } - if (*buf == '\0') { - break; - 100bb0: 90 nop - argv[argc ++] = buf; - while (*buf != '\0' && strchr(WHITESPACE, *buf) == NULL) { - buf ++; - } - } - return argc; - 100bb1: 8b 45 f4 mov -0xc(%ebp),%eax -} - 100bb4: c9 leave - 100bb5: c3 ret - -00100bb6 : -/* * - * runcmd - parse the input string, split it into separated arguments - * and then lookup and invoke some related commands/ - * */ -static int -runcmd(char *buf, struct trapframe *tf) { - 100bb6: 55 push %ebp - 100bb7: 89 e5 mov %esp,%ebp - 100bb9: 83 ec 58 sub $0x58,%esp - char *argv[MAXARGS]; - int argc = parse(buf, argv); - 100bbc: 83 ec 08 sub $0x8,%esp - 100bbf: 8d 45 b0 lea -0x50(%ebp),%eax - 100bc2: 50 push %eax - 100bc3: ff 75 08 pushl 0x8(%ebp) - 100bc6: e8 2f ff ff ff call 100afa - 100bcb: 83 c4 10 add $0x10,%esp - 100bce: 89 45 f0 mov %eax,-0x10(%ebp) - if (argc == 0) { - 100bd1: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) - 100bd5: 75 0a jne 100be1 - return 0; - 100bd7: b8 00 00 00 00 mov $0x0,%eax - 100bdc: e9 83 00 00 00 jmp 100c64 - } - int i; - for (i = 0; i < NCOMMANDS; i ++) { - 100be1: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - 100be8: eb 59 jmp 100c43 - if (strcmp(commands[i].name, argv[0]) == 0) { - 100bea: 8b 4d b0 mov -0x50(%ebp),%ecx - 100bed: 8b 55 f4 mov -0xc(%ebp),%edx - 100bf0: 89 d0 mov %edx,%eax - 100bf2: 01 c0 add %eax,%eax - 100bf4: 01 d0 add %edx,%eax - 100bf6: c1 e0 02 shl $0x2,%eax - 100bf9: 05 20 90 11 00 add $0x119020,%eax - 100bfe: 8b 00 mov (%eax),%eax - 100c00: 83 ec 08 sub $0x8,%esp - 100c03: 51 push %ecx - 100c04: 50 push %eax - 100c05: e8 fe 52 00 00 call 105f08 - 100c0a: 83 c4 10 add $0x10,%esp - 100c0d: 85 c0 test %eax,%eax - 100c0f: 75 2e jne 100c3f - return commands[i].func(argc - 1, argv + 1, tf); - 100c11: 8b 55 f4 mov -0xc(%ebp),%edx - 100c14: 89 d0 mov %edx,%eax - 100c16: 01 c0 add %eax,%eax - 100c18: 01 d0 add %edx,%eax - 100c1a: c1 e0 02 shl $0x2,%eax - 100c1d: 05 28 90 11 00 add $0x119028,%eax - 100c22: 8b 10 mov (%eax),%edx - 100c24: 8d 45 b0 lea -0x50(%ebp),%eax - 100c27: 83 c0 04 add $0x4,%eax - 100c2a: 8b 4d f0 mov -0x10(%ebp),%ecx - 100c2d: 83 e9 01 sub $0x1,%ecx - 100c30: 83 ec 04 sub $0x4,%esp - 100c33: ff 75 0c pushl 0xc(%ebp) - 100c36: 50 push %eax - 100c37: 51 push %ecx - 100c38: ff d2 call *%edx - 100c3a: 83 c4 10 add $0x10,%esp - 100c3d: eb 25 jmp 100c64 - int argc = parse(buf, argv); - if (argc == 0) { - return 0; - } - int i; - for (i = 0; i < NCOMMANDS; i ++) { - 100c3f: 83 45 f4 01 addl $0x1,-0xc(%ebp) - 100c43: 8b 45 f4 mov -0xc(%ebp),%eax - 100c46: 83 f8 02 cmp $0x2,%eax - 100c49: 76 9f jbe 100bea - if (strcmp(commands[i].name, argv[0]) == 0) { - return commands[i].func(argc - 1, argv + 1, tf); - } - } - cprintf("Unknown command '%s'\n", argv[0]); - 100c4b: 8b 45 b0 mov -0x50(%ebp),%eax - 100c4e: 83 ec 08 sub $0x8,%esp - 100c51: 50 push %eax - 100c52: 68 8f 6b 10 00 push $0x106b8f - 100c57: e8 0b f6 ff ff call 100267 - 100c5c: 83 c4 10 add $0x10,%esp - return 0; - 100c5f: b8 00 00 00 00 mov $0x0,%eax -} - 100c64: c9 leave - 100c65: c3 ret - -00100c66 : - -/***** Implementations of basic kernel monitor commands *****/ - -void -kmonitor(struct trapframe *tf) { - 100c66: 55 push %ebp - 100c67: 89 e5 mov %esp,%ebp - 100c69: 83 ec 18 sub $0x18,%esp - cprintf("Welcome to the kernel debug monitor!!\n"); - 100c6c: 83 ec 0c sub $0xc,%esp - 100c6f: 68 a8 6b 10 00 push $0x106ba8 - 100c74: e8 ee f5 ff ff call 100267 - 100c79: 83 c4 10 add $0x10,%esp - cprintf("Type 'help' for a list of commands.\n"); - 100c7c: 83 ec 0c sub $0xc,%esp - 100c7f: 68 d0 6b 10 00 push $0x106bd0 - 100c84: e8 de f5 ff ff call 100267 - 100c89: 83 c4 10 add $0x10,%esp - - if (tf != NULL) { - 100c8c: 83 7d 08 00 cmpl $0x0,0x8(%ebp) - 100c90: 74 0e je 100ca0 - print_trapframe(tf); - 100c92: 83 ec 0c sub $0xc,%esp - 100c95: ff 75 08 pushl 0x8(%ebp) - 100c98: e8 14 0e 00 00 call 101ab1 - 100c9d: 83 c4 10 add $0x10,%esp - } - - char *buf; - while (1) { - if ((buf = readline("K> ")) != NULL) { - 100ca0: 83 ec 0c sub $0xc,%esp - 100ca3: 68 f5 6b 10 00 push $0x106bf5 - 100ca8: e8 5e f6 ff ff call 10030b - 100cad: 83 c4 10 add $0x10,%esp - 100cb0: 89 45 f4 mov %eax,-0xc(%ebp) - 100cb3: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) - 100cb7: 74 e7 je 100ca0 - if (runcmd(buf, tf) < 0) { - 100cb9: 83 ec 08 sub $0x8,%esp - 100cbc: ff 75 08 pushl 0x8(%ebp) - 100cbf: ff 75 f4 pushl -0xc(%ebp) - 100cc2: e8 ef fe ff ff call 100bb6 - 100cc7: 83 c4 10 add $0x10,%esp - 100cca: 85 c0 test %eax,%eax - 100ccc: 78 02 js 100cd0 - break; - } - } - } - 100cce: eb d0 jmp 100ca0 - - char *buf; - while (1) { - if ((buf = readline("K> ")) != NULL) { - if (runcmd(buf, tf) < 0) { - break; - 100cd0: 90 nop - } - } - } -} - 100cd1: 90 nop - 100cd2: c9 leave - 100cd3: c3 ret - -00100cd4 : - -/* mon_help - print the information about mon_* functions */ -int -mon_help(int argc, char **argv, struct trapframe *tf) { - 100cd4: 55 push %ebp - 100cd5: 89 e5 mov %esp,%ebp - 100cd7: 83 ec 18 sub $0x18,%esp - int i; - for (i = 0; i < NCOMMANDS; i ++) { - 100cda: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - 100ce1: eb 3c jmp 100d1f - cprintf("%s - %s\n", commands[i].name, commands[i].desc); - 100ce3: 8b 55 f4 mov -0xc(%ebp),%edx - 100ce6: 89 d0 mov %edx,%eax - 100ce8: 01 c0 add %eax,%eax - 100cea: 01 d0 add %edx,%eax - 100cec: c1 e0 02 shl $0x2,%eax - 100cef: 05 24 90 11 00 add $0x119024,%eax - 100cf4: 8b 08 mov (%eax),%ecx - 100cf6: 8b 55 f4 mov -0xc(%ebp),%edx - 100cf9: 89 d0 mov %edx,%eax - 100cfb: 01 c0 add %eax,%eax - 100cfd: 01 d0 add %edx,%eax - 100cff: c1 e0 02 shl $0x2,%eax - 100d02: 05 20 90 11 00 add $0x119020,%eax - 100d07: 8b 00 mov (%eax),%eax - 100d09: 83 ec 04 sub $0x4,%esp - 100d0c: 51 push %ecx - 100d0d: 50 push %eax - 100d0e: 68 f9 6b 10 00 push $0x106bf9 - 100d13: e8 4f f5 ff ff call 100267 - 100d18: 83 c4 10 add $0x10,%esp - -/* mon_help - print the information about mon_* functions */ -int -mon_help(int argc, char **argv, struct trapframe *tf) { - int i; - for (i = 0; i < NCOMMANDS; i ++) { - 100d1b: 83 45 f4 01 addl $0x1,-0xc(%ebp) - 100d1f: 8b 45 f4 mov -0xc(%ebp),%eax - 100d22: 83 f8 02 cmp $0x2,%eax - 100d25: 76 bc jbe 100ce3 - cprintf("%s - %s\n", commands[i].name, commands[i].desc); - } - return 0; - 100d27: b8 00 00 00 00 mov $0x0,%eax -} - 100d2c: c9 leave - 100d2d: c3 ret - -00100d2e : -/* * - * mon_kerninfo - call print_kerninfo in kern/debug/kdebug.c to - * print the memory occupancy in kernel. - * */ -int -mon_kerninfo(int argc, char **argv, struct trapframe *tf) { - 100d2e: 55 push %ebp - 100d2f: 89 e5 mov %esp,%ebp - 100d31: 83 ec 08 sub $0x8,%esp - print_kerninfo(); - 100d34: e8 b8 fb ff ff call 1008f1 - return 0; - 100d39: b8 00 00 00 00 mov $0x0,%eax -} - 100d3e: c9 leave - 100d3f: c3 ret - -00100d40 : -/* * - * mon_backtrace - call print_stackframe in kern/debug/kdebug.c to - * print a backtrace of the stack. - * */ -int -mon_backtrace(int argc, char **argv, struct trapframe *tf) { - 100d40: 55 push %ebp - 100d41: 89 e5 mov %esp,%ebp - 100d43: 83 ec 08 sub $0x8,%esp - print_stackframe(); - 100d46: e8 f0 fc ff ff call 100a3b - return 0; - 100d4b: b8 00 00 00 00 mov $0x0,%eax -} - 100d50: c9 leave - 100d51: c3 ret - -00100d52 : -/* * - * clock_init - initialize 8253 clock to interrupt 100 times per second, - * and then enable IRQ_TIMER. - * */ -void -clock_init(void) { - 100d52: 55 push %ebp - 100d53: 89 e5 mov %esp,%ebp - 100d55: 83 ec 18 sub $0x18,%esp - 100d58: 66 c7 45 f6 43 00 movw $0x43,-0xa(%ebp) - 100d5e: c6 45 ef 34 movb $0x34,-0x11(%ebp) - : "memory", "cc"); -} - -static inline void -outb(uint16_t port, uint8_t data) { - asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); - 100d62: 0f b6 45 ef movzbl -0x11(%ebp),%eax - 100d66: 0f b7 55 f6 movzwl -0xa(%ebp),%edx - 100d6a: ee out %al,(%dx) - 100d6b: 66 c7 45 f4 40 00 movw $0x40,-0xc(%ebp) - 100d71: c6 45 f0 9c movb $0x9c,-0x10(%ebp) - 100d75: 0f b6 45 f0 movzbl -0x10(%ebp),%eax - 100d79: 0f b7 55 f4 movzwl -0xc(%ebp),%edx - 100d7d: ee out %al,(%dx) - 100d7e: 66 c7 45 f2 40 00 movw $0x40,-0xe(%ebp) - 100d84: c6 45 f1 2e movb $0x2e,-0xf(%ebp) - 100d88: 0f b6 45 f1 movzbl -0xf(%ebp),%eax - 100d8c: 0f b7 55 f2 movzwl -0xe(%ebp),%edx - 100d90: ee out %al,(%dx) - outb(TIMER_MODE, TIMER_SEL0 | TIMER_RATEGEN | TIMER_16BIT); - outb(IO_TIMER1, TIMER_DIV(100) % 256); - outb(IO_TIMER1, TIMER_DIV(100) / 256); - - // initialize time counter 'ticks' to zero - ticks = 0; - 100d91: c7 05 58 a9 11 00 00 movl $0x0,0x11a958 - 100d98: 00 00 00 - - cprintf("++ setup timer interrupts\n"); - 100d9b: 83 ec 0c sub $0xc,%esp - 100d9e: 68 02 6c 10 00 push $0x106c02 - 100da3: e8 bf f4 ff ff call 100267 - 100da8: 83 c4 10 add $0x10,%esp - pic_enable(IRQ_TIMER); - 100dab: 83 ec 0c sub $0xc,%esp - 100dae: 6a 00 push $0x0 - 100db0: e8 3b 09 00 00 call 1016f0 - 100db5: 83 c4 10 add $0x10,%esp -} - 100db8: 90 nop - 100db9: c9 leave - 100dba: c3 ret - -00100dbb <__intr_save>: -#include -#include -#include - -static inline bool -__intr_save(void) { - 100dbb: 55 push %ebp - 100dbc: 89 e5 mov %esp,%ebp - 100dbe: 83 ec 18 sub $0x18,%esp -} - -static inline uint32_t -read_eflags(void) { - uint32_t eflags; - asm volatile ("pushfl; popl %0" : "=r" (eflags)); - 100dc1: 9c pushf - 100dc2: 58 pop %eax - 100dc3: 89 45 f4 mov %eax,-0xc(%ebp) - return eflags; - 100dc6: 8b 45 f4 mov -0xc(%ebp),%eax - if (read_eflags() & FL_IF) { - 100dc9: 25 00 02 00 00 and $0x200,%eax - 100dce: 85 c0 test %eax,%eax - 100dd0: 74 0c je 100dde <__intr_save+0x23> - intr_disable(); - 100dd2: e8 8a 0a 00 00 call 101861 - return 1; - 100dd7: b8 01 00 00 00 mov $0x1,%eax - 100ddc: eb 05 jmp 100de3 <__intr_save+0x28> - } - return 0; - 100dde: b8 00 00 00 00 mov $0x0,%eax -} - 100de3: c9 leave - 100de4: c3 ret - -00100de5 <__intr_restore>: - -static inline void -__intr_restore(bool flag) { - 100de5: 55 push %ebp - 100de6: 89 e5 mov %esp,%ebp - 100de8: 83 ec 08 sub $0x8,%esp - if (flag) { - 100deb: 83 7d 08 00 cmpl $0x0,0x8(%ebp) - 100def: 74 05 je 100df6 <__intr_restore+0x11> - intr_enable(); - 100df1: e8 64 0a 00 00 call 10185a - } -} - 100df6: 90 nop - 100df7: c9 leave - 100df8: c3 ret - -00100df9 : -#include -#include - -/* stupid I/O delay routine necessitated by historical PC design flaws */ -static void -delay(void) { - 100df9: 55 push %ebp - 100dfa: 89 e5 mov %esp,%ebp - 100dfc: 83 ec 10 sub $0x10,%esp - 100dff: 66 c7 45 fe 84 00 movw $0x84,-0x2(%ebp) -static inline void invlpg(void *addr) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); - 100e05: 0f b7 45 fe movzwl -0x2(%ebp),%eax - 100e09: 89 c2 mov %eax,%edx - 100e0b: ec in (%dx),%al - 100e0c: 88 45 f4 mov %al,-0xc(%ebp) - 100e0f: 66 c7 45 fc 84 00 movw $0x84,-0x4(%ebp) - 100e15: 0f b7 45 fc movzwl -0x4(%ebp),%eax - 100e19: 89 c2 mov %eax,%edx - 100e1b: ec in (%dx),%al - 100e1c: 88 45 f5 mov %al,-0xb(%ebp) - 100e1f: 66 c7 45 fa 84 00 movw $0x84,-0x6(%ebp) - 100e25: 0f b7 45 fa movzwl -0x6(%ebp),%eax - 100e29: 89 c2 mov %eax,%edx - 100e2b: ec in (%dx),%al - 100e2c: 88 45 f6 mov %al,-0xa(%ebp) - 100e2f: 66 c7 45 f8 84 00 movw $0x84,-0x8(%ebp) - 100e35: 0f b7 45 f8 movzwl -0x8(%ebp),%eax - 100e39: 89 c2 mov %eax,%edx - 100e3b: ec in (%dx),%al - 100e3c: 88 45 f7 mov %al,-0x9(%ebp) - inb(0x84); - inb(0x84); - inb(0x84); - inb(0x84); -} - 100e3f: 90 nop - 100e40: c9 leave - 100e41: c3 ret - -00100e42 : -static uint16_t addr_6845; - -/* TEXT-mode CGA/VGA display output */ - -static void -cga_init(void) { - 100e42: 55 push %ebp - 100e43: 89 e5 mov %esp,%ebp - 100e45: 83 ec 20 sub $0x20,%esp - volatile uint16_t *cp = (uint16_t *)(CGA_BUF + KERNBASE); - 100e48: c7 45 fc 00 80 0b c0 movl $0xc00b8000,-0x4(%ebp) - uint16_t was = *cp; - 100e4f: 8b 45 fc mov -0x4(%ebp),%eax - 100e52: 0f b7 00 movzwl (%eax),%eax - 100e55: 66 89 45 fa mov %ax,-0x6(%ebp) - *cp = (uint16_t) 0xA55A; - 100e59: 8b 45 fc mov -0x4(%ebp),%eax - 100e5c: 66 c7 00 5a a5 movw $0xa55a,(%eax) - if (*cp != 0xA55A) { - 100e61: 8b 45 fc mov -0x4(%ebp),%eax - 100e64: 0f b7 00 movzwl (%eax),%eax - 100e67: 66 3d 5a a5 cmp $0xa55a,%ax - 100e6b: 74 12 je 100e7f - cp = (uint16_t*)(MONO_BUF + KERNBASE); - 100e6d: c7 45 fc 00 00 0b c0 movl $0xc00b0000,-0x4(%ebp) - addr_6845 = MONO_BASE; - 100e74: 66 c7 05 86 9e 11 00 movw $0x3b4,0x119e86 - 100e7b: b4 03 - 100e7d: eb 13 jmp 100e92 - } else { - *cp = was; - 100e7f: 8b 45 fc mov -0x4(%ebp),%eax - 100e82: 0f b7 55 fa movzwl -0x6(%ebp),%edx - 100e86: 66 89 10 mov %dx,(%eax) - addr_6845 = CGA_BASE; - 100e89: 66 c7 05 86 9e 11 00 movw $0x3d4,0x119e86 - 100e90: d4 03 - } - - // Extract cursor location - uint32_t pos; - outb(addr_6845, 14); - 100e92: 0f b7 05 86 9e 11 00 movzwl 0x119e86,%eax - 100e99: 0f b7 c0 movzwl %ax,%eax - 100e9c: 66 89 45 f8 mov %ax,-0x8(%ebp) - 100ea0: c6 45 ea 0e movb $0xe,-0x16(%ebp) - : "memory", "cc"); -} - -static inline void -outb(uint16_t port, uint8_t data) { - asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); - 100ea4: 0f b6 45 ea movzbl -0x16(%ebp),%eax - 100ea8: 0f b7 55 f8 movzwl -0x8(%ebp),%edx - 100eac: ee out %al,(%dx) - pos = inb(addr_6845 + 1) << 8; - 100ead: 0f b7 05 86 9e 11 00 movzwl 0x119e86,%eax - 100eb4: 83 c0 01 add $0x1,%eax - 100eb7: 0f b7 c0 movzwl %ax,%eax - 100eba: 66 89 45 f2 mov %ax,-0xe(%ebp) -static inline void invlpg(void *addr) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); - 100ebe: 0f b7 45 f2 movzwl -0xe(%ebp),%eax - 100ec2: 89 c2 mov %eax,%edx - 100ec4: ec in (%dx),%al - 100ec5: 88 45 eb mov %al,-0x15(%ebp) - return data; - 100ec8: 0f b6 45 eb movzbl -0x15(%ebp),%eax - 100ecc: 0f b6 c0 movzbl %al,%eax - 100ecf: c1 e0 08 shl $0x8,%eax - 100ed2: 89 45 f4 mov %eax,-0xc(%ebp) - outb(addr_6845, 15); - 100ed5: 0f b7 05 86 9e 11 00 movzwl 0x119e86,%eax - 100edc: 0f b7 c0 movzwl %ax,%eax - 100edf: 66 89 45 f0 mov %ax,-0x10(%ebp) - 100ee3: c6 45 ec 0f movb $0xf,-0x14(%ebp) - : "memory", "cc"); -} - -static inline void -outb(uint16_t port, uint8_t data) { - asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); - 100ee7: 0f b6 45 ec movzbl -0x14(%ebp),%eax - 100eeb: 0f b7 55 f0 movzwl -0x10(%ebp),%edx - 100eef: ee out %al,(%dx) - pos |= inb(addr_6845 + 1); - 100ef0: 0f b7 05 86 9e 11 00 movzwl 0x119e86,%eax - 100ef7: 83 c0 01 add $0x1,%eax - 100efa: 0f b7 c0 movzwl %ax,%eax - 100efd: 66 89 45 ee mov %ax,-0x12(%ebp) -static inline void invlpg(void *addr) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); - 100f01: 0f b7 45 ee movzwl -0x12(%ebp),%eax - 100f05: 89 c2 mov %eax,%edx - 100f07: ec in (%dx),%al - 100f08: 88 45 ed mov %al,-0x13(%ebp) - return data; - 100f0b: 0f b6 45 ed movzbl -0x13(%ebp),%eax - 100f0f: 0f b6 c0 movzbl %al,%eax - 100f12: 09 45 f4 or %eax,-0xc(%ebp) - - crt_buf = (uint16_t*) cp; - 100f15: 8b 45 fc mov -0x4(%ebp),%eax - 100f18: a3 80 9e 11 00 mov %eax,0x119e80 - crt_pos = pos; - 100f1d: 8b 45 f4 mov -0xc(%ebp),%eax - 100f20: 66 a3 84 9e 11 00 mov %ax,0x119e84 -} - 100f26: 90 nop - 100f27: c9 leave - 100f28: c3 ret - -00100f29 : - -static bool serial_exists = 0; - -static void -serial_init(void) { - 100f29: 55 push %ebp - 100f2a: 89 e5 mov %esp,%ebp - 100f2c: 83 ec 28 sub $0x28,%esp - 100f2f: 66 c7 45 f6 fa 03 movw $0x3fa,-0xa(%ebp) - 100f35: c6 45 da 00 movb $0x0,-0x26(%ebp) - : "memory", "cc"); -} - -static inline void -outb(uint16_t port, uint8_t data) { - asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); - 100f39: 0f b6 45 da movzbl -0x26(%ebp),%eax - 100f3d: 0f b7 55 f6 movzwl -0xa(%ebp),%edx - 100f41: ee out %al,(%dx) - 100f42: 66 c7 45 f4 fb 03 movw $0x3fb,-0xc(%ebp) - 100f48: c6 45 db 80 movb $0x80,-0x25(%ebp) - 100f4c: 0f b6 45 db movzbl -0x25(%ebp),%eax - 100f50: 0f b7 55 f4 movzwl -0xc(%ebp),%edx - 100f54: ee out %al,(%dx) - 100f55: 66 c7 45 f2 f8 03 movw $0x3f8,-0xe(%ebp) - 100f5b: c6 45 dc 0c movb $0xc,-0x24(%ebp) - 100f5f: 0f b6 45 dc movzbl -0x24(%ebp),%eax - 100f63: 0f b7 55 f2 movzwl -0xe(%ebp),%edx - 100f67: ee out %al,(%dx) - 100f68: 66 c7 45 f0 f9 03 movw $0x3f9,-0x10(%ebp) - 100f6e: c6 45 dd 00 movb $0x0,-0x23(%ebp) - 100f72: 0f b6 45 dd movzbl -0x23(%ebp),%eax - 100f76: 0f b7 55 f0 movzwl -0x10(%ebp),%edx - 100f7a: ee out %al,(%dx) - 100f7b: 66 c7 45 ee fb 03 movw $0x3fb,-0x12(%ebp) - 100f81: c6 45 de 03 movb $0x3,-0x22(%ebp) - 100f85: 0f b6 45 de movzbl -0x22(%ebp),%eax - 100f89: 0f b7 55 ee movzwl -0x12(%ebp),%edx - 100f8d: ee out %al,(%dx) - 100f8e: 66 c7 45 ec fc 03 movw $0x3fc,-0x14(%ebp) - 100f94: c6 45 df 00 movb $0x0,-0x21(%ebp) - 100f98: 0f b6 45 df movzbl -0x21(%ebp),%eax - 100f9c: 0f b7 55 ec movzwl -0x14(%ebp),%edx - 100fa0: ee out %al,(%dx) - 100fa1: 66 c7 45 ea f9 03 movw $0x3f9,-0x16(%ebp) - 100fa7: c6 45 e0 01 movb $0x1,-0x20(%ebp) - 100fab: 0f b6 45 e0 movzbl -0x20(%ebp),%eax - 100faf: 0f b7 55 ea movzwl -0x16(%ebp),%edx - 100fb3: ee out %al,(%dx) - 100fb4: 66 c7 45 e8 fd 03 movw $0x3fd,-0x18(%ebp) -static inline void invlpg(void *addr) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); - 100fba: 0f b7 45 e8 movzwl -0x18(%ebp),%eax - 100fbe: 89 c2 mov %eax,%edx - 100fc0: ec in (%dx),%al - 100fc1: 88 45 e1 mov %al,-0x1f(%ebp) - return data; - 100fc4: 0f b6 45 e1 movzbl -0x1f(%ebp),%eax - // Enable rcv interrupts - outb(COM1 + COM_IER, COM_IER_RDI); - - // Clear any preexisting overrun indications and interrupts - // Serial port doesn't exist if COM_LSR returns 0xFF - serial_exists = (inb(COM1 + COM_LSR) != 0xFF); - 100fc8: 3c ff cmp $0xff,%al - 100fca: 0f 95 c0 setne %al - 100fcd: 0f b6 c0 movzbl %al,%eax - 100fd0: a3 88 9e 11 00 mov %eax,0x119e88 - 100fd5: 66 c7 45 e6 fa 03 movw $0x3fa,-0x1a(%ebp) -static inline void invlpg(void *addr) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); - 100fdb: 0f b7 45 e6 movzwl -0x1a(%ebp),%eax - 100fdf: 89 c2 mov %eax,%edx - 100fe1: ec in (%dx),%al - 100fe2: 88 45 e2 mov %al,-0x1e(%ebp) - 100fe5: 66 c7 45 e4 f8 03 movw $0x3f8,-0x1c(%ebp) - 100feb: 0f b7 45 e4 movzwl -0x1c(%ebp),%eax - 100fef: 89 c2 mov %eax,%edx - 100ff1: ec in (%dx),%al - 100ff2: 88 45 e3 mov %al,-0x1d(%ebp) - (void) inb(COM1+COM_IIR); - (void) inb(COM1+COM_RX); - - if (serial_exists) { - 100ff5: a1 88 9e 11 00 mov 0x119e88,%eax - 100ffa: 85 c0 test %eax,%eax - 100ffc: 74 0d je 10100b - pic_enable(IRQ_COM1); - 100ffe: 83 ec 0c sub $0xc,%esp - 101001: 6a 04 push $0x4 - 101003: e8 e8 06 00 00 call 1016f0 - 101008: 83 c4 10 add $0x10,%esp - } -} - 10100b: 90 nop - 10100c: c9 leave - 10100d: c3 ret - -0010100e : - -static void -lpt_putc_sub(int c) { - 10100e: 55 push %ebp - 10100f: 89 e5 mov %esp,%ebp - 101011: 83 ec 10 sub $0x10,%esp - int i; - for (i = 0; !(inb(LPTPORT + 1) & 0x80) && i < 12800; i ++) { - 101014: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp) - 10101b: eb 09 jmp 101026 - delay(); - 10101d: e8 d7 fd ff ff call 100df9 -} - -static void -lpt_putc_sub(int c) { - int i; - for (i = 0; !(inb(LPTPORT + 1) & 0x80) && i < 12800; i ++) { - 101022: 83 45 fc 01 addl $0x1,-0x4(%ebp) - 101026: 66 c7 45 f4 79 03 movw $0x379,-0xc(%ebp) - 10102c: 0f b7 45 f4 movzwl -0xc(%ebp),%eax - 101030: 89 c2 mov %eax,%edx - 101032: ec in (%dx),%al - 101033: 88 45 f3 mov %al,-0xd(%ebp) - return data; - 101036: 0f b6 45 f3 movzbl -0xd(%ebp),%eax - 10103a: 84 c0 test %al,%al - 10103c: 78 09 js 101047 - 10103e: 81 7d fc ff 31 00 00 cmpl $0x31ff,-0x4(%ebp) - 101045: 7e d6 jle 10101d - delay(); - } - outb(LPTPORT + 0, c); - 101047: 8b 45 08 mov 0x8(%ebp),%eax - 10104a: 0f b6 c0 movzbl %al,%eax - 10104d: 66 c7 45 f8 78 03 movw $0x378,-0x8(%ebp) - 101053: 88 45 f0 mov %al,-0x10(%ebp) - : "memory", "cc"); -} - -static inline void -outb(uint16_t port, uint8_t data) { - asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); - 101056: 0f b6 45 f0 movzbl -0x10(%ebp),%eax - 10105a: 0f b7 55 f8 movzwl -0x8(%ebp),%edx - 10105e: ee out %al,(%dx) - 10105f: 66 c7 45 f6 7a 03 movw $0x37a,-0xa(%ebp) - 101065: c6 45 f1 0d movb $0xd,-0xf(%ebp) - 101069: 0f b6 45 f1 movzbl -0xf(%ebp),%eax - 10106d: 0f b7 55 f6 movzwl -0xa(%ebp),%edx - 101071: ee out %al,(%dx) - 101072: 66 c7 45 fa 7a 03 movw $0x37a,-0x6(%ebp) - 101078: c6 45 f2 08 movb $0x8,-0xe(%ebp) - 10107c: 0f b6 45 f2 movzbl -0xe(%ebp),%eax - 101080: 0f b7 55 fa movzwl -0x6(%ebp),%edx - 101084: ee out %al,(%dx) - outb(LPTPORT + 2, 0x08 | 0x04 | 0x01); - outb(LPTPORT + 2, 0x08); -} - 101085: 90 nop - 101086: c9 leave - 101087: c3 ret - -00101088 : - -/* lpt_putc - copy console output to parallel port */ -static void -lpt_putc(int c) { - 101088: 55 push %ebp - 101089: 89 e5 mov %esp,%ebp - if (c != '\b') { - 10108b: 83 7d 08 08 cmpl $0x8,0x8(%ebp) - 10108f: 74 0d je 10109e - lpt_putc_sub(c); - 101091: ff 75 08 pushl 0x8(%ebp) - 101094: e8 75 ff ff ff call 10100e - 101099: 83 c4 04 add $0x4,%esp - else { - lpt_putc_sub('\b'); - lpt_putc_sub(' '); - lpt_putc_sub('\b'); - } -} - 10109c: eb 1e jmp 1010bc -lpt_putc(int c) { - if (c != '\b') { - lpt_putc_sub(c); - } - else { - lpt_putc_sub('\b'); - 10109e: 6a 08 push $0x8 - 1010a0: e8 69 ff ff ff call 10100e - 1010a5: 83 c4 04 add $0x4,%esp - lpt_putc_sub(' '); - 1010a8: 6a 20 push $0x20 - 1010aa: e8 5f ff ff ff call 10100e - 1010af: 83 c4 04 add $0x4,%esp - lpt_putc_sub('\b'); - 1010b2: 6a 08 push $0x8 - 1010b4: e8 55 ff ff ff call 10100e - 1010b9: 83 c4 04 add $0x4,%esp - } -} - 1010bc: 90 nop - 1010bd: c9 leave - 1010be: c3 ret - -001010bf : - -/* cga_putc - print character to console */ -static void -cga_putc(int c) { - 1010bf: 55 push %ebp - 1010c0: 89 e5 mov %esp,%ebp - 1010c2: 53 push %ebx - 1010c3: 83 ec 14 sub $0x14,%esp - // set black on white - if (!(c & ~0xFF)) { - 1010c6: 8b 45 08 mov 0x8(%ebp),%eax - 1010c9: b0 00 mov $0x0,%al - 1010cb: 85 c0 test %eax,%eax - 1010cd: 75 07 jne 1010d6 - c |= 0x0700; - 1010cf: 81 4d 08 00 07 00 00 orl $0x700,0x8(%ebp) - } - - switch (c & 0xff) { - 1010d6: 8b 45 08 mov 0x8(%ebp),%eax - 1010d9: 0f b6 c0 movzbl %al,%eax - 1010dc: 83 f8 0a cmp $0xa,%eax - 1010df: 74 4e je 10112f - 1010e1: 83 f8 0d cmp $0xd,%eax - 1010e4: 74 59 je 10113f - 1010e6: 83 f8 08 cmp $0x8,%eax - 1010e9: 0f 85 8a 00 00 00 jne 101179 - case '\b': - if (crt_pos > 0) { - 1010ef: 0f b7 05 84 9e 11 00 movzwl 0x119e84,%eax - 1010f6: 66 85 c0 test %ax,%ax - 1010f9: 0f 84 a0 00 00 00 je 10119f - crt_pos --; - 1010ff: 0f b7 05 84 9e 11 00 movzwl 0x119e84,%eax - 101106: 83 e8 01 sub $0x1,%eax - 101109: 66 a3 84 9e 11 00 mov %ax,0x119e84 - crt_buf[crt_pos] = (c & ~0xff) | ' '; - 10110f: a1 80 9e 11 00 mov 0x119e80,%eax - 101114: 0f b7 15 84 9e 11 00 movzwl 0x119e84,%edx - 10111b: 0f b7 d2 movzwl %dx,%edx - 10111e: 01 d2 add %edx,%edx - 101120: 01 d0 add %edx,%eax - 101122: 8b 55 08 mov 0x8(%ebp),%edx - 101125: b2 00 mov $0x0,%dl - 101127: 83 ca 20 or $0x20,%edx - 10112a: 66 89 10 mov %dx,(%eax) - } - break; - 10112d: eb 70 jmp 10119f - case '\n': - crt_pos += CRT_COLS; - 10112f: 0f b7 05 84 9e 11 00 movzwl 0x119e84,%eax - 101136: 83 c0 50 add $0x50,%eax - 101139: 66 a3 84 9e 11 00 mov %ax,0x119e84 - case '\r': - crt_pos -= (crt_pos % CRT_COLS); - 10113f: 0f b7 1d 84 9e 11 00 movzwl 0x119e84,%ebx - 101146: 0f b7 0d 84 9e 11 00 movzwl 0x119e84,%ecx - 10114d: 0f b7 c1 movzwl %cx,%eax - 101150: 69 c0 cd cc 00 00 imul $0xcccd,%eax,%eax - 101156: c1 e8 10 shr $0x10,%eax - 101159: 89 c2 mov %eax,%edx - 10115b: 66 c1 ea 06 shr $0x6,%dx - 10115f: 89 d0 mov %edx,%eax - 101161: c1 e0 02 shl $0x2,%eax - 101164: 01 d0 add %edx,%eax - 101166: c1 e0 04 shl $0x4,%eax - 101169: 29 c1 sub %eax,%ecx - 10116b: 89 ca mov %ecx,%edx - 10116d: 89 d8 mov %ebx,%eax - 10116f: 29 d0 sub %edx,%eax - 101171: 66 a3 84 9e 11 00 mov %ax,0x119e84 - break; - 101177: eb 27 jmp 1011a0 - default: - crt_buf[crt_pos ++] = c; // write the character - 101179: 8b 0d 80 9e 11 00 mov 0x119e80,%ecx - 10117f: 0f b7 05 84 9e 11 00 movzwl 0x119e84,%eax - 101186: 8d 50 01 lea 0x1(%eax),%edx - 101189: 66 89 15 84 9e 11 00 mov %dx,0x119e84 - 101190: 0f b7 c0 movzwl %ax,%eax - 101193: 01 c0 add %eax,%eax - 101195: 01 c8 add %ecx,%eax - 101197: 8b 55 08 mov 0x8(%ebp),%edx - 10119a: 66 89 10 mov %dx,(%eax) - break; - 10119d: eb 01 jmp 1011a0 - case '\b': - if (crt_pos > 0) { - crt_pos --; - crt_buf[crt_pos] = (c & ~0xff) | ' '; - } - break; - 10119f: 90 nop - crt_buf[crt_pos ++] = c; // write the character - break; - } - - // What is the purpose of this? - if (crt_pos >= CRT_SIZE) { - 1011a0: 0f b7 05 84 9e 11 00 movzwl 0x119e84,%eax - 1011a7: 66 3d cf 07 cmp $0x7cf,%ax - 1011ab: 76 59 jbe 101206 - int i; - memmove(crt_buf, crt_buf + CRT_COLS, (CRT_SIZE - CRT_COLS) * sizeof(uint16_t)); - 1011ad: a1 80 9e 11 00 mov 0x119e80,%eax - 1011b2: 8d 90 a0 00 00 00 lea 0xa0(%eax),%edx - 1011b8: a1 80 9e 11 00 mov 0x119e80,%eax - 1011bd: 83 ec 04 sub $0x4,%esp - 1011c0: 68 00 0f 00 00 push $0xf00 - 1011c5: 52 push %edx - 1011c6: 50 push %eax - 1011c7: e8 db 4f 00 00 call 1061a7 - 1011cc: 83 c4 10 add $0x10,%esp - for (i = CRT_SIZE - CRT_COLS; i < CRT_SIZE; i ++) { - 1011cf: c7 45 f4 80 07 00 00 movl $0x780,-0xc(%ebp) - 1011d6: eb 15 jmp 1011ed - crt_buf[i] = 0x0700 | ' '; - 1011d8: a1 80 9e 11 00 mov 0x119e80,%eax - 1011dd: 8b 55 f4 mov -0xc(%ebp),%edx - 1011e0: 01 d2 add %edx,%edx - 1011e2: 01 d0 add %edx,%eax - 1011e4: 66 c7 00 20 07 movw $0x720,(%eax) - - // What is the purpose of this? - if (crt_pos >= CRT_SIZE) { - int i; - memmove(crt_buf, crt_buf + CRT_COLS, (CRT_SIZE - CRT_COLS) * sizeof(uint16_t)); - for (i = CRT_SIZE - CRT_COLS; i < CRT_SIZE; i ++) { - 1011e9: 83 45 f4 01 addl $0x1,-0xc(%ebp) - 1011ed: 81 7d f4 cf 07 00 00 cmpl $0x7cf,-0xc(%ebp) - 1011f4: 7e e2 jle 1011d8 - crt_buf[i] = 0x0700 | ' '; - } - crt_pos -= CRT_COLS; - 1011f6: 0f b7 05 84 9e 11 00 movzwl 0x119e84,%eax - 1011fd: 83 e8 50 sub $0x50,%eax - 101200: 66 a3 84 9e 11 00 mov %ax,0x119e84 - } - - // move that little blinky thing - outb(addr_6845, 14); - 101206: 0f b7 05 86 9e 11 00 movzwl 0x119e86,%eax - 10120d: 0f b7 c0 movzwl %ax,%eax - 101210: 66 89 45 f2 mov %ax,-0xe(%ebp) - 101214: c6 45 e8 0e movb $0xe,-0x18(%ebp) - 101218: 0f b6 45 e8 movzbl -0x18(%ebp),%eax - 10121c: 0f b7 55 f2 movzwl -0xe(%ebp),%edx - 101220: ee out %al,(%dx) - outb(addr_6845 + 1, crt_pos >> 8); - 101221: 0f b7 05 84 9e 11 00 movzwl 0x119e84,%eax - 101228: 66 c1 e8 08 shr $0x8,%ax - 10122c: 0f b6 c0 movzbl %al,%eax - 10122f: 0f b7 15 86 9e 11 00 movzwl 0x119e86,%edx - 101236: 83 c2 01 add $0x1,%edx - 101239: 0f b7 d2 movzwl %dx,%edx - 10123c: 66 89 55 f0 mov %dx,-0x10(%ebp) - 101240: 88 45 e9 mov %al,-0x17(%ebp) - 101243: 0f b6 45 e9 movzbl -0x17(%ebp),%eax - 101247: 0f b7 55 f0 movzwl -0x10(%ebp),%edx - 10124b: ee out %al,(%dx) - outb(addr_6845, 15); - 10124c: 0f b7 05 86 9e 11 00 movzwl 0x119e86,%eax - 101253: 0f b7 c0 movzwl %ax,%eax - 101256: 66 89 45 ee mov %ax,-0x12(%ebp) - 10125a: c6 45 ea 0f movb $0xf,-0x16(%ebp) - 10125e: 0f b6 45 ea movzbl -0x16(%ebp),%eax - 101262: 0f b7 55 ee movzwl -0x12(%ebp),%edx - 101266: ee out %al,(%dx) - outb(addr_6845 + 1, crt_pos); - 101267: 0f b7 05 84 9e 11 00 movzwl 0x119e84,%eax - 10126e: 0f b6 c0 movzbl %al,%eax - 101271: 0f b7 15 86 9e 11 00 movzwl 0x119e86,%edx - 101278: 83 c2 01 add $0x1,%edx - 10127b: 0f b7 d2 movzwl %dx,%edx - 10127e: 66 89 55 ec mov %dx,-0x14(%ebp) - 101282: 88 45 eb mov %al,-0x15(%ebp) - 101285: 0f b6 45 eb movzbl -0x15(%ebp),%eax - 101289: 0f b7 55 ec movzwl -0x14(%ebp),%edx - 10128d: ee out %al,(%dx) -} - 10128e: 90 nop - 10128f: 8b 5d fc mov -0x4(%ebp),%ebx - 101292: c9 leave - 101293: c3 ret - -00101294 : - -static void -serial_putc_sub(int c) { - 101294: 55 push %ebp - 101295: 89 e5 mov %esp,%ebp - 101297: 83 ec 10 sub $0x10,%esp - int i; - for (i = 0; !(inb(COM1 + COM_LSR) & COM_LSR_TXRDY) && i < 12800; i ++) { - 10129a: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp) - 1012a1: eb 09 jmp 1012ac - delay(); - 1012a3: e8 51 fb ff ff call 100df9 -} - -static void -serial_putc_sub(int c) { - int i; - for (i = 0; !(inb(COM1 + COM_LSR) & COM_LSR_TXRDY) && i < 12800; i ++) { - 1012a8: 83 45 fc 01 addl $0x1,-0x4(%ebp) - 1012ac: 66 c7 45 f8 fd 03 movw $0x3fd,-0x8(%ebp) -static inline void invlpg(void *addr) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); - 1012b2: 0f b7 45 f8 movzwl -0x8(%ebp),%eax - 1012b6: 89 c2 mov %eax,%edx - 1012b8: ec in (%dx),%al - 1012b9: 88 45 f7 mov %al,-0x9(%ebp) - return data; - 1012bc: 0f b6 45 f7 movzbl -0x9(%ebp),%eax - 1012c0: 0f b6 c0 movzbl %al,%eax - 1012c3: 83 e0 20 and $0x20,%eax - 1012c6: 85 c0 test %eax,%eax - 1012c8: 75 09 jne 1012d3 - 1012ca: 81 7d fc ff 31 00 00 cmpl $0x31ff,-0x4(%ebp) - 1012d1: 7e d0 jle 1012a3 - delay(); - } - outb(COM1 + COM_TX, c); - 1012d3: 8b 45 08 mov 0x8(%ebp),%eax - 1012d6: 0f b6 c0 movzbl %al,%eax - 1012d9: 66 c7 45 fa f8 03 movw $0x3f8,-0x6(%ebp) - 1012df: 88 45 f6 mov %al,-0xa(%ebp) - : "memory", "cc"); -} - -static inline void -outb(uint16_t port, uint8_t data) { - asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); - 1012e2: 0f b6 45 f6 movzbl -0xa(%ebp),%eax - 1012e6: 0f b7 55 fa movzwl -0x6(%ebp),%edx - 1012ea: ee out %al,(%dx) -} - 1012eb: 90 nop - 1012ec: c9 leave - 1012ed: c3 ret - -001012ee : - -/* serial_putc - print character to serial port */ -static void -serial_putc(int c) { - 1012ee: 55 push %ebp - 1012ef: 89 e5 mov %esp,%ebp - if (c != '\b') { - 1012f1: 83 7d 08 08 cmpl $0x8,0x8(%ebp) - 1012f5: 74 0d je 101304 - serial_putc_sub(c); - 1012f7: ff 75 08 pushl 0x8(%ebp) - 1012fa: e8 95 ff ff ff call 101294 - 1012ff: 83 c4 04 add $0x4,%esp - else { - serial_putc_sub('\b'); - serial_putc_sub(' '); - serial_putc_sub('\b'); - } -} - 101302: eb 1e jmp 101322 -serial_putc(int c) { - if (c != '\b') { - serial_putc_sub(c); - } - else { - serial_putc_sub('\b'); - 101304: 6a 08 push $0x8 - 101306: e8 89 ff ff ff call 101294 - 10130b: 83 c4 04 add $0x4,%esp - serial_putc_sub(' '); - 10130e: 6a 20 push $0x20 - 101310: e8 7f ff ff ff call 101294 - 101315: 83 c4 04 add $0x4,%esp - serial_putc_sub('\b'); - 101318: 6a 08 push $0x8 - 10131a: e8 75 ff ff ff call 101294 - 10131f: 83 c4 04 add $0x4,%esp - } -} - 101322: 90 nop - 101323: c9 leave - 101324: c3 ret - -00101325 : -/* * - * cons_intr - called by device interrupt routines to feed input - * characters into the circular console input buffer. - * */ -static void -cons_intr(int (*proc)(void)) { - 101325: 55 push %ebp - 101326: 89 e5 mov %esp,%ebp - 101328: 83 ec 18 sub $0x18,%esp - int c; - while ((c = (*proc)()) != -1) { - 10132b: eb 33 jmp 101360 - if (c != 0) { - 10132d: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) - 101331: 74 2d je 101360 - cons.buf[cons.wpos ++] = c; - 101333: a1 a4 a0 11 00 mov 0x11a0a4,%eax - 101338: 8d 50 01 lea 0x1(%eax),%edx - 10133b: 89 15 a4 a0 11 00 mov %edx,0x11a0a4 - 101341: 8b 55 f4 mov -0xc(%ebp),%edx - 101344: 88 90 a0 9e 11 00 mov %dl,0x119ea0(%eax) - if (cons.wpos == CONSBUFSIZE) { - 10134a: a1 a4 a0 11 00 mov 0x11a0a4,%eax - 10134f: 3d 00 02 00 00 cmp $0x200,%eax - 101354: 75 0a jne 101360 - cons.wpos = 0; - 101356: c7 05 a4 a0 11 00 00 movl $0x0,0x11a0a4 - 10135d: 00 00 00 - * characters into the circular console input buffer. - * */ -static void -cons_intr(int (*proc)(void)) { - int c; - while ((c = (*proc)()) != -1) { - 101360: 8b 45 08 mov 0x8(%ebp),%eax - 101363: ff d0 call *%eax - 101365: 89 45 f4 mov %eax,-0xc(%ebp) - 101368: 83 7d f4 ff cmpl $0xffffffff,-0xc(%ebp) - 10136c: 75 bf jne 10132d - if (cons.wpos == CONSBUFSIZE) { - cons.wpos = 0; - } - } - } -} - 10136e: 90 nop - 10136f: c9 leave - 101370: c3 ret - -00101371 : - -/* serial_proc_data - get data from serial port */ -static int -serial_proc_data(void) { - 101371: 55 push %ebp - 101372: 89 e5 mov %esp,%ebp - 101374: 83 ec 10 sub $0x10,%esp - 101377: 66 c7 45 f8 fd 03 movw $0x3fd,-0x8(%ebp) -static inline void invlpg(void *addr) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); - 10137d: 0f b7 45 f8 movzwl -0x8(%ebp),%eax - 101381: 89 c2 mov %eax,%edx - 101383: ec in (%dx),%al - 101384: 88 45 f7 mov %al,-0x9(%ebp) - return data; - 101387: 0f b6 45 f7 movzbl -0x9(%ebp),%eax - if (!(inb(COM1 + COM_LSR) & COM_LSR_DATA)) { - 10138b: 0f b6 c0 movzbl %al,%eax - 10138e: 83 e0 01 and $0x1,%eax - 101391: 85 c0 test %eax,%eax - 101393: 75 07 jne 10139c - return -1; - 101395: b8 ff ff ff ff mov $0xffffffff,%eax - 10139a: eb 2a jmp 1013c6 - 10139c: 66 c7 45 fa f8 03 movw $0x3f8,-0x6(%ebp) -static inline void invlpg(void *addr) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); - 1013a2: 0f b7 45 fa movzwl -0x6(%ebp),%eax - 1013a6: 89 c2 mov %eax,%edx - 1013a8: ec in (%dx),%al - 1013a9: 88 45 f6 mov %al,-0xa(%ebp) - return data; - 1013ac: 0f b6 45 f6 movzbl -0xa(%ebp),%eax - } - int c = inb(COM1 + COM_RX); - 1013b0: 0f b6 c0 movzbl %al,%eax - 1013b3: 89 45 fc mov %eax,-0x4(%ebp) - if (c == 127) { - 1013b6: 83 7d fc 7f cmpl $0x7f,-0x4(%ebp) - 1013ba: 75 07 jne 1013c3 - c = '\b'; - 1013bc: c7 45 fc 08 00 00 00 movl $0x8,-0x4(%ebp) - } - return c; - 1013c3: 8b 45 fc mov -0x4(%ebp),%eax -} - 1013c6: c9 leave - 1013c7: c3 ret - -001013c8 : - -/* serial_intr - try to feed input characters from serial port */ -void -serial_intr(void) { - 1013c8: 55 push %ebp - 1013c9: 89 e5 mov %esp,%ebp - 1013cb: 83 ec 08 sub $0x8,%esp - if (serial_exists) { - 1013ce: a1 88 9e 11 00 mov 0x119e88,%eax - 1013d3: 85 c0 test %eax,%eax - 1013d5: 74 10 je 1013e7 - cons_intr(serial_proc_data); - 1013d7: 83 ec 0c sub $0xc,%esp - 1013da: 68 71 13 10 00 push $0x101371 - 1013df: e8 41 ff ff ff call 101325 - 1013e4: 83 c4 10 add $0x10,%esp - } -} - 1013e7: 90 nop - 1013e8: c9 leave - 1013e9: c3 ret - -001013ea : - * - * The kbd_proc_data() function gets data from the keyboard. - * If we finish a character, return it, else 0. And return -1 if no data. - * */ -static int -kbd_proc_data(void) { - 1013ea: 55 push %ebp - 1013eb: 89 e5 mov %esp,%ebp - 1013ed: 83 ec 18 sub $0x18,%esp - 1013f0: 66 c7 45 ec 64 00 movw $0x64,-0x14(%ebp) -static inline void invlpg(void *addr) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); - 1013f6: 0f b7 45 ec movzwl -0x14(%ebp),%eax - 1013fa: 89 c2 mov %eax,%edx - 1013fc: ec in (%dx),%al - 1013fd: 88 45 eb mov %al,-0x15(%ebp) - return data; - 101400: 0f b6 45 eb movzbl -0x15(%ebp),%eax - int c; - uint8_t data; - static uint32_t shift; - - if ((inb(KBSTATP) & KBS_DIB) == 0) { - 101404: 0f b6 c0 movzbl %al,%eax - 101407: 83 e0 01 and $0x1,%eax - 10140a: 85 c0 test %eax,%eax - 10140c: 75 0a jne 101418 - return -1; - 10140e: b8 ff ff ff ff mov $0xffffffff,%eax - 101413: e9 5d 01 00 00 jmp 101575 - 101418: 66 c7 45 f0 60 00 movw $0x60,-0x10(%ebp) -static inline void invlpg(void *addr) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); - 10141e: 0f b7 45 f0 movzwl -0x10(%ebp),%eax - 101422: 89 c2 mov %eax,%edx - 101424: ec in (%dx),%al - 101425: 88 45 ea mov %al,-0x16(%ebp) - return data; - 101428: 0f b6 45 ea movzbl -0x16(%ebp),%eax - } - - data = inb(KBDATAP); - 10142c: 88 45 f3 mov %al,-0xd(%ebp) - - if (data == 0xE0) { - 10142f: 80 7d f3 e0 cmpb $0xe0,-0xd(%ebp) - 101433: 75 17 jne 10144c - // E0 escape character - shift |= E0ESC; - 101435: a1 a8 a0 11 00 mov 0x11a0a8,%eax - 10143a: 83 c8 40 or $0x40,%eax - 10143d: a3 a8 a0 11 00 mov %eax,0x11a0a8 - return 0; - 101442: b8 00 00 00 00 mov $0x0,%eax - 101447: e9 29 01 00 00 jmp 101575 - } else if (data & 0x80) { - 10144c: 0f b6 45 f3 movzbl -0xd(%ebp),%eax - 101450: 84 c0 test %al,%al - 101452: 79 47 jns 10149b - // Key released - data = (shift & E0ESC ? data : data & 0x7F); - 101454: a1 a8 a0 11 00 mov 0x11a0a8,%eax - 101459: 83 e0 40 and $0x40,%eax - 10145c: 85 c0 test %eax,%eax - 10145e: 75 09 jne 101469 - 101460: 0f b6 45 f3 movzbl -0xd(%ebp),%eax - 101464: 83 e0 7f and $0x7f,%eax - 101467: eb 04 jmp 10146d - 101469: 0f b6 45 f3 movzbl -0xd(%ebp),%eax - 10146d: 88 45 f3 mov %al,-0xd(%ebp) - shift &= ~(shiftcode[data] | E0ESC); - 101470: 0f b6 45 f3 movzbl -0xd(%ebp),%eax - 101474: 0f b6 80 60 90 11 00 movzbl 0x119060(%eax),%eax - 10147b: 83 c8 40 or $0x40,%eax - 10147e: 0f b6 c0 movzbl %al,%eax - 101481: f7 d0 not %eax - 101483: 89 c2 mov %eax,%edx - 101485: a1 a8 a0 11 00 mov 0x11a0a8,%eax - 10148a: 21 d0 and %edx,%eax - 10148c: a3 a8 a0 11 00 mov %eax,0x11a0a8 - return 0; - 101491: b8 00 00 00 00 mov $0x0,%eax - 101496: e9 da 00 00 00 jmp 101575 - } else if (shift & E0ESC) { - 10149b: a1 a8 a0 11 00 mov 0x11a0a8,%eax - 1014a0: 83 e0 40 and $0x40,%eax - 1014a3: 85 c0 test %eax,%eax - 1014a5: 74 11 je 1014b8 - // Last character was an E0 escape; or with 0x80 - data |= 0x80; - 1014a7: 80 4d f3 80 orb $0x80,-0xd(%ebp) - shift &= ~E0ESC; - 1014ab: a1 a8 a0 11 00 mov 0x11a0a8,%eax - 1014b0: 83 e0 bf and $0xffffffbf,%eax - 1014b3: a3 a8 a0 11 00 mov %eax,0x11a0a8 - } - - shift |= shiftcode[data]; - 1014b8: 0f b6 45 f3 movzbl -0xd(%ebp),%eax - 1014bc: 0f b6 80 60 90 11 00 movzbl 0x119060(%eax),%eax - 1014c3: 0f b6 d0 movzbl %al,%edx - 1014c6: a1 a8 a0 11 00 mov 0x11a0a8,%eax - 1014cb: 09 d0 or %edx,%eax - 1014cd: a3 a8 a0 11 00 mov %eax,0x11a0a8 - shift ^= togglecode[data]; - 1014d2: 0f b6 45 f3 movzbl -0xd(%ebp),%eax - 1014d6: 0f b6 80 60 91 11 00 movzbl 0x119160(%eax),%eax - 1014dd: 0f b6 d0 movzbl %al,%edx - 1014e0: a1 a8 a0 11 00 mov 0x11a0a8,%eax - 1014e5: 31 d0 xor %edx,%eax - 1014e7: a3 a8 a0 11 00 mov %eax,0x11a0a8 - - c = charcode[shift & (CTL | SHIFT)][data]; - 1014ec: a1 a8 a0 11 00 mov 0x11a0a8,%eax - 1014f1: 83 e0 03 and $0x3,%eax - 1014f4: 8b 14 85 60 95 11 00 mov 0x119560(,%eax,4),%edx - 1014fb: 0f b6 45 f3 movzbl -0xd(%ebp),%eax - 1014ff: 01 d0 add %edx,%eax - 101501: 0f b6 00 movzbl (%eax),%eax - 101504: 0f b6 c0 movzbl %al,%eax - 101507: 89 45 f4 mov %eax,-0xc(%ebp) - if (shift & CAPSLOCK) { - 10150a: a1 a8 a0 11 00 mov 0x11a0a8,%eax - 10150f: 83 e0 08 and $0x8,%eax - 101512: 85 c0 test %eax,%eax - 101514: 74 22 je 101538 - if ('a' <= c && c <= 'z') - 101516: 83 7d f4 60 cmpl $0x60,-0xc(%ebp) - 10151a: 7e 0c jle 101528 - 10151c: 83 7d f4 7a cmpl $0x7a,-0xc(%ebp) - 101520: 7f 06 jg 101528 - c += 'A' - 'a'; - 101522: 83 6d f4 20 subl $0x20,-0xc(%ebp) - 101526: eb 10 jmp 101538 - else if ('A' <= c && c <= 'Z') - 101528: 83 7d f4 40 cmpl $0x40,-0xc(%ebp) - 10152c: 7e 0a jle 101538 - 10152e: 83 7d f4 5a cmpl $0x5a,-0xc(%ebp) - 101532: 7f 04 jg 101538 - c += 'a' - 'A'; - 101534: 83 45 f4 20 addl $0x20,-0xc(%ebp) - } - - // Process special keys - // Ctrl-Alt-Del: reboot - if (!(~shift & (CTL | ALT)) && c == KEY_DEL) { - 101538: a1 a8 a0 11 00 mov 0x11a0a8,%eax - 10153d: f7 d0 not %eax - 10153f: 83 e0 06 and $0x6,%eax - 101542: 85 c0 test %eax,%eax - 101544: 75 2c jne 101572 - 101546: 81 7d f4 e9 00 00 00 cmpl $0xe9,-0xc(%ebp) - 10154d: 75 23 jne 101572 - cprintf("Rebooting!\n"); - 10154f: 83 ec 0c sub $0xc,%esp - 101552: 68 1d 6c 10 00 push $0x106c1d - 101557: e8 0b ed ff ff call 100267 - 10155c: 83 c4 10 add $0x10,%esp - 10155f: 66 c7 45 ee 92 00 movw $0x92,-0x12(%ebp) - 101565: c6 45 e9 03 movb $0x3,-0x17(%ebp) - : "memory", "cc"); -} - -static inline void -outb(uint16_t port, uint8_t data) { - asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); - 101569: 0f b6 45 e9 movzbl -0x17(%ebp),%eax - 10156d: 0f b7 55 ee movzwl -0x12(%ebp),%edx - 101571: ee out %al,(%dx) - outb(0x92, 0x3); // courtesy of Chris Frost - } - return c; - 101572: 8b 45 f4 mov -0xc(%ebp),%eax -} - 101575: c9 leave - 101576: c3 ret - -00101577 : - -/* kbd_intr - try to feed input characters from keyboard */ -static void -kbd_intr(void) { - 101577: 55 push %ebp - 101578: 89 e5 mov %esp,%ebp - 10157a: 83 ec 08 sub $0x8,%esp - cons_intr(kbd_proc_data); - 10157d: 83 ec 0c sub $0xc,%esp - 101580: 68 ea 13 10 00 push $0x1013ea - 101585: e8 9b fd ff ff call 101325 - 10158a: 83 c4 10 add $0x10,%esp -} - 10158d: 90 nop - 10158e: c9 leave - 10158f: c3 ret - -00101590 : - -static void -kbd_init(void) { - 101590: 55 push %ebp - 101591: 89 e5 mov %esp,%ebp - 101593: 83 ec 08 sub $0x8,%esp - // drain the kbd buffer - kbd_intr(); - 101596: e8 dc ff ff ff call 101577 - pic_enable(IRQ_KBD); - 10159b: 83 ec 0c sub $0xc,%esp - 10159e: 6a 01 push $0x1 - 1015a0: e8 4b 01 00 00 call 1016f0 - 1015a5: 83 c4 10 add $0x10,%esp -} - 1015a8: 90 nop - 1015a9: c9 leave - 1015aa: c3 ret - -001015ab : - -/* cons_init - initializes the console devices */ -void -cons_init(void) { - 1015ab: 55 push %ebp - 1015ac: 89 e5 mov %esp,%ebp - 1015ae: 83 ec 08 sub $0x8,%esp - cga_init(); - 1015b1: e8 8c f8 ff ff call 100e42 - serial_init(); - 1015b6: e8 6e f9 ff ff call 100f29 - kbd_init(); - 1015bb: e8 d0 ff ff ff call 101590 - if (!serial_exists) { - 1015c0: a1 88 9e 11 00 mov 0x119e88,%eax - 1015c5: 85 c0 test %eax,%eax - 1015c7: 75 10 jne 1015d9 - cprintf("serial port does not exist!!\n"); - 1015c9: 83 ec 0c sub $0xc,%esp - 1015cc: 68 29 6c 10 00 push $0x106c29 - 1015d1: e8 91 ec ff ff call 100267 - 1015d6: 83 c4 10 add $0x10,%esp - } -} - 1015d9: 90 nop - 1015da: c9 leave - 1015db: c3 ret - -001015dc : - -/* cons_putc - print a single character @c to console devices */ -void -cons_putc(int c) { - 1015dc: 55 push %ebp - 1015dd: 89 e5 mov %esp,%ebp - 1015df: 83 ec 18 sub $0x18,%esp - bool intr_flag; - local_intr_save(intr_flag); - 1015e2: e8 d4 f7 ff ff call 100dbb <__intr_save> - 1015e7: 89 45 f4 mov %eax,-0xc(%ebp) - { - lpt_putc(c); - 1015ea: 83 ec 0c sub $0xc,%esp - 1015ed: ff 75 08 pushl 0x8(%ebp) - 1015f0: e8 93 fa ff ff call 101088 - 1015f5: 83 c4 10 add $0x10,%esp - cga_putc(c); - 1015f8: 83 ec 0c sub $0xc,%esp - 1015fb: ff 75 08 pushl 0x8(%ebp) - 1015fe: e8 bc fa ff ff call 1010bf - 101603: 83 c4 10 add $0x10,%esp - serial_putc(c); - 101606: 83 ec 0c sub $0xc,%esp - 101609: ff 75 08 pushl 0x8(%ebp) - 10160c: e8 dd fc ff ff call 1012ee - 101611: 83 c4 10 add $0x10,%esp - } - local_intr_restore(intr_flag); - 101614: 83 ec 0c sub $0xc,%esp - 101617: ff 75 f4 pushl -0xc(%ebp) - 10161a: e8 c6 f7 ff ff call 100de5 <__intr_restore> - 10161f: 83 c4 10 add $0x10,%esp -} - 101622: 90 nop - 101623: c9 leave - 101624: c3 ret - -00101625 : -/* * - * cons_getc - return the next input character from console, - * or 0 if none waiting. - * */ -int -cons_getc(void) { - 101625: 55 push %ebp - 101626: 89 e5 mov %esp,%ebp - 101628: 83 ec 18 sub $0x18,%esp - int c = 0; - 10162b: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - bool intr_flag; - local_intr_save(intr_flag); - 101632: e8 84 f7 ff ff call 100dbb <__intr_save> - 101637: 89 45 f0 mov %eax,-0x10(%ebp) - { - // poll for any pending input characters, - // so that this function works even when interrupts are disabled - // (e.g., when called from the kernel monitor). - serial_intr(); - 10163a: e8 89 fd ff ff call 1013c8 - kbd_intr(); - 10163f: e8 33 ff ff ff call 101577 - - // grab the next character from the input buffer. - if (cons.rpos != cons.wpos) { - 101644: 8b 15 a0 a0 11 00 mov 0x11a0a0,%edx - 10164a: a1 a4 a0 11 00 mov 0x11a0a4,%eax - 10164f: 39 c2 cmp %eax,%edx - 101651: 74 31 je 101684 - c = cons.buf[cons.rpos ++]; - 101653: a1 a0 a0 11 00 mov 0x11a0a0,%eax - 101658: 8d 50 01 lea 0x1(%eax),%edx - 10165b: 89 15 a0 a0 11 00 mov %edx,0x11a0a0 - 101661: 0f b6 80 a0 9e 11 00 movzbl 0x119ea0(%eax),%eax - 101668: 0f b6 c0 movzbl %al,%eax - 10166b: 89 45 f4 mov %eax,-0xc(%ebp) - if (cons.rpos == CONSBUFSIZE) { - 10166e: a1 a0 a0 11 00 mov 0x11a0a0,%eax - 101673: 3d 00 02 00 00 cmp $0x200,%eax - 101678: 75 0a jne 101684 - cons.rpos = 0; - 10167a: c7 05 a0 a0 11 00 00 movl $0x0,0x11a0a0 - 101681: 00 00 00 - } - } - } - local_intr_restore(intr_flag); - 101684: 83 ec 0c sub $0xc,%esp - 101687: ff 75 f0 pushl -0x10(%ebp) - 10168a: e8 56 f7 ff ff call 100de5 <__intr_restore> - 10168f: 83 c4 10 add $0x10,%esp - return c; - 101692: 8b 45 f4 mov -0xc(%ebp),%eax -} - 101695: c9 leave - 101696: c3 ret - -00101697 : -// Initial IRQ mask has interrupt 2 enabled (for slave 8259A). -static uint16_t irq_mask = 0xFFFF & ~(1 << IRQ_SLAVE); -static bool did_init = 0; - -static void -pic_setmask(uint16_t mask) { - 101697: 55 push %ebp - 101698: 89 e5 mov %esp,%ebp - 10169a: 83 ec 14 sub $0x14,%esp - 10169d: 8b 45 08 mov 0x8(%ebp),%eax - 1016a0: 66 89 45 ec mov %ax,-0x14(%ebp) - irq_mask = mask; - 1016a4: 0f b7 45 ec movzwl -0x14(%ebp),%eax - 1016a8: 66 a3 70 95 11 00 mov %ax,0x119570 - if (did_init) { - 1016ae: a1 ac a0 11 00 mov 0x11a0ac,%eax - 1016b3: 85 c0 test %eax,%eax - 1016b5: 74 36 je 1016ed - outb(IO_PIC1 + 1, mask); - 1016b7: 0f b7 45 ec movzwl -0x14(%ebp),%eax - 1016bb: 0f b6 c0 movzbl %al,%eax - 1016be: 66 c7 45 fe 21 00 movw $0x21,-0x2(%ebp) - 1016c4: 88 45 fa mov %al,-0x6(%ebp) - 1016c7: 0f b6 45 fa movzbl -0x6(%ebp),%eax - 1016cb: 0f b7 55 fe movzwl -0x2(%ebp),%edx - 1016cf: ee out %al,(%dx) - outb(IO_PIC2 + 1, mask >> 8); - 1016d0: 0f b7 45 ec movzwl -0x14(%ebp),%eax - 1016d4: 66 c1 e8 08 shr $0x8,%ax - 1016d8: 0f b6 c0 movzbl %al,%eax - 1016db: 66 c7 45 fc a1 00 movw $0xa1,-0x4(%ebp) - 1016e1: 88 45 fb mov %al,-0x5(%ebp) - 1016e4: 0f b6 45 fb movzbl -0x5(%ebp),%eax - 1016e8: 0f b7 55 fc movzwl -0x4(%ebp),%edx - 1016ec: ee out %al,(%dx) - } -} - 1016ed: 90 nop - 1016ee: c9 leave - 1016ef: c3 ret - -001016f0 : - -void -pic_enable(unsigned int irq) { - 1016f0: 55 push %ebp - 1016f1: 89 e5 mov %esp,%ebp - pic_setmask(irq_mask & ~(1 << irq)); - 1016f3: 8b 45 08 mov 0x8(%ebp),%eax - 1016f6: ba 01 00 00 00 mov $0x1,%edx - 1016fb: 89 c1 mov %eax,%ecx - 1016fd: d3 e2 shl %cl,%edx - 1016ff: 89 d0 mov %edx,%eax - 101701: f7 d0 not %eax - 101703: 89 c2 mov %eax,%edx - 101705: 0f b7 05 70 95 11 00 movzwl 0x119570,%eax - 10170c: 21 d0 and %edx,%eax - 10170e: 0f b7 c0 movzwl %ax,%eax - 101711: 50 push %eax - 101712: e8 80 ff ff ff call 101697 - 101717: 83 c4 04 add $0x4,%esp -} - 10171a: 90 nop - 10171b: c9 leave - 10171c: c3 ret - -0010171d : - -/* pic_init - initialize the 8259A interrupt controllers */ -void -pic_init(void) { - 10171d: 55 push %ebp - 10171e: 89 e5 mov %esp,%ebp - 101720: 83 ec 30 sub $0x30,%esp - did_init = 1; - 101723: c7 05 ac a0 11 00 01 movl $0x1,0x11a0ac - 10172a: 00 00 00 - 10172d: 66 c7 45 fe 21 00 movw $0x21,-0x2(%ebp) - 101733: c6 45 d6 ff movb $0xff,-0x2a(%ebp) - 101737: 0f b6 45 d6 movzbl -0x2a(%ebp),%eax - 10173b: 0f b7 55 fe movzwl -0x2(%ebp),%edx - 10173f: ee out %al,(%dx) - 101740: 66 c7 45 fc a1 00 movw $0xa1,-0x4(%ebp) - 101746: c6 45 d7 ff movb $0xff,-0x29(%ebp) - 10174a: 0f b6 45 d7 movzbl -0x29(%ebp),%eax - 10174e: 0f b7 55 fc movzwl -0x4(%ebp),%edx - 101752: ee out %al,(%dx) - 101753: 66 c7 45 fa 20 00 movw $0x20,-0x6(%ebp) - 101759: c6 45 d8 11 movb $0x11,-0x28(%ebp) - 10175d: 0f b6 45 d8 movzbl -0x28(%ebp),%eax - 101761: 0f b7 55 fa movzwl -0x6(%ebp),%edx - 101765: ee out %al,(%dx) - 101766: 66 c7 45 f8 21 00 movw $0x21,-0x8(%ebp) - 10176c: c6 45 d9 20 movb $0x20,-0x27(%ebp) - 101770: 0f b6 45 d9 movzbl -0x27(%ebp),%eax - 101774: 0f b7 55 f8 movzwl -0x8(%ebp),%edx - 101778: ee out %al,(%dx) - 101779: 66 c7 45 f6 21 00 movw $0x21,-0xa(%ebp) - 10177f: c6 45 da 04 movb $0x4,-0x26(%ebp) - 101783: 0f b6 45 da movzbl -0x26(%ebp),%eax - 101787: 0f b7 55 f6 movzwl -0xa(%ebp),%edx - 10178b: ee out %al,(%dx) - 10178c: 66 c7 45 f4 21 00 movw $0x21,-0xc(%ebp) - 101792: c6 45 db 03 movb $0x3,-0x25(%ebp) - 101796: 0f b6 45 db movzbl -0x25(%ebp),%eax - 10179a: 0f b7 55 f4 movzwl -0xc(%ebp),%edx - 10179e: ee out %al,(%dx) - 10179f: 66 c7 45 f2 a0 00 movw $0xa0,-0xe(%ebp) - 1017a5: c6 45 dc 11 movb $0x11,-0x24(%ebp) - 1017a9: 0f b6 45 dc movzbl -0x24(%ebp),%eax - 1017ad: 0f b7 55 f2 movzwl -0xe(%ebp),%edx - 1017b1: ee out %al,(%dx) - 1017b2: 66 c7 45 f0 a1 00 movw $0xa1,-0x10(%ebp) - 1017b8: c6 45 dd 28 movb $0x28,-0x23(%ebp) - 1017bc: 0f b6 45 dd movzbl -0x23(%ebp),%eax - 1017c0: 0f b7 55 f0 movzwl -0x10(%ebp),%edx - 1017c4: ee out %al,(%dx) - 1017c5: 66 c7 45 ee a1 00 movw $0xa1,-0x12(%ebp) - 1017cb: c6 45 de 02 movb $0x2,-0x22(%ebp) - 1017cf: 0f b6 45 de movzbl -0x22(%ebp),%eax - 1017d3: 0f b7 55 ee movzwl -0x12(%ebp),%edx - 1017d7: ee out %al,(%dx) - 1017d8: 66 c7 45 ec a1 00 movw $0xa1,-0x14(%ebp) - 1017de: c6 45 df 03 movb $0x3,-0x21(%ebp) - 1017e2: 0f b6 45 df movzbl -0x21(%ebp),%eax - 1017e6: 0f b7 55 ec movzwl -0x14(%ebp),%edx - 1017ea: ee out %al,(%dx) - 1017eb: 66 c7 45 ea 20 00 movw $0x20,-0x16(%ebp) - 1017f1: c6 45 e0 68 movb $0x68,-0x20(%ebp) - 1017f5: 0f b6 45 e0 movzbl -0x20(%ebp),%eax - 1017f9: 0f b7 55 ea movzwl -0x16(%ebp),%edx - 1017fd: ee out %al,(%dx) - 1017fe: 66 c7 45 e8 20 00 movw $0x20,-0x18(%ebp) - 101804: c6 45 e1 0a movb $0xa,-0x1f(%ebp) - 101808: 0f b6 45 e1 movzbl -0x1f(%ebp),%eax - 10180c: 0f b7 55 e8 movzwl -0x18(%ebp),%edx - 101810: ee out %al,(%dx) - 101811: 66 c7 45 e6 a0 00 movw $0xa0,-0x1a(%ebp) - 101817: c6 45 e2 68 movb $0x68,-0x1e(%ebp) - 10181b: 0f b6 45 e2 movzbl -0x1e(%ebp),%eax - 10181f: 0f b7 55 e6 movzwl -0x1a(%ebp),%edx - 101823: ee out %al,(%dx) - 101824: 66 c7 45 e4 a0 00 movw $0xa0,-0x1c(%ebp) - 10182a: c6 45 e3 0a movb $0xa,-0x1d(%ebp) - 10182e: 0f b6 45 e3 movzbl -0x1d(%ebp),%eax - 101832: 0f b7 55 e4 movzwl -0x1c(%ebp),%edx - 101836: ee out %al,(%dx) - outb(IO_PIC1, 0x0a); // read IRR by default - - outb(IO_PIC2, 0x68); // OCW3 - outb(IO_PIC2, 0x0a); // OCW3 - - if (irq_mask != 0xFFFF) { - 101837: 0f b7 05 70 95 11 00 movzwl 0x119570,%eax - 10183e: 66 83 f8 ff cmp $0xffff,%ax - 101842: 74 13 je 101857 - pic_setmask(irq_mask); - 101844: 0f b7 05 70 95 11 00 movzwl 0x119570,%eax - 10184b: 0f b7 c0 movzwl %ax,%eax - 10184e: 50 push %eax - 10184f: e8 43 fe ff ff call 101697 - 101854: 83 c4 04 add $0x4,%esp - } -} - 101857: 90 nop - 101858: c9 leave - 101859: c3 ret - -0010185a : -#include -#include - -/* intr_enable - enable irq interrupt */ -void -intr_enable(void) { - 10185a: 55 push %ebp - 10185b: 89 e5 mov %esp,%ebp - asm volatile ("lidt (%0)" :: "r" (pd) : "memory"); -} - -static inline void -sti(void) { - asm volatile ("sti"); - 10185d: fb sti - sti(); -} - 10185e: 90 nop - 10185f: 5d pop %ebp - 101860: c3 ret - -00101861 : - -/* intr_disable - disable irq interrupt */ -void -intr_disable(void) { - 101861: 55 push %ebp - 101862: 89 e5 mov %esp,%ebp -} - -static inline void -cli(void) { - asm volatile ("cli" ::: "memory"); - 101864: fa cli - cli(); -} - 101865: 90 nop - 101866: 5d pop %ebp - 101867: c3 ret - -00101868 : -#include -#include - -#define TICK_NUM 100 - -static void print_ticks() { - 101868: 55 push %ebp - 101869: 89 e5 mov %esp,%ebp - 10186b: 83 ec 08 sub $0x8,%esp - cprintf("%d ticks\n",TICK_NUM); - 10186e: 83 ec 08 sub $0x8,%esp - 101871: 6a 64 push $0x64 - 101873: 68 60 6c 10 00 push $0x106c60 - 101878: e8 ea e9 ff ff call 100267 - 10187d: 83 c4 10 add $0x10,%esp -#ifdef DEBUG_GRADE - cprintf("End of Test.\n"); - 101880: 83 ec 0c sub $0xc,%esp - 101883: 68 6a 6c 10 00 push $0x106c6a - 101888: e8 da e9 ff ff call 100267 - 10188d: 83 c4 10 add $0x10,%esp - panic("EOT: kernel seems ok."); - 101890: 83 ec 04 sub $0x4,%esp - 101893: 68 78 6c 10 00 push $0x106c78 - 101898: 6a 12 push $0x12 - 10189a: 68 8e 6c 10 00 push $0x106c8e - 10189f: e8 29 eb ff ff call 1003cd <__panic> - -001018a4 : - sizeof(idt) - 1, (uintptr_t)idt -}; - -/* idt_init - initialize IDT to each of the entry points in kern/trap/vectors.S */ -void -idt_init(void) { - 1018a4: 55 push %ebp - 1018a5: 89 e5 mov %esp,%ebp - 1018a7: 83 ec 10 sub $0x10,%esp - * (3) After setup the contents of IDT, you will let CPU know where is the IDT by using 'lidt' instruction. - * You don't know the meaning of this instruction? just google it! and check the libs/x86.h to know more. - * Notice: the argument of lidt is idt_pd. try to find it! - */ - extern uintptr_t __vectors[]; - for (int i = 0; i < 256; ++ i) { - 1018aa: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp) - 1018b1: e9 97 01 00 00 jmp 101a4d -// cprintf("vectors %d: 0x%08x\n", i, __vectors[i]); - if (i == T_SYSCALL || i == T_SWITCH_TOK) { - 1018b6: 81 7d fc 80 00 00 00 cmpl $0x80,-0x4(%ebp) - 1018bd: 74 0a je 1018c9 - 1018bf: 83 7d fc 79 cmpl $0x79,-0x4(%ebp) - 1018c3: 0f 85 c1 00 00 00 jne 10198a - SETGATE(idt[i], 1, KERNEL_CS, __vectors[i], DPL_USER); - 1018c9: 8b 45 fc mov -0x4(%ebp),%eax - 1018cc: 8b 04 85 00 96 11 00 mov 0x119600(,%eax,4),%eax - 1018d3: 89 c2 mov %eax,%edx - 1018d5: 8b 45 fc mov -0x4(%ebp),%eax - 1018d8: 66 89 14 c5 c0 a0 11 mov %dx,0x11a0c0(,%eax,8) - 1018df: 00 - 1018e0: 8b 45 fc mov -0x4(%ebp),%eax - 1018e3: 66 c7 04 c5 c2 a0 11 movw $0x8,0x11a0c2(,%eax,8) - 1018ea: 00 08 00 - 1018ed: 8b 45 fc mov -0x4(%ebp),%eax - 1018f0: 0f b6 14 c5 c4 a0 11 movzbl 0x11a0c4(,%eax,8),%edx - 1018f7: 00 - 1018f8: 83 e2 e0 and $0xffffffe0,%edx - 1018fb: 88 14 c5 c4 a0 11 00 mov %dl,0x11a0c4(,%eax,8) - 101902: 8b 45 fc mov -0x4(%ebp),%eax - 101905: 0f b6 14 c5 c4 a0 11 movzbl 0x11a0c4(,%eax,8),%edx - 10190c: 00 - 10190d: 83 e2 1f and $0x1f,%edx - 101910: 88 14 c5 c4 a0 11 00 mov %dl,0x11a0c4(,%eax,8) - 101917: 8b 45 fc mov -0x4(%ebp),%eax - 10191a: 0f b6 14 c5 c5 a0 11 movzbl 0x11a0c5(,%eax,8),%edx - 101921: 00 - 101922: 83 ca 0f or $0xf,%edx - 101925: 88 14 c5 c5 a0 11 00 mov %dl,0x11a0c5(,%eax,8) - 10192c: 8b 45 fc mov -0x4(%ebp),%eax - 10192f: 0f b6 14 c5 c5 a0 11 movzbl 0x11a0c5(,%eax,8),%edx - 101936: 00 - 101937: 83 e2 ef and $0xffffffef,%edx - 10193a: 88 14 c5 c5 a0 11 00 mov %dl,0x11a0c5(,%eax,8) - 101941: 8b 45 fc mov -0x4(%ebp),%eax - 101944: 0f b6 14 c5 c5 a0 11 movzbl 0x11a0c5(,%eax,8),%edx - 10194b: 00 - 10194c: 83 ca 60 or $0x60,%edx - 10194f: 88 14 c5 c5 a0 11 00 mov %dl,0x11a0c5(,%eax,8) - 101956: 8b 45 fc mov -0x4(%ebp),%eax - 101959: 0f b6 14 c5 c5 a0 11 movzbl 0x11a0c5(,%eax,8),%edx - 101960: 00 - 101961: 83 ca 80 or $0xffffff80,%edx - 101964: 88 14 c5 c5 a0 11 00 mov %dl,0x11a0c5(,%eax,8) - 10196b: 8b 45 fc mov -0x4(%ebp),%eax - 10196e: 8b 04 85 00 96 11 00 mov 0x119600(,%eax,4),%eax - 101975: c1 e8 10 shr $0x10,%eax - 101978: 89 c2 mov %eax,%edx - 10197a: 8b 45 fc mov -0x4(%ebp),%eax - 10197d: 66 89 14 c5 c6 a0 11 mov %dx,0x11a0c6(,%eax,8) - 101984: 00 - 101985: e9 bf 00 00 00 jmp 101a49 - } else { - SETGATE(idt[i], 0, KERNEL_CS, __vectors[i], DPL_KERNEL); - 10198a: 8b 45 fc mov -0x4(%ebp),%eax - 10198d: 8b 04 85 00 96 11 00 mov 0x119600(,%eax,4),%eax - 101994: 89 c2 mov %eax,%edx - 101996: 8b 45 fc mov -0x4(%ebp),%eax - 101999: 66 89 14 c5 c0 a0 11 mov %dx,0x11a0c0(,%eax,8) - 1019a0: 00 - 1019a1: 8b 45 fc mov -0x4(%ebp),%eax - 1019a4: 66 c7 04 c5 c2 a0 11 movw $0x8,0x11a0c2(,%eax,8) - 1019ab: 00 08 00 - 1019ae: 8b 45 fc mov -0x4(%ebp),%eax - 1019b1: 0f b6 14 c5 c4 a0 11 movzbl 0x11a0c4(,%eax,8),%edx - 1019b8: 00 - 1019b9: 83 e2 e0 and $0xffffffe0,%edx - 1019bc: 88 14 c5 c4 a0 11 00 mov %dl,0x11a0c4(,%eax,8) - 1019c3: 8b 45 fc mov -0x4(%ebp),%eax - 1019c6: 0f b6 14 c5 c4 a0 11 movzbl 0x11a0c4(,%eax,8),%edx - 1019cd: 00 - 1019ce: 83 e2 1f and $0x1f,%edx - 1019d1: 88 14 c5 c4 a0 11 00 mov %dl,0x11a0c4(,%eax,8) - 1019d8: 8b 45 fc mov -0x4(%ebp),%eax - 1019db: 0f b6 14 c5 c5 a0 11 movzbl 0x11a0c5(,%eax,8),%edx - 1019e2: 00 - 1019e3: 83 e2 f0 and $0xfffffff0,%edx - 1019e6: 83 ca 0e or $0xe,%edx - 1019e9: 88 14 c5 c5 a0 11 00 mov %dl,0x11a0c5(,%eax,8) - 1019f0: 8b 45 fc mov -0x4(%ebp),%eax - 1019f3: 0f b6 14 c5 c5 a0 11 movzbl 0x11a0c5(,%eax,8),%edx - 1019fa: 00 - 1019fb: 83 e2 ef and $0xffffffef,%edx - 1019fe: 88 14 c5 c5 a0 11 00 mov %dl,0x11a0c5(,%eax,8) - 101a05: 8b 45 fc mov -0x4(%ebp),%eax - 101a08: 0f b6 14 c5 c5 a0 11 movzbl 0x11a0c5(,%eax,8),%edx - 101a0f: 00 - 101a10: 83 e2 9f and $0xffffff9f,%edx - 101a13: 88 14 c5 c5 a0 11 00 mov %dl,0x11a0c5(,%eax,8) - 101a1a: 8b 45 fc mov -0x4(%ebp),%eax - 101a1d: 0f b6 14 c5 c5 a0 11 movzbl 0x11a0c5(,%eax,8),%edx - 101a24: 00 - 101a25: 83 ca 80 or $0xffffff80,%edx - 101a28: 88 14 c5 c5 a0 11 00 mov %dl,0x11a0c5(,%eax,8) - 101a2f: 8b 45 fc mov -0x4(%ebp),%eax - 101a32: 8b 04 85 00 96 11 00 mov 0x119600(,%eax,4),%eax - 101a39: c1 e8 10 shr $0x10,%eax - 101a3c: 89 c2 mov %eax,%edx - 101a3e: 8b 45 fc mov -0x4(%ebp),%eax - 101a41: 66 89 14 c5 c6 a0 11 mov %dx,0x11a0c6(,%eax,8) - 101a48: 00 - * (3) After setup the contents of IDT, you will let CPU know where is the IDT by using 'lidt' instruction. - * You don't know the meaning of this instruction? just google it! and check the libs/x86.h to know more. - * Notice: the argument of lidt is idt_pd. try to find it! - */ - extern uintptr_t __vectors[]; - for (int i = 0; i < 256; ++ i) { - 101a49: 83 45 fc 01 addl $0x1,-0x4(%ebp) - 101a4d: 81 7d fc ff 00 00 00 cmpl $0xff,-0x4(%ebp) - 101a54: 0f 8e 5c fe ff ff jle 1018b6 - 101a5a: c7 45 f8 80 95 11 00 movl $0x119580,-0x8(%ebp) - } -} - -static inline void -lidt(struct pseudodesc *pd) { - asm volatile ("lidt (%0)" :: "r" (pd) : "memory"); - 101a61: 8b 45 f8 mov -0x8(%ebp),%eax - 101a64: 0f 01 18 lidtl (%eax) - } else { - SETGATE(idt[i], 0, KERNEL_CS, __vectors[i], DPL_KERNEL); - } - } - lidt(&idt_pd); -} - 101a67: 90 nop - 101a68: c9 leave - 101a69: c3 ret - -00101a6a : - -static const char * -trapname(int trapno) { - 101a6a: 55 push %ebp - 101a6b: 89 e5 mov %esp,%ebp - "Alignment Check", - "Machine-Check", - "SIMD Floating-Point Exception" - }; - - if (trapno < sizeof(excnames)/sizeof(const char * const)) { - 101a6d: 8b 45 08 mov 0x8(%ebp),%eax - 101a70: 83 f8 13 cmp $0x13,%eax - 101a73: 77 0c ja 101a81 - return excnames[trapno]; - 101a75: 8b 45 08 mov 0x8(%ebp),%eax - 101a78: 8b 04 85 00 70 10 00 mov 0x107000(,%eax,4),%eax - 101a7f: eb 18 jmp 101a99 - } - if (trapno >= IRQ_OFFSET && trapno < IRQ_OFFSET + 16) { - 101a81: 83 7d 08 1f cmpl $0x1f,0x8(%ebp) - 101a85: 7e 0d jle 101a94 - 101a87: 83 7d 08 2f cmpl $0x2f,0x8(%ebp) - 101a8b: 7f 07 jg 101a94 - return "Hardware Interrupt"; - 101a8d: b8 9f 6c 10 00 mov $0x106c9f,%eax - 101a92: eb 05 jmp 101a99 - } - return "(unknown trap)"; - 101a94: b8 b2 6c 10 00 mov $0x106cb2,%eax -} - 101a99: 5d pop %ebp - 101a9a: c3 ret - -00101a9b : - -/* trap_in_kernel - test if trap happened in kernel */ -bool -trap_in_kernel(struct trapframe *tf) { - 101a9b: 55 push %ebp - 101a9c: 89 e5 mov %esp,%ebp - return (tf->tf_cs == (uint16_t)KERNEL_CS); - 101a9e: 8b 45 08 mov 0x8(%ebp),%eax - 101aa1: 0f b7 40 3c movzwl 0x3c(%eax),%eax - 101aa5: 66 83 f8 08 cmp $0x8,%ax - 101aa9: 0f 94 c0 sete %al - 101aac: 0f b6 c0 movzbl %al,%eax -} - 101aaf: 5d pop %ebp - 101ab0: c3 ret - -00101ab1 : - "TF", "IF", "DF", "OF", NULL, NULL, "NT", NULL, - "RF", "VM", "AC", "VIF", "VIP", "ID", NULL, NULL, -}; - -void -print_trapframe(struct trapframe *tf) { - 101ab1: 55 push %ebp - 101ab2: 89 e5 mov %esp,%ebp - 101ab4: 83 ec 18 sub $0x18,%esp - cprintf("trapframe at %p\n", tf); - 101ab7: 83 ec 08 sub $0x8,%esp - 101aba: ff 75 08 pushl 0x8(%ebp) - 101abd: 68 f3 6c 10 00 push $0x106cf3 - 101ac2: e8 a0 e7 ff ff call 100267 - 101ac7: 83 c4 10 add $0x10,%esp - print_regs(&tf->tf_regs); - 101aca: 8b 45 08 mov 0x8(%ebp),%eax - 101acd: 83 ec 0c sub $0xc,%esp - 101ad0: 50 push %eax - 101ad1: e8 b8 01 00 00 call 101c8e - 101ad6: 83 c4 10 add $0x10,%esp - cprintf(" ds 0x----%04x\n", tf->tf_ds); - 101ad9: 8b 45 08 mov 0x8(%ebp),%eax - 101adc: 0f b7 40 2c movzwl 0x2c(%eax),%eax - 101ae0: 0f b7 c0 movzwl %ax,%eax - 101ae3: 83 ec 08 sub $0x8,%esp - 101ae6: 50 push %eax - 101ae7: 68 04 6d 10 00 push $0x106d04 - 101aec: e8 76 e7 ff ff call 100267 - 101af1: 83 c4 10 add $0x10,%esp - cprintf(" es 0x----%04x\n", tf->tf_es); - 101af4: 8b 45 08 mov 0x8(%ebp),%eax - 101af7: 0f b7 40 28 movzwl 0x28(%eax),%eax - 101afb: 0f b7 c0 movzwl %ax,%eax - 101afe: 83 ec 08 sub $0x8,%esp - 101b01: 50 push %eax - 101b02: 68 17 6d 10 00 push $0x106d17 - 101b07: e8 5b e7 ff ff call 100267 - 101b0c: 83 c4 10 add $0x10,%esp - cprintf(" fs 0x----%04x\n", tf->tf_fs); - 101b0f: 8b 45 08 mov 0x8(%ebp),%eax - 101b12: 0f b7 40 24 movzwl 0x24(%eax),%eax - 101b16: 0f b7 c0 movzwl %ax,%eax - 101b19: 83 ec 08 sub $0x8,%esp - 101b1c: 50 push %eax - 101b1d: 68 2a 6d 10 00 push $0x106d2a - 101b22: e8 40 e7 ff ff call 100267 - 101b27: 83 c4 10 add $0x10,%esp - cprintf(" gs 0x----%04x\n", tf->tf_gs); - 101b2a: 8b 45 08 mov 0x8(%ebp),%eax - 101b2d: 0f b7 40 20 movzwl 0x20(%eax),%eax - 101b31: 0f b7 c0 movzwl %ax,%eax - 101b34: 83 ec 08 sub $0x8,%esp - 101b37: 50 push %eax - 101b38: 68 3d 6d 10 00 push $0x106d3d - 101b3d: e8 25 e7 ff ff call 100267 - 101b42: 83 c4 10 add $0x10,%esp - cprintf(" trap 0x%08x %s\n", tf->tf_trapno, trapname(tf->tf_trapno)); - 101b45: 8b 45 08 mov 0x8(%ebp),%eax - 101b48: 8b 40 30 mov 0x30(%eax),%eax - 101b4b: 83 ec 0c sub $0xc,%esp - 101b4e: 50 push %eax - 101b4f: e8 16 ff ff ff call 101a6a - 101b54: 83 c4 10 add $0x10,%esp - 101b57: 89 c2 mov %eax,%edx - 101b59: 8b 45 08 mov 0x8(%ebp),%eax - 101b5c: 8b 40 30 mov 0x30(%eax),%eax - 101b5f: 83 ec 04 sub $0x4,%esp - 101b62: 52 push %edx - 101b63: 50 push %eax - 101b64: 68 50 6d 10 00 push $0x106d50 - 101b69: e8 f9 e6 ff ff call 100267 - 101b6e: 83 c4 10 add $0x10,%esp - cprintf(" err 0x%08x\n", tf->tf_err); - 101b71: 8b 45 08 mov 0x8(%ebp),%eax - 101b74: 8b 40 34 mov 0x34(%eax),%eax - 101b77: 83 ec 08 sub $0x8,%esp - 101b7a: 50 push %eax - 101b7b: 68 62 6d 10 00 push $0x106d62 - 101b80: e8 e2 e6 ff ff call 100267 - 101b85: 83 c4 10 add $0x10,%esp - cprintf(" eip 0x%08x\n", tf->tf_eip); - 101b88: 8b 45 08 mov 0x8(%ebp),%eax - 101b8b: 8b 40 38 mov 0x38(%eax),%eax - 101b8e: 83 ec 08 sub $0x8,%esp - 101b91: 50 push %eax - 101b92: 68 71 6d 10 00 push $0x106d71 - 101b97: e8 cb e6 ff ff call 100267 - 101b9c: 83 c4 10 add $0x10,%esp - cprintf(" cs 0x----%04x\n", tf->tf_cs); - 101b9f: 8b 45 08 mov 0x8(%ebp),%eax - 101ba2: 0f b7 40 3c movzwl 0x3c(%eax),%eax - 101ba6: 0f b7 c0 movzwl %ax,%eax - 101ba9: 83 ec 08 sub $0x8,%esp - 101bac: 50 push %eax - 101bad: 68 80 6d 10 00 push $0x106d80 - 101bb2: e8 b0 e6 ff ff call 100267 - 101bb7: 83 c4 10 add $0x10,%esp - cprintf(" flag 0x%08x ", tf->tf_eflags); - 101bba: 8b 45 08 mov 0x8(%ebp),%eax - 101bbd: 8b 40 40 mov 0x40(%eax),%eax - 101bc0: 83 ec 08 sub $0x8,%esp - 101bc3: 50 push %eax - 101bc4: 68 93 6d 10 00 push $0x106d93 - 101bc9: e8 99 e6 ff ff call 100267 - 101bce: 83 c4 10 add $0x10,%esp - - int i, j; - for (i = 0, j = 1; i < sizeof(IA32flags) / sizeof(IA32flags[0]); i ++, j <<= 1) { - 101bd1: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - 101bd8: c7 45 f0 01 00 00 00 movl $0x1,-0x10(%ebp) - 101bdf: eb 3f jmp 101c20 - if ((tf->tf_eflags & j) && IA32flags[i] != NULL) { - 101be1: 8b 45 08 mov 0x8(%ebp),%eax - 101be4: 8b 50 40 mov 0x40(%eax),%edx - 101be7: 8b 45 f0 mov -0x10(%ebp),%eax - 101bea: 21 d0 and %edx,%eax - 101bec: 85 c0 test %eax,%eax - 101bee: 74 29 je 101c19 - 101bf0: 8b 45 f4 mov -0xc(%ebp),%eax - 101bf3: 8b 04 85 a0 95 11 00 mov 0x1195a0(,%eax,4),%eax - 101bfa: 85 c0 test %eax,%eax - 101bfc: 74 1b je 101c19 - cprintf("%s,", IA32flags[i]); - 101bfe: 8b 45 f4 mov -0xc(%ebp),%eax - 101c01: 8b 04 85 a0 95 11 00 mov 0x1195a0(,%eax,4),%eax - 101c08: 83 ec 08 sub $0x8,%esp - 101c0b: 50 push %eax - 101c0c: 68 a2 6d 10 00 push $0x106da2 - 101c11: e8 51 e6 ff ff call 100267 - 101c16: 83 c4 10 add $0x10,%esp - cprintf(" eip 0x%08x\n", tf->tf_eip); - cprintf(" cs 0x----%04x\n", tf->tf_cs); - cprintf(" flag 0x%08x ", tf->tf_eflags); - - int i, j; - for (i = 0, j = 1; i < sizeof(IA32flags) / sizeof(IA32flags[0]); i ++, j <<= 1) { - 101c19: 83 45 f4 01 addl $0x1,-0xc(%ebp) - 101c1d: d1 65 f0 shll -0x10(%ebp) - 101c20: 8b 45 f4 mov -0xc(%ebp),%eax - 101c23: 83 f8 17 cmp $0x17,%eax - 101c26: 76 b9 jbe 101be1 - if ((tf->tf_eflags & j) && IA32flags[i] != NULL) { - cprintf("%s,", IA32flags[i]); - } - } - cprintf("IOPL=%d\n", (tf->tf_eflags & FL_IOPL_MASK) >> 12); - 101c28: 8b 45 08 mov 0x8(%ebp),%eax - 101c2b: 8b 40 40 mov 0x40(%eax),%eax - 101c2e: 25 00 30 00 00 and $0x3000,%eax - 101c33: c1 e8 0c shr $0xc,%eax - 101c36: 83 ec 08 sub $0x8,%esp - 101c39: 50 push %eax - 101c3a: 68 a6 6d 10 00 push $0x106da6 - 101c3f: e8 23 e6 ff ff call 100267 - 101c44: 83 c4 10 add $0x10,%esp - - if (!trap_in_kernel(tf)) { - 101c47: 83 ec 0c sub $0xc,%esp - 101c4a: ff 75 08 pushl 0x8(%ebp) - 101c4d: e8 49 fe ff ff call 101a9b - 101c52: 83 c4 10 add $0x10,%esp - 101c55: 85 c0 test %eax,%eax - 101c57: 75 32 jne 101c8b - cprintf(" esp 0x%08x\n", tf->tf_esp); - 101c59: 8b 45 08 mov 0x8(%ebp),%eax - 101c5c: 8b 40 44 mov 0x44(%eax),%eax - 101c5f: 83 ec 08 sub $0x8,%esp - 101c62: 50 push %eax - 101c63: 68 af 6d 10 00 push $0x106daf - 101c68: e8 fa e5 ff ff call 100267 - 101c6d: 83 c4 10 add $0x10,%esp - cprintf(" ss 0x----%04x\n", tf->tf_ss); - 101c70: 8b 45 08 mov 0x8(%ebp),%eax - 101c73: 0f b7 40 48 movzwl 0x48(%eax),%eax - 101c77: 0f b7 c0 movzwl %ax,%eax - 101c7a: 83 ec 08 sub $0x8,%esp - 101c7d: 50 push %eax - 101c7e: 68 be 6d 10 00 push $0x106dbe - 101c83: e8 df e5 ff ff call 100267 - 101c88: 83 c4 10 add $0x10,%esp - } -} - 101c8b: 90 nop - 101c8c: c9 leave - 101c8d: c3 ret - -00101c8e : - -void -print_regs(struct pushregs *regs) { - 101c8e: 55 push %ebp - 101c8f: 89 e5 mov %esp,%ebp - 101c91: 83 ec 08 sub $0x8,%esp - cprintf(" edi 0x%08x\n", regs->reg_edi); - 101c94: 8b 45 08 mov 0x8(%ebp),%eax - 101c97: 8b 00 mov (%eax),%eax - 101c99: 83 ec 08 sub $0x8,%esp - 101c9c: 50 push %eax - 101c9d: 68 d1 6d 10 00 push $0x106dd1 - 101ca2: e8 c0 e5 ff ff call 100267 - 101ca7: 83 c4 10 add $0x10,%esp - cprintf(" esi 0x%08x\n", regs->reg_esi); - 101caa: 8b 45 08 mov 0x8(%ebp),%eax - 101cad: 8b 40 04 mov 0x4(%eax),%eax - 101cb0: 83 ec 08 sub $0x8,%esp - 101cb3: 50 push %eax - 101cb4: 68 e0 6d 10 00 push $0x106de0 - 101cb9: e8 a9 e5 ff ff call 100267 - 101cbe: 83 c4 10 add $0x10,%esp - cprintf(" ebp 0x%08x\n", regs->reg_ebp); - 101cc1: 8b 45 08 mov 0x8(%ebp),%eax - 101cc4: 8b 40 08 mov 0x8(%eax),%eax - 101cc7: 83 ec 08 sub $0x8,%esp - 101cca: 50 push %eax - 101ccb: 68 ef 6d 10 00 push $0x106def - 101cd0: e8 92 e5 ff ff call 100267 - 101cd5: 83 c4 10 add $0x10,%esp - cprintf(" oesp 0x%08x\n", regs->reg_oesp); - 101cd8: 8b 45 08 mov 0x8(%ebp),%eax - 101cdb: 8b 40 0c mov 0xc(%eax),%eax - 101cde: 83 ec 08 sub $0x8,%esp - 101ce1: 50 push %eax - 101ce2: 68 fe 6d 10 00 push $0x106dfe - 101ce7: e8 7b e5 ff ff call 100267 - 101cec: 83 c4 10 add $0x10,%esp - cprintf(" ebx 0x%08x\n", regs->reg_ebx); - 101cef: 8b 45 08 mov 0x8(%ebp),%eax - 101cf2: 8b 40 10 mov 0x10(%eax),%eax - 101cf5: 83 ec 08 sub $0x8,%esp - 101cf8: 50 push %eax - 101cf9: 68 0d 6e 10 00 push $0x106e0d - 101cfe: e8 64 e5 ff ff call 100267 - 101d03: 83 c4 10 add $0x10,%esp - cprintf(" edx 0x%08x\n", regs->reg_edx); - 101d06: 8b 45 08 mov 0x8(%ebp),%eax - 101d09: 8b 40 14 mov 0x14(%eax),%eax - 101d0c: 83 ec 08 sub $0x8,%esp - 101d0f: 50 push %eax - 101d10: 68 1c 6e 10 00 push $0x106e1c - 101d15: e8 4d e5 ff ff call 100267 - 101d1a: 83 c4 10 add $0x10,%esp - cprintf(" ecx 0x%08x\n", regs->reg_ecx); - 101d1d: 8b 45 08 mov 0x8(%ebp),%eax - 101d20: 8b 40 18 mov 0x18(%eax),%eax - 101d23: 83 ec 08 sub $0x8,%esp - 101d26: 50 push %eax - 101d27: 68 2b 6e 10 00 push $0x106e2b - 101d2c: e8 36 e5 ff ff call 100267 - 101d31: 83 c4 10 add $0x10,%esp - cprintf(" eax 0x%08x\n", regs->reg_eax); - 101d34: 8b 45 08 mov 0x8(%ebp),%eax - 101d37: 8b 40 1c mov 0x1c(%eax),%eax - 101d3a: 83 ec 08 sub $0x8,%esp - 101d3d: 50 push %eax - 101d3e: 68 3a 6e 10 00 push $0x106e3a - 101d43: e8 1f e5 ff ff call 100267 - 101d48: 83 c4 10 add $0x10,%esp -} - 101d4b: 90 nop - 101d4c: c9 leave - 101d4d: c3 ret - -00101d4e : - -/* trap_dispatch - dispatch based on what type of trap occurred */ -static void -trap_dispatch(struct trapframe *tf) { - 101d4e: 55 push %ebp - 101d4f: 89 e5 mov %esp,%ebp - 101d51: 83 ec 18 sub $0x18,%esp - char c; - - switch (tf->tf_trapno) { - 101d54: 8b 45 08 mov 0x8(%ebp),%eax - 101d57: 8b 40 30 mov 0x30(%eax),%eax - 101d5a: 83 f8 2f cmp $0x2f,%eax - 101d5d: 77 21 ja 101d80 - 101d5f: 83 f8 2e cmp $0x2e,%eax - 101d62: 0f 83 32 02 00 00 jae 101f9a - 101d68: 83 f8 21 cmp $0x21,%eax - 101d6b: 0f 84 87 00 00 00 je 101df8 - 101d71: 83 f8 24 cmp $0x24,%eax - 101d74: 74 5b je 101dd1 - 101d76: 83 f8 20 cmp $0x20,%eax - 101d79: 74 1c je 101d97 - 101d7b: e9 e4 01 00 00 jmp 101f64 - 101d80: 83 f8 78 cmp $0x78,%eax - 101d83: 0f 84 4c 01 00 00 je 101ed5 - 101d89: 83 f8 79 cmp $0x79,%eax - 101d8c: 0f 84 95 01 00 00 je 101f27 - 101d92: e9 cd 01 00 00 jmp 101f64 - /* handle the timer interrupt */ - /* (1) After a timer interrupt, you should record this event using a global variable (increase it), such as ticks in kern/driver/clock.c - * (2) Every TICK_NUM cycle, you can print some info using a funciton, such as print_ticks(). - * (3) Too Simple? Yes, I think so! - */ - ticks ++; - 101d97: a1 58 a9 11 00 mov 0x11a958,%eax - 101d9c: 83 c0 01 add $0x1,%eax - 101d9f: a3 58 a9 11 00 mov %eax,0x11a958 - if (ticks % TICK_NUM == 0) { - 101da4: 8b 0d 58 a9 11 00 mov 0x11a958,%ecx - 101daa: ba 1f 85 eb 51 mov $0x51eb851f,%edx - 101daf: 89 c8 mov %ecx,%eax - 101db1: f7 e2 mul %edx - 101db3: 89 d0 mov %edx,%eax - 101db5: c1 e8 05 shr $0x5,%eax - 101db8: 6b c0 64 imul $0x64,%eax,%eax - 101dbb: 29 c1 sub %eax,%ecx - 101dbd: 89 c8 mov %ecx,%eax - 101dbf: 85 c0 test %eax,%eax - 101dc1: 0f 85 d6 01 00 00 jne 101f9d - print_ticks(); - 101dc7: e8 9c fa ff ff call 101868 - } - break; - 101dcc: e9 cc 01 00 00 jmp 101f9d - case IRQ_OFFSET + IRQ_COM1: - c = cons_getc(); - 101dd1: e8 4f f8 ff ff call 101625 - 101dd6: 88 45 f7 mov %al,-0x9(%ebp) - cprintf("serial [%03d] %c\n", c, c); - 101dd9: 0f be 55 f7 movsbl -0x9(%ebp),%edx - 101ddd: 0f be 45 f7 movsbl -0x9(%ebp),%eax - 101de1: 83 ec 04 sub $0x4,%esp - 101de4: 52 push %edx - 101de5: 50 push %eax - 101de6: 68 49 6e 10 00 push $0x106e49 - 101deb: e8 77 e4 ff ff call 100267 - 101df0: 83 c4 10 add $0x10,%esp - break; - 101df3: e9 af 01 00 00 jmp 101fa7 - case IRQ_OFFSET + IRQ_KBD: - c = cons_getc(); - 101df8: e8 28 f8 ff ff call 101625 - 101dfd: 88 45 f7 mov %al,-0x9(%ebp) - cprintf("kbd [%03d] %c\n", c, c); - 101e00: 0f be 55 f7 movsbl -0x9(%ebp),%edx - 101e04: 0f be 45 f7 movsbl -0x9(%ebp),%eax - 101e08: 83 ec 04 sub $0x4,%esp - 101e0b: 52 push %edx - 101e0c: 50 push %eax - 101e0d: 68 5b 6e 10 00 push $0x106e5b - 101e12: e8 50 e4 ff ff call 100267 - 101e17: 83 c4 10 add $0x10,%esp - if (c == '0') { - 101e1a: 80 7d f7 30 cmpb $0x30,-0x9(%ebp) - 101e1e: 75 46 jne 101e66 - cprintf("Now switched to kernel mode"); - 101e20: 83 ec 0c sub $0xc,%esp - 101e23: 68 6a 6e 10 00 push $0x106e6a - 101e28: e8 3a e4 ff ff call 100267 - 101e2d: 83 c4 10 add $0x10,%esp - if (tf->tf_cs != KERNEL_CS) { - 101e30: 8b 45 08 mov 0x8(%ebp),%eax - 101e33: 0f b7 40 3c movzwl 0x3c(%eax),%eax - 101e37: 66 83 f8 08 cmp $0x8,%ax - 101e3b: 0f 84 5f 01 00 00 je 101fa0 - tf->tf_cs = KERNEL_CS; - 101e41: 8b 45 08 mov 0x8(%ebp),%eax - 101e44: 66 c7 40 3c 08 00 movw $0x8,0x3c(%eax) - tf->tf_ds = tf->tf_es = KERNEL_DS; - 101e4a: 8b 45 08 mov 0x8(%ebp),%eax - 101e4d: 66 c7 40 28 10 00 movw $0x10,0x28(%eax) - 101e53: 8b 45 08 mov 0x8(%ebp),%eax - 101e56: 0f b7 50 28 movzwl 0x28(%eax),%edx - 101e5a: 8b 45 08 mov 0x8(%ebp),%eax - 101e5d: 66 89 50 2c mov %dx,0x2c(%eax) - tf->tf_cs = USER_CS; - tf->tf_ds = tf->tf_es = tf->tf_ss = USER_DS; - tf->tf_eflags |= FL_IOPL_MASK; - } - } - break; - 101e61: e9 3a 01 00 00 jmp 101fa0 - cprintf("Now switched to kernel mode"); - if (tf->tf_cs != KERNEL_CS) { - tf->tf_cs = KERNEL_CS; - tf->tf_ds = tf->tf_es = KERNEL_DS; - } - } else if (c == '3') { - 101e66: 80 7d f7 33 cmpb $0x33,-0x9(%ebp) - 101e6a: 0f 85 30 01 00 00 jne 101fa0 - cprintf("Now switched to user mode"); - 101e70: 83 ec 0c sub $0xc,%esp - 101e73: 68 86 6e 10 00 push $0x106e86 - 101e78: e8 ea e3 ff ff call 100267 - 101e7d: 83 c4 10 add $0x10,%esp - if (tf->tf_cs != USER_CS) { - 101e80: 8b 45 08 mov 0x8(%ebp),%eax - 101e83: 0f b7 40 3c movzwl 0x3c(%eax),%eax - 101e87: 66 83 f8 1b cmp $0x1b,%ax - 101e8b: 0f 84 0f 01 00 00 je 101fa0 - tf->tf_cs = USER_CS; - 101e91: 8b 45 08 mov 0x8(%ebp),%eax - 101e94: 66 c7 40 3c 1b 00 movw $0x1b,0x3c(%eax) - tf->tf_ds = tf->tf_es = tf->tf_ss = USER_DS; - 101e9a: 8b 45 08 mov 0x8(%ebp),%eax - 101e9d: 66 c7 40 48 23 00 movw $0x23,0x48(%eax) - 101ea3: 8b 45 08 mov 0x8(%ebp),%eax - 101ea6: 0f b7 50 48 movzwl 0x48(%eax),%edx - 101eaa: 8b 45 08 mov 0x8(%ebp),%eax - 101ead: 66 89 50 28 mov %dx,0x28(%eax) - 101eb1: 8b 45 08 mov 0x8(%ebp),%eax - 101eb4: 0f b7 50 28 movzwl 0x28(%eax),%edx - 101eb8: 8b 45 08 mov 0x8(%ebp),%eax - 101ebb: 66 89 50 2c mov %dx,0x2c(%eax) - tf->tf_eflags |= FL_IOPL_MASK; - 101ebf: 8b 45 08 mov 0x8(%ebp),%eax - 101ec2: 8b 40 40 mov 0x40(%eax),%eax - 101ec5: 80 cc 30 or $0x30,%ah - 101ec8: 89 c2 mov %eax,%edx - 101eca: 8b 45 08 mov 0x8(%ebp),%eax - 101ecd: 89 50 40 mov %edx,0x40(%eax) - } - } - break; - 101ed0: e9 cb 00 00 00 jmp 101fa0 - //LAB1 CHALLENGE 1 : YOUR CODE you should modify below codes. - case T_SWITCH_TOU: - if (tf->tf_cs != USER_CS) { - 101ed5: 8b 45 08 mov 0x8(%ebp),%eax - 101ed8: 0f b7 40 3c movzwl 0x3c(%eax),%eax - 101edc: 66 83 f8 1b cmp $0x1b,%ax - 101ee0: 0f 84 bd 00 00 00 je 101fa3 - tf->tf_cs = USER_CS; - 101ee6: 8b 45 08 mov 0x8(%ebp),%eax - 101ee9: 66 c7 40 3c 1b 00 movw $0x1b,0x3c(%eax) - tf->tf_ds = tf->tf_es = tf->tf_ss = USER_DS; - 101eef: 8b 45 08 mov 0x8(%ebp),%eax - 101ef2: 66 c7 40 48 23 00 movw $0x23,0x48(%eax) - 101ef8: 8b 45 08 mov 0x8(%ebp),%eax - 101efb: 0f b7 50 48 movzwl 0x48(%eax),%edx - 101eff: 8b 45 08 mov 0x8(%ebp),%eax - 101f02: 66 89 50 28 mov %dx,0x28(%eax) - 101f06: 8b 45 08 mov 0x8(%ebp),%eax - 101f09: 0f b7 50 28 movzwl 0x28(%eax),%edx - 101f0d: 8b 45 08 mov 0x8(%ebp),%eax - 101f10: 66 89 50 2c mov %dx,0x2c(%eax) - tf->tf_eflags |= FL_IOPL_MASK; - 101f14: 8b 45 08 mov 0x8(%ebp),%eax - 101f17: 8b 40 40 mov 0x40(%eax),%eax - 101f1a: 80 cc 30 or $0x30,%ah - 101f1d: 89 c2 mov %eax,%edx - 101f1f: 8b 45 08 mov 0x8(%ebp),%eax - 101f22: 89 50 40 mov %edx,0x40(%eax) - } - break; - 101f25: eb 7c jmp 101fa3 - case T_SWITCH_TOK: - if (tf->tf_cs != KERNEL_CS) { - 101f27: 8b 45 08 mov 0x8(%ebp),%eax - 101f2a: 0f b7 40 3c movzwl 0x3c(%eax),%eax - 101f2e: 66 83 f8 08 cmp $0x8,%ax - 101f32: 74 72 je 101fa6 - tf->tf_cs = KERNEL_CS; - 101f34: 8b 45 08 mov 0x8(%ebp),%eax - 101f37: 66 c7 40 3c 08 00 movw $0x8,0x3c(%eax) - tf->tf_ds = tf->tf_es = tf->tf_ss = KERNEL_DS; - 101f3d: 8b 45 08 mov 0x8(%ebp),%eax - 101f40: 66 c7 40 48 10 00 movw $0x10,0x48(%eax) - 101f46: 8b 45 08 mov 0x8(%ebp),%eax - 101f49: 0f b7 50 48 movzwl 0x48(%eax),%edx - 101f4d: 8b 45 08 mov 0x8(%ebp),%eax - 101f50: 66 89 50 28 mov %dx,0x28(%eax) - 101f54: 8b 45 08 mov 0x8(%ebp),%eax - 101f57: 0f b7 50 28 movzwl 0x28(%eax),%edx - 101f5b: 8b 45 08 mov 0x8(%ebp),%eax - 101f5e: 66 89 50 2c mov %dx,0x2c(%eax) - } - break; - 101f62: eb 42 jmp 101fa6 - case IRQ_OFFSET + IRQ_IDE2: - /* do nothing */ - break; - default: - // in kernel, it must be a mistake - if ((tf->tf_cs & 3) == 0) { - 101f64: 8b 45 08 mov 0x8(%ebp),%eax - 101f67: 0f b7 40 3c movzwl 0x3c(%eax),%eax - 101f6b: 0f b7 c0 movzwl %ax,%eax - 101f6e: 83 e0 03 and $0x3,%eax - 101f71: 85 c0 test %eax,%eax - 101f73: 75 32 jne 101fa7 - print_trapframe(tf); - 101f75: 83 ec 0c sub $0xc,%esp - 101f78: ff 75 08 pushl 0x8(%ebp) - 101f7b: e8 31 fb ff ff call 101ab1 - 101f80: 83 c4 10 add $0x10,%esp - panic("unexpected trap in kernel.\n"); - 101f83: 83 ec 04 sub $0x4,%esp - 101f86: 68 a0 6e 10 00 push $0x106ea0 - 101f8b: 68 d1 00 00 00 push $0xd1 - 101f90: 68 8e 6c 10 00 push $0x106c8e - 101f95: e8 33 e4 ff ff call 1003cd <__panic> - } - break; - case IRQ_OFFSET + IRQ_IDE1: - case IRQ_OFFSET + IRQ_IDE2: - /* do nothing */ - break; - 101f9a: 90 nop - 101f9b: eb 0a jmp 101fa7 - */ - ticks ++; - if (ticks % TICK_NUM == 0) { - print_ticks(); - } - break; - 101f9d: 90 nop - 101f9e: eb 07 jmp 101fa7 - tf->tf_cs = USER_CS; - tf->tf_ds = tf->tf_es = tf->tf_ss = USER_DS; - tf->tf_eflags |= FL_IOPL_MASK; - } - } - break; - 101fa0: 90 nop - 101fa1: eb 04 jmp 101fa7 - if (tf->tf_cs != USER_CS) { - tf->tf_cs = USER_CS; - tf->tf_ds = tf->tf_es = tf->tf_ss = USER_DS; - tf->tf_eflags |= FL_IOPL_MASK; - } - break; - 101fa3: 90 nop - 101fa4: eb 01 jmp 101fa7 - case T_SWITCH_TOK: - if (tf->tf_cs != KERNEL_CS) { - tf->tf_cs = KERNEL_CS; - tf->tf_ds = tf->tf_es = tf->tf_ss = KERNEL_DS; - } - break; - 101fa6: 90 nop - if ((tf->tf_cs & 3) == 0) { - print_trapframe(tf); - panic("unexpected trap in kernel.\n"); - } - } -} - 101fa7: 90 nop - 101fa8: c9 leave - 101fa9: c3 ret - -00101faa : - * trap - handles or dispatches an exception/interrupt. if and when trap() returns, - * the code in kern/trap/trapentry.S restores the old CPU state saved in the - * trapframe and then uses the iret instruction to return from the exception. - * */ -void -trap(struct trapframe *tf) { - 101faa: 55 push %ebp - 101fab: 89 e5 mov %esp,%ebp - 101fad: 83 ec 08 sub $0x8,%esp - // dispatch based on what type of trap occurred - trap_dispatch(tf); - 101fb0: 83 ec 0c sub $0xc,%esp - 101fb3: ff 75 08 pushl 0x8(%ebp) - 101fb6: e8 93 fd ff ff call 101d4e - 101fbb: 83 c4 10 add $0x10,%esp -} - 101fbe: 90 nop - 101fbf: c9 leave - 101fc0: c3 ret - -00101fc1 : -# handler -.text -.globl __alltraps -.globl vector0 -vector0: - pushl $0 - 101fc1: 6a 00 push $0x0 - pushl $0 - 101fc3: 6a 00 push $0x0 - jmp __alltraps - 101fc5: e9 67 0a 00 00 jmp 102a31 <__alltraps> - -00101fca : -.globl vector1 -vector1: - pushl $0 - 101fca: 6a 00 push $0x0 - pushl $1 - 101fcc: 6a 01 push $0x1 - jmp __alltraps - 101fce: e9 5e 0a 00 00 jmp 102a31 <__alltraps> - -00101fd3 : -.globl vector2 -vector2: - pushl $0 - 101fd3: 6a 00 push $0x0 - pushl $2 - 101fd5: 6a 02 push $0x2 - jmp __alltraps - 101fd7: e9 55 0a 00 00 jmp 102a31 <__alltraps> - -00101fdc : -.globl vector3 -vector3: - pushl $0 - 101fdc: 6a 00 push $0x0 - pushl $3 - 101fde: 6a 03 push $0x3 - jmp __alltraps - 101fe0: e9 4c 0a 00 00 jmp 102a31 <__alltraps> - -00101fe5 : -.globl vector4 -vector4: - pushl $0 - 101fe5: 6a 00 push $0x0 - pushl $4 - 101fe7: 6a 04 push $0x4 - jmp __alltraps - 101fe9: e9 43 0a 00 00 jmp 102a31 <__alltraps> - -00101fee : -.globl vector5 -vector5: - pushl $0 - 101fee: 6a 00 push $0x0 - pushl $5 - 101ff0: 6a 05 push $0x5 - jmp __alltraps - 101ff2: e9 3a 0a 00 00 jmp 102a31 <__alltraps> - -00101ff7 : -.globl vector6 -vector6: - pushl $0 - 101ff7: 6a 00 push $0x0 - pushl $6 - 101ff9: 6a 06 push $0x6 - jmp __alltraps - 101ffb: e9 31 0a 00 00 jmp 102a31 <__alltraps> - -00102000 : -.globl vector7 -vector7: - pushl $0 - 102000: 6a 00 push $0x0 - pushl $7 - 102002: 6a 07 push $0x7 - jmp __alltraps - 102004: e9 28 0a 00 00 jmp 102a31 <__alltraps> - -00102009 : -.globl vector8 -vector8: - pushl $8 - 102009: 6a 08 push $0x8 - jmp __alltraps - 10200b: e9 21 0a 00 00 jmp 102a31 <__alltraps> - -00102010 : -.globl vector9 -vector9: - pushl $9 - 102010: 6a 09 push $0x9 - jmp __alltraps - 102012: e9 1a 0a 00 00 jmp 102a31 <__alltraps> - -00102017 : -.globl vector10 -vector10: - pushl $10 - 102017: 6a 0a push $0xa - jmp __alltraps - 102019: e9 13 0a 00 00 jmp 102a31 <__alltraps> - -0010201e : -.globl vector11 -vector11: - pushl $11 - 10201e: 6a 0b push $0xb - jmp __alltraps - 102020: e9 0c 0a 00 00 jmp 102a31 <__alltraps> - -00102025 : -.globl vector12 -vector12: - pushl $12 - 102025: 6a 0c push $0xc - jmp __alltraps - 102027: e9 05 0a 00 00 jmp 102a31 <__alltraps> - -0010202c : -.globl vector13 -vector13: - pushl $13 - 10202c: 6a 0d push $0xd - jmp __alltraps - 10202e: e9 fe 09 00 00 jmp 102a31 <__alltraps> - -00102033 : -.globl vector14 -vector14: - pushl $14 - 102033: 6a 0e push $0xe - jmp __alltraps - 102035: e9 f7 09 00 00 jmp 102a31 <__alltraps> - -0010203a : -.globl vector15 -vector15: - pushl $0 - 10203a: 6a 00 push $0x0 - pushl $15 - 10203c: 6a 0f push $0xf - jmp __alltraps - 10203e: e9 ee 09 00 00 jmp 102a31 <__alltraps> - -00102043 : -.globl vector16 -vector16: - pushl $0 - 102043: 6a 00 push $0x0 - pushl $16 - 102045: 6a 10 push $0x10 - jmp __alltraps - 102047: e9 e5 09 00 00 jmp 102a31 <__alltraps> - -0010204c : -.globl vector17 -vector17: - pushl $17 - 10204c: 6a 11 push $0x11 - jmp __alltraps - 10204e: e9 de 09 00 00 jmp 102a31 <__alltraps> - -00102053 : -.globl vector18 -vector18: - pushl $0 - 102053: 6a 00 push $0x0 - pushl $18 - 102055: 6a 12 push $0x12 - jmp __alltraps - 102057: e9 d5 09 00 00 jmp 102a31 <__alltraps> - -0010205c : -.globl vector19 -vector19: - pushl $0 - 10205c: 6a 00 push $0x0 - pushl $19 - 10205e: 6a 13 push $0x13 - jmp __alltraps - 102060: e9 cc 09 00 00 jmp 102a31 <__alltraps> - -00102065 : -.globl vector20 -vector20: - pushl $0 - 102065: 6a 00 push $0x0 - pushl $20 - 102067: 6a 14 push $0x14 - jmp __alltraps - 102069: e9 c3 09 00 00 jmp 102a31 <__alltraps> - -0010206e : -.globl vector21 -vector21: - pushl $0 - 10206e: 6a 00 push $0x0 - pushl $21 - 102070: 6a 15 push $0x15 - jmp __alltraps - 102072: e9 ba 09 00 00 jmp 102a31 <__alltraps> - -00102077 : -.globl vector22 -vector22: - pushl $0 - 102077: 6a 00 push $0x0 - pushl $22 - 102079: 6a 16 push $0x16 - jmp __alltraps - 10207b: e9 b1 09 00 00 jmp 102a31 <__alltraps> - -00102080 : -.globl vector23 -vector23: - pushl $0 - 102080: 6a 00 push $0x0 - pushl $23 - 102082: 6a 17 push $0x17 - jmp __alltraps - 102084: e9 a8 09 00 00 jmp 102a31 <__alltraps> - -00102089 : -.globl vector24 -vector24: - pushl $0 - 102089: 6a 00 push $0x0 - pushl $24 - 10208b: 6a 18 push $0x18 - jmp __alltraps - 10208d: e9 9f 09 00 00 jmp 102a31 <__alltraps> - -00102092 : -.globl vector25 -vector25: - pushl $0 - 102092: 6a 00 push $0x0 - pushl $25 - 102094: 6a 19 push $0x19 - jmp __alltraps - 102096: e9 96 09 00 00 jmp 102a31 <__alltraps> - -0010209b : -.globl vector26 -vector26: - pushl $0 - 10209b: 6a 00 push $0x0 - pushl $26 - 10209d: 6a 1a push $0x1a - jmp __alltraps - 10209f: e9 8d 09 00 00 jmp 102a31 <__alltraps> - -001020a4 : -.globl vector27 -vector27: - pushl $0 - 1020a4: 6a 00 push $0x0 - pushl $27 - 1020a6: 6a 1b push $0x1b - jmp __alltraps - 1020a8: e9 84 09 00 00 jmp 102a31 <__alltraps> - -001020ad : -.globl vector28 -vector28: - pushl $0 - 1020ad: 6a 00 push $0x0 - pushl $28 - 1020af: 6a 1c push $0x1c - jmp __alltraps - 1020b1: e9 7b 09 00 00 jmp 102a31 <__alltraps> - -001020b6 : -.globl vector29 -vector29: - pushl $0 - 1020b6: 6a 00 push $0x0 - pushl $29 - 1020b8: 6a 1d push $0x1d - jmp __alltraps - 1020ba: e9 72 09 00 00 jmp 102a31 <__alltraps> - -001020bf : -.globl vector30 -vector30: - pushl $0 - 1020bf: 6a 00 push $0x0 - pushl $30 - 1020c1: 6a 1e push $0x1e - jmp __alltraps - 1020c3: e9 69 09 00 00 jmp 102a31 <__alltraps> - -001020c8 : -.globl vector31 -vector31: - pushl $0 - 1020c8: 6a 00 push $0x0 - pushl $31 - 1020ca: 6a 1f push $0x1f - jmp __alltraps - 1020cc: e9 60 09 00 00 jmp 102a31 <__alltraps> - -001020d1 : -.globl vector32 -vector32: - pushl $0 - 1020d1: 6a 00 push $0x0 - pushl $32 - 1020d3: 6a 20 push $0x20 - jmp __alltraps - 1020d5: e9 57 09 00 00 jmp 102a31 <__alltraps> - -001020da : -.globl vector33 -vector33: - pushl $0 - 1020da: 6a 00 push $0x0 - pushl $33 - 1020dc: 6a 21 push $0x21 - jmp __alltraps - 1020de: e9 4e 09 00 00 jmp 102a31 <__alltraps> - -001020e3 : -.globl vector34 -vector34: - pushl $0 - 1020e3: 6a 00 push $0x0 - pushl $34 - 1020e5: 6a 22 push $0x22 - jmp __alltraps - 1020e7: e9 45 09 00 00 jmp 102a31 <__alltraps> - -001020ec : -.globl vector35 -vector35: - pushl $0 - 1020ec: 6a 00 push $0x0 - pushl $35 - 1020ee: 6a 23 push $0x23 - jmp __alltraps - 1020f0: e9 3c 09 00 00 jmp 102a31 <__alltraps> - -001020f5 : -.globl vector36 -vector36: - pushl $0 - 1020f5: 6a 00 push $0x0 - pushl $36 - 1020f7: 6a 24 push $0x24 - jmp __alltraps - 1020f9: e9 33 09 00 00 jmp 102a31 <__alltraps> - -001020fe : -.globl vector37 -vector37: - pushl $0 - 1020fe: 6a 00 push $0x0 - pushl $37 - 102100: 6a 25 push $0x25 - jmp __alltraps - 102102: e9 2a 09 00 00 jmp 102a31 <__alltraps> - -00102107 : -.globl vector38 -vector38: - pushl $0 - 102107: 6a 00 push $0x0 - pushl $38 - 102109: 6a 26 push $0x26 - jmp __alltraps - 10210b: e9 21 09 00 00 jmp 102a31 <__alltraps> - -00102110 : -.globl vector39 -vector39: - pushl $0 - 102110: 6a 00 push $0x0 - pushl $39 - 102112: 6a 27 push $0x27 - jmp __alltraps - 102114: e9 18 09 00 00 jmp 102a31 <__alltraps> - -00102119 : -.globl vector40 -vector40: - pushl $0 - 102119: 6a 00 push $0x0 - pushl $40 - 10211b: 6a 28 push $0x28 - jmp __alltraps - 10211d: e9 0f 09 00 00 jmp 102a31 <__alltraps> - -00102122 : -.globl vector41 -vector41: - pushl $0 - 102122: 6a 00 push $0x0 - pushl $41 - 102124: 6a 29 push $0x29 - jmp __alltraps - 102126: e9 06 09 00 00 jmp 102a31 <__alltraps> - -0010212b : -.globl vector42 -vector42: - pushl $0 - 10212b: 6a 00 push $0x0 - pushl $42 - 10212d: 6a 2a push $0x2a - jmp __alltraps - 10212f: e9 fd 08 00 00 jmp 102a31 <__alltraps> - -00102134 : -.globl vector43 -vector43: - pushl $0 - 102134: 6a 00 push $0x0 - pushl $43 - 102136: 6a 2b push $0x2b - jmp __alltraps - 102138: e9 f4 08 00 00 jmp 102a31 <__alltraps> - -0010213d : -.globl vector44 -vector44: - pushl $0 - 10213d: 6a 00 push $0x0 - pushl $44 - 10213f: 6a 2c push $0x2c - jmp __alltraps - 102141: e9 eb 08 00 00 jmp 102a31 <__alltraps> - -00102146 : -.globl vector45 -vector45: - pushl $0 - 102146: 6a 00 push $0x0 - pushl $45 - 102148: 6a 2d push $0x2d - jmp __alltraps - 10214a: e9 e2 08 00 00 jmp 102a31 <__alltraps> - -0010214f : -.globl vector46 -vector46: - pushl $0 - 10214f: 6a 00 push $0x0 - pushl $46 - 102151: 6a 2e push $0x2e - jmp __alltraps - 102153: e9 d9 08 00 00 jmp 102a31 <__alltraps> - -00102158 : -.globl vector47 -vector47: - pushl $0 - 102158: 6a 00 push $0x0 - pushl $47 - 10215a: 6a 2f push $0x2f - jmp __alltraps - 10215c: e9 d0 08 00 00 jmp 102a31 <__alltraps> - -00102161 : -.globl vector48 -vector48: - pushl $0 - 102161: 6a 00 push $0x0 - pushl $48 - 102163: 6a 30 push $0x30 - jmp __alltraps - 102165: e9 c7 08 00 00 jmp 102a31 <__alltraps> - -0010216a : -.globl vector49 -vector49: - pushl $0 - 10216a: 6a 00 push $0x0 - pushl $49 - 10216c: 6a 31 push $0x31 - jmp __alltraps - 10216e: e9 be 08 00 00 jmp 102a31 <__alltraps> - -00102173 : -.globl vector50 -vector50: - pushl $0 - 102173: 6a 00 push $0x0 - pushl $50 - 102175: 6a 32 push $0x32 - jmp __alltraps - 102177: e9 b5 08 00 00 jmp 102a31 <__alltraps> - -0010217c : -.globl vector51 -vector51: - pushl $0 - 10217c: 6a 00 push $0x0 - pushl $51 - 10217e: 6a 33 push $0x33 - jmp __alltraps - 102180: e9 ac 08 00 00 jmp 102a31 <__alltraps> - -00102185 : -.globl vector52 -vector52: - pushl $0 - 102185: 6a 00 push $0x0 - pushl $52 - 102187: 6a 34 push $0x34 - jmp __alltraps - 102189: e9 a3 08 00 00 jmp 102a31 <__alltraps> - -0010218e : -.globl vector53 -vector53: - pushl $0 - 10218e: 6a 00 push $0x0 - pushl $53 - 102190: 6a 35 push $0x35 - jmp __alltraps - 102192: e9 9a 08 00 00 jmp 102a31 <__alltraps> - -00102197 : -.globl vector54 -vector54: - pushl $0 - 102197: 6a 00 push $0x0 - pushl $54 - 102199: 6a 36 push $0x36 - jmp __alltraps - 10219b: e9 91 08 00 00 jmp 102a31 <__alltraps> - -001021a0 : -.globl vector55 -vector55: - pushl $0 - 1021a0: 6a 00 push $0x0 - pushl $55 - 1021a2: 6a 37 push $0x37 - jmp __alltraps - 1021a4: e9 88 08 00 00 jmp 102a31 <__alltraps> - -001021a9 : -.globl vector56 -vector56: - pushl $0 - 1021a9: 6a 00 push $0x0 - pushl $56 - 1021ab: 6a 38 push $0x38 - jmp __alltraps - 1021ad: e9 7f 08 00 00 jmp 102a31 <__alltraps> - -001021b2 : -.globl vector57 -vector57: - pushl $0 - 1021b2: 6a 00 push $0x0 - pushl $57 - 1021b4: 6a 39 push $0x39 - jmp __alltraps - 1021b6: e9 76 08 00 00 jmp 102a31 <__alltraps> - -001021bb : -.globl vector58 -vector58: - pushl $0 - 1021bb: 6a 00 push $0x0 - pushl $58 - 1021bd: 6a 3a push $0x3a - jmp __alltraps - 1021bf: e9 6d 08 00 00 jmp 102a31 <__alltraps> - -001021c4 : -.globl vector59 -vector59: - pushl $0 - 1021c4: 6a 00 push $0x0 - pushl $59 - 1021c6: 6a 3b push $0x3b - jmp __alltraps - 1021c8: e9 64 08 00 00 jmp 102a31 <__alltraps> - -001021cd : -.globl vector60 -vector60: - pushl $0 - 1021cd: 6a 00 push $0x0 - pushl $60 - 1021cf: 6a 3c push $0x3c - jmp __alltraps - 1021d1: e9 5b 08 00 00 jmp 102a31 <__alltraps> - -001021d6 : -.globl vector61 -vector61: - pushl $0 - 1021d6: 6a 00 push $0x0 - pushl $61 - 1021d8: 6a 3d push $0x3d - jmp __alltraps - 1021da: e9 52 08 00 00 jmp 102a31 <__alltraps> - -001021df : -.globl vector62 -vector62: - pushl $0 - 1021df: 6a 00 push $0x0 - pushl $62 - 1021e1: 6a 3e push $0x3e - jmp __alltraps - 1021e3: e9 49 08 00 00 jmp 102a31 <__alltraps> - -001021e8 : -.globl vector63 -vector63: - pushl $0 - 1021e8: 6a 00 push $0x0 - pushl $63 - 1021ea: 6a 3f push $0x3f - jmp __alltraps - 1021ec: e9 40 08 00 00 jmp 102a31 <__alltraps> - -001021f1 : -.globl vector64 -vector64: - pushl $0 - 1021f1: 6a 00 push $0x0 - pushl $64 - 1021f3: 6a 40 push $0x40 - jmp __alltraps - 1021f5: e9 37 08 00 00 jmp 102a31 <__alltraps> - -001021fa : -.globl vector65 -vector65: - pushl $0 - 1021fa: 6a 00 push $0x0 - pushl $65 - 1021fc: 6a 41 push $0x41 - jmp __alltraps - 1021fe: e9 2e 08 00 00 jmp 102a31 <__alltraps> - -00102203 : -.globl vector66 -vector66: - pushl $0 - 102203: 6a 00 push $0x0 - pushl $66 - 102205: 6a 42 push $0x42 - jmp __alltraps - 102207: e9 25 08 00 00 jmp 102a31 <__alltraps> - -0010220c : -.globl vector67 -vector67: - pushl $0 - 10220c: 6a 00 push $0x0 - pushl $67 - 10220e: 6a 43 push $0x43 - jmp __alltraps - 102210: e9 1c 08 00 00 jmp 102a31 <__alltraps> - -00102215 : -.globl vector68 -vector68: - pushl $0 - 102215: 6a 00 push $0x0 - pushl $68 - 102217: 6a 44 push $0x44 - jmp __alltraps - 102219: e9 13 08 00 00 jmp 102a31 <__alltraps> - -0010221e : -.globl vector69 -vector69: - pushl $0 - 10221e: 6a 00 push $0x0 - pushl $69 - 102220: 6a 45 push $0x45 - jmp __alltraps - 102222: e9 0a 08 00 00 jmp 102a31 <__alltraps> - -00102227 : -.globl vector70 -vector70: - pushl $0 - 102227: 6a 00 push $0x0 - pushl $70 - 102229: 6a 46 push $0x46 - jmp __alltraps - 10222b: e9 01 08 00 00 jmp 102a31 <__alltraps> - -00102230 : -.globl vector71 -vector71: - pushl $0 - 102230: 6a 00 push $0x0 - pushl $71 - 102232: 6a 47 push $0x47 - jmp __alltraps - 102234: e9 f8 07 00 00 jmp 102a31 <__alltraps> - -00102239 : -.globl vector72 -vector72: - pushl $0 - 102239: 6a 00 push $0x0 - pushl $72 - 10223b: 6a 48 push $0x48 - jmp __alltraps - 10223d: e9 ef 07 00 00 jmp 102a31 <__alltraps> - -00102242 : -.globl vector73 -vector73: - pushl $0 - 102242: 6a 00 push $0x0 - pushl $73 - 102244: 6a 49 push $0x49 - jmp __alltraps - 102246: e9 e6 07 00 00 jmp 102a31 <__alltraps> - -0010224b : -.globl vector74 -vector74: - pushl $0 - 10224b: 6a 00 push $0x0 - pushl $74 - 10224d: 6a 4a push $0x4a - jmp __alltraps - 10224f: e9 dd 07 00 00 jmp 102a31 <__alltraps> - -00102254 : -.globl vector75 -vector75: - pushl $0 - 102254: 6a 00 push $0x0 - pushl $75 - 102256: 6a 4b push $0x4b - jmp __alltraps - 102258: e9 d4 07 00 00 jmp 102a31 <__alltraps> - -0010225d : -.globl vector76 -vector76: - pushl $0 - 10225d: 6a 00 push $0x0 - pushl $76 - 10225f: 6a 4c push $0x4c - jmp __alltraps - 102261: e9 cb 07 00 00 jmp 102a31 <__alltraps> - -00102266 : -.globl vector77 -vector77: - pushl $0 - 102266: 6a 00 push $0x0 - pushl $77 - 102268: 6a 4d push $0x4d - jmp __alltraps - 10226a: e9 c2 07 00 00 jmp 102a31 <__alltraps> - -0010226f : -.globl vector78 -vector78: - pushl $0 - 10226f: 6a 00 push $0x0 - pushl $78 - 102271: 6a 4e push $0x4e - jmp __alltraps - 102273: e9 b9 07 00 00 jmp 102a31 <__alltraps> - -00102278 : -.globl vector79 -vector79: - pushl $0 - 102278: 6a 00 push $0x0 - pushl $79 - 10227a: 6a 4f push $0x4f - jmp __alltraps - 10227c: e9 b0 07 00 00 jmp 102a31 <__alltraps> - -00102281 : -.globl vector80 -vector80: - pushl $0 - 102281: 6a 00 push $0x0 - pushl $80 - 102283: 6a 50 push $0x50 - jmp __alltraps - 102285: e9 a7 07 00 00 jmp 102a31 <__alltraps> - -0010228a : -.globl vector81 -vector81: - pushl $0 - 10228a: 6a 00 push $0x0 - pushl $81 - 10228c: 6a 51 push $0x51 - jmp __alltraps - 10228e: e9 9e 07 00 00 jmp 102a31 <__alltraps> - -00102293 : -.globl vector82 -vector82: - pushl $0 - 102293: 6a 00 push $0x0 - pushl $82 - 102295: 6a 52 push $0x52 - jmp __alltraps - 102297: e9 95 07 00 00 jmp 102a31 <__alltraps> - -0010229c : -.globl vector83 -vector83: - pushl $0 - 10229c: 6a 00 push $0x0 - pushl $83 - 10229e: 6a 53 push $0x53 - jmp __alltraps - 1022a0: e9 8c 07 00 00 jmp 102a31 <__alltraps> - -001022a5 : -.globl vector84 -vector84: - pushl $0 - 1022a5: 6a 00 push $0x0 - pushl $84 - 1022a7: 6a 54 push $0x54 - jmp __alltraps - 1022a9: e9 83 07 00 00 jmp 102a31 <__alltraps> - -001022ae : -.globl vector85 -vector85: - pushl $0 - 1022ae: 6a 00 push $0x0 - pushl $85 - 1022b0: 6a 55 push $0x55 - jmp __alltraps - 1022b2: e9 7a 07 00 00 jmp 102a31 <__alltraps> - -001022b7 : -.globl vector86 -vector86: - pushl $0 - 1022b7: 6a 00 push $0x0 - pushl $86 - 1022b9: 6a 56 push $0x56 - jmp __alltraps - 1022bb: e9 71 07 00 00 jmp 102a31 <__alltraps> - -001022c0 : -.globl vector87 -vector87: - pushl $0 - 1022c0: 6a 00 push $0x0 - pushl $87 - 1022c2: 6a 57 push $0x57 - jmp __alltraps - 1022c4: e9 68 07 00 00 jmp 102a31 <__alltraps> - -001022c9 : -.globl vector88 -vector88: - pushl $0 - 1022c9: 6a 00 push $0x0 - pushl $88 - 1022cb: 6a 58 push $0x58 - jmp __alltraps - 1022cd: e9 5f 07 00 00 jmp 102a31 <__alltraps> - -001022d2 : -.globl vector89 -vector89: - pushl $0 - 1022d2: 6a 00 push $0x0 - pushl $89 - 1022d4: 6a 59 push $0x59 - jmp __alltraps - 1022d6: e9 56 07 00 00 jmp 102a31 <__alltraps> - -001022db : -.globl vector90 -vector90: - pushl $0 - 1022db: 6a 00 push $0x0 - pushl $90 - 1022dd: 6a 5a push $0x5a - jmp __alltraps - 1022df: e9 4d 07 00 00 jmp 102a31 <__alltraps> - -001022e4 : -.globl vector91 -vector91: - pushl $0 - 1022e4: 6a 00 push $0x0 - pushl $91 - 1022e6: 6a 5b push $0x5b - jmp __alltraps - 1022e8: e9 44 07 00 00 jmp 102a31 <__alltraps> - -001022ed : -.globl vector92 -vector92: - pushl $0 - 1022ed: 6a 00 push $0x0 - pushl $92 - 1022ef: 6a 5c push $0x5c - jmp __alltraps - 1022f1: e9 3b 07 00 00 jmp 102a31 <__alltraps> - -001022f6 : -.globl vector93 -vector93: - pushl $0 - 1022f6: 6a 00 push $0x0 - pushl $93 - 1022f8: 6a 5d push $0x5d - jmp __alltraps - 1022fa: e9 32 07 00 00 jmp 102a31 <__alltraps> - -001022ff : -.globl vector94 -vector94: - pushl $0 - 1022ff: 6a 00 push $0x0 - pushl $94 - 102301: 6a 5e push $0x5e - jmp __alltraps - 102303: e9 29 07 00 00 jmp 102a31 <__alltraps> - -00102308 : -.globl vector95 -vector95: - pushl $0 - 102308: 6a 00 push $0x0 - pushl $95 - 10230a: 6a 5f push $0x5f - jmp __alltraps - 10230c: e9 20 07 00 00 jmp 102a31 <__alltraps> - -00102311 : -.globl vector96 -vector96: - pushl $0 - 102311: 6a 00 push $0x0 - pushl $96 - 102313: 6a 60 push $0x60 - jmp __alltraps - 102315: e9 17 07 00 00 jmp 102a31 <__alltraps> - -0010231a : -.globl vector97 -vector97: - pushl $0 - 10231a: 6a 00 push $0x0 - pushl $97 - 10231c: 6a 61 push $0x61 - jmp __alltraps - 10231e: e9 0e 07 00 00 jmp 102a31 <__alltraps> - -00102323 : -.globl vector98 -vector98: - pushl $0 - 102323: 6a 00 push $0x0 - pushl $98 - 102325: 6a 62 push $0x62 - jmp __alltraps - 102327: e9 05 07 00 00 jmp 102a31 <__alltraps> - -0010232c : -.globl vector99 -vector99: - pushl $0 - 10232c: 6a 00 push $0x0 - pushl $99 - 10232e: 6a 63 push $0x63 - jmp __alltraps - 102330: e9 fc 06 00 00 jmp 102a31 <__alltraps> - -00102335 : -.globl vector100 -vector100: - pushl $0 - 102335: 6a 00 push $0x0 - pushl $100 - 102337: 6a 64 push $0x64 - jmp __alltraps - 102339: e9 f3 06 00 00 jmp 102a31 <__alltraps> - -0010233e : -.globl vector101 -vector101: - pushl $0 - 10233e: 6a 00 push $0x0 - pushl $101 - 102340: 6a 65 push $0x65 - jmp __alltraps - 102342: e9 ea 06 00 00 jmp 102a31 <__alltraps> - -00102347 : -.globl vector102 -vector102: - pushl $0 - 102347: 6a 00 push $0x0 - pushl $102 - 102349: 6a 66 push $0x66 - jmp __alltraps - 10234b: e9 e1 06 00 00 jmp 102a31 <__alltraps> - -00102350 : -.globl vector103 -vector103: - pushl $0 - 102350: 6a 00 push $0x0 - pushl $103 - 102352: 6a 67 push $0x67 - jmp __alltraps - 102354: e9 d8 06 00 00 jmp 102a31 <__alltraps> - -00102359 : -.globl vector104 -vector104: - pushl $0 - 102359: 6a 00 push $0x0 - pushl $104 - 10235b: 6a 68 push $0x68 - jmp __alltraps - 10235d: e9 cf 06 00 00 jmp 102a31 <__alltraps> - -00102362 : -.globl vector105 -vector105: - pushl $0 - 102362: 6a 00 push $0x0 - pushl $105 - 102364: 6a 69 push $0x69 - jmp __alltraps - 102366: e9 c6 06 00 00 jmp 102a31 <__alltraps> - -0010236b : -.globl vector106 -vector106: - pushl $0 - 10236b: 6a 00 push $0x0 - pushl $106 - 10236d: 6a 6a push $0x6a - jmp __alltraps - 10236f: e9 bd 06 00 00 jmp 102a31 <__alltraps> - -00102374 : -.globl vector107 -vector107: - pushl $0 - 102374: 6a 00 push $0x0 - pushl $107 - 102376: 6a 6b push $0x6b - jmp __alltraps - 102378: e9 b4 06 00 00 jmp 102a31 <__alltraps> - -0010237d : -.globl vector108 -vector108: - pushl $0 - 10237d: 6a 00 push $0x0 - pushl $108 - 10237f: 6a 6c push $0x6c - jmp __alltraps - 102381: e9 ab 06 00 00 jmp 102a31 <__alltraps> - -00102386 : -.globl vector109 -vector109: - pushl $0 - 102386: 6a 00 push $0x0 - pushl $109 - 102388: 6a 6d push $0x6d - jmp __alltraps - 10238a: e9 a2 06 00 00 jmp 102a31 <__alltraps> - -0010238f : -.globl vector110 -vector110: - pushl $0 - 10238f: 6a 00 push $0x0 - pushl $110 - 102391: 6a 6e push $0x6e - jmp __alltraps - 102393: e9 99 06 00 00 jmp 102a31 <__alltraps> - -00102398 : -.globl vector111 -vector111: - pushl $0 - 102398: 6a 00 push $0x0 - pushl $111 - 10239a: 6a 6f push $0x6f - jmp __alltraps - 10239c: e9 90 06 00 00 jmp 102a31 <__alltraps> - -001023a1 : -.globl vector112 -vector112: - pushl $0 - 1023a1: 6a 00 push $0x0 - pushl $112 - 1023a3: 6a 70 push $0x70 - jmp __alltraps - 1023a5: e9 87 06 00 00 jmp 102a31 <__alltraps> - -001023aa : -.globl vector113 -vector113: - pushl $0 - 1023aa: 6a 00 push $0x0 - pushl $113 - 1023ac: 6a 71 push $0x71 - jmp __alltraps - 1023ae: e9 7e 06 00 00 jmp 102a31 <__alltraps> - -001023b3 : -.globl vector114 -vector114: - pushl $0 - 1023b3: 6a 00 push $0x0 - pushl $114 - 1023b5: 6a 72 push $0x72 - jmp __alltraps - 1023b7: e9 75 06 00 00 jmp 102a31 <__alltraps> - -001023bc : -.globl vector115 -vector115: - pushl $0 - 1023bc: 6a 00 push $0x0 - pushl $115 - 1023be: 6a 73 push $0x73 - jmp __alltraps - 1023c0: e9 6c 06 00 00 jmp 102a31 <__alltraps> - -001023c5 : -.globl vector116 -vector116: - pushl $0 - 1023c5: 6a 00 push $0x0 - pushl $116 - 1023c7: 6a 74 push $0x74 - jmp __alltraps - 1023c9: e9 63 06 00 00 jmp 102a31 <__alltraps> - -001023ce : -.globl vector117 -vector117: - pushl $0 - 1023ce: 6a 00 push $0x0 - pushl $117 - 1023d0: 6a 75 push $0x75 - jmp __alltraps - 1023d2: e9 5a 06 00 00 jmp 102a31 <__alltraps> - -001023d7 : -.globl vector118 -vector118: - pushl $0 - 1023d7: 6a 00 push $0x0 - pushl $118 - 1023d9: 6a 76 push $0x76 - jmp __alltraps - 1023db: e9 51 06 00 00 jmp 102a31 <__alltraps> - -001023e0 : -.globl vector119 -vector119: - pushl $0 - 1023e0: 6a 00 push $0x0 - pushl $119 - 1023e2: 6a 77 push $0x77 - jmp __alltraps - 1023e4: e9 48 06 00 00 jmp 102a31 <__alltraps> - -001023e9 : -.globl vector120 -vector120: - pushl $0 - 1023e9: 6a 00 push $0x0 - pushl $120 - 1023eb: 6a 78 push $0x78 - jmp __alltraps - 1023ed: e9 3f 06 00 00 jmp 102a31 <__alltraps> - -001023f2 : -.globl vector121 -vector121: - pushl $0 - 1023f2: 6a 00 push $0x0 - pushl $121 - 1023f4: 6a 79 push $0x79 - jmp __alltraps - 1023f6: e9 36 06 00 00 jmp 102a31 <__alltraps> - -001023fb : -.globl vector122 -vector122: - pushl $0 - 1023fb: 6a 00 push $0x0 - pushl $122 - 1023fd: 6a 7a push $0x7a - jmp __alltraps - 1023ff: e9 2d 06 00 00 jmp 102a31 <__alltraps> - -00102404 : -.globl vector123 -vector123: - pushl $0 - 102404: 6a 00 push $0x0 - pushl $123 - 102406: 6a 7b push $0x7b - jmp __alltraps - 102408: e9 24 06 00 00 jmp 102a31 <__alltraps> - -0010240d : -.globl vector124 -vector124: - pushl $0 - 10240d: 6a 00 push $0x0 - pushl $124 - 10240f: 6a 7c push $0x7c - jmp __alltraps - 102411: e9 1b 06 00 00 jmp 102a31 <__alltraps> - -00102416 : -.globl vector125 -vector125: - pushl $0 - 102416: 6a 00 push $0x0 - pushl $125 - 102418: 6a 7d push $0x7d - jmp __alltraps - 10241a: e9 12 06 00 00 jmp 102a31 <__alltraps> - -0010241f : -.globl vector126 -vector126: - pushl $0 - 10241f: 6a 00 push $0x0 - pushl $126 - 102421: 6a 7e push $0x7e - jmp __alltraps - 102423: e9 09 06 00 00 jmp 102a31 <__alltraps> - -00102428 : -.globl vector127 -vector127: - pushl $0 - 102428: 6a 00 push $0x0 - pushl $127 - 10242a: 6a 7f push $0x7f - jmp __alltraps - 10242c: e9 00 06 00 00 jmp 102a31 <__alltraps> - -00102431 : -.globl vector128 -vector128: - pushl $0 - 102431: 6a 00 push $0x0 - pushl $128 - 102433: 68 80 00 00 00 push $0x80 - jmp __alltraps - 102438: e9 f4 05 00 00 jmp 102a31 <__alltraps> - -0010243d : -.globl vector129 -vector129: - pushl $0 - 10243d: 6a 00 push $0x0 - pushl $129 - 10243f: 68 81 00 00 00 push $0x81 - jmp __alltraps - 102444: e9 e8 05 00 00 jmp 102a31 <__alltraps> - -00102449 : -.globl vector130 -vector130: - pushl $0 - 102449: 6a 00 push $0x0 - pushl $130 - 10244b: 68 82 00 00 00 push $0x82 - jmp __alltraps - 102450: e9 dc 05 00 00 jmp 102a31 <__alltraps> - -00102455 : -.globl vector131 -vector131: - pushl $0 - 102455: 6a 00 push $0x0 - pushl $131 - 102457: 68 83 00 00 00 push $0x83 - jmp __alltraps - 10245c: e9 d0 05 00 00 jmp 102a31 <__alltraps> - -00102461 : -.globl vector132 -vector132: - pushl $0 - 102461: 6a 00 push $0x0 - pushl $132 - 102463: 68 84 00 00 00 push $0x84 - jmp __alltraps - 102468: e9 c4 05 00 00 jmp 102a31 <__alltraps> - -0010246d : -.globl vector133 -vector133: - pushl $0 - 10246d: 6a 00 push $0x0 - pushl $133 - 10246f: 68 85 00 00 00 push $0x85 - jmp __alltraps - 102474: e9 b8 05 00 00 jmp 102a31 <__alltraps> - -00102479 : -.globl vector134 -vector134: - pushl $0 - 102479: 6a 00 push $0x0 - pushl $134 - 10247b: 68 86 00 00 00 push $0x86 - jmp __alltraps - 102480: e9 ac 05 00 00 jmp 102a31 <__alltraps> - -00102485 : -.globl vector135 -vector135: - pushl $0 - 102485: 6a 00 push $0x0 - pushl $135 - 102487: 68 87 00 00 00 push $0x87 - jmp __alltraps - 10248c: e9 a0 05 00 00 jmp 102a31 <__alltraps> - -00102491 : -.globl vector136 -vector136: - pushl $0 - 102491: 6a 00 push $0x0 - pushl $136 - 102493: 68 88 00 00 00 push $0x88 - jmp __alltraps - 102498: e9 94 05 00 00 jmp 102a31 <__alltraps> - -0010249d : -.globl vector137 -vector137: - pushl $0 - 10249d: 6a 00 push $0x0 - pushl $137 - 10249f: 68 89 00 00 00 push $0x89 - jmp __alltraps - 1024a4: e9 88 05 00 00 jmp 102a31 <__alltraps> - -001024a9 : -.globl vector138 -vector138: - pushl $0 - 1024a9: 6a 00 push $0x0 - pushl $138 - 1024ab: 68 8a 00 00 00 push $0x8a - jmp __alltraps - 1024b0: e9 7c 05 00 00 jmp 102a31 <__alltraps> - -001024b5 : -.globl vector139 -vector139: - pushl $0 - 1024b5: 6a 00 push $0x0 - pushl $139 - 1024b7: 68 8b 00 00 00 push $0x8b - jmp __alltraps - 1024bc: e9 70 05 00 00 jmp 102a31 <__alltraps> - -001024c1 : -.globl vector140 -vector140: - pushl $0 - 1024c1: 6a 00 push $0x0 - pushl $140 - 1024c3: 68 8c 00 00 00 push $0x8c - jmp __alltraps - 1024c8: e9 64 05 00 00 jmp 102a31 <__alltraps> - -001024cd : -.globl vector141 -vector141: - pushl $0 - 1024cd: 6a 00 push $0x0 - pushl $141 - 1024cf: 68 8d 00 00 00 push $0x8d - jmp __alltraps - 1024d4: e9 58 05 00 00 jmp 102a31 <__alltraps> - -001024d9 : -.globl vector142 -vector142: - pushl $0 - 1024d9: 6a 00 push $0x0 - pushl $142 - 1024db: 68 8e 00 00 00 push $0x8e - jmp __alltraps - 1024e0: e9 4c 05 00 00 jmp 102a31 <__alltraps> - -001024e5 : -.globl vector143 -vector143: - pushl $0 - 1024e5: 6a 00 push $0x0 - pushl $143 - 1024e7: 68 8f 00 00 00 push $0x8f - jmp __alltraps - 1024ec: e9 40 05 00 00 jmp 102a31 <__alltraps> - -001024f1 : -.globl vector144 -vector144: - pushl $0 - 1024f1: 6a 00 push $0x0 - pushl $144 - 1024f3: 68 90 00 00 00 push $0x90 - jmp __alltraps - 1024f8: e9 34 05 00 00 jmp 102a31 <__alltraps> - -001024fd : -.globl vector145 -vector145: - pushl $0 - 1024fd: 6a 00 push $0x0 - pushl $145 - 1024ff: 68 91 00 00 00 push $0x91 - jmp __alltraps - 102504: e9 28 05 00 00 jmp 102a31 <__alltraps> - -00102509 : -.globl vector146 -vector146: - pushl $0 - 102509: 6a 00 push $0x0 - pushl $146 - 10250b: 68 92 00 00 00 push $0x92 - jmp __alltraps - 102510: e9 1c 05 00 00 jmp 102a31 <__alltraps> - -00102515 : -.globl vector147 -vector147: - pushl $0 - 102515: 6a 00 push $0x0 - pushl $147 - 102517: 68 93 00 00 00 push $0x93 - jmp __alltraps - 10251c: e9 10 05 00 00 jmp 102a31 <__alltraps> - -00102521 : -.globl vector148 -vector148: - pushl $0 - 102521: 6a 00 push $0x0 - pushl $148 - 102523: 68 94 00 00 00 push $0x94 - jmp __alltraps - 102528: e9 04 05 00 00 jmp 102a31 <__alltraps> - -0010252d : -.globl vector149 -vector149: - pushl $0 - 10252d: 6a 00 push $0x0 - pushl $149 - 10252f: 68 95 00 00 00 push $0x95 - jmp __alltraps - 102534: e9 f8 04 00 00 jmp 102a31 <__alltraps> - -00102539 : -.globl vector150 -vector150: - pushl $0 - 102539: 6a 00 push $0x0 - pushl $150 - 10253b: 68 96 00 00 00 push $0x96 - jmp __alltraps - 102540: e9 ec 04 00 00 jmp 102a31 <__alltraps> - -00102545 : -.globl vector151 -vector151: - pushl $0 - 102545: 6a 00 push $0x0 - pushl $151 - 102547: 68 97 00 00 00 push $0x97 - jmp __alltraps - 10254c: e9 e0 04 00 00 jmp 102a31 <__alltraps> - -00102551 : -.globl vector152 -vector152: - pushl $0 - 102551: 6a 00 push $0x0 - pushl $152 - 102553: 68 98 00 00 00 push $0x98 - jmp __alltraps - 102558: e9 d4 04 00 00 jmp 102a31 <__alltraps> - -0010255d : -.globl vector153 -vector153: - pushl $0 - 10255d: 6a 00 push $0x0 - pushl $153 - 10255f: 68 99 00 00 00 push $0x99 - jmp __alltraps - 102564: e9 c8 04 00 00 jmp 102a31 <__alltraps> - -00102569 : -.globl vector154 -vector154: - pushl $0 - 102569: 6a 00 push $0x0 - pushl $154 - 10256b: 68 9a 00 00 00 push $0x9a - jmp __alltraps - 102570: e9 bc 04 00 00 jmp 102a31 <__alltraps> - -00102575 : -.globl vector155 -vector155: - pushl $0 - 102575: 6a 00 push $0x0 - pushl $155 - 102577: 68 9b 00 00 00 push $0x9b - jmp __alltraps - 10257c: e9 b0 04 00 00 jmp 102a31 <__alltraps> - -00102581 : -.globl vector156 -vector156: - pushl $0 - 102581: 6a 00 push $0x0 - pushl $156 - 102583: 68 9c 00 00 00 push $0x9c - jmp __alltraps - 102588: e9 a4 04 00 00 jmp 102a31 <__alltraps> - -0010258d : -.globl vector157 -vector157: - pushl $0 - 10258d: 6a 00 push $0x0 - pushl $157 - 10258f: 68 9d 00 00 00 push $0x9d - jmp __alltraps - 102594: e9 98 04 00 00 jmp 102a31 <__alltraps> - -00102599 : -.globl vector158 -vector158: - pushl $0 - 102599: 6a 00 push $0x0 - pushl $158 - 10259b: 68 9e 00 00 00 push $0x9e - jmp __alltraps - 1025a0: e9 8c 04 00 00 jmp 102a31 <__alltraps> - -001025a5 : -.globl vector159 -vector159: - pushl $0 - 1025a5: 6a 00 push $0x0 - pushl $159 - 1025a7: 68 9f 00 00 00 push $0x9f - jmp __alltraps - 1025ac: e9 80 04 00 00 jmp 102a31 <__alltraps> - -001025b1 : -.globl vector160 -vector160: - pushl $0 - 1025b1: 6a 00 push $0x0 - pushl $160 - 1025b3: 68 a0 00 00 00 push $0xa0 - jmp __alltraps - 1025b8: e9 74 04 00 00 jmp 102a31 <__alltraps> - -001025bd : -.globl vector161 -vector161: - pushl $0 - 1025bd: 6a 00 push $0x0 - pushl $161 - 1025bf: 68 a1 00 00 00 push $0xa1 - jmp __alltraps - 1025c4: e9 68 04 00 00 jmp 102a31 <__alltraps> - -001025c9 : -.globl vector162 -vector162: - pushl $0 - 1025c9: 6a 00 push $0x0 - pushl $162 - 1025cb: 68 a2 00 00 00 push $0xa2 - jmp __alltraps - 1025d0: e9 5c 04 00 00 jmp 102a31 <__alltraps> - -001025d5 : -.globl vector163 -vector163: - pushl $0 - 1025d5: 6a 00 push $0x0 - pushl $163 - 1025d7: 68 a3 00 00 00 push $0xa3 - jmp __alltraps - 1025dc: e9 50 04 00 00 jmp 102a31 <__alltraps> - -001025e1 : -.globl vector164 -vector164: - pushl $0 - 1025e1: 6a 00 push $0x0 - pushl $164 - 1025e3: 68 a4 00 00 00 push $0xa4 - jmp __alltraps - 1025e8: e9 44 04 00 00 jmp 102a31 <__alltraps> - -001025ed : -.globl vector165 -vector165: - pushl $0 - 1025ed: 6a 00 push $0x0 - pushl $165 - 1025ef: 68 a5 00 00 00 push $0xa5 - jmp __alltraps - 1025f4: e9 38 04 00 00 jmp 102a31 <__alltraps> - -001025f9 : -.globl vector166 -vector166: - pushl $0 - 1025f9: 6a 00 push $0x0 - pushl $166 - 1025fb: 68 a6 00 00 00 push $0xa6 - jmp __alltraps - 102600: e9 2c 04 00 00 jmp 102a31 <__alltraps> - -00102605 : -.globl vector167 -vector167: - pushl $0 - 102605: 6a 00 push $0x0 - pushl $167 - 102607: 68 a7 00 00 00 push $0xa7 - jmp __alltraps - 10260c: e9 20 04 00 00 jmp 102a31 <__alltraps> - -00102611 : -.globl vector168 -vector168: - pushl $0 - 102611: 6a 00 push $0x0 - pushl $168 - 102613: 68 a8 00 00 00 push $0xa8 - jmp __alltraps - 102618: e9 14 04 00 00 jmp 102a31 <__alltraps> - -0010261d : -.globl vector169 -vector169: - pushl $0 - 10261d: 6a 00 push $0x0 - pushl $169 - 10261f: 68 a9 00 00 00 push $0xa9 - jmp __alltraps - 102624: e9 08 04 00 00 jmp 102a31 <__alltraps> - -00102629 : -.globl vector170 -vector170: - pushl $0 - 102629: 6a 00 push $0x0 - pushl $170 - 10262b: 68 aa 00 00 00 push $0xaa - jmp __alltraps - 102630: e9 fc 03 00 00 jmp 102a31 <__alltraps> - -00102635 : -.globl vector171 -vector171: - pushl $0 - 102635: 6a 00 push $0x0 - pushl $171 - 102637: 68 ab 00 00 00 push $0xab - jmp __alltraps - 10263c: e9 f0 03 00 00 jmp 102a31 <__alltraps> - -00102641 : -.globl vector172 -vector172: - pushl $0 - 102641: 6a 00 push $0x0 - pushl $172 - 102643: 68 ac 00 00 00 push $0xac - jmp __alltraps - 102648: e9 e4 03 00 00 jmp 102a31 <__alltraps> - -0010264d : -.globl vector173 -vector173: - pushl $0 - 10264d: 6a 00 push $0x0 - pushl $173 - 10264f: 68 ad 00 00 00 push $0xad - jmp __alltraps - 102654: e9 d8 03 00 00 jmp 102a31 <__alltraps> - -00102659 : -.globl vector174 -vector174: - pushl $0 - 102659: 6a 00 push $0x0 - pushl $174 - 10265b: 68 ae 00 00 00 push $0xae - jmp __alltraps - 102660: e9 cc 03 00 00 jmp 102a31 <__alltraps> - -00102665 : -.globl vector175 -vector175: - pushl $0 - 102665: 6a 00 push $0x0 - pushl $175 - 102667: 68 af 00 00 00 push $0xaf - jmp __alltraps - 10266c: e9 c0 03 00 00 jmp 102a31 <__alltraps> - -00102671 : -.globl vector176 -vector176: - pushl $0 - 102671: 6a 00 push $0x0 - pushl $176 - 102673: 68 b0 00 00 00 push $0xb0 - jmp __alltraps - 102678: e9 b4 03 00 00 jmp 102a31 <__alltraps> - -0010267d : -.globl vector177 -vector177: - pushl $0 - 10267d: 6a 00 push $0x0 - pushl $177 - 10267f: 68 b1 00 00 00 push $0xb1 - jmp __alltraps - 102684: e9 a8 03 00 00 jmp 102a31 <__alltraps> - -00102689 : -.globl vector178 -vector178: - pushl $0 - 102689: 6a 00 push $0x0 - pushl $178 - 10268b: 68 b2 00 00 00 push $0xb2 - jmp __alltraps - 102690: e9 9c 03 00 00 jmp 102a31 <__alltraps> - -00102695 : -.globl vector179 -vector179: - pushl $0 - 102695: 6a 00 push $0x0 - pushl $179 - 102697: 68 b3 00 00 00 push $0xb3 - jmp __alltraps - 10269c: e9 90 03 00 00 jmp 102a31 <__alltraps> - -001026a1 : -.globl vector180 -vector180: - pushl $0 - 1026a1: 6a 00 push $0x0 - pushl $180 - 1026a3: 68 b4 00 00 00 push $0xb4 - jmp __alltraps - 1026a8: e9 84 03 00 00 jmp 102a31 <__alltraps> - -001026ad : -.globl vector181 -vector181: - pushl $0 - 1026ad: 6a 00 push $0x0 - pushl $181 - 1026af: 68 b5 00 00 00 push $0xb5 - jmp __alltraps - 1026b4: e9 78 03 00 00 jmp 102a31 <__alltraps> - -001026b9 : -.globl vector182 -vector182: - pushl $0 - 1026b9: 6a 00 push $0x0 - pushl $182 - 1026bb: 68 b6 00 00 00 push $0xb6 - jmp __alltraps - 1026c0: e9 6c 03 00 00 jmp 102a31 <__alltraps> - -001026c5 : -.globl vector183 -vector183: - pushl $0 - 1026c5: 6a 00 push $0x0 - pushl $183 - 1026c7: 68 b7 00 00 00 push $0xb7 - jmp __alltraps - 1026cc: e9 60 03 00 00 jmp 102a31 <__alltraps> - -001026d1 : -.globl vector184 -vector184: - pushl $0 - 1026d1: 6a 00 push $0x0 - pushl $184 - 1026d3: 68 b8 00 00 00 push $0xb8 - jmp __alltraps - 1026d8: e9 54 03 00 00 jmp 102a31 <__alltraps> - -001026dd : -.globl vector185 -vector185: - pushl $0 - 1026dd: 6a 00 push $0x0 - pushl $185 - 1026df: 68 b9 00 00 00 push $0xb9 - jmp __alltraps - 1026e4: e9 48 03 00 00 jmp 102a31 <__alltraps> - -001026e9 : -.globl vector186 -vector186: - pushl $0 - 1026e9: 6a 00 push $0x0 - pushl $186 - 1026eb: 68 ba 00 00 00 push $0xba - jmp __alltraps - 1026f0: e9 3c 03 00 00 jmp 102a31 <__alltraps> - -001026f5 : -.globl vector187 -vector187: - pushl $0 - 1026f5: 6a 00 push $0x0 - pushl $187 - 1026f7: 68 bb 00 00 00 push $0xbb - jmp __alltraps - 1026fc: e9 30 03 00 00 jmp 102a31 <__alltraps> - -00102701 : -.globl vector188 -vector188: - pushl $0 - 102701: 6a 00 push $0x0 - pushl $188 - 102703: 68 bc 00 00 00 push $0xbc - jmp __alltraps - 102708: e9 24 03 00 00 jmp 102a31 <__alltraps> - -0010270d : -.globl vector189 -vector189: - pushl $0 - 10270d: 6a 00 push $0x0 - pushl $189 - 10270f: 68 bd 00 00 00 push $0xbd - jmp __alltraps - 102714: e9 18 03 00 00 jmp 102a31 <__alltraps> - -00102719 : -.globl vector190 -vector190: - pushl $0 - 102719: 6a 00 push $0x0 - pushl $190 - 10271b: 68 be 00 00 00 push $0xbe - jmp __alltraps - 102720: e9 0c 03 00 00 jmp 102a31 <__alltraps> - -00102725 : -.globl vector191 -vector191: - pushl $0 - 102725: 6a 00 push $0x0 - pushl $191 - 102727: 68 bf 00 00 00 push $0xbf - jmp __alltraps - 10272c: e9 00 03 00 00 jmp 102a31 <__alltraps> - -00102731 : -.globl vector192 -vector192: - pushl $0 - 102731: 6a 00 push $0x0 - pushl $192 - 102733: 68 c0 00 00 00 push $0xc0 - jmp __alltraps - 102738: e9 f4 02 00 00 jmp 102a31 <__alltraps> - -0010273d : -.globl vector193 -vector193: - pushl $0 - 10273d: 6a 00 push $0x0 - pushl $193 - 10273f: 68 c1 00 00 00 push $0xc1 - jmp __alltraps - 102744: e9 e8 02 00 00 jmp 102a31 <__alltraps> - -00102749 : -.globl vector194 -vector194: - pushl $0 - 102749: 6a 00 push $0x0 - pushl $194 - 10274b: 68 c2 00 00 00 push $0xc2 - jmp __alltraps - 102750: e9 dc 02 00 00 jmp 102a31 <__alltraps> - -00102755 : -.globl vector195 -vector195: - pushl $0 - 102755: 6a 00 push $0x0 - pushl $195 - 102757: 68 c3 00 00 00 push $0xc3 - jmp __alltraps - 10275c: e9 d0 02 00 00 jmp 102a31 <__alltraps> - -00102761 : -.globl vector196 -vector196: - pushl $0 - 102761: 6a 00 push $0x0 - pushl $196 - 102763: 68 c4 00 00 00 push $0xc4 - jmp __alltraps - 102768: e9 c4 02 00 00 jmp 102a31 <__alltraps> - -0010276d : -.globl vector197 -vector197: - pushl $0 - 10276d: 6a 00 push $0x0 - pushl $197 - 10276f: 68 c5 00 00 00 push $0xc5 - jmp __alltraps - 102774: e9 b8 02 00 00 jmp 102a31 <__alltraps> - -00102779 : -.globl vector198 -vector198: - pushl $0 - 102779: 6a 00 push $0x0 - pushl $198 - 10277b: 68 c6 00 00 00 push $0xc6 - jmp __alltraps - 102780: e9 ac 02 00 00 jmp 102a31 <__alltraps> - -00102785 : -.globl vector199 -vector199: - pushl $0 - 102785: 6a 00 push $0x0 - pushl $199 - 102787: 68 c7 00 00 00 push $0xc7 - jmp __alltraps - 10278c: e9 a0 02 00 00 jmp 102a31 <__alltraps> - -00102791 : -.globl vector200 -vector200: - pushl $0 - 102791: 6a 00 push $0x0 - pushl $200 - 102793: 68 c8 00 00 00 push $0xc8 - jmp __alltraps - 102798: e9 94 02 00 00 jmp 102a31 <__alltraps> - -0010279d : -.globl vector201 -vector201: - pushl $0 - 10279d: 6a 00 push $0x0 - pushl $201 - 10279f: 68 c9 00 00 00 push $0xc9 - jmp __alltraps - 1027a4: e9 88 02 00 00 jmp 102a31 <__alltraps> - -001027a9 : -.globl vector202 -vector202: - pushl $0 - 1027a9: 6a 00 push $0x0 - pushl $202 - 1027ab: 68 ca 00 00 00 push $0xca - jmp __alltraps - 1027b0: e9 7c 02 00 00 jmp 102a31 <__alltraps> - -001027b5 : -.globl vector203 -vector203: - pushl $0 - 1027b5: 6a 00 push $0x0 - pushl $203 - 1027b7: 68 cb 00 00 00 push $0xcb - jmp __alltraps - 1027bc: e9 70 02 00 00 jmp 102a31 <__alltraps> - -001027c1 : -.globl vector204 -vector204: - pushl $0 - 1027c1: 6a 00 push $0x0 - pushl $204 - 1027c3: 68 cc 00 00 00 push $0xcc - jmp __alltraps - 1027c8: e9 64 02 00 00 jmp 102a31 <__alltraps> - -001027cd : -.globl vector205 -vector205: - pushl $0 - 1027cd: 6a 00 push $0x0 - pushl $205 - 1027cf: 68 cd 00 00 00 push $0xcd - jmp __alltraps - 1027d4: e9 58 02 00 00 jmp 102a31 <__alltraps> - -001027d9 : -.globl vector206 -vector206: - pushl $0 - 1027d9: 6a 00 push $0x0 - pushl $206 - 1027db: 68 ce 00 00 00 push $0xce - jmp __alltraps - 1027e0: e9 4c 02 00 00 jmp 102a31 <__alltraps> - -001027e5 : -.globl vector207 -vector207: - pushl $0 - 1027e5: 6a 00 push $0x0 - pushl $207 - 1027e7: 68 cf 00 00 00 push $0xcf - jmp __alltraps - 1027ec: e9 40 02 00 00 jmp 102a31 <__alltraps> - -001027f1 : -.globl vector208 -vector208: - pushl $0 - 1027f1: 6a 00 push $0x0 - pushl $208 - 1027f3: 68 d0 00 00 00 push $0xd0 - jmp __alltraps - 1027f8: e9 34 02 00 00 jmp 102a31 <__alltraps> - -001027fd : -.globl vector209 -vector209: - pushl $0 - 1027fd: 6a 00 push $0x0 - pushl $209 - 1027ff: 68 d1 00 00 00 push $0xd1 - jmp __alltraps - 102804: e9 28 02 00 00 jmp 102a31 <__alltraps> - -00102809 : -.globl vector210 -vector210: - pushl $0 - 102809: 6a 00 push $0x0 - pushl $210 - 10280b: 68 d2 00 00 00 push $0xd2 - jmp __alltraps - 102810: e9 1c 02 00 00 jmp 102a31 <__alltraps> - -00102815 : -.globl vector211 -vector211: - pushl $0 - 102815: 6a 00 push $0x0 - pushl $211 - 102817: 68 d3 00 00 00 push $0xd3 - jmp __alltraps - 10281c: e9 10 02 00 00 jmp 102a31 <__alltraps> - -00102821 : -.globl vector212 -vector212: - pushl $0 - 102821: 6a 00 push $0x0 - pushl $212 - 102823: 68 d4 00 00 00 push $0xd4 - jmp __alltraps - 102828: e9 04 02 00 00 jmp 102a31 <__alltraps> - -0010282d : -.globl vector213 -vector213: - pushl $0 - 10282d: 6a 00 push $0x0 - pushl $213 - 10282f: 68 d5 00 00 00 push $0xd5 - jmp __alltraps - 102834: e9 f8 01 00 00 jmp 102a31 <__alltraps> - -00102839 : -.globl vector214 -vector214: - pushl $0 - 102839: 6a 00 push $0x0 - pushl $214 - 10283b: 68 d6 00 00 00 push $0xd6 - jmp __alltraps - 102840: e9 ec 01 00 00 jmp 102a31 <__alltraps> - -00102845 : -.globl vector215 -vector215: - pushl $0 - 102845: 6a 00 push $0x0 - pushl $215 - 102847: 68 d7 00 00 00 push $0xd7 - jmp __alltraps - 10284c: e9 e0 01 00 00 jmp 102a31 <__alltraps> - -00102851 : -.globl vector216 -vector216: - pushl $0 - 102851: 6a 00 push $0x0 - pushl $216 - 102853: 68 d8 00 00 00 push $0xd8 - jmp __alltraps - 102858: e9 d4 01 00 00 jmp 102a31 <__alltraps> - -0010285d : -.globl vector217 -vector217: - pushl $0 - 10285d: 6a 00 push $0x0 - pushl $217 - 10285f: 68 d9 00 00 00 push $0xd9 - jmp __alltraps - 102864: e9 c8 01 00 00 jmp 102a31 <__alltraps> - -00102869 : -.globl vector218 -vector218: - pushl $0 - 102869: 6a 00 push $0x0 - pushl $218 - 10286b: 68 da 00 00 00 push $0xda - jmp __alltraps - 102870: e9 bc 01 00 00 jmp 102a31 <__alltraps> - -00102875 : -.globl vector219 -vector219: - pushl $0 - 102875: 6a 00 push $0x0 - pushl $219 - 102877: 68 db 00 00 00 push $0xdb - jmp __alltraps - 10287c: e9 b0 01 00 00 jmp 102a31 <__alltraps> - -00102881 : -.globl vector220 -vector220: - pushl $0 - 102881: 6a 00 push $0x0 - pushl $220 - 102883: 68 dc 00 00 00 push $0xdc - jmp __alltraps - 102888: e9 a4 01 00 00 jmp 102a31 <__alltraps> - -0010288d : -.globl vector221 -vector221: - pushl $0 - 10288d: 6a 00 push $0x0 - pushl $221 - 10288f: 68 dd 00 00 00 push $0xdd - jmp __alltraps - 102894: e9 98 01 00 00 jmp 102a31 <__alltraps> - -00102899 : -.globl vector222 -vector222: - pushl $0 - 102899: 6a 00 push $0x0 - pushl $222 - 10289b: 68 de 00 00 00 push $0xde - jmp __alltraps - 1028a0: e9 8c 01 00 00 jmp 102a31 <__alltraps> - -001028a5 : -.globl vector223 -vector223: - pushl $0 - 1028a5: 6a 00 push $0x0 - pushl $223 - 1028a7: 68 df 00 00 00 push $0xdf - jmp __alltraps - 1028ac: e9 80 01 00 00 jmp 102a31 <__alltraps> - -001028b1 : -.globl vector224 -vector224: - pushl $0 - 1028b1: 6a 00 push $0x0 - pushl $224 - 1028b3: 68 e0 00 00 00 push $0xe0 - jmp __alltraps - 1028b8: e9 74 01 00 00 jmp 102a31 <__alltraps> - -001028bd : -.globl vector225 -vector225: - pushl $0 - 1028bd: 6a 00 push $0x0 - pushl $225 - 1028bf: 68 e1 00 00 00 push $0xe1 - jmp __alltraps - 1028c4: e9 68 01 00 00 jmp 102a31 <__alltraps> - -001028c9 : -.globl vector226 -vector226: - pushl $0 - 1028c9: 6a 00 push $0x0 - pushl $226 - 1028cb: 68 e2 00 00 00 push $0xe2 - jmp __alltraps - 1028d0: e9 5c 01 00 00 jmp 102a31 <__alltraps> - -001028d5 : -.globl vector227 -vector227: - pushl $0 - 1028d5: 6a 00 push $0x0 - pushl $227 - 1028d7: 68 e3 00 00 00 push $0xe3 - jmp __alltraps - 1028dc: e9 50 01 00 00 jmp 102a31 <__alltraps> - -001028e1 : -.globl vector228 -vector228: - pushl $0 - 1028e1: 6a 00 push $0x0 - pushl $228 - 1028e3: 68 e4 00 00 00 push $0xe4 - jmp __alltraps - 1028e8: e9 44 01 00 00 jmp 102a31 <__alltraps> - -001028ed : -.globl vector229 -vector229: - pushl $0 - 1028ed: 6a 00 push $0x0 - pushl $229 - 1028ef: 68 e5 00 00 00 push $0xe5 - jmp __alltraps - 1028f4: e9 38 01 00 00 jmp 102a31 <__alltraps> - -001028f9 : -.globl vector230 -vector230: - pushl $0 - 1028f9: 6a 00 push $0x0 - pushl $230 - 1028fb: 68 e6 00 00 00 push $0xe6 - jmp __alltraps - 102900: e9 2c 01 00 00 jmp 102a31 <__alltraps> - -00102905 : -.globl vector231 -vector231: - pushl $0 - 102905: 6a 00 push $0x0 - pushl $231 - 102907: 68 e7 00 00 00 push $0xe7 - jmp __alltraps - 10290c: e9 20 01 00 00 jmp 102a31 <__alltraps> - -00102911 : -.globl vector232 -vector232: - pushl $0 - 102911: 6a 00 push $0x0 - pushl $232 - 102913: 68 e8 00 00 00 push $0xe8 - jmp __alltraps - 102918: e9 14 01 00 00 jmp 102a31 <__alltraps> - -0010291d : -.globl vector233 -vector233: - pushl $0 - 10291d: 6a 00 push $0x0 - pushl $233 - 10291f: 68 e9 00 00 00 push $0xe9 - jmp __alltraps - 102924: e9 08 01 00 00 jmp 102a31 <__alltraps> - -00102929 : -.globl vector234 -vector234: - pushl $0 - 102929: 6a 00 push $0x0 - pushl $234 - 10292b: 68 ea 00 00 00 push $0xea - jmp __alltraps - 102930: e9 fc 00 00 00 jmp 102a31 <__alltraps> - -00102935 : -.globl vector235 -vector235: - pushl $0 - 102935: 6a 00 push $0x0 - pushl $235 - 102937: 68 eb 00 00 00 push $0xeb - jmp __alltraps - 10293c: e9 f0 00 00 00 jmp 102a31 <__alltraps> - -00102941 : -.globl vector236 -vector236: - pushl $0 - 102941: 6a 00 push $0x0 - pushl $236 - 102943: 68 ec 00 00 00 push $0xec - jmp __alltraps - 102948: e9 e4 00 00 00 jmp 102a31 <__alltraps> - -0010294d : -.globl vector237 -vector237: - pushl $0 - 10294d: 6a 00 push $0x0 - pushl $237 - 10294f: 68 ed 00 00 00 push $0xed - jmp __alltraps - 102954: e9 d8 00 00 00 jmp 102a31 <__alltraps> - -00102959 : -.globl vector238 -vector238: - pushl $0 - 102959: 6a 00 push $0x0 - pushl $238 - 10295b: 68 ee 00 00 00 push $0xee - jmp __alltraps - 102960: e9 cc 00 00 00 jmp 102a31 <__alltraps> - -00102965 : -.globl vector239 -vector239: - pushl $0 - 102965: 6a 00 push $0x0 - pushl $239 - 102967: 68 ef 00 00 00 push $0xef - jmp __alltraps - 10296c: e9 c0 00 00 00 jmp 102a31 <__alltraps> - -00102971 : -.globl vector240 -vector240: - pushl $0 - 102971: 6a 00 push $0x0 - pushl $240 - 102973: 68 f0 00 00 00 push $0xf0 - jmp __alltraps - 102978: e9 b4 00 00 00 jmp 102a31 <__alltraps> - -0010297d : -.globl vector241 -vector241: - pushl $0 - 10297d: 6a 00 push $0x0 - pushl $241 - 10297f: 68 f1 00 00 00 push $0xf1 - jmp __alltraps - 102984: e9 a8 00 00 00 jmp 102a31 <__alltraps> - -00102989 : -.globl vector242 -vector242: - pushl $0 - 102989: 6a 00 push $0x0 - pushl $242 - 10298b: 68 f2 00 00 00 push $0xf2 - jmp __alltraps - 102990: e9 9c 00 00 00 jmp 102a31 <__alltraps> - -00102995 : -.globl vector243 -vector243: - pushl $0 - 102995: 6a 00 push $0x0 - pushl $243 - 102997: 68 f3 00 00 00 push $0xf3 - jmp __alltraps - 10299c: e9 90 00 00 00 jmp 102a31 <__alltraps> - -001029a1 : -.globl vector244 -vector244: - pushl $0 - 1029a1: 6a 00 push $0x0 - pushl $244 - 1029a3: 68 f4 00 00 00 push $0xf4 - jmp __alltraps - 1029a8: e9 84 00 00 00 jmp 102a31 <__alltraps> - -001029ad : -.globl vector245 -vector245: - pushl $0 - 1029ad: 6a 00 push $0x0 - pushl $245 - 1029af: 68 f5 00 00 00 push $0xf5 - jmp __alltraps - 1029b4: e9 78 00 00 00 jmp 102a31 <__alltraps> - -001029b9 : -.globl vector246 -vector246: - pushl $0 - 1029b9: 6a 00 push $0x0 - pushl $246 - 1029bb: 68 f6 00 00 00 push $0xf6 - jmp __alltraps - 1029c0: e9 6c 00 00 00 jmp 102a31 <__alltraps> - -001029c5 : -.globl vector247 -vector247: - pushl $0 - 1029c5: 6a 00 push $0x0 - pushl $247 - 1029c7: 68 f7 00 00 00 push $0xf7 - jmp __alltraps - 1029cc: e9 60 00 00 00 jmp 102a31 <__alltraps> - -001029d1 : -.globl vector248 -vector248: - pushl $0 - 1029d1: 6a 00 push $0x0 - pushl $248 - 1029d3: 68 f8 00 00 00 push $0xf8 - jmp __alltraps - 1029d8: e9 54 00 00 00 jmp 102a31 <__alltraps> - -001029dd : -.globl vector249 -vector249: - pushl $0 - 1029dd: 6a 00 push $0x0 - pushl $249 - 1029df: 68 f9 00 00 00 push $0xf9 - jmp __alltraps - 1029e4: e9 48 00 00 00 jmp 102a31 <__alltraps> - -001029e9 : -.globl vector250 -vector250: - pushl $0 - 1029e9: 6a 00 push $0x0 - pushl $250 - 1029eb: 68 fa 00 00 00 push $0xfa - jmp __alltraps - 1029f0: e9 3c 00 00 00 jmp 102a31 <__alltraps> - -001029f5 : -.globl vector251 -vector251: - pushl $0 - 1029f5: 6a 00 push $0x0 - pushl $251 - 1029f7: 68 fb 00 00 00 push $0xfb - jmp __alltraps - 1029fc: e9 30 00 00 00 jmp 102a31 <__alltraps> - -00102a01 : -.globl vector252 -vector252: - pushl $0 - 102a01: 6a 00 push $0x0 - pushl $252 - 102a03: 68 fc 00 00 00 push $0xfc - jmp __alltraps - 102a08: e9 24 00 00 00 jmp 102a31 <__alltraps> - -00102a0d : -.globl vector253 -vector253: - pushl $0 - 102a0d: 6a 00 push $0x0 - pushl $253 - 102a0f: 68 fd 00 00 00 push $0xfd - jmp __alltraps - 102a14: e9 18 00 00 00 jmp 102a31 <__alltraps> - -00102a19 : -.globl vector254 -vector254: - pushl $0 - 102a19: 6a 00 push $0x0 - pushl $254 - 102a1b: 68 fe 00 00 00 push $0xfe - jmp __alltraps - 102a20: e9 0c 00 00 00 jmp 102a31 <__alltraps> - -00102a25 : -.globl vector255 -vector255: - pushl $0 - 102a25: 6a 00 push $0x0 - pushl $255 - 102a27: 68 ff 00 00 00 push $0xff - jmp __alltraps - 102a2c: e9 00 00 00 00 jmp 102a31 <__alltraps> - -00102a31 <__alltraps>: -.text -.globl __alltraps -__alltraps: - # push registers to build a trap frame - # therefore make the stack look like a struct trapframe - pushl %ds - 102a31: 1e push %ds - pushl %es - 102a32: 06 push %es - pushl %fs - 102a33: 0f a0 push %fs - pushl %gs - 102a35: 0f a8 push %gs - pushal - 102a37: 60 pusha - - # load GD_KDATA into %ds and %es to set up data segments for kernel - movl $GD_KDATA, %eax - 102a38: b8 10 00 00 00 mov $0x10,%eax - movw %ax, %ds - 102a3d: 8e d8 mov %eax,%ds - movw %ax, %es - 102a3f: 8e c0 mov %eax,%es - - # push %esp to pass a pointer to the trapframe as an argument to trap() - pushl %esp - 102a41: 54 push %esp - - # call trap(tf), where tf=%esp - call trap - 102a42: e8 63 f5 ff ff call 101faa - - # pop the pushed stack pointer - popl %esp - 102a47: 5c pop %esp - -00102a48 <__trapret>: - - # return falls through to trapret... -.globl __trapret -__trapret: - # restore registers from stack - popal - 102a48: 61 popa - - # restore %ds, %es, %fs and %gs - popl %gs - 102a49: 0f a9 pop %gs - popl %fs - 102a4b: 0f a1 pop %fs - popl %es - 102a4d: 07 pop %es - popl %ds - 102a4e: 1f pop %ds - - # get rid of the trap number and error code - addl $0x8, %esp - 102a4f: 83 c4 08 add $0x8,%esp - iret - 102a52: cf iret - -00102a53 : - -extern struct Page *pages; -extern size_t npage; - -static inline ppn_t -page2ppn(struct Page *page) { - 102a53: 55 push %ebp - 102a54: 89 e5 mov %esp,%ebp - return page - pages; - 102a56: 8b 45 08 mov 0x8(%ebp),%eax - 102a59: 8b 15 64 a9 11 00 mov 0x11a964,%edx - 102a5f: 29 d0 sub %edx,%eax - 102a61: c1 f8 02 sar $0x2,%eax - 102a64: 69 c0 cd cc cc cc imul $0xcccccccd,%eax,%eax -} - 102a6a: 5d pop %ebp - 102a6b: c3 ret - -00102a6c : - -static inline uintptr_t -page2pa(struct Page *page) { - 102a6c: 55 push %ebp - 102a6d: 89 e5 mov %esp,%ebp - return page2ppn(page) << PGSHIFT; - 102a6f: ff 75 08 pushl 0x8(%ebp) - 102a72: e8 dc ff ff ff call 102a53 - 102a77: 83 c4 04 add $0x4,%esp - 102a7a: c1 e0 0c shl $0xc,%eax -} - 102a7d: c9 leave - 102a7e: c3 ret - -00102a7f : - -static inline struct Page * -pa2page(uintptr_t pa) { - 102a7f: 55 push %ebp - 102a80: 89 e5 mov %esp,%ebp - 102a82: 83 ec 08 sub $0x8,%esp - if (PPN(pa) >= npage) { - 102a85: 8b 45 08 mov 0x8(%ebp),%eax - 102a88: c1 e8 0c shr $0xc,%eax - 102a8b: 89 c2 mov %eax,%edx - 102a8d: a1 c0 a8 11 00 mov 0x11a8c0,%eax - 102a92: 39 c2 cmp %eax,%edx - 102a94: 72 14 jb 102aaa - panic("pa2page called with invalid pa"); - 102a96: 83 ec 04 sub $0x4,%esp - 102a99: 68 50 70 10 00 push $0x107050 - 102a9e: 6a 5a push $0x5a - 102aa0: 68 6f 70 10 00 push $0x10706f - 102aa5: e8 23 d9 ff ff call 1003cd <__panic> - } - return &pages[PPN(pa)]; - 102aaa: 8b 0d 64 a9 11 00 mov 0x11a964,%ecx - 102ab0: 8b 45 08 mov 0x8(%ebp),%eax - 102ab3: c1 e8 0c shr $0xc,%eax - 102ab6: 89 c2 mov %eax,%edx - 102ab8: 89 d0 mov %edx,%eax - 102aba: c1 e0 02 shl $0x2,%eax - 102abd: 01 d0 add %edx,%eax - 102abf: c1 e0 02 shl $0x2,%eax - 102ac2: 01 c8 add %ecx,%eax -} - 102ac4: c9 leave - 102ac5: c3 ret - -00102ac6 : - -static inline void * -page2kva(struct Page *page) { - 102ac6: 55 push %ebp - 102ac7: 89 e5 mov %esp,%ebp - 102ac9: 83 ec 18 sub $0x18,%esp - return KADDR(page2pa(page)); - 102acc: ff 75 08 pushl 0x8(%ebp) - 102acf: e8 98 ff ff ff call 102a6c - 102ad4: 83 c4 04 add $0x4,%esp - 102ad7: 89 45 f4 mov %eax,-0xc(%ebp) - 102ada: 8b 45 f4 mov -0xc(%ebp),%eax - 102add: c1 e8 0c shr $0xc,%eax - 102ae0: 89 45 f0 mov %eax,-0x10(%ebp) - 102ae3: a1 c0 a8 11 00 mov 0x11a8c0,%eax - 102ae8: 39 45 f0 cmp %eax,-0x10(%ebp) - 102aeb: 72 14 jb 102b01 - 102aed: ff 75 f4 pushl -0xc(%ebp) - 102af0: 68 80 70 10 00 push $0x107080 - 102af5: 6a 61 push $0x61 - 102af7: 68 6f 70 10 00 push $0x10706f - 102afc: e8 cc d8 ff ff call 1003cd <__panic> - 102b01: 8b 45 f4 mov -0xc(%ebp),%eax - 102b04: 2d 00 00 00 40 sub $0x40000000,%eax -} - 102b09: c9 leave - 102b0a: c3 ret - -00102b0b : -kva2page(void *kva) { - return pa2page(PADDR(kva)); -} - -static inline struct Page * -pte2page(pte_t pte) { - 102b0b: 55 push %ebp - 102b0c: 89 e5 mov %esp,%ebp - 102b0e: 83 ec 08 sub $0x8,%esp - if (!(pte & PTE_P)) { - 102b11: 8b 45 08 mov 0x8(%ebp),%eax - 102b14: 83 e0 01 and $0x1,%eax - 102b17: 85 c0 test %eax,%eax - 102b19: 75 14 jne 102b2f - panic("pte2page called with invalid pte"); - 102b1b: 83 ec 04 sub $0x4,%esp - 102b1e: 68 a4 70 10 00 push $0x1070a4 - 102b23: 6a 6c push $0x6c - 102b25: 68 6f 70 10 00 push $0x10706f - 102b2a: e8 9e d8 ff ff call 1003cd <__panic> - } - return pa2page(PTE_ADDR(pte)); - 102b2f: 8b 45 08 mov 0x8(%ebp),%eax - 102b32: 25 00 f0 ff ff and $0xfffff000,%eax - 102b37: 83 ec 0c sub $0xc,%esp - 102b3a: 50 push %eax - 102b3b: e8 3f ff ff ff call 102a7f - 102b40: 83 c4 10 add $0x10,%esp -} - 102b43: c9 leave - 102b44: c3 ret - -00102b45 : - -static inline struct Page * -pde2page(pde_t pde) { - 102b45: 55 push %ebp - 102b46: 89 e5 mov %esp,%ebp - 102b48: 83 ec 08 sub $0x8,%esp - return pa2page(PDE_ADDR(pde)); - 102b4b: 8b 45 08 mov 0x8(%ebp),%eax - 102b4e: 25 00 f0 ff ff and $0xfffff000,%eax - 102b53: 83 ec 0c sub $0xc,%esp - 102b56: 50 push %eax - 102b57: e8 23 ff ff ff call 102a7f - 102b5c: 83 c4 10 add $0x10,%esp -} - 102b5f: c9 leave - 102b60: c3 ret - -00102b61 : - -static inline int -page_ref(struct Page *page) { - 102b61: 55 push %ebp - 102b62: 89 e5 mov %esp,%ebp - return page->ref; - 102b64: 8b 45 08 mov 0x8(%ebp),%eax - 102b67: 8b 00 mov (%eax),%eax -} - 102b69: 5d pop %ebp - 102b6a: c3 ret - -00102b6b : - -static inline void -set_page_ref(struct Page *page, int val) { - 102b6b: 55 push %ebp - 102b6c: 89 e5 mov %esp,%ebp - page->ref = val; - 102b6e: 8b 45 08 mov 0x8(%ebp),%eax - 102b71: 8b 55 0c mov 0xc(%ebp),%edx - 102b74: 89 10 mov %edx,(%eax) -} - 102b76: 90 nop - 102b77: 5d pop %ebp - 102b78: c3 ret - -00102b79 : - -static inline int -page_ref_inc(struct Page *page) { - 102b79: 55 push %ebp - 102b7a: 89 e5 mov %esp,%ebp - page->ref += 1; - 102b7c: 8b 45 08 mov 0x8(%ebp),%eax - 102b7f: 8b 00 mov (%eax),%eax - 102b81: 8d 50 01 lea 0x1(%eax),%edx - 102b84: 8b 45 08 mov 0x8(%ebp),%eax - 102b87: 89 10 mov %edx,(%eax) - return page->ref; - 102b89: 8b 45 08 mov 0x8(%ebp),%eax - 102b8c: 8b 00 mov (%eax),%eax -} - 102b8e: 5d pop %ebp - 102b8f: c3 ret - -00102b90 : - -static inline int -page_ref_dec(struct Page *page) { - 102b90: 55 push %ebp - 102b91: 89 e5 mov %esp,%ebp - page->ref -= 1; - 102b93: 8b 45 08 mov 0x8(%ebp),%eax - 102b96: 8b 00 mov (%eax),%eax - 102b98: 8d 50 ff lea -0x1(%eax),%edx - 102b9b: 8b 45 08 mov 0x8(%ebp),%eax - 102b9e: 89 10 mov %edx,(%eax) - return page->ref; - 102ba0: 8b 45 08 mov 0x8(%ebp),%eax - 102ba3: 8b 00 mov (%eax),%eax -} - 102ba5: 5d pop %ebp - 102ba6: c3 ret - -00102ba7 <__intr_save>: -#include -#include -#include - -static inline bool -__intr_save(void) { - 102ba7: 55 push %ebp - 102ba8: 89 e5 mov %esp,%ebp - 102baa: 83 ec 18 sub $0x18,%esp -} - -static inline uint32_t -read_eflags(void) { - uint32_t eflags; - asm volatile ("pushfl; popl %0" : "=r" (eflags)); - 102bad: 9c pushf - 102bae: 58 pop %eax - 102baf: 89 45 f4 mov %eax,-0xc(%ebp) - return eflags; - 102bb2: 8b 45 f4 mov -0xc(%ebp),%eax - if (read_eflags() & FL_IF) { - 102bb5: 25 00 02 00 00 and $0x200,%eax - 102bba: 85 c0 test %eax,%eax - 102bbc: 74 0c je 102bca <__intr_save+0x23> - intr_disable(); - 102bbe: e8 9e ec ff ff call 101861 - return 1; - 102bc3: b8 01 00 00 00 mov $0x1,%eax - 102bc8: eb 05 jmp 102bcf <__intr_save+0x28> - } - return 0; - 102bca: b8 00 00 00 00 mov $0x0,%eax -} - 102bcf: c9 leave - 102bd0: c3 ret - -00102bd1 <__intr_restore>: - -static inline void -__intr_restore(bool flag) { - 102bd1: 55 push %ebp - 102bd2: 89 e5 mov %esp,%ebp - 102bd4: 83 ec 08 sub $0x8,%esp - if (flag) { - 102bd7: 83 7d 08 00 cmpl $0x0,0x8(%ebp) - 102bdb: 74 05 je 102be2 <__intr_restore+0x11> - intr_enable(); - 102bdd: e8 78 ec ff ff call 10185a - } -} - 102be2: 90 nop - 102be3: c9 leave - 102be4: c3 ret - -00102be5 : -/* * - * lgdt - load the global descriptor table register and reset the - * data/code segement registers for kernel. - * */ -static inline void -lgdt(struct pseudodesc *pd) { - 102be5: 55 push %ebp - 102be6: 89 e5 mov %esp,%ebp - asm volatile ("lgdt (%0)" :: "r" (pd)); - 102be8: 8b 45 08 mov 0x8(%ebp),%eax - 102beb: 0f 01 10 lgdtl (%eax) - asm volatile ("movw %%ax, %%gs" :: "a" (USER_DS)); - 102bee: b8 23 00 00 00 mov $0x23,%eax - 102bf3: 8e e8 mov %eax,%gs - asm volatile ("movw %%ax, %%fs" :: "a" (USER_DS)); - 102bf5: b8 23 00 00 00 mov $0x23,%eax - 102bfa: 8e e0 mov %eax,%fs - asm volatile ("movw %%ax, %%es" :: "a" (KERNEL_DS)); - 102bfc: b8 10 00 00 00 mov $0x10,%eax - 102c01: 8e c0 mov %eax,%es - asm volatile ("movw %%ax, %%ds" :: "a" (KERNEL_DS)); - 102c03: b8 10 00 00 00 mov $0x10,%eax - 102c08: 8e d8 mov %eax,%ds - asm volatile ("movw %%ax, %%ss" :: "a" (KERNEL_DS)); - 102c0a: b8 10 00 00 00 mov $0x10,%eax - 102c0f: 8e d0 mov %eax,%ss - // reload cs - asm volatile ("ljmp %0, $1f\n 1:\n" :: "i" (KERNEL_CS)); - 102c11: ea 18 2c 10 00 08 00 ljmp $0x8,$0x102c18 -} - 102c18: 90 nop - 102c19: 5d pop %ebp - 102c1a: c3 ret - -00102c1b : - * load_esp0 - change the ESP0 in default task state segment, - * so that we can use different kernel stack when we trap frame - * user to kernel. - * */ -void -load_esp0(uintptr_t esp0) { - 102c1b: 55 push %ebp - 102c1c: 89 e5 mov %esp,%ebp - ts.ts_esp0 = esp0; - 102c1e: 8b 45 08 mov 0x8(%ebp),%eax - 102c21: a3 e4 a8 11 00 mov %eax,0x11a8e4 -} - 102c26: 90 nop - 102c27: 5d pop %ebp - 102c28: c3 ret - -00102c29 : - -/* gdt_init - initialize the default GDT and TSS */ -static void -gdt_init(void) { - 102c29: 55 push %ebp - 102c2a: 89 e5 mov %esp,%ebp - 102c2c: 83 ec 10 sub $0x10,%esp - // set boot kernel stack and default SS0 - load_esp0((uintptr_t)bootstacktop); - 102c2f: b8 00 90 11 00 mov $0x119000,%eax - 102c34: 50 push %eax - 102c35: e8 e1 ff ff ff call 102c1b - 102c3a: 83 c4 04 add $0x4,%esp - ts.ts_ss0 = KERNEL_DS; - 102c3d: 66 c7 05 e8 a8 11 00 movw $0x10,0x11a8e8 - 102c44: 10 00 - - // initialize the TSS filed of the gdt - gdt[SEG_TSS] = SEGTSS(STS_T32A, (uintptr_t)&ts, sizeof(ts), DPL_KERNEL); - 102c46: 66 c7 05 28 9a 11 00 movw $0x68,0x119a28 - 102c4d: 68 00 - 102c4f: b8 e0 a8 11 00 mov $0x11a8e0,%eax - 102c54: 66 a3 2a 9a 11 00 mov %ax,0x119a2a - 102c5a: b8 e0 a8 11 00 mov $0x11a8e0,%eax - 102c5f: c1 e8 10 shr $0x10,%eax - 102c62: a2 2c 9a 11 00 mov %al,0x119a2c - 102c67: 0f b6 05 2d 9a 11 00 movzbl 0x119a2d,%eax - 102c6e: 83 e0 f0 and $0xfffffff0,%eax - 102c71: 83 c8 09 or $0x9,%eax - 102c74: a2 2d 9a 11 00 mov %al,0x119a2d - 102c79: 0f b6 05 2d 9a 11 00 movzbl 0x119a2d,%eax - 102c80: 83 e0 ef and $0xffffffef,%eax - 102c83: a2 2d 9a 11 00 mov %al,0x119a2d - 102c88: 0f b6 05 2d 9a 11 00 movzbl 0x119a2d,%eax - 102c8f: 83 e0 9f and $0xffffff9f,%eax - 102c92: a2 2d 9a 11 00 mov %al,0x119a2d - 102c97: 0f b6 05 2d 9a 11 00 movzbl 0x119a2d,%eax - 102c9e: 83 c8 80 or $0xffffff80,%eax - 102ca1: a2 2d 9a 11 00 mov %al,0x119a2d - 102ca6: 0f b6 05 2e 9a 11 00 movzbl 0x119a2e,%eax - 102cad: 83 e0 f0 and $0xfffffff0,%eax - 102cb0: a2 2e 9a 11 00 mov %al,0x119a2e - 102cb5: 0f b6 05 2e 9a 11 00 movzbl 0x119a2e,%eax - 102cbc: 83 e0 ef and $0xffffffef,%eax - 102cbf: a2 2e 9a 11 00 mov %al,0x119a2e - 102cc4: 0f b6 05 2e 9a 11 00 movzbl 0x119a2e,%eax - 102ccb: 83 e0 df and $0xffffffdf,%eax - 102cce: a2 2e 9a 11 00 mov %al,0x119a2e - 102cd3: 0f b6 05 2e 9a 11 00 movzbl 0x119a2e,%eax - 102cda: 83 c8 40 or $0x40,%eax - 102cdd: a2 2e 9a 11 00 mov %al,0x119a2e - 102ce2: 0f b6 05 2e 9a 11 00 movzbl 0x119a2e,%eax - 102ce9: 83 e0 7f and $0x7f,%eax - 102cec: a2 2e 9a 11 00 mov %al,0x119a2e - 102cf1: b8 e0 a8 11 00 mov $0x11a8e0,%eax - 102cf6: c1 e8 18 shr $0x18,%eax - 102cf9: a2 2f 9a 11 00 mov %al,0x119a2f - - // reload all segment registers - lgdt(&gdt_pd); - 102cfe: 68 30 9a 11 00 push $0x119a30 - 102d03: e8 dd fe ff ff call 102be5 - 102d08: 83 c4 04 add $0x4,%esp - 102d0b: 66 c7 45 fe 28 00 movw $0x28,-0x2(%ebp) - asm volatile ("cli" ::: "memory"); -} - -static inline void -ltr(uint16_t sel) { - asm volatile ("ltr %0" :: "r" (sel) : "memory"); - 102d11: 0f b7 45 fe movzwl -0x2(%ebp),%eax - 102d15: 0f 00 d8 ltr %ax - - // load the TSS - ltr(GD_TSS); -} - 102d18: 90 nop - 102d19: c9 leave - 102d1a: c3 ret - -00102d1b : - -//init_pmm_manager - initialize a pmm_manager instance -static void -init_pmm_manager(void) { - 102d1b: 55 push %ebp - 102d1c: 89 e5 mov %esp,%ebp - 102d1e: 83 ec 08 sub $0x8,%esp - pmm_manager = &default_pmm_manager; - 102d21: c7 05 5c a9 11 00 00 movl $0x107b00,0x11a95c - 102d28: 7b 10 00 - // pmm_manager = &buddy_pmm_manager; - cprintf("memory management: %s\n", pmm_manager->name); - 102d2b: a1 5c a9 11 00 mov 0x11a95c,%eax - 102d30: 8b 00 mov (%eax),%eax - 102d32: 83 ec 08 sub $0x8,%esp - 102d35: 50 push %eax - 102d36: 68 d0 70 10 00 push $0x1070d0 - 102d3b: e8 27 d5 ff ff call 100267 - 102d40: 83 c4 10 add $0x10,%esp - pmm_manager->init(); - 102d43: a1 5c a9 11 00 mov 0x11a95c,%eax - 102d48: 8b 40 04 mov 0x4(%eax),%eax - 102d4b: ff d0 call *%eax -} - 102d4d: 90 nop - 102d4e: c9 leave - 102d4f: c3 ret - -00102d50 : - -//init_memmap - call pmm->init_memmap to build Page struct for free memory -static void -init_memmap(struct Page *base, size_t n) { - 102d50: 55 push %ebp - 102d51: 89 e5 mov %esp,%ebp - 102d53: 83 ec 08 sub $0x8,%esp - pmm_manager->init_memmap(base, n); - 102d56: a1 5c a9 11 00 mov 0x11a95c,%eax - 102d5b: 8b 40 08 mov 0x8(%eax),%eax - 102d5e: 83 ec 08 sub $0x8,%esp - 102d61: ff 75 0c pushl 0xc(%ebp) - 102d64: ff 75 08 pushl 0x8(%ebp) - 102d67: ff d0 call *%eax - 102d69: 83 c4 10 add $0x10,%esp -} - 102d6c: 90 nop - 102d6d: c9 leave - 102d6e: c3 ret - -00102d6f : - -//alloc_pages - call pmm->alloc_pages to allocate a continuous n*PAGESIZE memory -struct Page * -alloc_pages(size_t n) { - 102d6f: 55 push %ebp - 102d70: 89 e5 mov %esp,%ebp - 102d72: 83 ec 18 sub $0x18,%esp - struct Page *page=NULL; - 102d75: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - bool intr_flag; - local_intr_save(intr_flag); - 102d7c: e8 26 fe ff ff call 102ba7 <__intr_save> - 102d81: 89 45 f0 mov %eax,-0x10(%ebp) - { - page = pmm_manager->alloc_pages(n); - 102d84: a1 5c a9 11 00 mov 0x11a95c,%eax - 102d89: 8b 40 0c mov 0xc(%eax),%eax - 102d8c: 83 ec 0c sub $0xc,%esp - 102d8f: ff 75 08 pushl 0x8(%ebp) - 102d92: ff d0 call *%eax - 102d94: 83 c4 10 add $0x10,%esp - 102d97: 89 45 f4 mov %eax,-0xc(%ebp) - } - local_intr_restore(intr_flag); - 102d9a: 83 ec 0c sub $0xc,%esp - 102d9d: ff 75 f0 pushl -0x10(%ebp) - 102da0: e8 2c fe ff ff call 102bd1 <__intr_restore> - 102da5: 83 c4 10 add $0x10,%esp - return page; - 102da8: 8b 45 f4 mov -0xc(%ebp),%eax -} - 102dab: c9 leave - 102dac: c3 ret - -00102dad : - -//free_pages - call pmm->free_pages to free a continuous n*PAGESIZE memory -void -free_pages(struct Page *base, size_t n) { - 102dad: 55 push %ebp - 102dae: 89 e5 mov %esp,%ebp - 102db0: 83 ec 18 sub $0x18,%esp - bool intr_flag; - local_intr_save(intr_flag); - 102db3: e8 ef fd ff ff call 102ba7 <__intr_save> - 102db8: 89 45 f4 mov %eax,-0xc(%ebp) - { - pmm_manager->free_pages(base, n); - 102dbb: a1 5c a9 11 00 mov 0x11a95c,%eax - 102dc0: 8b 40 10 mov 0x10(%eax),%eax - 102dc3: 83 ec 08 sub $0x8,%esp - 102dc6: ff 75 0c pushl 0xc(%ebp) - 102dc9: ff 75 08 pushl 0x8(%ebp) - 102dcc: ff d0 call *%eax - 102dce: 83 c4 10 add $0x10,%esp - } - local_intr_restore(intr_flag); - 102dd1: 83 ec 0c sub $0xc,%esp - 102dd4: ff 75 f4 pushl -0xc(%ebp) - 102dd7: e8 f5 fd ff ff call 102bd1 <__intr_restore> - 102ddc: 83 c4 10 add $0x10,%esp -} - 102ddf: 90 nop - 102de0: c9 leave - 102de1: c3 ret - -00102de2 : - -//nr_free_pages - call pmm->nr_free_pages to get the size (nr*PAGESIZE) -//of current free memory -size_t -nr_free_pages(void) { - 102de2: 55 push %ebp - 102de3: 89 e5 mov %esp,%ebp - 102de5: 83 ec 18 sub $0x18,%esp - size_t ret; - bool intr_flag; - local_intr_save(intr_flag); - 102de8: e8 ba fd ff ff call 102ba7 <__intr_save> - 102ded: 89 45 f4 mov %eax,-0xc(%ebp) - { - ret = pmm_manager->nr_free_pages(); - 102df0: a1 5c a9 11 00 mov 0x11a95c,%eax - 102df5: 8b 40 14 mov 0x14(%eax),%eax - 102df8: ff d0 call *%eax - 102dfa: 89 45 f0 mov %eax,-0x10(%ebp) - } - local_intr_restore(intr_flag); - 102dfd: 83 ec 0c sub $0xc,%esp - 102e00: ff 75 f4 pushl -0xc(%ebp) - 102e03: e8 c9 fd ff ff call 102bd1 <__intr_restore> - 102e08: 83 c4 10 add $0x10,%esp - return ret; - 102e0b: 8b 45 f0 mov -0x10(%ebp),%eax -} - 102e0e: c9 leave - 102e0f: c3 ret - -00102e10 : - -/* pmm_init - initialize the physical memory management */ -static void -page_init(void) { - 102e10: 55 push %ebp - 102e11: 89 e5 mov %esp,%ebp - 102e13: 57 push %edi - 102e14: 56 push %esi - 102e15: 53 push %ebx - 102e16: 83 ec 7c sub $0x7c,%esp - // e820map is at 0xC0008000 (PA) defined in bootloader. - struct e820map *memmap = (struct e820map *)(0x8000 + KERNBASE); - 102e19: c7 45 c4 00 80 00 c0 movl $0xc0008000,-0x3c(%ebp) - uint64_t maxpa = 0; - 102e20: c7 45 e0 00 00 00 00 movl $0x0,-0x20(%ebp) - 102e27: c7 45 e4 00 00 00 00 movl $0x0,-0x1c(%ebp) - - cprintf("e820map:\n"); - 102e2e: 83 ec 0c sub $0xc,%esp - 102e31: 68 e7 70 10 00 push $0x1070e7 - 102e36: e8 2c d4 ff ff call 100267 - 102e3b: 83 c4 10 add $0x10,%esp - int i; - for (i = 0; i < memmap->nr_map; i ++) { - 102e3e: c7 45 dc 00 00 00 00 movl $0x0,-0x24(%ebp) - 102e45: e9 fc 00 00 00 jmp 102f46 - uint64_t begin = memmap->map[i].addr, end = begin + memmap->map[i].size; - 102e4a: 8b 4d c4 mov -0x3c(%ebp),%ecx - 102e4d: 8b 55 dc mov -0x24(%ebp),%edx - 102e50: 89 d0 mov %edx,%eax - 102e52: c1 e0 02 shl $0x2,%eax - 102e55: 01 d0 add %edx,%eax - 102e57: c1 e0 02 shl $0x2,%eax - 102e5a: 01 c8 add %ecx,%eax - 102e5c: 8b 50 08 mov 0x8(%eax),%edx - 102e5f: 8b 40 04 mov 0x4(%eax),%eax - 102e62: 89 45 b8 mov %eax,-0x48(%ebp) - 102e65: 89 55 bc mov %edx,-0x44(%ebp) - 102e68: 8b 4d c4 mov -0x3c(%ebp),%ecx - 102e6b: 8b 55 dc mov -0x24(%ebp),%edx - 102e6e: 89 d0 mov %edx,%eax - 102e70: c1 e0 02 shl $0x2,%eax - 102e73: 01 d0 add %edx,%eax - 102e75: c1 e0 02 shl $0x2,%eax - 102e78: 01 c8 add %ecx,%eax - 102e7a: 8b 48 0c mov 0xc(%eax),%ecx - 102e7d: 8b 58 10 mov 0x10(%eax),%ebx - 102e80: 8b 45 b8 mov -0x48(%ebp),%eax - 102e83: 8b 55 bc mov -0x44(%ebp),%edx - 102e86: 01 c8 add %ecx,%eax - 102e88: 11 da adc %ebx,%edx - 102e8a: 89 45 b0 mov %eax,-0x50(%ebp) - 102e8d: 89 55 b4 mov %edx,-0x4c(%ebp) - cprintf(" memory: %08llx, [%08llx, %08llx], type = %d.\n", - 102e90: 8b 4d c4 mov -0x3c(%ebp),%ecx - 102e93: 8b 55 dc mov -0x24(%ebp),%edx - 102e96: 89 d0 mov %edx,%eax - 102e98: c1 e0 02 shl $0x2,%eax - 102e9b: 01 d0 add %edx,%eax - 102e9d: c1 e0 02 shl $0x2,%eax - 102ea0: 01 c8 add %ecx,%eax - 102ea2: 83 c0 14 add $0x14,%eax - 102ea5: 8b 00 mov (%eax),%eax - 102ea7: 89 45 84 mov %eax,-0x7c(%ebp) - 102eaa: 8b 45 b0 mov -0x50(%ebp),%eax - 102ead: 8b 55 b4 mov -0x4c(%ebp),%edx - 102eb0: 83 c0 ff add $0xffffffff,%eax - 102eb3: 83 d2 ff adc $0xffffffff,%edx - 102eb6: 89 c1 mov %eax,%ecx - 102eb8: 89 d3 mov %edx,%ebx - 102eba: 8b 55 c4 mov -0x3c(%ebp),%edx - 102ebd: 89 55 80 mov %edx,-0x80(%ebp) - 102ec0: 8b 55 dc mov -0x24(%ebp),%edx - 102ec3: 89 d0 mov %edx,%eax - 102ec5: c1 e0 02 shl $0x2,%eax - 102ec8: 01 d0 add %edx,%eax - 102eca: c1 e0 02 shl $0x2,%eax - 102ecd: 03 45 80 add -0x80(%ebp),%eax - 102ed0: 8b 50 10 mov 0x10(%eax),%edx - 102ed3: 8b 40 0c mov 0xc(%eax),%eax - 102ed6: ff 75 84 pushl -0x7c(%ebp) - 102ed9: 53 push %ebx - 102eda: 51 push %ecx - 102edb: ff 75 bc pushl -0x44(%ebp) - 102ede: ff 75 b8 pushl -0x48(%ebp) - 102ee1: 52 push %edx - 102ee2: 50 push %eax - 102ee3: 68 f4 70 10 00 push $0x1070f4 - 102ee8: e8 7a d3 ff ff call 100267 - 102eed: 83 c4 20 add $0x20,%esp - memmap->map[i].size, begin, end - 1, memmap->map[i].type); - if (memmap->map[i].type == E820_ARM) { - 102ef0: 8b 4d c4 mov -0x3c(%ebp),%ecx - 102ef3: 8b 55 dc mov -0x24(%ebp),%edx - 102ef6: 89 d0 mov %edx,%eax - 102ef8: c1 e0 02 shl $0x2,%eax - 102efb: 01 d0 add %edx,%eax - 102efd: c1 e0 02 shl $0x2,%eax - 102f00: 01 c8 add %ecx,%eax - 102f02: 83 c0 14 add $0x14,%eax - 102f05: 8b 00 mov (%eax),%eax - 102f07: 83 f8 01 cmp $0x1,%eax - 102f0a: 75 36 jne 102f42 - // KMEMSIZE restricts the maximum detected physical address. - // Thus the block with starting address >= KMEMSIZE will not be recognized. - if (maxpa < end && begin < KMEMSIZE) { - 102f0c: 8b 45 e0 mov -0x20(%ebp),%eax - 102f0f: 8b 55 e4 mov -0x1c(%ebp),%edx - 102f12: 3b 55 b4 cmp -0x4c(%ebp),%edx - 102f15: 77 2b ja 102f42 - 102f17: 3b 55 b4 cmp -0x4c(%ebp),%edx - 102f1a: 72 05 jb 102f21 - 102f1c: 3b 45 b0 cmp -0x50(%ebp),%eax - 102f1f: 73 21 jae 102f42 - 102f21: 83 7d bc 00 cmpl $0x0,-0x44(%ebp) - 102f25: 77 1b ja 102f42 - 102f27: 83 7d bc 00 cmpl $0x0,-0x44(%ebp) - 102f2b: 72 09 jb 102f36 - 102f2d: 81 7d b8 ff ff ff 37 cmpl $0x37ffffff,-0x48(%ebp) - 102f34: 77 0c ja 102f42 - maxpa = end; - 102f36: 8b 45 b0 mov -0x50(%ebp),%eax - 102f39: 8b 55 b4 mov -0x4c(%ebp),%edx - 102f3c: 89 45 e0 mov %eax,-0x20(%ebp) - 102f3f: 89 55 e4 mov %edx,-0x1c(%ebp) - struct e820map *memmap = (struct e820map *)(0x8000 + KERNBASE); - uint64_t maxpa = 0; - - cprintf("e820map:\n"); - int i; - for (i = 0; i < memmap->nr_map; i ++) { - 102f42: 83 45 dc 01 addl $0x1,-0x24(%ebp) - 102f46: 8b 45 c4 mov -0x3c(%ebp),%eax - 102f49: 8b 00 mov (%eax),%eax - 102f4b: 3b 45 dc cmp -0x24(%ebp),%eax - 102f4e: 0f 8f f6 fe ff ff jg 102e4a - if (maxpa < end && begin < KMEMSIZE) { - maxpa = end; - } - } - } - if (maxpa > KMEMSIZE) { - 102f54: 83 7d e4 00 cmpl $0x0,-0x1c(%ebp) - 102f58: 72 1d jb 102f77 - 102f5a: 83 7d e4 00 cmpl $0x0,-0x1c(%ebp) - 102f5e: 77 09 ja 102f69 - 102f60: 81 7d e0 00 00 00 38 cmpl $0x38000000,-0x20(%ebp) - 102f67: 76 0e jbe 102f77 - maxpa = KMEMSIZE; - 102f69: c7 45 e0 00 00 00 38 movl $0x38000000,-0x20(%ebp) - 102f70: c7 45 e4 00 00 00 00 movl $0x0,-0x1c(%ebp) - } - - // Provided in kernel.ld - End of kernel bss. - extern char end[]; - cprintf("Detected maxpa = %08llx\n", maxpa); - 102f77: 83 ec 04 sub $0x4,%esp - 102f7a: ff 75 e4 pushl -0x1c(%ebp) - 102f7d: ff 75 e0 pushl -0x20(%ebp) - 102f80: 68 24 71 10 00 push $0x107124 - 102f85: e8 dd d2 ff ff call 100267 - 102f8a: 83 c4 10 add $0x10,%esp - // Here, npage is only used for an estimation of how many entries in the page table. - npage = maxpa / PGSIZE; - 102f8d: 8b 45 e0 mov -0x20(%ebp),%eax - 102f90: 8b 55 e4 mov -0x1c(%ebp),%edx - 102f93: 0f ac d0 0c shrd $0xc,%edx,%eax - 102f97: c1 ea 0c shr $0xc,%edx - 102f9a: a3 c0 a8 11 00 mov %eax,0x11a8c0 - // virtual address of physical pages descriptor array. - // The array starts at the end of the kernel code. - pages = (struct Page *)ROUNDUP((void *)end, PGSIZE); - 102f9f: c7 45 ac 00 10 00 00 movl $0x1000,-0x54(%ebp) - 102fa6: b8 74 a9 11 00 mov $0x11a974,%eax - 102fab: 8d 50 ff lea -0x1(%eax),%edx - 102fae: 8b 45 ac mov -0x54(%ebp),%eax - 102fb1: 01 d0 add %edx,%eax - 102fb3: 89 45 a8 mov %eax,-0x58(%ebp) - 102fb6: 8b 45 a8 mov -0x58(%ebp),%eax - 102fb9: ba 00 00 00 00 mov $0x0,%edx - 102fbe: f7 75 ac divl -0x54(%ebp) - 102fc1: 8b 45 a8 mov -0x58(%ebp),%eax - 102fc4: 29 d0 sub %edx,%eax - 102fc6: a3 64 a9 11 00 mov %eax,0x11a964 - - for (i = 0; i < npage; i ++) { - 102fcb: c7 45 dc 00 00 00 00 movl $0x0,-0x24(%ebp) - 102fd2: eb 2f jmp 103003 - SetPageReserved(pages + i); - 102fd4: 8b 0d 64 a9 11 00 mov 0x11a964,%ecx - 102fda: 8b 55 dc mov -0x24(%ebp),%edx - 102fdd: 89 d0 mov %edx,%eax - 102fdf: c1 e0 02 shl $0x2,%eax - 102fe2: 01 d0 add %edx,%eax - 102fe4: c1 e0 02 shl $0x2,%eax - 102fe7: 01 c8 add %ecx,%eax - 102fe9: 83 c0 04 add $0x4,%eax - 102fec: c7 45 90 00 00 00 00 movl $0x0,-0x70(%ebp) - 102ff3: 89 45 8c mov %eax,-0x74(%ebp) - * Note that @nr may be almost arbitrarily large; this function is not - * restricted to acting on a single-word quantity. - * */ -static inline void -set_bit(int nr, volatile void *addr) { - asm volatile ("btsl %1, %0" :"=m" (*(volatile long *)addr) : "Ir" (nr)); - 102ff6: 8b 45 8c mov -0x74(%ebp),%eax - 102ff9: 8b 55 90 mov -0x70(%ebp),%edx - 102ffc: 0f ab 10 bts %edx,(%eax) - npage = maxpa / PGSIZE; - // virtual address of physical pages descriptor array. - // The array starts at the end of the kernel code. - pages = (struct Page *)ROUNDUP((void *)end, PGSIZE); - - for (i = 0; i < npage; i ++) { - 102fff: 83 45 dc 01 addl $0x1,-0x24(%ebp) - 103003: 8b 55 dc mov -0x24(%ebp),%edx - 103006: a1 c0 a8 11 00 mov 0x11a8c0,%eax - 10300b: 39 c2 cmp %eax,%edx - 10300d: 72 c5 jb 102fd4 - SetPageReserved(pages + i); - } - - uintptr_t freemem = PADDR((uintptr_t)pages + sizeof(struct Page) * npage); - 10300f: 8b 15 c0 a8 11 00 mov 0x11a8c0,%edx - 103015: 89 d0 mov %edx,%eax - 103017: c1 e0 02 shl $0x2,%eax - 10301a: 01 d0 add %edx,%eax - 10301c: c1 e0 02 shl $0x2,%eax - 10301f: 89 c2 mov %eax,%edx - 103021: a1 64 a9 11 00 mov 0x11a964,%eax - 103026: 01 d0 add %edx,%eax - 103028: 89 45 a4 mov %eax,-0x5c(%ebp) - 10302b: 81 7d a4 ff ff ff bf cmpl $0xbfffffff,-0x5c(%ebp) - 103032: 77 17 ja 10304b - 103034: ff 75 a4 pushl -0x5c(%ebp) - 103037: 68 40 71 10 00 push $0x107140 - 10303c: 68 e4 00 00 00 push $0xe4 - 103041: 68 64 71 10 00 push $0x107164 - 103046: e8 82 d3 ff ff call 1003cd <__panic> - 10304b: 8b 45 a4 mov -0x5c(%ebp),%eax - 10304e: 05 00 00 00 40 add $0x40000000,%eax - 103053: 89 45 a0 mov %eax,-0x60(%ebp) - - cprintf("Kernel ends at (va): %08x, Total pages = %d, which takes up %d.\n", - 103056: 8b 15 c0 a8 11 00 mov 0x11a8c0,%edx - 10305c: 89 d0 mov %edx,%eax - 10305e: c1 e0 02 shl $0x2,%eax - 103061: 01 d0 add %edx,%eax - 103063: c1 e0 02 shl $0x2,%eax - 103066: 89 c1 mov %eax,%ecx - 103068: a1 c0 a8 11 00 mov 0x11a8c0,%eax - 10306d: ba 74 a9 11 00 mov $0x11a974,%edx - 103072: 51 push %ecx - 103073: 50 push %eax - 103074: 52 push %edx - 103075: 68 74 71 10 00 push $0x107174 - 10307a: e8 e8 d1 ff ff call 100267 - 10307f: 83 c4 10 add $0x10,%esp - (uintptr_t)end, npage, sizeof(struct Page) * npage); - cprintf("Freemem = (pa) %08x\n", freemem); - 103082: 83 ec 08 sub $0x8,%esp - 103085: ff 75 a0 pushl -0x60(%ebp) - 103088: 68 b5 71 10 00 push $0x1071b5 - 10308d: e8 d5 d1 ff ff call 100267 - 103092: 83 c4 10 add $0x10,%esp - - for (i = 0; i < memmap->nr_map; i ++) { - 103095: c7 45 dc 00 00 00 00 movl $0x0,-0x24(%ebp) - 10309c: e9 85 01 00 00 jmp 103226 - uint64_t begin = memmap->map[i].addr, end = begin + memmap->map[i].size; - 1030a1: 8b 4d c4 mov -0x3c(%ebp),%ecx - 1030a4: 8b 55 dc mov -0x24(%ebp),%edx - 1030a7: 89 d0 mov %edx,%eax - 1030a9: c1 e0 02 shl $0x2,%eax - 1030ac: 01 d0 add %edx,%eax - 1030ae: c1 e0 02 shl $0x2,%eax - 1030b1: 01 c8 add %ecx,%eax - 1030b3: 8b 50 08 mov 0x8(%eax),%edx - 1030b6: 8b 40 04 mov 0x4(%eax),%eax - 1030b9: 89 45 d0 mov %eax,-0x30(%ebp) - 1030bc: 89 55 d4 mov %edx,-0x2c(%ebp) - 1030bf: 8b 4d c4 mov -0x3c(%ebp),%ecx - 1030c2: 8b 55 dc mov -0x24(%ebp),%edx - 1030c5: 89 d0 mov %edx,%eax - 1030c7: c1 e0 02 shl $0x2,%eax - 1030ca: 01 d0 add %edx,%eax - 1030cc: c1 e0 02 shl $0x2,%eax - 1030cf: 01 c8 add %ecx,%eax - 1030d1: 8b 48 0c mov 0xc(%eax),%ecx - 1030d4: 8b 58 10 mov 0x10(%eax),%ebx - 1030d7: 8b 45 d0 mov -0x30(%ebp),%eax - 1030da: 8b 55 d4 mov -0x2c(%ebp),%edx - 1030dd: 01 c8 add %ecx,%eax - 1030df: 11 da adc %ebx,%edx - 1030e1: 89 45 c8 mov %eax,-0x38(%ebp) - 1030e4: 89 55 cc mov %edx,-0x34(%ebp) - if (memmap->map[i].type == E820_ARM) { - 1030e7: 8b 4d c4 mov -0x3c(%ebp),%ecx - 1030ea: 8b 55 dc mov -0x24(%ebp),%edx - 1030ed: 89 d0 mov %edx,%eax - 1030ef: c1 e0 02 shl $0x2,%eax - 1030f2: 01 d0 add %edx,%eax - 1030f4: c1 e0 02 shl $0x2,%eax - 1030f7: 01 c8 add %ecx,%eax - 1030f9: 83 c0 14 add $0x14,%eax - 1030fc: 8b 00 mov (%eax),%eax - 1030fe: 83 f8 01 cmp $0x1,%eax - 103101: 0f 85 1b 01 00 00 jne 103222 - if (begin < freemem) { - 103107: 8b 45 a0 mov -0x60(%ebp),%eax - 10310a: ba 00 00 00 00 mov $0x0,%edx - 10310f: 3b 55 d4 cmp -0x2c(%ebp),%edx - 103112: 72 17 jb 10312b - 103114: 3b 55 d4 cmp -0x2c(%ebp),%edx - 103117: 77 05 ja 10311e - 103119: 3b 45 d0 cmp -0x30(%ebp),%eax - 10311c: 76 0d jbe 10312b - begin = freemem; - 10311e: 8b 45 a0 mov -0x60(%ebp),%eax - 103121: 89 45 d0 mov %eax,-0x30(%ebp) - 103124: c7 45 d4 00 00 00 00 movl $0x0,-0x2c(%ebp) - } - if (end > KMEMSIZE) { - 10312b: 83 7d cc 00 cmpl $0x0,-0x34(%ebp) - 10312f: 72 1d jb 10314e - 103131: 83 7d cc 00 cmpl $0x0,-0x34(%ebp) - 103135: 77 09 ja 103140 - 103137: 81 7d c8 00 00 00 38 cmpl $0x38000000,-0x38(%ebp) - 10313e: 76 0e jbe 10314e - end = KMEMSIZE; - 103140: c7 45 c8 00 00 00 38 movl $0x38000000,-0x38(%ebp) - 103147: c7 45 cc 00 00 00 00 movl $0x0,-0x34(%ebp) - } - // Gather all available blocks and build pages linked list. - if (begin < end) { - 10314e: 8b 45 d0 mov -0x30(%ebp),%eax - 103151: 8b 55 d4 mov -0x2c(%ebp),%edx - 103154: 3b 55 cc cmp -0x34(%ebp),%edx - 103157: 0f 87 c5 00 00 00 ja 103222 - 10315d: 3b 55 cc cmp -0x34(%ebp),%edx - 103160: 72 09 jb 10316b - 103162: 3b 45 c8 cmp -0x38(%ebp),%eax - 103165: 0f 83 b7 00 00 00 jae 103222 - begin = ROUNDUP(begin, PGSIZE); - 10316b: c7 45 9c 00 10 00 00 movl $0x1000,-0x64(%ebp) - 103172: 8b 55 d0 mov -0x30(%ebp),%edx - 103175: 8b 45 9c mov -0x64(%ebp),%eax - 103178: 01 d0 add %edx,%eax - 10317a: 83 e8 01 sub $0x1,%eax - 10317d: 89 45 98 mov %eax,-0x68(%ebp) - 103180: 8b 45 98 mov -0x68(%ebp),%eax - 103183: ba 00 00 00 00 mov $0x0,%edx - 103188: f7 75 9c divl -0x64(%ebp) - 10318b: 8b 45 98 mov -0x68(%ebp),%eax - 10318e: 29 d0 sub %edx,%eax - 103190: ba 00 00 00 00 mov $0x0,%edx - 103195: 89 45 d0 mov %eax,-0x30(%ebp) - 103198: 89 55 d4 mov %edx,-0x2c(%ebp) - end = ROUNDDOWN(end, PGSIZE); - 10319b: 8b 45 c8 mov -0x38(%ebp),%eax - 10319e: 89 45 94 mov %eax,-0x6c(%ebp) - 1031a1: 8b 45 94 mov -0x6c(%ebp),%eax - 1031a4: ba 00 00 00 00 mov $0x0,%edx - 1031a9: 89 c3 mov %eax,%ebx - 1031ab: 81 e3 00 f0 ff ff and $0xfffff000,%ebx - 1031b1: 89 de mov %ebx,%esi - 1031b3: 89 d0 mov %edx,%eax - 1031b5: 83 e0 00 and $0x0,%eax - 1031b8: 89 c7 mov %eax,%edi - 1031ba: 89 75 c8 mov %esi,-0x38(%ebp) - 1031bd: 89 7d cc mov %edi,-0x34(%ebp) - if (begin < end) { - 1031c0: 8b 45 d0 mov -0x30(%ebp),%eax - 1031c3: 8b 55 d4 mov -0x2c(%ebp),%edx - 1031c6: 3b 55 cc cmp -0x34(%ebp),%edx - 1031c9: 77 57 ja 103222 - 1031cb: 3b 55 cc cmp -0x34(%ebp),%edx - 1031ce: 72 05 jb 1031d5 - 1031d0: 3b 45 c8 cmp -0x38(%ebp),%eax - 1031d3: 73 4d jae 103222 - cprintf("Detected one allocatable block (pa) start = %08llx, end = %08llx\n", begin, end); - 1031d5: 83 ec 0c sub $0xc,%esp - 1031d8: ff 75 cc pushl -0x34(%ebp) - 1031db: ff 75 c8 pushl -0x38(%ebp) - 1031de: ff 75 d4 pushl -0x2c(%ebp) - 1031e1: ff 75 d0 pushl -0x30(%ebp) - 1031e4: 68 cc 71 10 00 push $0x1071cc - 1031e9: e8 79 d0 ff ff call 100267 - 1031ee: 83 c4 20 add $0x20,%esp - // pa2page converts physical address into its page descriptor's virtual address. - init_memmap(pa2page(begin), (end - begin) / PGSIZE); - 1031f1: 8b 45 c8 mov -0x38(%ebp),%eax - 1031f4: 8b 55 cc mov -0x34(%ebp),%edx - 1031f7: 2b 45 d0 sub -0x30(%ebp),%eax - 1031fa: 1b 55 d4 sbb -0x2c(%ebp),%edx - 1031fd: 0f ac d0 0c shrd $0xc,%edx,%eax - 103201: c1 ea 0c shr $0xc,%edx - 103204: 89 c3 mov %eax,%ebx - 103206: 8b 45 d0 mov -0x30(%ebp),%eax - 103209: 83 ec 0c sub $0xc,%esp - 10320c: 50 push %eax - 10320d: e8 6d f8 ff ff call 102a7f - 103212: 83 c4 10 add $0x10,%esp - 103215: 83 ec 08 sub $0x8,%esp - 103218: 53 push %ebx - 103219: 50 push %eax - 10321a: e8 31 fb ff ff call 102d50 - 10321f: 83 c4 10 add $0x10,%esp - - cprintf("Kernel ends at (va): %08x, Total pages = %d, which takes up %d.\n", - (uintptr_t)end, npage, sizeof(struct Page) * npage); - cprintf("Freemem = (pa) %08x\n", freemem); - - for (i = 0; i < memmap->nr_map; i ++) { - 103222: 83 45 dc 01 addl $0x1,-0x24(%ebp) - 103226: 8b 45 c4 mov -0x3c(%ebp),%eax - 103229: 8b 00 mov (%eax),%eax - 10322b: 3b 45 dc cmp -0x24(%ebp),%eax - 10322e: 0f 8f 6d fe ff ff jg 1030a1 - init_memmap(pa2page(begin), (end - begin) / PGSIZE); - } - } - } - } -} - 103234: 90 nop - 103235: 8d 65 f4 lea -0xc(%ebp),%esp - 103238: 5b pop %ebx - 103239: 5e pop %esi - 10323a: 5f pop %edi - 10323b: 5d pop %ebp - 10323c: c3 ret - -0010323d : - -static void -enable_paging(void) { - 10323d: 55 push %ebp - 10323e: 89 e5 mov %esp,%ebp - 103240: 83 ec 10 sub $0x10,%esp - lcr3(boot_cr3); - 103243: a1 60 a9 11 00 mov 0x11a960,%eax - 103248: 89 45 fc mov %eax,-0x4(%ebp) - asm volatile ("mov %0, %%cr0" :: "r" (cr0) : "memory"); -} - -static inline void -lcr3(uintptr_t cr3) { - asm volatile ("mov %0, %%cr3" :: "r" (cr3) : "memory"); - 10324b: 8b 45 fc mov -0x4(%ebp),%eax - 10324e: 0f 22 d8 mov %eax,%cr3 -} - -static inline uintptr_t -rcr0(void) { - uintptr_t cr0; - asm volatile ("mov %%cr0, %0" : "=r" (cr0) :: "memory"); - 103251: 0f 20 c0 mov %cr0,%eax - 103254: 89 45 f4 mov %eax,-0xc(%ebp) - return cr0; - 103257: 8b 45 f4 mov -0xc(%ebp),%eax - - // turn on paging - uint32_t cr0 = rcr0(); - 10325a: 89 45 f8 mov %eax,-0x8(%ebp) - cr0 |= CR0_PE | CR0_PG | CR0_AM | CR0_WP | CR0_NE | CR0_TS | CR0_EM | CR0_MP; - 10325d: 81 4d f8 2f 00 05 80 orl $0x8005002f,-0x8(%ebp) - cr0 &= ~(CR0_TS | CR0_EM); - 103264: 83 65 f8 f3 andl $0xfffffff3,-0x8(%ebp) - 103268: 8b 45 f8 mov -0x8(%ebp),%eax - 10326b: 89 45 f0 mov %eax,-0x10(%ebp) - asm volatile ("pushl %0; popfl" :: "r" (eflags)); -} - -static inline void -lcr0(uintptr_t cr0) { - asm volatile ("mov %0, %%cr0" :: "r" (cr0) : "memory"); - 10326e: 8b 45 f0 mov -0x10(%ebp),%eax - 103271: 0f 22 c0 mov %eax,%cr0 - lcr0(cr0); -} - 103274: 90 nop - 103275: c9 leave - 103276: c3 ret - -00103277 : -// la: linear address of this memory need to map (after x86 segment map) -// size: memory size -// pa: physical address of this memory -// perm: permission of this memory -static void -boot_map_segment(pde_t *pgdir, uintptr_t la, size_t size, uintptr_t pa, uint32_t perm) { - 103277: 55 push %ebp - 103278: 89 e5 mov %esp,%ebp - 10327a: 83 ec 28 sub $0x28,%esp - assert(PGOFF(la) == PGOFF(pa)); - 10327d: 8b 45 0c mov 0xc(%ebp),%eax - 103280: 33 45 14 xor 0x14(%ebp),%eax - 103283: 25 ff 0f 00 00 and $0xfff,%eax - 103288: 85 c0 test %eax,%eax - 10328a: 74 19 je 1032a5 - 10328c: 68 0e 72 10 00 push $0x10720e - 103291: 68 25 72 10 00 push $0x107225 - 103296: 68 14 01 00 00 push $0x114 - 10329b: 68 64 71 10 00 push $0x107164 - 1032a0: e8 28 d1 ff ff call 1003cd <__panic> - size_t n = ROUNDUP(size + PGOFF(la), PGSIZE) / PGSIZE; - 1032a5: c7 45 f0 00 10 00 00 movl $0x1000,-0x10(%ebp) - 1032ac: 8b 45 0c mov 0xc(%ebp),%eax - 1032af: 25 ff 0f 00 00 and $0xfff,%eax - 1032b4: 89 c2 mov %eax,%edx - 1032b6: 8b 45 10 mov 0x10(%ebp),%eax - 1032b9: 01 c2 add %eax,%edx - 1032bb: 8b 45 f0 mov -0x10(%ebp),%eax - 1032be: 01 d0 add %edx,%eax - 1032c0: 83 e8 01 sub $0x1,%eax - 1032c3: 89 45 ec mov %eax,-0x14(%ebp) - 1032c6: 8b 45 ec mov -0x14(%ebp),%eax - 1032c9: ba 00 00 00 00 mov $0x0,%edx - 1032ce: f7 75 f0 divl -0x10(%ebp) - 1032d1: 8b 45 ec mov -0x14(%ebp),%eax - 1032d4: 29 d0 sub %edx,%eax - 1032d6: c1 e8 0c shr $0xc,%eax - 1032d9: 89 45 f4 mov %eax,-0xc(%ebp) - la = ROUNDDOWN(la, PGSIZE); - 1032dc: 8b 45 0c mov 0xc(%ebp),%eax - 1032df: 89 45 e8 mov %eax,-0x18(%ebp) - 1032e2: 8b 45 e8 mov -0x18(%ebp),%eax - 1032e5: 25 00 f0 ff ff and $0xfffff000,%eax - 1032ea: 89 45 0c mov %eax,0xc(%ebp) - pa = ROUNDDOWN(pa, PGSIZE); - 1032ed: 8b 45 14 mov 0x14(%ebp),%eax - 1032f0: 89 45 e4 mov %eax,-0x1c(%ebp) - 1032f3: 8b 45 e4 mov -0x1c(%ebp),%eax - 1032f6: 25 00 f0 ff ff and $0xfffff000,%eax - 1032fb: 89 45 14 mov %eax,0x14(%ebp) - for (; n > 0; n --, la += PGSIZE, pa += PGSIZE) { - 1032fe: eb 57 jmp 103357 - pte_t *ptep = get_pte(pgdir, la, 1); - 103300: 83 ec 04 sub $0x4,%esp - 103303: 6a 01 push $0x1 - 103305: ff 75 0c pushl 0xc(%ebp) - 103308: ff 75 08 pushl 0x8(%ebp) - 10330b: e8 98 01 00 00 call 1034a8 - 103310: 83 c4 10 add $0x10,%esp - 103313: 89 45 e0 mov %eax,-0x20(%ebp) - assert(ptep != NULL); - 103316: 83 7d e0 00 cmpl $0x0,-0x20(%ebp) - 10331a: 75 19 jne 103335 - 10331c: 68 3a 72 10 00 push $0x10723a - 103321: 68 25 72 10 00 push $0x107225 - 103326: 68 1a 01 00 00 push $0x11a - 10332b: 68 64 71 10 00 push $0x107164 - 103330: e8 98 d0 ff ff call 1003cd <__panic> - *ptep = pa | PTE_P | perm; - 103335: 8b 45 14 mov 0x14(%ebp),%eax - 103338: 0b 45 18 or 0x18(%ebp),%eax - 10333b: 83 c8 01 or $0x1,%eax - 10333e: 89 c2 mov %eax,%edx - 103340: 8b 45 e0 mov -0x20(%ebp),%eax - 103343: 89 10 mov %edx,(%eax) -boot_map_segment(pde_t *pgdir, uintptr_t la, size_t size, uintptr_t pa, uint32_t perm) { - assert(PGOFF(la) == PGOFF(pa)); - size_t n = ROUNDUP(size + PGOFF(la), PGSIZE) / PGSIZE; - la = ROUNDDOWN(la, PGSIZE); - pa = ROUNDDOWN(pa, PGSIZE); - for (; n > 0; n --, la += PGSIZE, pa += PGSIZE) { - 103345: 83 6d f4 01 subl $0x1,-0xc(%ebp) - 103349: 81 45 0c 00 10 00 00 addl $0x1000,0xc(%ebp) - 103350: 81 45 14 00 10 00 00 addl $0x1000,0x14(%ebp) - 103357: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) - 10335b: 75 a3 jne 103300 - pte_t *ptep = get_pte(pgdir, la, 1); - assert(ptep != NULL); - *ptep = pa | PTE_P | perm; - } -} - 10335d: 90 nop - 10335e: c9 leave - 10335f: c3 ret - -00103360 : - -//boot_alloc_page - allocate one page using pmm->alloc_pages(1) -// return value: the kernel virtual address of this allocated page -//note: this function is used to get the memory for PDT(Page Directory Table)&PT(Page Table) -static void * -boot_alloc_page(void) { - 103360: 55 push %ebp - 103361: 89 e5 mov %esp,%ebp - 103363: 83 ec 18 sub $0x18,%esp - struct Page *p = alloc_page(); - 103366: 83 ec 0c sub $0xc,%esp - 103369: 6a 01 push $0x1 - 10336b: e8 ff f9 ff ff call 102d6f - 103370: 83 c4 10 add $0x10,%esp - 103373: 89 45 f4 mov %eax,-0xc(%ebp) - if (p == NULL) { - 103376: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) - 10337a: 75 17 jne 103393 - panic("boot_alloc_page failed.\n"); - 10337c: 83 ec 04 sub $0x4,%esp - 10337f: 68 47 72 10 00 push $0x107247 - 103384: 68 26 01 00 00 push $0x126 - 103389: 68 64 71 10 00 push $0x107164 - 10338e: e8 3a d0 ff ff call 1003cd <__panic> - } - return page2kva(p); - 103393: 83 ec 0c sub $0xc,%esp - 103396: ff 75 f4 pushl -0xc(%ebp) - 103399: e8 28 f7 ff ff call 102ac6 - 10339e: 83 c4 10 add $0x10,%esp -} - 1033a1: c9 leave - 1033a2: c3 ret - -001033a3 : - -//pmm_init - setup a pmm to manage physical memory, build PDT&PT to setup paging mechanism -// - check the correctness of pmm & paging mechanism, print PDT&PT -void -pmm_init(void) { - 1033a3: 55 push %ebp - 1033a4: 89 e5 mov %esp,%ebp - 1033a6: 83 ec 18 sub $0x18,%esp - //We need to alloc/free the physical memory (granularity is 4KB or other size). - //So a framework of physical memory manager (struct pmm_manager)is defined in pmm.h - //First we should init a physical memory manager(pmm) based on the framework. - //Then pmm can alloc/free the physical memory. - //Now the first_fit/best_fit/worst_fit/buddy_system pmm are available. - init_pmm_manager(); - 1033a9: e8 6d f9 ff ff call 102d1b - - // detect physical memory space, reserve already used memory, - // then use pmm->init_memmap to create free page list - page_init(); - 1033ae: e8 5d fa ff ff call 102e10 - - //use pmm->check to verify the correctness of the alloc/free function in a pmm - check_alloc_page(); - 1033b3: e8 2d 04 00 00 call 1037e5 - - // create boot_pgdir, an initial page directory(Page Directory Table, PDT) - boot_pgdir = boot_alloc_page(); - 1033b8: e8 a3 ff ff ff call 103360 - 1033bd: a3 c4 a8 11 00 mov %eax,0x11a8c4 - memset(boot_pgdir, 0, PGSIZE); - 1033c2: a1 c4 a8 11 00 mov 0x11a8c4,%eax - 1033c7: 83 ec 04 sub $0x4,%esp - 1033ca: 68 00 10 00 00 push $0x1000 - 1033cf: 6a 00 push $0x0 - 1033d1: 50 push %eax - 1033d2: e8 90 2d 00 00 call 106167 - 1033d7: 83 c4 10 add $0x10,%esp - boot_cr3 = PADDR(boot_pgdir); - 1033da: a1 c4 a8 11 00 mov 0x11a8c4,%eax - 1033df: 89 45 f4 mov %eax,-0xc(%ebp) - 1033e2: 81 7d f4 ff ff ff bf cmpl $0xbfffffff,-0xc(%ebp) - 1033e9: 77 17 ja 103402 - 1033eb: ff 75 f4 pushl -0xc(%ebp) - 1033ee: 68 40 71 10 00 push $0x107140 - 1033f3: 68 40 01 00 00 push $0x140 - 1033f8: 68 64 71 10 00 push $0x107164 - 1033fd: e8 cb cf ff ff call 1003cd <__panic> - 103402: 8b 45 f4 mov -0xc(%ebp),%eax - 103405: 05 00 00 00 40 add $0x40000000,%eax - 10340a: a3 60 a9 11 00 mov %eax,0x11a960 - - check_pgdir(); - 10340f: e8 f4 03 00 00 call 103808 - - static_assert(KERNBASE % PTSIZE == 0 && KERNTOP % PTSIZE == 0); - - // recursively insert boot_pgdir in itself - // to form a virtual page table at virtual address VPT - boot_pgdir[PDX(VPT)] = PADDR(boot_pgdir) | PTE_P | PTE_W; - 103414: a1 c4 a8 11 00 mov 0x11a8c4,%eax - 103419: 8d 90 ac 0f 00 00 lea 0xfac(%eax),%edx - 10341f: a1 c4 a8 11 00 mov 0x11a8c4,%eax - 103424: 89 45 f0 mov %eax,-0x10(%ebp) - 103427: 81 7d f0 ff ff ff bf cmpl $0xbfffffff,-0x10(%ebp) - 10342e: 77 17 ja 103447 - 103430: ff 75 f0 pushl -0x10(%ebp) - 103433: 68 40 71 10 00 push $0x107140 - 103438: 68 48 01 00 00 push $0x148 - 10343d: 68 64 71 10 00 push $0x107164 - 103442: e8 86 cf ff ff call 1003cd <__panic> - 103447: 8b 45 f0 mov -0x10(%ebp),%eax - 10344a: 05 00 00 00 40 add $0x40000000,%eax - 10344f: 83 c8 03 or $0x3,%eax - 103452: 89 02 mov %eax,(%edx) - - // map all physical memory to linear memory with base linear addr KERNBASE - //linear_addr KERNBASE~KERNBASE+KMEMSIZE = phy_addr 0~KMEMSIZE - //But shouldn't use this map until enable_paging() & gdt_init() finished. - boot_map_segment(boot_pgdir, KERNBASE, KMEMSIZE, 0, PTE_W); - 103454: a1 c4 a8 11 00 mov 0x11a8c4,%eax - 103459: 83 ec 0c sub $0xc,%esp - 10345c: 6a 02 push $0x2 - 10345e: 6a 00 push $0x0 - 103460: 68 00 00 00 38 push $0x38000000 - 103465: 68 00 00 00 c0 push $0xc0000000 - 10346a: 50 push %eax - 10346b: e8 07 fe ff ff call 103277 - 103470: 83 c4 20 add $0x20,%esp - - //temporary map: - //virtual_addr 3G~3G+4M = linear_addr 0~4M = linear_addr 3G~3G+4M = phy_addr 0~4M - boot_pgdir[0] = boot_pgdir[PDX(KERNBASE)]; - 103473: a1 c4 a8 11 00 mov 0x11a8c4,%eax - 103478: 8b 15 c4 a8 11 00 mov 0x11a8c4,%edx - 10347e: 8b 92 00 0c 00 00 mov 0xc00(%edx),%edx - 103484: 89 10 mov %edx,(%eax) - - enable_paging(); - 103486: e8 b2 fd ff ff call 10323d - - //reload gdt(third time,the last time) to map all physical memory - //virtual_addr 0~4G=liear_addr 0~4G - //then set kernel stack(ss:esp) in TSS, setup TSS in gdt, load TSS - gdt_init(); - 10348b: e8 99 f7 ff ff call 102c29 - - //disable the map of virtual_addr 0~4M - boot_pgdir[0] = 0; - 103490: a1 c4 a8 11 00 mov 0x11a8c4,%eax - 103495: c7 00 00 00 00 00 movl $0x0,(%eax) - - //now the basic virtual memory map(see memalyout.h) is established. - //check the correctness of the basic virtual memory map. - check_boot_pgdir(); - 10349b: e8 ce 08 00 00 call 103d6e - - print_pgdir(); - 1034a0: e8 c4 0c 00 00 call 104169 - -} - 1034a5: 90 nop - 1034a6: c9 leave - 1034a7: c3 ret - -001034a8 : -// pgdir: the kernel virtual base address of PDT -// la: the linear address need to map -// create: a logical value to decide if alloc a page for PT -// return vaule: the kernel virtual address of this pte -pte_t * -get_pte(pde_t *pgdir, uintptr_t la, bool create) { - 1034a8: 55 push %ebp - 1034a9: 89 e5 mov %esp,%ebp - 1034ab: 83 ec 28 sub $0x28,%esp - * DEFINEs: - * PTE_P 0x001 // page table/directory entry flags bit : Present - * PTE_W 0x002 // page table/directory entry flags bit : Writeable - * PTE_U 0x004 // page table/directory entry flags bit : User can access - */ - pde_t *pdep = pgdir + PDX(la); // (1) find page directory entry - 1034ae: 8b 45 0c mov 0xc(%ebp),%eax - 1034b1: c1 e8 16 shr $0x16,%eax - 1034b4: 8d 14 85 00 00 00 00 lea 0x0(,%eax,4),%edx - 1034bb: 8b 45 08 mov 0x8(%ebp),%eax - 1034be: 01 d0 add %edx,%eax - 1034c0: 89 45 f4 mov %eax,-0xc(%ebp) - if (((*pdep) & PTE_P) != 1) { // (2) check if entry is not present - 1034c3: 8b 45 f4 mov -0xc(%ebp),%eax - 1034c6: 8b 00 mov (%eax),%eax - 1034c8: 83 e0 01 and $0x1,%eax - 1034cb: 85 c0 test %eax,%eax - 1034cd: 0f 85 bd 00 00 00 jne 103590 - if (!create) return NULL; // (3) check if creating is needed, then alloc page for page table - 1034d3: 83 7d 10 00 cmpl $0x0,0x10(%ebp) - 1034d7: 75 0a jne 1034e3 - 1034d9: b8 00 00 00 00 mov $0x0,%eax - 1034de: e9 fe 00 00 00 jmp 1035e1 - struct Page* ptPage; - assert(ptPage = alloc_page()); - 1034e3: 83 ec 0c sub $0xc,%esp - 1034e6: 6a 01 push $0x1 - 1034e8: e8 82 f8 ff ff call 102d6f - 1034ed: 83 c4 10 add $0x10,%esp - 1034f0: 89 45 f0 mov %eax,-0x10(%ebp) - 1034f3: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) - 1034f7: 75 19 jne 103512 - 1034f9: 68 60 72 10 00 push $0x107260 - 1034fe: 68 25 72 10 00 push $0x107225 - 103503: 68 87 01 00 00 push $0x187 - 103508: 68 64 71 10 00 push $0x107164 - 10350d: e8 bb ce ff ff call 1003cd <__panic> - set_page_ref(ptPage, 1); // (4) set page reference - 103512: 83 ec 08 sub $0x8,%esp - 103515: 6a 01 push $0x1 - 103517: ff 75 f0 pushl -0x10(%ebp) - 10351a: e8 4c f6 ff ff call 102b6b - 10351f: 83 c4 10 add $0x10,%esp - uintptr_t pa = page2pa(ptPage); // (5) get linear address of page - 103522: 83 ec 0c sub $0xc,%esp - 103525: ff 75 f0 pushl -0x10(%ebp) - 103528: e8 3f f5 ff ff call 102a6c - 10352d: 83 c4 10 add $0x10,%esp - 103530: 89 45 ec mov %eax,-0x14(%ebp) - memset(KADDR(pa), 0, PGSIZE); // (6) clear page content using memset - 103533: 8b 45 ec mov -0x14(%ebp),%eax - 103536: 89 45 e8 mov %eax,-0x18(%ebp) - 103539: 8b 45 e8 mov -0x18(%ebp),%eax - 10353c: c1 e8 0c shr $0xc,%eax - 10353f: 89 45 e4 mov %eax,-0x1c(%ebp) - 103542: a1 c0 a8 11 00 mov 0x11a8c0,%eax - 103547: 39 45 e4 cmp %eax,-0x1c(%ebp) - 10354a: 72 17 jb 103563 - 10354c: ff 75 e8 pushl -0x18(%ebp) - 10354f: 68 80 70 10 00 push $0x107080 - 103554: 68 8a 01 00 00 push $0x18a - 103559: 68 64 71 10 00 push $0x107164 - 10355e: e8 6a ce ff ff call 1003cd <__panic> - 103563: 8b 45 e8 mov -0x18(%ebp),%eax - 103566: 2d 00 00 00 40 sub $0x40000000,%eax - 10356b: 83 ec 04 sub $0x4,%esp - 10356e: 68 00 10 00 00 push $0x1000 - 103573: 6a 00 push $0x0 - 103575: 50 push %eax - 103576: e8 ec 2b 00 00 call 106167 - 10357b: 83 c4 10 add $0x10,%esp - *pdep = ((pa & ~0x0FFF) | PTE_U | PTE_W | PTE_P); // (7) set page directory entry's permission - 10357e: 8b 45 ec mov -0x14(%ebp),%eax - 103581: 25 00 f0 ff ff and $0xfffff000,%eax - 103586: 83 c8 07 or $0x7,%eax - 103589: 89 c2 mov %eax,%edx - 10358b: 8b 45 f4 mov -0xc(%ebp),%eax - 10358e: 89 10 mov %edx,(%eax) - } - return ((pte_t*)KADDR((*pdep) & ~0xFFF)) + PTX(la); // (8) return page table entry - 103590: 8b 45 f4 mov -0xc(%ebp),%eax - 103593: 8b 00 mov (%eax),%eax - 103595: 25 00 f0 ff ff and $0xfffff000,%eax - 10359a: 89 45 e0 mov %eax,-0x20(%ebp) - 10359d: 8b 45 e0 mov -0x20(%ebp),%eax - 1035a0: c1 e8 0c shr $0xc,%eax - 1035a3: 89 45 dc mov %eax,-0x24(%ebp) - 1035a6: a1 c0 a8 11 00 mov 0x11a8c0,%eax - 1035ab: 39 45 dc cmp %eax,-0x24(%ebp) - 1035ae: 72 17 jb 1035c7 - 1035b0: ff 75 e0 pushl -0x20(%ebp) - 1035b3: 68 80 70 10 00 push $0x107080 - 1035b8: 68 8d 01 00 00 push $0x18d - 1035bd: 68 64 71 10 00 push $0x107164 - 1035c2: e8 06 ce ff ff call 1003cd <__panic> - 1035c7: 8b 45 e0 mov -0x20(%ebp),%eax - 1035ca: 2d 00 00 00 40 sub $0x40000000,%eax - 1035cf: 89 c2 mov %eax,%edx - 1035d1: 8b 45 0c mov 0xc(%ebp),%eax - 1035d4: c1 e8 0c shr $0xc,%eax - 1035d7: 25 ff 03 00 00 and $0x3ff,%eax - 1035dc: c1 e0 02 shl $0x2,%eax - 1035df: 01 d0 add %edx,%eax -} - 1035e1: c9 leave - 1035e2: c3 ret - -001035e3 : - -//get_page - get related Page struct for linear address la using PDT pgdir -struct Page * -get_page(pde_t *pgdir, uintptr_t la, pte_t **ptep_store) { - 1035e3: 55 push %ebp - 1035e4: 89 e5 mov %esp,%ebp - 1035e6: 83 ec 18 sub $0x18,%esp - pte_t *ptep = get_pte(pgdir, la, 0); - 1035e9: 83 ec 04 sub $0x4,%esp - 1035ec: 6a 00 push $0x0 - 1035ee: ff 75 0c pushl 0xc(%ebp) - 1035f1: ff 75 08 pushl 0x8(%ebp) - 1035f4: e8 af fe ff ff call 1034a8 - 1035f9: 83 c4 10 add $0x10,%esp - 1035fc: 89 45 f4 mov %eax,-0xc(%ebp) - if (ptep_store != NULL) { - 1035ff: 83 7d 10 00 cmpl $0x0,0x10(%ebp) - 103603: 74 08 je 10360d - *ptep_store = ptep; - 103605: 8b 45 10 mov 0x10(%ebp),%eax - 103608: 8b 55 f4 mov -0xc(%ebp),%edx - 10360b: 89 10 mov %edx,(%eax) - } - if (ptep != NULL && *ptep & PTE_P) { - 10360d: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) - 103611: 74 1f je 103632 - 103613: 8b 45 f4 mov -0xc(%ebp),%eax - 103616: 8b 00 mov (%eax),%eax - 103618: 83 e0 01 and $0x1,%eax - 10361b: 85 c0 test %eax,%eax - 10361d: 74 13 je 103632 - return pte2page(*ptep); - 10361f: 8b 45 f4 mov -0xc(%ebp),%eax - 103622: 8b 00 mov (%eax),%eax - 103624: 83 ec 0c sub $0xc,%esp - 103627: 50 push %eax - 103628: e8 de f4 ff ff call 102b0b - 10362d: 83 c4 10 add $0x10,%esp - 103630: eb 05 jmp 103637 - } - return NULL; - 103632: b8 00 00 00 00 mov $0x0,%eax -} - 103637: c9 leave - 103638: c3 ret - -00103639 : - -//page_remove_pte - free an Page sturct which is related linear address la -// - and clean(invalidate) pte which is related linear address la -//note: PT is changed, so the TLB need to be invalidate -static inline void -page_remove_pte(pde_t *pgdir, uintptr_t la, pte_t *ptep) { - 103639: 55 push %ebp - 10363a: 89 e5 mov %esp,%ebp - 10363c: 83 ec 18 sub $0x18,%esp - * tlb_invalidate(pde_t *pgdir, uintptr_t la) : Invalidate a TLB entry, but only if the page tables being - * edited are the ones currently in use by the processor. - * DEFINEs: - * PTE_P 0x001 // page table/directory entry flags bit : Present - */ - if (((*ptep) & PTE_P) == 1) { //(1) check if this page table entry is present - 10363f: 8b 45 10 mov 0x10(%ebp),%eax - 103642: 8b 00 mov (%eax),%eax - 103644: 83 e0 01 and $0x1,%eax - 103647: 85 c0 test %eax,%eax - 103649: 74 55 je 1036a0 - struct Page *page = pte2page(*ptep); //(2) find corresponding page to pte - 10364b: 8b 45 10 mov 0x10(%ebp),%eax - 10364e: 8b 00 mov (%eax),%eax - 103650: 83 ec 0c sub $0xc,%esp - 103653: 50 push %eax - 103654: e8 b2 f4 ff ff call 102b0b - 103659: 83 c4 10 add $0x10,%esp - 10365c: 89 45 f4 mov %eax,-0xc(%ebp) - page_ref_dec(page); //(3) decrease page reference - 10365f: 83 ec 0c sub $0xc,%esp - 103662: ff 75 f4 pushl -0xc(%ebp) - 103665: e8 26 f5 ff ff call 102b90 - 10366a: 83 c4 10 add $0x10,%esp - if (page->ref == 0) { - 10366d: 8b 45 f4 mov -0xc(%ebp),%eax - 103670: 8b 00 mov (%eax),%eax - 103672: 85 c0 test %eax,%eax - 103674: 75 10 jne 103686 - free_page(page); //(4) and free this page when page reference reachs 0 - 103676: 83 ec 08 sub $0x8,%esp - 103679: 6a 01 push $0x1 - 10367b: ff 75 f4 pushl -0xc(%ebp) - 10367e: e8 2a f7 ff ff call 102dad - 103683: 83 c4 10 add $0x10,%esp - } - (*ptep) = 0; //(5) clear second page table entry - 103686: 8b 45 10 mov 0x10(%ebp),%eax - 103689: c7 00 00 00 00 00 movl $0x0,(%eax) - tlb_invalidate(pgdir, la); //(6) flush tlb - 10368f: 83 ec 08 sub $0x8,%esp - 103692: ff 75 0c pushl 0xc(%ebp) - 103695: ff 75 08 pushl 0x8(%ebp) - 103698: e8 f8 00 00 00 call 103795 - 10369d: 83 c4 10 add $0x10,%esp - } - // Should I check whether all entries in PT is not present and recycle the PT? - // Then Maybe I should set the pde to be not present. -} - 1036a0: 90 nop - 1036a1: c9 leave - 1036a2: c3 ret - -001036a3 : - -//page_remove - free an Page which is related linear address la and has an validated pte -void -page_remove(pde_t *pgdir, uintptr_t la) { - 1036a3: 55 push %ebp - 1036a4: 89 e5 mov %esp,%ebp - 1036a6: 83 ec 18 sub $0x18,%esp - pte_t *ptep = get_pte(pgdir, la, 0); - 1036a9: 83 ec 04 sub $0x4,%esp - 1036ac: 6a 00 push $0x0 - 1036ae: ff 75 0c pushl 0xc(%ebp) - 1036b1: ff 75 08 pushl 0x8(%ebp) - 1036b4: e8 ef fd ff ff call 1034a8 - 1036b9: 83 c4 10 add $0x10,%esp - 1036bc: 89 45 f4 mov %eax,-0xc(%ebp) - if (ptep != NULL) { - 1036bf: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) - 1036c3: 74 14 je 1036d9 - page_remove_pte(pgdir, la, ptep); - 1036c5: 83 ec 04 sub $0x4,%esp - 1036c8: ff 75 f4 pushl -0xc(%ebp) - 1036cb: ff 75 0c pushl 0xc(%ebp) - 1036ce: ff 75 08 pushl 0x8(%ebp) - 1036d1: e8 63 ff ff ff call 103639 - 1036d6: 83 c4 10 add $0x10,%esp - } -} - 1036d9: 90 nop - 1036da: c9 leave - 1036db: c3 ret - -001036dc : -// la: the linear address need to map -// perm: the permission of this Page which is setted in related pte -// return value: always 0 -//note: PT is changed, so the TLB need to be invalidate -int -page_insert(pde_t *pgdir, struct Page *page, uintptr_t la, uint32_t perm) { - 1036dc: 55 push %ebp - 1036dd: 89 e5 mov %esp,%ebp - 1036df: 83 ec 18 sub $0x18,%esp - pte_t *ptep = get_pte(pgdir, la, 1); - 1036e2: 83 ec 04 sub $0x4,%esp - 1036e5: 6a 01 push $0x1 - 1036e7: ff 75 10 pushl 0x10(%ebp) - 1036ea: ff 75 08 pushl 0x8(%ebp) - 1036ed: e8 b6 fd ff ff call 1034a8 - 1036f2: 83 c4 10 add $0x10,%esp - 1036f5: 89 45 f4 mov %eax,-0xc(%ebp) - if (ptep == NULL) { - 1036f8: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) - 1036fc: 75 0a jne 103708 - return -E_NO_MEM; - 1036fe: b8 fc ff ff ff mov $0xfffffffc,%eax - 103703: e9 8b 00 00 00 jmp 103793 - } - page_ref_inc(page); - 103708: 83 ec 0c sub $0xc,%esp - 10370b: ff 75 0c pushl 0xc(%ebp) - 10370e: e8 66 f4 ff ff call 102b79 - 103713: 83 c4 10 add $0x10,%esp - if (*ptep & PTE_P) { - 103716: 8b 45 f4 mov -0xc(%ebp),%eax - 103719: 8b 00 mov (%eax),%eax - 10371b: 83 e0 01 and $0x1,%eax - 10371e: 85 c0 test %eax,%eax - 103720: 74 40 je 103762 - struct Page *p = pte2page(*ptep); - 103722: 8b 45 f4 mov -0xc(%ebp),%eax - 103725: 8b 00 mov (%eax),%eax - 103727: 83 ec 0c sub $0xc,%esp - 10372a: 50 push %eax - 10372b: e8 db f3 ff ff call 102b0b - 103730: 83 c4 10 add $0x10,%esp - 103733: 89 45 f0 mov %eax,-0x10(%ebp) - if (p == page) { - 103736: 8b 45 f0 mov -0x10(%ebp),%eax - 103739: 3b 45 0c cmp 0xc(%ebp),%eax - 10373c: 75 10 jne 10374e - page_ref_dec(page); - 10373e: 83 ec 0c sub $0xc,%esp - 103741: ff 75 0c pushl 0xc(%ebp) - 103744: e8 47 f4 ff ff call 102b90 - 103749: 83 c4 10 add $0x10,%esp - 10374c: eb 14 jmp 103762 - } - else { - page_remove_pte(pgdir, la, ptep); - 10374e: 83 ec 04 sub $0x4,%esp - 103751: ff 75 f4 pushl -0xc(%ebp) - 103754: ff 75 10 pushl 0x10(%ebp) - 103757: ff 75 08 pushl 0x8(%ebp) - 10375a: e8 da fe ff ff call 103639 - 10375f: 83 c4 10 add $0x10,%esp - } - } - *ptep = page2pa(page) | PTE_P | perm; - 103762: 83 ec 0c sub $0xc,%esp - 103765: ff 75 0c pushl 0xc(%ebp) - 103768: e8 ff f2 ff ff call 102a6c - 10376d: 83 c4 10 add $0x10,%esp - 103770: 0b 45 14 or 0x14(%ebp),%eax - 103773: 83 c8 01 or $0x1,%eax - 103776: 89 c2 mov %eax,%edx - 103778: 8b 45 f4 mov -0xc(%ebp),%eax - 10377b: 89 10 mov %edx,(%eax) - tlb_invalidate(pgdir, la); - 10377d: 83 ec 08 sub $0x8,%esp - 103780: ff 75 10 pushl 0x10(%ebp) - 103783: ff 75 08 pushl 0x8(%ebp) - 103786: e8 0a 00 00 00 call 103795 - 10378b: 83 c4 10 add $0x10,%esp - return 0; - 10378e: b8 00 00 00 00 mov $0x0,%eax -} - 103793: c9 leave - 103794: c3 ret - -00103795 : - -// invalidate a TLB entry, but only if the page tables being -// edited are the ones currently in use by the processor. -void -tlb_invalidate(pde_t *pgdir, uintptr_t la) { - 103795: 55 push %ebp - 103796: 89 e5 mov %esp,%ebp - 103798: 83 ec 18 sub $0x18,%esp -} - -static inline uintptr_t -rcr3(void) { - uintptr_t cr3; - asm volatile ("mov %%cr3, %0" : "=r" (cr3) :: "memory"); - 10379b: 0f 20 d8 mov %cr3,%eax - 10379e: 89 45 ec mov %eax,-0x14(%ebp) - return cr3; - 1037a1: 8b 55 ec mov -0x14(%ebp),%edx - if (rcr3() == PADDR(pgdir)) { - 1037a4: 8b 45 08 mov 0x8(%ebp),%eax - 1037a7: 89 45 f0 mov %eax,-0x10(%ebp) - 1037aa: 81 7d f0 ff ff ff bf cmpl $0xbfffffff,-0x10(%ebp) - 1037b1: 77 17 ja 1037ca - 1037b3: ff 75 f0 pushl -0x10(%ebp) - 1037b6: 68 40 71 10 00 push $0x107140 - 1037bb: 68 e9 01 00 00 push $0x1e9 - 1037c0: 68 64 71 10 00 push $0x107164 - 1037c5: e8 03 cc ff ff call 1003cd <__panic> - 1037ca: 8b 45 f0 mov -0x10(%ebp),%eax - 1037cd: 05 00 00 00 40 add $0x40000000,%eax - 1037d2: 39 c2 cmp %eax,%edx - 1037d4: 75 0c jne 1037e2 - invlpg((void *)la); - 1037d6: 8b 45 0c mov 0xc(%ebp),%eax - 1037d9: 89 45 f4 mov %eax,-0xc(%ebp) -} - -static inline void -invlpg(void *addr) { - asm volatile ("invlpg (%0)" :: "r" (addr) : "memory"); - 1037dc: 8b 45 f4 mov -0xc(%ebp),%eax - 1037df: 0f 01 38 invlpg (%eax) - } -} - 1037e2: 90 nop - 1037e3: c9 leave - 1037e4: c3 ret - -001037e5 : - -static void -check_alloc_page(void) { - 1037e5: 55 push %ebp - 1037e6: 89 e5 mov %esp,%ebp - 1037e8: 83 ec 08 sub $0x8,%esp - pmm_manager->check(); - 1037eb: a1 5c a9 11 00 mov 0x11a95c,%eax - 1037f0: 8b 40 18 mov 0x18(%eax),%eax - 1037f3: ff d0 call *%eax - cprintf("check_alloc_page() succeeded!\n"); - 1037f5: 83 ec 0c sub $0xc,%esp - 1037f8: 68 78 72 10 00 push $0x107278 - 1037fd: e8 65 ca ff ff call 100267 - 103802: 83 c4 10 add $0x10,%esp -} - 103805: 90 nop - 103806: c9 leave - 103807: c3 ret - -00103808 : - -static void -check_pgdir(void) { - 103808: 55 push %ebp - 103809: 89 e5 mov %esp,%ebp - 10380b: 83 ec 28 sub $0x28,%esp - assert(npage <= KMEMSIZE / PGSIZE); - 10380e: a1 c0 a8 11 00 mov 0x11a8c0,%eax - 103813: 3d 00 80 03 00 cmp $0x38000,%eax - 103818: 76 19 jbe 103833 - 10381a: 68 97 72 10 00 push $0x107297 - 10381f: 68 25 72 10 00 push $0x107225 - 103824: 68 f6 01 00 00 push $0x1f6 - 103829: 68 64 71 10 00 push $0x107164 - 10382e: e8 9a cb ff ff call 1003cd <__panic> - assert(boot_pgdir != NULL && (uint32_t)PGOFF(boot_pgdir) == 0); - 103833: a1 c4 a8 11 00 mov 0x11a8c4,%eax - 103838: 85 c0 test %eax,%eax - 10383a: 74 0e je 10384a - 10383c: a1 c4 a8 11 00 mov 0x11a8c4,%eax - 103841: 25 ff 0f 00 00 and $0xfff,%eax - 103846: 85 c0 test %eax,%eax - 103848: 74 19 je 103863 - 10384a: 68 b4 72 10 00 push $0x1072b4 - 10384f: 68 25 72 10 00 push $0x107225 - 103854: 68 f7 01 00 00 push $0x1f7 - 103859: 68 64 71 10 00 push $0x107164 - 10385e: e8 6a cb ff ff call 1003cd <__panic> - assert(get_page(boot_pgdir, 0x0, NULL) == NULL); - 103863: a1 c4 a8 11 00 mov 0x11a8c4,%eax - 103868: 83 ec 04 sub $0x4,%esp - 10386b: 6a 00 push $0x0 - 10386d: 6a 00 push $0x0 - 10386f: 50 push %eax - 103870: e8 6e fd ff ff call 1035e3 - 103875: 83 c4 10 add $0x10,%esp - 103878: 85 c0 test %eax,%eax - 10387a: 74 19 je 103895 - 10387c: 68 ec 72 10 00 push $0x1072ec - 103881: 68 25 72 10 00 push $0x107225 - 103886: 68 f8 01 00 00 push $0x1f8 - 10388b: 68 64 71 10 00 push $0x107164 - 103890: e8 38 cb ff ff call 1003cd <__panic> - - struct Page *p1, *p2; - p1 = alloc_page(); - 103895: 83 ec 0c sub $0xc,%esp - 103898: 6a 01 push $0x1 - 10389a: e8 d0 f4 ff ff call 102d6f - 10389f: 83 c4 10 add $0x10,%esp - 1038a2: 89 45 f4 mov %eax,-0xc(%ebp) - assert(page_insert(boot_pgdir, p1, 0x0, 0) == 0); - 1038a5: a1 c4 a8 11 00 mov 0x11a8c4,%eax - 1038aa: 6a 00 push $0x0 - 1038ac: 6a 00 push $0x0 - 1038ae: ff 75 f4 pushl -0xc(%ebp) - 1038b1: 50 push %eax - 1038b2: e8 25 fe ff ff call 1036dc - 1038b7: 83 c4 10 add $0x10,%esp - 1038ba: 85 c0 test %eax,%eax - 1038bc: 74 19 je 1038d7 - 1038be: 68 14 73 10 00 push $0x107314 - 1038c3: 68 25 72 10 00 push $0x107225 - 1038c8: 68 fc 01 00 00 push $0x1fc - 1038cd: 68 64 71 10 00 push $0x107164 - 1038d2: e8 f6 ca ff ff call 1003cd <__panic> - - pte_t *ptep; - assert((ptep = get_pte(boot_pgdir, 0x0, 0)) != NULL); - 1038d7: a1 c4 a8 11 00 mov 0x11a8c4,%eax - 1038dc: 83 ec 04 sub $0x4,%esp - 1038df: 6a 00 push $0x0 - 1038e1: 6a 00 push $0x0 - 1038e3: 50 push %eax - 1038e4: e8 bf fb ff ff call 1034a8 - 1038e9: 83 c4 10 add $0x10,%esp - 1038ec: 89 45 f0 mov %eax,-0x10(%ebp) - 1038ef: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) - 1038f3: 75 19 jne 10390e - 1038f5: 68 40 73 10 00 push $0x107340 - 1038fa: 68 25 72 10 00 push $0x107225 - 1038ff: 68 ff 01 00 00 push $0x1ff - 103904: 68 64 71 10 00 push $0x107164 - 103909: e8 bf ca ff ff call 1003cd <__panic> - assert(pte2page(*ptep) == p1); - 10390e: 8b 45 f0 mov -0x10(%ebp),%eax - 103911: 8b 00 mov (%eax),%eax - 103913: 83 ec 0c sub $0xc,%esp - 103916: 50 push %eax - 103917: e8 ef f1 ff ff call 102b0b - 10391c: 83 c4 10 add $0x10,%esp - 10391f: 3b 45 f4 cmp -0xc(%ebp),%eax - 103922: 74 19 je 10393d - 103924: 68 6d 73 10 00 push $0x10736d - 103929: 68 25 72 10 00 push $0x107225 - 10392e: 68 00 02 00 00 push $0x200 - 103933: 68 64 71 10 00 push $0x107164 - 103938: e8 90 ca ff ff call 1003cd <__panic> - assert(page_ref(p1) == 1); - 10393d: 83 ec 0c sub $0xc,%esp - 103940: ff 75 f4 pushl -0xc(%ebp) - 103943: e8 19 f2 ff ff call 102b61 - 103948: 83 c4 10 add $0x10,%esp - 10394b: 83 f8 01 cmp $0x1,%eax - 10394e: 74 19 je 103969 - 103950: 68 83 73 10 00 push $0x107383 - 103955: 68 25 72 10 00 push $0x107225 - 10395a: 68 01 02 00 00 push $0x201 - 10395f: 68 64 71 10 00 push $0x107164 - 103964: e8 64 ca ff ff call 1003cd <__panic> - - ptep = &((pte_t *)KADDR(PDE_ADDR(boot_pgdir[0])))[1]; - 103969: a1 c4 a8 11 00 mov 0x11a8c4,%eax - 10396e: 8b 00 mov (%eax),%eax - 103970: 25 00 f0 ff ff and $0xfffff000,%eax - 103975: 89 45 ec mov %eax,-0x14(%ebp) - 103978: 8b 45 ec mov -0x14(%ebp),%eax - 10397b: c1 e8 0c shr $0xc,%eax - 10397e: 89 45 e8 mov %eax,-0x18(%ebp) - 103981: a1 c0 a8 11 00 mov 0x11a8c0,%eax - 103986: 39 45 e8 cmp %eax,-0x18(%ebp) - 103989: 72 17 jb 1039a2 - 10398b: ff 75 ec pushl -0x14(%ebp) - 10398e: 68 80 70 10 00 push $0x107080 - 103993: 68 03 02 00 00 push $0x203 - 103998: 68 64 71 10 00 push $0x107164 - 10399d: e8 2b ca ff ff call 1003cd <__panic> - 1039a2: 8b 45 ec mov -0x14(%ebp),%eax - 1039a5: 2d 00 00 00 40 sub $0x40000000,%eax - 1039aa: 83 c0 04 add $0x4,%eax - 1039ad: 89 45 f0 mov %eax,-0x10(%ebp) - assert(get_pte(boot_pgdir, PGSIZE, 0) == ptep); - 1039b0: a1 c4 a8 11 00 mov 0x11a8c4,%eax - 1039b5: 83 ec 04 sub $0x4,%esp - 1039b8: 6a 00 push $0x0 - 1039ba: 68 00 10 00 00 push $0x1000 - 1039bf: 50 push %eax - 1039c0: e8 e3 fa ff ff call 1034a8 - 1039c5: 83 c4 10 add $0x10,%esp - 1039c8: 3b 45 f0 cmp -0x10(%ebp),%eax - 1039cb: 74 19 je 1039e6 - 1039cd: 68 98 73 10 00 push $0x107398 - 1039d2: 68 25 72 10 00 push $0x107225 - 1039d7: 68 04 02 00 00 push $0x204 - 1039dc: 68 64 71 10 00 push $0x107164 - 1039e1: e8 e7 c9 ff ff call 1003cd <__panic> - - p2 = alloc_page(); - 1039e6: 83 ec 0c sub $0xc,%esp - 1039e9: 6a 01 push $0x1 - 1039eb: e8 7f f3 ff ff call 102d6f - 1039f0: 83 c4 10 add $0x10,%esp - 1039f3: 89 45 e4 mov %eax,-0x1c(%ebp) - assert(page_insert(boot_pgdir, p2, PGSIZE, PTE_U | PTE_W) == 0); - 1039f6: a1 c4 a8 11 00 mov 0x11a8c4,%eax - 1039fb: 6a 06 push $0x6 - 1039fd: 68 00 10 00 00 push $0x1000 - 103a02: ff 75 e4 pushl -0x1c(%ebp) - 103a05: 50 push %eax - 103a06: e8 d1 fc ff ff call 1036dc - 103a0b: 83 c4 10 add $0x10,%esp - 103a0e: 85 c0 test %eax,%eax - 103a10: 74 19 je 103a2b - 103a12: 68 c0 73 10 00 push $0x1073c0 - 103a17: 68 25 72 10 00 push $0x107225 - 103a1c: 68 07 02 00 00 push $0x207 - 103a21: 68 64 71 10 00 push $0x107164 - 103a26: e8 a2 c9 ff ff call 1003cd <__panic> - assert((ptep = get_pte(boot_pgdir, PGSIZE, 0)) != NULL); - 103a2b: a1 c4 a8 11 00 mov 0x11a8c4,%eax - 103a30: 83 ec 04 sub $0x4,%esp - 103a33: 6a 00 push $0x0 - 103a35: 68 00 10 00 00 push $0x1000 - 103a3a: 50 push %eax - 103a3b: e8 68 fa ff ff call 1034a8 - 103a40: 83 c4 10 add $0x10,%esp - 103a43: 89 45 f0 mov %eax,-0x10(%ebp) - 103a46: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) - 103a4a: 75 19 jne 103a65 - 103a4c: 68 f8 73 10 00 push $0x1073f8 - 103a51: 68 25 72 10 00 push $0x107225 - 103a56: 68 08 02 00 00 push $0x208 - 103a5b: 68 64 71 10 00 push $0x107164 - 103a60: e8 68 c9 ff ff call 1003cd <__panic> - assert(*ptep & PTE_U); - 103a65: 8b 45 f0 mov -0x10(%ebp),%eax - 103a68: 8b 00 mov (%eax),%eax - 103a6a: 83 e0 04 and $0x4,%eax - 103a6d: 85 c0 test %eax,%eax - 103a6f: 75 19 jne 103a8a - 103a71: 68 28 74 10 00 push $0x107428 - 103a76: 68 25 72 10 00 push $0x107225 - 103a7b: 68 09 02 00 00 push $0x209 - 103a80: 68 64 71 10 00 push $0x107164 - 103a85: e8 43 c9 ff ff call 1003cd <__panic> - assert(*ptep & PTE_W); - 103a8a: 8b 45 f0 mov -0x10(%ebp),%eax - 103a8d: 8b 00 mov (%eax),%eax - 103a8f: 83 e0 02 and $0x2,%eax - 103a92: 85 c0 test %eax,%eax - 103a94: 75 19 jne 103aaf - 103a96: 68 36 74 10 00 push $0x107436 - 103a9b: 68 25 72 10 00 push $0x107225 - 103aa0: 68 0a 02 00 00 push $0x20a - 103aa5: 68 64 71 10 00 push $0x107164 - 103aaa: e8 1e c9 ff ff call 1003cd <__panic> - assert(boot_pgdir[0] & PTE_U); - 103aaf: a1 c4 a8 11 00 mov 0x11a8c4,%eax - 103ab4: 8b 00 mov (%eax),%eax - 103ab6: 83 e0 04 and $0x4,%eax - 103ab9: 85 c0 test %eax,%eax - 103abb: 75 19 jne 103ad6 - 103abd: 68 44 74 10 00 push $0x107444 - 103ac2: 68 25 72 10 00 push $0x107225 - 103ac7: 68 0b 02 00 00 push $0x20b - 103acc: 68 64 71 10 00 push $0x107164 - 103ad1: e8 f7 c8 ff ff call 1003cd <__panic> - assert(page_ref(p2) == 1); - 103ad6: 83 ec 0c sub $0xc,%esp - 103ad9: ff 75 e4 pushl -0x1c(%ebp) - 103adc: e8 80 f0 ff ff call 102b61 - 103ae1: 83 c4 10 add $0x10,%esp - 103ae4: 83 f8 01 cmp $0x1,%eax - 103ae7: 74 19 je 103b02 - 103ae9: 68 5a 74 10 00 push $0x10745a - 103aee: 68 25 72 10 00 push $0x107225 - 103af3: 68 0c 02 00 00 push $0x20c - 103af8: 68 64 71 10 00 push $0x107164 - 103afd: e8 cb c8 ff ff call 1003cd <__panic> - - assert(page_insert(boot_pgdir, p1, PGSIZE, 0) == 0); - 103b02: a1 c4 a8 11 00 mov 0x11a8c4,%eax - 103b07: 6a 00 push $0x0 - 103b09: 68 00 10 00 00 push $0x1000 - 103b0e: ff 75 f4 pushl -0xc(%ebp) - 103b11: 50 push %eax - 103b12: e8 c5 fb ff ff call 1036dc - 103b17: 83 c4 10 add $0x10,%esp - 103b1a: 85 c0 test %eax,%eax - 103b1c: 74 19 je 103b37 - 103b1e: 68 6c 74 10 00 push $0x10746c - 103b23: 68 25 72 10 00 push $0x107225 - 103b28: 68 0e 02 00 00 push $0x20e - 103b2d: 68 64 71 10 00 push $0x107164 - 103b32: e8 96 c8 ff ff call 1003cd <__panic> - assert(page_ref(p1) == 2); - 103b37: 83 ec 0c sub $0xc,%esp - 103b3a: ff 75 f4 pushl -0xc(%ebp) - 103b3d: e8 1f f0 ff ff call 102b61 - 103b42: 83 c4 10 add $0x10,%esp - 103b45: 83 f8 02 cmp $0x2,%eax - 103b48: 74 19 je 103b63 - 103b4a: 68 98 74 10 00 push $0x107498 - 103b4f: 68 25 72 10 00 push $0x107225 - 103b54: 68 0f 02 00 00 push $0x20f - 103b59: 68 64 71 10 00 push $0x107164 - 103b5e: e8 6a c8 ff ff call 1003cd <__panic> - assert(page_ref(p2) == 0); - 103b63: 83 ec 0c sub $0xc,%esp - 103b66: ff 75 e4 pushl -0x1c(%ebp) - 103b69: e8 f3 ef ff ff call 102b61 - 103b6e: 83 c4 10 add $0x10,%esp - 103b71: 85 c0 test %eax,%eax - 103b73: 74 19 je 103b8e - 103b75: 68 aa 74 10 00 push $0x1074aa - 103b7a: 68 25 72 10 00 push $0x107225 - 103b7f: 68 10 02 00 00 push $0x210 - 103b84: 68 64 71 10 00 push $0x107164 - 103b89: e8 3f c8 ff ff call 1003cd <__panic> - assert((ptep = get_pte(boot_pgdir, PGSIZE, 0)) != NULL); - 103b8e: a1 c4 a8 11 00 mov 0x11a8c4,%eax - 103b93: 83 ec 04 sub $0x4,%esp - 103b96: 6a 00 push $0x0 - 103b98: 68 00 10 00 00 push $0x1000 - 103b9d: 50 push %eax - 103b9e: e8 05 f9 ff ff call 1034a8 - 103ba3: 83 c4 10 add $0x10,%esp - 103ba6: 89 45 f0 mov %eax,-0x10(%ebp) - 103ba9: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) - 103bad: 75 19 jne 103bc8 - 103baf: 68 f8 73 10 00 push $0x1073f8 - 103bb4: 68 25 72 10 00 push $0x107225 - 103bb9: 68 11 02 00 00 push $0x211 - 103bbe: 68 64 71 10 00 push $0x107164 - 103bc3: e8 05 c8 ff ff call 1003cd <__panic> - assert(pte2page(*ptep) == p1); - 103bc8: 8b 45 f0 mov -0x10(%ebp),%eax - 103bcb: 8b 00 mov (%eax),%eax - 103bcd: 83 ec 0c sub $0xc,%esp - 103bd0: 50 push %eax - 103bd1: e8 35 ef ff ff call 102b0b - 103bd6: 83 c4 10 add $0x10,%esp - 103bd9: 3b 45 f4 cmp -0xc(%ebp),%eax - 103bdc: 74 19 je 103bf7 - 103bde: 68 6d 73 10 00 push $0x10736d - 103be3: 68 25 72 10 00 push $0x107225 - 103be8: 68 12 02 00 00 push $0x212 - 103bed: 68 64 71 10 00 push $0x107164 - 103bf2: e8 d6 c7 ff ff call 1003cd <__panic> - assert((*ptep & PTE_U) == 0); - 103bf7: 8b 45 f0 mov -0x10(%ebp),%eax - 103bfa: 8b 00 mov (%eax),%eax - 103bfc: 83 e0 04 and $0x4,%eax - 103bff: 85 c0 test %eax,%eax - 103c01: 74 19 je 103c1c - 103c03: 68 bc 74 10 00 push $0x1074bc - 103c08: 68 25 72 10 00 push $0x107225 - 103c0d: 68 13 02 00 00 push $0x213 - 103c12: 68 64 71 10 00 push $0x107164 - 103c17: e8 b1 c7 ff ff call 1003cd <__panic> - - page_remove(boot_pgdir, 0x0); - 103c1c: a1 c4 a8 11 00 mov 0x11a8c4,%eax - 103c21: 83 ec 08 sub $0x8,%esp - 103c24: 6a 00 push $0x0 - 103c26: 50 push %eax - 103c27: e8 77 fa ff ff call 1036a3 - 103c2c: 83 c4 10 add $0x10,%esp - assert(page_ref(p1) == 1); - 103c2f: 83 ec 0c sub $0xc,%esp - 103c32: ff 75 f4 pushl -0xc(%ebp) - 103c35: e8 27 ef ff ff call 102b61 - 103c3a: 83 c4 10 add $0x10,%esp - 103c3d: 83 f8 01 cmp $0x1,%eax - 103c40: 74 19 je 103c5b - 103c42: 68 83 73 10 00 push $0x107383 - 103c47: 68 25 72 10 00 push $0x107225 - 103c4c: 68 16 02 00 00 push $0x216 - 103c51: 68 64 71 10 00 push $0x107164 - 103c56: e8 72 c7 ff ff call 1003cd <__panic> - assert(page_ref(p2) == 0); - 103c5b: 83 ec 0c sub $0xc,%esp - 103c5e: ff 75 e4 pushl -0x1c(%ebp) - 103c61: e8 fb ee ff ff call 102b61 - 103c66: 83 c4 10 add $0x10,%esp - 103c69: 85 c0 test %eax,%eax - 103c6b: 74 19 je 103c86 - 103c6d: 68 aa 74 10 00 push $0x1074aa - 103c72: 68 25 72 10 00 push $0x107225 - 103c77: 68 17 02 00 00 push $0x217 - 103c7c: 68 64 71 10 00 push $0x107164 - 103c81: e8 47 c7 ff ff call 1003cd <__panic> - - page_remove(boot_pgdir, PGSIZE); - 103c86: a1 c4 a8 11 00 mov 0x11a8c4,%eax - 103c8b: 83 ec 08 sub $0x8,%esp - 103c8e: 68 00 10 00 00 push $0x1000 - 103c93: 50 push %eax - 103c94: e8 0a fa ff ff call 1036a3 - 103c99: 83 c4 10 add $0x10,%esp - assert(page_ref(p1) == 0); - 103c9c: 83 ec 0c sub $0xc,%esp - 103c9f: ff 75 f4 pushl -0xc(%ebp) - 103ca2: e8 ba ee ff ff call 102b61 - 103ca7: 83 c4 10 add $0x10,%esp - 103caa: 85 c0 test %eax,%eax - 103cac: 74 19 je 103cc7 - 103cae: 68 d1 74 10 00 push $0x1074d1 - 103cb3: 68 25 72 10 00 push $0x107225 - 103cb8: 68 1a 02 00 00 push $0x21a - 103cbd: 68 64 71 10 00 push $0x107164 - 103cc2: e8 06 c7 ff ff call 1003cd <__panic> - assert(page_ref(p2) == 0); - 103cc7: 83 ec 0c sub $0xc,%esp - 103cca: ff 75 e4 pushl -0x1c(%ebp) - 103ccd: e8 8f ee ff ff call 102b61 - 103cd2: 83 c4 10 add $0x10,%esp - 103cd5: 85 c0 test %eax,%eax - 103cd7: 74 19 je 103cf2 - 103cd9: 68 aa 74 10 00 push $0x1074aa - 103cde: 68 25 72 10 00 push $0x107225 - 103ce3: 68 1b 02 00 00 push $0x21b - 103ce8: 68 64 71 10 00 push $0x107164 - 103ced: e8 db c6 ff ff call 1003cd <__panic> - - assert(page_ref(pde2page(boot_pgdir[0])) == 1); - 103cf2: a1 c4 a8 11 00 mov 0x11a8c4,%eax - 103cf7: 8b 00 mov (%eax),%eax - 103cf9: 83 ec 0c sub $0xc,%esp - 103cfc: 50 push %eax - 103cfd: e8 43 ee ff ff call 102b45 - 103d02: 83 c4 10 add $0x10,%esp - 103d05: 83 ec 0c sub $0xc,%esp - 103d08: 50 push %eax - 103d09: e8 53 ee ff ff call 102b61 - 103d0e: 83 c4 10 add $0x10,%esp - 103d11: 83 f8 01 cmp $0x1,%eax - 103d14: 74 19 je 103d2f - 103d16: 68 e4 74 10 00 push $0x1074e4 - 103d1b: 68 25 72 10 00 push $0x107225 - 103d20: 68 1d 02 00 00 push $0x21d - 103d25: 68 64 71 10 00 push $0x107164 - 103d2a: e8 9e c6 ff ff call 1003cd <__panic> - free_page(pde2page(boot_pgdir[0])); - 103d2f: a1 c4 a8 11 00 mov 0x11a8c4,%eax - 103d34: 8b 00 mov (%eax),%eax - 103d36: 83 ec 0c sub $0xc,%esp - 103d39: 50 push %eax - 103d3a: e8 06 ee ff ff call 102b45 - 103d3f: 83 c4 10 add $0x10,%esp - 103d42: 83 ec 08 sub $0x8,%esp - 103d45: 6a 01 push $0x1 - 103d47: 50 push %eax - 103d48: e8 60 f0 ff ff call 102dad - 103d4d: 83 c4 10 add $0x10,%esp - boot_pgdir[0] = 0; - 103d50: a1 c4 a8 11 00 mov 0x11a8c4,%eax - 103d55: c7 00 00 00 00 00 movl $0x0,(%eax) - - cprintf("check_pgdir() succeeded!\n"); - 103d5b: 83 ec 0c sub $0xc,%esp - 103d5e: 68 0b 75 10 00 push $0x10750b - 103d63: e8 ff c4 ff ff call 100267 - 103d68: 83 c4 10 add $0x10,%esp -} - 103d6b: 90 nop - 103d6c: c9 leave - 103d6d: c3 ret - -00103d6e : - -static void -check_boot_pgdir(void) { - 103d6e: 55 push %ebp - 103d6f: 89 e5 mov %esp,%ebp - 103d71: 83 ec 28 sub $0x28,%esp - pte_t *ptep; - int i; - for (i = 0; i < npage; i += PGSIZE) { - 103d74: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - 103d7b: e9 a3 00 00 00 jmp 103e23 - assert((ptep = get_pte(boot_pgdir, (uintptr_t)KADDR(i), 0)) != NULL); - 103d80: 8b 45 f4 mov -0xc(%ebp),%eax - 103d83: 89 45 f0 mov %eax,-0x10(%ebp) - 103d86: 8b 45 f0 mov -0x10(%ebp),%eax - 103d89: c1 e8 0c shr $0xc,%eax - 103d8c: 89 45 ec mov %eax,-0x14(%ebp) - 103d8f: a1 c0 a8 11 00 mov 0x11a8c0,%eax - 103d94: 39 45 ec cmp %eax,-0x14(%ebp) - 103d97: 72 17 jb 103db0 - 103d99: ff 75 f0 pushl -0x10(%ebp) - 103d9c: 68 80 70 10 00 push $0x107080 - 103da1: 68 29 02 00 00 push $0x229 - 103da6: 68 64 71 10 00 push $0x107164 - 103dab: e8 1d c6 ff ff call 1003cd <__panic> - 103db0: 8b 45 f0 mov -0x10(%ebp),%eax - 103db3: 2d 00 00 00 40 sub $0x40000000,%eax - 103db8: 89 c2 mov %eax,%edx - 103dba: a1 c4 a8 11 00 mov 0x11a8c4,%eax - 103dbf: 83 ec 04 sub $0x4,%esp - 103dc2: 6a 00 push $0x0 - 103dc4: 52 push %edx - 103dc5: 50 push %eax - 103dc6: e8 dd f6 ff ff call 1034a8 - 103dcb: 83 c4 10 add $0x10,%esp - 103dce: 89 45 e8 mov %eax,-0x18(%ebp) - 103dd1: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) - 103dd5: 75 19 jne 103df0 - 103dd7: 68 28 75 10 00 push $0x107528 - 103ddc: 68 25 72 10 00 push $0x107225 - 103de1: 68 29 02 00 00 push $0x229 - 103de6: 68 64 71 10 00 push $0x107164 - 103deb: e8 dd c5 ff ff call 1003cd <__panic> - assert(PTE_ADDR(*ptep) == i); - 103df0: 8b 45 e8 mov -0x18(%ebp),%eax - 103df3: 8b 00 mov (%eax),%eax - 103df5: 25 00 f0 ff ff and $0xfffff000,%eax - 103dfa: 89 c2 mov %eax,%edx - 103dfc: 8b 45 f4 mov -0xc(%ebp),%eax - 103dff: 39 c2 cmp %eax,%edx - 103e01: 74 19 je 103e1c - 103e03: 68 65 75 10 00 push $0x107565 - 103e08: 68 25 72 10 00 push $0x107225 - 103e0d: 68 2a 02 00 00 push $0x22a - 103e12: 68 64 71 10 00 push $0x107164 - 103e17: e8 b1 c5 ff ff call 1003cd <__panic> - -static void -check_boot_pgdir(void) { - pte_t *ptep; - int i; - for (i = 0; i < npage; i += PGSIZE) { - 103e1c: 81 45 f4 00 10 00 00 addl $0x1000,-0xc(%ebp) - 103e23: 8b 55 f4 mov -0xc(%ebp),%edx - 103e26: a1 c0 a8 11 00 mov 0x11a8c0,%eax - 103e2b: 39 c2 cmp %eax,%edx - 103e2d: 0f 82 4d ff ff ff jb 103d80 - assert((ptep = get_pte(boot_pgdir, (uintptr_t)KADDR(i), 0)) != NULL); - assert(PTE_ADDR(*ptep) == i); - } - - assert(PDE_ADDR(boot_pgdir[PDX(VPT)]) == PADDR(boot_pgdir)); - 103e33: a1 c4 a8 11 00 mov 0x11a8c4,%eax - 103e38: 05 ac 0f 00 00 add $0xfac,%eax - 103e3d: 8b 00 mov (%eax),%eax - 103e3f: 25 00 f0 ff ff and $0xfffff000,%eax - 103e44: 89 c2 mov %eax,%edx - 103e46: a1 c4 a8 11 00 mov 0x11a8c4,%eax - 103e4b: 89 45 e4 mov %eax,-0x1c(%ebp) - 103e4e: 81 7d e4 ff ff ff bf cmpl $0xbfffffff,-0x1c(%ebp) - 103e55: 77 17 ja 103e6e - 103e57: ff 75 e4 pushl -0x1c(%ebp) - 103e5a: 68 40 71 10 00 push $0x107140 - 103e5f: 68 2d 02 00 00 push $0x22d - 103e64: 68 64 71 10 00 push $0x107164 - 103e69: e8 5f c5 ff ff call 1003cd <__panic> - 103e6e: 8b 45 e4 mov -0x1c(%ebp),%eax - 103e71: 05 00 00 00 40 add $0x40000000,%eax - 103e76: 39 c2 cmp %eax,%edx - 103e78: 74 19 je 103e93 - 103e7a: 68 7c 75 10 00 push $0x10757c - 103e7f: 68 25 72 10 00 push $0x107225 - 103e84: 68 2d 02 00 00 push $0x22d - 103e89: 68 64 71 10 00 push $0x107164 - 103e8e: e8 3a c5 ff ff call 1003cd <__panic> - - assert(boot_pgdir[0] == 0); - 103e93: a1 c4 a8 11 00 mov 0x11a8c4,%eax - 103e98: 8b 00 mov (%eax),%eax - 103e9a: 85 c0 test %eax,%eax - 103e9c: 74 19 je 103eb7 - 103e9e: 68 b0 75 10 00 push $0x1075b0 - 103ea3: 68 25 72 10 00 push $0x107225 - 103ea8: 68 2f 02 00 00 push $0x22f - 103ead: 68 64 71 10 00 push $0x107164 - 103eb2: e8 16 c5 ff ff call 1003cd <__panic> - - struct Page *p; - p = alloc_page(); - 103eb7: 83 ec 0c sub $0xc,%esp - 103eba: 6a 01 push $0x1 - 103ebc: e8 ae ee ff ff call 102d6f - 103ec1: 83 c4 10 add $0x10,%esp - 103ec4: 89 45 e0 mov %eax,-0x20(%ebp) - assert(page_insert(boot_pgdir, p, 0x100, PTE_W) == 0); - 103ec7: a1 c4 a8 11 00 mov 0x11a8c4,%eax - 103ecc: 6a 02 push $0x2 - 103ece: 68 00 01 00 00 push $0x100 - 103ed3: ff 75 e0 pushl -0x20(%ebp) - 103ed6: 50 push %eax - 103ed7: e8 00 f8 ff ff call 1036dc - 103edc: 83 c4 10 add $0x10,%esp - 103edf: 85 c0 test %eax,%eax - 103ee1: 74 19 je 103efc - 103ee3: 68 c4 75 10 00 push $0x1075c4 - 103ee8: 68 25 72 10 00 push $0x107225 - 103eed: 68 33 02 00 00 push $0x233 - 103ef2: 68 64 71 10 00 push $0x107164 - 103ef7: e8 d1 c4 ff ff call 1003cd <__panic> - assert(page_ref(p) == 1); - 103efc: 83 ec 0c sub $0xc,%esp - 103eff: ff 75 e0 pushl -0x20(%ebp) - 103f02: e8 5a ec ff ff call 102b61 - 103f07: 83 c4 10 add $0x10,%esp - 103f0a: 83 f8 01 cmp $0x1,%eax - 103f0d: 74 19 je 103f28 - 103f0f: 68 f2 75 10 00 push $0x1075f2 - 103f14: 68 25 72 10 00 push $0x107225 - 103f19: 68 34 02 00 00 push $0x234 - 103f1e: 68 64 71 10 00 push $0x107164 - 103f23: e8 a5 c4 ff ff call 1003cd <__panic> - assert(page_insert(boot_pgdir, p, 0x100 + PGSIZE, PTE_W) == 0); - 103f28: a1 c4 a8 11 00 mov 0x11a8c4,%eax - 103f2d: 6a 02 push $0x2 - 103f2f: 68 00 11 00 00 push $0x1100 - 103f34: ff 75 e0 pushl -0x20(%ebp) - 103f37: 50 push %eax - 103f38: e8 9f f7 ff ff call 1036dc - 103f3d: 83 c4 10 add $0x10,%esp - 103f40: 85 c0 test %eax,%eax - 103f42: 74 19 je 103f5d - 103f44: 68 04 76 10 00 push $0x107604 - 103f49: 68 25 72 10 00 push $0x107225 - 103f4e: 68 35 02 00 00 push $0x235 - 103f53: 68 64 71 10 00 push $0x107164 - 103f58: e8 70 c4 ff ff call 1003cd <__panic> - assert(page_ref(p) == 2); - 103f5d: 83 ec 0c sub $0xc,%esp - 103f60: ff 75 e0 pushl -0x20(%ebp) - 103f63: e8 f9 eb ff ff call 102b61 - 103f68: 83 c4 10 add $0x10,%esp - 103f6b: 83 f8 02 cmp $0x2,%eax - 103f6e: 74 19 je 103f89 - 103f70: 68 3b 76 10 00 push $0x10763b - 103f75: 68 25 72 10 00 push $0x107225 - 103f7a: 68 36 02 00 00 push $0x236 - 103f7f: 68 64 71 10 00 push $0x107164 - 103f84: e8 44 c4 ff ff call 1003cd <__panic> - - const char *str = "ucore: Hello world!!"; - 103f89: c7 45 dc 4c 76 10 00 movl $0x10764c,-0x24(%ebp) - strcpy((void *)0x100, str); - 103f90: 83 ec 08 sub $0x8,%esp - 103f93: ff 75 dc pushl -0x24(%ebp) - 103f96: 68 00 01 00 00 push $0x100 - 103f9b: e8 ee 1e 00 00 call 105e8e - 103fa0: 83 c4 10 add $0x10,%esp - assert(strcmp((void *)0x100, (void *)(0x100 + PGSIZE)) == 0); - 103fa3: 83 ec 08 sub $0x8,%esp - 103fa6: 68 00 11 00 00 push $0x1100 - 103fab: 68 00 01 00 00 push $0x100 - 103fb0: e8 53 1f 00 00 call 105f08 - 103fb5: 83 c4 10 add $0x10,%esp - 103fb8: 85 c0 test %eax,%eax - 103fba: 74 19 je 103fd5 - 103fbc: 68 64 76 10 00 push $0x107664 - 103fc1: 68 25 72 10 00 push $0x107225 - 103fc6: 68 3a 02 00 00 push $0x23a - 103fcb: 68 64 71 10 00 push $0x107164 - 103fd0: e8 f8 c3 ff ff call 1003cd <__panic> - - *(char *)(page2kva(p) + 0x100) = '\0'; - 103fd5: 83 ec 0c sub $0xc,%esp - 103fd8: ff 75 e0 pushl -0x20(%ebp) - 103fdb: e8 e6 ea ff ff call 102ac6 - 103fe0: 83 c4 10 add $0x10,%esp - 103fe3: 05 00 01 00 00 add $0x100,%eax - 103fe8: c6 00 00 movb $0x0,(%eax) - assert(strlen((const char *)0x100) == 0); - 103feb: 83 ec 0c sub $0xc,%esp - 103fee: 68 00 01 00 00 push $0x100 - 103ff3: e8 3e 1e 00 00 call 105e36 - 103ff8: 83 c4 10 add $0x10,%esp - 103ffb: 85 c0 test %eax,%eax - 103ffd: 74 19 je 104018 - 103fff: 68 9c 76 10 00 push $0x10769c - 104004: 68 25 72 10 00 push $0x107225 - 104009: 68 3d 02 00 00 push $0x23d - 10400e: 68 64 71 10 00 push $0x107164 - 104013: e8 b5 c3 ff ff call 1003cd <__panic> - - free_page(p); - 104018: 83 ec 08 sub $0x8,%esp - 10401b: 6a 01 push $0x1 - 10401d: ff 75 e0 pushl -0x20(%ebp) - 104020: e8 88 ed ff ff call 102dad - 104025: 83 c4 10 add $0x10,%esp - free_page(pde2page(boot_pgdir[0])); - 104028: a1 c4 a8 11 00 mov 0x11a8c4,%eax - 10402d: 8b 00 mov (%eax),%eax - 10402f: 83 ec 0c sub $0xc,%esp - 104032: 50 push %eax - 104033: e8 0d eb ff ff call 102b45 - 104038: 83 c4 10 add $0x10,%esp - 10403b: 83 ec 08 sub $0x8,%esp - 10403e: 6a 01 push $0x1 - 104040: 50 push %eax - 104041: e8 67 ed ff ff call 102dad - 104046: 83 c4 10 add $0x10,%esp - boot_pgdir[0] = 0; - 104049: a1 c4 a8 11 00 mov 0x11a8c4,%eax - 10404e: c7 00 00 00 00 00 movl $0x0,(%eax) - - cprintf("check_boot_pgdir() succeeded!\n"); - 104054: 83 ec 0c sub $0xc,%esp - 104057: 68 c0 76 10 00 push $0x1076c0 - 10405c: e8 06 c2 ff ff call 100267 - 104061: 83 c4 10 add $0x10,%esp -} - 104064: 90 nop - 104065: c9 leave - 104066: c3 ret - -00104067 : - -//perm2str - use string 'u,r,w,-' to present the permission -static const char * -perm2str(int perm) { - 104067: 55 push %ebp - 104068: 89 e5 mov %esp,%ebp - static char str[4]; - str[0] = (perm & PTE_U) ? 'u' : '-'; - 10406a: 8b 45 08 mov 0x8(%ebp),%eax - 10406d: 83 e0 04 and $0x4,%eax - 104070: 85 c0 test %eax,%eax - 104072: 74 07 je 10407b - 104074: b8 75 00 00 00 mov $0x75,%eax - 104079: eb 05 jmp 104080 - 10407b: b8 2d 00 00 00 mov $0x2d,%eax - 104080: a2 48 a9 11 00 mov %al,0x11a948 - str[1] = 'r'; - 104085: c6 05 49 a9 11 00 72 movb $0x72,0x11a949 - str[2] = (perm & PTE_W) ? 'w' : '-'; - 10408c: 8b 45 08 mov 0x8(%ebp),%eax - 10408f: 83 e0 02 and $0x2,%eax - 104092: 85 c0 test %eax,%eax - 104094: 74 07 je 10409d - 104096: b8 77 00 00 00 mov $0x77,%eax - 10409b: eb 05 jmp 1040a2 - 10409d: b8 2d 00 00 00 mov $0x2d,%eax - 1040a2: a2 4a a9 11 00 mov %al,0x11a94a - str[3] = '\0'; - 1040a7: c6 05 4b a9 11 00 00 movb $0x0,0x11a94b - return str; - 1040ae: b8 48 a9 11 00 mov $0x11a948,%eax -} - 1040b3: 5d pop %ebp - 1040b4: c3 ret - -001040b5 : -// table: the beginning addr of table -// left_store: the pointer of the high side of table's next range -// right_store: the pointer of the low side of table's next range -// return value: 0 - not a invalid item range, perm - a valid item range with perm permission -static int -get_pgtable_items(size_t left, size_t right, size_t start, uintptr_t *table, size_t *left_store, size_t *right_store) { - 1040b5: 55 push %ebp - 1040b6: 89 e5 mov %esp,%ebp - 1040b8: 83 ec 10 sub $0x10,%esp - if (start >= right) { - 1040bb: 8b 45 10 mov 0x10(%ebp),%eax - 1040be: 3b 45 0c cmp 0xc(%ebp),%eax - 1040c1: 72 0e jb 1040d1 - return 0; - 1040c3: b8 00 00 00 00 mov $0x0,%eax - 1040c8: e9 9a 00 00 00 jmp 104167 - } - while (start < right && !(table[start] & PTE_P)) { - start ++; - 1040cd: 83 45 10 01 addl $0x1,0x10(%ebp) -static int -get_pgtable_items(size_t left, size_t right, size_t start, uintptr_t *table, size_t *left_store, size_t *right_store) { - if (start >= right) { - return 0; - } - while (start < right && !(table[start] & PTE_P)) { - 1040d1: 8b 45 10 mov 0x10(%ebp),%eax - 1040d4: 3b 45 0c cmp 0xc(%ebp),%eax - 1040d7: 73 18 jae 1040f1 - 1040d9: 8b 45 10 mov 0x10(%ebp),%eax - 1040dc: 8d 14 85 00 00 00 00 lea 0x0(,%eax,4),%edx - 1040e3: 8b 45 14 mov 0x14(%ebp),%eax - 1040e6: 01 d0 add %edx,%eax - 1040e8: 8b 00 mov (%eax),%eax - 1040ea: 83 e0 01 and $0x1,%eax - 1040ed: 85 c0 test %eax,%eax - 1040ef: 74 dc je 1040cd - start ++; - } - if (start < right) { - 1040f1: 8b 45 10 mov 0x10(%ebp),%eax - 1040f4: 3b 45 0c cmp 0xc(%ebp),%eax - 1040f7: 73 69 jae 104162 - if (left_store != NULL) { - 1040f9: 83 7d 18 00 cmpl $0x0,0x18(%ebp) - 1040fd: 74 08 je 104107 - *left_store = start; - 1040ff: 8b 45 18 mov 0x18(%ebp),%eax - 104102: 8b 55 10 mov 0x10(%ebp),%edx - 104105: 89 10 mov %edx,(%eax) - } - int perm = (table[start ++] & PTE_USER); - 104107: 8b 45 10 mov 0x10(%ebp),%eax - 10410a: 8d 50 01 lea 0x1(%eax),%edx - 10410d: 89 55 10 mov %edx,0x10(%ebp) - 104110: 8d 14 85 00 00 00 00 lea 0x0(,%eax,4),%edx - 104117: 8b 45 14 mov 0x14(%ebp),%eax - 10411a: 01 d0 add %edx,%eax - 10411c: 8b 00 mov (%eax),%eax - 10411e: 83 e0 07 and $0x7,%eax - 104121: 89 45 fc mov %eax,-0x4(%ebp) - while (start < right && (table[start] & PTE_USER) == perm) { - 104124: eb 04 jmp 10412a - start ++; - 104126: 83 45 10 01 addl $0x1,0x10(%ebp) - if (start < right) { - if (left_store != NULL) { - *left_store = start; - } - int perm = (table[start ++] & PTE_USER); - while (start < right && (table[start] & PTE_USER) == perm) { - 10412a: 8b 45 10 mov 0x10(%ebp),%eax - 10412d: 3b 45 0c cmp 0xc(%ebp),%eax - 104130: 73 1d jae 10414f - 104132: 8b 45 10 mov 0x10(%ebp),%eax - 104135: 8d 14 85 00 00 00 00 lea 0x0(,%eax,4),%edx - 10413c: 8b 45 14 mov 0x14(%ebp),%eax - 10413f: 01 d0 add %edx,%eax - 104141: 8b 00 mov (%eax),%eax - 104143: 83 e0 07 and $0x7,%eax - 104146: 89 c2 mov %eax,%edx - 104148: 8b 45 fc mov -0x4(%ebp),%eax - 10414b: 39 c2 cmp %eax,%edx - 10414d: 74 d7 je 104126 - start ++; - } - if (right_store != NULL) { - 10414f: 83 7d 1c 00 cmpl $0x0,0x1c(%ebp) - 104153: 74 08 je 10415d - *right_store = start; - 104155: 8b 45 1c mov 0x1c(%ebp),%eax - 104158: 8b 55 10 mov 0x10(%ebp),%edx - 10415b: 89 10 mov %edx,(%eax) - } - return perm; - 10415d: 8b 45 fc mov -0x4(%ebp),%eax - 104160: eb 05 jmp 104167 - } - return 0; - 104162: b8 00 00 00 00 mov $0x0,%eax -} - 104167: c9 leave - 104168: c3 ret - -00104169 : - -//print_pgdir - print the PDT&PT -void -print_pgdir(void) { - 104169: 55 push %ebp - 10416a: 89 e5 mov %esp,%ebp - 10416c: 57 push %edi - 10416d: 56 push %esi - 10416e: 53 push %ebx - 10416f: 83 ec 2c sub $0x2c,%esp - cprintf("-------------------- BEGIN --------------------\n"); - 104172: 83 ec 0c sub $0xc,%esp - 104175: 68 e0 76 10 00 push $0x1076e0 - 10417a: e8 e8 c0 ff ff call 100267 - 10417f: 83 c4 10 add $0x10,%esp - size_t left, right = 0, perm; - 104182: c7 45 dc 00 00 00 00 movl $0x0,-0x24(%ebp) - while ((perm = get_pgtable_items(0, NPDEENTRY, right, vpd, &left, &right)) != 0) { - 104189: e9 e5 00 00 00 jmp 104273 - cprintf("PDE(%03x) %08x-%08x %08x %s\n", right - left, - 10418e: 8b 45 e4 mov -0x1c(%ebp),%eax - 104191: 83 ec 0c sub $0xc,%esp - 104194: 50 push %eax - 104195: e8 cd fe ff ff call 104067 - 10419a: 83 c4 10 add $0x10,%esp - 10419d: 89 c7 mov %eax,%edi - left * PTSIZE, right * PTSIZE, (right - left) * PTSIZE, perm2str(perm)); - 10419f: 8b 55 dc mov -0x24(%ebp),%edx - 1041a2: 8b 45 e0 mov -0x20(%ebp),%eax - 1041a5: 29 c2 sub %eax,%edx - 1041a7: 89 d0 mov %edx,%eax -void -print_pgdir(void) { - cprintf("-------------------- BEGIN --------------------\n"); - size_t left, right = 0, perm; - while ((perm = get_pgtable_items(0, NPDEENTRY, right, vpd, &left, &right)) != 0) { - cprintf("PDE(%03x) %08x-%08x %08x %s\n", right - left, - 1041a9: c1 e0 16 shl $0x16,%eax - 1041ac: 89 c3 mov %eax,%ebx - 1041ae: 8b 45 dc mov -0x24(%ebp),%eax - 1041b1: c1 e0 16 shl $0x16,%eax - 1041b4: 89 c1 mov %eax,%ecx - 1041b6: 8b 45 e0 mov -0x20(%ebp),%eax - 1041b9: c1 e0 16 shl $0x16,%eax - 1041bc: 89 c2 mov %eax,%edx - 1041be: 8b 75 dc mov -0x24(%ebp),%esi - 1041c1: 8b 45 e0 mov -0x20(%ebp),%eax - 1041c4: 29 c6 sub %eax,%esi - 1041c6: 89 f0 mov %esi,%eax - 1041c8: 83 ec 08 sub $0x8,%esp - 1041cb: 57 push %edi - 1041cc: 53 push %ebx - 1041cd: 51 push %ecx - 1041ce: 52 push %edx - 1041cf: 50 push %eax - 1041d0: 68 11 77 10 00 push $0x107711 - 1041d5: e8 8d c0 ff ff call 100267 - 1041da: 83 c4 20 add $0x20,%esp - left * PTSIZE, right * PTSIZE, (right - left) * PTSIZE, perm2str(perm)); - size_t l, r = left * NPTEENTRY; - 1041dd: 8b 45 e0 mov -0x20(%ebp),%eax - 1041e0: c1 e0 0a shl $0xa,%eax - 1041e3: 89 45 d4 mov %eax,-0x2c(%ebp) - while ((perm = get_pgtable_items(left * NPTEENTRY, right * NPTEENTRY, r, vpt, &l, &r)) != 0) { - 1041e6: eb 4f jmp 104237 - cprintf(" |-- PTE(%05x) %08x-%08x %08x %s\n", r - l, - 1041e8: 8b 45 e4 mov -0x1c(%ebp),%eax - 1041eb: 83 ec 0c sub $0xc,%esp - 1041ee: 50 push %eax - 1041ef: e8 73 fe ff ff call 104067 - 1041f4: 83 c4 10 add $0x10,%esp - 1041f7: 89 c7 mov %eax,%edi - l * PGSIZE, r * PGSIZE, (r - l) * PGSIZE, perm2str(perm)); - 1041f9: 8b 55 d4 mov -0x2c(%ebp),%edx - 1041fc: 8b 45 d8 mov -0x28(%ebp),%eax - 1041ff: 29 c2 sub %eax,%edx - 104201: 89 d0 mov %edx,%eax - while ((perm = get_pgtable_items(0, NPDEENTRY, right, vpd, &left, &right)) != 0) { - cprintf("PDE(%03x) %08x-%08x %08x %s\n", right - left, - left * PTSIZE, right * PTSIZE, (right - left) * PTSIZE, perm2str(perm)); - size_t l, r = left * NPTEENTRY; - while ((perm = get_pgtable_items(left * NPTEENTRY, right * NPTEENTRY, r, vpt, &l, &r)) != 0) { - cprintf(" |-- PTE(%05x) %08x-%08x %08x %s\n", r - l, - 104203: c1 e0 0c shl $0xc,%eax - 104206: 89 c3 mov %eax,%ebx - 104208: 8b 45 d4 mov -0x2c(%ebp),%eax - 10420b: c1 e0 0c shl $0xc,%eax - 10420e: 89 c1 mov %eax,%ecx - 104210: 8b 45 d8 mov -0x28(%ebp),%eax - 104213: c1 e0 0c shl $0xc,%eax - 104216: 89 c2 mov %eax,%edx - 104218: 8b 75 d4 mov -0x2c(%ebp),%esi - 10421b: 8b 45 d8 mov -0x28(%ebp),%eax - 10421e: 29 c6 sub %eax,%esi - 104220: 89 f0 mov %esi,%eax - 104222: 83 ec 08 sub $0x8,%esp - 104225: 57 push %edi - 104226: 53 push %ebx - 104227: 51 push %ecx - 104228: 52 push %edx - 104229: 50 push %eax - 10422a: 68 30 77 10 00 push $0x107730 - 10422f: e8 33 c0 ff ff call 100267 - 104234: 83 c4 20 add $0x20,%esp - size_t left, right = 0, perm; - while ((perm = get_pgtable_items(0, NPDEENTRY, right, vpd, &left, &right)) != 0) { - cprintf("PDE(%03x) %08x-%08x %08x %s\n", right - left, - left * PTSIZE, right * PTSIZE, (right - left) * PTSIZE, perm2str(perm)); - size_t l, r = left * NPTEENTRY; - while ((perm = get_pgtable_items(left * NPTEENTRY, right * NPTEENTRY, r, vpt, &l, &r)) != 0) { - 104237: be 00 00 c0 fa mov $0xfac00000,%esi - 10423c: 8b 45 d4 mov -0x2c(%ebp),%eax - 10423f: 8b 55 dc mov -0x24(%ebp),%edx - 104242: 89 d3 mov %edx,%ebx - 104244: c1 e3 0a shl $0xa,%ebx - 104247: 8b 55 e0 mov -0x20(%ebp),%edx - 10424a: 89 d1 mov %edx,%ecx - 10424c: c1 e1 0a shl $0xa,%ecx - 10424f: 83 ec 08 sub $0x8,%esp - 104252: 8d 55 d4 lea -0x2c(%ebp),%edx - 104255: 52 push %edx - 104256: 8d 55 d8 lea -0x28(%ebp),%edx - 104259: 52 push %edx - 10425a: 56 push %esi - 10425b: 50 push %eax - 10425c: 53 push %ebx - 10425d: 51 push %ecx - 10425e: e8 52 fe ff ff call 1040b5 - 104263: 83 c4 20 add $0x20,%esp - 104266: 89 45 e4 mov %eax,-0x1c(%ebp) - 104269: 83 7d e4 00 cmpl $0x0,-0x1c(%ebp) - 10426d: 0f 85 75 ff ff ff jne 1041e8 -//print_pgdir - print the PDT&PT -void -print_pgdir(void) { - cprintf("-------------------- BEGIN --------------------\n"); - size_t left, right = 0, perm; - while ((perm = get_pgtable_items(0, NPDEENTRY, right, vpd, &left, &right)) != 0) { - 104273: b9 00 b0 fe fa mov $0xfafeb000,%ecx - 104278: 8b 45 dc mov -0x24(%ebp),%eax - 10427b: 83 ec 08 sub $0x8,%esp - 10427e: 8d 55 dc lea -0x24(%ebp),%edx - 104281: 52 push %edx - 104282: 8d 55 e0 lea -0x20(%ebp),%edx - 104285: 52 push %edx - 104286: 51 push %ecx - 104287: 50 push %eax - 104288: 68 00 04 00 00 push $0x400 - 10428d: 6a 00 push $0x0 - 10428f: e8 21 fe ff ff call 1040b5 - 104294: 83 c4 20 add $0x20,%esp - 104297: 89 45 e4 mov %eax,-0x1c(%ebp) - 10429a: 83 7d e4 00 cmpl $0x0,-0x1c(%ebp) - 10429e: 0f 85 ea fe ff ff jne 10418e - while ((perm = get_pgtable_items(left * NPTEENTRY, right * NPTEENTRY, r, vpt, &l, &r)) != 0) { - cprintf(" |-- PTE(%05x) %08x-%08x %08x %s\n", r - l, - l * PGSIZE, r * PGSIZE, (r - l) * PGSIZE, perm2str(perm)); - } - } - cprintf("--------------------- END ---------------------\n"); - 1042a4: 83 ec 0c sub $0xc,%esp - 1042a7: 68 54 77 10 00 push $0x107754 - 1042ac: e8 b6 bf ff ff call 100267 - 1042b1: 83 c4 10 add $0x10,%esp -} - 1042b4: 90 nop - 1042b5: 8d 65 f4 lea -0xc(%ebp),%esp - 1042b8: 5b pop %ebx - 1042b9: 5e pop %esi - 1042ba: 5f pop %edi - 1042bb: 5d pop %ebp - 1042bc: c3 ret - -001042bd : - -extern struct Page *pages; -extern size_t npage; - -static inline ppn_t -page2ppn(struct Page *page) { - 1042bd: 55 push %ebp - 1042be: 89 e5 mov %esp,%ebp - return page - pages; - 1042c0: 8b 45 08 mov 0x8(%ebp),%eax - 1042c3: 8b 15 64 a9 11 00 mov 0x11a964,%edx - 1042c9: 29 d0 sub %edx,%eax - 1042cb: c1 f8 02 sar $0x2,%eax - 1042ce: 69 c0 cd cc cc cc imul $0xcccccccd,%eax,%eax -} - 1042d4: 5d pop %ebp - 1042d5: c3 ret - -001042d6 : - -static inline uintptr_t -page2pa(struct Page *page) { - 1042d6: 55 push %ebp - 1042d7: 89 e5 mov %esp,%ebp - return page2ppn(page) << PGSHIFT; - 1042d9: ff 75 08 pushl 0x8(%ebp) - 1042dc: e8 dc ff ff ff call 1042bd - 1042e1: 83 c4 04 add $0x4,%esp - 1042e4: c1 e0 0c shl $0xc,%eax -} - 1042e7: c9 leave - 1042e8: c3 ret - -001042e9 : -pde2page(pde_t pde) { - return pa2page(PDE_ADDR(pde)); -} - -static inline int -page_ref(struct Page *page) { - 1042e9: 55 push %ebp - 1042ea: 89 e5 mov %esp,%ebp - return page->ref; - 1042ec: 8b 45 08 mov 0x8(%ebp),%eax - 1042ef: 8b 00 mov (%eax),%eax -} - 1042f1: 5d pop %ebp - 1042f2: c3 ret - -001042f3 : - -static inline void -set_page_ref(struct Page *page, int val) { - 1042f3: 55 push %ebp - 1042f4: 89 e5 mov %esp,%ebp - page->ref = val; - 1042f6: 8b 45 08 mov 0x8(%ebp),%eax - 1042f9: 8b 55 0c mov 0xc(%ebp),%edx - 1042fc: 89 10 mov %edx,(%eax) -} - 1042fe: 90 nop - 1042ff: 5d pop %ebp - 104300: c3 ret - -00104301 : - -#define free_list (free_area.free_list) -#define nr_free (free_area.nr_free) - -static void -default_init(void) { - 104301: 55 push %ebp - 104302: 89 e5 mov %esp,%ebp - 104304: 83 ec 10 sub $0x10,%esp - 104307: c7 45 fc 68 a9 11 00 movl $0x11a968,-0x4(%ebp) - * list_init - initialize a new entry - * @elm: new entry to be initialized - * */ -static inline void -list_init(list_entry_t *elm) { - elm->prev = elm->next = elm; - 10430e: 8b 45 fc mov -0x4(%ebp),%eax - 104311: 8b 55 fc mov -0x4(%ebp),%edx - 104314: 89 50 04 mov %edx,0x4(%eax) - 104317: 8b 45 fc mov -0x4(%ebp),%eax - 10431a: 8b 50 04 mov 0x4(%eax),%edx - 10431d: 8b 45 fc mov -0x4(%ebp),%eax - 104320: 89 10 mov %edx,(%eax) - list_init(&free_list); - nr_free = 0; - 104322: c7 05 70 a9 11 00 00 movl $0x0,0x11a970 - 104329: 00 00 00 -} - 10432c: 90 nop - 10432d: c9 leave - 10432e: c3 ret - -0010432f : - -static void -default_init_memmap(struct Page *base, size_t n) { - 10432f: 55 push %ebp - 104330: 89 e5 mov %esp,%ebp - 104332: 83 ec 38 sub $0x38,%esp - assert(n > 0); - 104335: 83 7d 0c 00 cmpl $0x0,0xc(%ebp) - 104339: 75 16 jne 104351 - 10433b: 68 88 77 10 00 push $0x107788 - 104340: 68 8e 77 10 00 push $0x10778e - 104345: 6a 46 push $0x46 - 104347: 68 a3 77 10 00 push $0x1077a3 - 10434c: e8 7c c0 ff ff call 1003cd <__panic> - struct Page *p = base; - 104351: 8b 45 08 mov 0x8(%ebp),%eax - 104354: 89 45 f4 mov %eax,-0xc(%ebp) - for (; p != base + n; p ++) { - 104357: eb 6c jmp 1043c5 - // Before: the page must have been set reserved in page_init. - assert(PageReserved(p)); - 104359: 8b 45 f4 mov -0xc(%ebp),%eax - 10435c: 83 c0 04 add $0x4,%eax - 10435f: c7 45 e8 00 00 00 00 movl $0x0,-0x18(%ebp) - 104366: 89 45 e4 mov %eax,-0x1c(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); - 104369: 8b 45 e4 mov -0x1c(%ebp),%eax - 10436c: 8b 55 e8 mov -0x18(%ebp),%edx - 10436f: 0f a3 10 bt %edx,(%eax) - 104372: 19 c0 sbb %eax,%eax - 104374: 89 45 e0 mov %eax,-0x20(%ebp) - return oldbit != 0; - 104377: 83 7d e0 00 cmpl $0x0,-0x20(%ebp) - 10437b: 0f 95 c0 setne %al - 10437e: 0f b6 c0 movzbl %al,%eax - 104381: 85 c0 test %eax,%eax - 104383: 75 16 jne 10439b - 104385: 68 b9 77 10 00 push $0x1077b9 - 10438a: 68 8e 77 10 00 push $0x10778e - 10438f: 6a 4a push $0x4a - 104391: 68 a3 77 10 00 push $0x1077a3 - 104396: e8 32 c0 ff ff call 1003cd <__panic> - // Initialize flags, property and ref - p->flags = p->property = 0; - 10439b: 8b 45 f4 mov -0xc(%ebp),%eax - 10439e: c7 40 08 00 00 00 00 movl $0x0,0x8(%eax) - 1043a5: 8b 45 f4 mov -0xc(%ebp),%eax - 1043a8: 8b 50 08 mov 0x8(%eax),%edx - 1043ab: 8b 45 f4 mov -0xc(%ebp),%eax - 1043ae: 89 50 04 mov %edx,0x4(%eax) - set_page_ref(p, 0); - 1043b1: 83 ec 08 sub $0x8,%esp - 1043b4: 6a 00 push $0x0 - 1043b6: ff 75 f4 pushl -0xc(%ebp) - 1043b9: e8 35 ff ff ff call 1042f3 - 1043be: 83 c4 10 add $0x10,%esp - -static void -default_init_memmap(struct Page *base, size_t n) { - assert(n > 0); - struct Page *p = base; - for (; p != base + n; p ++) { - 1043c1: 83 45 f4 14 addl $0x14,-0xc(%ebp) - 1043c5: 8b 55 0c mov 0xc(%ebp),%edx - 1043c8: 89 d0 mov %edx,%eax - 1043ca: c1 e0 02 shl $0x2,%eax - 1043cd: 01 d0 add %edx,%eax - 1043cf: c1 e0 02 shl $0x2,%eax - 1043d2: 89 c2 mov %eax,%edx - 1043d4: 8b 45 08 mov 0x8(%ebp),%eax - 1043d7: 01 d0 add %edx,%eax - 1043d9: 3b 45 f4 cmp -0xc(%ebp),%eax - 1043dc: 0f 85 77 ff ff ff jne 104359 - // Initialize flags, property and ref - p->flags = p->property = 0; - set_page_ref(p, 0); - } - // The base page is the start of continuous free pages. - base->property = n; - 1043e2: 8b 45 08 mov 0x8(%ebp),%eax - 1043e5: 8b 55 0c mov 0xc(%ebp),%edx - 1043e8: 89 50 08 mov %edx,0x8(%eax) - SetPageProperty(base); - 1043eb: 8b 45 08 mov 0x8(%ebp),%eax - 1043ee: 83 c0 04 add $0x4,%eax - 1043f1: c7 45 ec 01 00 00 00 movl $0x1,-0x14(%ebp) - 1043f8: 89 45 cc mov %eax,-0x34(%ebp) - * Note that @nr may be almost arbitrarily large; this function is not - * restricted to acting on a single-word quantity. - * */ -static inline void -set_bit(int nr, volatile void *addr) { - asm volatile ("btsl %1, %0" :"=m" (*(volatile long *)addr) : "Ir" (nr)); - 1043fb: 8b 45 cc mov -0x34(%ebp),%eax - 1043fe: 8b 55 ec mov -0x14(%ebp),%edx - 104401: 0f ab 10 bts %edx,(%eax) - nr_free += n; - 104404: 8b 15 70 a9 11 00 mov 0x11a970,%edx - 10440a: 8b 45 0c mov 0xc(%ebp),%eax - 10440d: 01 d0 add %edx,%eax - 10440f: a3 70 a9 11 00 mov %eax,0x11a970 - list_add_before(&free_list, &(base->page_link)); - 104414: 8b 45 08 mov 0x8(%ebp),%eax - 104417: 83 c0 0c add $0xc,%eax - 10441a: c7 45 f0 68 a9 11 00 movl $0x11a968,-0x10(%ebp) - 104421: 89 45 dc mov %eax,-0x24(%ebp) - * Insert the new element @elm *before* the element @listelm which - * is already in the list. - * */ -static inline void -list_add_before(list_entry_t *listelm, list_entry_t *elm) { - __list_add(elm, listelm->prev, listelm); - 104424: 8b 45 f0 mov -0x10(%ebp),%eax - 104427: 8b 00 mov (%eax),%eax - 104429: 8b 55 dc mov -0x24(%ebp),%edx - 10442c: 89 55 d8 mov %edx,-0x28(%ebp) - 10442f: 89 45 d4 mov %eax,-0x2c(%ebp) - 104432: 8b 45 f0 mov -0x10(%ebp),%eax - 104435: 89 45 d0 mov %eax,-0x30(%ebp) - * This is only for internal list manipulation where we know - * the prev/next entries already! - * */ -static inline void -__list_add(list_entry_t *elm, list_entry_t *prev, list_entry_t *next) { - prev->next = next->prev = elm; - 104438: 8b 45 d0 mov -0x30(%ebp),%eax - 10443b: 8b 55 d8 mov -0x28(%ebp),%edx - 10443e: 89 10 mov %edx,(%eax) - 104440: 8b 45 d0 mov -0x30(%ebp),%eax - 104443: 8b 10 mov (%eax),%edx - 104445: 8b 45 d4 mov -0x2c(%ebp),%eax - 104448: 89 50 04 mov %edx,0x4(%eax) - elm->next = next; - 10444b: 8b 45 d8 mov -0x28(%ebp),%eax - 10444e: 8b 55 d0 mov -0x30(%ebp),%edx - 104451: 89 50 04 mov %edx,0x4(%eax) - elm->prev = prev; - 104454: 8b 45 d8 mov -0x28(%ebp),%eax - 104457: 8b 55 d4 mov -0x2c(%ebp),%edx - 10445a: 89 10 mov %edx,(%eax) -} - 10445c: 90 nop - 10445d: c9 leave - 10445e: c3 ret - -0010445f : - -static struct Page * -default_alloc_pages(size_t n) { - 10445f: 55 push %ebp - 104460: 89 e5 mov %esp,%ebp - 104462: 83 ec 68 sub $0x68,%esp - assert(n > 0); - 104465: 83 7d 08 00 cmpl $0x0,0x8(%ebp) - 104469: 75 16 jne 104481 - 10446b: 68 88 77 10 00 push $0x107788 - 104470: 68 8e 77 10 00 push $0x10778e - 104475: 6a 58 push $0x58 - 104477: 68 a3 77 10 00 push $0x1077a3 - 10447c: e8 4c bf ff ff call 1003cd <__panic> - if (n > nr_free) { - 104481: a1 70 a9 11 00 mov 0x11a970,%eax - 104486: 3b 45 08 cmp 0x8(%ebp),%eax - 104489: 73 0a jae 104495 - return NULL; - 10448b: b8 00 00 00 00 mov $0x0,%eax - 104490: e9 a8 01 00 00 jmp 10463d - } - struct Page *page = NULL; - 104495: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - list_entry_t *le = &free_list; - 10449c: c7 45 f0 68 a9 11 00 movl $0x11a968,-0x10(%ebp) - while ((le = list_next(le)) != &free_list) { - 1044a3: eb 1c jmp 1044c1 - struct Page *p = le2page(le, page_link); - 1044a5: 8b 45 f0 mov -0x10(%ebp),%eax - 1044a8: 83 e8 0c sub $0xc,%eax - 1044ab: 89 45 e4 mov %eax,-0x1c(%ebp) - if (p->property >= n) { - 1044ae: 8b 45 e4 mov -0x1c(%ebp),%eax - 1044b1: 8b 40 08 mov 0x8(%eax),%eax - 1044b4: 3b 45 08 cmp 0x8(%ebp),%eax - 1044b7: 72 08 jb 1044c1 - page = p; - 1044b9: 8b 45 e4 mov -0x1c(%ebp),%eax - 1044bc: 89 45 f4 mov %eax,-0xc(%ebp) - break; - 1044bf: eb 18 jmp 1044d9 - 1044c1: 8b 45 f0 mov -0x10(%ebp),%eax - 1044c4: 89 45 c8 mov %eax,-0x38(%ebp) - * list_next - get the next entry - * @listelm: the list head - **/ -static inline list_entry_t * -list_next(list_entry_t *listelm) { - return listelm->next; - 1044c7: 8b 45 c8 mov -0x38(%ebp),%eax - 1044ca: 8b 40 04 mov 0x4(%eax),%eax - if (n > nr_free) { - return NULL; - } - struct Page *page = NULL; - list_entry_t *le = &free_list; - while ((le = list_next(le)) != &free_list) { - 1044cd: 89 45 f0 mov %eax,-0x10(%ebp) - 1044d0: 81 7d f0 68 a9 11 00 cmpl $0x11a968,-0x10(%ebp) - 1044d7: 75 cc jne 1044a5 - if (p->property >= n) { - page = p; - break; - } - } - if (page != NULL) { - 1044d9: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) - 1044dd: 0f 84 57 01 00 00 je 10463a - for (int i = 1; i < n; ++ i) { - 1044e3: c7 45 ec 01 00 00 00 movl $0x1,-0x14(%ebp) - 1044ea: eb 4e jmp 10453a - struct Page *p = page + i; - 1044ec: 8b 55 ec mov -0x14(%ebp),%edx - 1044ef: 89 d0 mov %edx,%eax - 1044f1: c1 e0 02 shl $0x2,%eax - 1044f4: 01 d0 add %edx,%eax - 1044f6: c1 e0 02 shl $0x2,%eax - 1044f9: 89 c2 mov %eax,%edx - 1044fb: 8b 45 f4 mov -0xc(%ebp),%eax - 1044fe: 01 d0 add %edx,%eax - 104500: 89 45 e0 mov %eax,-0x20(%ebp) - // assert(!PageReserved(p)); - ClearPageProperty(p); - 104503: 8b 45 e0 mov -0x20(%ebp),%eax - 104506: 83 c0 04 add $0x4,%eax - 104509: c7 45 e8 01 00 00 00 movl $0x1,-0x18(%ebp) - 104510: 89 45 c4 mov %eax,-0x3c(%ebp) - * @nr: the bit to clear - * @addr: the address to start counting from - * */ -static inline void -clear_bit(int nr, volatile void *addr) { - asm volatile ("btrl %1, %0" :"=m" (*(volatile long *)addr) : "Ir" (nr)); - 104513: 8b 45 c4 mov -0x3c(%ebp),%eax - 104516: 8b 55 e8 mov -0x18(%ebp),%edx - 104519: 0f b3 10 btr %edx,(%eax) - p->property = 0; - 10451c: 8b 45 e0 mov -0x20(%ebp),%eax - 10451f: c7 40 08 00 00 00 00 movl $0x0,0x8(%eax) - set_page_ref(p, 0); - 104526: 83 ec 08 sub $0x8,%esp - 104529: 6a 00 push $0x0 - 10452b: ff 75 e0 pushl -0x20(%ebp) - 10452e: e8 c0 fd ff ff call 1042f3 - 104533: 83 c4 10 add $0x10,%esp - page = p; - break; - } - } - if (page != NULL) { - for (int i = 1; i < n; ++ i) { - 104536: 83 45 ec 01 addl $0x1,-0x14(%ebp) - 10453a: 8b 45 ec mov -0x14(%ebp),%eax - 10453d: 3b 45 08 cmp 0x8(%ebp),%eax - 104540: 72 aa jb 1044ec - // assert(!PageReserved(p)); - ClearPageProperty(p); - p->property = 0; - set_page_ref(p, 0); - } - if (page->property > n) { - 104542: 8b 45 f4 mov -0xc(%ebp),%eax - 104545: 8b 40 08 mov 0x8(%eax),%eax - 104548: 3b 45 08 cmp 0x8(%ebp),%eax - 10454b: 0f 86 98 00 00 00 jbe 1045e9 - struct Page *p = page + n; - 104551: 8b 55 08 mov 0x8(%ebp),%edx - 104554: 89 d0 mov %edx,%eax - 104556: c1 e0 02 shl $0x2,%eax - 104559: 01 d0 add %edx,%eax - 10455b: c1 e0 02 shl $0x2,%eax - 10455e: 89 c2 mov %eax,%edx - 104560: 8b 45 f4 mov -0xc(%ebp),%eax - 104563: 01 d0 add %edx,%eax - 104565: 89 45 d8 mov %eax,-0x28(%ebp) - p->property = page->property - n; - 104568: 8b 45 f4 mov -0xc(%ebp),%eax - 10456b: 8b 40 08 mov 0x8(%eax),%eax - 10456e: 2b 45 08 sub 0x8(%ebp),%eax - 104571: 89 c2 mov %eax,%edx - 104573: 8b 45 d8 mov -0x28(%ebp),%eax - 104576: 89 50 08 mov %edx,0x8(%eax) - SetPageProperty(p); - 104579: 8b 45 d8 mov -0x28(%ebp),%eax - 10457c: 83 c0 04 add $0x4,%eax - 10457f: c7 45 d0 01 00 00 00 movl $0x1,-0x30(%ebp) - 104586: 89 45 a8 mov %eax,-0x58(%ebp) - * Note that @nr may be almost arbitrarily large; this function is not - * restricted to acting on a single-word quantity. - * */ -static inline void -set_bit(int nr, volatile void *addr) { - asm volatile ("btsl %1, %0" :"=m" (*(volatile long *)addr) : "Ir" (nr)); - 104589: 8b 45 a8 mov -0x58(%ebp),%eax - 10458c: 8b 55 d0 mov -0x30(%ebp),%edx - 10458f: 0f ab 10 bts %edx,(%eax) - list_add(&(page->page_link), &(p->page_link)); - 104592: 8b 45 d8 mov -0x28(%ebp),%eax - 104595: 83 c0 0c add $0xc,%eax - 104598: 8b 55 f4 mov -0xc(%ebp),%edx - 10459b: 83 c2 0c add $0xc,%edx - 10459e: 89 55 dc mov %edx,-0x24(%ebp) - 1045a1: 89 45 c0 mov %eax,-0x40(%ebp) - 1045a4: 8b 45 dc mov -0x24(%ebp),%eax - 1045a7: 89 45 bc mov %eax,-0x44(%ebp) - 1045aa: 8b 45 c0 mov -0x40(%ebp),%eax - 1045ad: 89 45 b8 mov %eax,-0x48(%ebp) - * Insert the new element @elm *after* the element @listelm which - * is already in the list. - * */ -static inline void -list_add_after(list_entry_t *listelm, list_entry_t *elm) { - __list_add(elm, listelm, listelm->next); - 1045b0: 8b 45 bc mov -0x44(%ebp),%eax - 1045b3: 8b 40 04 mov 0x4(%eax),%eax - 1045b6: 8b 55 b8 mov -0x48(%ebp),%edx - 1045b9: 89 55 b4 mov %edx,-0x4c(%ebp) - 1045bc: 8b 55 bc mov -0x44(%ebp),%edx - 1045bf: 89 55 b0 mov %edx,-0x50(%ebp) - 1045c2: 89 45 ac mov %eax,-0x54(%ebp) - * This is only for internal list manipulation where we know - * the prev/next entries already! - * */ -static inline void -__list_add(list_entry_t *elm, list_entry_t *prev, list_entry_t *next) { - prev->next = next->prev = elm; - 1045c5: 8b 45 ac mov -0x54(%ebp),%eax - 1045c8: 8b 55 b4 mov -0x4c(%ebp),%edx - 1045cb: 89 10 mov %edx,(%eax) - 1045cd: 8b 45 ac mov -0x54(%ebp),%eax - 1045d0: 8b 10 mov (%eax),%edx - 1045d2: 8b 45 b0 mov -0x50(%ebp),%eax - 1045d5: 89 50 04 mov %edx,0x4(%eax) - elm->next = next; - 1045d8: 8b 45 b4 mov -0x4c(%ebp),%eax - 1045db: 8b 55 ac mov -0x54(%ebp),%edx - 1045de: 89 50 04 mov %edx,0x4(%eax) - elm->prev = prev; - 1045e1: 8b 45 b4 mov -0x4c(%ebp),%eax - 1045e4: 8b 55 b0 mov -0x50(%ebp),%edx - 1045e7: 89 10 mov %edx,(%eax) - } - list_del(&(page->page_link)); - 1045e9: 8b 45 f4 mov -0xc(%ebp),%eax - 1045ec: 83 c0 0c add $0xc,%eax - 1045ef: 89 45 cc mov %eax,-0x34(%ebp) - * Note: list_empty() on @listelm does not return true after this, the entry is - * in an undefined state. - * */ -static inline void -list_del(list_entry_t *listelm) { - __list_del(listelm->prev, listelm->next); - 1045f2: 8b 45 cc mov -0x34(%ebp),%eax - 1045f5: 8b 40 04 mov 0x4(%eax),%eax - 1045f8: 8b 55 cc mov -0x34(%ebp),%edx - 1045fb: 8b 12 mov (%edx),%edx - 1045fd: 89 55 a0 mov %edx,-0x60(%ebp) - 104600: 89 45 9c mov %eax,-0x64(%ebp) - * This is only for internal list manipulation where we know - * the prev/next entries already! - * */ -static inline void -__list_del(list_entry_t *prev, list_entry_t *next) { - prev->next = next; - 104603: 8b 45 a0 mov -0x60(%ebp),%eax - 104606: 8b 55 9c mov -0x64(%ebp),%edx - 104609: 89 50 04 mov %edx,0x4(%eax) - next->prev = prev; - 10460c: 8b 45 9c mov -0x64(%ebp),%eax - 10460f: 8b 55 a0 mov -0x60(%ebp),%edx - 104612: 89 10 mov %edx,(%eax) - nr_free -= n; - 104614: a1 70 a9 11 00 mov 0x11a970,%eax - 104619: 2b 45 08 sub 0x8(%ebp),%eax - 10461c: a3 70 a9 11 00 mov %eax,0x11a970 - ClearPageProperty(page); - 104621: 8b 45 f4 mov -0xc(%ebp),%eax - 104624: 83 c0 04 add $0x4,%eax - 104627: c7 45 d4 01 00 00 00 movl $0x1,-0x2c(%ebp) - 10462e: 89 45 a4 mov %eax,-0x5c(%ebp) - * @nr: the bit to clear - * @addr: the address to start counting from - * */ -static inline void -clear_bit(int nr, volatile void *addr) { - asm volatile ("btrl %1, %0" :"=m" (*(volatile long *)addr) : "Ir" (nr)); - 104631: 8b 45 a4 mov -0x5c(%ebp),%eax - 104634: 8b 55 d4 mov -0x2c(%ebp),%edx - 104637: 0f b3 10 btr %edx,(%eax) - } - return page; - 10463a: 8b 45 f4 mov -0xc(%ebp),%eax -} - 10463d: c9 leave - 10463e: c3 ret - -0010463f : - -static void -default_free_pages(struct Page *base, size_t n) { - 10463f: 55 push %ebp - 104640: 89 e5 mov %esp,%ebp - 104642: 81 ec 98 00 00 00 sub $0x98,%esp - assert(n > 0); - 104648: 83 7d 0c 00 cmpl $0x0,0xc(%ebp) - 10464c: 75 16 jne 104664 - 10464e: 68 88 77 10 00 push $0x107788 - 104653: 68 8e 77 10 00 push $0x10778e - 104658: 6a 7c push $0x7c - 10465a: 68 a3 77 10 00 push $0x1077a3 - 10465f: e8 69 bd ff ff call 1003cd <__panic> - struct Page *p = base; - 104664: 8b 45 08 mov 0x8(%ebp),%eax - 104667: 89 45 f4 mov %eax,-0xc(%ebp) - for (; p != base + n; p ++) { - 10466a: e9 8c 00 00 00 jmp 1046fb - assert(!PageReserved(p) && !PageProperty(p)); - 10466f: 8b 45 f4 mov -0xc(%ebp),%eax - 104672: 83 c0 04 add $0x4,%eax - 104675: c7 45 bc 00 00 00 00 movl $0x0,-0x44(%ebp) - 10467c: 89 45 b8 mov %eax,-0x48(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); - 10467f: 8b 45 b8 mov -0x48(%ebp),%eax - 104682: 8b 55 bc mov -0x44(%ebp),%edx - 104685: 0f a3 10 bt %edx,(%eax) - 104688: 19 c0 sbb %eax,%eax - 10468a: 89 45 b4 mov %eax,-0x4c(%ebp) - return oldbit != 0; - 10468d: 83 7d b4 00 cmpl $0x0,-0x4c(%ebp) - 104691: 0f 95 c0 setne %al - 104694: 0f b6 c0 movzbl %al,%eax - 104697: 85 c0 test %eax,%eax - 104699: 75 2c jne 1046c7 - 10469b: 8b 45 f4 mov -0xc(%ebp),%eax - 10469e: 83 c0 04 add $0x4,%eax - 1046a1: c7 45 e4 01 00 00 00 movl $0x1,-0x1c(%ebp) - 1046a8: 89 45 b0 mov %eax,-0x50(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); - 1046ab: 8b 45 b0 mov -0x50(%ebp),%eax - 1046ae: 8b 55 e4 mov -0x1c(%ebp),%edx - 1046b1: 0f a3 10 bt %edx,(%eax) - 1046b4: 19 c0 sbb %eax,%eax - 1046b6: 89 45 ac mov %eax,-0x54(%ebp) - return oldbit != 0; - 1046b9: 83 7d ac 00 cmpl $0x0,-0x54(%ebp) - 1046bd: 0f 95 c0 setne %al - 1046c0: 0f b6 c0 movzbl %al,%eax - 1046c3: 85 c0 test %eax,%eax - 1046c5: 74 16 je 1046dd - 1046c7: 68 cc 77 10 00 push $0x1077cc - 1046cc: 68 8e 77 10 00 push $0x10778e - 1046d1: 6a 7f push $0x7f - 1046d3: 68 a3 77 10 00 push $0x1077a3 - 1046d8: e8 f0 bc ff ff call 1003cd <__panic> - p->flags = 0; - 1046dd: 8b 45 f4 mov -0xc(%ebp),%eax - 1046e0: c7 40 04 00 00 00 00 movl $0x0,0x4(%eax) - set_page_ref(p, 0); - 1046e7: 83 ec 08 sub $0x8,%esp - 1046ea: 6a 00 push $0x0 - 1046ec: ff 75 f4 pushl -0xc(%ebp) - 1046ef: e8 ff fb ff ff call 1042f3 - 1046f4: 83 c4 10 add $0x10,%esp - -static void -default_free_pages(struct Page *base, size_t n) { - assert(n > 0); - struct Page *p = base; - for (; p != base + n; p ++) { - 1046f7: 83 45 f4 14 addl $0x14,-0xc(%ebp) - 1046fb: 8b 55 0c mov 0xc(%ebp),%edx - 1046fe: 89 d0 mov %edx,%eax - 104700: c1 e0 02 shl $0x2,%eax - 104703: 01 d0 add %edx,%eax - 104705: c1 e0 02 shl $0x2,%eax - 104708: 89 c2 mov %eax,%edx - 10470a: 8b 45 08 mov 0x8(%ebp),%eax - 10470d: 01 d0 add %edx,%eax - 10470f: 3b 45 f4 cmp -0xc(%ebp),%eax - 104712: 0f 85 57 ff ff ff jne 10466f - assert(!PageReserved(p) && !PageProperty(p)); - p->flags = 0; - set_page_ref(p, 0); - } - base->property = n; - 104718: 8b 45 08 mov 0x8(%ebp),%eax - 10471b: 8b 55 0c mov 0xc(%ebp),%edx - 10471e: 89 50 08 mov %edx,0x8(%eax) - SetPageProperty(base); - 104721: 8b 45 08 mov 0x8(%ebp),%eax - 104724: 83 c0 04 add $0x4,%eax - 104727: c7 45 d8 01 00 00 00 movl $0x1,-0x28(%ebp) - 10472e: 89 45 a8 mov %eax,-0x58(%ebp) - * Note that @nr may be almost arbitrarily large; this function is not - * restricted to acting on a single-word quantity. - * */ -static inline void -set_bit(int nr, volatile void *addr) { - asm volatile ("btsl %1, %0" :"=m" (*(volatile long *)addr) : "Ir" (nr)); - 104731: 8b 45 a8 mov -0x58(%ebp),%eax - 104734: 8b 55 d8 mov -0x28(%ebp),%edx - 104737: 0f ab 10 bts %edx,(%eax) - 10473a: c7 45 e0 68 a9 11 00 movl $0x11a968,-0x20(%ebp) - * list_next - get the next entry - * @listelm: the list head - **/ -static inline list_entry_t * -list_next(list_entry_t *listelm) { - return listelm->next; - 104741: 8b 45 e0 mov -0x20(%ebp),%eax - 104744: 8b 40 04 mov 0x4(%eax),%eax - list_entry_t *le = list_next(&free_list); - 104747: 89 45 f0 mov %eax,-0x10(%ebp) - struct Page *merge_previous = NULL; - 10474a: c7 45 ec 00 00 00 00 movl $0x0,-0x14(%ebp) - struct Page *merge_next = NULL; - 104751: c7 45 e8 00 00 00 00 movl $0x0,-0x18(%ebp) - while (le != &free_list) { - 104758: eb 66 jmp 1047c0 - p = le2page(le, page_link); - 10475a: 8b 45 f0 mov -0x10(%ebp),%eax - 10475d: 83 e8 0c sub $0xc,%eax - 104760: 89 45 f4 mov %eax,-0xc(%ebp) - 104763: 8b 45 f0 mov -0x10(%ebp),%eax - 104766: 89 45 dc mov %eax,-0x24(%ebp) - 104769: 8b 45 dc mov -0x24(%ebp),%eax - 10476c: 8b 40 04 mov 0x4(%eax),%eax - le = list_next(le); - 10476f: 89 45 f0 mov %eax,-0x10(%ebp) - if (base + base->property == p) { - 104772: 8b 45 08 mov 0x8(%ebp),%eax - 104775: 8b 50 08 mov 0x8(%eax),%edx - 104778: 89 d0 mov %edx,%eax - 10477a: c1 e0 02 shl $0x2,%eax - 10477d: 01 d0 add %edx,%eax - 10477f: c1 e0 02 shl $0x2,%eax - 104782: 89 c2 mov %eax,%edx - 104784: 8b 45 08 mov 0x8(%ebp),%eax - 104787: 01 d0 add %edx,%eax - 104789: 3b 45 f4 cmp -0xc(%ebp),%eax - 10478c: 75 08 jne 104796 - merge_next = p; - 10478e: 8b 45 f4 mov -0xc(%ebp),%eax - 104791: 89 45 e8 mov %eax,-0x18(%ebp) - break; - 104794: eb 36 jmp 1047cc - } - else if (p + p->property == base) { - 104796: 8b 45 f4 mov -0xc(%ebp),%eax - 104799: 8b 50 08 mov 0x8(%eax),%edx - 10479c: 89 d0 mov %edx,%eax - 10479e: c1 e0 02 shl $0x2,%eax - 1047a1: 01 d0 add %edx,%eax - 1047a3: c1 e0 02 shl $0x2,%eax - 1047a6: 89 c2 mov %eax,%edx - 1047a8: 8b 45 f4 mov -0xc(%ebp),%eax - 1047ab: 01 d0 add %edx,%eax - 1047ad: 3b 45 08 cmp 0x8(%ebp),%eax - 1047b0: 75 06 jne 1047b8 - merge_previous = p; - 1047b2: 8b 45 f4 mov -0xc(%ebp),%eax - 1047b5: 89 45 ec mov %eax,-0x14(%ebp) - } - if (p > base) break; - 1047b8: 8b 45 f4 mov -0xc(%ebp),%eax - 1047bb: 3b 45 08 cmp 0x8(%ebp),%eax - 1047be: 77 0b ja 1047cb - base->property = n; - SetPageProperty(base); - list_entry_t *le = list_next(&free_list); - struct Page *merge_previous = NULL; - struct Page *merge_next = NULL; - while (le != &free_list) { - 1047c0: 81 7d f0 68 a9 11 00 cmpl $0x11a968,-0x10(%ebp) - 1047c7: 75 91 jne 10475a - 1047c9: eb 01 jmp 1047cc - break; - } - else if (p + p->property == base) { - merge_previous = p; - } - if (p > base) break; - 1047cb: 90 nop - } - nr_free += n; - 1047cc: 8b 15 70 a9 11 00 mov 0x11a970,%edx - 1047d2: 8b 45 0c mov 0xc(%ebp),%eax - 1047d5: 01 d0 add %edx,%eax - 1047d7: a3 70 a9 11 00 mov %eax,0x11a970 - // Try to merge base with merge_previous and merge_next. - if (merge_previous != NULL) { - 1047dc: 83 7d ec 00 cmpl $0x0,-0x14(%ebp) - 1047e0: 74 33 je 104815 - merge_previous->property += base->property; - 1047e2: 8b 45 ec mov -0x14(%ebp),%eax - 1047e5: 8b 50 08 mov 0x8(%eax),%edx - 1047e8: 8b 45 08 mov 0x8(%ebp),%eax - 1047eb: 8b 40 08 mov 0x8(%eax),%eax - 1047ee: 01 c2 add %eax,%edx - 1047f0: 8b 45 ec mov -0x14(%ebp),%eax - 1047f3: 89 50 08 mov %edx,0x8(%eax) - ClearPageProperty(base); - 1047f6: 8b 45 08 mov 0x8(%ebp),%eax - 1047f9: 83 c0 04 add $0x4,%eax - 1047fc: c7 45 d4 01 00 00 00 movl $0x1,-0x2c(%ebp) - 104803: 89 45 a4 mov %eax,-0x5c(%ebp) - * @nr: the bit to clear - * @addr: the address to start counting from - * */ -static inline void -clear_bit(int nr, volatile void *addr) { - asm volatile ("btrl %1, %0" :"=m" (*(volatile long *)addr) : "Ir" (nr)); - 104806: 8b 45 a4 mov -0x5c(%ebp),%eax - 104809: 8b 55 d4 mov -0x2c(%ebp),%edx - 10480c: 0f b3 10 btr %edx,(%eax) - base = merge_previous; - 10480f: 8b 45 ec mov -0x14(%ebp),%eax - 104812: 89 45 08 mov %eax,0x8(%ebp) - } - if (merge_next != NULL) { - 104815: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) - 104819: 0f 84 a8 00 00 00 je 1048c7 - base->property += merge_next->property; - 10481f: 8b 45 08 mov 0x8(%ebp),%eax - 104822: 8b 50 08 mov 0x8(%eax),%edx - 104825: 8b 45 e8 mov -0x18(%ebp),%eax - 104828: 8b 40 08 mov 0x8(%eax),%eax - 10482b: 01 c2 add %eax,%edx - 10482d: 8b 45 08 mov 0x8(%ebp),%eax - 104830: 89 50 08 mov %edx,0x8(%eax) - ClearPageProperty(merge_next); - 104833: 8b 45 e8 mov -0x18(%ebp),%eax - 104836: 83 c0 04 add $0x4,%eax - 104839: c7 45 d0 01 00 00 00 movl $0x1,-0x30(%ebp) - 104840: 89 45 a0 mov %eax,-0x60(%ebp) - 104843: 8b 45 a0 mov -0x60(%ebp),%eax - 104846: 8b 55 d0 mov -0x30(%ebp),%edx - 104849: 0f b3 10 btr %edx,(%eax) - if (merge_previous == NULL) { - 10484c: 83 7d ec 00 cmpl $0x0,-0x14(%ebp) - 104850: 75 4a jne 10489c - list_add_before(&(merge_next->page_link), &(base->page_link)); - 104852: 8b 45 08 mov 0x8(%ebp),%eax - 104855: 83 c0 0c add $0xc,%eax - 104858: 8b 55 e8 mov -0x18(%ebp),%edx - 10485b: 83 c2 0c add $0xc,%edx - 10485e: 89 55 cc mov %edx,-0x34(%ebp) - 104861: 89 45 9c mov %eax,-0x64(%ebp) - * Insert the new element @elm *before* the element @listelm which - * is already in the list. - * */ -static inline void -list_add_before(list_entry_t *listelm, list_entry_t *elm) { - __list_add(elm, listelm->prev, listelm); - 104864: 8b 45 cc mov -0x34(%ebp),%eax - 104867: 8b 00 mov (%eax),%eax - 104869: 8b 55 9c mov -0x64(%ebp),%edx - 10486c: 89 55 98 mov %edx,-0x68(%ebp) - 10486f: 89 45 94 mov %eax,-0x6c(%ebp) - 104872: 8b 45 cc mov -0x34(%ebp),%eax - 104875: 89 45 90 mov %eax,-0x70(%ebp) - * This is only for internal list manipulation where we know - * the prev/next entries already! - * */ -static inline void -__list_add(list_entry_t *elm, list_entry_t *prev, list_entry_t *next) { - prev->next = next->prev = elm; - 104878: 8b 45 90 mov -0x70(%ebp),%eax - 10487b: 8b 55 98 mov -0x68(%ebp),%edx - 10487e: 89 10 mov %edx,(%eax) - 104880: 8b 45 90 mov -0x70(%ebp),%eax - 104883: 8b 10 mov (%eax),%edx - 104885: 8b 45 94 mov -0x6c(%ebp),%eax - 104888: 89 50 04 mov %edx,0x4(%eax) - elm->next = next; - 10488b: 8b 45 98 mov -0x68(%ebp),%eax - 10488e: 8b 55 90 mov -0x70(%ebp),%edx - 104891: 89 50 04 mov %edx,0x4(%eax) - elm->prev = prev; - 104894: 8b 45 98 mov -0x68(%ebp),%eax - 104897: 8b 55 94 mov -0x6c(%ebp),%edx - 10489a: 89 10 mov %edx,(%eax) - } - - list_del(&(merge_next->page_link)); - 10489c: 8b 45 e8 mov -0x18(%ebp),%eax - 10489f: 83 c0 0c add $0xc,%eax - 1048a2: 89 45 c8 mov %eax,-0x38(%ebp) - * Note: list_empty() on @listelm does not return true after this, the entry is - * in an undefined state. - * */ -static inline void -list_del(list_entry_t *listelm) { - __list_del(listelm->prev, listelm->next); - 1048a5: 8b 45 c8 mov -0x38(%ebp),%eax - 1048a8: 8b 40 04 mov 0x4(%eax),%eax - 1048ab: 8b 55 c8 mov -0x38(%ebp),%edx - 1048ae: 8b 12 mov (%edx),%edx - 1048b0: 89 55 8c mov %edx,-0x74(%ebp) - 1048b3: 89 45 88 mov %eax,-0x78(%ebp) - * This is only for internal list manipulation where we know - * the prev/next entries already! - * */ -static inline void -__list_del(list_entry_t *prev, list_entry_t *next) { - prev->next = next; - 1048b6: 8b 45 8c mov -0x74(%ebp),%eax - 1048b9: 8b 55 88 mov -0x78(%ebp),%edx - 1048bc: 89 50 04 mov %edx,0x4(%eax) - next->prev = prev; - 1048bf: 8b 45 88 mov -0x78(%ebp),%eax - 1048c2: 8b 55 8c mov -0x74(%ebp),%edx - 1048c5: 89 10 mov %edx,(%eax) - } - if (merge_next == NULL && merge_previous == NULL) { - 1048c7: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) - 1048cb: 0f 85 fc 00 00 00 jne 1049cd - 1048d1: 83 7d ec 00 cmpl $0x0,-0x14(%ebp) - 1048d5: 0f 85 f2 00 00 00 jne 1049cd - if (p > base && p != (base + n)) { - 1048db: 8b 45 f4 mov -0xc(%ebp),%eax - 1048de: 3b 45 08 cmp 0x8(%ebp),%eax - 1048e1: 76 7b jbe 10495e - 1048e3: 8b 55 0c mov 0xc(%ebp),%edx - 1048e6: 89 d0 mov %edx,%eax - 1048e8: c1 e0 02 shl $0x2,%eax - 1048eb: 01 d0 add %edx,%eax - 1048ed: c1 e0 02 shl $0x2,%eax - 1048f0: 89 c2 mov %eax,%edx - 1048f2: 8b 45 08 mov 0x8(%ebp),%eax - 1048f5: 01 d0 add %edx,%eax - 1048f7: 3b 45 f4 cmp -0xc(%ebp),%eax - 1048fa: 74 62 je 10495e - list_add_before(&(p->page_link), &(base->page_link)); - 1048fc: 8b 45 08 mov 0x8(%ebp),%eax - 1048ff: 83 c0 0c add $0xc,%eax - 104902: 8b 55 f4 mov -0xc(%ebp),%edx - 104905: 83 c2 0c add $0xc,%edx - 104908: 89 55 c4 mov %edx,-0x3c(%ebp) - 10490b: 89 45 84 mov %eax,-0x7c(%ebp) - * Insert the new element @elm *before* the element @listelm which - * is already in the list. - * */ -static inline void -list_add_before(list_entry_t *listelm, list_entry_t *elm) { - __list_add(elm, listelm->prev, listelm); - 10490e: 8b 45 c4 mov -0x3c(%ebp),%eax - 104911: 8b 00 mov (%eax),%eax - 104913: 8b 55 84 mov -0x7c(%ebp),%edx - 104916: 89 55 80 mov %edx,-0x80(%ebp) - 104919: 89 85 7c ff ff ff mov %eax,-0x84(%ebp) - 10491f: 8b 45 c4 mov -0x3c(%ebp),%eax - 104922: 89 85 78 ff ff ff mov %eax,-0x88(%ebp) - * This is only for internal list manipulation where we know - * the prev/next entries already! - * */ -static inline void -__list_add(list_entry_t *elm, list_entry_t *prev, list_entry_t *next) { - prev->next = next->prev = elm; - 104928: 8b 85 78 ff ff ff mov -0x88(%ebp),%eax - 10492e: 8b 55 80 mov -0x80(%ebp),%edx - 104931: 89 10 mov %edx,(%eax) - 104933: 8b 85 78 ff ff ff mov -0x88(%ebp),%eax - 104939: 8b 10 mov (%eax),%edx - 10493b: 8b 85 7c ff ff ff mov -0x84(%ebp),%eax - 104941: 89 50 04 mov %edx,0x4(%eax) - elm->next = next; - 104944: 8b 45 80 mov -0x80(%ebp),%eax - 104947: 8b 95 78 ff ff ff mov -0x88(%ebp),%edx - 10494d: 89 50 04 mov %edx,0x4(%eax) - elm->prev = prev; - 104950: 8b 45 80 mov -0x80(%ebp),%eax - 104953: 8b 95 7c ff ff ff mov -0x84(%ebp),%edx - 104959: 89 10 mov %edx,(%eax) - 10495b: 90 nop - } else { - list_add_before(&free_list, &(base->page_link)); - } - } -} - 10495c: eb 6f jmp 1049cd - } - if (merge_next == NULL && merge_previous == NULL) { - if (p > base && p != (base + n)) { - list_add_before(&(p->page_link), &(base->page_link)); - } else { - list_add_before(&free_list, &(base->page_link)); - 10495e: 8b 45 08 mov 0x8(%ebp),%eax - 104961: 83 c0 0c add $0xc,%eax - 104964: c7 45 c0 68 a9 11 00 movl $0x11a968,-0x40(%ebp) - 10496b: 89 85 74 ff ff ff mov %eax,-0x8c(%ebp) - * Insert the new element @elm *before* the element @listelm which - * is already in the list. - * */ -static inline void -list_add_before(list_entry_t *listelm, list_entry_t *elm) { - __list_add(elm, listelm->prev, listelm); - 104971: 8b 45 c0 mov -0x40(%ebp),%eax - 104974: 8b 00 mov (%eax),%eax - 104976: 8b 95 74 ff ff ff mov -0x8c(%ebp),%edx - 10497c: 89 95 70 ff ff ff mov %edx,-0x90(%ebp) - 104982: 89 85 6c ff ff ff mov %eax,-0x94(%ebp) - 104988: 8b 45 c0 mov -0x40(%ebp),%eax - 10498b: 89 85 68 ff ff ff mov %eax,-0x98(%ebp) - * This is only for internal list manipulation where we know - * the prev/next entries already! - * */ -static inline void -__list_add(list_entry_t *elm, list_entry_t *prev, list_entry_t *next) { - prev->next = next->prev = elm; - 104991: 8b 85 68 ff ff ff mov -0x98(%ebp),%eax - 104997: 8b 95 70 ff ff ff mov -0x90(%ebp),%edx - 10499d: 89 10 mov %edx,(%eax) - 10499f: 8b 85 68 ff ff ff mov -0x98(%ebp),%eax - 1049a5: 8b 10 mov (%eax),%edx - 1049a7: 8b 85 6c ff ff ff mov -0x94(%ebp),%eax - 1049ad: 89 50 04 mov %edx,0x4(%eax) - elm->next = next; - 1049b0: 8b 85 70 ff ff ff mov -0x90(%ebp),%eax - 1049b6: 8b 95 68 ff ff ff mov -0x98(%ebp),%edx - 1049bc: 89 50 04 mov %edx,0x4(%eax) - elm->prev = prev; - 1049bf: 8b 85 70 ff ff ff mov -0x90(%ebp),%eax - 1049c5: 8b 95 6c ff ff ff mov -0x94(%ebp),%edx - 1049cb: 89 10 mov %edx,(%eax) - } - } -} - 1049cd: 90 nop - 1049ce: c9 leave - 1049cf: c3 ret - -001049d0 : - -static size_t -default_nr_free_pages(void) { - 1049d0: 55 push %ebp - 1049d1: 89 e5 mov %esp,%ebp - return nr_free; - 1049d3: a1 70 a9 11 00 mov 0x11a970,%eax -} - 1049d8: 5d pop %ebp - 1049d9: c3 ret - -001049da : - cprintf("+ 1 = %x, 1.next = %x, prev = %x\n", &(p2->page_link), p2->page_link.next, p2->page_link.prev); - cprintf("+ 2 = %x, 2.next = %x, prev = %x\n", &(p3->page_link), p3->page_link.next, p3->page_link.prev); -} -*/ -static void -basic_check(void) { - 1049da: 55 push %ebp - 1049db: 89 e5 mov %esp,%ebp - 1049dd: 83 ec 38 sub $0x38,%esp - struct Page *p0, *p1, *p2; - p0 = p1 = p2 = NULL; - 1049e0: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - 1049e7: 8b 45 f4 mov -0xc(%ebp),%eax - 1049ea: 89 45 f0 mov %eax,-0x10(%ebp) - 1049ed: 8b 45 f0 mov -0x10(%ebp),%eax - 1049f0: 89 45 ec mov %eax,-0x14(%ebp) - assert((p0 = alloc_page()) != NULL); - 1049f3: 83 ec 0c sub $0xc,%esp - 1049f6: 6a 01 push $0x1 - 1049f8: e8 72 e3 ff ff call 102d6f - 1049fd: 83 c4 10 add $0x10,%esp - 104a00: 89 45 ec mov %eax,-0x14(%ebp) - 104a03: 83 7d ec 00 cmpl $0x0,-0x14(%ebp) - 104a07: 75 19 jne 104a22 - 104a09: 68 f1 77 10 00 push $0x1077f1 - 104a0e: 68 8e 77 10 00 push $0x10778e - 104a13: 68 be 00 00 00 push $0xbe - 104a18: 68 a3 77 10 00 push $0x1077a3 - 104a1d: e8 ab b9 ff ff call 1003cd <__panic> - assert((p1 = alloc_page()) != NULL); - 104a22: 83 ec 0c sub $0xc,%esp - 104a25: 6a 01 push $0x1 - 104a27: e8 43 e3 ff ff call 102d6f - 104a2c: 83 c4 10 add $0x10,%esp - 104a2f: 89 45 f0 mov %eax,-0x10(%ebp) - 104a32: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) - 104a36: 75 19 jne 104a51 - 104a38: 68 0d 78 10 00 push $0x10780d - 104a3d: 68 8e 77 10 00 push $0x10778e - 104a42: 68 bf 00 00 00 push $0xbf - 104a47: 68 a3 77 10 00 push $0x1077a3 - 104a4c: e8 7c b9 ff ff call 1003cd <__panic> - assert((p2 = alloc_page()) != NULL); - 104a51: 83 ec 0c sub $0xc,%esp - 104a54: 6a 01 push $0x1 - 104a56: e8 14 e3 ff ff call 102d6f - 104a5b: 83 c4 10 add $0x10,%esp - 104a5e: 89 45 f4 mov %eax,-0xc(%ebp) - 104a61: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) - 104a65: 75 19 jne 104a80 - 104a67: 68 29 78 10 00 push $0x107829 - 104a6c: 68 8e 77 10 00 push $0x10778e - 104a71: 68 c0 00 00 00 push $0xc0 - 104a76: 68 a3 77 10 00 push $0x1077a3 - 104a7b: e8 4d b9 ff ff call 1003cd <__panic> - - assert(p0 != p1 && p0 != p2 && p1 != p2); - 104a80: 8b 45 ec mov -0x14(%ebp),%eax - 104a83: 3b 45 f0 cmp -0x10(%ebp),%eax - 104a86: 74 10 je 104a98 - 104a88: 8b 45 ec mov -0x14(%ebp),%eax - 104a8b: 3b 45 f4 cmp -0xc(%ebp),%eax - 104a8e: 74 08 je 104a98 - 104a90: 8b 45 f0 mov -0x10(%ebp),%eax - 104a93: 3b 45 f4 cmp -0xc(%ebp),%eax - 104a96: 75 19 jne 104ab1 - 104a98: 68 48 78 10 00 push $0x107848 - 104a9d: 68 8e 77 10 00 push $0x10778e - 104aa2: 68 c2 00 00 00 push $0xc2 - 104aa7: 68 a3 77 10 00 push $0x1077a3 - 104aac: e8 1c b9 ff ff call 1003cd <__panic> - assert(page_ref(p0) == 0 && page_ref(p1) == 0 && page_ref(p2) == 0); - 104ab1: 83 ec 0c sub $0xc,%esp - 104ab4: ff 75 ec pushl -0x14(%ebp) - 104ab7: e8 2d f8 ff ff call 1042e9 - 104abc: 83 c4 10 add $0x10,%esp - 104abf: 85 c0 test %eax,%eax - 104ac1: 75 24 jne 104ae7 - 104ac3: 83 ec 0c sub $0xc,%esp - 104ac6: ff 75 f0 pushl -0x10(%ebp) - 104ac9: e8 1b f8 ff ff call 1042e9 - 104ace: 83 c4 10 add $0x10,%esp - 104ad1: 85 c0 test %eax,%eax - 104ad3: 75 12 jne 104ae7 - 104ad5: 83 ec 0c sub $0xc,%esp - 104ad8: ff 75 f4 pushl -0xc(%ebp) - 104adb: e8 09 f8 ff ff call 1042e9 - 104ae0: 83 c4 10 add $0x10,%esp - 104ae3: 85 c0 test %eax,%eax - 104ae5: 74 19 je 104b00 - 104ae7: 68 6c 78 10 00 push $0x10786c - 104aec: 68 8e 77 10 00 push $0x10778e - 104af1: 68 c3 00 00 00 push $0xc3 - 104af6: 68 a3 77 10 00 push $0x1077a3 - 104afb: e8 cd b8 ff ff call 1003cd <__panic> - - assert(page2pa(p0) < npage * PGSIZE); - 104b00: 83 ec 0c sub $0xc,%esp - 104b03: ff 75 ec pushl -0x14(%ebp) - 104b06: e8 cb f7 ff ff call 1042d6 - 104b0b: 83 c4 10 add $0x10,%esp - 104b0e: 89 c2 mov %eax,%edx - 104b10: a1 c0 a8 11 00 mov 0x11a8c0,%eax - 104b15: c1 e0 0c shl $0xc,%eax - 104b18: 39 c2 cmp %eax,%edx - 104b1a: 72 19 jb 104b35 - 104b1c: 68 a8 78 10 00 push $0x1078a8 - 104b21: 68 8e 77 10 00 push $0x10778e - 104b26: 68 c5 00 00 00 push $0xc5 - 104b2b: 68 a3 77 10 00 push $0x1077a3 - 104b30: e8 98 b8 ff ff call 1003cd <__panic> - assert(page2pa(p1) < npage * PGSIZE); - 104b35: 83 ec 0c sub $0xc,%esp - 104b38: ff 75 f0 pushl -0x10(%ebp) - 104b3b: e8 96 f7 ff ff call 1042d6 - 104b40: 83 c4 10 add $0x10,%esp - 104b43: 89 c2 mov %eax,%edx - 104b45: a1 c0 a8 11 00 mov 0x11a8c0,%eax - 104b4a: c1 e0 0c shl $0xc,%eax - 104b4d: 39 c2 cmp %eax,%edx - 104b4f: 72 19 jb 104b6a - 104b51: 68 c5 78 10 00 push $0x1078c5 - 104b56: 68 8e 77 10 00 push $0x10778e - 104b5b: 68 c6 00 00 00 push $0xc6 - 104b60: 68 a3 77 10 00 push $0x1077a3 - 104b65: e8 63 b8 ff ff call 1003cd <__panic> - assert(page2pa(p2) < npage * PGSIZE); - 104b6a: 83 ec 0c sub $0xc,%esp - 104b6d: ff 75 f4 pushl -0xc(%ebp) - 104b70: e8 61 f7 ff ff call 1042d6 - 104b75: 83 c4 10 add $0x10,%esp - 104b78: 89 c2 mov %eax,%edx - 104b7a: a1 c0 a8 11 00 mov 0x11a8c0,%eax - 104b7f: c1 e0 0c shl $0xc,%eax - 104b82: 39 c2 cmp %eax,%edx - 104b84: 72 19 jb 104b9f - 104b86: 68 e2 78 10 00 push $0x1078e2 - 104b8b: 68 8e 77 10 00 push $0x10778e - 104b90: 68 c7 00 00 00 push $0xc7 - 104b95: 68 a3 77 10 00 push $0x1077a3 - 104b9a: e8 2e b8 ff ff call 1003cd <__panic> - - list_entry_t free_list_store = free_list; - 104b9f: a1 68 a9 11 00 mov 0x11a968,%eax - 104ba4: 8b 15 6c a9 11 00 mov 0x11a96c,%edx - 104baa: 89 45 d0 mov %eax,-0x30(%ebp) - 104bad: 89 55 d4 mov %edx,-0x2c(%ebp) - 104bb0: c7 45 e4 68 a9 11 00 movl $0x11a968,-0x1c(%ebp) - * list_init - initialize a new entry - * @elm: new entry to be initialized - * */ -static inline void -list_init(list_entry_t *elm) { - elm->prev = elm->next = elm; - 104bb7: 8b 45 e4 mov -0x1c(%ebp),%eax - 104bba: 8b 55 e4 mov -0x1c(%ebp),%edx - 104bbd: 89 50 04 mov %edx,0x4(%eax) - 104bc0: 8b 45 e4 mov -0x1c(%ebp),%eax - 104bc3: 8b 50 04 mov 0x4(%eax),%edx - 104bc6: 8b 45 e4 mov -0x1c(%ebp),%eax - 104bc9: 89 10 mov %edx,(%eax) - 104bcb: c7 45 d8 68 a9 11 00 movl $0x11a968,-0x28(%ebp) - * list_empty - tests whether a list is empty - * @list: the list to test. - * */ -static inline bool -list_empty(list_entry_t *list) { - return list->next == list; - 104bd2: 8b 45 d8 mov -0x28(%ebp),%eax - 104bd5: 8b 40 04 mov 0x4(%eax),%eax - 104bd8: 39 45 d8 cmp %eax,-0x28(%ebp) - 104bdb: 0f 94 c0 sete %al - 104bde: 0f b6 c0 movzbl %al,%eax - list_init(&free_list); - assert(list_empty(&free_list)); - 104be1: 85 c0 test %eax,%eax - 104be3: 75 19 jne 104bfe - 104be5: 68 ff 78 10 00 push $0x1078ff - 104bea: 68 8e 77 10 00 push $0x10778e - 104bef: 68 cb 00 00 00 push $0xcb - 104bf4: 68 a3 77 10 00 push $0x1077a3 - 104bf9: e8 cf b7 ff ff call 1003cd <__panic> - - unsigned int nr_free_store = nr_free; - 104bfe: a1 70 a9 11 00 mov 0x11a970,%eax - 104c03: 89 45 e0 mov %eax,-0x20(%ebp) - nr_free = 0; - 104c06: c7 05 70 a9 11 00 00 movl $0x0,0x11a970 - 104c0d: 00 00 00 - - assert(alloc_page() == NULL); - 104c10: 83 ec 0c sub $0xc,%esp - 104c13: 6a 01 push $0x1 - 104c15: e8 55 e1 ff ff call 102d6f - 104c1a: 83 c4 10 add $0x10,%esp - 104c1d: 85 c0 test %eax,%eax - 104c1f: 74 19 je 104c3a - 104c21: 68 16 79 10 00 push $0x107916 - 104c26: 68 8e 77 10 00 push $0x10778e - 104c2b: 68 d0 00 00 00 push $0xd0 - 104c30: 68 a3 77 10 00 push $0x1077a3 - 104c35: e8 93 b7 ff ff call 1003cd <__panic> - free_page(p0); - 104c3a: 83 ec 08 sub $0x8,%esp - 104c3d: 6a 01 push $0x1 - 104c3f: ff 75 ec pushl -0x14(%ebp) - 104c42: e8 66 e1 ff ff call 102dad - 104c47: 83 c4 10 add $0x10,%esp - free_page(p1); - 104c4a: 83 ec 08 sub $0x8,%esp - 104c4d: 6a 01 push $0x1 - 104c4f: ff 75 f0 pushl -0x10(%ebp) - 104c52: e8 56 e1 ff ff call 102dad - 104c57: 83 c4 10 add $0x10,%esp - free_page(p2); - 104c5a: 83 ec 08 sub $0x8,%esp - 104c5d: 6a 01 push $0x1 - 104c5f: ff 75 f4 pushl -0xc(%ebp) - 104c62: e8 46 e1 ff ff call 102dad - 104c67: 83 c4 10 add $0x10,%esp - assert(nr_free == 3); - 104c6a: a1 70 a9 11 00 mov 0x11a970,%eax - 104c6f: 83 f8 03 cmp $0x3,%eax - 104c72: 74 19 je 104c8d - 104c74: 68 2b 79 10 00 push $0x10792b - 104c79: 68 8e 77 10 00 push $0x10778e - 104c7e: 68 d4 00 00 00 push $0xd4 - 104c83: 68 a3 77 10 00 push $0x1077a3 - 104c88: e8 40 b7 ff ff call 1003cd <__panic> - assert((p0 = alloc_page()) != NULL); - 104c8d: 83 ec 0c sub $0xc,%esp - 104c90: 6a 01 push $0x1 - 104c92: e8 d8 e0 ff ff call 102d6f - 104c97: 83 c4 10 add $0x10,%esp - 104c9a: 89 45 ec mov %eax,-0x14(%ebp) - 104c9d: 83 7d ec 00 cmpl $0x0,-0x14(%ebp) - 104ca1: 75 19 jne 104cbc - 104ca3: 68 f1 77 10 00 push $0x1077f1 - 104ca8: 68 8e 77 10 00 push $0x10778e - 104cad: 68 d5 00 00 00 push $0xd5 - 104cb2: 68 a3 77 10 00 push $0x1077a3 - 104cb7: e8 11 b7 ff ff call 1003cd <__panic> - assert((p1 = alloc_page()) != NULL); - 104cbc: 83 ec 0c sub $0xc,%esp - 104cbf: 6a 01 push $0x1 - 104cc1: e8 a9 e0 ff ff call 102d6f - 104cc6: 83 c4 10 add $0x10,%esp - 104cc9: 89 45 f0 mov %eax,-0x10(%ebp) - 104ccc: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) - 104cd0: 75 19 jne 104ceb - 104cd2: 68 0d 78 10 00 push $0x10780d - 104cd7: 68 8e 77 10 00 push $0x10778e - 104cdc: 68 d6 00 00 00 push $0xd6 - 104ce1: 68 a3 77 10 00 push $0x1077a3 - 104ce6: e8 e2 b6 ff ff call 1003cd <__panic> - assert((p2 = alloc_page()) != NULL); - 104ceb: 83 ec 0c sub $0xc,%esp - 104cee: 6a 01 push $0x1 - 104cf0: e8 7a e0 ff ff call 102d6f - 104cf5: 83 c4 10 add $0x10,%esp - 104cf8: 89 45 f4 mov %eax,-0xc(%ebp) - 104cfb: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) - 104cff: 75 19 jne 104d1a - 104d01: 68 29 78 10 00 push $0x107829 - 104d06: 68 8e 77 10 00 push $0x10778e - 104d0b: 68 d7 00 00 00 push $0xd7 - 104d10: 68 a3 77 10 00 push $0x1077a3 - 104d15: e8 b3 b6 ff ff call 1003cd <__panic> - - assert(alloc_page() == NULL); - 104d1a: 83 ec 0c sub $0xc,%esp - 104d1d: 6a 01 push $0x1 - 104d1f: e8 4b e0 ff ff call 102d6f - 104d24: 83 c4 10 add $0x10,%esp - 104d27: 85 c0 test %eax,%eax - 104d29: 74 19 je 104d44 - 104d2b: 68 16 79 10 00 push $0x107916 - 104d30: 68 8e 77 10 00 push $0x10778e - 104d35: 68 d9 00 00 00 push $0xd9 - 104d3a: 68 a3 77 10 00 push $0x1077a3 - 104d3f: e8 89 b6 ff ff call 1003cd <__panic> - - free_page(p0); - 104d44: 83 ec 08 sub $0x8,%esp - 104d47: 6a 01 push $0x1 - 104d49: ff 75 ec pushl -0x14(%ebp) - 104d4c: e8 5c e0 ff ff call 102dad - 104d51: 83 c4 10 add $0x10,%esp - 104d54: c7 45 e8 68 a9 11 00 movl $0x11a968,-0x18(%ebp) - 104d5b: 8b 45 e8 mov -0x18(%ebp),%eax - 104d5e: 8b 40 04 mov 0x4(%eax),%eax - 104d61: 39 45 e8 cmp %eax,-0x18(%ebp) - 104d64: 0f 94 c0 sete %al - 104d67: 0f b6 c0 movzbl %al,%eax - assert(!list_empty(&free_list)); - 104d6a: 85 c0 test %eax,%eax - 104d6c: 74 19 je 104d87 - 104d6e: 68 38 79 10 00 push $0x107938 - 104d73: 68 8e 77 10 00 push $0x10778e - 104d78: 68 dc 00 00 00 push $0xdc - 104d7d: 68 a3 77 10 00 push $0x1077a3 - 104d82: e8 46 b6 ff ff call 1003cd <__panic> - - struct Page *p; - assert((p = alloc_page()) == p0); - 104d87: 83 ec 0c sub $0xc,%esp - 104d8a: 6a 01 push $0x1 - 104d8c: e8 de df ff ff call 102d6f - 104d91: 83 c4 10 add $0x10,%esp - 104d94: 89 45 dc mov %eax,-0x24(%ebp) - 104d97: 8b 45 dc mov -0x24(%ebp),%eax - 104d9a: 3b 45 ec cmp -0x14(%ebp),%eax - 104d9d: 74 19 je 104db8 - 104d9f: 68 50 79 10 00 push $0x107950 - 104da4: 68 8e 77 10 00 push $0x10778e - 104da9: 68 df 00 00 00 push $0xdf - 104dae: 68 a3 77 10 00 push $0x1077a3 - 104db3: e8 15 b6 ff ff call 1003cd <__panic> - assert(alloc_page() == NULL); - 104db8: 83 ec 0c sub $0xc,%esp - 104dbb: 6a 01 push $0x1 - 104dbd: e8 ad df ff ff call 102d6f - 104dc2: 83 c4 10 add $0x10,%esp - 104dc5: 85 c0 test %eax,%eax - 104dc7: 74 19 je 104de2 - 104dc9: 68 16 79 10 00 push $0x107916 - 104dce: 68 8e 77 10 00 push $0x10778e - 104dd3: 68 e0 00 00 00 push $0xe0 - 104dd8: 68 a3 77 10 00 push $0x1077a3 - 104ddd: e8 eb b5 ff ff call 1003cd <__panic> - - assert(nr_free == 0); - 104de2: a1 70 a9 11 00 mov 0x11a970,%eax - 104de7: 85 c0 test %eax,%eax - 104de9: 74 19 je 104e04 - 104deb: 68 69 79 10 00 push $0x107969 - 104df0: 68 8e 77 10 00 push $0x10778e - 104df5: 68 e2 00 00 00 push $0xe2 - 104dfa: 68 a3 77 10 00 push $0x1077a3 - 104dff: e8 c9 b5 ff ff call 1003cd <__panic> - free_list = free_list_store; - 104e04: 8b 45 d0 mov -0x30(%ebp),%eax - 104e07: 8b 55 d4 mov -0x2c(%ebp),%edx - 104e0a: a3 68 a9 11 00 mov %eax,0x11a968 - 104e0f: 89 15 6c a9 11 00 mov %edx,0x11a96c - nr_free = nr_free_store; - 104e15: 8b 45 e0 mov -0x20(%ebp),%eax - 104e18: a3 70 a9 11 00 mov %eax,0x11a970 - - free_page(p); - 104e1d: 83 ec 08 sub $0x8,%esp - 104e20: 6a 01 push $0x1 - 104e22: ff 75 dc pushl -0x24(%ebp) - 104e25: e8 83 df ff ff call 102dad - 104e2a: 83 c4 10 add $0x10,%esp - free_page(p1); - 104e2d: 83 ec 08 sub $0x8,%esp - 104e30: 6a 01 push $0x1 - 104e32: ff 75 f0 pushl -0x10(%ebp) - 104e35: e8 73 df ff ff call 102dad - 104e3a: 83 c4 10 add $0x10,%esp - free_page(p2); - 104e3d: 83 ec 08 sub $0x8,%esp - 104e40: 6a 01 push $0x1 - 104e42: ff 75 f4 pushl -0xc(%ebp) - 104e45: e8 63 df ff ff call 102dad - 104e4a: 83 c4 10 add $0x10,%esp -} - 104e4d: 90 nop - 104e4e: c9 leave - 104e4f: c3 ret - -00104e50 : - -// LAB2: below code is used to check the first fit allocation algorithm (your EXERCISE 1) -// NOTICE: You SHOULD NOT CHANGE basic_check, default_check functions! -static void -default_check(void) { - 104e50: 55 push %ebp - 104e51: 89 e5 mov %esp,%ebp - 104e53: 81 ec 88 00 00 00 sub $0x88,%esp - int count = 0, total = 0; - 104e59: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - 104e60: c7 45 f0 00 00 00 00 movl $0x0,-0x10(%ebp) - list_entry_t *le = &free_list; - 104e67: c7 45 ec 68 a9 11 00 movl $0x11a968,-0x14(%ebp) - while ((le = list_next(le)) != &free_list) { - 104e6e: eb 60 jmp 104ed0 - struct Page *p = le2page(le, page_link); - 104e70: 8b 45 ec mov -0x14(%ebp),%eax - 104e73: 83 e8 0c sub $0xc,%eax - 104e76: 89 45 e4 mov %eax,-0x1c(%ebp) - assert(PageProperty(p)); - 104e79: 8b 45 e4 mov -0x1c(%ebp),%eax - 104e7c: 83 c0 04 add $0x4,%eax - 104e7f: c7 45 ac 01 00 00 00 movl $0x1,-0x54(%ebp) - 104e86: 89 45 a8 mov %eax,-0x58(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); - 104e89: 8b 45 a8 mov -0x58(%ebp),%eax - 104e8c: 8b 55 ac mov -0x54(%ebp),%edx - 104e8f: 0f a3 10 bt %edx,(%eax) - 104e92: 19 c0 sbb %eax,%eax - 104e94: 89 45 a4 mov %eax,-0x5c(%ebp) - return oldbit != 0; - 104e97: 83 7d a4 00 cmpl $0x0,-0x5c(%ebp) - 104e9b: 0f 95 c0 setne %al - 104e9e: 0f b6 c0 movzbl %al,%eax - 104ea1: 85 c0 test %eax,%eax - 104ea3: 75 19 jne 104ebe - 104ea5: 68 76 79 10 00 push $0x107976 - 104eaa: 68 8e 77 10 00 push $0x10778e - 104eaf: 68 f3 00 00 00 push $0xf3 - 104eb4: 68 a3 77 10 00 push $0x1077a3 - 104eb9: e8 0f b5 ff ff call 1003cd <__panic> - count ++, total += p->property; - 104ebe: 83 45 f4 01 addl $0x1,-0xc(%ebp) - 104ec2: 8b 45 e4 mov -0x1c(%ebp),%eax - 104ec5: 8b 50 08 mov 0x8(%eax),%edx - 104ec8: 8b 45 f0 mov -0x10(%ebp),%eax - 104ecb: 01 d0 add %edx,%eax - 104ecd: 89 45 f0 mov %eax,-0x10(%ebp) - 104ed0: 8b 45 ec mov -0x14(%ebp),%eax - 104ed3: 89 45 e0 mov %eax,-0x20(%ebp) - * list_next - get the next entry - * @listelm: the list head - **/ -static inline list_entry_t * -list_next(list_entry_t *listelm) { - return listelm->next; - 104ed6: 8b 45 e0 mov -0x20(%ebp),%eax - 104ed9: 8b 40 04 mov 0x4(%eax),%eax -// NOTICE: You SHOULD NOT CHANGE basic_check, default_check functions! -static void -default_check(void) { - int count = 0, total = 0; - list_entry_t *le = &free_list; - while ((le = list_next(le)) != &free_list) { - 104edc: 89 45 ec mov %eax,-0x14(%ebp) - 104edf: 81 7d ec 68 a9 11 00 cmpl $0x11a968,-0x14(%ebp) - 104ee6: 75 88 jne 104e70 - struct Page *p = le2page(le, page_link); - assert(PageProperty(p)); - count ++, total += p->property; - } - assert(total == nr_free_pages()); - 104ee8: e8 f5 de ff ff call 102de2 - 104eed: 89 c2 mov %eax,%edx - 104eef: 8b 45 f0 mov -0x10(%ebp),%eax - 104ef2: 39 c2 cmp %eax,%edx - 104ef4: 74 19 je 104f0f - 104ef6: 68 86 79 10 00 push $0x107986 - 104efb: 68 8e 77 10 00 push $0x10778e - 104f00: 68 f6 00 00 00 push $0xf6 - 104f05: 68 a3 77 10 00 push $0x1077a3 - 104f0a: e8 be b4 ff ff call 1003cd <__panic> - - basic_check(); - 104f0f: e8 c6 fa ff ff call 1049da - - struct Page *p0 = alloc_pages(5), *p1, *p2; - 104f14: 83 ec 0c sub $0xc,%esp - 104f17: 6a 05 push $0x5 - 104f19: e8 51 de ff ff call 102d6f - 104f1e: 83 c4 10 add $0x10,%esp - 104f21: 89 45 dc mov %eax,-0x24(%ebp) - struct Page *p0_saved = p0; - 104f24: 8b 45 dc mov -0x24(%ebp),%eax - 104f27: 89 45 d8 mov %eax,-0x28(%ebp) - - assert(p0 != NULL); - 104f2a: 83 7d dc 00 cmpl $0x0,-0x24(%ebp) - 104f2e: 75 19 jne 104f49 - 104f30: 68 9f 79 10 00 push $0x10799f - 104f35: 68 8e 77 10 00 push $0x10778e - 104f3a: 68 fd 00 00 00 push $0xfd - 104f3f: 68 a3 77 10 00 push $0x1077a3 - 104f44: e8 84 b4 ff ff call 1003cd <__panic> - assert(!PageProperty(p0)); - 104f49: 8b 45 dc mov -0x24(%ebp),%eax - 104f4c: 83 c0 04 add $0x4,%eax - 104f4f: c7 45 e8 01 00 00 00 movl $0x1,-0x18(%ebp) - 104f56: 89 45 a0 mov %eax,-0x60(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); - 104f59: 8b 45 a0 mov -0x60(%ebp),%eax - 104f5c: 8b 55 e8 mov -0x18(%ebp),%edx - 104f5f: 0f a3 10 bt %edx,(%eax) - 104f62: 19 c0 sbb %eax,%eax - 104f64: 89 45 9c mov %eax,-0x64(%ebp) - return oldbit != 0; - 104f67: 83 7d 9c 00 cmpl $0x0,-0x64(%ebp) - 104f6b: 0f 95 c0 setne %al - 104f6e: 0f b6 c0 movzbl %al,%eax - 104f71: 85 c0 test %eax,%eax - 104f73: 74 19 je 104f8e - 104f75: 68 aa 79 10 00 push $0x1079aa - 104f7a: 68 8e 77 10 00 push $0x10778e - 104f7f: 68 fe 00 00 00 push $0xfe - 104f84: 68 a3 77 10 00 push $0x1077a3 - 104f89: e8 3f b4 ff ff call 1003cd <__panic> - - list_entry_t free_list_store = free_list; - 104f8e: a1 68 a9 11 00 mov 0x11a968,%eax - 104f93: 8b 15 6c a9 11 00 mov 0x11a96c,%edx - 104f99: 89 85 7c ff ff ff mov %eax,-0x84(%ebp) - 104f9f: 89 55 80 mov %edx,-0x80(%ebp) - 104fa2: c7 45 cc 68 a9 11 00 movl $0x11a968,-0x34(%ebp) - * list_init - initialize a new entry - * @elm: new entry to be initialized - * */ -static inline void -list_init(list_entry_t *elm) { - elm->prev = elm->next = elm; - 104fa9: 8b 45 cc mov -0x34(%ebp),%eax - 104fac: 8b 55 cc mov -0x34(%ebp),%edx - 104faf: 89 50 04 mov %edx,0x4(%eax) - 104fb2: 8b 45 cc mov -0x34(%ebp),%eax - 104fb5: 8b 50 04 mov 0x4(%eax),%edx - 104fb8: 8b 45 cc mov -0x34(%ebp),%eax - 104fbb: 89 10 mov %edx,(%eax) - 104fbd: c7 45 d4 68 a9 11 00 movl $0x11a968,-0x2c(%ebp) - * list_empty - tests whether a list is empty - * @list: the list to test. - * */ -static inline bool -list_empty(list_entry_t *list) { - return list->next == list; - 104fc4: 8b 45 d4 mov -0x2c(%ebp),%eax - 104fc7: 8b 40 04 mov 0x4(%eax),%eax - 104fca: 39 45 d4 cmp %eax,-0x2c(%ebp) - 104fcd: 0f 94 c0 sete %al - 104fd0: 0f b6 c0 movzbl %al,%eax - list_init(&free_list); - assert(list_empty(&free_list)); - 104fd3: 85 c0 test %eax,%eax - 104fd5: 75 19 jne 104ff0 - 104fd7: 68 ff 78 10 00 push $0x1078ff - 104fdc: 68 8e 77 10 00 push $0x10778e - 104fe1: 68 02 01 00 00 push $0x102 - 104fe6: 68 a3 77 10 00 push $0x1077a3 - 104feb: e8 dd b3 ff ff call 1003cd <__panic> - assert(alloc_page() == NULL); - 104ff0: 83 ec 0c sub $0xc,%esp - 104ff3: 6a 01 push $0x1 - 104ff5: e8 75 dd ff ff call 102d6f - 104ffa: 83 c4 10 add $0x10,%esp - 104ffd: 85 c0 test %eax,%eax - 104fff: 74 19 je 10501a - 105001: 68 16 79 10 00 push $0x107916 - 105006: 68 8e 77 10 00 push $0x10778e - 10500b: 68 03 01 00 00 push $0x103 - 105010: 68 a3 77 10 00 push $0x1077a3 - 105015: e8 b3 b3 ff ff call 1003cd <__panic> - - unsigned int nr_free_store = nr_free; - 10501a: a1 70 a9 11 00 mov 0x11a970,%eax - 10501f: 89 45 c8 mov %eax,-0x38(%ebp) - nr_free = 0; - 105022: c7 05 70 a9 11 00 00 movl $0x0,0x11a970 - 105029: 00 00 00 - - free_pages(p0 + 2, 3); - 10502c: 8b 45 dc mov -0x24(%ebp),%eax - 10502f: 83 c0 28 add $0x28,%eax - 105032: 83 ec 08 sub $0x8,%esp - 105035: 6a 03 push $0x3 - 105037: 50 push %eax - 105038: e8 70 dd ff ff call 102dad - 10503d: 83 c4 10 add $0x10,%esp - assert(alloc_pages(4) == NULL); - 105040: 83 ec 0c sub $0xc,%esp - 105043: 6a 04 push $0x4 - 105045: e8 25 dd ff ff call 102d6f - 10504a: 83 c4 10 add $0x10,%esp - 10504d: 85 c0 test %eax,%eax - 10504f: 74 19 je 10506a - 105051: 68 bc 79 10 00 push $0x1079bc - 105056: 68 8e 77 10 00 push $0x10778e - 10505b: 68 09 01 00 00 push $0x109 - 105060: 68 a3 77 10 00 push $0x1077a3 - 105065: e8 63 b3 ff ff call 1003cd <__panic> - assert(PageProperty(p0 + 2) && p0[2].property == 3); - 10506a: 8b 45 dc mov -0x24(%ebp),%eax - 10506d: 83 c0 28 add $0x28,%eax - 105070: 83 c0 04 add $0x4,%eax - 105073: c7 45 d0 01 00 00 00 movl $0x1,-0x30(%ebp) - 10507a: 89 45 98 mov %eax,-0x68(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); - 10507d: 8b 45 98 mov -0x68(%ebp),%eax - 105080: 8b 55 d0 mov -0x30(%ebp),%edx - 105083: 0f a3 10 bt %edx,(%eax) - 105086: 19 c0 sbb %eax,%eax - 105088: 89 45 94 mov %eax,-0x6c(%ebp) - return oldbit != 0; - 10508b: 83 7d 94 00 cmpl $0x0,-0x6c(%ebp) - 10508f: 0f 95 c0 setne %al - 105092: 0f b6 c0 movzbl %al,%eax - 105095: 85 c0 test %eax,%eax - 105097: 74 0e je 1050a7 - 105099: 8b 45 dc mov -0x24(%ebp),%eax - 10509c: 83 c0 28 add $0x28,%eax - 10509f: 8b 40 08 mov 0x8(%eax),%eax - 1050a2: 83 f8 03 cmp $0x3,%eax - 1050a5: 74 19 je 1050c0 - 1050a7: 68 d4 79 10 00 push $0x1079d4 - 1050ac: 68 8e 77 10 00 push $0x10778e - 1050b1: 68 0a 01 00 00 push $0x10a - 1050b6: 68 a3 77 10 00 push $0x1077a3 - 1050bb: e8 0d b3 ff ff call 1003cd <__panic> - assert((p1 = alloc_pages(3)) != NULL); - 1050c0: 83 ec 0c sub $0xc,%esp - 1050c3: 6a 03 push $0x3 - 1050c5: e8 a5 dc ff ff call 102d6f - 1050ca: 83 c4 10 add $0x10,%esp - 1050cd: 89 45 c0 mov %eax,-0x40(%ebp) - 1050d0: 83 7d c0 00 cmpl $0x0,-0x40(%ebp) - 1050d4: 75 19 jne 1050ef - 1050d6: 68 00 7a 10 00 push $0x107a00 - 1050db: 68 8e 77 10 00 push $0x10778e - 1050e0: 68 0b 01 00 00 push $0x10b - 1050e5: 68 a3 77 10 00 push $0x1077a3 - 1050ea: e8 de b2 ff ff call 1003cd <__panic> - assert(alloc_page() == NULL); - 1050ef: 83 ec 0c sub $0xc,%esp - 1050f2: 6a 01 push $0x1 - 1050f4: e8 76 dc ff ff call 102d6f - 1050f9: 83 c4 10 add $0x10,%esp - 1050fc: 85 c0 test %eax,%eax - 1050fe: 74 19 je 105119 - 105100: 68 16 79 10 00 push $0x107916 - 105105: 68 8e 77 10 00 push $0x10778e - 10510a: 68 0c 01 00 00 push $0x10c - 10510f: 68 a3 77 10 00 push $0x1077a3 - 105114: e8 b4 b2 ff ff call 1003cd <__panic> - assert(p0 + 2 == p1); - 105119: 8b 45 dc mov -0x24(%ebp),%eax - 10511c: 83 c0 28 add $0x28,%eax - 10511f: 3b 45 c0 cmp -0x40(%ebp),%eax - 105122: 74 19 je 10513d - 105124: 68 1e 7a 10 00 push $0x107a1e - 105129: 68 8e 77 10 00 push $0x10778e - 10512e: 68 0d 01 00 00 push $0x10d - 105133: 68 a3 77 10 00 push $0x1077a3 - 105138: e8 90 b2 ff ff call 1003cd <__panic> - - p2 = p0 + 1; - 10513d: 8b 45 dc mov -0x24(%ebp),%eax - 105140: 83 c0 14 add $0x14,%eax - 105143: 89 45 bc mov %eax,-0x44(%ebp) - free_page(p0); - 105146: 83 ec 08 sub $0x8,%esp - 105149: 6a 01 push $0x1 - 10514b: ff 75 dc pushl -0x24(%ebp) - 10514e: e8 5a dc ff ff call 102dad - 105153: 83 c4 10 add $0x10,%esp - free_pages(p1, 3); - 105156: 83 ec 08 sub $0x8,%esp - 105159: 6a 03 push $0x3 - 10515b: ff 75 c0 pushl -0x40(%ebp) - 10515e: e8 4a dc ff ff call 102dad - 105163: 83 c4 10 add $0x10,%esp - assert(PageProperty(p0) && p0->property == 1); - 105166: 8b 45 dc mov -0x24(%ebp),%eax - 105169: 83 c0 04 add $0x4,%eax - 10516c: c7 45 c4 01 00 00 00 movl $0x1,-0x3c(%ebp) - 105173: 89 45 90 mov %eax,-0x70(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); - 105176: 8b 45 90 mov -0x70(%ebp),%eax - 105179: 8b 55 c4 mov -0x3c(%ebp),%edx - 10517c: 0f a3 10 bt %edx,(%eax) - 10517f: 19 c0 sbb %eax,%eax - 105181: 89 45 8c mov %eax,-0x74(%ebp) - return oldbit != 0; - 105184: 83 7d 8c 00 cmpl $0x0,-0x74(%ebp) - 105188: 0f 95 c0 setne %al - 10518b: 0f b6 c0 movzbl %al,%eax - 10518e: 85 c0 test %eax,%eax - 105190: 74 0b je 10519d - 105192: 8b 45 dc mov -0x24(%ebp),%eax - 105195: 8b 40 08 mov 0x8(%eax),%eax - 105198: 83 f8 01 cmp $0x1,%eax - 10519b: 74 19 je 1051b6 - 10519d: 68 2c 7a 10 00 push $0x107a2c - 1051a2: 68 8e 77 10 00 push $0x10778e - 1051a7: 68 12 01 00 00 push $0x112 - 1051ac: 68 a3 77 10 00 push $0x1077a3 - 1051b1: e8 17 b2 ff ff call 1003cd <__panic> - assert(PageProperty(p1) && p1->property == 3); - 1051b6: 8b 45 c0 mov -0x40(%ebp),%eax - 1051b9: 83 c0 04 add $0x4,%eax - 1051bc: c7 45 b8 01 00 00 00 movl $0x1,-0x48(%ebp) - 1051c3: 89 45 88 mov %eax,-0x78(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); - 1051c6: 8b 45 88 mov -0x78(%ebp),%eax - 1051c9: 8b 55 b8 mov -0x48(%ebp),%edx - 1051cc: 0f a3 10 bt %edx,(%eax) - 1051cf: 19 c0 sbb %eax,%eax - 1051d1: 89 45 84 mov %eax,-0x7c(%ebp) - return oldbit != 0; - 1051d4: 83 7d 84 00 cmpl $0x0,-0x7c(%ebp) - 1051d8: 0f 95 c0 setne %al - 1051db: 0f b6 c0 movzbl %al,%eax - 1051de: 85 c0 test %eax,%eax - 1051e0: 74 0b je 1051ed - 1051e2: 8b 45 c0 mov -0x40(%ebp),%eax - 1051e5: 8b 40 08 mov 0x8(%eax),%eax - 1051e8: 83 f8 03 cmp $0x3,%eax - 1051eb: 74 19 je 105206 - 1051ed: 68 54 7a 10 00 push $0x107a54 - 1051f2: 68 8e 77 10 00 push $0x10778e - 1051f7: 68 13 01 00 00 push $0x113 - 1051fc: 68 a3 77 10 00 push $0x1077a3 - 105201: e8 c7 b1 ff ff call 1003cd <__panic> - - assert((p0 = alloc_page()) == p2 - 1); - 105206: 83 ec 0c sub $0xc,%esp - 105209: 6a 01 push $0x1 - 10520b: e8 5f db ff ff call 102d6f - 105210: 83 c4 10 add $0x10,%esp - 105213: 89 45 dc mov %eax,-0x24(%ebp) - 105216: 8b 45 bc mov -0x44(%ebp),%eax - 105219: 83 e8 14 sub $0x14,%eax - 10521c: 39 45 dc cmp %eax,-0x24(%ebp) - 10521f: 74 19 je 10523a - 105221: 68 7a 7a 10 00 push $0x107a7a - 105226: 68 8e 77 10 00 push $0x10778e - 10522b: 68 15 01 00 00 push $0x115 - 105230: 68 a3 77 10 00 push $0x1077a3 - 105235: e8 93 b1 ff ff call 1003cd <__panic> - free_page(p0); - 10523a: 83 ec 08 sub $0x8,%esp - 10523d: 6a 01 push $0x1 - 10523f: ff 75 dc pushl -0x24(%ebp) - 105242: e8 66 db ff ff call 102dad - 105247: 83 c4 10 add $0x10,%esp - assert((p0 = alloc_pages(2)) == p2 + 1); - 10524a: 83 ec 0c sub $0xc,%esp - 10524d: 6a 02 push $0x2 - 10524f: e8 1b db ff ff call 102d6f - 105254: 83 c4 10 add $0x10,%esp - 105257: 89 45 dc mov %eax,-0x24(%ebp) - 10525a: 8b 45 bc mov -0x44(%ebp),%eax - 10525d: 83 c0 14 add $0x14,%eax - 105260: 39 45 dc cmp %eax,-0x24(%ebp) - 105263: 74 19 je 10527e - 105265: 68 98 7a 10 00 push $0x107a98 - 10526a: 68 8e 77 10 00 push $0x10778e - 10526f: 68 17 01 00 00 push $0x117 - 105274: 68 a3 77 10 00 push $0x1077a3 - 105279: e8 4f b1 ff ff call 1003cd <__panic> - - free_pages(p0, 2); - 10527e: 83 ec 08 sub $0x8,%esp - 105281: 6a 02 push $0x2 - 105283: ff 75 dc pushl -0x24(%ebp) - 105286: e8 22 db ff ff call 102dad - 10528b: 83 c4 10 add $0x10,%esp - free_page(p2); - 10528e: 83 ec 08 sub $0x8,%esp - 105291: 6a 01 push $0x1 - 105293: ff 75 bc pushl -0x44(%ebp) - 105296: e8 12 db ff ff call 102dad - 10529b: 83 c4 10 add $0x10,%esp - - assert((p0 = alloc_pages(5)) != NULL); - 10529e: 83 ec 0c sub $0xc,%esp - 1052a1: 6a 05 push $0x5 - 1052a3: e8 c7 da ff ff call 102d6f - 1052a8: 83 c4 10 add $0x10,%esp - 1052ab: 89 45 dc mov %eax,-0x24(%ebp) - 1052ae: 83 7d dc 00 cmpl $0x0,-0x24(%ebp) - 1052b2: 75 19 jne 1052cd - 1052b4: 68 b8 7a 10 00 push $0x107ab8 - 1052b9: 68 8e 77 10 00 push $0x10778e - 1052be: 68 1c 01 00 00 push $0x11c - 1052c3: 68 a3 77 10 00 push $0x1077a3 - 1052c8: e8 00 b1 ff ff call 1003cd <__panic> - assert(alloc_page() == NULL); - 1052cd: 83 ec 0c sub $0xc,%esp - 1052d0: 6a 01 push $0x1 - 1052d2: e8 98 da ff ff call 102d6f - 1052d7: 83 c4 10 add $0x10,%esp - 1052da: 85 c0 test %eax,%eax - 1052dc: 74 19 je 1052f7 - 1052de: 68 16 79 10 00 push $0x107916 - 1052e3: 68 8e 77 10 00 push $0x10778e - 1052e8: 68 1d 01 00 00 push $0x11d - 1052ed: 68 a3 77 10 00 push $0x1077a3 - 1052f2: e8 d6 b0 ff ff call 1003cd <__panic> - - assert(nr_free == 0); - 1052f7: a1 70 a9 11 00 mov 0x11a970,%eax - 1052fc: 85 c0 test %eax,%eax - 1052fe: 74 19 je 105319 - 105300: 68 69 79 10 00 push $0x107969 - 105305: 68 8e 77 10 00 push $0x10778e - 10530a: 68 1f 01 00 00 push $0x11f - 10530f: 68 a3 77 10 00 push $0x1077a3 - 105314: e8 b4 b0 ff ff call 1003cd <__panic> - nr_free = nr_free_store; - 105319: 8b 45 c8 mov -0x38(%ebp),%eax - 10531c: a3 70 a9 11 00 mov %eax,0x11a970 - - free_list = free_list_store; - 105321: 8b 85 7c ff ff ff mov -0x84(%ebp),%eax - 105327: 8b 55 80 mov -0x80(%ebp),%edx - 10532a: a3 68 a9 11 00 mov %eax,0x11a968 - 10532f: 89 15 6c a9 11 00 mov %edx,0x11a96c - free_pages(p0, 5); - 105335: 83 ec 08 sub $0x8,%esp - 105338: 6a 05 push $0x5 - 10533a: ff 75 dc pushl -0x24(%ebp) - 10533d: e8 6b da ff ff call 102dad - 105342: 83 c4 10 add $0x10,%esp - - le = &free_list; - 105345: c7 45 ec 68 a9 11 00 movl $0x11a968,-0x14(%ebp) - while ((le = list_next(le)) != &free_list) { - 10534c: eb 1d jmp 10536b - struct Page *p = le2page(le, page_link); - 10534e: 8b 45 ec mov -0x14(%ebp),%eax - 105351: 83 e8 0c sub $0xc,%eax - 105354: 89 45 b0 mov %eax,-0x50(%ebp) - count --, total -= p->property; - 105357: 83 6d f4 01 subl $0x1,-0xc(%ebp) - 10535b: 8b 55 f0 mov -0x10(%ebp),%edx - 10535e: 8b 45 b0 mov -0x50(%ebp),%eax - 105361: 8b 40 08 mov 0x8(%eax),%eax - 105364: 29 c2 sub %eax,%edx - 105366: 89 d0 mov %edx,%eax - 105368: 89 45 f0 mov %eax,-0x10(%ebp) - 10536b: 8b 45 ec mov -0x14(%ebp),%eax - 10536e: 89 45 b4 mov %eax,-0x4c(%ebp) - * list_next - get the next entry - * @listelm: the list head - **/ -static inline list_entry_t * -list_next(list_entry_t *listelm) { - return listelm->next; - 105371: 8b 45 b4 mov -0x4c(%ebp),%eax - 105374: 8b 40 04 mov 0x4(%eax),%eax - - free_list = free_list_store; - free_pages(p0, 5); - - le = &free_list; - while ((le = list_next(le)) != &free_list) { - 105377: 89 45 ec mov %eax,-0x14(%ebp) - 10537a: 81 7d ec 68 a9 11 00 cmpl $0x11a968,-0x14(%ebp) - 105381: 75 cb jne 10534e - struct Page *p = le2page(le, page_link); - count --, total -= p->property; - } - assert(count == 0); - 105383: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) - 105387: 74 19 je 1053a2 - 105389: 68 d6 7a 10 00 push $0x107ad6 - 10538e: 68 8e 77 10 00 push $0x10778e - 105393: 68 2a 01 00 00 push $0x12a - 105398: 68 a3 77 10 00 push $0x1077a3 - 10539d: e8 2b b0 ff ff call 1003cd <__panic> - assert(total == 0); - 1053a2: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) - 1053a6: 74 19 je 1053c1 - 1053a8: 68 e1 7a 10 00 push $0x107ae1 - 1053ad: 68 8e 77 10 00 push $0x10778e - 1053b2: 68 2b 01 00 00 push $0x12b - 1053b7: 68 a3 77 10 00 push $0x1077a3 - 1053bc: e8 0c b0 ff ff call 1003cd <__panic> -} - 1053c1: 90 nop - 1053c2: c9 leave - 1053c3: c3 ret - -001053c4 : - -extern struct Page *pages; -extern size_t npage; - -static inline ppn_t -page2ppn(struct Page *page) { - 1053c4: 55 push %ebp - 1053c5: 89 e5 mov %esp,%ebp - return page - pages; - 1053c7: 8b 45 08 mov 0x8(%ebp),%eax - 1053ca: 8b 15 64 a9 11 00 mov 0x11a964,%edx - 1053d0: 29 d0 sub %edx,%eax - 1053d2: c1 f8 02 sar $0x2,%eax - 1053d5: 69 c0 cd cc cc cc imul $0xcccccccd,%eax,%eax -} - 1053db: 5d pop %ebp - 1053dc: c3 ret - -001053dd : - -static inline uintptr_t -page2pa(struct Page *page) { - 1053dd: 55 push %ebp - 1053de: 89 e5 mov %esp,%ebp - return page2ppn(page) << PGSHIFT; - 1053e0: ff 75 08 pushl 0x8(%ebp) - 1053e3: e8 dc ff ff ff call 1053c4 - 1053e8: 83 c4 04 add $0x4,%esp - 1053eb: c1 e0 0c shl $0xc,%eax -} - 1053ee: c9 leave - 1053ef: c3 ret - -001053f0 : -page_ref(struct Page *page) { - return page->ref; -} - -static inline void -set_page_ref(struct Page *page, int val) { - 1053f0: 55 push %ebp - 1053f1: 89 e5 mov %esp,%ebp - page->ref = val; - 1053f3: 8b 45 08 mov 0x8(%ebp),%eax - 1053f6: 8b 55 0c mov 0xc(%ebp),%edx - 1053f9: 89 10 mov %edx,(%eax) -} - 1053fb: 90 nop - 1053fc: 5d pop %ebp - 1053fd: c3 ret - -001053fe : -#define RIGHT_LEAF(index) ((index) * 2 + 2) -#define PARENT(index) ( ((index) + 1) / 2 - 1) -#define MAX(a, b) ((a) > (b) ? (a) : (b)) - -static unsigned int -buddy_find_first_zero(unsigned int bit_array) { - 1053fe: 55 push %ebp - 1053ff: 89 e5 mov %esp,%ebp - 105401: 83 ec 10 sub $0x10,%esp - unsigned pos = 0; - 105404: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp) - while (bit_array >>= 1) ++ pos; - 10540b: eb 04 jmp 105411 - 10540d: 83 45 fc 01 addl $0x1,-0x4(%ebp) - 105411: d1 6d 08 shrl 0x8(%ebp) - 105414: 83 7d 08 00 cmpl $0x0,0x8(%ebp) - 105418: 75 f3 jne 10540d - return pos; - 10541a: 8b 45 fc mov -0x4(%ebp),%eax -} - 10541d: c9 leave - 10541e: c3 ret - -0010541f : - -static struct Page* -buddy_node_index_to_page(unsigned int index, unsigned int node_size) { - 10541f: 55 push %ebp - 105420: 89 e5 mov %esp,%ebp - return buddy_allocatable_base + ((index + 1) * node_size - buddy_max_pages); - 105422: 8b 0d 54 a9 11 00 mov 0x11a954,%ecx - 105428: 8b 45 08 mov 0x8(%ebp),%eax - 10542b: 83 c0 01 add $0x1,%eax - 10542e: 0f af 45 0c imul 0xc(%ebp),%eax - 105432: 89 c2 mov %eax,%edx - 105434: a1 50 a9 11 00 mov 0x11a950,%eax - 105439: 29 c2 sub %eax,%edx - 10543b: 89 d0 mov %edx,%eax - 10543d: c1 e0 02 shl $0x2,%eax - 105440: 01 d0 add %edx,%eax - 105442: c1 e0 02 shl $0x2,%eax - 105445: 01 c8 add %ecx,%eax -} - 105447: 5d pop %ebp - 105448: c3 ret - -00105449 : - -static void -buddy_init(void) { - 105449: 55 push %ebp - 10544a: 89 e5 mov %esp,%ebp - // do nothing. -} - 10544c: 90 nop - 10544d: 5d pop %ebp - 10544e: c3 ret - -0010544f : - -static void -buddy_init_memmap(struct Page *base, size_t n) { - 10544f: 55 push %ebp - 105450: 89 e5 mov %esp,%ebp - 105452: 83 ec 58 sub $0x58,%esp - assert(n > 0); - 105455: 83 7d 0c 00 cmpl $0x0,0xc(%ebp) - 105459: 75 16 jne 105471 - 10545b: 68 1c 7b 10 00 push $0x107b1c - 105460: 68 22 7b 10 00 push $0x107b22 - 105465: 6a 28 push $0x28 - 105467: 68 37 7b 10 00 push $0x107b37 - 10546c: e8 5c af ff ff call 1003cd <__panic> - // Calculate maximum manageable memory zone - unsigned int max_pages = 1; - 105471: c7 45 f4 01 00 00 00 movl $0x1,-0xc(%ebp) - for (unsigned int i = 1; i < BUDDY_MAX_DEPTH; ++ i) { - 105478: c7 45 f0 01 00 00 00 movl $0x1,-0x10(%ebp) - 10547f: eb 23 jmp 1054a4 - // Should consider the page for storing 'longest' array. - if (max_pages + max_pages / 512 >= n) { - 105481: 8b 45 f4 mov -0xc(%ebp),%eax - 105484: c1 e8 09 shr $0x9,%eax - 105487: 89 c2 mov %eax,%edx - 105489: 8b 45 f4 mov -0xc(%ebp),%eax - 10548c: 01 d0 add %edx,%eax - 10548e: 3b 45 0c cmp 0xc(%ebp),%eax - 105491: 72 0a jb 10549d - max_pages /= 2; - 105493: 8b 45 f4 mov -0xc(%ebp),%eax - 105496: d1 e8 shr %eax - 105498: 89 45 f4 mov %eax,-0xc(%ebp) - break; - 10549b: eb 0d jmp 1054aa - } - max_pages *= 2; - 10549d: d1 65 f4 shll -0xc(%ebp) -static void -buddy_init_memmap(struct Page *base, size_t n) { - assert(n > 0); - // Calculate maximum manageable memory zone - unsigned int max_pages = 1; - for (unsigned int i = 1; i < BUDDY_MAX_DEPTH; ++ i) { - 1054a0: 83 45 f0 01 addl $0x1,-0x10(%ebp) - 1054a4: 83 7d f0 1d cmpl $0x1d,-0x10(%ebp) - 1054a8: 76 d7 jbe 105481 - max_pages /= 2; - break; - } - max_pages *= 2; - } - unsigned int longest_array_pages = max_pages / 512 + 1; - 1054aa: 8b 45 f4 mov -0xc(%ebp),%eax - 1054ad: c1 e8 09 shr $0x9,%eax - 1054b0: 83 c0 01 add $0x1,%eax - 1054b3: 89 45 dc mov %eax,-0x24(%ebp) - cprintf("BUDDY: Maximum manageable pages = %d, pages for storing longest = %d\n", - 1054b6: 83 ec 04 sub $0x4,%esp - 1054b9: ff 75 dc pushl -0x24(%ebp) - 1054bc: ff 75 f4 pushl -0xc(%ebp) - 1054bf: 68 4c 7b 10 00 push $0x107b4c - 1054c4: e8 9e ad ff ff call 100267 - 1054c9: 83 c4 10 add $0x10,%esp - max_pages, longest_array_pages); - buddy_longest = (unsigned int*)KADDR(page2pa(base)); - 1054cc: 83 ec 0c sub $0xc,%esp - 1054cf: ff 75 08 pushl 0x8(%ebp) - 1054d2: e8 06 ff ff ff call 1053dd - 1054d7: 83 c4 10 add $0x10,%esp - 1054da: 89 45 d8 mov %eax,-0x28(%ebp) - 1054dd: 8b 45 d8 mov -0x28(%ebp),%eax - 1054e0: c1 e8 0c shr $0xc,%eax - 1054e3: 89 45 d4 mov %eax,-0x2c(%ebp) - 1054e6: a1 c0 a8 11 00 mov 0x11a8c0,%eax - 1054eb: 39 45 d4 cmp %eax,-0x2c(%ebp) - 1054ee: 72 14 jb 105504 - 1054f0: ff 75 d8 pushl -0x28(%ebp) - 1054f3: 68 94 7b 10 00 push $0x107b94 - 1054f8: 6a 36 push $0x36 - 1054fa: 68 37 7b 10 00 push $0x107b37 - 1054ff: e8 c9 ae ff ff call 1003cd <__panic> - 105504: 8b 45 d8 mov -0x28(%ebp),%eax - 105507: 2d 00 00 00 40 sub $0x40000000,%eax - 10550c: a3 4c a9 11 00 mov %eax,0x11a94c - buddy_max_pages = max_pages; - 105511: 8b 45 f4 mov -0xc(%ebp),%eax - 105514: a3 50 a9 11 00 mov %eax,0x11a950 - - unsigned int node_size = max_pages * 2; - 105519: 8b 45 f4 mov -0xc(%ebp),%eax - 10551c: 01 c0 add %eax,%eax - 10551e: 89 45 ec mov %eax,-0x14(%ebp) - for (unsigned int i = 0; i < 2 * max_pages - 1; ++ i) { - 105521: c7 45 e8 00 00 00 00 movl $0x0,-0x18(%ebp) - 105528: eb 2b jmp 105555 - if (IS_POWER_OF_2(i + 1)) node_size /= 2; - 10552a: 8b 45 e8 mov -0x18(%ebp),%eax - 10552d: 83 c0 01 add $0x1,%eax - 105530: 23 45 e8 and -0x18(%ebp),%eax - 105533: 85 c0 test %eax,%eax - 105535: 75 08 jne 10553f - 105537: 8b 45 ec mov -0x14(%ebp),%eax - 10553a: d1 e8 shr %eax - 10553c: 89 45 ec mov %eax,-0x14(%ebp) - buddy_longest[i] = node_size; - 10553f: a1 4c a9 11 00 mov 0x11a94c,%eax - 105544: 8b 55 e8 mov -0x18(%ebp),%edx - 105547: c1 e2 02 shl $0x2,%edx - 10554a: 01 c2 add %eax,%edx - 10554c: 8b 45 ec mov -0x14(%ebp),%eax - 10554f: 89 02 mov %eax,(%edx) - max_pages, longest_array_pages); - buddy_longest = (unsigned int*)KADDR(page2pa(base)); - buddy_max_pages = max_pages; - - unsigned int node_size = max_pages * 2; - for (unsigned int i = 0; i < 2 * max_pages - 1; ++ i) { - 105551: 83 45 e8 01 addl $0x1,-0x18(%ebp) - 105555: 8b 45 f4 mov -0xc(%ebp),%eax - 105558: 01 c0 add %eax,%eax - 10555a: 83 e8 01 sub $0x1,%eax - 10555d: 3b 45 e8 cmp -0x18(%ebp),%eax - 105560: 77 c8 ja 10552a - if (IS_POWER_OF_2(i + 1)) node_size /= 2; - buddy_longest[i] = node_size; - } - - for (int i = 0; i < longest_array_pages; ++ i) { - 105562: c7 45 e4 00 00 00 00 movl $0x0,-0x1c(%ebp) - 105569: eb 34 jmp 10559f - struct Page *p = base + i; - 10556b: 8b 55 e4 mov -0x1c(%ebp),%edx - 10556e: 89 d0 mov %edx,%eax - 105570: c1 e0 02 shl $0x2,%eax - 105573: 01 d0 add %edx,%eax - 105575: c1 e0 02 shl $0x2,%eax - 105578: 89 c2 mov %eax,%edx - 10557a: 8b 45 08 mov 0x8(%ebp),%eax - 10557d: 01 d0 add %edx,%eax - 10557f: 89 45 d0 mov %eax,-0x30(%ebp) - SetPageReserved(p); - 105582: 8b 45 d0 mov -0x30(%ebp),%eax - 105585: 83 c0 04 add $0x4,%eax - 105588: c7 45 c0 00 00 00 00 movl $0x0,-0x40(%ebp) - 10558f: 89 45 bc mov %eax,-0x44(%ebp) - * Note that @nr may be almost arbitrarily large; this function is not - * restricted to acting on a single-word quantity. - * */ -static inline void -set_bit(int nr, volatile void *addr) { - asm volatile ("btsl %1, %0" :"=m" (*(volatile long *)addr) : "Ir" (nr)); - 105592: 8b 45 bc mov -0x44(%ebp),%eax - 105595: 8b 55 c0 mov -0x40(%ebp),%edx - 105598: 0f ab 10 bts %edx,(%eax) - for (unsigned int i = 0; i < 2 * max_pages - 1; ++ i) { - if (IS_POWER_OF_2(i + 1)) node_size /= 2; - buddy_longest[i] = node_size; - } - - for (int i = 0; i < longest_array_pages; ++ i) { - 10559b: 83 45 e4 01 addl $0x1,-0x1c(%ebp) - 10559f: 8b 45 e4 mov -0x1c(%ebp),%eax - 1055a2: 3b 45 dc cmp -0x24(%ebp),%eax - 1055a5: 72 c4 jb 10556b - struct Page *p = base + i; - SetPageReserved(p); - } - - struct Page *p = base + longest_array_pages; - 1055a7: 8b 55 dc mov -0x24(%ebp),%edx - 1055aa: 89 d0 mov %edx,%eax - 1055ac: c1 e0 02 shl $0x2,%eax - 1055af: 01 d0 add %edx,%eax - 1055b1: c1 e0 02 shl $0x2,%eax - 1055b4: 89 c2 mov %eax,%edx - 1055b6: 8b 45 08 mov 0x8(%ebp),%eax - 1055b9: 01 d0 add %edx,%eax - 1055bb: 89 45 e0 mov %eax,-0x20(%ebp) - buddy_allocatable_base = p; - 1055be: 8b 45 e0 mov -0x20(%ebp),%eax - 1055c1: a3 54 a9 11 00 mov %eax,0x11a954 - for (; p != base + n; p ++) { - 1055c6: e9 88 00 00 00 jmp 105653 - assert(PageReserved(p)); - 1055cb: 8b 45 e0 mov -0x20(%ebp),%eax - 1055ce: 83 c0 04 add $0x4,%eax - 1055d1: c7 45 cc 00 00 00 00 movl $0x0,-0x34(%ebp) - 1055d8: 89 45 b8 mov %eax,-0x48(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); - 1055db: 8b 45 b8 mov -0x48(%ebp),%eax - 1055de: 8b 55 cc mov -0x34(%ebp),%edx - 1055e1: 0f a3 10 bt %edx,(%eax) - 1055e4: 19 c0 sbb %eax,%eax - 1055e6: 89 45 b4 mov %eax,-0x4c(%ebp) - return oldbit != 0; - 1055e9: 83 7d b4 00 cmpl $0x0,-0x4c(%ebp) - 1055ed: 0f 95 c0 setne %al - 1055f0: 0f b6 c0 movzbl %al,%eax - 1055f3: 85 c0 test %eax,%eax - 1055f5: 75 16 jne 10560d - 1055f7: 68 b7 7b 10 00 push $0x107bb7 - 1055fc: 68 22 7b 10 00 push $0x107b22 - 105601: 6a 47 push $0x47 - 105603: 68 37 7b 10 00 push $0x107b37 - 105608: e8 c0 ad ff ff call 1003cd <__panic> - ClearPageReserved(p); - 10560d: 8b 45 e0 mov -0x20(%ebp),%eax - 105610: 83 c0 04 add $0x4,%eax - 105613: c7 45 c4 00 00 00 00 movl $0x0,-0x3c(%ebp) - 10561a: 89 45 ac mov %eax,-0x54(%ebp) - * @nr: the bit to clear - * @addr: the address to start counting from - * */ -static inline void -clear_bit(int nr, volatile void *addr) { - asm volatile ("btrl %1, %0" :"=m" (*(volatile long *)addr) : "Ir" (nr)); - 10561d: 8b 45 ac mov -0x54(%ebp),%eax - 105620: 8b 55 c4 mov -0x3c(%ebp),%edx - 105623: 0f b3 10 btr %edx,(%eax) - SetPageProperty(p); - 105626: 8b 45 e0 mov -0x20(%ebp),%eax - 105629: 83 c0 04 add $0x4,%eax - 10562c: c7 45 c8 01 00 00 00 movl $0x1,-0x38(%ebp) - 105633: 89 45 b0 mov %eax,-0x50(%ebp) - * Note that @nr may be almost arbitrarily large; this function is not - * restricted to acting on a single-word quantity. - * */ -static inline void -set_bit(int nr, volatile void *addr) { - asm volatile ("btsl %1, %0" :"=m" (*(volatile long *)addr) : "Ir" (nr)); - 105636: 8b 45 b0 mov -0x50(%ebp),%eax - 105639: 8b 55 c8 mov -0x38(%ebp),%edx - 10563c: 0f ab 10 bts %edx,(%eax) - set_page_ref(p, 0); - 10563f: 83 ec 08 sub $0x8,%esp - 105642: 6a 00 push $0x0 - 105644: ff 75 e0 pushl -0x20(%ebp) - 105647: e8 a4 fd ff ff call 1053f0 - 10564c: 83 c4 10 add $0x10,%esp - SetPageReserved(p); - } - - struct Page *p = base + longest_array_pages; - buddy_allocatable_base = p; - for (; p != base + n; p ++) { - 10564f: 83 45 e0 14 addl $0x14,-0x20(%ebp) - 105653: 8b 55 0c mov 0xc(%ebp),%edx - 105656: 89 d0 mov %edx,%eax - 105658: c1 e0 02 shl $0x2,%eax - 10565b: 01 d0 add %edx,%eax - 10565d: c1 e0 02 shl $0x2,%eax - 105660: 89 c2 mov %eax,%edx - 105662: 8b 45 08 mov 0x8(%ebp),%eax - 105665: 01 d0 add %edx,%eax - 105667: 3b 45 e0 cmp -0x20(%ebp),%eax - 10566a: 0f 85 5b ff ff ff jne 1055cb - assert(PageReserved(p)); - ClearPageReserved(p); - SetPageProperty(p); - set_page_ref(p, 0); - } -} - 105670: 90 nop - 105671: c9 leave - 105672: c3 ret - -00105673 : - -static size_t -buddy_fix_size(size_t before) { - 105673: 55 push %ebp - 105674: 89 e5 mov %esp,%ebp - 105676: 83 ec 10 sub $0x10,%esp - unsigned int ffz = buddy_find_first_zero(before) + 1; - 105679: ff 75 08 pushl 0x8(%ebp) - 10567c: e8 7d fd ff ff call 1053fe - 105681: 83 c4 04 add $0x4,%esp - 105684: 83 c0 01 add $0x1,%eax - 105687: 89 45 fc mov %eax,-0x4(%ebp) - return (1 << ffz); - 10568a: 8b 45 fc mov -0x4(%ebp),%eax - 10568d: ba 01 00 00 00 mov $0x1,%edx - 105692: 89 c1 mov %eax,%ecx - 105694: d3 e2 shl %cl,%edx - 105696: 89 d0 mov %edx,%eax -} - 105698: c9 leave - 105699: c3 ret - -0010569a : - -static struct Page * -buddy_alloc_pages(size_t n) { - 10569a: 55 push %ebp - 10569b: 89 e5 mov %esp,%ebp - 10569d: 53 push %ebx - 10569e: 83 ec 24 sub $0x24,%esp - assert(n > 0); - 1056a1: 83 7d 08 00 cmpl $0x0,0x8(%ebp) - 1056a5: 75 16 jne 1056bd - 1056a7: 68 1c 7b 10 00 push $0x107b1c - 1056ac: 68 22 7b 10 00 push $0x107b22 - 1056b1: 6a 56 push $0x56 - 1056b3: 68 37 7b 10 00 push $0x107b37 - 1056b8: e8 10 ad ff ff call 1003cd <__panic> - if (!IS_POWER_OF_2(n)) { - 1056bd: 8b 45 08 mov 0x8(%ebp),%eax - 1056c0: 83 e8 01 sub $0x1,%eax - 1056c3: 23 45 08 and 0x8(%ebp),%eax - 1056c6: 85 c0 test %eax,%eax - 1056c8: 74 11 je 1056db - n = buddy_fix_size(n); - 1056ca: 83 ec 0c sub $0xc,%esp - 1056cd: ff 75 08 pushl 0x8(%ebp) - 1056d0: e8 9e ff ff ff call 105673 - 1056d5: 83 c4 10 add $0x10,%esp - 1056d8: 89 45 08 mov %eax,0x8(%ebp) - } - if (n > buddy_longest[0]) { - 1056db: a1 4c a9 11 00 mov 0x11a94c,%eax - 1056e0: 8b 00 mov (%eax),%eax - 1056e2: 3b 45 08 cmp 0x8(%ebp),%eax - 1056e5: 73 0a jae 1056f1 - return NULL; - 1056e7: b8 00 00 00 00 mov $0x0,%eax - 1056ec: e9 17 01 00 00 jmp 105808 - } - - // Find the top node for allocation. - // Starting from root - unsigned int index = 0; - 1056f1: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - // The size of current node - unsigned int node_size; - - // go from the root and find the most suitable position - for (node_size = buddy_max_pages; node_size != n; node_size /= 2) { - 1056f8: a1 50 a9 11 00 mov 0x11a950,%eax - 1056fd: 89 45 f0 mov %eax,-0x10(%ebp) - 105700: eb 37 jmp 105739 - if (buddy_longest[LEFT_LEAF(index)] >= n) { - 105702: a1 4c a9 11 00 mov 0x11a94c,%eax - 105707: 8b 55 f4 mov -0xc(%ebp),%edx - 10570a: c1 e2 03 shl $0x3,%edx - 10570d: 83 c2 04 add $0x4,%edx - 105710: 01 d0 add %edx,%eax - 105712: 8b 00 mov (%eax),%eax - 105714: 3b 45 08 cmp 0x8(%ebp),%eax - 105717: 72 0d jb 105726 - index = LEFT_LEAF(index); - 105719: 8b 45 f4 mov -0xc(%ebp),%eax - 10571c: 01 c0 add %eax,%eax - 10571e: 83 c0 01 add $0x1,%eax - 105721: 89 45 f4 mov %eax,-0xc(%ebp) - 105724: eb 0b jmp 105731 - } else { - index = RIGHT_LEAF(index); - 105726: 8b 45 f4 mov -0xc(%ebp),%eax - 105729: 83 c0 01 add $0x1,%eax - 10572c: 01 c0 add %eax,%eax - 10572e: 89 45 f4 mov %eax,-0xc(%ebp) - unsigned int index = 0; - // The size of current node - unsigned int node_size; - - // go from the root and find the most suitable position - for (node_size = buddy_max_pages; node_size != n; node_size /= 2) { - 105731: 8b 45 f0 mov -0x10(%ebp),%eax - 105734: d1 e8 shr %eax - 105736: 89 45 f0 mov %eax,-0x10(%ebp) - 105739: 8b 45 f0 mov -0x10(%ebp),%eax - 10573c: 3b 45 08 cmp 0x8(%ebp),%eax - 10573f: 75 c1 jne 105702 - index = RIGHT_LEAF(index); - } - } - - // Allocate all pages under this node. - buddy_longest[index] = 0; - 105741: a1 4c a9 11 00 mov 0x11a94c,%eax - 105746: 8b 55 f4 mov -0xc(%ebp),%edx - 105749: c1 e2 02 shl $0x2,%edx - 10574c: 01 d0 add %edx,%eax - 10574e: c7 00 00 00 00 00 movl $0x0,(%eax) - struct Page* new_page = buddy_node_index_to_page(index, node_size); - 105754: 83 ec 08 sub $0x8,%esp - 105757: ff 75 f0 pushl -0x10(%ebp) - 10575a: ff 75 f4 pushl -0xc(%ebp) - 10575d: e8 bd fc ff ff call 10541f - 105762: 83 c4 10 add $0x10,%esp - 105765: 89 45 e8 mov %eax,-0x18(%ebp) - for (struct Page* p = new_page; p != (new_page + node_size); ++ p) { - 105768: 8b 45 e8 mov -0x18(%ebp),%eax - 10576b: 89 45 ec mov %eax,-0x14(%ebp) - 10576e: eb 2d jmp 10579d - // Set new allocated page ref = 0; - set_page_ref(p, 0); - 105770: 83 ec 08 sub $0x8,%esp - 105773: 6a 00 push $0x0 - 105775: ff 75 ec pushl -0x14(%ebp) - 105778: e8 73 fc ff ff call 1053f0 - 10577d: 83 c4 10 add $0x10,%esp - // Set property = not free. - ClearPageProperty(p); - 105780: 8b 45 ec mov -0x14(%ebp),%eax - 105783: 83 c0 04 add $0x4,%eax - 105786: c7 45 e4 01 00 00 00 movl $0x1,-0x1c(%ebp) - 10578d: 89 45 e0 mov %eax,-0x20(%ebp) - * @nr: the bit to clear - * @addr: the address to start counting from - * */ -static inline void -clear_bit(int nr, volatile void *addr) { - asm volatile ("btrl %1, %0" :"=m" (*(volatile long *)addr) : "Ir" (nr)); - 105790: 8b 45 e0 mov -0x20(%ebp),%eax - 105793: 8b 55 e4 mov -0x1c(%ebp),%edx - 105796: 0f b3 10 btr %edx,(%eax) - } - - // Allocate all pages under this node. - buddy_longest[index] = 0; - struct Page* new_page = buddy_node_index_to_page(index, node_size); - for (struct Page* p = new_page; p != (new_page + node_size); ++ p) { - 105799: 83 45 ec 14 addl $0x14,-0x14(%ebp) - 10579d: 8b 55 f0 mov -0x10(%ebp),%edx - 1057a0: 89 d0 mov %edx,%eax - 1057a2: c1 e0 02 shl $0x2,%eax - 1057a5: 01 d0 add %edx,%eax - 1057a7: c1 e0 02 shl $0x2,%eax - 1057aa: 89 c2 mov %eax,%edx - 1057ac: 8b 45 e8 mov -0x18(%ebp),%eax - 1057af: 01 d0 add %edx,%eax - 1057b1: 3b 45 ec cmp -0x14(%ebp),%eax - 1057b4: 75 ba jne 105770 - // Set property = not free. - ClearPageProperty(p); - } - - // Update parent longest value because this node is used. - while (index) { - 1057b6: eb 47 jmp 1057ff - index = PARENT(index); - 1057b8: 8b 45 f4 mov -0xc(%ebp),%eax - 1057bb: 83 c0 01 add $0x1,%eax - 1057be: d1 e8 shr %eax - 1057c0: 83 e8 01 sub $0x1,%eax - 1057c3: 89 45 f4 mov %eax,-0xc(%ebp) - buddy_longest[index] = - 1057c6: a1 4c a9 11 00 mov 0x11a94c,%eax - 1057cb: 8b 55 f4 mov -0xc(%ebp),%edx - 1057ce: c1 e2 02 shl $0x2,%edx - 1057d1: 8d 0c 10 lea (%eax,%edx,1),%ecx - MAX(buddy_longest[LEFT_LEAF(index)], buddy_longest[RIGHT_LEAF(index)]); - 1057d4: a1 4c a9 11 00 mov 0x11a94c,%eax - 1057d9: 8b 55 f4 mov -0xc(%ebp),%edx - 1057dc: 83 c2 01 add $0x1,%edx - 1057df: c1 e2 03 shl $0x3,%edx - 1057e2: 01 d0 add %edx,%eax - 1057e4: 8b 10 mov (%eax),%edx - 1057e6: a1 4c a9 11 00 mov 0x11a94c,%eax - 1057eb: 8b 5d f4 mov -0xc(%ebp),%ebx - 1057ee: c1 e3 03 shl $0x3,%ebx - 1057f1: 83 c3 04 add $0x4,%ebx - 1057f4: 01 d8 add %ebx,%eax - 1057f6: 8b 00 mov (%eax),%eax - 1057f8: 39 c2 cmp %eax,%edx - 1057fa: 0f 43 c2 cmovae %edx,%eax - } - - // Update parent longest value because this node is used. - while (index) { - index = PARENT(index); - buddy_longest[index] = - 1057fd: 89 01 mov %eax,(%ecx) - // Set property = not free. - ClearPageProperty(p); - } - - // Update parent longest value because this node is used. - while (index) { - 1057ff: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) - 105803: 75 b3 jne 1057b8 - index = PARENT(index); - buddy_longest[index] = - MAX(buddy_longest[LEFT_LEAF(index)], buddy_longest[RIGHT_LEAF(index)]); - } - return new_page; - 105805: 8b 45 e8 mov -0x18(%ebp),%eax -} - 105808: 8b 5d fc mov -0x4(%ebp),%ebx - 10580b: c9 leave - 10580c: c3 ret - -0010580d : - -static void -buddy_free_pages(struct Page *base, size_t n) { - 10580d: 55 push %ebp - 10580e: 89 e5 mov %esp,%ebp - 105810: 83 ec 48 sub $0x48,%esp - assert(n > 0); - 105813: 83 7d 0c 00 cmpl $0x0,0xc(%ebp) - 105817: 75 19 jne 105832 - 105819: 68 1c 7b 10 00 push $0x107b1c - 10581e: 68 22 7b 10 00 push $0x107b22 - 105823: 68 82 00 00 00 push $0x82 - 105828: 68 37 7b 10 00 push $0x107b37 - 10582d: e8 9b ab ff ff call 1003cd <__panic> - // Find the base-correponded node and its size; - unsigned int index = (unsigned int)(base - buddy_allocatable_base) + buddy_max_pages - 1; - 105832: 8b 45 08 mov 0x8(%ebp),%eax - 105835: 8b 15 54 a9 11 00 mov 0x11a954,%edx - 10583b: 29 d0 sub %edx,%eax - 10583d: c1 f8 02 sar $0x2,%eax - 105840: 69 c0 cd cc cc cc imul $0xcccccccd,%eax,%eax - 105846: 89 c2 mov %eax,%edx - 105848: a1 50 a9 11 00 mov 0x11a950,%eax - 10584d: 01 d0 add %edx,%eax - 10584f: 83 e8 01 sub $0x1,%eax - 105852: 89 45 f4 mov %eax,-0xc(%ebp) - unsigned int node_size = 1; - 105855: c7 45 f0 01 00 00 00 movl $0x1,-0x10(%ebp) - - // Starting from the leaf and find the first (lowest) node has longest = 0; - while (buddy_longest[index] != 0) { - 10585c: eb 30 jmp 10588e - node_size *= 2; - 10585e: d1 65 f0 shll -0x10(%ebp) - // cannot find the corresponding node for the base. - assert(index != 0); - 105861: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) - 105865: 75 19 jne 105880 - 105867: 68 c7 7b 10 00 push $0x107bc7 - 10586c: 68 22 7b 10 00 push $0x107b22 - 105871: 68 8b 00 00 00 push $0x8b - 105876: 68 37 7b 10 00 push $0x107b37 - 10587b: e8 4d ab ff ff call 1003cd <__panic> - index = PARENT(index); - 105880: 8b 45 f4 mov -0xc(%ebp),%eax - 105883: 83 c0 01 add $0x1,%eax - 105886: d1 e8 shr %eax - 105888: 83 e8 01 sub $0x1,%eax - 10588b: 89 45 f4 mov %eax,-0xc(%ebp) - // Find the base-correponded node and its size; - unsigned int index = (unsigned int)(base - buddy_allocatable_base) + buddy_max_pages - 1; - unsigned int node_size = 1; - - // Starting from the leaf and find the first (lowest) node has longest = 0; - while (buddy_longest[index] != 0) { - 10588e: a1 4c a9 11 00 mov 0x11a94c,%eax - 105893: 8b 55 f4 mov -0xc(%ebp),%edx - 105896: c1 e2 02 shl $0x2,%edx - 105899: 01 d0 add %edx,%eax - 10589b: 8b 00 mov (%eax),%eax - 10589d: 85 c0 test %eax,%eax - 10589f: 75 bd jne 10585e - - // NOTICE: Be careful when releasing memory if the following line is commented. - // assert(node_size == n); - - // Free the pages. - struct Page *p = base; - 1058a1: 8b 45 08 mov 0x8(%ebp),%eax - 1058a4: 89 45 ec mov %eax,-0x14(%ebp) - for (; p != base + n; p ++) { - 1058a7: e9 9e 00 00 00 jmp 10594a - assert(!PageReserved(p) && !PageProperty(p)); - 1058ac: 8b 45 ec mov -0x14(%ebp),%eax - 1058af: 83 c0 04 add $0x4,%eax - 1058b2: c7 45 d8 00 00 00 00 movl $0x0,-0x28(%ebp) - 1058b9: 89 45 d4 mov %eax,-0x2c(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); - 1058bc: 8b 45 d4 mov -0x2c(%ebp),%eax - 1058bf: 8b 55 d8 mov -0x28(%ebp),%edx - 1058c2: 0f a3 10 bt %edx,(%eax) - 1058c5: 19 c0 sbb %eax,%eax - 1058c7: 89 45 d0 mov %eax,-0x30(%ebp) - return oldbit != 0; - 1058ca: 83 7d d0 00 cmpl $0x0,-0x30(%ebp) - 1058ce: 0f 95 c0 setne %al - 1058d1: 0f b6 c0 movzbl %al,%eax - 1058d4: 85 c0 test %eax,%eax - 1058d6: 75 2c jne 105904 - 1058d8: 8b 45 ec mov -0x14(%ebp),%eax - 1058db: 83 c0 04 add $0x4,%eax - 1058de: c7 45 e8 01 00 00 00 movl $0x1,-0x18(%ebp) - 1058e5: 89 45 cc mov %eax,-0x34(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); - 1058e8: 8b 45 cc mov -0x34(%ebp),%eax - 1058eb: 8b 55 e8 mov -0x18(%ebp),%edx - 1058ee: 0f a3 10 bt %edx,(%eax) - 1058f1: 19 c0 sbb %eax,%eax - 1058f3: 89 45 c8 mov %eax,-0x38(%ebp) - return oldbit != 0; - 1058f6: 83 7d c8 00 cmpl $0x0,-0x38(%ebp) - 1058fa: 0f 95 c0 setne %al - 1058fd: 0f b6 c0 movzbl %al,%eax - 105900: 85 c0 test %eax,%eax - 105902: 74 19 je 10591d - 105904: 68 d4 7b 10 00 push $0x107bd4 - 105909: 68 22 7b 10 00 push $0x107b22 - 10590e: 68 95 00 00 00 push $0x95 - 105913: 68 37 7b 10 00 push $0x107b37 - 105918: e8 b0 aa ff ff call 1003cd <__panic> - SetPageProperty(p); - 10591d: 8b 45 ec mov -0x14(%ebp),%eax - 105920: 83 c0 04 add $0x4,%eax - 105923: c7 45 e4 01 00 00 00 movl $0x1,-0x1c(%ebp) - 10592a: 89 45 c4 mov %eax,-0x3c(%ebp) - * Note that @nr may be almost arbitrarily large; this function is not - * restricted to acting on a single-word quantity. - * */ -static inline void -set_bit(int nr, volatile void *addr) { - asm volatile ("btsl %1, %0" :"=m" (*(volatile long *)addr) : "Ir" (nr)); - 10592d: 8b 45 c4 mov -0x3c(%ebp),%eax - 105930: 8b 55 e4 mov -0x1c(%ebp),%edx - 105933: 0f ab 10 bts %edx,(%eax) - set_page_ref(p, 0); - 105936: 83 ec 08 sub $0x8,%esp - 105939: 6a 00 push $0x0 - 10593b: ff 75 ec pushl -0x14(%ebp) - 10593e: e8 ad fa ff ff call 1053f0 - 105943: 83 c4 10 add $0x10,%esp - // NOTICE: Be careful when releasing memory if the following line is commented. - // assert(node_size == n); - - // Free the pages. - struct Page *p = base; - for (; p != base + n; p ++) { - 105946: 83 45 ec 14 addl $0x14,-0x14(%ebp) - 10594a: 8b 55 0c mov 0xc(%ebp),%edx - 10594d: 89 d0 mov %edx,%eax - 10594f: c1 e0 02 shl $0x2,%eax - 105952: 01 d0 add %edx,%eax - 105954: c1 e0 02 shl $0x2,%eax - 105957: 89 c2 mov %eax,%edx - 105959: 8b 45 08 mov 0x8(%ebp),%eax - 10595c: 01 d0 add %edx,%eax - 10595e: 3b 45 ec cmp -0x14(%ebp),%eax - 105961: 0f 85 45 ff ff ff jne 1058ac - SetPageProperty(p); - set_page_ref(p, 0); - } - - // Update longest. - buddy_longest[index] = node_size; - 105967: a1 4c a9 11 00 mov 0x11a94c,%eax - 10596c: 8b 55 f4 mov -0xc(%ebp),%edx - 10596f: c1 e2 02 shl $0x2,%edx - 105972: 01 c2 add %eax,%edx - 105974: 8b 45 f0 mov -0x10(%ebp),%eax - 105977: 89 02 mov %eax,(%edx) - while (index != 0) { - 105979: eb 75 jmp 1059f0 - // Starting from this node, try to merge all the way to parent. - // The condition for merging is (left_child + right_child = node_size) - index = PARENT(index); - 10597b: 8b 45 f4 mov -0xc(%ebp),%eax - 10597e: 83 c0 01 add $0x1,%eax - 105981: d1 e8 shr %eax - 105983: 83 e8 01 sub $0x1,%eax - 105986: 89 45 f4 mov %eax,-0xc(%ebp) - node_size *= 2; - 105989: d1 65 f0 shll -0x10(%ebp) - unsigned int left_longest = buddy_longest[LEFT_LEAF(index)]; - 10598c: a1 4c a9 11 00 mov 0x11a94c,%eax - 105991: 8b 55 f4 mov -0xc(%ebp),%edx - 105994: c1 e2 03 shl $0x3,%edx - 105997: 83 c2 04 add $0x4,%edx - 10599a: 01 d0 add %edx,%eax - 10599c: 8b 00 mov (%eax),%eax - 10599e: 89 45 e0 mov %eax,-0x20(%ebp) - unsigned int right_longest = buddy_longest[RIGHT_LEAF(index)]; - 1059a1: a1 4c a9 11 00 mov 0x11a94c,%eax - 1059a6: 8b 55 f4 mov -0xc(%ebp),%edx - 1059a9: 83 c2 01 add $0x1,%edx - 1059ac: c1 e2 03 shl $0x3,%edx - 1059af: 01 d0 add %edx,%eax - 1059b1: 8b 00 mov (%eax),%eax - 1059b3: 89 45 dc mov %eax,-0x24(%ebp) - - if (left_longest + right_longest == node_size) { - 1059b6: 8b 55 e0 mov -0x20(%ebp),%edx - 1059b9: 8b 45 dc mov -0x24(%ebp),%eax - 1059bc: 01 d0 add %edx,%eax - 1059be: 3b 45 f0 cmp -0x10(%ebp),%eax - 1059c1: 75 14 jne 1059d7 - buddy_longest[index] = node_size; - 1059c3: a1 4c a9 11 00 mov 0x11a94c,%eax - 1059c8: 8b 55 f4 mov -0xc(%ebp),%edx - 1059cb: c1 e2 02 shl $0x2,%edx - 1059ce: 01 c2 add %eax,%edx - 1059d0: 8b 45 f0 mov -0x10(%ebp),%eax - 1059d3: 89 02 mov %eax,(%edx) - 1059d5: eb 19 jmp 1059f0 - } else { - // update because the child is updated. - buddy_longest[index] = MAX(left_longest, right_longest); - 1059d7: a1 4c a9 11 00 mov 0x11a94c,%eax - 1059dc: 8b 55 f4 mov -0xc(%ebp),%edx - 1059df: c1 e2 02 shl $0x2,%edx - 1059e2: 01 c2 add %eax,%edx - 1059e4: 8b 45 e0 mov -0x20(%ebp),%eax - 1059e7: 39 45 dc cmp %eax,-0x24(%ebp) - 1059ea: 0f 43 45 dc cmovae -0x24(%ebp),%eax - 1059ee: 89 02 mov %eax,(%edx) - set_page_ref(p, 0); - } - - // Update longest. - buddy_longest[index] = node_size; - while (index != 0) { - 1059f0: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) - 1059f4: 75 85 jne 10597b - } else { - // update because the child is updated. - buddy_longest[index] = MAX(left_longest, right_longest); - } - } -} - 1059f6: 90 nop - 1059f7: c9 leave - 1059f8: c3 ret - -001059f9 : - -static size_t -buddy_nr_free_pages(void) { - 1059f9: 55 push %ebp - 1059fa: 89 e5 mov %esp,%ebp - return buddy_longest[0]; - 1059fc: a1 4c a9 11 00 mov 0x11a94c,%eax - 105a01: 8b 00 mov (%eax),%eax -} - 105a03: 5d pop %ebp - 105a04: c3 ret - -00105a05 : - -static void -buddy_check(void) { - 105a05: 55 push %ebp - 105a06: 89 e5 mov %esp,%ebp - 105a08: 81 ec 98 00 00 00 sub $0x98,%esp - int all_pages = nr_free_pages(); - 105a0e: e8 cf d3 ff ff call 102de2 - 105a13: 89 45 f4 mov %eax,-0xc(%ebp) - struct Page* p0, *p1, *p2, *p3, *p4; - assert(alloc_pages(all_pages + 1) == NULL); - 105a16: 8b 45 f4 mov -0xc(%ebp),%eax - 105a19: 83 c0 01 add $0x1,%eax - 105a1c: 83 ec 0c sub $0xc,%esp - 105a1f: 50 push %eax - 105a20: e8 4a d3 ff ff call 102d6f - 105a25: 83 c4 10 add $0x10,%esp - 105a28: 85 c0 test %eax,%eax - 105a2a: 74 19 je 105a45 - 105a2c: 68 fc 7b 10 00 push $0x107bfc - 105a31: 68 22 7b 10 00 push $0x107b22 - 105a36: 68 b6 00 00 00 push $0xb6 - 105a3b: 68 37 7b 10 00 push $0x107b37 - 105a40: e8 88 a9 ff ff call 1003cd <__panic> - - p0 = alloc_pages(1); - 105a45: 83 ec 0c sub $0xc,%esp - 105a48: 6a 01 push $0x1 - 105a4a: e8 20 d3 ff ff call 102d6f - 105a4f: 83 c4 10 add $0x10,%esp - 105a52: 89 45 f0 mov %eax,-0x10(%ebp) - assert(p0 != NULL); - 105a55: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) - 105a59: 75 19 jne 105a74 - 105a5b: 68 1f 7c 10 00 push $0x107c1f - 105a60: 68 22 7b 10 00 push $0x107b22 - 105a65: 68 b9 00 00 00 push $0xb9 - 105a6a: 68 37 7b 10 00 push $0x107b37 - 105a6f: e8 59 a9 ff ff call 1003cd <__panic> - p1 = alloc_pages(2); - 105a74: 83 ec 0c sub $0xc,%esp - 105a77: 6a 02 push $0x2 - 105a79: e8 f1 d2 ff ff call 102d6f - 105a7e: 83 c4 10 add $0x10,%esp - 105a81: 89 45 ec mov %eax,-0x14(%ebp) - assert(p1 == p0 + 2); - 105a84: 8b 45 f0 mov -0x10(%ebp),%eax - 105a87: 83 c0 28 add $0x28,%eax - 105a8a: 3b 45 ec cmp -0x14(%ebp),%eax - 105a8d: 74 19 je 105aa8 - 105a8f: 68 2a 7c 10 00 push $0x107c2a - 105a94: 68 22 7b 10 00 push $0x107b22 - 105a99: 68 bb 00 00 00 push $0xbb - 105a9e: 68 37 7b 10 00 push $0x107b37 - 105aa3: e8 25 a9 ff ff call 1003cd <__panic> - assert(!PageReserved(p0) && !PageReserved(p1)); - 105aa8: 8b 45 f0 mov -0x10(%ebp),%eax - 105aab: 83 c0 04 add $0x4,%eax - 105aae: c7 45 bc 00 00 00 00 movl $0x0,-0x44(%ebp) - 105ab5: 89 45 b8 mov %eax,-0x48(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); - 105ab8: 8b 45 b8 mov -0x48(%ebp),%eax - 105abb: 8b 55 bc mov -0x44(%ebp),%edx - 105abe: 0f a3 10 bt %edx,(%eax) - 105ac1: 19 c0 sbb %eax,%eax - 105ac3: 89 45 b4 mov %eax,-0x4c(%ebp) - return oldbit != 0; - 105ac6: 83 7d b4 00 cmpl $0x0,-0x4c(%ebp) - 105aca: 0f 95 c0 setne %al - 105acd: 0f b6 c0 movzbl %al,%eax - 105ad0: 85 c0 test %eax,%eax - 105ad2: 75 2c jne 105b00 - 105ad4: 8b 45 ec mov -0x14(%ebp),%eax - 105ad7: 83 c0 04 add $0x4,%eax - 105ada: c7 45 e8 00 00 00 00 movl $0x0,-0x18(%ebp) - 105ae1: 89 45 b0 mov %eax,-0x50(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); - 105ae4: 8b 45 b0 mov -0x50(%ebp),%eax - 105ae7: 8b 55 e8 mov -0x18(%ebp),%edx - 105aea: 0f a3 10 bt %edx,(%eax) - 105aed: 19 c0 sbb %eax,%eax - 105aef: 89 45 ac mov %eax,-0x54(%ebp) - return oldbit != 0; - 105af2: 83 7d ac 00 cmpl $0x0,-0x54(%ebp) - 105af6: 0f 95 c0 setne %al - 105af9: 0f b6 c0 movzbl %al,%eax - 105afc: 85 c0 test %eax,%eax - 105afe: 74 19 je 105b19 - 105b00: 68 38 7c 10 00 push $0x107c38 - 105b05: 68 22 7b 10 00 push $0x107b22 - 105b0a: 68 bc 00 00 00 push $0xbc - 105b0f: 68 37 7b 10 00 push $0x107b37 - 105b14: e8 b4 a8 ff ff call 1003cd <__panic> - assert(!PageProperty(p0) && !PageProperty(p1)); - 105b19: 8b 45 f0 mov -0x10(%ebp),%eax - 105b1c: 83 c0 04 add $0x4,%eax - 105b1f: c7 45 e4 01 00 00 00 movl $0x1,-0x1c(%ebp) - 105b26: 89 45 a8 mov %eax,-0x58(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); - 105b29: 8b 45 a8 mov -0x58(%ebp),%eax - 105b2c: 8b 55 e4 mov -0x1c(%ebp),%edx - 105b2f: 0f a3 10 bt %edx,(%eax) - 105b32: 19 c0 sbb %eax,%eax - 105b34: 89 45 a4 mov %eax,-0x5c(%ebp) - return oldbit != 0; - 105b37: 83 7d a4 00 cmpl $0x0,-0x5c(%ebp) - 105b3b: 0f 95 c0 setne %al - 105b3e: 0f b6 c0 movzbl %al,%eax - 105b41: 85 c0 test %eax,%eax - 105b43: 75 2c jne 105b71 - 105b45: 8b 45 ec mov -0x14(%ebp),%eax - 105b48: 83 c0 04 add $0x4,%eax - 105b4b: c7 45 e0 01 00 00 00 movl $0x1,-0x20(%ebp) - 105b52: 89 45 a0 mov %eax,-0x60(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); - 105b55: 8b 45 a0 mov -0x60(%ebp),%eax - 105b58: 8b 55 e0 mov -0x20(%ebp),%edx - 105b5b: 0f a3 10 bt %edx,(%eax) - 105b5e: 19 c0 sbb %eax,%eax - 105b60: 89 45 9c mov %eax,-0x64(%ebp) - return oldbit != 0; - 105b63: 83 7d 9c 00 cmpl $0x0,-0x64(%ebp) - 105b67: 0f 95 c0 setne %al - 105b6a: 0f b6 c0 movzbl %al,%eax - 105b6d: 85 c0 test %eax,%eax - 105b6f: 74 19 je 105b8a - 105b71: 68 60 7c 10 00 push $0x107c60 - 105b76: 68 22 7b 10 00 push $0x107b22 - 105b7b: 68 bd 00 00 00 push $0xbd - 105b80: 68 37 7b 10 00 push $0x107b37 - 105b85: e8 43 a8 ff ff call 1003cd <__panic> - - p2 = alloc_pages(1); - 105b8a: 83 ec 0c sub $0xc,%esp - 105b8d: 6a 01 push $0x1 - 105b8f: e8 db d1 ff ff call 102d6f - 105b94: 83 c4 10 add $0x10,%esp - 105b97: 89 45 d8 mov %eax,-0x28(%ebp) - assert(p2 == p0 + 1); - 105b9a: 8b 45 f0 mov -0x10(%ebp),%eax - 105b9d: 83 c0 14 add $0x14,%eax - 105ba0: 3b 45 d8 cmp -0x28(%ebp),%eax - 105ba3: 74 19 je 105bbe - 105ba5: 68 87 7c 10 00 push $0x107c87 - 105baa: 68 22 7b 10 00 push $0x107b22 - 105baf: 68 c0 00 00 00 push $0xc0 - 105bb4: 68 37 7b 10 00 push $0x107b37 - 105bb9: e8 0f a8 ff ff call 1003cd <__panic> - - p3 = alloc_pages(2); - 105bbe: 83 ec 0c sub $0xc,%esp - 105bc1: 6a 02 push $0x2 - 105bc3: e8 a7 d1 ff ff call 102d6f - 105bc8: 83 c4 10 add $0x10,%esp - 105bcb: 89 45 d4 mov %eax,-0x2c(%ebp) - assert(p3 == p0 + 4); - 105bce: 8b 45 f0 mov -0x10(%ebp),%eax - 105bd1: 83 c0 50 add $0x50,%eax - 105bd4: 3b 45 d4 cmp -0x2c(%ebp),%eax - 105bd7: 74 19 je 105bf2 - 105bd9: 68 94 7c 10 00 push $0x107c94 - 105bde: 68 22 7b 10 00 push $0x107b22 - 105be3: 68 c3 00 00 00 push $0xc3 - 105be8: 68 37 7b 10 00 push $0x107b37 - 105bed: e8 db a7 ff ff call 1003cd <__panic> - assert(!PageProperty(p3) && !PageProperty(p3 + 1) && PageProperty(p3 + 2)); - 105bf2: 8b 45 d4 mov -0x2c(%ebp),%eax - 105bf5: 83 c0 04 add $0x4,%eax - 105bf8: c7 45 dc 01 00 00 00 movl $0x1,-0x24(%ebp) - 105bff: 89 45 98 mov %eax,-0x68(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); - 105c02: 8b 45 98 mov -0x68(%ebp),%eax - 105c05: 8b 55 dc mov -0x24(%ebp),%edx - 105c08: 0f a3 10 bt %edx,(%eax) - 105c0b: 19 c0 sbb %eax,%eax - 105c0d: 89 45 94 mov %eax,-0x6c(%ebp) - return oldbit != 0; - 105c10: 83 7d 94 00 cmpl $0x0,-0x6c(%ebp) - 105c14: 0f 95 c0 setne %al - 105c17: 0f b6 c0 movzbl %al,%eax - 105c1a: 85 c0 test %eax,%eax - 105c1c: 75 5e jne 105c7c - 105c1e: 8b 45 d4 mov -0x2c(%ebp),%eax - 105c21: 83 c0 14 add $0x14,%eax - 105c24: 83 c0 04 add $0x4,%eax - 105c27: c7 45 d0 01 00 00 00 movl $0x1,-0x30(%ebp) - 105c2e: 89 45 90 mov %eax,-0x70(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); - 105c31: 8b 45 90 mov -0x70(%ebp),%eax - 105c34: 8b 55 d0 mov -0x30(%ebp),%edx - 105c37: 0f a3 10 bt %edx,(%eax) - 105c3a: 19 c0 sbb %eax,%eax - 105c3c: 89 45 8c mov %eax,-0x74(%ebp) - return oldbit != 0; - 105c3f: 83 7d 8c 00 cmpl $0x0,-0x74(%ebp) - 105c43: 0f 95 c0 setne %al - 105c46: 0f b6 c0 movzbl %al,%eax - 105c49: 85 c0 test %eax,%eax - 105c4b: 75 2f jne 105c7c - 105c4d: 8b 45 d4 mov -0x2c(%ebp),%eax - 105c50: 83 c0 28 add $0x28,%eax - 105c53: 83 c0 04 add $0x4,%eax - 105c56: c7 45 cc 01 00 00 00 movl $0x1,-0x34(%ebp) - 105c5d: 89 45 88 mov %eax,-0x78(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); - 105c60: 8b 45 88 mov -0x78(%ebp),%eax - 105c63: 8b 55 cc mov -0x34(%ebp),%edx - 105c66: 0f a3 10 bt %edx,(%eax) - 105c69: 19 c0 sbb %eax,%eax - 105c6b: 89 45 84 mov %eax,-0x7c(%ebp) - return oldbit != 0; - 105c6e: 83 7d 84 00 cmpl $0x0,-0x7c(%ebp) - 105c72: 0f 95 c0 setne %al - 105c75: 0f b6 c0 movzbl %al,%eax - 105c78: 85 c0 test %eax,%eax - 105c7a: 75 19 jne 105c95 - 105c7c: 68 a4 7c 10 00 push $0x107ca4 - 105c81: 68 22 7b 10 00 push $0x107b22 - 105c86: 68 c4 00 00 00 push $0xc4 - 105c8b: 68 37 7b 10 00 push $0x107b37 - 105c90: e8 38 a7 ff ff call 1003cd <__panic> - - free_pages(p1, 2); - 105c95: 83 ec 08 sub $0x8,%esp - 105c98: 6a 02 push $0x2 - 105c9a: ff 75 ec pushl -0x14(%ebp) - 105c9d: e8 0b d1 ff ff call 102dad - 105ca2: 83 c4 10 add $0x10,%esp - assert(PageProperty(p1) && PageProperty(p1 + 1)); - 105ca5: 8b 45 ec mov -0x14(%ebp),%eax - 105ca8: 83 c0 04 add $0x4,%eax - 105cab: c7 45 c8 01 00 00 00 movl $0x1,-0x38(%ebp) - 105cb2: 89 45 80 mov %eax,-0x80(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); - 105cb5: 8b 45 80 mov -0x80(%ebp),%eax - 105cb8: 8b 55 c8 mov -0x38(%ebp),%edx - 105cbb: 0f a3 10 bt %edx,(%eax) - 105cbe: 19 c0 sbb %eax,%eax - 105cc0: 89 85 7c ff ff ff mov %eax,-0x84(%ebp) - return oldbit != 0; - 105cc6: 83 bd 7c ff ff ff 00 cmpl $0x0,-0x84(%ebp) - 105ccd: 0f 95 c0 setne %al - 105cd0: 0f b6 c0 movzbl %al,%eax - 105cd3: 85 c0 test %eax,%eax - 105cd5: 74 3b je 105d12 - 105cd7: 8b 45 ec mov -0x14(%ebp),%eax - 105cda: 83 c0 14 add $0x14,%eax - 105cdd: 83 c0 04 add $0x4,%eax - 105ce0: c7 45 c4 01 00 00 00 movl $0x1,-0x3c(%ebp) - 105ce7: 89 85 78 ff ff ff mov %eax,-0x88(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); - 105ced: 8b 85 78 ff ff ff mov -0x88(%ebp),%eax - 105cf3: 8b 55 c4 mov -0x3c(%ebp),%edx - 105cf6: 0f a3 10 bt %edx,(%eax) - 105cf9: 19 c0 sbb %eax,%eax - 105cfb: 89 85 74 ff ff ff mov %eax,-0x8c(%ebp) - return oldbit != 0; - 105d01: 83 bd 74 ff ff ff 00 cmpl $0x0,-0x8c(%ebp) - 105d08: 0f 95 c0 setne %al - 105d0b: 0f b6 c0 movzbl %al,%eax - 105d0e: 85 c0 test %eax,%eax - 105d10: 75 19 jne 105d2b - 105d12: 68 e8 7c 10 00 push $0x107ce8 - 105d17: 68 22 7b 10 00 push $0x107b22 - 105d1c: 68 c7 00 00 00 push $0xc7 - 105d21: 68 37 7b 10 00 push $0x107b37 - 105d26: e8 a2 a6 ff ff call 1003cd <__panic> - assert(p1->ref == 0); - 105d2b: 8b 45 ec mov -0x14(%ebp),%eax - 105d2e: 8b 00 mov (%eax),%eax - 105d30: 85 c0 test %eax,%eax - 105d32: 74 19 je 105d4d - 105d34: 68 11 7d 10 00 push $0x107d11 - 105d39: 68 22 7b 10 00 push $0x107b22 - 105d3e: 68 c8 00 00 00 push $0xc8 - 105d43: 68 37 7b 10 00 push $0x107b37 - 105d48: e8 80 a6 ff ff call 1003cd <__panic> - - free_pages(p0, 1); - 105d4d: 83 ec 08 sub $0x8,%esp - 105d50: 6a 01 push $0x1 - 105d52: ff 75 f0 pushl -0x10(%ebp) - 105d55: e8 53 d0 ff ff call 102dad - 105d5a: 83 c4 10 add $0x10,%esp - free_pages(p2, 1); - 105d5d: 83 ec 08 sub $0x8,%esp - 105d60: 6a 01 push $0x1 - 105d62: ff 75 d8 pushl -0x28(%ebp) - 105d65: e8 43 d0 ff ff call 102dad - 105d6a: 83 c4 10 add $0x10,%esp - - p4 = alloc_pages(2); - 105d6d: 83 ec 0c sub $0xc,%esp - 105d70: 6a 02 push $0x2 - 105d72: e8 f8 cf ff ff call 102d6f - 105d77: 83 c4 10 add $0x10,%esp - 105d7a: 89 45 c0 mov %eax,-0x40(%ebp) - assert(p4 == p0); - 105d7d: 8b 45 c0 mov -0x40(%ebp),%eax - 105d80: 3b 45 f0 cmp -0x10(%ebp),%eax - 105d83: 74 19 je 105d9e - 105d85: 68 1e 7d 10 00 push $0x107d1e - 105d8a: 68 22 7b 10 00 push $0x107b22 - 105d8f: 68 ce 00 00 00 push $0xce - 105d94: 68 37 7b 10 00 push $0x107b37 - 105d99: e8 2f a6 ff ff call 1003cd <__panic> - free_pages(p4, 2); - 105d9e: 83 ec 08 sub $0x8,%esp - 105da1: 6a 02 push $0x2 - 105da3: ff 75 c0 pushl -0x40(%ebp) - 105da6: e8 02 d0 ff ff call 102dad - 105dab: 83 c4 10 add $0x10,%esp - assert((*(p4 + 1)).ref == 0); - 105dae: 8b 45 c0 mov -0x40(%ebp),%eax - 105db1: 83 c0 14 add $0x14,%eax - 105db4: 8b 00 mov (%eax),%eax - 105db6: 85 c0 test %eax,%eax - 105db8: 74 19 je 105dd3 - 105dba: 68 27 7d 10 00 push $0x107d27 - 105dbf: 68 22 7b 10 00 push $0x107b22 - 105dc4: 68 d0 00 00 00 push $0xd0 - 105dc9: 68 37 7b 10 00 push $0x107b37 - 105dce: e8 fa a5 ff ff call 1003cd <__panic> - - assert(nr_free_pages() == all_pages / 2); - 105dd3: e8 0a d0 ff ff call 102de2 - 105dd8: 89 c1 mov %eax,%ecx - 105dda: 8b 45 f4 mov -0xc(%ebp),%eax - 105ddd: 89 c2 mov %eax,%edx - 105ddf: c1 ea 1f shr $0x1f,%edx - 105de2: 01 d0 add %edx,%eax - 105de4: d1 f8 sar %eax - 105de6: 39 c1 cmp %eax,%ecx - 105de8: 74 19 je 105e03 - 105dea: 68 3c 7d 10 00 push $0x107d3c - 105def: 68 22 7b 10 00 push $0x107b22 - 105df4: 68 d2 00 00 00 push $0xd2 - 105df9: 68 37 7b 10 00 push $0x107b37 - 105dfe: e8 ca a5 ff ff call 1003cd <__panic> - - free_pages(p3, 2); - 105e03: 83 ec 08 sub $0x8,%esp - 105e06: 6a 02 push $0x2 - 105e08: ff 75 d4 pushl -0x2c(%ebp) - 105e0b: e8 9d cf ff ff call 102dad - 105e10: 83 c4 10 add $0x10,%esp - - p1 = alloc_pages(33); - 105e13: 83 ec 0c sub $0xc,%esp - 105e16: 6a 21 push $0x21 - 105e18: e8 52 cf ff ff call 102d6f - 105e1d: 83 c4 10 add $0x10,%esp - 105e20: 89 45 ec mov %eax,-0x14(%ebp) - free_pages(p1, 64); - 105e23: 83 ec 08 sub $0x8,%esp - 105e26: 6a 40 push $0x40 - 105e28: ff 75 ec pushl -0x14(%ebp) - 105e2b: e8 7d cf ff ff call 102dad - 105e30: 83 c4 10 add $0x10,%esp -} - 105e33: 90 nop - 105e34: c9 leave - 105e35: c3 ret - -00105e36 : - * @s: the input string - * - * The strlen() function returns the length of string @s. - * */ -size_t -strlen(const char *s) { - 105e36: 55 push %ebp - 105e37: 89 e5 mov %esp,%ebp - 105e39: 83 ec 10 sub $0x10,%esp - size_t cnt = 0; - 105e3c: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp) - while (*s ++ != '\0') { - 105e43: eb 04 jmp 105e49 - cnt ++; - 105e45: 83 45 fc 01 addl $0x1,-0x4(%ebp) - * The strlen() function returns the length of string @s. - * */ -size_t -strlen(const char *s) { - size_t cnt = 0; - while (*s ++ != '\0') { - 105e49: 8b 45 08 mov 0x8(%ebp),%eax - 105e4c: 8d 50 01 lea 0x1(%eax),%edx - 105e4f: 89 55 08 mov %edx,0x8(%ebp) - 105e52: 0f b6 00 movzbl (%eax),%eax - 105e55: 84 c0 test %al,%al - 105e57: 75 ec jne 105e45 - cnt ++; - } - return cnt; - 105e59: 8b 45 fc mov -0x4(%ebp),%eax -} - 105e5c: c9 leave - 105e5d: c3 ret - -00105e5e : - * The return value is strlen(s), if that is less than @len, or - * @len if there is no '\0' character among the first @len characters - * pointed by @s. - * */ -size_t -strnlen(const char *s, size_t len) { - 105e5e: 55 push %ebp - 105e5f: 89 e5 mov %esp,%ebp - 105e61: 83 ec 10 sub $0x10,%esp - size_t cnt = 0; - 105e64: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp) - while (cnt < len && *s ++ != '\0') { - 105e6b: eb 04 jmp 105e71 - cnt ++; - 105e6d: 83 45 fc 01 addl $0x1,-0x4(%ebp) - * pointed by @s. - * */ -size_t -strnlen(const char *s, size_t len) { - size_t cnt = 0; - while (cnt < len && *s ++ != '\0') { - 105e71: 8b 45 fc mov -0x4(%ebp),%eax - 105e74: 3b 45 0c cmp 0xc(%ebp),%eax - 105e77: 73 10 jae 105e89 - 105e79: 8b 45 08 mov 0x8(%ebp),%eax - 105e7c: 8d 50 01 lea 0x1(%eax),%edx - 105e7f: 89 55 08 mov %edx,0x8(%ebp) - 105e82: 0f b6 00 movzbl (%eax),%eax - 105e85: 84 c0 test %al,%al - 105e87: 75 e4 jne 105e6d - cnt ++; - } - return cnt; - 105e89: 8b 45 fc mov -0x4(%ebp),%eax -} - 105e8c: c9 leave - 105e8d: c3 ret - -00105e8e : - * To avoid overflows, the size of array pointed by @dst should be long enough to - * contain the same string as @src (including the terminating null character), and - * should not overlap in memory with @src. - * */ -char * -strcpy(char *dst, const char *src) { - 105e8e: 55 push %ebp - 105e8f: 89 e5 mov %esp,%ebp - 105e91: 57 push %edi - 105e92: 56 push %esi - 105e93: 83 ec 20 sub $0x20,%esp - 105e96: 8b 45 08 mov 0x8(%ebp),%eax - 105e99: 89 45 f4 mov %eax,-0xc(%ebp) - 105e9c: 8b 45 0c mov 0xc(%ebp),%eax - 105e9f: 89 45 f0 mov %eax,-0x10(%ebp) -#ifndef __HAVE_ARCH_STRCPY -#define __HAVE_ARCH_STRCPY -static inline char * -__strcpy(char *dst, const char *src) { - int d0, d1, d2; - asm volatile ( - 105ea2: 8b 55 f0 mov -0x10(%ebp),%edx - 105ea5: 8b 45 f4 mov -0xc(%ebp),%eax - 105ea8: 89 d1 mov %edx,%ecx - 105eaa: 89 c2 mov %eax,%edx - 105eac: 89 ce mov %ecx,%esi - 105eae: 89 d7 mov %edx,%edi - 105eb0: ac lods %ds:(%esi),%al - 105eb1: aa stos %al,%es:(%edi) - 105eb2: 84 c0 test %al,%al - 105eb4: 75 fa jne 105eb0 - 105eb6: 89 fa mov %edi,%edx - 105eb8: 89 f1 mov %esi,%ecx - 105eba: 89 4d ec mov %ecx,-0x14(%ebp) - 105ebd: 89 55 e8 mov %edx,-0x18(%ebp) - 105ec0: 89 45 e4 mov %eax,-0x1c(%ebp) - "stosb;" - "testb %%al, %%al;" - "jne 1b;" - : "=&S" (d0), "=&D" (d1), "=&a" (d2) - : "0" (src), "1" (dst) : "memory"); - return dst; - 105ec3: 8b 45 f4 mov -0xc(%ebp),%eax -#ifdef __HAVE_ARCH_STRCPY - return __strcpy(dst, src); - 105ec6: 90 nop - char *p = dst; - while ((*p ++ = *src ++) != '\0') - /* nothing */; - return dst; -#endif /* __HAVE_ARCH_STRCPY */ -} - 105ec7: 83 c4 20 add $0x20,%esp - 105eca: 5e pop %esi - 105ecb: 5f pop %edi - 105ecc: 5d pop %ebp - 105ecd: c3 ret - -00105ece : - * @len: maximum number of characters to be copied from @src - * - * The return value is @dst - * */ -char * -strncpy(char *dst, const char *src, size_t len) { - 105ece: 55 push %ebp - 105ecf: 89 e5 mov %esp,%ebp - 105ed1: 83 ec 10 sub $0x10,%esp - char *p = dst; - 105ed4: 8b 45 08 mov 0x8(%ebp),%eax - 105ed7: 89 45 fc mov %eax,-0x4(%ebp) - while (len > 0) { - 105eda: eb 21 jmp 105efd - if ((*p = *src) != '\0') { - 105edc: 8b 45 0c mov 0xc(%ebp),%eax - 105edf: 0f b6 10 movzbl (%eax),%edx - 105ee2: 8b 45 fc mov -0x4(%ebp),%eax - 105ee5: 88 10 mov %dl,(%eax) - 105ee7: 8b 45 fc mov -0x4(%ebp),%eax - 105eea: 0f b6 00 movzbl (%eax),%eax - 105eed: 84 c0 test %al,%al - 105eef: 74 04 je 105ef5 - src ++; - 105ef1: 83 45 0c 01 addl $0x1,0xc(%ebp) - } - p ++, len --; - 105ef5: 83 45 fc 01 addl $0x1,-0x4(%ebp) - 105ef9: 83 6d 10 01 subl $0x1,0x10(%ebp) - * The return value is @dst - * */ -char * -strncpy(char *dst, const char *src, size_t len) { - char *p = dst; - while (len > 0) { - 105efd: 83 7d 10 00 cmpl $0x0,0x10(%ebp) - 105f01: 75 d9 jne 105edc - if ((*p = *src) != '\0') { - src ++; - } - p ++, len --; - } - return dst; - 105f03: 8b 45 08 mov 0x8(%ebp),%eax -} - 105f06: c9 leave - 105f07: c3 ret - -00105f08 : - * - A value greater than zero indicates that the first character that does - * not match has a greater value in @s1 than in @s2; - * - And a value less than zero indicates the opposite. - * */ -int -strcmp(const char *s1, const char *s2) { - 105f08: 55 push %ebp - 105f09: 89 e5 mov %esp,%ebp - 105f0b: 57 push %edi - 105f0c: 56 push %esi - 105f0d: 83 ec 20 sub $0x20,%esp - 105f10: 8b 45 08 mov 0x8(%ebp),%eax - 105f13: 89 45 f4 mov %eax,-0xc(%ebp) - 105f16: 8b 45 0c mov 0xc(%ebp),%eax - 105f19: 89 45 f0 mov %eax,-0x10(%ebp) -#ifndef __HAVE_ARCH_STRCMP -#define __HAVE_ARCH_STRCMP -static inline int -__strcmp(const char *s1, const char *s2) { - int d0, d1, ret; - asm volatile ( - 105f1c: 8b 55 f4 mov -0xc(%ebp),%edx - 105f1f: 8b 45 f0 mov -0x10(%ebp),%eax - 105f22: 89 d1 mov %edx,%ecx - 105f24: 89 c2 mov %eax,%edx - 105f26: 89 ce mov %ecx,%esi - 105f28: 89 d7 mov %edx,%edi - 105f2a: ac lods %ds:(%esi),%al - 105f2b: ae scas %es:(%edi),%al - 105f2c: 75 08 jne 105f36 - 105f2e: 84 c0 test %al,%al - 105f30: 75 f8 jne 105f2a - 105f32: 31 c0 xor %eax,%eax - 105f34: eb 04 jmp 105f3a - 105f36: 19 c0 sbb %eax,%eax - 105f38: 0c 01 or $0x1,%al - 105f3a: 89 fa mov %edi,%edx - 105f3c: 89 f1 mov %esi,%ecx - 105f3e: 89 45 ec mov %eax,-0x14(%ebp) - 105f41: 89 4d e8 mov %ecx,-0x18(%ebp) - 105f44: 89 55 e4 mov %edx,-0x1c(%ebp) - "orb $1, %%al;" - "3:" - : "=a" (ret), "=&S" (d0), "=&D" (d1) - : "1" (s1), "2" (s2) - : "memory"); - return ret; - 105f47: 8b 45 ec mov -0x14(%ebp),%eax -#ifdef __HAVE_ARCH_STRCMP - return __strcmp(s1, s2); - 105f4a: 90 nop - while (*s1 != '\0' && *s1 == *s2) { - s1 ++, s2 ++; - } - return (int)((unsigned char)*s1 - (unsigned char)*s2); -#endif /* __HAVE_ARCH_STRCMP */ -} - 105f4b: 83 c4 20 add $0x20,%esp - 105f4e: 5e pop %esi - 105f4f: 5f pop %edi - 105f50: 5d pop %ebp - 105f51: c3 ret - -00105f52 : - * they are equal to each other, it continues with the following pairs until - * the characters differ, until a terminating null-character is reached, or - * until @n characters match in both strings, whichever happens first. - * */ -int -strncmp(const char *s1, const char *s2, size_t n) { - 105f52: 55 push %ebp - 105f53: 89 e5 mov %esp,%ebp - while (n > 0 && *s1 != '\0' && *s1 == *s2) { - 105f55: eb 0c jmp 105f63 - n --, s1 ++, s2 ++; - 105f57: 83 6d 10 01 subl $0x1,0x10(%ebp) - 105f5b: 83 45 08 01 addl $0x1,0x8(%ebp) - 105f5f: 83 45 0c 01 addl $0x1,0xc(%ebp) - * the characters differ, until a terminating null-character is reached, or - * until @n characters match in both strings, whichever happens first. - * */ -int -strncmp(const char *s1, const char *s2, size_t n) { - while (n > 0 && *s1 != '\0' && *s1 == *s2) { - 105f63: 83 7d 10 00 cmpl $0x0,0x10(%ebp) - 105f67: 74 1a je 105f83 - 105f69: 8b 45 08 mov 0x8(%ebp),%eax - 105f6c: 0f b6 00 movzbl (%eax),%eax - 105f6f: 84 c0 test %al,%al - 105f71: 74 10 je 105f83 - 105f73: 8b 45 08 mov 0x8(%ebp),%eax - 105f76: 0f b6 10 movzbl (%eax),%edx - 105f79: 8b 45 0c mov 0xc(%ebp),%eax - 105f7c: 0f b6 00 movzbl (%eax),%eax - 105f7f: 38 c2 cmp %al,%dl - 105f81: 74 d4 je 105f57 - n --, s1 ++, s2 ++; - } - return (n == 0) ? 0 : (int)((unsigned char)*s1 - (unsigned char)*s2); - 105f83: 83 7d 10 00 cmpl $0x0,0x10(%ebp) - 105f87: 74 18 je 105fa1 - 105f89: 8b 45 08 mov 0x8(%ebp),%eax - 105f8c: 0f b6 00 movzbl (%eax),%eax - 105f8f: 0f b6 d0 movzbl %al,%edx - 105f92: 8b 45 0c mov 0xc(%ebp),%eax - 105f95: 0f b6 00 movzbl (%eax),%eax - 105f98: 0f b6 c0 movzbl %al,%eax - 105f9b: 29 c2 sub %eax,%edx - 105f9d: 89 d0 mov %edx,%eax - 105f9f: eb 05 jmp 105fa6 - 105fa1: b8 00 00 00 00 mov $0x0,%eax -} - 105fa6: 5d pop %ebp - 105fa7: c3 ret - -00105fa8 : - * - * The strchr() function returns a pointer to the first occurrence of - * character in @s. If the value is not found, the function returns 'NULL'. - * */ -char * -strchr(const char *s, char c) { - 105fa8: 55 push %ebp - 105fa9: 89 e5 mov %esp,%ebp - 105fab: 83 ec 04 sub $0x4,%esp - 105fae: 8b 45 0c mov 0xc(%ebp),%eax - 105fb1: 88 45 fc mov %al,-0x4(%ebp) - while (*s != '\0') { - 105fb4: eb 14 jmp 105fca - if (*s == c) { - 105fb6: 8b 45 08 mov 0x8(%ebp),%eax - 105fb9: 0f b6 00 movzbl (%eax),%eax - 105fbc: 3a 45 fc cmp -0x4(%ebp),%al - 105fbf: 75 05 jne 105fc6 - return (char *)s; - 105fc1: 8b 45 08 mov 0x8(%ebp),%eax - 105fc4: eb 13 jmp 105fd9 - } - s ++; - 105fc6: 83 45 08 01 addl $0x1,0x8(%ebp) - * The strchr() function returns a pointer to the first occurrence of - * character in @s. If the value is not found, the function returns 'NULL'. - * */ -char * -strchr(const char *s, char c) { - while (*s != '\0') { - 105fca: 8b 45 08 mov 0x8(%ebp),%eax - 105fcd: 0f b6 00 movzbl (%eax),%eax - 105fd0: 84 c0 test %al,%al - 105fd2: 75 e2 jne 105fb6 - if (*s == c) { - return (char *)s; - } - s ++; - } - return NULL; - 105fd4: b8 00 00 00 00 mov $0x0,%eax -} - 105fd9: c9 leave - 105fda: c3 ret - -00105fdb : - * The strfind() function is like strchr() except that if @c is - * not found in @s, then it returns a pointer to the null byte at the - * end of @s, rather than 'NULL'. - * */ -char * -strfind(const char *s, char c) { - 105fdb: 55 push %ebp - 105fdc: 89 e5 mov %esp,%ebp - 105fde: 83 ec 04 sub $0x4,%esp - 105fe1: 8b 45 0c mov 0xc(%ebp),%eax - 105fe4: 88 45 fc mov %al,-0x4(%ebp) - while (*s != '\0') { - 105fe7: eb 0f jmp 105ff8 - if (*s == c) { - 105fe9: 8b 45 08 mov 0x8(%ebp),%eax - 105fec: 0f b6 00 movzbl (%eax),%eax - 105fef: 3a 45 fc cmp -0x4(%ebp),%al - 105ff2: 74 10 je 106004 - break; - } - s ++; - 105ff4: 83 45 08 01 addl $0x1,0x8(%ebp) - * not found in @s, then it returns a pointer to the null byte at the - * end of @s, rather than 'NULL'. - * */ -char * -strfind(const char *s, char c) { - while (*s != '\0') { - 105ff8: 8b 45 08 mov 0x8(%ebp),%eax - 105ffb: 0f b6 00 movzbl (%eax),%eax - 105ffe: 84 c0 test %al,%al - 106000: 75 e7 jne 105fe9 - 106002: eb 01 jmp 106005 - if (*s == c) { - break; - 106004: 90 nop - } - s ++; - } - return (char *)s; - 106005: 8b 45 08 mov 0x8(%ebp),%eax -} - 106008: c9 leave - 106009: c3 ret - -0010600a : - * an optional "0x" or "0X" prefix. - * - * The strtol() function returns the converted integral number as a long int value. - * */ -long -strtol(const char *s, char **endptr, int base) { - 10600a: 55 push %ebp - 10600b: 89 e5 mov %esp,%ebp - 10600d: 83 ec 10 sub $0x10,%esp - int neg = 0; - 106010: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp) - long val = 0; - 106017: c7 45 f8 00 00 00 00 movl $0x0,-0x8(%ebp) - - // gobble initial whitespace - while (*s == ' ' || *s == '\t') { - 10601e: eb 04 jmp 106024 - s ++; - 106020: 83 45 08 01 addl $0x1,0x8(%ebp) -strtol(const char *s, char **endptr, int base) { - int neg = 0; - long val = 0; - - // gobble initial whitespace - while (*s == ' ' || *s == '\t') { - 106024: 8b 45 08 mov 0x8(%ebp),%eax - 106027: 0f b6 00 movzbl (%eax),%eax - 10602a: 3c 20 cmp $0x20,%al - 10602c: 74 f2 je 106020 - 10602e: 8b 45 08 mov 0x8(%ebp),%eax - 106031: 0f b6 00 movzbl (%eax),%eax - 106034: 3c 09 cmp $0x9,%al - 106036: 74 e8 je 106020 - s ++; - } - - // plus/minus sign - if (*s == '+') { - 106038: 8b 45 08 mov 0x8(%ebp),%eax - 10603b: 0f b6 00 movzbl (%eax),%eax - 10603e: 3c 2b cmp $0x2b,%al - 106040: 75 06 jne 106048 - s ++; - 106042: 83 45 08 01 addl $0x1,0x8(%ebp) - 106046: eb 15 jmp 10605d - } - else if (*s == '-') { - 106048: 8b 45 08 mov 0x8(%ebp),%eax - 10604b: 0f b6 00 movzbl (%eax),%eax - 10604e: 3c 2d cmp $0x2d,%al - 106050: 75 0b jne 10605d - s ++, neg = 1; - 106052: 83 45 08 01 addl $0x1,0x8(%ebp) - 106056: c7 45 fc 01 00 00 00 movl $0x1,-0x4(%ebp) - } - - // hex or octal base prefix - if ((base == 0 || base == 16) && (s[0] == '0' && s[1] == 'x')) { - 10605d: 83 7d 10 00 cmpl $0x0,0x10(%ebp) - 106061: 74 06 je 106069 - 106063: 83 7d 10 10 cmpl $0x10,0x10(%ebp) - 106067: 75 24 jne 10608d - 106069: 8b 45 08 mov 0x8(%ebp),%eax - 10606c: 0f b6 00 movzbl (%eax),%eax - 10606f: 3c 30 cmp $0x30,%al - 106071: 75 1a jne 10608d - 106073: 8b 45 08 mov 0x8(%ebp),%eax - 106076: 83 c0 01 add $0x1,%eax - 106079: 0f b6 00 movzbl (%eax),%eax - 10607c: 3c 78 cmp $0x78,%al - 10607e: 75 0d jne 10608d - s += 2, base = 16; - 106080: 83 45 08 02 addl $0x2,0x8(%ebp) - 106084: c7 45 10 10 00 00 00 movl $0x10,0x10(%ebp) - 10608b: eb 2a jmp 1060b7 - } - else if (base == 0 && s[0] == '0') { - 10608d: 83 7d 10 00 cmpl $0x0,0x10(%ebp) - 106091: 75 17 jne 1060aa - 106093: 8b 45 08 mov 0x8(%ebp),%eax - 106096: 0f b6 00 movzbl (%eax),%eax - 106099: 3c 30 cmp $0x30,%al - 10609b: 75 0d jne 1060aa - s ++, base = 8; - 10609d: 83 45 08 01 addl $0x1,0x8(%ebp) - 1060a1: c7 45 10 08 00 00 00 movl $0x8,0x10(%ebp) - 1060a8: eb 0d jmp 1060b7 - } - else if (base == 0) { - 1060aa: 83 7d 10 00 cmpl $0x0,0x10(%ebp) - 1060ae: 75 07 jne 1060b7 - base = 10; - 1060b0: c7 45 10 0a 00 00 00 movl $0xa,0x10(%ebp) - - // digits - while (1) { - int dig; - - if (*s >= '0' && *s <= '9') { - 1060b7: 8b 45 08 mov 0x8(%ebp),%eax - 1060ba: 0f b6 00 movzbl (%eax),%eax - 1060bd: 3c 2f cmp $0x2f,%al - 1060bf: 7e 1b jle 1060dc - 1060c1: 8b 45 08 mov 0x8(%ebp),%eax - 1060c4: 0f b6 00 movzbl (%eax),%eax - 1060c7: 3c 39 cmp $0x39,%al - 1060c9: 7f 11 jg 1060dc - dig = *s - '0'; - 1060cb: 8b 45 08 mov 0x8(%ebp),%eax - 1060ce: 0f b6 00 movzbl (%eax),%eax - 1060d1: 0f be c0 movsbl %al,%eax - 1060d4: 83 e8 30 sub $0x30,%eax - 1060d7: 89 45 f4 mov %eax,-0xc(%ebp) - 1060da: eb 48 jmp 106124 - } - else if (*s >= 'a' && *s <= 'z') { - 1060dc: 8b 45 08 mov 0x8(%ebp),%eax - 1060df: 0f b6 00 movzbl (%eax),%eax - 1060e2: 3c 60 cmp $0x60,%al - 1060e4: 7e 1b jle 106101 - 1060e6: 8b 45 08 mov 0x8(%ebp),%eax - 1060e9: 0f b6 00 movzbl (%eax),%eax - 1060ec: 3c 7a cmp $0x7a,%al - 1060ee: 7f 11 jg 106101 - dig = *s - 'a' + 10; - 1060f0: 8b 45 08 mov 0x8(%ebp),%eax - 1060f3: 0f b6 00 movzbl (%eax),%eax - 1060f6: 0f be c0 movsbl %al,%eax - 1060f9: 83 e8 57 sub $0x57,%eax - 1060fc: 89 45 f4 mov %eax,-0xc(%ebp) - 1060ff: eb 23 jmp 106124 - } - else if (*s >= 'A' && *s <= 'Z') { - 106101: 8b 45 08 mov 0x8(%ebp),%eax - 106104: 0f b6 00 movzbl (%eax),%eax - 106107: 3c 40 cmp $0x40,%al - 106109: 7e 3c jle 106147 - 10610b: 8b 45 08 mov 0x8(%ebp),%eax - 10610e: 0f b6 00 movzbl (%eax),%eax - 106111: 3c 5a cmp $0x5a,%al - 106113: 7f 32 jg 106147 - dig = *s - 'A' + 10; - 106115: 8b 45 08 mov 0x8(%ebp),%eax - 106118: 0f b6 00 movzbl (%eax),%eax - 10611b: 0f be c0 movsbl %al,%eax - 10611e: 83 e8 37 sub $0x37,%eax - 106121: 89 45 f4 mov %eax,-0xc(%ebp) - } - else { - break; - } - if (dig >= base) { - 106124: 8b 45 f4 mov -0xc(%ebp),%eax - 106127: 3b 45 10 cmp 0x10(%ebp),%eax - 10612a: 7d 1a jge 106146 - break; - } - s ++, val = (val * base) + dig; - 10612c: 83 45 08 01 addl $0x1,0x8(%ebp) - 106130: 8b 45 f8 mov -0x8(%ebp),%eax - 106133: 0f af 45 10 imul 0x10(%ebp),%eax - 106137: 89 c2 mov %eax,%edx - 106139: 8b 45 f4 mov -0xc(%ebp),%eax - 10613c: 01 d0 add %edx,%eax - 10613e: 89 45 f8 mov %eax,-0x8(%ebp) - // we don't properly detect overflow! - } - 106141: e9 71 ff ff ff jmp 1060b7 - } - else { - break; - } - if (dig >= base) { - break; - 106146: 90 nop - } - s ++, val = (val * base) + dig; - // we don't properly detect overflow! - } - - if (endptr) { - 106147: 83 7d 0c 00 cmpl $0x0,0xc(%ebp) - 10614b: 74 08 je 106155 - *endptr = (char *) s; - 10614d: 8b 45 0c mov 0xc(%ebp),%eax - 106150: 8b 55 08 mov 0x8(%ebp),%edx - 106153: 89 10 mov %edx,(%eax) - } - return (neg ? -val : val); - 106155: 83 7d fc 00 cmpl $0x0,-0x4(%ebp) - 106159: 74 07 je 106162 - 10615b: 8b 45 f8 mov -0x8(%ebp),%eax - 10615e: f7 d8 neg %eax - 106160: eb 03 jmp 106165 - 106162: 8b 45 f8 mov -0x8(%ebp),%eax -} - 106165: c9 leave - 106166: c3 ret - -00106167 : - * @n: number of bytes to be set to the value - * - * The memset() function returns @s. - * */ -void * -memset(void *s, char c, size_t n) { - 106167: 55 push %ebp - 106168: 89 e5 mov %esp,%ebp - 10616a: 57 push %edi - 10616b: 83 ec 24 sub $0x24,%esp - 10616e: 8b 45 0c mov 0xc(%ebp),%eax - 106171: 88 45 d8 mov %al,-0x28(%ebp) -#ifdef __HAVE_ARCH_MEMSET - return __memset(s, c, n); - 106174: 0f be 45 d8 movsbl -0x28(%ebp),%eax - 106178: 8b 55 08 mov 0x8(%ebp),%edx - 10617b: 89 55 f8 mov %edx,-0x8(%ebp) - 10617e: 88 45 f7 mov %al,-0x9(%ebp) - 106181: 8b 45 10 mov 0x10(%ebp),%eax - 106184: 89 45 f0 mov %eax,-0x10(%ebp) -#ifndef __HAVE_ARCH_MEMSET -#define __HAVE_ARCH_MEMSET -static inline void * -__memset(void *s, char c, size_t n) { - int d0, d1; - asm volatile ( - 106187: 8b 4d f0 mov -0x10(%ebp),%ecx - 10618a: 0f b6 45 f7 movzbl -0x9(%ebp),%eax - 10618e: 8b 55 f8 mov -0x8(%ebp),%edx - 106191: 89 d7 mov %edx,%edi - 106193: f3 aa rep stos %al,%es:(%edi) - 106195: 89 fa mov %edi,%edx - 106197: 89 4d ec mov %ecx,-0x14(%ebp) - 10619a: 89 55 e8 mov %edx,-0x18(%ebp) - "rep; stosb;" - : "=&c" (d0), "=&D" (d1) - : "0" (n), "a" (c), "1" (s) - : "memory"); - return s; - 10619d: 8b 45 f8 mov -0x8(%ebp),%eax - 1061a0: 90 nop - while (n -- > 0) { - *p ++ = c; - } - return s; -#endif /* __HAVE_ARCH_MEMSET */ -} - 1061a1: 83 c4 24 add $0x24,%esp - 1061a4: 5f pop %edi - 1061a5: 5d pop %ebp - 1061a6: c3 ret - -001061a7 : - * @n: number of bytes to copy - * - * The memmove() function returns @dst. - * */ -void * -memmove(void *dst, const void *src, size_t n) { - 1061a7: 55 push %ebp - 1061a8: 89 e5 mov %esp,%ebp - 1061aa: 57 push %edi - 1061ab: 56 push %esi - 1061ac: 53 push %ebx - 1061ad: 83 ec 30 sub $0x30,%esp - 1061b0: 8b 45 08 mov 0x8(%ebp),%eax - 1061b3: 89 45 f0 mov %eax,-0x10(%ebp) - 1061b6: 8b 45 0c mov 0xc(%ebp),%eax - 1061b9: 89 45 ec mov %eax,-0x14(%ebp) - 1061bc: 8b 45 10 mov 0x10(%ebp),%eax - 1061bf: 89 45 e8 mov %eax,-0x18(%ebp) - -#ifndef __HAVE_ARCH_MEMMOVE -#define __HAVE_ARCH_MEMMOVE -static inline void * -__memmove(void *dst, const void *src, size_t n) { - if (dst < src) { - 1061c2: 8b 45 f0 mov -0x10(%ebp),%eax - 1061c5: 3b 45 ec cmp -0x14(%ebp),%eax - 1061c8: 73 42 jae 10620c - 1061ca: 8b 45 f0 mov -0x10(%ebp),%eax - 1061cd: 89 45 e4 mov %eax,-0x1c(%ebp) - 1061d0: 8b 45 ec mov -0x14(%ebp),%eax - 1061d3: 89 45 e0 mov %eax,-0x20(%ebp) - 1061d6: 8b 45 e8 mov -0x18(%ebp),%eax - 1061d9: 89 45 dc mov %eax,-0x24(%ebp) - "andl $3, %%ecx;" - "jz 1f;" - "rep; movsb;" - "1:" - : "=&c" (d0), "=&D" (d1), "=&S" (d2) - : "0" (n / 4), "g" (n), "1" (dst), "2" (src) - 1061dc: 8b 45 dc mov -0x24(%ebp),%eax - 1061df: c1 e8 02 shr $0x2,%eax - 1061e2: 89 c1 mov %eax,%ecx -#ifndef __HAVE_ARCH_MEMCPY -#define __HAVE_ARCH_MEMCPY -static inline void * -__memcpy(void *dst, const void *src, size_t n) { - int d0, d1, d2; - asm volatile ( - 1061e4: 8b 55 e4 mov -0x1c(%ebp),%edx - 1061e7: 8b 45 e0 mov -0x20(%ebp),%eax - 1061ea: 89 d7 mov %edx,%edi - 1061ec: 89 c6 mov %eax,%esi - 1061ee: f3 a5 rep movsl %ds:(%esi),%es:(%edi) - 1061f0: 8b 4d dc mov -0x24(%ebp),%ecx - 1061f3: 83 e1 03 and $0x3,%ecx - 1061f6: 74 02 je 1061fa - 1061f8: f3 a4 rep movsb %ds:(%esi),%es:(%edi) - 1061fa: 89 f0 mov %esi,%eax - 1061fc: 89 fa mov %edi,%edx - 1061fe: 89 4d d8 mov %ecx,-0x28(%ebp) - 106201: 89 55 d4 mov %edx,-0x2c(%ebp) - 106204: 89 45 d0 mov %eax,-0x30(%ebp) - "rep; movsb;" - "1:" - : "=&c" (d0), "=&D" (d1), "=&S" (d2) - : "0" (n / 4), "g" (n), "1" (dst), "2" (src) - : "memory"); - return dst; - 106207: 8b 45 e4 mov -0x1c(%ebp),%eax -#ifdef __HAVE_ARCH_MEMMOVE - return __memmove(dst, src, n); - 10620a: eb 36 jmp 106242 - asm volatile ( - "std;" - "rep; movsb;" - "cld;" - : "=&c" (d0), "=&S" (d1), "=&D" (d2) - : "0" (n), "1" (n - 1 + src), "2" (n - 1 + dst) - 10620c: 8b 45 e8 mov -0x18(%ebp),%eax - 10620f: 8d 50 ff lea -0x1(%eax),%edx - 106212: 8b 45 ec mov -0x14(%ebp),%eax - 106215: 01 c2 add %eax,%edx - 106217: 8b 45 e8 mov -0x18(%ebp),%eax - 10621a: 8d 48 ff lea -0x1(%eax),%ecx - 10621d: 8b 45 f0 mov -0x10(%ebp),%eax - 106220: 8d 1c 01 lea (%ecx,%eax,1),%ebx -__memmove(void *dst, const void *src, size_t n) { - if (dst < src) { - return __memcpy(dst, src, n); - } - int d0, d1, d2; - asm volatile ( - 106223: 8b 45 e8 mov -0x18(%ebp),%eax - 106226: 89 c1 mov %eax,%ecx - 106228: 89 d8 mov %ebx,%eax - 10622a: 89 d6 mov %edx,%esi - 10622c: 89 c7 mov %eax,%edi - 10622e: fd std - 10622f: f3 a4 rep movsb %ds:(%esi),%es:(%edi) - 106231: fc cld - 106232: 89 f8 mov %edi,%eax - 106234: 89 f2 mov %esi,%edx - 106236: 89 4d cc mov %ecx,-0x34(%ebp) - 106239: 89 55 c8 mov %edx,-0x38(%ebp) - 10623c: 89 45 c4 mov %eax,-0x3c(%ebp) - "rep; movsb;" - "cld;" - : "=&c" (d0), "=&S" (d1), "=&D" (d2) - : "0" (n), "1" (n - 1 + src), "2" (n - 1 + dst) - : "memory"); - return dst; - 10623f: 8b 45 f0 mov -0x10(%ebp),%eax - *d ++ = *s ++; - } - } - return dst; -#endif /* __HAVE_ARCH_MEMMOVE */ -} - 106242: 83 c4 30 add $0x30,%esp - 106245: 5b pop %ebx - 106246: 5e pop %esi - 106247: 5f pop %edi - 106248: 5d pop %ebp - 106249: c3 ret - -0010624a : - * it always copies exactly @n bytes. To avoid overflows, the size of arrays pointed - * by both @src and @dst, should be at least @n bytes, and should not overlap - * (for overlapping memory area, memmove is a safer approach). - * */ -void * -memcpy(void *dst, const void *src, size_t n) { - 10624a: 55 push %ebp - 10624b: 89 e5 mov %esp,%ebp - 10624d: 57 push %edi - 10624e: 56 push %esi - 10624f: 83 ec 20 sub $0x20,%esp - 106252: 8b 45 08 mov 0x8(%ebp),%eax - 106255: 89 45 f4 mov %eax,-0xc(%ebp) - 106258: 8b 45 0c mov 0xc(%ebp),%eax - 10625b: 89 45 f0 mov %eax,-0x10(%ebp) - 10625e: 8b 45 10 mov 0x10(%ebp),%eax - 106261: 89 45 ec mov %eax,-0x14(%ebp) - "andl $3, %%ecx;" - "jz 1f;" - "rep; movsb;" - "1:" - : "=&c" (d0), "=&D" (d1), "=&S" (d2) - : "0" (n / 4), "g" (n), "1" (dst), "2" (src) - 106264: 8b 45 ec mov -0x14(%ebp),%eax - 106267: c1 e8 02 shr $0x2,%eax - 10626a: 89 c1 mov %eax,%ecx -#ifndef __HAVE_ARCH_MEMCPY -#define __HAVE_ARCH_MEMCPY -static inline void * -__memcpy(void *dst, const void *src, size_t n) { - int d0, d1, d2; - asm volatile ( - 10626c: 8b 55 f4 mov -0xc(%ebp),%edx - 10626f: 8b 45 f0 mov -0x10(%ebp),%eax - 106272: 89 d7 mov %edx,%edi - 106274: 89 c6 mov %eax,%esi - 106276: f3 a5 rep movsl %ds:(%esi),%es:(%edi) - 106278: 8b 4d ec mov -0x14(%ebp),%ecx - 10627b: 83 e1 03 and $0x3,%ecx - 10627e: 74 02 je 106282 - 106280: f3 a4 rep movsb %ds:(%esi),%es:(%edi) - 106282: 89 f0 mov %esi,%eax - 106284: 89 fa mov %edi,%edx - 106286: 89 4d e8 mov %ecx,-0x18(%ebp) - 106289: 89 55 e4 mov %edx,-0x1c(%ebp) - 10628c: 89 45 e0 mov %eax,-0x20(%ebp) - "rep; movsb;" - "1:" - : "=&c" (d0), "=&D" (d1), "=&S" (d2) - : "0" (n / 4), "g" (n), "1" (dst), "2" (src) - : "memory"); - return dst; - 10628f: 8b 45 f4 mov -0xc(%ebp),%eax -#ifdef __HAVE_ARCH_MEMCPY - return __memcpy(dst, src, n); - 106292: 90 nop - while (n -- > 0) { - *d ++ = *s ++; - } - return dst; -#endif /* __HAVE_ARCH_MEMCPY */ -} - 106293: 83 c4 20 add $0x20,%esp - 106296: 5e pop %esi - 106297: 5f pop %edi - 106298: 5d pop %ebp - 106299: c3 ret - -0010629a : - * match in both memory blocks has a greater value in @v1 than in @v2 - * as if evaluated as unsigned char values; - * - And a value less than zero indicates the opposite. - * */ -int -memcmp(const void *v1, const void *v2, size_t n) { - 10629a: 55 push %ebp - 10629b: 89 e5 mov %esp,%ebp - 10629d: 83 ec 10 sub $0x10,%esp - const char *s1 = (const char *)v1; - 1062a0: 8b 45 08 mov 0x8(%ebp),%eax - 1062a3: 89 45 fc mov %eax,-0x4(%ebp) - const char *s2 = (const char *)v2; - 1062a6: 8b 45 0c mov 0xc(%ebp),%eax - 1062a9: 89 45 f8 mov %eax,-0x8(%ebp) - while (n -- > 0) { - 1062ac: eb 30 jmp 1062de - if (*s1 != *s2) { - 1062ae: 8b 45 fc mov -0x4(%ebp),%eax - 1062b1: 0f b6 10 movzbl (%eax),%edx - 1062b4: 8b 45 f8 mov -0x8(%ebp),%eax - 1062b7: 0f b6 00 movzbl (%eax),%eax - 1062ba: 38 c2 cmp %al,%dl - 1062bc: 74 18 je 1062d6 - return (int)((unsigned char)*s1 - (unsigned char)*s2); - 1062be: 8b 45 fc mov -0x4(%ebp),%eax - 1062c1: 0f b6 00 movzbl (%eax),%eax - 1062c4: 0f b6 d0 movzbl %al,%edx - 1062c7: 8b 45 f8 mov -0x8(%ebp),%eax - 1062ca: 0f b6 00 movzbl (%eax),%eax - 1062cd: 0f b6 c0 movzbl %al,%eax - 1062d0: 29 c2 sub %eax,%edx - 1062d2: 89 d0 mov %edx,%eax - 1062d4: eb 1a jmp 1062f0 - } - s1 ++, s2 ++; - 1062d6: 83 45 fc 01 addl $0x1,-0x4(%ebp) - 1062da: 83 45 f8 01 addl $0x1,-0x8(%ebp) - * */ -int -memcmp(const void *v1, const void *v2, size_t n) { - const char *s1 = (const char *)v1; - const char *s2 = (const char *)v2; - while (n -- > 0) { - 1062de: 8b 45 10 mov 0x10(%ebp),%eax - 1062e1: 8d 50 ff lea -0x1(%eax),%edx - 1062e4: 89 55 10 mov %edx,0x10(%ebp) - 1062e7: 85 c0 test %eax,%eax - 1062e9: 75 c3 jne 1062ae - if (*s1 != *s2) { - return (int)((unsigned char)*s1 - (unsigned char)*s2); - } - s1 ++, s2 ++; - } - return 0; - 1062eb: b8 00 00 00 00 mov $0x0,%eax -} - 1062f0: c9 leave - 1062f1: c3 ret - -001062f2 : - * @width: maximum number of digits, if the actual width is less than @width, use @padc instead - * @padc: character that padded on the left if the actual width is less than @width - * */ -static void -printnum(void (*putch)(int, void*), void *putdat, - unsigned long long num, unsigned base, int width, int padc) { - 1062f2: 55 push %ebp - 1062f3: 89 e5 mov %esp,%ebp - 1062f5: 83 ec 38 sub $0x38,%esp - 1062f8: 8b 45 10 mov 0x10(%ebp),%eax - 1062fb: 89 45 d0 mov %eax,-0x30(%ebp) - 1062fe: 8b 45 14 mov 0x14(%ebp),%eax - 106301: 89 45 d4 mov %eax,-0x2c(%ebp) - unsigned long long result = num; - 106304: 8b 45 d0 mov -0x30(%ebp),%eax - 106307: 8b 55 d4 mov -0x2c(%ebp),%edx - 10630a: 89 45 e8 mov %eax,-0x18(%ebp) - 10630d: 89 55 ec mov %edx,-0x14(%ebp) - unsigned mod = do_div(result, base); - 106310: 8b 45 18 mov 0x18(%ebp),%eax - 106313: 89 45 e4 mov %eax,-0x1c(%ebp) - 106316: 8b 45 e8 mov -0x18(%ebp),%eax - 106319: 8b 55 ec mov -0x14(%ebp),%edx - 10631c: 89 45 e0 mov %eax,-0x20(%ebp) - 10631f: 89 55 f0 mov %edx,-0x10(%ebp) - 106322: 8b 45 f0 mov -0x10(%ebp),%eax - 106325: 89 45 f4 mov %eax,-0xc(%ebp) - 106328: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) - 10632c: 74 1c je 10634a - 10632e: 8b 45 f0 mov -0x10(%ebp),%eax - 106331: ba 00 00 00 00 mov $0x0,%edx - 106336: f7 75 e4 divl -0x1c(%ebp) - 106339: 89 55 f4 mov %edx,-0xc(%ebp) - 10633c: 8b 45 f0 mov -0x10(%ebp),%eax - 10633f: ba 00 00 00 00 mov $0x0,%edx - 106344: f7 75 e4 divl -0x1c(%ebp) - 106347: 89 45 f0 mov %eax,-0x10(%ebp) - 10634a: 8b 45 e0 mov -0x20(%ebp),%eax - 10634d: 8b 55 f4 mov -0xc(%ebp),%edx - 106350: f7 75 e4 divl -0x1c(%ebp) - 106353: 89 45 e0 mov %eax,-0x20(%ebp) - 106356: 89 55 dc mov %edx,-0x24(%ebp) - 106359: 8b 45 e0 mov -0x20(%ebp),%eax - 10635c: 8b 55 f0 mov -0x10(%ebp),%edx - 10635f: 89 45 e8 mov %eax,-0x18(%ebp) - 106362: 89 55 ec mov %edx,-0x14(%ebp) - 106365: 8b 45 dc mov -0x24(%ebp),%eax - 106368: 89 45 d8 mov %eax,-0x28(%ebp) - - // first recursively print all preceding (more significant) digits - if (num >= base) { - 10636b: 8b 45 18 mov 0x18(%ebp),%eax - 10636e: ba 00 00 00 00 mov $0x0,%edx - 106373: 3b 55 d4 cmp -0x2c(%ebp),%edx - 106376: 77 41 ja 1063b9 - 106378: 3b 55 d4 cmp -0x2c(%ebp),%edx - 10637b: 72 05 jb 106382 - 10637d: 3b 45 d0 cmp -0x30(%ebp),%eax - 106380: 77 37 ja 1063b9 - printnum(putch, putdat, result, base, width - 1, padc); - 106382: 8b 45 1c mov 0x1c(%ebp),%eax - 106385: 83 e8 01 sub $0x1,%eax - 106388: 83 ec 04 sub $0x4,%esp - 10638b: ff 75 20 pushl 0x20(%ebp) - 10638e: 50 push %eax - 10638f: ff 75 18 pushl 0x18(%ebp) - 106392: ff 75 ec pushl -0x14(%ebp) - 106395: ff 75 e8 pushl -0x18(%ebp) - 106398: ff 75 0c pushl 0xc(%ebp) - 10639b: ff 75 08 pushl 0x8(%ebp) - 10639e: e8 4f ff ff ff call 1062f2 - 1063a3: 83 c4 20 add $0x20,%esp - 1063a6: eb 1b jmp 1063c3 - } else { - // print any needed pad characters before first digit - while (-- width > 0) - putch(padc, putdat); - 1063a8: 83 ec 08 sub $0x8,%esp - 1063ab: ff 75 0c pushl 0xc(%ebp) - 1063ae: ff 75 20 pushl 0x20(%ebp) - 1063b1: 8b 45 08 mov 0x8(%ebp),%eax - 1063b4: ff d0 call *%eax - 1063b6: 83 c4 10 add $0x10,%esp - // first recursively print all preceding (more significant) digits - if (num >= base) { - printnum(putch, putdat, result, base, width - 1, padc); - } else { - // print any needed pad characters before first digit - while (-- width > 0) - 1063b9: 83 6d 1c 01 subl $0x1,0x1c(%ebp) - 1063bd: 83 7d 1c 00 cmpl $0x0,0x1c(%ebp) - 1063c1: 7f e5 jg 1063a8 - putch(padc, putdat); - } - // then print this (the least significant) digit - putch("0123456789abcdef"[mod], putdat); - 1063c3: 8b 45 d8 mov -0x28(%ebp),%eax - 1063c6: 05 0c 7e 10 00 add $0x107e0c,%eax - 1063cb: 0f b6 00 movzbl (%eax),%eax - 1063ce: 0f be c0 movsbl %al,%eax - 1063d1: 83 ec 08 sub $0x8,%esp - 1063d4: ff 75 0c pushl 0xc(%ebp) - 1063d7: 50 push %eax - 1063d8: 8b 45 08 mov 0x8(%ebp),%eax - 1063db: ff d0 call *%eax - 1063dd: 83 c4 10 add $0x10,%esp -} - 1063e0: 90 nop - 1063e1: c9 leave - 1063e2: c3 ret - -001063e3 : - * getuint - get an unsigned int of various possible sizes from a varargs list - * @ap: a varargs list pointer - * @lflag: determines the size of the vararg that @ap points to - * */ -static unsigned long long -getuint(va_list *ap, int lflag) { - 1063e3: 55 push %ebp - 1063e4: 89 e5 mov %esp,%ebp - if (lflag >= 2) { - 1063e6: 83 7d 0c 01 cmpl $0x1,0xc(%ebp) - 1063ea: 7e 14 jle 106400 - return va_arg(*ap, unsigned long long); - 1063ec: 8b 45 08 mov 0x8(%ebp),%eax - 1063ef: 8b 00 mov (%eax),%eax - 1063f1: 8d 48 08 lea 0x8(%eax),%ecx - 1063f4: 8b 55 08 mov 0x8(%ebp),%edx - 1063f7: 89 0a mov %ecx,(%edx) - 1063f9: 8b 50 04 mov 0x4(%eax),%edx - 1063fc: 8b 00 mov (%eax),%eax - 1063fe: eb 30 jmp 106430 - } - else if (lflag) { - 106400: 83 7d 0c 00 cmpl $0x0,0xc(%ebp) - 106404: 74 16 je 10641c - return va_arg(*ap, unsigned long); - 106406: 8b 45 08 mov 0x8(%ebp),%eax - 106409: 8b 00 mov (%eax),%eax - 10640b: 8d 48 04 lea 0x4(%eax),%ecx - 10640e: 8b 55 08 mov 0x8(%ebp),%edx - 106411: 89 0a mov %ecx,(%edx) - 106413: 8b 00 mov (%eax),%eax - 106415: ba 00 00 00 00 mov $0x0,%edx - 10641a: eb 14 jmp 106430 - } - else { - return va_arg(*ap, unsigned int); - 10641c: 8b 45 08 mov 0x8(%ebp),%eax - 10641f: 8b 00 mov (%eax),%eax - 106421: 8d 48 04 lea 0x4(%eax),%ecx - 106424: 8b 55 08 mov 0x8(%ebp),%edx - 106427: 89 0a mov %ecx,(%edx) - 106429: 8b 00 mov (%eax),%eax - 10642b: ba 00 00 00 00 mov $0x0,%edx - } -} - 106430: 5d pop %ebp - 106431: c3 ret - -00106432 : - * getint - same as getuint but signed, we can't use getuint because of sign extension - * @ap: a varargs list pointer - * @lflag: determines the size of the vararg that @ap points to - * */ -static long long -getint(va_list *ap, int lflag) { - 106432: 55 push %ebp - 106433: 89 e5 mov %esp,%ebp - if (lflag >= 2) { - 106435: 83 7d 0c 01 cmpl $0x1,0xc(%ebp) - 106439: 7e 14 jle 10644f - return va_arg(*ap, long long); - 10643b: 8b 45 08 mov 0x8(%ebp),%eax - 10643e: 8b 00 mov (%eax),%eax - 106440: 8d 48 08 lea 0x8(%eax),%ecx - 106443: 8b 55 08 mov 0x8(%ebp),%edx - 106446: 89 0a mov %ecx,(%edx) - 106448: 8b 50 04 mov 0x4(%eax),%edx - 10644b: 8b 00 mov (%eax),%eax - 10644d: eb 28 jmp 106477 - } - else if (lflag) { - 10644f: 83 7d 0c 00 cmpl $0x0,0xc(%ebp) - 106453: 74 12 je 106467 - return va_arg(*ap, long); - 106455: 8b 45 08 mov 0x8(%ebp),%eax - 106458: 8b 00 mov (%eax),%eax - 10645a: 8d 48 04 lea 0x4(%eax),%ecx - 10645d: 8b 55 08 mov 0x8(%ebp),%edx - 106460: 89 0a mov %ecx,(%edx) - 106462: 8b 00 mov (%eax),%eax - 106464: 99 cltd - 106465: eb 10 jmp 106477 - } - else { - return va_arg(*ap, int); - 106467: 8b 45 08 mov 0x8(%ebp),%eax - 10646a: 8b 00 mov (%eax),%eax - 10646c: 8d 48 04 lea 0x4(%eax),%ecx - 10646f: 8b 55 08 mov 0x8(%ebp),%edx - 106472: 89 0a mov %ecx,(%edx) - 106474: 8b 00 mov (%eax),%eax - 106476: 99 cltd - } -} - 106477: 5d pop %ebp - 106478: c3 ret - -00106479 : - * @putch: specified putch function, print a single character - * @putdat: used by @putch function - * @fmt: the format string to use - * */ -void -printfmt(void (*putch)(int, void*), void *putdat, const char *fmt, ...) { - 106479: 55 push %ebp - 10647a: 89 e5 mov %esp,%ebp - 10647c: 83 ec 18 sub $0x18,%esp - va_list ap; - - va_start(ap, fmt); - 10647f: 8d 45 14 lea 0x14(%ebp),%eax - 106482: 89 45 f4 mov %eax,-0xc(%ebp) - vprintfmt(putch, putdat, fmt, ap); - 106485: 8b 45 f4 mov -0xc(%ebp),%eax - 106488: 50 push %eax - 106489: ff 75 10 pushl 0x10(%ebp) - 10648c: ff 75 0c pushl 0xc(%ebp) - 10648f: ff 75 08 pushl 0x8(%ebp) - 106492: e8 06 00 00 00 call 10649d - 106497: 83 c4 10 add $0x10,%esp - va_end(ap); -} - 10649a: 90 nop - 10649b: c9 leave - 10649c: c3 ret - -0010649d : - * - * Call this function if you are already dealing with a va_list. - * Or you probably want printfmt() instead. - * */ -void -vprintfmt(void (*putch)(int, void*), void *putdat, const char *fmt, va_list ap) { - 10649d: 55 push %ebp - 10649e: 89 e5 mov %esp,%ebp - 1064a0: 56 push %esi - 1064a1: 53 push %ebx - 1064a2: 83 ec 20 sub $0x20,%esp - register int ch, err; - unsigned long long num; - int base, width, precision, lflag, altflag; - - while (1) { - while ((ch = *(unsigned char *)fmt ++) != '%') { - 1064a5: eb 17 jmp 1064be - if (ch == '\0') { - 1064a7: 85 db test %ebx,%ebx - 1064a9: 0f 84 8e 03 00 00 je 10683d - return; - } - putch(ch, putdat); - 1064af: 83 ec 08 sub $0x8,%esp - 1064b2: ff 75 0c pushl 0xc(%ebp) - 1064b5: 53 push %ebx - 1064b6: 8b 45 08 mov 0x8(%ebp),%eax - 1064b9: ff d0 call *%eax - 1064bb: 83 c4 10 add $0x10,%esp - register int ch, err; - unsigned long long num; - int base, width, precision, lflag, altflag; - - while (1) { - while ((ch = *(unsigned char *)fmt ++) != '%') { - 1064be: 8b 45 10 mov 0x10(%ebp),%eax - 1064c1: 8d 50 01 lea 0x1(%eax),%edx - 1064c4: 89 55 10 mov %edx,0x10(%ebp) - 1064c7: 0f b6 00 movzbl (%eax),%eax - 1064ca: 0f b6 d8 movzbl %al,%ebx - 1064cd: 83 fb 25 cmp $0x25,%ebx - 1064d0: 75 d5 jne 1064a7 - } - putch(ch, putdat); - } - - // Process a %-escape sequence - char padc = ' '; - 1064d2: c6 45 db 20 movb $0x20,-0x25(%ebp) - width = precision = -1; - 1064d6: c7 45 e4 ff ff ff ff movl $0xffffffff,-0x1c(%ebp) - 1064dd: 8b 45 e4 mov -0x1c(%ebp),%eax - 1064e0: 89 45 e8 mov %eax,-0x18(%ebp) - lflag = altflag = 0; - 1064e3: c7 45 dc 00 00 00 00 movl $0x0,-0x24(%ebp) - 1064ea: 8b 45 dc mov -0x24(%ebp),%eax - 1064ed: 89 45 e0 mov %eax,-0x20(%ebp) - - reswitch: - switch (ch = *(unsigned char *)fmt ++) { - 1064f0: 8b 45 10 mov 0x10(%ebp),%eax - 1064f3: 8d 50 01 lea 0x1(%eax),%edx - 1064f6: 89 55 10 mov %edx,0x10(%ebp) - 1064f9: 0f b6 00 movzbl (%eax),%eax - 1064fc: 0f b6 d8 movzbl %al,%ebx - 1064ff: 8d 43 dd lea -0x23(%ebx),%eax - 106502: 83 f8 55 cmp $0x55,%eax - 106505: 0f 87 05 03 00 00 ja 106810 - 10650b: 8b 04 85 30 7e 10 00 mov 0x107e30(,%eax,4),%eax - 106512: ff e0 jmp *%eax - - // flag to pad on the right - case '-': - padc = '-'; - 106514: c6 45 db 2d movb $0x2d,-0x25(%ebp) - goto reswitch; - 106518: eb d6 jmp 1064f0 - - // flag to pad with 0's instead of spaces - case '0': - padc = '0'; - 10651a: c6 45 db 30 movb $0x30,-0x25(%ebp) - goto reswitch; - 10651e: eb d0 jmp 1064f0 - - // width field - case '1' ... '9': - for (precision = 0; ; ++ fmt) { - 106520: c7 45 e4 00 00 00 00 movl $0x0,-0x1c(%ebp) - precision = precision * 10 + ch - '0'; - 106527: 8b 55 e4 mov -0x1c(%ebp),%edx - 10652a: 89 d0 mov %edx,%eax - 10652c: c1 e0 02 shl $0x2,%eax - 10652f: 01 d0 add %edx,%eax - 106531: 01 c0 add %eax,%eax - 106533: 01 d8 add %ebx,%eax - 106535: 83 e8 30 sub $0x30,%eax - 106538: 89 45 e4 mov %eax,-0x1c(%ebp) - ch = *fmt; - 10653b: 8b 45 10 mov 0x10(%ebp),%eax - 10653e: 0f b6 00 movzbl (%eax),%eax - 106541: 0f be d8 movsbl %al,%ebx - if (ch < '0' || ch > '9') { - 106544: 83 fb 2f cmp $0x2f,%ebx - 106547: 7e 39 jle 106582 - 106549: 83 fb 39 cmp $0x39,%ebx - 10654c: 7f 34 jg 106582 - padc = '0'; - goto reswitch; - - // width field - case '1' ... '9': - for (precision = 0; ; ++ fmt) { - 10654e: 83 45 10 01 addl $0x1,0x10(%ebp) - precision = precision * 10 + ch - '0'; - ch = *fmt; - if (ch < '0' || ch > '9') { - break; - } - } - 106552: eb d3 jmp 106527 - goto process_precision; - - case '*': - precision = va_arg(ap, int); - 106554: 8b 45 14 mov 0x14(%ebp),%eax - 106557: 8d 50 04 lea 0x4(%eax),%edx - 10655a: 89 55 14 mov %edx,0x14(%ebp) - 10655d: 8b 00 mov (%eax),%eax - 10655f: 89 45 e4 mov %eax,-0x1c(%ebp) - goto process_precision; - 106562: eb 1f jmp 106583 - - case '.': - if (width < 0) - 106564: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) - 106568: 79 86 jns 1064f0 - width = 0; - 10656a: c7 45 e8 00 00 00 00 movl $0x0,-0x18(%ebp) - goto reswitch; - 106571: e9 7a ff ff ff jmp 1064f0 - - case '#': - altflag = 1; - 106576: c7 45 dc 01 00 00 00 movl $0x1,-0x24(%ebp) - goto reswitch; - 10657d: e9 6e ff ff ff jmp 1064f0 - ch = *fmt; - if (ch < '0' || ch > '9') { - break; - } - } - goto process_precision; - 106582: 90 nop - case '#': - altflag = 1; - goto reswitch; - - process_precision: - if (width < 0) - 106583: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) - 106587: 0f 89 63 ff ff ff jns 1064f0 - width = precision, precision = -1; - 10658d: 8b 45 e4 mov -0x1c(%ebp),%eax - 106590: 89 45 e8 mov %eax,-0x18(%ebp) - 106593: c7 45 e4 ff ff ff ff movl $0xffffffff,-0x1c(%ebp) - goto reswitch; - 10659a: e9 51 ff ff ff jmp 1064f0 - - // long flag (doubled for long long) - case 'l': - lflag ++; - 10659f: 83 45 e0 01 addl $0x1,-0x20(%ebp) - goto reswitch; - 1065a3: e9 48 ff ff ff jmp 1064f0 - - // character - case 'c': - putch(va_arg(ap, int), putdat); - 1065a8: 8b 45 14 mov 0x14(%ebp),%eax - 1065ab: 8d 50 04 lea 0x4(%eax),%edx - 1065ae: 89 55 14 mov %edx,0x14(%ebp) - 1065b1: 8b 00 mov (%eax),%eax - 1065b3: 83 ec 08 sub $0x8,%esp - 1065b6: ff 75 0c pushl 0xc(%ebp) - 1065b9: 50 push %eax - 1065ba: 8b 45 08 mov 0x8(%ebp),%eax - 1065bd: ff d0 call *%eax - 1065bf: 83 c4 10 add $0x10,%esp - break; - 1065c2: e9 71 02 00 00 jmp 106838 - - // error message - case 'e': - err = va_arg(ap, int); - 1065c7: 8b 45 14 mov 0x14(%ebp),%eax - 1065ca: 8d 50 04 lea 0x4(%eax),%edx - 1065cd: 89 55 14 mov %edx,0x14(%ebp) - 1065d0: 8b 18 mov (%eax),%ebx - if (err < 0) { - 1065d2: 85 db test %ebx,%ebx - 1065d4: 79 02 jns 1065d8 - err = -err; - 1065d6: f7 db neg %ebx - } - if (err > MAXERROR || (p = error_string[err]) == NULL) { - 1065d8: 83 fb 06 cmp $0x6,%ebx - 1065db: 7f 0b jg 1065e8 - 1065dd: 8b 34 9d f0 7d 10 00 mov 0x107df0(,%ebx,4),%esi - 1065e4: 85 f6 test %esi,%esi - 1065e6: 75 19 jne 106601 - printfmt(putch, putdat, "error %d", err); - 1065e8: 53 push %ebx - 1065e9: 68 1d 7e 10 00 push $0x107e1d - 1065ee: ff 75 0c pushl 0xc(%ebp) - 1065f1: ff 75 08 pushl 0x8(%ebp) - 1065f4: e8 80 fe ff ff call 106479 - 1065f9: 83 c4 10 add $0x10,%esp - } - else { - printfmt(putch, putdat, "%s", p); - } - break; - 1065fc: e9 37 02 00 00 jmp 106838 - } - if (err > MAXERROR || (p = error_string[err]) == NULL) { - printfmt(putch, putdat, "error %d", err); - } - else { - printfmt(putch, putdat, "%s", p); - 106601: 56 push %esi - 106602: 68 26 7e 10 00 push $0x107e26 - 106607: ff 75 0c pushl 0xc(%ebp) - 10660a: ff 75 08 pushl 0x8(%ebp) - 10660d: e8 67 fe ff ff call 106479 - 106612: 83 c4 10 add $0x10,%esp - } - break; - 106615: e9 1e 02 00 00 jmp 106838 - - // string - case 's': - if ((p = va_arg(ap, char *)) == NULL) { - 10661a: 8b 45 14 mov 0x14(%ebp),%eax - 10661d: 8d 50 04 lea 0x4(%eax),%edx - 106620: 89 55 14 mov %edx,0x14(%ebp) - 106623: 8b 30 mov (%eax),%esi - 106625: 85 f6 test %esi,%esi - 106627: 75 05 jne 10662e - p = "(null)"; - 106629: be 29 7e 10 00 mov $0x107e29,%esi - } - if (width > 0 && padc != '-') { - 10662e: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) - 106632: 7e 76 jle 1066aa - 106634: 80 7d db 2d cmpb $0x2d,-0x25(%ebp) - 106638: 74 70 je 1066aa - for (width -= strnlen(p, precision); width > 0; width --) { - 10663a: 8b 45 e4 mov -0x1c(%ebp),%eax - 10663d: 83 ec 08 sub $0x8,%esp - 106640: 50 push %eax - 106641: 56 push %esi - 106642: e8 17 f8 ff ff call 105e5e - 106647: 83 c4 10 add $0x10,%esp - 10664a: 89 c2 mov %eax,%edx - 10664c: 8b 45 e8 mov -0x18(%ebp),%eax - 10664f: 29 d0 sub %edx,%eax - 106651: 89 45 e8 mov %eax,-0x18(%ebp) - 106654: eb 17 jmp 10666d - putch(padc, putdat); - 106656: 0f be 45 db movsbl -0x25(%ebp),%eax - 10665a: 83 ec 08 sub $0x8,%esp - 10665d: ff 75 0c pushl 0xc(%ebp) - 106660: 50 push %eax - 106661: 8b 45 08 mov 0x8(%ebp),%eax - 106664: ff d0 call *%eax - 106666: 83 c4 10 add $0x10,%esp - case 's': - if ((p = va_arg(ap, char *)) == NULL) { - p = "(null)"; - } - if (width > 0 && padc != '-') { - for (width -= strnlen(p, precision); width > 0; width --) { - 106669: 83 6d e8 01 subl $0x1,-0x18(%ebp) - 10666d: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) - 106671: 7f e3 jg 106656 - putch(padc, putdat); - } - } - for (; (ch = *p ++) != '\0' && (precision < 0 || -- precision >= 0); width --) { - 106673: eb 35 jmp 1066aa - if (altflag && (ch < ' ' || ch > '~')) { - 106675: 83 7d dc 00 cmpl $0x0,-0x24(%ebp) - 106679: 74 1c je 106697 - 10667b: 83 fb 1f cmp $0x1f,%ebx - 10667e: 7e 05 jle 106685 - 106680: 83 fb 7e cmp $0x7e,%ebx - 106683: 7e 12 jle 106697 - putch('?', putdat); - 106685: 83 ec 08 sub $0x8,%esp - 106688: ff 75 0c pushl 0xc(%ebp) - 10668b: 6a 3f push $0x3f - 10668d: 8b 45 08 mov 0x8(%ebp),%eax - 106690: ff d0 call *%eax - 106692: 83 c4 10 add $0x10,%esp - 106695: eb 0f jmp 1066a6 - } - else { - putch(ch, putdat); - 106697: 83 ec 08 sub $0x8,%esp - 10669a: ff 75 0c pushl 0xc(%ebp) - 10669d: 53 push %ebx - 10669e: 8b 45 08 mov 0x8(%ebp),%eax - 1066a1: ff d0 call *%eax - 1066a3: 83 c4 10 add $0x10,%esp - if (width > 0 && padc != '-') { - for (width -= strnlen(p, precision); width > 0; width --) { - putch(padc, putdat); - } - } - for (; (ch = *p ++) != '\0' && (precision < 0 || -- precision >= 0); width --) { - 1066a6: 83 6d e8 01 subl $0x1,-0x18(%ebp) - 1066aa: 89 f0 mov %esi,%eax - 1066ac: 8d 70 01 lea 0x1(%eax),%esi - 1066af: 0f b6 00 movzbl (%eax),%eax - 1066b2: 0f be d8 movsbl %al,%ebx - 1066b5: 85 db test %ebx,%ebx - 1066b7: 74 26 je 1066df - 1066b9: 83 7d e4 00 cmpl $0x0,-0x1c(%ebp) - 1066bd: 78 b6 js 106675 - 1066bf: 83 6d e4 01 subl $0x1,-0x1c(%ebp) - 1066c3: 83 7d e4 00 cmpl $0x0,-0x1c(%ebp) - 1066c7: 79 ac jns 106675 - } - else { - putch(ch, putdat); - } - } - for (; width > 0; width --) { - 1066c9: eb 14 jmp 1066df - putch(' ', putdat); - 1066cb: 83 ec 08 sub $0x8,%esp - 1066ce: ff 75 0c pushl 0xc(%ebp) - 1066d1: 6a 20 push $0x20 - 1066d3: 8b 45 08 mov 0x8(%ebp),%eax - 1066d6: ff d0 call *%eax - 1066d8: 83 c4 10 add $0x10,%esp - } - else { - putch(ch, putdat); - } - } - for (; width > 0; width --) { - 1066db: 83 6d e8 01 subl $0x1,-0x18(%ebp) - 1066df: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) - 1066e3: 7f e6 jg 1066cb - putch(' ', putdat); - } - break; - 1066e5: e9 4e 01 00 00 jmp 106838 - - // (signed) decimal - case 'd': - num = getint(&ap, lflag); - 1066ea: 83 ec 08 sub $0x8,%esp - 1066ed: ff 75 e0 pushl -0x20(%ebp) - 1066f0: 8d 45 14 lea 0x14(%ebp),%eax - 1066f3: 50 push %eax - 1066f4: e8 39 fd ff ff call 106432 - 1066f9: 83 c4 10 add $0x10,%esp - 1066fc: 89 45 f0 mov %eax,-0x10(%ebp) - 1066ff: 89 55 f4 mov %edx,-0xc(%ebp) - if ((long long)num < 0) { - 106702: 8b 45 f0 mov -0x10(%ebp),%eax - 106705: 8b 55 f4 mov -0xc(%ebp),%edx - 106708: 85 d2 test %edx,%edx - 10670a: 79 23 jns 10672f - putch('-', putdat); - 10670c: 83 ec 08 sub $0x8,%esp - 10670f: ff 75 0c pushl 0xc(%ebp) - 106712: 6a 2d push $0x2d - 106714: 8b 45 08 mov 0x8(%ebp),%eax - 106717: ff d0 call *%eax - 106719: 83 c4 10 add $0x10,%esp - num = -(long long)num; - 10671c: 8b 45 f0 mov -0x10(%ebp),%eax - 10671f: 8b 55 f4 mov -0xc(%ebp),%edx - 106722: f7 d8 neg %eax - 106724: 83 d2 00 adc $0x0,%edx - 106727: f7 da neg %edx - 106729: 89 45 f0 mov %eax,-0x10(%ebp) - 10672c: 89 55 f4 mov %edx,-0xc(%ebp) - } - base = 10; - 10672f: c7 45 ec 0a 00 00 00 movl $0xa,-0x14(%ebp) - goto number; - 106736: e9 9f 00 00 00 jmp 1067da - - // unsigned decimal - case 'u': - num = getuint(&ap, lflag); - 10673b: 83 ec 08 sub $0x8,%esp - 10673e: ff 75 e0 pushl -0x20(%ebp) - 106741: 8d 45 14 lea 0x14(%ebp),%eax - 106744: 50 push %eax - 106745: e8 99 fc ff ff call 1063e3 - 10674a: 83 c4 10 add $0x10,%esp - 10674d: 89 45 f0 mov %eax,-0x10(%ebp) - 106750: 89 55 f4 mov %edx,-0xc(%ebp) - base = 10; - 106753: c7 45 ec 0a 00 00 00 movl $0xa,-0x14(%ebp) - goto number; - 10675a: eb 7e jmp 1067da - - // (unsigned) octal - case 'o': - num = getuint(&ap, lflag); - 10675c: 83 ec 08 sub $0x8,%esp - 10675f: ff 75 e0 pushl -0x20(%ebp) - 106762: 8d 45 14 lea 0x14(%ebp),%eax - 106765: 50 push %eax - 106766: e8 78 fc ff ff call 1063e3 - 10676b: 83 c4 10 add $0x10,%esp - 10676e: 89 45 f0 mov %eax,-0x10(%ebp) - 106771: 89 55 f4 mov %edx,-0xc(%ebp) - base = 8; - 106774: c7 45 ec 08 00 00 00 movl $0x8,-0x14(%ebp) - goto number; - 10677b: eb 5d jmp 1067da - - // pointer - case 'p': - putch('0', putdat); - 10677d: 83 ec 08 sub $0x8,%esp - 106780: ff 75 0c pushl 0xc(%ebp) - 106783: 6a 30 push $0x30 - 106785: 8b 45 08 mov 0x8(%ebp),%eax - 106788: ff d0 call *%eax - 10678a: 83 c4 10 add $0x10,%esp - putch('x', putdat); - 10678d: 83 ec 08 sub $0x8,%esp - 106790: ff 75 0c pushl 0xc(%ebp) - 106793: 6a 78 push $0x78 - 106795: 8b 45 08 mov 0x8(%ebp),%eax - 106798: ff d0 call *%eax - 10679a: 83 c4 10 add $0x10,%esp - num = (unsigned long long)(uintptr_t)va_arg(ap, void *); - 10679d: 8b 45 14 mov 0x14(%ebp),%eax - 1067a0: 8d 50 04 lea 0x4(%eax),%edx - 1067a3: 89 55 14 mov %edx,0x14(%ebp) - 1067a6: 8b 00 mov (%eax),%eax - 1067a8: 89 45 f0 mov %eax,-0x10(%ebp) - 1067ab: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - base = 16; - 1067b2: c7 45 ec 10 00 00 00 movl $0x10,-0x14(%ebp) - goto number; - 1067b9: eb 1f jmp 1067da - - // (unsigned) hexadecimal - case 'x': - num = getuint(&ap, lflag); - 1067bb: 83 ec 08 sub $0x8,%esp - 1067be: ff 75 e0 pushl -0x20(%ebp) - 1067c1: 8d 45 14 lea 0x14(%ebp),%eax - 1067c4: 50 push %eax - 1067c5: e8 19 fc ff ff call 1063e3 - 1067ca: 83 c4 10 add $0x10,%esp - 1067cd: 89 45 f0 mov %eax,-0x10(%ebp) - 1067d0: 89 55 f4 mov %edx,-0xc(%ebp) - base = 16; - 1067d3: c7 45 ec 10 00 00 00 movl $0x10,-0x14(%ebp) - number: - printnum(putch, putdat, num, base, width, padc); - 1067da: 0f be 55 db movsbl -0x25(%ebp),%edx - 1067de: 8b 45 ec mov -0x14(%ebp),%eax - 1067e1: 83 ec 04 sub $0x4,%esp - 1067e4: 52 push %edx - 1067e5: ff 75 e8 pushl -0x18(%ebp) - 1067e8: 50 push %eax - 1067e9: ff 75 f4 pushl -0xc(%ebp) - 1067ec: ff 75 f0 pushl -0x10(%ebp) - 1067ef: ff 75 0c pushl 0xc(%ebp) - 1067f2: ff 75 08 pushl 0x8(%ebp) - 1067f5: e8 f8 fa ff ff call 1062f2 - 1067fa: 83 c4 20 add $0x20,%esp - break; - 1067fd: eb 39 jmp 106838 - - // escaped '%' character - case '%': - putch(ch, putdat); - 1067ff: 83 ec 08 sub $0x8,%esp - 106802: ff 75 0c pushl 0xc(%ebp) - 106805: 53 push %ebx - 106806: 8b 45 08 mov 0x8(%ebp),%eax - 106809: ff d0 call *%eax - 10680b: 83 c4 10 add $0x10,%esp - break; - 10680e: eb 28 jmp 106838 - - // unrecognized escape sequence - just print it literally - default: - putch('%', putdat); - 106810: 83 ec 08 sub $0x8,%esp - 106813: ff 75 0c pushl 0xc(%ebp) - 106816: 6a 25 push $0x25 - 106818: 8b 45 08 mov 0x8(%ebp),%eax - 10681b: ff d0 call *%eax - 10681d: 83 c4 10 add $0x10,%esp - for (fmt --; fmt[-1] != '%'; fmt --) - 106820: 83 6d 10 01 subl $0x1,0x10(%ebp) - 106824: eb 04 jmp 10682a - 106826: 83 6d 10 01 subl $0x1,0x10(%ebp) - 10682a: 8b 45 10 mov 0x10(%ebp),%eax - 10682d: 83 e8 01 sub $0x1,%eax - 106830: 0f b6 00 movzbl (%eax),%eax - 106833: 3c 25 cmp $0x25,%al - 106835: 75 ef jne 106826 - /* do nothing */; - break; - 106837: 90 nop - } - } - 106838: e9 68 fc ff ff jmp 1064a5 - int base, width, precision, lflag, altflag; - - while (1) { - while ((ch = *(unsigned char *)fmt ++) != '%') { - if (ch == '\0') { - return; - 10683d: 90 nop - for (fmt --; fmt[-1] != '%'; fmt --) - /* do nothing */; - break; - } - } -} - 10683e: 8d 65 f8 lea -0x8(%ebp),%esp - 106841: 5b pop %ebx - 106842: 5e pop %esi - 106843: 5d pop %ebp - 106844: c3 ret - -00106845 : - * sprintputch - 'print' a single character in a buffer - * @ch: the character will be printed - * @b: the buffer to place the character @ch - * */ -static void -sprintputch(int ch, struct sprintbuf *b) { - 106845: 55 push %ebp - 106846: 89 e5 mov %esp,%ebp - b->cnt ++; - 106848: 8b 45 0c mov 0xc(%ebp),%eax - 10684b: 8b 40 08 mov 0x8(%eax),%eax - 10684e: 8d 50 01 lea 0x1(%eax),%edx - 106851: 8b 45 0c mov 0xc(%ebp),%eax - 106854: 89 50 08 mov %edx,0x8(%eax) - if (b->buf < b->ebuf) { - 106857: 8b 45 0c mov 0xc(%ebp),%eax - 10685a: 8b 10 mov (%eax),%edx - 10685c: 8b 45 0c mov 0xc(%ebp),%eax - 10685f: 8b 40 04 mov 0x4(%eax),%eax - 106862: 39 c2 cmp %eax,%edx - 106864: 73 12 jae 106878 - *b->buf ++ = ch; - 106866: 8b 45 0c mov 0xc(%ebp),%eax - 106869: 8b 00 mov (%eax),%eax - 10686b: 8d 48 01 lea 0x1(%eax),%ecx - 10686e: 8b 55 0c mov 0xc(%ebp),%edx - 106871: 89 0a mov %ecx,(%edx) - 106873: 8b 55 08 mov 0x8(%ebp),%edx - 106876: 88 10 mov %dl,(%eax) - } -} - 106878: 90 nop - 106879: 5d pop %ebp - 10687a: c3 ret - -0010687b : - * @str: the buffer to place the result into - * @size: the size of buffer, including the trailing null space - * @fmt: the format string to use - * */ -int -snprintf(char *str, size_t size, const char *fmt, ...) { - 10687b: 55 push %ebp - 10687c: 89 e5 mov %esp,%ebp - 10687e: 83 ec 18 sub $0x18,%esp - va_list ap; - int cnt; - va_start(ap, fmt); - 106881: 8d 45 14 lea 0x14(%ebp),%eax - 106884: 89 45 f0 mov %eax,-0x10(%ebp) - cnt = vsnprintf(str, size, fmt, ap); - 106887: 8b 45 f0 mov -0x10(%ebp),%eax - 10688a: 50 push %eax - 10688b: ff 75 10 pushl 0x10(%ebp) - 10688e: ff 75 0c pushl 0xc(%ebp) - 106891: ff 75 08 pushl 0x8(%ebp) - 106894: e8 0b 00 00 00 call 1068a4 - 106899: 83 c4 10 add $0x10,%esp - 10689c: 89 45 f4 mov %eax,-0xc(%ebp) - va_end(ap); - return cnt; - 10689f: 8b 45 f4 mov -0xc(%ebp),%eax -} - 1068a2: c9 leave - 1068a3: c3 ret - -001068a4 : - * - * Call this function if you are already dealing with a va_list. - * Or you probably want snprintf() instead. - * */ -int -vsnprintf(char *str, size_t size, const char *fmt, va_list ap) { - 1068a4: 55 push %ebp - 1068a5: 89 e5 mov %esp,%ebp - 1068a7: 83 ec 18 sub $0x18,%esp - struct sprintbuf b = {str, str + size - 1, 0}; - 1068aa: 8b 45 08 mov 0x8(%ebp),%eax - 1068ad: 89 45 ec mov %eax,-0x14(%ebp) - 1068b0: 8b 45 0c mov 0xc(%ebp),%eax - 1068b3: 8d 50 ff lea -0x1(%eax),%edx - 1068b6: 8b 45 08 mov 0x8(%ebp),%eax - 1068b9: 01 d0 add %edx,%eax - 1068bb: 89 45 f0 mov %eax,-0x10(%ebp) - 1068be: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - if (str == NULL || b.buf > b.ebuf) { - 1068c5: 83 7d 08 00 cmpl $0x0,0x8(%ebp) - 1068c9: 74 0a je 1068d5 - 1068cb: 8b 55 ec mov -0x14(%ebp),%edx - 1068ce: 8b 45 f0 mov -0x10(%ebp),%eax - 1068d1: 39 c2 cmp %eax,%edx - 1068d3: 76 07 jbe 1068dc - return -E_INVAL; - 1068d5: b8 fd ff ff ff mov $0xfffffffd,%eax - 1068da: eb 20 jmp 1068fc - } - // print the string to the buffer - vprintfmt((void*)sprintputch, &b, fmt, ap); - 1068dc: ff 75 14 pushl 0x14(%ebp) - 1068df: ff 75 10 pushl 0x10(%ebp) - 1068e2: 8d 45 ec lea -0x14(%ebp),%eax - 1068e5: 50 push %eax - 1068e6: 68 45 68 10 00 push $0x106845 - 1068eb: e8 ad fb ff ff call 10649d - 1068f0: 83 c4 10 add $0x10,%esp - // null terminate the buffer - *b.buf = '\0'; - 1068f3: 8b 45 ec mov -0x14(%ebp),%eax - 1068f6: c6 00 00 movb $0x0,(%eax) - return b.cnt; - 1068f9: 8b 45 f4 mov -0xc(%ebp),%eax -} - 1068fc: c9 leave - 1068fd: c3 ret diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kernel_nopage.sym" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kernel_nopage.sym" deleted file mode 100644 index 4fcceca71..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/kernel_nopage.sym" +++ /dev/null @@ -1,483 +0,0 @@ -00100000 .text -00106900 .rodata -00107f88 .stab -0011424d .stabstr -00117000 .data -00119a40 .bss -00000000 .comment -00000000 obj/kern/init/entry.o -00119018 __gdtdesc -00100019 relocated -00100028 spin -00119000 __gdt -00000000 init.c -0010010f lab1_print_cur_status -00119a40 round.1515 -001001cc lab1_switch_to_user -001001d2 lab1_switch_to_kernel -001001d8 lab1_switch_test -00000000 stdio.c -0010021a cputch -00000000 readline.c -00119a60 buf -00000000 panic.c -00119e60 is_panic -00000000 kdebug.c -0010048c stab_binsearch -00100a2a read_eip -00000000 kmonitor.c -00119020 commands -00100afa parse -00100bb6 runcmd -00000000 clock.c -00000000 console.c -00100dbb __intr_save -00100de5 __intr_restore -00100df9 delay -00119e80 crt_buf -00119e84 crt_pos -00119e86 addr_6845 -00100e42 cga_init -00119e88 serial_exists -00100f29 serial_init -0010100e lpt_putc_sub -00101088 lpt_putc -001010bf cga_putc -00101294 serial_putc_sub -001012ee serial_putc -00119ea0 cons -00101325 cons_intr -00101371 serial_proc_data -00119060 shiftcode -00119160 togglecode -00119260 normalmap -00119360 shiftmap -00119460 ctlmap -00119560 charcode -001013ea kbd_proc_data -0011a0a8 shift.1609 -00101577 kbd_intr -00101590 kbd_init -00000000 picirq.c -00119570 irq_mask -0011a0ac did_init -00101697 pic_setmask -00000000 intr.c -00000000 trap.c -00101868 print_ticks -0011a0c0 idt -00119580 idt_pd -00101a6a trapname -00107000 excnames.1514 -001195a0 IA32flags -00101d4e trap_dispatch -00000000 pmm.c -00102a53 page2ppn -00102a6c page2pa -00102a7f pa2page -00102ac6 page2kva -00102b0b pte2page -00102b45 pde2page -00102b61 page_ref -00102b6b set_page_ref -00102b79 page_ref_inc -00102b90 page_ref_dec -00102ba7 __intr_save -00102bd1 __intr_restore -0011a8e0 ts -00119a00 gdt -00119a30 gdt_pd -00102be5 lgdt -00102c29 gdt_init -00102d1b init_pmm_manager -00102d50 init_memmap -00102e10 page_init -0010323d enable_paging -00103277 boot_map_segment -00103360 boot_alloc_page -001037e5 check_alloc_page -00103808 check_pgdir -00103d6e check_boot_pgdir -00103639 page_remove_pte -00104067 perm2str -0011a948 str.1794 -001040b5 get_pgtable_items -00000000 default_pmm.c -001042bd page2ppn -001042d6 page2pa -001042e9 page_ref -001042f3 set_page_ref -00104301 default_init -0010432f default_init_memmap -0010445f default_alloc_pages -0010463f default_free_pages -001049d0 default_nr_free_pages -001049da basic_check -00104e50 default_check -00000000 buddy_pmm.c -001053c4 page2ppn -001053dd page2pa -001053f0 set_page_ref -0011a94c buddy_longest -0011a950 buddy_max_pages -0011a954 buddy_allocatable_base -001053fe buddy_find_first_zero -0010541f buddy_node_index_to_page -00105449 buddy_init -0010544f buddy_init_memmap -00105673 buddy_fix_size -0010569a buddy_alloc_pages -0010580d buddy_free_pages -001059f9 buddy_nr_free_pages -00105a05 buddy_check -00000000 string.c -00000000 printfmt.c -00107df0 error_string -001062f2 printnum -001063e3 getuint -00106432 getint -00106845 sprintputch -00102989 vector242 -001023e0 vector119 -001008f1 print_kerninfo -001022c0 vector87 -001022b7 vector86 -001029f5 vector251 -00105e8e strcpy -001022e4 vector91 -001020da vector33 -001025c9 vector162 -0010282d vector213 -0010237d vector108 -00102134 vector43 -00100000 kern_entry -00100d40 mon_backtrace -001025ed vector165 -001026dd vector185 -00107d70 buddy_pmm_manager -001023bc vector115 -001023fb vector122 -001036dc page_insert -00102581 vector156 -001029ad vector245 -0010270d vector189 -00102000 vector7 -001021d6 vector61 -00102089 vector24 -00102398 vector111 -00102791 vector200 -0010220c vector67 -001024a9 vector138 -0010224b vector74 -001061a7 memmove -001021b2 vector57 -0010687b snprintf -00101ab1 print_trapframe -00102839 vector214 -0010649d vprintfmt -0010232c vector99 -001035e3 get_page -00102a31 __alltraps -00101625 cons_getc -001024cd vector141 -00100482 is_kernel_panic -00102641 vector172 -00100a3b print_stackframe -0010297d vector241 -00102a0d vector253 -00101fdc vector3 -00101fd3 vector2 -001028d5 vector227 -00102809 vector210 -001028b1 vector224 -00102122 vector41 -00100267 cprintf -0010206e vector21 -0010267d vector177 -001023d7 vector118 -00102227 vector70 -0010221e vector69 -0010294d vector237 -001021f1 vector64 -001020a4 vector27 -00102461 vector132 -001026e9 vector186 -0010285d vector217 -0010624a memcpy -00101fca vector1 -00102689 vector178 -00102107 vector38 -00102959 vector238 -0010030b readline -0010246d vector133 -00102242 vector73 -001024f1 vector144 -001070cc vpd -0010002a kern_init -00102a19 vector254 -0010233e vector101 -00102815 vector211 -00102659 vector174 -00102995 vector243 -00102431 vector128 -0010228a vector81 -00102dad free_pages -0010202c vector13 -001068a4 vsnprintf -0010217c vector51 -00102043 vector16 -00119a36 edata -001015ab cons_init -0011a95c pmm_manager -00102971 vector240 -00102197 vector54 -0010205c vector19 -0011424c __STAB_END__ -001022ed vector92 -001029a1 vector244 -00102c1b load_esp0 -001024c1 vector140 -00102146 vector45 -00102278 vector79 -001028ed vector229 -00102599 vector158 -001016f0 pic_enable -00102110 vector39 -00102611 vector168 -001020ec vector35 -001023aa vector113 -0011424d __STABSTR_BEGIN__ -00102416 vector125 -001003cd __panic -00102851 vector216 -001021e8 vector63 -0010209b vector26 -001013c8 serial_intr -0010273d vector193 -00102761 vector196 -001000d4 grade_backtrace0 -001027fd vector209 -00101fe5 vector4 -00102629 vector170 -00102491 vector136 -00102017 vector10 -001027d9 vector206 -00102a25 vector255 -001026ad vector181 -001021c4 vector59 -001000ee grade_backtrace -001022ae vector85 -001022a5 vector84 -001026c5 vector183 -001025a5 vector159 -00102821 vector212 -00102158 vector47 -0010600a strtol -001028e1 vector228 -0010212b vector42 -001023b3 vector114 -00105e5e strnlen -00102665 vector175 -001024e5 vector143 -00102449 vector130 -00107b00 default_pmm_manager -001029b9 vector246 -00102010 vector9 -001024d9 vector142 -00102335 vector100 -0010279d vector201 -001018a4 idt_init -0010098e print_debuginfo -001021cd vector60 -00102080 vector23 -00102941 vector236 -0011a8c0 npage -00102905 vector231 -00102203 vector66 -001020b6 vector29 -00104169 print_pgdir -00102485 vector135 -00100c66 kmonitor -00102266 vector77 -001026a1 vector180 -00100d52 clock_init -001027f1 vector208 -00102323 vector98 -0010231a vector97 -00102de2 nr_free_pages -00102671 vector176 -00102749 vector194 -001020d1 vector32 -0011a960 boot_cr3 -0011a974 end -00102785 vector199 -00102455 vector131 -00102a01 vector252 -00101fc1 vector0 -00105fdb strfind -001015dc cons_putc -001068fe etext -001024fd vector145 -00102374 vector107 -0011a8c4 boot_pgdir -00102119 vector40 -0010185a intr_enable -00102347 vector102 -001021a9 vector56 -00102215 vector68 -00101ff7 vector6 -0010243d vector129 -0010276d vector197 -00102551 vector152 -00119600 __vectors -001028f9 vector230 -00105f52 strncmp -001034a8 get_pte -001020fe vector37 -001027cd vector205 -001025bd vector161 -00105ece strncpy -00102230 vector71 -001025b1 vector160 -00102845 vector215 -0010258d vector157 -00101861 intr_disable -00101c8e print_regs -001023a1 vector112 -00100095 grade_backtrace2 -001026b9 vector182 -00102025 vector12 -0010629a memcmp -00102386 vector109 -00102065 vector20 -0010218e vector53 -00102053 vector18 -00102308 vector95 -001028c9 vector226 -0010216a vector49 -0010213d vector44 -0010226f vector78 -0010264d vector173 -001023ce vector117 -00101a9b trap_in_kernel -00102293 vector82 -00102899 vector222 -00102009 vector8 -0010252d vector149 -0010028d cputchar -00106167 memset -00102911 vector232 -0010236b vector106 -00102881 vector220 -001022db vector90 -001025d5 vector163 -00102929 vector234 -001021df vector62 -00102092 vector25 -00102779 vector198 -001023e9 vector120 -001002f2 getchar -001036a3 page_remove -00102173 vector50 -0010203a vector15 -00106479 printfmt -00102545 vector151 -0010229c vector83 -001022d2 vector89 -001022c9 vector88 -00101faa trap -00102695 vector179 -001020e3 vector34 -00116fa9 __STABSTR_END__ -0010214f vector46 -00105f08 strcmp -00102479 vector134 -001028a5 vector223 -00102869 vector218 -001005e3 debuginfo_eip -0010171d pic_init -001028bd vector225 -001026f5 vector187 -001033a3 pmm_init -001020bf vector30 -00102428 vector127 -0011a958 ticks -00102731 vector192 -001025f9 vector166 -0010225d vector76 -00102254 vector75 -00102755 vector195 -00102539 vector150 -001021bb vector58 -001029d1 vector248 -00102404 vector123 -00102311 vector96 -001020c8 vector31 -001027b5 vector203 -00102d6f alloc_pages -001024b5 vector139 -0010255d vector153 -001025e1 vector164 -001023f2 vector121 -00101fee vector5 -00102605 vector167 -00102575 vector155 -001029dd vector249 -001070c8 vpt -001029e9 vector250 -0010240d vector124 -0010238f vector110 -001027c1 vector204 -00102a48 __trapret -0010023e vcprintf -0010249d vector137 -0010043b __warn -001029c5 vector247 -00102077 vector22 -001027a9 vector202 -00102239 vector72 -001021a0 vector55 -001002a4 cputs -00119000 bootstacktop -0010241f vector126 -001021fa vector65 -001020ad vector28 -0010261d vector169 -0010291d vector233 -00102515 vector147 -00117000 bootstack -00102359 vector104 -0011a968 free_area -001023c5 vector116 -00107f88 __STAB_BEGIN__ -00102185 vector52 -0010204c vector17 -001026d1 vector184 -00105e36 strlen -001027e5 vector207 -00102719 vector190 -00102965 vector239 -001022ff vector94 -001022f6 vector93 -00102701 vector188 -00105fa8 strchr -00102161 vector48 -001000af grade_backtrace1 -00102875 vector219 -00102521 vector148 -0010288d vector221 -00102281 vector80 -00102635 vector171 -00102569 vector154 -001020f5 vector36 -00102935 vector235 -00102362 vector105 -00100d2e mon_kerninfo -0011a964 pages -00102509 vector146 -00102725 vector191 -00102350 vector103 -00100cd4 mon_help -0010201e vector11 -00103795 tlb_invalidate -00102033 vector14 diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/libs/printfmt.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/libs/printfmt.d" deleted file mode 100644 index 7f093e2c5..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/libs/printfmt.d" +++ /dev/null @@ -1,2 +0,0 @@ -obj/libs/printfmt.o obj/libs/printfmt.d: libs/printfmt.c libs/defs.h \ - libs/x86.h libs/error.h libs/stdio.h libs/stdarg.h libs/string.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/libs/printfmt.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/libs/printfmt.o" deleted file mode 100644 index 628685517..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/libs/printfmt.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/libs/string.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/libs/string.d" deleted file mode 100644 index dd7b1bae0..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/libs/string.d" +++ /dev/null @@ -1,2 +0,0 @@ -obj/libs/string.o obj/libs/string.d: libs/string.c libs/string.h \ - libs/defs.h libs/x86.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/libs/string.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/libs/string.o" deleted file mode 100644 index d26c664fd..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/libs/string.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/sign/tools/sign.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/sign/tools/sign.d" deleted file mode 100644 index c988243d1..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/sign/tools/sign.d" +++ /dev/null @@ -1 +0,0 @@ -obj/sign/tools/sign.o obj/sign/tools/sign.d: tools/sign.c diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/sign/tools/sign.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/sign/tools/sign.o" deleted file mode 100644 index ae0793adc..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738789_452509766_lab2-2014011330/obj/sign/tools/sign.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/bin/bootblock" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/bin/bootblock" deleted file mode 100644 index 50018d23a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/bin/bootblock" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/bin/kernel" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/bin/kernel" deleted file mode 100644 index d389ebf57..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/bin/kernel" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/bin/sign" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/bin/sign" deleted file mode 100644 index 04eab3c09..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/bin/sign" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/bin/ucore.img" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/bin/ucore.img" deleted file mode 100644 index adb457ddf..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/bin/ucore.img" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/boot/bootasm.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/boot/bootasm.d" deleted file mode 100644 index 081467461..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/boot/bootasm.d" +++ /dev/null @@ -1 +0,0 @@ -obj/boot/bootasm.o obj/boot/bootasm.d: boot/bootasm.S boot/asm.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/boot/bootasm.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/boot/bootasm.o" deleted file mode 100644 index 4487e981b..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/boot/bootasm.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/boot/bootmain.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/boot/bootmain.d" deleted file mode 100644 index c0d98e63c..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/boot/bootmain.d" +++ /dev/null @@ -1,2 +0,0 @@ -obj/boot/bootmain.o obj/boot/bootmain.d: boot/bootmain.c libs/defs.h \ - libs/x86.h libs/elf.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/boot/bootmain.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/boot/bootmain.o" deleted file mode 100644 index 77b223cbb..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/boot/bootmain.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/bootblock.asm" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/bootblock.asm" deleted file mode 100644 index 37691e3b2..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/bootblock.asm" +++ /dev/null @@ -1,406 +0,0 @@ - -obj/bootblock.o: file format elf32-i386 - - -Disassembly of section .startup: - -00007c00 : - -# start address should be 0:7c00, in real mode, the beginning address of the running bootloader -.globl start -start: -.code16 # Assemble for 16-bit mode - cli # Disable interrupts - 7c00: fa cli - cld # String operations increment - 7c01: fc cld - - # Set up the important data segment registers (DS, ES, SS). - xorw %ax, %ax # Segment number zero - 7c02: 31 c0 xor %eax,%eax - movw %ax, %ds # -> Data Segment - 7c04: 8e d8 mov %eax,%ds - movw %ax, %es # -> Extra Segment - 7c06: 8e c0 mov %eax,%es - movw %ax, %ss # -> Stack Segment - 7c08: 8e d0 mov %eax,%ss - -00007c0a : - # Enable A20: - # For backwards compatibility with the earliest PCs, physical - # address line 20 is tied low, so that addresses higher than - # 1MB wrap around to zero by default. This code undoes this. -seta20.1: - inb $0x64, %al # Wait for not busy(8042 input buffer empty). - 7c0a: e4 64 in $0x64,%al - testb $0x2, %al - 7c0c: a8 02 test $0x2,%al - jnz seta20.1 - 7c0e: 75 fa jne 7c0a - - movb $0xd1, %al # 0xd1 -> port 0x64 - 7c10: b0 d1 mov $0xd1,%al - outb %al, $0x64 # 0xd1 means: write data to 8042's P2 port - 7c12: e6 64 out %al,$0x64 - -00007c14 : - -seta20.2: - inb $0x64, %al # Wait for not busy(8042 input buffer empty). - 7c14: e4 64 in $0x64,%al - testb $0x2, %al - 7c16: a8 02 test $0x2,%al - jnz seta20.2 - 7c18: 75 fa jne 7c14 - - movb $0xdf, %al # 0xdf -> port 0x60 - 7c1a: b0 df mov $0xdf,%al - outb %al, $0x60 # 0xdf = 11011111, means set P2's A20 bit(the 1 bit) to 1 - 7c1c: e6 60 out %al,$0x60 - -00007c1e : - -probe_memory: - movl $0, 0x8000 - 7c1e: 66 c7 06 00 80 movw $0x8000,(%esi) - 7c23: 00 00 add %al,(%eax) - 7c25: 00 00 add %al,(%eax) - xorl %ebx, %ebx - 7c27: 66 31 db xor %bx,%bx - movw $0x8004, %di - 7c2a: bf .byte 0xbf - 7c2b: 04 80 add $0x80,%al - -00007c2d : -start_probe: - movl $0xE820, %eax - 7c2d: 66 b8 20 e8 mov $0xe820,%ax - 7c31: 00 00 add %al,(%eax) - movl $20, %ecx - 7c33: 66 b9 14 00 mov $0x14,%cx - 7c37: 00 00 add %al,(%eax) - movl $SMAP, %edx - 7c39: 66 ba 50 41 mov $0x4150,%dx - 7c3d: 4d dec %ebp - 7c3e: 53 push %ebx - int $0x15 - 7c3f: cd 15 int $0x15 - jnc cont - 7c41: 73 08 jae 7c4b - movw $12345, 0x8000 - 7c43: c7 06 00 80 39 30 movl $0x30398000,(%esi) - jmp finish_probe - 7c49: eb 0e jmp 7c59 - -00007c4b : -cont: - addw $20, %di - 7c4b: 83 c7 14 add $0x14,%edi - incl 0x8000 - 7c4e: 66 ff 06 incw (%esi) - 7c51: 00 80 66 83 fb 00 add %al,0xfb8366(%eax) - cmpl $0, %ebx - jnz start_probe - 7c57: 75 d4 jne 7c2d - -00007c59 : - - # Switch from real to protected mode, using a bootstrap GDT - # and segment translation that makes virtual addresses - # identical to physical addresses, so that the - # effective memory map does not change during the switch. - lgdt gdtdesc - 7c59: 0f 01 16 lgdtl (%esi) - 7c5c: b4 7d mov $0x7d,%ah - movl %cr0, %eax - 7c5e: 0f 20 c0 mov %cr0,%eax - orl $CR0_PE_ON, %eax - 7c61: 66 83 c8 01 or $0x1,%ax - movl %eax, %cr0 - 7c65: 0f 22 c0 mov %eax,%cr0 - - # Jump to next instruction, but in 32-bit code segment. - # Switches processor into 32-bit mode. - ljmp $PROT_MODE_CSEG, $protcseg - 7c68: ea .byte 0xea - 7c69: 6d insl (%dx),%es:(%edi) - 7c6a: 7c 08 jl 7c74 - ... - -00007c6d : - -.code32 # Assemble for 32-bit mode -protcseg: - # Set up the protected-mode data segment registers - movw $PROT_MODE_DSEG, %ax # Our data segment selector - 7c6d: 66 b8 10 00 mov $0x10,%ax - movw %ax, %ds # -> DS: Data Segment - 7c71: 8e d8 mov %eax,%ds - movw %ax, %es # -> ES: Extra Segment - 7c73: 8e c0 mov %eax,%es - movw %ax, %fs # -> FS - 7c75: 8e e0 mov %eax,%fs - movw %ax, %gs # -> GS - 7c77: 8e e8 mov %eax,%gs - movw %ax, %ss # -> SS: Stack Segment - 7c79: 8e d0 mov %eax,%ss - - # Set up the stack pointer and call into C. The stack region is from 0--start(0x7c00) - movl $0x0, %ebp - 7c7b: bd 00 00 00 00 mov $0x0,%ebp - movl $start, %esp - 7c80: bc 00 7c 00 00 mov $0x7c00,%esp - call bootmain - 7c85: e8 9d 00 00 00 call 7d27 - -00007c8a : - - # If bootmain returns (it shouldn't), loop. -spin: - jmp spin - 7c8a: eb fe jmp 7c8a - -Disassembly of section .text: - -00007c8c : -/* * - * readseg - read @count bytes at @offset from kernel into virtual address @va, - * might copy more than asked. - * */ -static void -readseg(uintptr_t va, uint32_t count, uint32_t offset) { - 7c8c: 55 push %ebp - 7c8d: 89 e5 mov %esp,%ebp - 7c8f: 57 push %edi - uintptr_t end_va = va + count; - 7c90: 8d 3c 10 lea (%eax,%edx,1),%edi - - // round down to sector boundary - va -= offset % SECTSIZE; - 7c93: 89 ca mov %ecx,%edx - - // translate from bytes to sectors; kernel starts at sector 1 - uint32_t secno = (offset / SECTSIZE) + 1; - 7c95: c1 e9 09 shr $0x9,%ecx -/* * - * readseg - read @count bytes at @offset from kernel into virtual address @va, - * might copy more than asked. - * */ -static void -readseg(uintptr_t va, uint32_t count, uint32_t offset) { - 7c98: 56 push %esi - uintptr_t end_va = va + count; - - // round down to sector boundary - va -= offset % SECTSIZE; - 7c99: 81 e2 ff 01 00 00 and $0x1ff,%edx - - // translate from bytes to sectors; kernel starts at sector 1 - uint32_t secno = (offset / SECTSIZE) + 1; - 7c9f: 8d 71 01 lea 0x1(%ecx),%esi -/* * - * readseg - read @count bytes at @offset from kernel into virtual address @va, - * might copy more than asked. - * */ -static void -readseg(uintptr_t va, uint32_t count, uint32_t offset) { - 7ca2: 53 push %ebx - uintptr_t end_va = va + count; - - // round down to sector boundary - va -= offset % SECTSIZE; - 7ca3: 29 d0 sub %edx,%eax -/* * - * readseg - read @count bytes at @offset from kernel into virtual address @va, - * might copy more than asked. - * */ -static void -readseg(uintptr_t va, uint32_t count, uint32_t offset) { - 7ca5: 53 push %ebx - uintptr_t end_va = va + count; - 7ca6: 89 7d f0 mov %edi,-0x10(%ebp) - - // round down to sector boundary - va -= offset % SECTSIZE; - 7ca9: 89 c3 mov %eax,%ebx - uint32_t secno = (offset / SECTSIZE) + 1; - - // If this is too slow, we could read lots of sectors at a time. - // We'd write more to memory than asked, but it doesn't matter -- - // we load in increasing order. - for (; va < end_va; va += SECTSIZE, secno ++) { - 7cab: 3b 5d f0 cmp -0x10(%ebp),%ebx - 7cae: 73 71 jae 7d21 -static inline void invlpg(void *addr) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); - 7cb0: ba f7 01 00 00 mov $0x1f7,%edx - 7cb5: ec in (%dx),%al -#define ELFHDR ((struct elfhdr *)0x10000) // scratch space - -/* waitdisk - wait for disk ready */ -static void -waitdisk(void) { - while ((inb(0x1F7) & 0xC0) != 0x40) - 7cb6: 83 e0 c0 and $0xffffffc0,%eax - 7cb9: 3c 40 cmp $0x40,%al - 7cbb: 75 f3 jne 7cb0 - : "memory", "cc"); -} - -static inline void -outb(uint16_t port, uint8_t data) { - asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); - 7cbd: ba f2 01 00 00 mov $0x1f2,%edx - 7cc2: b0 01 mov $0x1,%al - 7cc4: ee out %al,(%dx) - 7cc5: ba f3 01 00 00 mov $0x1f3,%edx - 7cca: 89 f0 mov %esi,%eax - 7ccc: ee out %al,(%dx) - 7ccd: 89 f0 mov %esi,%eax - 7ccf: ba f4 01 00 00 mov $0x1f4,%edx - 7cd4: c1 e8 08 shr $0x8,%eax - 7cd7: ee out %al,(%dx) - 7cd8: 89 f0 mov %esi,%eax - 7cda: ba f5 01 00 00 mov $0x1f5,%edx - 7cdf: c1 e8 10 shr $0x10,%eax - 7ce2: ee out %al,(%dx) - 7ce3: 89 f0 mov %esi,%eax - 7ce5: ba f6 01 00 00 mov $0x1f6,%edx - 7cea: c1 e8 18 shr $0x18,%eax - 7ced: 83 e0 0f and $0xf,%eax - 7cf0: 83 c8 e0 or $0xffffffe0,%eax - 7cf3: ee out %al,(%dx) - 7cf4: b0 20 mov $0x20,%al - 7cf6: ba f7 01 00 00 mov $0x1f7,%edx - 7cfb: ee out %al,(%dx) -static inline void invlpg(void *addr) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); - 7cfc: ba f7 01 00 00 mov $0x1f7,%edx - 7d01: ec in (%dx),%al - 7d02: 83 e0 c0 and $0xffffffc0,%eax - 7d05: 3c 40 cmp $0x40,%al - 7d07: 75 f3 jne 7cfc - return data; -} - -static inline void -insl(uint32_t port, void *addr, int cnt) { - asm volatile ( - 7d09: 89 df mov %ebx,%edi - 7d0b: b9 80 00 00 00 mov $0x80,%ecx - 7d10: ba f0 01 00 00 mov $0x1f0,%edx - 7d15: fc cld - 7d16: f2 6d repnz insl (%dx),%es:(%edi) - uint32_t secno = (offset / SECTSIZE) + 1; - - // If this is too slow, we could read lots of sectors at a time. - // We'd write more to memory than asked, but it doesn't matter -- - // we load in increasing order. - for (; va < end_va; va += SECTSIZE, secno ++) { - 7d18: 81 c3 00 02 00 00 add $0x200,%ebx - 7d1e: 46 inc %esi - 7d1f: eb 8a jmp 7cab - readsect((void *)va, secno); - } -} - 7d21: 58 pop %eax - 7d22: 5b pop %ebx - 7d23: 5e pop %esi - 7d24: 5f pop %edi - 7d25: 5d pop %ebp - 7d26: c3 ret - -00007d27 : - -/* bootmain - the entry of bootloader */ -void -bootmain(void) { - 7d27: 55 push %ebp - // read the 1st page off disk - readseg((uintptr_t)ELFHDR, SECTSIZE * 8, 0); - 7d28: 31 c9 xor %ecx,%ecx - 7d2a: ba 00 10 00 00 mov $0x1000,%edx - 7d2f: b8 00 00 01 00 mov $0x10000,%eax - } -} - -/* bootmain - the entry of bootloader */ -void -bootmain(void) { - 7d34: 89 e5 mov %esp,%ebp - 7d36: 56 push %esi - 7d37: 53 push %ebx - // read the 1st page off disk - readseg((uintptr_t)ELFHDR, SECTSIZE * 8, 0); - 7d38: e8 4f ff ff ff call 7c8c - - // is this a valid ELF? - if (ELFHDR->e_magic != ELF_MAGIC) { - 7d3d: 81 3d 00 00 01 00 7f cmpl $0x464c457f,0x10000 - 7d44: 45 4c 46 - 7d47: 75 3f jne 7d88 - } - - struct proghdr *ph, *eph; - - // load each program segment (ignores ph flags) - ph = (struct proghdr *)((uintptr_t)ELFHDR + ELFHDR->e_phoff); - 7d49: a1 1c 00 01 00 mov 0x1001c,%eax - eph = ph + ELFHDR->e_phnum; - 7d4e: 0f b7 35 2c 00 01 00 movzwl 0x1002c,%esi - } - - struct proghdr *ph, *eph; - - // load each program segment (ignores ph flags) - ph = (struct proghdr *)((uintptr_t)ELFHDR + ELFHDR->e_phoff); - 7d55: 8d 98 00 00 01 00 lea 0x10000(%eax),%ebx - eph = ph + ELFHDR->e_phnum; - 7d5b: c1 e6 05 shl $0x5,%esi - 7d5e: 01 de add %ebx,%esi - for (; ph < eph; ph ++) { - 7d60: 39 f3 cmp %esi,%ebx - 7d62: 73 18 jae 7d7c - readseg(ph->p_va & 0xFFFFFF, ph->p_memsz, ph->p_offset); - 7d64: 8b 43 08 mov 0x8(%ebx),%eax - 7d67: 8b 4b 04 mov 0x4(%ebx),%ecx - struct proghdr *ph, *eph; - - // load each program segment (ignores ph flags) - ph = (struct proghdr *)((uintptr_t)ELFHDR + ELFHDR->e_phoff); - eph = ph + ELFHDR->e_phnum; - for (; ph < eph; ph ++) { - 7d6a: 83 c3 20 add $0x20,%ebx - readseg(ph->p_va & 0xFFFFFF, ph->p_memsz, ph->p_offset); - 7d6d: 8b 53 f4 mov -0xc(%ebx),%edx - 7d70: 25 ff ff ff 00 and $0xffffff,%eax - 7d75: e8 12 ff ff ff call 7c8c - 7d7a: eb e4 jmp 7d60 - } - - // call the entry point from the ELF header - // note: does not return - ((void (*)(void))(ELFHDR->e_entry & 0xFFFFFF))(); - 7d7c: a1 18 00 01 00 mov 0x10018,%eax - 7d81: 25 ff ff ff 00 and $0xffffff,%eax - 7d86: ff d0 call *%eax - asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); -} - -static inline void -outw(uint16_t port, uint16_t data) { - asm volatile ("outw %0, %1" :: "a" (data), "d" (port) : "memory"); - 7d88: ba 00 8a ff ff mov $0xffff8a00,%edx - 7d8d: 89 d0 mov %edx,%eax - 7d8f: 66 ef out %ax,(%dx) - 7d91: b8 00 8e ff ff mov $0xffff8e00,%eax - 7d96: 66 ef out %ax,(%dx) - 7d98: eb fe jmp 7d98 diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/bootblock.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/bootblock.o" deleted file mode 100644 index 3193fa0ed..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/bootblock.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/bootblock.out" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/bootblock.out" deleted file mode 100644 index cbbbd82d9..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/bootblock.out" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/debug/kdebug.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/debug/kdebug.d" deleted file mode 100644 index 61cab7920..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/debug/kdebug.d" +++ /dev/null @@ -1,5 +0,0 @@ -obj/kern/debug/kdebug.o obj/kern/debug/kdebug.d: kern/debug/kdebug.c \ - libs/defs.h libs/x86.h kern/debug/stab.h libs/stdio.h libs/stdarg.h \ - libs/string.h kern/sync/sync.h kern/driver/intr.h kern/mm/mmu.h \ - kern/debug/kdebug.h kern/trap/trap.h kern/debug/kmonitor.h \ - kern/debug/assert.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/debug/kdebug.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/debug/kdebug.o" deleted file mode 100644 index ce7cf4347..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/debug/kdebug.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/debug/kmonitor.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/debug/kmonitor.d" deleted file mode 100644 index 11c2af26a..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/debug/kmonitor.d" +++ /dev/null @@ -1,4 +0,0 @@ -obj/kern/debug/kmonitor.o obj/kern/debug/kmonitor.d: \ - kern/debug/kmonitor.c libs/stdio.h libs/defs.h libs/stdarg.h \ - libs/string.h kern/mm/mmu.h kern/trap/trap.h kern/debug/kmonitor.h \ - kern/debug/kdebug.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/debug/kmonitor.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/debug/kmonitor.o" deleted file mode 100644 index 87df00305..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/debug/kmonitor.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/debug/panic.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/debug/panic.d" deleted file mode 100644 index 084ebb66b..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/debug/panic.d" +++ /dev/null @@ -1,3 +0,0 @@ -obj/kern/debug/panic.o obj/kern/debug/panic.d: kern/debug/panic.c \ - libs/defs.h libs/stdio.h libs/stdarg.h kern/driver/intr.h \ - kern/debug/kmonitor.h kern/trap/trap.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/debug/panic.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/debug/panic.o" deleted file mode 100644 index ee2b01a19..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/debug/panic.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/driver/clock.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/driver/clock.d" deleted file mode 100644 index bdff3ffda..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/driver/clock.d" +++ /dev/null @@ -1,3 +0,0 @@ -obj/kern/driver/clock.o obj/kern/driver/clock.d: kern/driver/clock.c \ - libs/x86.h libs/defs.h kern/trap/trap.h libs/stdio.h libs/stdarg.h \ - kern/driver/picirq.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/driver/clock.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/driver/clock.o" deleted file mode 100644 index dc2dc69cf..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/driver/clock.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/driver/console.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/driver/console.d" deleted file mode 100644 index 196db2fc1..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/driver/console.d" +++ /dev/null @@ -1,5 +0,0 @@ -obj/kern/driver/console.o obj/kern/driver/console.d: \ - kern/driver/console.c libs/defs.h libs/x86.h libs/stdio.h libs/stdarg.h \ - libs/string.h kern/driver/kbdreg.h kern/driver/picirq.h kern/trap/trap.h \ - kern/mm/memlayout.h libs/atomic.h libs/list.h kern/sync/sync.h \ - kern/driver/intr.h kern/mm/mmu.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/driver/console.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/driver/console.o" deleted file mode 100644 index 06f55a1ac..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/driver/console.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/driver/ide.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/driver/ide.d" deleted file mode 100644 index 8b6e6cf00..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/driver/ide.d" +++ /dev/null @@ -1,4 +0,0 @@ -obj/kern/driver/ide.o obj/kern/driver/ide.d: kern/driver/ide.c \ - libs/defs.h libs/stdio.h libs/stdarg.h kern/trap/trap.h \ - kern/driver/picirq.h kern/fs/fs.h kern/mm/mmu.h kern/driver/ide.h \ - libs/x86.h kern/debug/assert.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/driver/ide.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/driver/ide.o" deleted file mode 100644 index 44d6da092..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/driver/ide.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/driver/intr.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/driver/intr.d" deleted file mode 100644 index d0f9177c9..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/driver/intr.d" +++ /dev/null @@ -1,2 +0,0 @@ -obj/kern/driver/intr.o obj/kern/driver/intr.d: kern/driver/intr.c \ - libs/x86.h libs/defs.h kern/driver/intr.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/driver/intr.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/driver/intr.o" deleted file mode 100644 index 6c19a7f2a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/driver/intr.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/driver/picirq.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/driver/picirq.d" deleted file mode 100644 index 2de8ab189..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/driver/picirq.d" +++ /dev/null @@ -1,2 +0,0 @@ -obj/kern/driver/picirq.o obj/kern/driver/picirq.d: kern/driver/picirq.c \ - libs/defs.h libs/x86.h kern/driver/picirq.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/driver/picirq.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/driver/picirq.o" deleted file mode 100644 index 9905ff213..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/driver/picirq.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/fs/swapfs.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/fs/swapfs.d" deleted file mode 100644 index 4a52b61ba..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/fs/swapfs.d" +++ /dev/null @@ -1,5 +0,0 @@ -obj/kern/fs/swapfs.o obj/kern/fs/swapfs.d: kern/fs/swapfs.c \ - kern/mm/swap.h libs/defs.h kern/mm/memlayout.h libs/atomic.h libs/list.h \ - kern/mm/pmm.h kern/mm/mmu.h kern/debug/assert.h kern/mm/vmm.h \ - kern/sync/sync.h libs/x86.h kern/driver/intr.h kern/fs/swapfs.h \ - kern/fs/fs.h kern/driver/ide.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/fs/swapfs.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/fs/swapfs.o" deleted file mode 100644 index 089da329f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/fs/swapfs.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/init/entry.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/init/entry.d" deleted file mode 100644 index c6b2d371d..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/init/entry.d" +++ /dev/null @@ -1,2 +0,0 @@ -obj/kern/init/entry.o obj/kern/init/entry.d: kern/init/entry.S \ - kern/mm/mmu.h kern/mm/memlayout.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/init/entry.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/init/entry.o" deleted file mode 100644 index eeb0e402d..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/init/entry.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/init/init.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/init/init.d" deleted file mode 100644 index 3b72173f7..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/init/init.d" +++ /dev/null @@ -1,7 +0,0 @@ -obj/kern/init/init.o obj/kern/init/init.d: kern/init/init.c libs/defs.h \ - libs/stdio.h libs/stdarg.h libs/string.h kern/driver/console.h \ - kern/debug/kdebug.h kern/trap/trap.h kern/driver/picirq.h \ - kern/driver/clock.h kern/driver/intr.h kern/mm/pmm.h kern/mm/mmu.h \ - kern/mm/memlayout.h libs/atomic.h libs/list.h kern/debug/assert.h \ - kern/mm/vmm.h kern/sync/sync.h libs/x86.h kern/driver/ide.h \ - kern/mm/swap.h kern/process/proc.h kern/debug/kmonitor.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/init/init.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/init/init.o" deleted file mode 100644 index 8581c9ade..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/init/init.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/libs/readline.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/libs/readline.d" deleted file mode 100644 index 656abf96b..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/libs/readline.d" +++ /dev/null @@ -1,2 +0,0 @@ -obj/kern/libs/readline.o obj/kern/libs/readline.d: kern/libs/readline.c \ - libs/stdio.h libs/defs.h libs/stdarg.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/libs/readline.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/libs/readline.o" deleted file mode 100644 index 844924b81..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/libs/readline.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/libs/stdio.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/libs/stdio.d" deleted file mode 100644 index 5e205ace5..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/libs/stdio.d" +++ /dev/null @@ -1,2 +0,0 @@ -obj/kern/libs/stdio.o obj/kern/libs/stdio.d: kern/libs/stdio.c \ - libs/defs.h libs/stdio.h libs/stdarg.h kern/driver/console.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/libs/stdio.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/libs/stdio.o" deleted file mode 100644 index 3b16fd27e..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/libs/stdio.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/default_pmm.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/default_pmm.d" deleted file mode 100644 index 8c415bfea..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/default_pmm.d" +++ /dev/null @@ -1,4 +0,0 @@ -obj/kern/mm/default_pmm.o obj/kern/mm/default_pmm.d: \ - kern/mm/default_pmm.c kern/mm/pmm.h libs/defs.h kern/mm/mmu.h \ - kern/mm/memlayout.h libs/atomic.h libs/list.h kern/debug/assert.h \ - libs/string.h kern/mm/default_pmm.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/default_pmm.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/default_pmm.o" deleted file mode 100644 index 879f88c31..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/default_pmm.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/kmalloc.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/kmalloc.d" deleted file mode 100644 index a53368ae6..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/kmalloc.d" +++ /dev/null @@ -1,5 +0,0 @@ -obj/kern/mm/kmalloc.o obj/kern/mm/kmalloc.d: kern/mm/kmalloc.c \ - libs/defs.h libs/list.h kern/mm/memlayout.h libs/atomic.h \ - kern/debug/assert.h kern/mm/kmalloc.h kern/sync/sync.h libs/x86.h \ - kern/driver/intr.h kern/mm/mmu.h kern/mm/pmm.h libs/stdio.h \ - libs/stdarg.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/kmalloc.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/kmalloc.o" deleted file mode 100644 index 116e1ba12..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/kmalloc.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/pmm.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/pmm.d" deleted file mode 100644 index d233e6f37..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/pmm.d" +++ /dev/null @@ -1,6 +0,0 @@ -obj/kern/mm/pmm.o obj/kern/mm/pmm.d: kern/mm/pmm.c libs/defs.h libs/x86.h \ - libs/stdio.h libs/stdarg.h libs/string.h kern/mm/mmu.h \ - kern/mm/memlayout.h libs/atomic.h libs/list.h kern/mm/pmm.h \ - kern/debug/assert.h kern/mm/default_pmm.h kern/sync/sync.h \ - kern/driver/intr.h libs/error.h kern/mm/swap.h kern/mm/vmm.h \ - kern/mm/kmalloc.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/pmm.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/pmm.o" deleted file mode 100644 index 8ccbade32..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/pmm.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/swap.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/swap.d" deleted file mode 100644 index 9b7af1217..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/swap.d" +++ /dev/null @@ -1,5 +0,0 @@ -obj/kern/mm/swap.o obj/kern/mm/swap.d: kern/mm/swap.c kern/mm/swap.h \ - libs/defs.h kern/mm/memlayout.h libs/atomic.h libs/list.h kern/mm/pmm.h \ - kern/mm/mmu.h kern/debug/assert.h kern/mm/vmm.h kern/sync/sync.h \ - libs/x86.h kern/driver/intr.h kern/fs/swapfs.h kern/mm/swap_fifo.h \ - kern/mm/swap_clock.h libs/stdio.h libs/stdarg.h libs/string.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/swap.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/swap.o" deleted file mode 100644 index 218936b40..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/swap.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/swap_clock.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/swap_clock.d" deleted file mode 100644 index 7c3ddc5bc..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/swap_clock.d" +++ /dev/null @@ -1,5 +0,0 @@ -obj/kern/mm/swap_clock.o obj/kern/mm/swap_clock.d: kern/mm/swap_clock.c \ - libs/defs.h libs/x86.h libs/stdio.h libs/stdarg.h libs/string.h \ - kern/mm/swap.h kern/mm/memlayout.h libs/atomic.h libs/list.h \ - kern/mm/pmm.h kern/mm/mmu.h kern/debug/assert.h kern/mm/vmm.h \ - kern/sync/sync.h kern/driver/intr.h kern/mm/swap_clock.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/swap_clock.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/swap_clock.o" deleted file mode 100644 index 7de3c3c71..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/swap_clock.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/swap_fifo.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/swap_fifo.d" deleted file mode 100644 index 34b94a674..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/swap_fifo.d" +++ /dev/null @@ -1,5 +0,0 @@ -obj/kern/mm/swap_fifo.o obj/kern/mm/swap_fifo.d: kern/mm/swap_fifo.c \ - libs/defs.h libs/x86.h libs/stdio.h libs/stdarg.h libs/string.h \ - kern/mm/swap.h kern/mm/memlayout.h libs/atomic.h libs/list.h \ - kern/mm/pmm.h kern/mm/mmu.h kern/debug/assert.h kern/mm/vmm.h \ - kern/sync/sync.h kern/driver/intr.h kern/mm/swap_fifo.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/swap_fifo.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/swap_fifo.o" deleted file mode 100644 index bfe2e66f5..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/swap_fifo.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/vmm.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/vmm.d" deleted file mode 100644 index 3f60b7190..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/vmm.d" +++ /dev/null @@ -1,5 +0,0 @@ -obj/kern/mm/vmm.o obj/kern/mm/vmm.d: kern/mm/vmm.c kern/mm/vmm.h \ - libs/defs.h libs/list.h kern/mm/memlayout.h libs/atomic.h \ - kern/sync/sync.h libs/x86.h kern/driver/intr.h kern/mm/mmu.h \ - libs/string.h kern/debug/assert.h libs/stdio.h libs/stdarg.h \ - libs/error.h kern/mm/pmm.h kern/mm/swap.h kern/mm/kmalloc.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/vmm.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/vmm.o" deleted file mode 100644 index a88b6047b..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/mm/vmm.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/process/entry.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/process/entry.d" deleted file mode 100644 index e1ff346db..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/process/entry.d" +++ /dev/null @@ -1 +0,0 @@ -obj/kern/process/entry.o obj/kern/process/entry.d: kern/process/entry.S diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/process/entry.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/process/entry.o" deleted file mode 100644 index 4a3e2178a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/process/entry.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/process/proc.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/process/proc.d" deleted file mode 100644 index cb0f1bdfe..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/process/proc.d" +++ /dev/null @@ -1,6 +0,0 @@ -obj/kern/process/proc.o obj/kern/process/proc.d: kern/process/proc.c \ - kern/process/proc.h libs/defs.h libs/list.h kern/trap/trap.h \ - kern/mm/memlayout.h libs/atomic.h kern/mm/kmalloc.h libs/string.h \ - kern/sync/sync.h libs/x86.h kern/driver/intr.h kern/mm/mmu.h \ - kern/mm/pmm.h kern/debug/assert.h libs/error.h kern/schedule/sched.h \ - libs/elf.h kern/mm/vmm.h libs/stdio.h libs/stdarg.h libs/stdlib.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/process/proc.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/process/proc.o" deleted file mode 100644 index 83486a95d..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/process/proc.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/process/switch.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/process/switch.d" deleted file mode 100644 index dcc0fd77f..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/process/switch.d" +++ /dev/null @@ -1,2 +0,0 @@ -obj/kern/process/switch.o obj/kern/process/switch.d: \ - kern/process/switch.S diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/process/switch.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/process/switch.o" deleted file mode 100644 index 065616b77..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/process/switch.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/schedule/sched.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/schedule/sched.d" deleted file mode 100644 index 0bba7087a..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/schedule/sched.d" +++ /dev/null @@ -1,5 +0,0 @@ -obj/kern/schedule/sched.o obj/kern/schedule/sched.d: \ - kern/schedule/sched.c libs/list.h libs/defs.h kern/sync/sync.h \ - libs/x86.h kern/driver/intr.h kern/mm/mmu.h kern/process/proc.h \ - kern/trap/trap.h kern/mm/memlayout.h libs/atomic.h kern/schedule/sched.h \ - kern/debug/assert.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/schedule/sched.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/schedule/sched.o" deleted file mode 100644 index 90a05606a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/schedule/sched.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/trap/trap.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/trap/trap.d" deleted file mode 100644 index be9945435..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/trap/trap.d" +++ /dev/null @@ -1,6 +0,0 @@ -obj/kern/trap/trap.o obj/kern/trap/trap.d: kern/trap/trap.c libs/defs.h \ - kern/mm/mmu.h kern/mm/memlayout.h libs/atomic.h libs/list.h \ - kern/driver/clock.h kern/trap/trap.h libs/x86.h libs/stdio.h \ - libs/stdarg.h kern/debug/assert.h kern/driver/console.h kern/mm/vmm.h \ - kern/sync/sync.h kern/driver/intr.h kern/mm/swap.h kern/mm/pmm.h \ - kern/debug/kdebug.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/trap/trap.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/trap/trap.o" deleted file mode 100644 index 0a32e2423..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/trap/trap.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/trap/trapentry.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/trap/trapentry.d" deleted file mode 100644 index f37d596cc..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/trap/trapentry.d" +++ /dev/null @@ -1,2 +0,0 @@ -obj/kern/trap/trapentry.o obj/kern/trap/trapentry.d: \ - kern/trap/trapentry.S kern/mm/memlayout.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/trap/trapentry.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/trap/trapentry.o" deleted file mode 100644 index 35d86b1b7..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/trap/trapentry.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/trap/vectors.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/trap/vectors.d" deleted file mode 100644 index e5813e776..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/trap/vectors.d" +++ /dev/null @@ -1 +0,0 @@ -obj/kern/trap/vectors.o obj/kern/trap/vectors.d: kern/trap/vectors.S diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/trap/vectors.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/trap/vectors.o" deleted file mode 100644 index 522ad3890..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kern/trap/vectors.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kernel.asm" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kernel.asm" deleted file mode 100644 index 94c7ce8df..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kernel.asm" +++ /dev/null @@ -1,21110 +0,0 @@ - -bin/kernel: file format elf32-i386 - - -Disassembly of section .text: - -c0100000 : -.text -.globl kern_entry -kern_entry: - # reload temperate gdt (second time) to remap all physical memory - # virtual_addr 0~4G=linear_addr&physical_addr -KERNBASE~4G-KERNBASE - lgdt REALLOC(__gdtdesc) -c0100000: 0f 01 15 18 60 12 00 lgdtl 0x126018 - movl $KERNEL_DS, %eax -c0100007: b8 10 00 00 00 mov $0x10,%eax - movw %ax, %ds -c010000c: 8e d8 mov %eax,%ds - movw %ax, %es -c010000e: 8e c0 mov %eax,%es - movw %ax, %ss -c0100010: 8e d0 mov %eax,%ss - - ljmp $KERNEL_CS, $relocated -c0100012: ea 19 00 10 c0 08 00 ljmp $0x8,$0xc0100019 - -c0100019 : - -relocated: - - # set ebp, esp - movl $0x0, %ebp -c0100019: bd 00 00 00 00 mov $0x0,%ebp - # the kernel stack region is from bootstack -- bootstacktop, - # the kernel stack size is KSTACKSIZE (8KB)defined in memlayout.h - movl $bootstacktop, %esp -c010001e: bc 00 60 12 c0 mov $0xc0126000,%esp - # now kernel stack is ready , call the first C function - call kern_init -c0100023: e8 02 00 00 00 call c010002a - -c0100028 : - -# should never get here -spin: - jmp spin -c0100028: eb fe jmp c0100028 - -c010002a : -int kern_init(void) __attribute__((noreturn)); -void grade_backtrace(void); -static void lab1_switch_test(void); - -int -kern_init(void) { -c010002a: 55 push %ebp -c010002b: 89 e5 mov %esp,%ebp -c010002d: 83 ec 18 sub $0x18,%esp - extern char edata[], end[]; - memset(edata, 0, end - edata); -c0100030: ba 2c 9c 12 c0 mov $0xc0129c2c,%edx -c0100035: b8 b0 6a 12 c0 mov $0xc0126ab0,%eax -c010003a: 29 c2 sub %eax,%edx -c010003c: 89 d0 mov %edx,%eax -c010003e: 83 ec 04 sub $0x4,%esp -c0100041: 50 push %eax -c0100042: 6a 00 push $0x0 -c0100044: 68 b0 6a 12 c0 push $0xc0126ab0 -c0100049: e8 18 96 00 00 call c0109666 -c010004e: 83 c4 10 add $0x10,%esp - - cons_init(); // init the console -c0100051: e8 9e 1d 00 00 call c0101df4 - - const char *message = "(THU.CST) os is loading ..."; -c0100056: c7 45 f4 00 9f 10 c0 movl $0xc0109f00,-0xc(%ebp) - cprintf("%s\n\n", message); -c010005d: 83 ec 08 sub $0x8,%esp -c0100060: ff 75 f4 pushl -0xc(%ebp) -c0100063: 68 1c 9f 10 c0 push $0xc0109f1c -c0100068: e8 11 02 00 00 call c010027e -c010006d: 83 c4 10 add $0x10,%esp - - print_kerninfo(); -c0100070: e8 93 08 00 00 call c0100908 - - grade_backtrace(); -c0100075: e8 8b 00 00 00 call c0100105 - - pmm_init(); // init physical memory management -c010007a: e8 f1 3a 00 00 call c0103b70 - - pic_init(); // init interrupt controller -c010007f: e8 e2 1e 00 00 call c0101f66 - idt_init(); // init interrupt descriptor table -c0100084: e8 64 20 00 00 call c01020ed - - vmm_init(); // init virtual memory management -c0100089: e8 81 4e 00 00 call c0104f0f - proc_init(); // init process table -c010008e: e8 a1 8f 00 00 call c0109034 - - ide_init(); // init ide devices -c0100093: e8 2b 0d 00 00 call c0100dc3 - swap_init(); // init swap -c0100098: e8 ee 56 00 00 call c010578b - - clock_init(); // init clock interrupt -c010009d: e8 f9 14 00 00 call c010159b - intr_enable(); // enable irq interrupt -c01000a2: e8 fc 1f 00 00 call c01020a3 - - //LAB1: CAHLLENGE 1 If you try to do it, uncomment lab1_switch_test() - // user/kernel mode switch test - //lab1_switch_test(); - - cpu_idle(); // run idle process -c01000a7: e8 28 91 00 00 call c01091d4 - -c01000ac : -} - -void __attribute__((noinline)) -grade_backtrace2(int arg0, int arg1, int arg2, int arg3) { -c01000ac: 55 push %ebp -c01000ad: 89 e5 mov %esp,%ebp -c01000af: 83 ec 08 sub $0x8,%esp - mon_backtrace(0, NULL, NULL); -c01000b2: 83 ec 04 sub $0x4,%esp -c01000b5: 6a 00 push $0x0 -c01000b7: 6a 00 push $0x0 -c01000b9: 6a 00 push $0x0 -c01000bb: e8 97 0c 00 00 call c0100d57 -c01000c0: 83 c4 10 add $0x10,%esp -} -c01000c3: 90 nop -c01000c4: c9 leave -c01000c5: c3 ret - -c01000c6 : - -void __attribute__((noinline)) -grade_backtrace1(int arg0, int arg1) { -c01000c6: 55 push %ebp -c01000c7: 89 e5 mov %esp,%ebp -c01000c9: 53 push %ebx -c01000ca: 83 ec 04 sub $0x4,%esp - grade_backtrace2(arg0, (int)&arg0, arg1, (int)&arg1); -c01000cd: 8d 4d 0c lea 0xc(%ebp),%ecx -c01000d0: 8b 55 0c mov 0xc(%ebp),%edx -c01000d3: 8d 5d 08 lea 0x8(%ebp),%ebx -c01000d6: 8b 45 08 mov 0x8(%ebp),%eax -c01000d9: 51 push %ecx -c01000da: 52 push %edx -c01000db: 53 push %ebx -c01000dc: 50 push %eax -c01000dd: e8 ca ff ff ff call c01000ac -c01000e2: 83 c4 10 add $0x10,%esp -} -c01000e5: 90 nop -c01000e6: 8b 5d fc mov -0x4(%ebp),%ebx -c01000e9: c9 leave -c01000ea: c3 ret - -c01000eb : - -void __attribute__((noinline)) -grade_backtrace0(int arg0, int arg1, int arg2) { -c01000eb: 55 push %ebp -c01000ec: 89 e5 mov %esp,%ebp -c01000ee: 83 ec 08 sub $0x8,%esp - grade_backtrace1(arg0, arg2); -c01000f1: 83 ec 08 sub $0x8,%esp -c01000f4: ff 75 10 pushl 0x10(%ebp) -c01000f7: ff 75 08 pushl 0x8(%ebp) -c01000fa: e8 c7 ff ff ff call c01000c6 -c01000ff: 83 c4 10 add $0x10,%esp -} -c0100102: 90 nop -c0100103: c9 leave -c0100104: c3 ret - -c0100105 : - -void -grade_backtrace(void) { -c0100105: 55 push %ebp -c0100106: 89 e5 mov %esp,%ebp -c0100108: 83 ec 08 sub $0x8,%esp - grade_backtrace0(0, (int)kern_init, 0xffff0000); -c010010b: b8 2a 00 10 c0 mov $0xc010002a,%eax -c0100110: 83 ec 04 sub $0x4,%esp -c0100113: 68 00 00 ff ff push $0xffff0000 -c0100118: 50 push %eax -c0100119: 6a 00 push $0x0 -c010011b: e8 cb ff ff ff call c01000eb -c0100120: 83 c4 10 add $0x10,%esp -} -c0100123: 90 nop -c0100124: c9 leave -c0100125: c3 ret - -c0100126 : - -static void -lab1_print_cur_status(void) { -c0100126: 55 push %ebp -c0100127: 89 e5 mov %esp,%ebp -c0100129: 83 ec 18 sub $0x18,%esp - static int round = 0; - uint16_t reg1, reg2, reg3, reg4; - asm volatile ( -c010012c: 8c 4d f6 mov %cs,-0xa(%ebp) -c010012f: 8c 5d f4 mov %ds,-0xc(%ebp) -c0100132: 8c 45 f2 mov %es,-0xe(%ebp) -c0100135: 8c 55 f0 mov %ss,-0x10(%ebp) - "mov %%cs, %0;" - "mov %%ds, %1;" - "mov %%es, %2;" - "mov %%ss, %3;" - : "=m"(reg1), "=m"(reg2), "=m"(reg3), "=m"(reg4)); - cprintf("%d: @ring %d\n", round, reg1 & 3); -c0100138: 0f b7 45 f6 movzwl -0xa(%ebp),%eax -c010013c: 0f b7 c0 movzwl %ax,%eax -c010013f: 83 e0 03 and $0x3,%eax -c0100142: 89 c2 mov %eax,%edx -c0100144: a1 c0 6a 12 c0 mov 0xc0126ac0,%eax -c0100149: 83 ec 04 sub $0x4,%esp -c010014c: 52 push %edx -c010014d: 50 push %eax -c010014e: 68 21 9f 10 c0 push $0xc0109f21 -c0100153: e8 26 01 00 00 call c010027e -c0100158: 83 c4 10 add $0x10,%esp - cprintf("%d: cs = %x\n", round, reg1); -c010015b: 0f b7 45 f6 movzwl -0xa(%ebp),%eax -c010015f: 0f b7 d0 movzwl %ax,%edx -c0100162: a1 c0 6a 12 c0 mov 0xc0126ac0,%eax -c0100167: 83 ec 04 sub $0x4,%esp -c010016a: 52 push %edx -c010016b: 50 push %eax -c010016c: 68 2f 9f 10 c0 push $0xc0109f2f -c0100171: e8 08 01 00 00 call c010027e -c0100176: 83 c4 10 add $0x10,%esp - cprintf("%d: ds = %x\n", round, reg2); -c0100179: 0f b7 45 f4 movzwl -0xc(%ebp),%eax -c010017d: 0f b7 d0 movzwl %ax,%edx -c0100180: a1 c0 6a 12 c0 mov 0xc0126ac0,%eax -c0100185: 83 ec 04 sub $0x4,%esp -c0100188: 52 push %edx -c0100189: 50 push %eax -c010018a: 68 3d 9f 10 c0 push $0xc0109f3d -c010018f: e8 ea 00 00 00 call c010027e -c0100194: 83 c4 10 add $0x10,%esp - cprintf("%d: es = %x\n", round, reg3); -c0100197: 0f b7 45 f2 movzwl -0xe(%ebp),%eax -c010019b: 0f b7 d0 movzwl %ax,%edx -c010019e: a1 c0 6a 12 c0 mov 0xc0126ac0,%eax -c01001a3: 83 ec 04 sub $0x4,%esp -c01001a6: 52 push %edx -c01001a7: 50 push %eax -c01001a8: 68 4b 9f 10 c0 push $0xc0109f4b -c01001ad: e8 cc 00 00 00 call c010027e -c01001b2: 83 c4 10 add $0x10,%esp - cprintf("%d: ss = %x\n", round, reg4); -c01001b5: 0f b7 45 f0 movzwl -0x10(%ebp),%eax -c01001b9: 0f b7 d0 movzwl %ax,%edx -c01001bc: a1 c0 6a 12 c0 mov 0xc0126ac0,%eax -c01001c1: 83 ec 04 sub $0x4,%esp -c01001c4: 52 push %edx -c01001c5: 50 push %eax -c01001c6: 68 59 9f 10 c0 push $0xc0109f59 -c01001cb: e8 ae 00 00 00 call c010027e -c01001d0: 83 c4 10 add $0x10,%esp - round ++; -c01001d3: a1 c0 6a 12 c0 mov 0xc0126ac0,%eax -c01001d8: 83 c0 01 add $0x1,%eax -c01001db: a3 c0 6a 12 c0 mov %eax,0xc0126ac0 -} -c01001e0: 90 nop -c01001e1: c9 leave -c01001e2: c3 ret - -c01001e3 : - -static void -lab1_switch_to_user(void) { -c01001e3: 55 push %ebp -c01001e4: 89 e5 mov %esp,%ebp - //LAB1 CHALLENGE 1 : TODO -} -c01001e6: 90 nop -c01001e7: 5d pop %ebp -c01001e8: c3 ret - -c01001e9 : - -static void -lab1_switch_to_kernel(void) { -c01001e9: 55 push %ebp -c01001ea: 89 e5 mov %esp,%ebp - //LAB1 CHALLENGE 1 : TODO -} -c01001ec: 90 nop -c01001ed: 5d pop %ebp -c01001ee: c3 ret - -c01001ef : - -static void -lab1_switch_test(void) { -c01001ef: 55 push %ebp -c01001f0: 89 e5 mov %esp,%ebp -c01001f2: 83 ec 08 sub $0x8,%esp - lab1_print_cur_status(); -c01001f5: e8 2c ff ff ff call c0100126 - cprintf("+++ switch to user mode +++\n"); -c01001fa: 83 ec 0c sub $0xc,%esp -c01001fd: 68 68 9f 10 c0 push $0xc0109f68 -c0100202: e8 77 00 00 00 call c010027e -c0100207: 83 c4 10 add $0x10,%esp - lab1_switch_to_user(); -c010020a: e8 d4 ff ff ff call c01001e3 - lab1_print_cur_status(); -c010020f: e8 12 ff ff ff call c0100126 - cprintf("+++ switch to kernel mode +++\n"); -c0100214: 83 ec 0c sub $0xc,%esp -c0100217: 68 88 9f 10 c0 push $0xc0109f88 -c010021c: e8 5d 00 00 00 call c010027e -c0100221: 83 c4 10 add $0x10,%esp - lab1_switch_to_kernel(); -c0100224: e8 c0 ff ff ff call c01001e9 - lab1_print_cur_status(); -c0100229: e8 f8 fe ff ff call c0100126 -} -c010022e: 90 nop -c010022f: c9 leave -c0100230: c3 ret - -c0100231 : -/* * - * cputch - writes a single character @c to stdout, and it will - * increace the value of counter pointed by @cnt. - * */ -static void -cputch(int c, int *cnt) { -c0100231: 55 push %ebp -c0100232: 89 e5 mov %esp,%ebp -c0100234: 83 ec 08 sub $0x8,%esp - cons_putc(c); -c0100237: 83 ec 0c sub $0xc,%esp -c010023a: ff 75 08 pushl 0x8(%ebp) -c010023d: e8 e3 1b 00 00 call c0101e25 -c0100242: 83 c4 10 add $0x10,%esp - (*cnt) ++; -c0100245: 8b 45 0c mov 0xc(%ebp),%eax -c0100248: 8b 00 mov (%eax),%eax -c010024a: 8d 50 01 lea 0x1(%eax),%edx -c010024d: 8b 45 0c mov 0xc(%ebp),%eax -c0100250: 89 10 mov %edx,(%eax) -} -c0100252: 90 nop -c0100253: c9 leave -c0100254: c3 ret - -c0100255 : - * - * Call this function if you are already dealing with a va_list. - * Or you probably want cprintf() instead. - * */ -int -vcprintf(const char *fmt, va_list ap) { -c0100255: 55 push %ebp -c0100256: 89 e5 mov %esp,%ebp -c0100258: 83 ec 18 sub $0x18,%esp - int cnt = 0; -c010025b: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - vprintfmt((void*)cputch, &cnt, fmt, ap); -c0100262: ff 75 0c pushl 0xc(%ebp) -c0100265: ff 75 08 pushl 0x8(%ebp) -c0100268: 8d 45 f4 lea -0xc(%ebp),%eax -c010026b: 50 push %eax -c010026c: 68 31 02 10 c0 push $0xc0100231 -c0100271: e8 26 97 00 00 call c010999c -c0100276: 83 c4 10 add $0x10,%esp - return cnt; -c0100279: 8b 45 f4 mov -0xc(%ebp),%eax -} -c010027c: c9 leave -c010027d: c3 ret - -c010027e : - * - * The return value is the number of characters which would be - * written to stdout. - * */ -int -cprintf(const char *fmt, ...) { -c010027e: 55 push %ebp -c010027f: 89 e5 mov %esp,%ebp -c0100281: 83 ec 18 sub $0x18,%esp - va_list ap; - int cnt; - va_start(ap, fmt); -c0100284: 8d 45 0c lea 0xc(%ebp),%eax -c0100287: 89 45 f0 mov %eax,-0x10(%ebp) - cnt = vcprintf(fmt, ap); -c010028a: 8b 45 f0 mov -0x10(%ebp),%eax -c010028d: 83 ec 08 sub $0x8,%esp -c0100290: 50 push %eax -c0100291: ff 75 08 pushl 0x8(%ebp) -c0100294: e8 bc ff ff ff call c0100255 -c0100299: 83 c4 10 add $0x10,%esp -c010029c: 89 45 f4 mov %eax,-0xc(%ebp) - va_end(ap); - return cnt; -c010029f: 8b 45 f4 mov -0xc(%ebp),%eax -} -c01002a2: c9 leave -c01002a3: c3 ret - -c01002a4 : - -/* cputchar - writes a single character to stdout */ -void -cputchar(int c) { -c01002a4: 55 push %ebp -c01002a5: 89 e5 mov %esp,%ebp -c01002a7: 83 ec 08 sub $0x8,%esp - cons_putc(c); -c01002aa: 83 ec 0c sub $0xc,%esp -c01002ad: ff 75 08 pushl 0x8(%ebp) -c01002b0: e8 70 1b 00 00 call c0101e25 -c01002b5: 83 c4 10 add $0x10,%esp -} -c01002b8: 90 nop -c01002b9: c9 leave -c01002ba: c3 ret - -c01002bb : -/* * - * cputs- writes the string pointed by @str to stdout and - * appends a newline character. - * */ -int -cputs(const char *str) { -c01002bb: 55 push %ebp -c01002bc: 89 e5 mov %esp,%ebp -c01002be: 83 ec 18 sub $0x18,%esp - int cnt = 0; -c01002c1: c7 45 f0 00 00 00 00 movl $0x0,-0x10(%ebp) - char c; - while ((c = *str ++) != '\0') { -c01002c8: eb 14 jmp c01002de - cputch(c, &cnt); -c01002ca: 0f be 45 f7 movsbl -0x9(%ebp),%eax -c01002ce: 83 ec 08 sub $0x8,%esp -c01002d1: 8d 55 f0 lea -0x10(%ebp),%edx -c01002d4: 52 push %edx -c01002d5: 50 push %eax -c01002d6: e8 56 ff ff ff call c0100231 -c01002db: 83 c4 10 add $0x10,%esp - * */ -int -cputs(const char *str) { - int cnt = 0; - char c; - while ((c = *str ++) != '\0') { -c01002de: 8b 45 08 mov 0x8(%ebp),%eax -c01002e1: 8d 50 01 lea 0x1(%eax),%edx -c01002e4: 89 55 08 mov %edx,0x8(%ebp) -c01002e7: 0f b6 00 movzbl (%eax),%eax -c01002ea: 88 45 f7 mov %al,-0x9(%ebp) -c01002ed: 80 7d f7 00 cmpb $0x0,-0x9(%ebp) -c01002f1: 75 d7 jne c01002ca - cputch(c, &cnt); - } - cputch('\n', &cnt); -c01002f3: 83 ec 08 sub $0x8,%esp -c01002f6: 8d 45 f0 lea -0x10(%ebp),%eax -c01002f9: 50 push %eax -c01002fa: 6a 0a push $0xa -c01002fc: e8 30 ff ff ff call c0100231 -c0100301: 83 c4 10 add $0x10,%esp - return cnt; -c0100304: 8b 45 f0 mov -0x10(%ebp),%eax -} -c0100307: c9 leave -c0100308: c3 ret - -c0100309 : - -/* getchar - reads a single non-zero character from stdin */ -int -getchar(void) { -c0100309: 55 push %ebp -c010030a: 89 e5 mov %esp,%ebp -c010030c: 83 ec 18 sub $0x18,%esp - int c; - while ((c = cons_getc()) == 0) -c010030f: e8 5a 1b 00 00 call c0101e6e -c0100314: 89 45 f4 mov %eax,-0xc(%ebp) -c0100317: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c010031b: 74 f2 je c010030f - /* do nothing */; - return c; -c010031d: 8b 45 f4 mov -0xc(%ebp),%eax -} -c0100320: c9 leave -c0100321: c3 ret - -c0100322 : - * The readline() function returns the text of the line read. If some errors - * are happened, NULL is returned. The return value is a global variable, - * thus it should be copied before it is used. - * */ -char * -readline(const char *prompt) { -c0100322: 55 push %ebp -c0100323: 89 e5 mov %esp,%ebp -c0100325: 83 ec 18 sub $0x18,%esp - if (prompt != NULL) { -c0100328: 83 7d 08 00 cmpl $0x0,0x8(%ebp) -c010032c: 74 13 je c0100341 - cprintf("%s", prompt); -c010032e: 83 ec 08 sub $0x8,%esp -c0100331: ff 75 08 pushl 0x8(%ebp) -c0100334: 68 a7 9f 10 c0 push $0xc0109fa7 -c0100339: e8 40 ff ff ff call c010027e -c010033e: 83 c4 10 add $0x10,%esp - } - int i = 0, c; -c0100341: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - while (1) { - c = getchar(); -c0100348: e8 bc ff ff ff call c0100309 -c010034d: 89 45 f0 mov %eax,-0x10(%ebp) - if (c < 0) { -c0100350: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) -c0100354: 79 0a jns c0100360 - return NULL; -c0100356: b8 00 00 00 00 mov $0x0,%eax -c010035b: e9 82 00 00 00 jmp c01003e2 - } - else if (c >= ' ' && i < BUFSIZE - 1) { -c0100360: 83 7d f0 1f cmpl $0x1f,-0x10(%ebp) -c0100364: 7e 2b jle c0100391 -c0100366: 81 7d f4 fe 03 00 00 cmpl $0x3fe,-0xc(%ebp) -c010036d: 7f 22 jg c0100391 - cputchar(c); -c010036f: 83 ec 0c sub $0xc,%esp -c0100372: ff 75 f0 pushl -0x10(%ebp) -c0100375: e8 2a ff ff ff call c01002a4 -c010037a: 83 c4 10 add $0x10,%esp - buf[i ++] = c; -c010037d: 8b 45 f4 mov -0xc(%ebp),%eax -c0100380: 8d 50 01 lea 0x1(%eax),%edx -c0100383: 89 55 f4 mov %edx,-0xc(%ebp) -c0100386: 8b 55 f0 mov -0x10(%ebp),%edx -c0100389: 88 90 e0 6a 12 c0 mov %dl,-0x3fed9520(%eax) -c010038f: eb 4c jmp c01003dd - } - else if (c == '\b' && i > 0) { -c0100391: 83 7d f0 08 cmpl $0x8,-0x10(%ebp) -c0100395: 75 1a jne c01003b1 -c0100397: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c010039b: 7e 14 jle c01003b1 - cputchar(c); -c010039d: 83 ec 0c sub $0xc,%esp -c01003a0: ff 75 f0 pushl -0x10(%ebp) -c01003a3: e8 fc fe ff ff call c01002a4 -c01003a8: 83 c4 10 add $0x10,%esp - i --; -c01003ab: 83 6d f4 01 subl $0x1,-0xc(%ebp) -c01003af: eb 2c jmp c01003dd - } - else if (c == '\n' || c == '\r') { -c01003b1: 83 7d f0 0a cmpl $0xa,-0x10(%ebp) -c01003b5: 74 06 je c01003bd -c01003b7: 83 7d f0 0d cmpl $0xd,-0x10(%ebp) -c01003bb: 75 8b jne c0100348 - cputchar(c); -c01003bd: 83 ec 0c sub $0xc,%esp -c01003c0: ff 75 f0 pushl -0x10(%ebp) -c01003c3: e8 dc fe ff ff call c01002a4 -c01003c8: 83 c4 10 add $0x10,%esp - buf[i] = '\0'; -c01003cb: 8b 45 f4 mov -0xc(%ebp),%eax -c01003ce: 05 e0 6a 12 c0 add $0xc0126ae0,%eax -c01003d3: c6 00 00 movb $0x0,(%eax) - return buf; -c01003d6: b8 e0 6a 12 c0 mov $0xc0126ae0,%eax -c01003db: eb 05 jmp c01003e2 - } - } -c01003dd: e9 66 ff ff ff jmp c0100348 -} -c01003e2: c9 leave -c01003e3: c3 ret - -c01003e4 <__panic>: -/* * - * __panic - __panic is called on unresolvable fatal errors. it prints - * "panic: 'message'", and then enters the kernel monitor. - * */ -void -__panic(const char *file, int line, const char *fmt, ...) { -c01003e4: 55 push %ebp -c01003e5: 89 e5 mov %esp,%ebp -c01003e7: 83 ec 18 sub $0x18,%esp - if (is_panic) { -c01003ea: a1 e0 6e 12 c0 mov 0xc0126ee0,%eax -c01003ef: 85 c0 test %eax,%eax -c01003f1: 75 4a jne c010043d <__panic+0x59> - goto panic_dead; - } - is_panic = 1; -c01003f3: c7 05 e0 6e 12 c0 01 movl $0x1,0xc0126ee0 -c01003fa: 00 00 00 - - // print the 'message' - va_list ap; - va_start(ap, fmt); -c01003fd: 8d 45 14 lea 0x14(%ebp),%eax -c0100400: 89 45 f4 mov %eax,-0xc(%ebp) - cprintf("kernel panic at %s:%d:\n ", file, line); -c0100403: 83 ec 04 sub $0x4,%esp -c0100406: ff 75 0c pushl 0xc(%ebp) -c0100409: ff 75 08 pushl 0x8(%ebp) -c010040c: 68 aa 9f 10 c0 push $0xc0109faa -c0100411: e8 68 fe ff ff call c010027e -c0100416: 83 c4 10 add $0x10,%esp - vcprintf(fmt, ap); -c0100419: 8b 45 f4 mov -0xc(%ebp),%eax -c010041c: 83 ec 08 sub $0x8,%esp -c010041f: 50 push %eax -c0100420: ff 75 10 pushl 0x10(%ebp) -c0100423: e8 2d fe ff ff call c0100255 -c0100428: 83 c4 10 add $0x10,%esp - cprintf("\n"); -c010042b: 83 ec 0c sub $0xc,%esp -c010042e: 68 c6 9f 10 c0 push $0xc0109fc6 -c0100433: e8 46 fe ff ff call c010027e -c0100438: 83 c4 10 add $0x10,%esp -c010043b: eb 01 jmp c010043e <__panic+0x5a> - * "panic: 'message'", and then enters the kernel monitor. - * */ -void -__panic(const char *file, int line, const char *fmt, ...) { - if (is_panic) { - goto panic_dead; -c010043d: 90 nop - vcprintf(fmt, ap); - cprintf("\n"); - va_end(ap); - -panic_dead: - intr_disable(); -c010043e: e8 67 1c 00 00 call c01020aa - while (1) { - kmonitor(NULL); -c0100443: 83 ec 0c sub $0xc,%esp -c0100446: 6a 00 push $0x0 -c0100448: e8 30 08 00 00 call c0100c7d -c010044d: 83 c4 10 add $0x10,%esp - } -c0100450: eb f1 jmp c0100443 <__panic+0x5f> - -c0100452 <__warn>: -} - -/* __warn - like panic, but don't */ -void -__warn(const char *file, int line, const char *fmt, ...) { -c0100452: 55 push %ebp -c0100453: 89 e5 mov %esp,%ebp -c0100455: 83 ec 18 sub $0x18,%esp - va_list ap; - va_start(ap, fmt); -c0100458: 8d 45 14 lea 0x14(%ebp),%eax -c010045b: 89 45 f4 mov %eax,-0xc(%ebp) - cprintf("kernel warning at %s:%d:\n ", file, line); -c010045e: 83 ec 04 sub $0x4,%esp -c0100461: ff 75 0c pushl 0xc(%ebp) -c0100464: ff 75 08 pushl 0x8(%ebp) -c0100467: 68 c8 9f 10 c0 push $0xc0109fc8 -c010046c: e8 0d fe ff ff call c010027e -c0100471: 83 c4 10 add $0x10,%esp - vcprintf(fmt, ap); -c0100474: 8b 45 f4 mov -0xc(%ebp),%eax -c0100477: 83 ec 08 sub $0x8,%esp -c010047a: 50 push %eax -c010047b: ff 75 10 pushl 0x10(%ebp) -c010047e: e8 d2 fd ff ff call c0100255 -c0100483: 83 c4 10 add $0x10,%esp - cprintf("\n"); -c0100486: 83 ec 0c sub $0xc,%esp -c0100489: 68 c6 9f 10 c0 push $0xc0109fc6 -c010048e: e8 eb fd ff ff call c010027e -c0100493: 83 c4 10 add $0x10,%esp - va_end(ap); -} -c0100496: 90 nop -c0100497: c9 leave -c0100498: c3 ret - -c0100499 : - -bool -is_kernel_panic(void) { -c0100499: 55 push %ebp -c010049a: 89 e5 mov %esp,%ebp - return is_panic; -c010049c: a1 e0 6e 12 c0 mov 0xc0126ee0,%eax -} -c01004a1: 5d pop %ebp -c01004a2: c3 ret - -c01004a3 : - * stab_binsearch(stabs, &left, &right, N_SO, 0xf0100184); - * will exit setting left = 118, right = 554. - * */ -static void -stab_binsearch(const struct stab *stabs, int *region_left, int *region_right, - int type, uintptr_t addr) { -c01004a3: 55 push %ebp -c01004a4: 89 e5 mov %esp,%ebp -c01004a6: 83 ec 20 sub $0x20,%esp - int l = *region_left, r = *region_right, any_matches = 0; -c01004a9: 8b 45 0c mov 0xc(%ebp),%eax -c01004ac: 8b 00 mov (%eax),%eax -c01004ae: 89 45 fc mov %eax,-0x4(%ebp) -c01004b1: 8b 45 10 mov 0x10(%ebp),%eax -c01004b4: 8b 00 mov (%eax),%eax -c01004b6: 89 45 f8 mov %eax,-0x8(%ebp) -c01004b9: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - - while (l <= r) { -c01004c0: e9 d2 00 00 00 jmp c0100597 - int true_m = (l + r) / 2, m = true_m; -c01004c5: 8b 55 fc mov -0x4(%ebp),%edx -c01004c8: 8b 45 f8 mov -0x8(%ebp),%eax -c01004cb: 01 d0 add %edx,%eax -c01004cd: 89 c2 mov %eax,%edx -c01004cf: c1 ea 1f shr $0x1f,%edx -c01004d2: 01 d0 add %edx,%eax -c01004d4: d1 f8 sar %eax -c01004d6: 89 45 ec mov %eax,-0x14(%ebp) -c01004d9: 8b 45 ec mov -0x14(%ebp),%eax -c01004dc: 89 45 f0 mov %eax,-0x10(%ebp) - - // search for earliest stab with right type - while (m >= l && stabs[m].n_type != type) { -c01004df: eb 04 jmp c01004e5 - m --; -c01004e1: 83 6d f0 01 subl $0x1,-0x10(%ebp) - - while (l <= r) { - int true_m = (l + r) / 2, m = true_m; - - // search for earliest stab with right type - while (m >= l && stabs[m].n_type != type) { -c01004e5: 8b 45 f0 mov -0x10(%ebp),%eax -c01004e8: 3b 45 fc cmp -0x4(%ebp),%eax -c01004eb: 7c 1f jl c010050c -c01004ed: 8b 55 f0 mov -0x10(%ebp),%edx -c01004f0: 89 d0 mov %edx,%eax -c01004f2: 01 c0 add %eax,%eax -c01004f4: 01 d0 add %edx,%eax -c01004f6: c1 e0 02 shl $0x2,%eax -c01004f9: 89 c2 mov %eax,%edx -c01004fb: 8b 45 08 mov 0x8(%ebp),%eax -c01004fe: 01 d0 add %edx,%eax -c0100500: 0f b6 40 04 movzbl 0x4(%eax),%eax -c0100504: 0f b6 c0 movzbl %al,%eax -c0100507: 3b 45 14 cmp 0x14(%ebp),%eax -c010050a: 75 d5 jne c01004e1 - m --; - } - if (m < l) { // no match in [l, m] -c010050c: 8b 45 f0 mov -0x10(%ebp),%eax -c010050f: 3b 45 fc cmp -0x4(%ebp),%eax -c0100512: 7d 0b jge c010051f - l = true_m + 1; -c0100514: 8b 45 ec mov -0x14(%ebp),%eax -c0100517: 83 c0 01 add $0x1,%eax -c010051a: 89 45 fc mov %eax,-0x4(%ebp) - continue; -c010051d: eb 78 jmp c0100597 - } - - // actual binary search - any_matches = 1; -c010051f: c7 45 f4 01 00 00 00 movl $0x1,-0xc(%ebp) - if (stabs[m].n_value < addr) { -c0100526: 8b 55 f0 mov -0x10(%ebp),%edx -c0100529: 89 d0 mov %edx,%eax -c010052b: 01 c0 add %eax,%eax -c010052d: 01 d0 add %edx,%eax -c010052f: c1 e0 02 shl $0x2,%eax -c0100532: 89 c2 mov %eax,%edx -c0100534: 8b 45 08 mov 0x8(%ebp),%eax -c0100537: 01 d0 add %edx,%eax -c0100539: 8b 40 08 mov 0x8(%eax),%eax -c010053c: 3b 45 18 cmp 0x18(%ebp),%eax -c010053f: 73 13 jae c0100554 - *region_left = m; -c0100541: 8b 45 0c mov 0xc(%ebp),%eax -c0100544: 8b 55 f0 mov -0x10(%ebp),%edx -c0100547: 89 10 mov %edx,(%eax) - l = true_m + 1; -c0100549: 8b 45 ec mov -0x14(%ebp),%eax -c010054c: 83 c0 01 add $0x1,%eax -c010054f: 89 45 fc mov %eax,-0x4(%ebp) -c0100552: eb 43 jmp c0100597 - } else if (stabs[m].n_value > addr) { -c0100554: 8b 55 f0 mov -0x10(%ebp),%edx -c0100557: 89 d0 mov %edx,%eax -c0100559: 01 c0 add %eax,%eax -c010055b: 01 d0 add %edx,%eax -c010055d: c1 e0 02 shl $0x2,%eax -c0100560: 89 c2 mov %eax,%edx -c0100562: 8b 45 08 mov 0x8(%ebp),%eax -c0100565: 01 d0 add %edx,%eax -c0100567: 8b 40 08 mov 0x8(%eax),%eax -c010056a: 3b 45 18 cmp 0x18(%ebp),%eax -c010056d: 76 16 jbe c0100585 - *region_right = m - 1; -c010056f: 8b 45 f0 mov -0x10(%ebp),%eax -c0100572: 8d 50 ff lea -0x1(%eax),%edx -c0100575: 8b 45 10 mov 0x10(%ebp),%eax -c0100578: 89 10 mov %edx,(%eax) - r = m - 1; -c010057a: 8b 45 f0 mov -0x10(%ebp),%eax -c010057d: 83 e8 01 sub $0x1,%eax -c0100580: 89 45 f8 mov %eax,-0x8(%ebp) -c0100583: eb 12 jmp c0100597 - } else { - // exact match for 'addr', but continue loop to find - // *region_right - *region_left = m; -c0100585: 8b 45 0c mov 0xc(%ebp),%eax -c0100588: 8b 55 f0 mov -0x10(%ebp),%edx -c010058b: 89 10 mov %edx,(%eax) - l = m; -c010058d: 8b 45 f0 mov -0x10(%ebp),%eax -c0100590: 89 45 fc mov %eax,-0x4(%ebp) - addr ++; -c0100593: 83 45 18 01 addl $0x1,0x18(%ebp) -static void -stab_binsearch(const struct stab *stabs, int *region_left, int *region_right, - int type, uintptr_t addr) { - int l = *region_left, r = *region_right, any_matches = 0; - - while (l <= r) { -c0100597: 8b 45 fc mov -0x4(%ebp),%eax -c010059a: 3b 45 f8 cmp -0x8(%ebp),%eax -c010059d: 0f 8e 22 ff ff ff jle c01004c5 - l = m; - addr ++; - } - } - - if (!any_matches) { -c01005a3: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c01005a7: 75 0f jne c01005b8 - *region_right = *region_left - 1; -c01005a9: 8b 45 0c mov 0xc(%ebp),%eax -c01005ac: 8b 00 mov (%eax),%eax -c01005ae: 8d 50 ff lea -0x1(%eax),%edx -c01005b1: 8b 45 10 mov 0x10(%ebp),%eax -c01005b4: 89 10 mov %edx,(%eax) - l = *region_right; - for (; l > *region_left && stabs[l].n_type != type; l --) - /* do nothing */; - *region_left = l; - } -} -c01005b6: eb 3f jmp c01005f7 - if (!any_matches) { - *region_right = *region_left - 1; - } - else { - // find rightmost region containing 'addr' - l = *region_right; -c01005b8: 8b 45 10 mov 0x10(%ebp),%eax -c01005bb: 8b 00 mov (%eax),%eax -c01005bd: 89 45 fc mov %eax,-0x4(%ebp) - for (; l > *region_left && stabs[l].n_type != type; l --) -c01005c0: eb 04 jmp c01005c6 -c01005c2: 83 6d fc 01 subl $0x1,-0x4(%ebp) -c01005c6: 8b 45 0c mov 0xc(%ebp),%eax -c01005c9: 8b 00 mov (%eax),%eax -c01005cb: 3b 45 fc cmp -0x4(%ebp),%eax -c01005ce: 7d 1f jge c01005ef -c01005d0: 8b 55 fc mov -0x4(%ebp),%edx -c01005d3: 89 d0 mov %edx,%eax -c01005d5: 01 c0 add %eax,%eax -c01005d7: 01 d0 add %edx,%eax -c01005d9: c1 e0 02 shl $0x2,%eax -c01005dc: 89 c2 mov %eax,%edx -c01005de: 8b 45 08 mov 0x8(%ebp),%eax -c01005e1: 01 d0 add %edx,%eax -c01005e3: 0f b6 40 04 movzbl 0x4(%eax),%eax -c01005e7: 0f b6 c0 movzbl %al,%eax -c01005ea: 3b 45 14 cmp 0x14(%ebp),%eax -c01005ed: 75 d3 jne c01005c2 - /* do nothing */; - *region_left = l; -c01005ef: 8b 45 0c mov 0xc(%ebp),%eax -c01005f2: 8b 55 fc mov -0x4(%ebp),%edx -c01005f5: 89 10 mov %edx,(%eax) - } -} -c01005f7: 90 nop -c01005f8: c9 leave -c01005f9: c3 ret - -c01005fa : - * the specified instruction address, @addr. Returns 0 if information - * was found, and negative if not. But even if it returns negative it - * has stored some information into '*info'. - * */ -int -debuginfo_eip(uintptr_t addr, struct eipdebuginfo *info) { -c01005fa: 55 push %ebp -c01005fb: 89 e5 mov %esp,%ebp -c01005fd: 83 ec 38 sub $0x38,%esp - const struct stab *stabs, *stab_end; - const char *stabstr, *stabstr_end; - - info->eip_file = ""; -c0100600: 8b 45 0c mov 0xc(%ebp),%eax -c0100603: c7 00 e8 9f 10 c0 movl $0xc0109fe8,(%eax) - info->eip_line = 0; -c0100609: 8b 45 0c mov 0xc(%ebp),%eax -c010060c: c7 40 04 00 00 00 00 movl $0x0,0x4(%eax) - info->eip_fn_name = ""; -c0100613: 8b 45 0c mov 0xc(%ebp),%eax -c0100616: c7 40 08 e8 9f 10 c0 movl $0xc0109fe8,0x8(%eax) - info->eip_fn_namelen = 9; -c010061d: 8b 45 0c mov 0xc(%ebp),%eax -c0100620: c7 40 0c 09 00 00 00 movl $0x9,0xc(%eax) - info->eip_fn_addr = addr; -c0100627: 8b 45 0c mov 0xc(%ebp),%eax -c010062a: 8b 55 08 mov 0x8(%ebp),%edx -c010062d: 89 50 10 mov %edx,0x10(%eax) - info->eip_fn_narg = 0; -c0100630: 8b 45 0c mov 0xc(%ebp),%eax -c0100633: c7 40 14 00 00 00 00 movl $0x0,0x14(%eax) - - stabs = __STAB_BEGIN__; -c010063a: c7 45 f4 c4 c3 10 c0 movl $0xc010c3c4,-0xc(%ebp) - stab_end = __STAB_END__; -c0100641: c7 45 f0 44 eb 11 c0 movl $0xc011eb44,-0x10(%ebp) - stabstr = __STABSTR_BEGIN__; -c0100648: c7 45 ec 45 eb 11 c0 movl $0xc011eb45,-0x14(%ebp) - stabstr_end = __STABSTR_END__; -c010064f: c7 45 e8 10 36 12 c0 movl $0xc0123610,-0x18(%ebp) - - // String table validity checks - if (stabstr_end <= stabstr || stabstr_end[-1] != 0) { -c0100656: 8b 45 e8 mov -0x18(%ebp),%eax -c0100659: 3b 45 ec cmp -0x14(%ebp),%eax -c010065c: 76 0d jbe c010066b -c010065e: 8b 45 e8 mov -0x18(%ebp),%eax -c0100661: 83 e8 01 sub $0x1,%eax -c0100664: 0f b6 00 movzbl (%eax),%eax -c0100667: 84 c0 test %al,%al -c0100669: 74 0a je c0100675 - return -1; -c010066b: b8 ff ff ff ff mov $0xffffffff,%eax -c0100670: e9 91 02 00 00 jmp c0100906 - // 'eip'. First, we find the basic source file containing 'eip'. - // Then, we look in that source file for the function. Then we look - // for the line number. - - // Search the entire set of stabs for the source file (type N_SO). - int lfile = 0, rfile = (stab_end - stabs) - 1; -c0100675: c7 45 e4 00 00 00 00 movl $0x0,-0x1c(%ebp) -c010067c: 8b 55 f0 mov -0x10(%ebp),%edx -c010067f: 8b 45 f4 mov -0xc(%ebp),%eax -c0100682: 29 c2 sub %eax,%edx -c0100684: 89 d0 mov %edx,%eax -c0100686: c1 f8 02 sar $0x2,%eax -c0100689: 69 c0 ab aa aa aa imul $0xaaaaaaab,%eax,%eax -c010068f: 83 e8 01 sub $0x1,%eax -c0100692: 89 45 e0 mov %eax,-0x20(%ebp) - stab_binsearch(stabs, &lfile, &rfile, N_SO, addr); -c0100695: ff 75 08 pushl 0x8(%ebp) -c0100698: 6a 64 push $0x64 -c010069a: 8d 45 e0 lea -0x20(%ebp),%eax -c010069d: 50 push %eax -c010069e: 8d 45 e4 lea -0x1c(%ebp),%eax -c01006a1: 50 push %eax -c01006a2: ff 75 f4 pushl -0xc(%ebp) -c01006a5: e8 f9 fd ff ff call c01004a3 -c01006aa: 83 c4 14 add $0x14,%esp - if (lfile == 0) -c01006ad: 8b 45 e4 mov -0x1c(%ebp),%eax -c01006b0: 85 c0 test %eax,%eax -c01006b2: 75 0a jne c01006be - return -1; -c01006b4: b8 ff ff ff ff mov $0xffffffff,%eax -c01006b9: e9 48 02 00 00 jmp c0100906 - - // Search within that file's stabs for the function definition - // (N_FUN). - int lfun = lfile, rfun = rfile; -c01006be: 8b 45 e4 mov -0x1c(%ebp),%eax -c01006c1: 89 45 dc mov %eax,-0x24(%ebp) -c01006c4: 8b 45 e0 mov -0x20(%ebp),%eax -c01006c7: 89 45 d8 mov %eax,-0x28(%ebp) - int lline, rline; - stab_binsearch(stabs, &lfun, &rfun, N_FUN, addr); -c01006ca: ff 75 08 pushl 0x8(%ebp) -c01006cd: 6a 24 push $0x24 -c01006cf: 8d 45 d8 lea -0x28(%ebp),%eax -c01006d2: 50 push %eax -c01006d3: 8d 45 dc lea -0x24(%ebp),%eax -c01006d6: 50 push %eax -c01006d7: ff 75 f4 pushl -0xc(%ebp) -c01006da: e8 c4 fd ff ff call c01004a3 -c01006df: 83 c4 14 add $0x14,%esp - - if (lfun <= rfun) { -c01006e2: 8b 55 dc mov -0x24(%ebp),%edx -c01006e5: 8b 45 d8 mov -0x28(%ebp),%eax -c01006e8: 39 c2 cmp %eax,%edx -c01006ea: 7f 7c jg c0100768 - // stabs[lfun] points to the function name - // in the string table, but check bounds just in case. - if (stabs[lfun].n_strx < stabstr_end - stabstr) { -c01006ec: 8b 45 dc mov -0x24(%ebp),%eax -c01006ef: 89 c2 mov %eax,%edx -c01006f1: 89 d0 mov %edx,%eax -c01006f3: 01 c0 add %eax,%eax -c01006f5: 01 d0 add %edx,%eax -c01006f7: c1 e0 02 shl $0x2,%eax -c01006fa: 89 c2 mov %eax,%edx -c01006fc: 8b 45 f4 mov -0xc(%ebp),%eax -c01006ff: 01 d0 add %edx,%eax -c0100701: 8b 00 mov (%eax),%eax -c0100703: 8b 4d e8 mov -0x18(%ebp),%ecx -c0100706: 8b 55 ec mov -0x14(%ebp),%edx -c0100709: 29 d1 sub %edx,%ecx -c010070b: 89 ca mov %ecx,%edx -c010070d: 39 d0 cmp %edx,%eax -c010070f: 73 22 jae c0100733 - info->eip_fn_name = stabstr + stabs[lfun].n_strx; -c0100711: 8b 45 dc mov -0x24(%ebp),%eax -c0100714: 89 c2 mov %eax,%edx -c0100716: 89 d0 mov %edx,%eax -c0100718: 01 c0 add %eax,%eax -c010071a: 01 d0 add %edx,%eax -c010071c: c1 e0 02 shl $0x2,%eax -c010071f: 89 c2 mov %eax,%edx -c0100721: 8b 45 f4 mov -0xc(%ebp),%eax -c0100724: 01 d0 add %edx,%eax -c0100726: 8b 10 mov (%eax),%edx -c0100728: 8b 45 ec mov -0x14(%ebp),%eax -c010072b: 01 c2 add %eax,%edx -c010072d: 8b 45 0c mov 0xc(%ebp),%eax -c0100730: 89 50 08 mov %edx,0x8(%eax) - } - info->eip_fn_addr = stabs[lfun].n_value; -c0100733: 8b 45 dc mov -0x24(%ebp),%eax -c0100736: 89 c2 mov %eax,%edx -c0100738: 89 d0 mov %edx,%eax -c010073a: 01 c0 add %eax,%eax -c010073c: 01 d0 add %edx,%eax -c010073e: c1 e0 02 shl $0x2,%eax -c0100741: 89 c2 mov %eax,%edx -c0100743: 8b 45 f4 mov -0xc(%ebp),%eax -c0100746: 01 d0 add %edx,%eax -c0100748: 8b 50 08 mov 0x8(%eax),%edx -c010074b: 8b 45 0c mov 0xc(%ebp),%eax -c010074e: 89 50 10 mov %edx,0x10(%eax) - addr -= info->eip_fn_addr; -c0100751: 8b 45 0c mov 0xc(%ebp),%eax -c0100754: 8b 40 10 mov 0x10(%eax),%eax -c0100757: 29 45 08 sub %eax,0x8(%ebp) - // Search within the function definition for the line number. - lline = lfun; -c010075a: 8b 45 dc mov -0x24(%ebp),%eax -c010075d: 89 45 d4 mov %eax,-0x2c(%ebp) - rline = rfun; -c0100760: 8b 45 d8 mov -0x28(%ebp),%eax -c0100763: 89 45 d0 mov %eax,-0x30(%ebp) -c0100766: eb 15 jmp c010077d - } else { - // Couldn't find function stab! Maybe we're in an assembly - // file. Search the whole file for the line number. - info->eip_fn_addr = addr; -c0100768: 8b 45 0c mov 0xc(%ebp),%eax -c010076b: 8b 55 08 mov 0x8(%ebp),%edx -c010076e: 89 50 10 mov %edx,0x10(%eax) - lline = lfile; -c0100771: 8b 45 e4 mov -0x1c(%ebp),%eax -c0100774: 89 45 d4 mov %eax,-0x2c(%ebp) - rline = rfile; -c0100777: 8b 45 e0 mov -0x20(%ebp),%eax -c010077a: 89 45 d0 mov %eax,-0x30(%ebp) - } - info->eip_fn_namelen = strfind(info->eip_fn_name, ':') - info->eip_fn_name; -c010077d: 8b 45 0c mov 0xc(%ebp),%eax -c0100780: 8b 40 08 mov 0x8(%eax),%eax -c0100783: 83 ec 08 sub $0x8,%esp -c0100786: 6a 3a push $0x3a -c0100788: 50 push %eax -c0100789: e8 4c 8d 00 00 call c01094da -c010078e: 83 c4 10 add $0x10,%esp -c0100791: 89 c2 mov %eax,%edx -c0100793: 8b 45 0c mov 0xc(%ebp),%eax -c0100796: 8b 40 08 mov 0x8(%eax),%eax -c0100799: 29 c2 sub %eax,%edx -c010079b: 8b 45 0c mov 0xc(%ebp),%eax -c010079e: 89 50 0c mov %edx,0xc(%eax) - - // Search within [lline, rline] for the line number stab. - // If found, set info->eip_line to the right line number. - // If not found, return -1. - stab_binsearch(stabs, &lline, &rline, N_SLINE, addr); -c01007a1: 83 ec 0c sub $0xc,%esp -c01007a4: ff 75 08 pushl 0x8(%ebp) -c01007a7: 6a 44 push $0x44 -c01007a9: 8d 45 d0 lea -0x30(%ebp),%eax -c01007ac: 50 push %eax -c01007ad: 8d 45 d4 lea -0x2c(%ebp),%eax -c01007b0: 50 push %eax -c01007b1: ff 75 f4 pushl -0xc(%ebp) -c01007b4: e8 ea fc ff ff call c01004a3 -c01007b9: 83 c4 20 add $0x20,%esp - if (lline <= rline) { -c01007bc: 8b 55 d4 mov -0x2c(%ebp),%edx -c01007bf: 8b 45 d0 mov -0x30(%ebp),%eax -c01007c2: 39 c2 cmp %eax,%edx -c01007c4: 7f 24 jg c01007ea - info->eip_line = stabs[rline].n_desc; -c01007c6: 8b 45 d0 mov -0x30(%ebp),%eax -c01007c9: 89 c2 mov %eax,%edx -c01007cb: 89 d0 mov %edx,%eax -c01007cd: 01 c0 add %eax,%eax -c01007cf: 01 d0 add %edx,%eax -c01007d1: c1 e0 02 shl $0x2,%eax -c01007d4: 89 c2 mov %eax,%edx -c01007d6: 8b 45 f4 mov -0xc(%ebp),%eax -c01007d9: 01 d0 add %edx,%eax -c01007db: 0f b7 40 06 movzwl 0x6(%eax),%eax -c01007df: 0f b7 d0 movzwl %ax,%edx -c01007e2: 8b 45 0c mov 0xc(%ebp),%eax -c01007e5: 89 50 04 mov %edx,0x4(%eax) - - // Search backwards from the line number for the relevant filename stab. - // We can't just use the "lfile" stab because inlined functions - // can interpolate code from a different file! - // Such included source files use the N_SOL stab type. - while (lline >= lfile -c01007e8: eb 13 jmp c01007fd - // If not found, return -1. - stab_binsearch(stabs, &lline, &rline, N_SLINE, addr); - if (lline <= rline) { - info->eip_line = stabs[rline].n_desc; - } else { - return -1; -c01007ea: b8 ff ff ff ff mov $0xffffffff,%eax -c01007ef: e9 12 01 00 00 jmp c0100906 - // can interpolate code from a different file! - // Such included source files use the N_SOL stab type. - while (lline >= lfile - && stabs[lline].n_type != N_SOL - && (stabs[lline].n_type != N_SO || !stabs[lline].n_value)) { - lline --; -c01007f4: 8b 45 d4 mov -0x2c(%ebp),%eax -c01007f7: 83 e8 01 sub $0x1,%eax -c01007fa: 89 45 d4 mov %eax,-0x2c(%ebp) - - // Search backwards from the line number for the relevant filename stab. - // We can't just use the "lfile" stab because inlined functions - // can interpolate code from a different file! - // Such included source files use the N_SOL stab type. - while (lline >= lfile -c01007fd: 8b 55 d4 mov -0x2c(%ebp),%edx -c0100800: 8b 45 e4 mov -0x1c(%ebp),%eax -c0100803: 39 c2 cmp %eax,%edx -c0100805: 7c 56 jl c010085d - && stabs[lline].n_type != N_SOL -c0100807: 8b 45 d4 mov -0x2c(%ebp),%eax -c010080a: 89 c2 mov %eax,%edx -c010080c: 89 d0 mov %edx,%eax -c010080e: 01 c0 add %eax,%eax -c0100810: 01 d0 add %edx,%eax -c0100812: c1 e0 02 shl $0x2,%eax -c0100815: 89 c2 mov %eax,%edx -c0100817: 8b 45 f4 mov -0xc(%ebp),%eax -c010081a: 01 d0 add %edx,%eax -c010081c: 0f b6 40 04 movzbl 0x4(%eax),%eax -c0100820: 3c 84 cmp $0x84,%al -c0100822: 74 39 je c010085d - && (stabs[lline].n_type != N_SO || !stabs[lline].n_value)) { -c0100824: 8b 45 d4 mov -0x2c(%ebp),%eax -c0100827: 89 c2 mov %eax,%edx -c0100829: 89 d0 mov %edx,%eax -c010082b: 01 c0 add %eax,%eax -c010082d: 01 d0 add %edx,%eax -c010082f: c1 e0 02 shl $0x2,%eax -c0100832: 89 c2 mov %eax,%edx -c0100834: 8b 45 f4 mov -0xc(%ebp),%eax -c0100837: 01 d0 add %edx,%eax -c0100839: 0f b6 40 04 movzbl 0x4(%eax),%eax -c010083d: 3c 64 cmp $0x64,%al -c010083f: 75 b3 jne c01007f4 -c0100841: 8b 45 d4 mov -0x2c(%ebp),%eax -c0100844: 89 c2 mov %eax,%edx -c0100846: 89 d0 mov %edx,%eax -c0100848: 01 c0 add %eax,%eax -c010084a: 01 d0 add %edx,%eax -c010084c: c1 e0 02 shl $0x2,%eax -c010084f: 89 c2 mov %eax,%edx -c0100851: 8b 45 f4 mov -0xc(%ebp),%eax -c0100854: 01 d0 add %edx,%eax -c0100856: 8b 40 08 mov 0x8(%eax),%eax -c0100859: 85 c0 test %eax,%eax -c010085b: 74 97 je c01007f4 - lline --; - } - if (lline >= lfile && stabs[lline].n_strx < stabstr_end - stabstr) { -c010085d: 8b 55 d4 mov -0x2c(%ebp),%edx -c0100860: 8b 45 e4 mov -0x1c(%ebp),%eax -c0100863: 39 c2 cmp %eax,%edx -c0100865: 7c 46 jl c01008ad -c0100867: 8b 45 d4 mov -0x2c(%ebp),%eax -c010086a: 89 c2 mov %eax,%edx -c010086c: 89 d0 mov %edx,%eax -c010086e: 01 c0 add %eax,%eax -c0100870: 01 d0 add %edx,%eax -c0100872: c1 e0 02 shl $0x2,%eax -c0100875: 89 c2 mov %eax,%edx -c0100877: 8b 45 f4 mov -0xc(%ebp),%eax -c010087a: 01 d0 add %edx,%eax -c010087c: 8b 00 mov (%eax),%eax -c010087e: 8b 4d e8 mov -0x18(%ebp),%ecx -c0100881: 8b 55 ec mov -0x14(%ebp),%edx -c0100884: 29 d1 sub %edx,%ecx -c0100886: 89 ca mov %ecx,%edx -c0100888: 39 d0 cmp %edx,%eax -c010088a: 73 21 jae c01008ad - info->eip_file = stabstr + stabs[lline].n_strx; -c010088c: 8b 45 d4 mov -0x2c(%ebp),%eax -c010088f: 89 c2 mov %eax,%edx -c0100891: 89 d0 mov %edx,%eax -c0100893: 01 c0 add %eax,%eax -c0100895: 01 d0 add %edx,%eax -c0100897: c1 e0 02 shl $0x2,%eax -c010089a: 89 c2 mov %eax,%edx -c010089c: 8b 45 f4 mov -0xc(%ebp),%eax -c010089f: 01 d0 add %edx,%eax -c01008a1: 8b 10 mov (%eax),%edx -c01008a3: 8b 45 ec mov -0x14(%ebp),%eax -c01008a6: 01 c2 add %eax,%edx -c01008a8: 8b 45 0c mov 0xc(%ebp),%eax -c01008ab: 89 10 mov %edx,(%eax) - } - - // Set eip_fn_narg to the number of arguments taken by the function, - // or 0 if there was no containing function. - if (lfun < rfun) { -c01008ad: 8b 55 dc mov -0x24(%ebp),%edx -c01008b0: 8b 45 d8 mov -0x28(%ebp),%eax -c01008b3: 39 c2 cmp %eax,%edx -c01008b5: 7d 4a jge c0100901 - for (lline = lfun + 1; -c01008b7: 8b 45 dc mov -0x24(%ebp),%eax -c01008ba: 83 c0 01 add $0x1,%eax -c01008bd: 89 45 d4 mov %eax,-0x2c(%ebp) -c01008c0: eb 18 jmp c01008da - lline < rfun && stabs[lline].n_type == N_PSYM; - lline ++) { - info->eip_fn_narg ++; -c01008c2: 8b 45 0c mov 0xc(%ebp),%eax -c01008c5: 8b 40 14 mov 0x14(%eax),%eax -c01008c8: 8d 50 01 lea 0x1(%eax),%edx -c01008cb: 8b 45 0c mov 0xc(%ebp),%eax -c01008ce: 89 50 14 mov %edx,0x14(%eax) - // Set eip_fn_narg to the number of arguments taken by the function, - // or 0 if there was no containing function. - if (lfun < rfun) { - for (lline = lfun + 1; - lline < rfun && stabs[lline].n_type == N_PSYM; - lline ++) { -c01008d1: 8b 45 d4 mov -0x2c(%ebp),%eax -c01008d4: 83 c0 01 add $0x1,%eax -c01008d7: 89 45 d4 mov %eax,-0x2c(%ebp) - - // Set eip_fn_narg to the number of arguments taken by the function, - // or 0 if there was no containing function. - if (lfun < rfun) { - for (lline = lfun + 1; - lline < rfun && stabs[lline].n_type == N_PSYM; -c01008da: 8b 55 d4 mov -0x2c(%ebp),%edx -c01008dd: 8b 45 d8 mov -0x28(%ebp),%eax - } - - // Set eip_fn_narg to the number of arguments taken by the function, - // or 0 if there was no containing function. - if (lfun < rfun) { - for (lline = lfun + 1; -c01008e0: 39 c2 cmp %eax,%edx -c01008e2: 7d 1d jge c0100901 - lline < rfun && stabs[lline].n_type == N_PSYM; -c01008e4: 8b 45 d4 mov -0x2c(%ebp),%eax -c01008e7: 89 c2 mov %eax,%edx -c01008e9: 89 d0 mov %edx,%eax -c01008eb: 01 c0 add %eax,%eax -c01008ed: 01 d0 add %edx,%eax -c01008ef: c1 e0 02 shl $0x2,%eax -c01008f2: 89 c2 mov %eax,%edx -c01008f4: 8b 45 f4 mov -0xc(%ebp),%eax -c01008f7: 01 d0 add %edx,%eax -c01008f9: 0f b6 40 04 movzbl 0x4(%eax),%eax -c01008fd: 3c a0 cmp $0xa0,%al -c01008ff: 74 c1 je c01008c2 - lline ++) { - info->eip_fn_narg ++; - } - } - return 0; -c0100901: b8 00 00 00 00 mov $0x0,%eax -} -c0100906: c9 leave -c0100907: c3 ret - -c0100908 : - * print_kerninfo - print the information about kernel, including the location - * of kernel entry, the start addresses of data and text segements, the start - * address of free memory and how many memory that kernel has used. - * */ -void -print_kerninfo(void) { -c0100908: 55 push %ebp -c0100909: 89 e5 mov %esp,%ebp -c010090b: 83 ec 08 sub $0x8,%esp - extern char etext[], edata[], end[], kern_init[]; - cprintf("Special kernel symbols:\n"); -c010090e: 83 ec 0c sub $0xc,%esp -c0100911: 68 f2 9f 10 c0 push $0xc0109ff2 -c0100916: e8 63 f9 ff ff call c010027e -c010091b: 83 c4 10 add $0x10,%esp - cprintf(" entry 0x%08x (phys)\n", kern_init); -c010091e: 83 ec 08 sub $0x8,%esp -c0100921: 68 2a 00 10 c0 push $0xc010002a -c0100926: 68 0b a0 10 c0 push $0xc010a00b -c010092b: e8 4e f9 ff ff call c010027e -c0100930: 83 c4 10 add $0x10,%esp - cprintf(" etext 0x%08x (phys)\n", etext); -c0100933: 83 ec 08 sub $0x8,%esp -c0100936: 68 fa 9e 10 c0 push $0xc0109efa -c010093b: 68 23 a0 10 c0 push $0xc010a023 -c0100940: e8 39 f9 ff ff call c010027e -c0100945: 83 c4 10 add $0x10,%esp - cprintf(" edata 0x%08x (phys)\n", edata); -c0100948: 83 ec 08 sub $0x8,%esp -c010094b: 68 b0 6a 12 c0 push $0xc0126ab0 -c0100950: 68 3b a0 10 c0 push $0xc010a03b -c0100955: e8 24 f9 ff ff call c010027e -c010095a: 83 c4 10 add $0x10,%esp - cprintf(" end 0x%08x (phys)\n", end); -c010095d: 83 ec 08 sub $0x8,%esp -c0100960: 68 2c 9c 12 c0 push $0xc0129c2c -c0100965: 68 53 a0 10 c0 push $0xc010a053 -c010096a: e8 0f f9 ff ff call c010027e -c010096f: 83 c4 10 add $0x10,%esp - cprintf("Kernel executable memory footprint: %dKB\n", (end - kern_init + 1023)/1024); -c0100972: b8 2c 9c 12 c0 mov $0xc0129c2c,%eax -c0100977: 05 ff 03 00 00 add $0x3ff,%eax -c010097c: ba 2a 00 10 c0 mov $0xc010002a,%edx -c0100981: 29 d0 sub %edx,%eax -c0100983: 8d 90 ff 03 00 00 lea 0x3ff(%eax),%edx -c0100989: 85 c0 test %eax,%eax -c010098b: 0f 48 c2 cmovs %edx,%eax -c010098e: c1 f8 0a sar $0xa,%eax -c0100991: 83 ec 08 sub $0x8,%esp -c0100994: 50 push %eax -c0100995: 68 6c a0 10 c0 push $0xc010a06c -c010099a: e8 df f8 ff ff call c010027e -c010099f: 83 c4 10 add $0x10,%esp -} -c01009a2: 90 nop -c01009a3: c9 leave -c01009a4: c3 ret - -c01009a5 : -/* * - * print_debuginfo - read and print the stat information for the address @eip, - * and info.eip_fn_addr should be the first address of the related function. - * */ -void -print_debuginfo(uintptr_t eip) { -c01009a5: 55 push %ebp -c01009a6: 89 e5 mov %esp,%ebp -c01009a8: 81 ec 28 01 00 00 sub $0x128,%esp - struct eipdebuginfo info; - if (debuginfo_eip(eip, &info) != 0) { -c01009ae: 83 ec 08 sub $0x8,%esp -c01009b1: 8d 45 dc lea -0x24(%ebp),%eax -c01009b4: 50 push %eax -c01009b5: ff 75 08 pushl 0x8(%ebp) -c01009b8: e8 3d fc ff ff call c01005fa -c01009bd: 83 c4 10 add $0x10,%esp -c01009c0: 85 c0 test %eax,%eax -c01009c2: 74 15 je c01009d9 - cprintf(" : -- 0x%08x --\n", eip); -c01009c4: 83 ec 08 sub $0x8,%esp -c01009c7: ff 75 08 pushl 0x8(%ebp) -c01009ca: 68 96 a0 10 c0 push $0xc010a096 -c01009cf: e8 aa f8 ff ff call c010027e -c01009d4: 83 c4 10 add $0x10,%esp - } - fnname[j] = '\0'; - cprintf(" %s:%d: %s+%d\n", info.eip_file, info.eip_line, - fnname, eip - info.eip_fn_addr); - } -} -c01009d7: eb 65 jmp c0100a3e - cprintf(" : -- 0x%08x --\n", eip); - } - else { - char fnname[256]; - int j; - for (j = 0; j < info.eip_fn_namelen; j ++) { -c01009d9: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) -c01009e0: eb 1c jmp c01009fe - fnname[j] = info.eip_fn_name[j]; -c01009e2: 8b 55 e4 mov -0x1c(%ebp),%edx -c01009e5: 8b 45 f4 mov -0xc(%ebp),%eax -c01009e8: 01 d0 add %edx,%eax -c01009ea: 0f b6 00 movzbl (%eax),%eax -c01009ed: 8d 8d dc fe ff ff lea -0x124(%ebp),%ecx -c01009f3: 8b 55 f4 mov -0xc(%ebp),%edx -c01009f6: 01 ca add %ecx,%edx -c01009f8: 88 02 mov %al,(%edx) - cprintf(" : -- 0x%08x --\n", eip); - } - else { - char fnname[256]; - int j; - for (j = 0; j < info.eip_fn_namelen; j ++) { -c01009fa: 83 45 f4 01 addl $0x1,-0xc(%ebp) -c01009fe: 8b 45 e8 mov -0x18(%ebp),%eax -c0100a01: 3b 45 f4 cmp -0xc(%ebp),%eax -c0100a04: 7f dc jg c01009e2 - fnname[j] = info.eip_fn_name[j]; - } - fnname[j] = '\0'; -c0100a06: 8d 95 dc fe ff ff lea -0x124(%ebp),%edx -c0100a0c: 8b 45 f4 mov -0xc(%ebp),%eax -c0100a0f: 01 d0 add %edx,%eax -c0100a11: c6 00 00 movb $0x0,(%eax) - cprintf(" %s:%d: %s+%d\n", info.eip_file, info.eip_line, - fnname, eip - info.eip_fn_addr); -c0100a14: 8b 45 ec mov -0x14(%ebp),%eax - int j; - for (j = 0; j < info.eip_fn_namelen; j ++) { - fnname[j] = info.eip_fn_name[j]; - } - fnname[j] = '\0'; - cprintf(" %s:%d: %s+%d\n", info.eip_file, info.eip_line, -c0100a17: 8b 55 08 mov 0x8(%ebp),%edx -c0100a1a: 89 d1 mov %edx,%ecx -c0100a1c: 29 c1 sub %eax,%ecx -c0100a1e: 8b 55 e0 mov -0x20(%ebp),%edx -c0100a21: 8b 45 dc mov -0x24(%ebp),%eax -c0100a24: 83 ec 0c sub $0xc,%esp -c0100a27: 51 push %ecx -c0100a28: 8d 8d dc fe ff ff lea -0x124(%ebp),%ecx -c0100a2e: 51 push %ecx -c0100a2f: 52 push %edx -c0100a30: 50 push %eax -c0100a31: 68 b2 a0 10 c0 push $0xc010a0b2 -c0100a36: e8 43 f8 ff ff call c010027e -c0100a3b: 83 c4 20 add $0x20,%esp - fnname, eip - info.eip_fn_addr); - } -} -c0100a3e: 90 nop -c0100a3f: c9 leave -c0100a40: c3 ret - -c0100a41 : - -static __noinline uint32_t -read_eip(void) { -c0100a41: 55 push %ebp -c0100a42: 89 e5 mov %esp,%ebp -c0100a44: 83 ec 10 sub $0x10,%esp - uint32_t eip; - asm volatile("movl 4(%%ebp), %0" : "=r" (eip)); -c0100a47: 8b 45 04 mov 0x4(%ebp),%eax -c0100a4a: 89 45 fc mov %eax,-0x4(%ebp) - return eip; -c0100a4d: 8b 45 fc mov -0x4(%ebp),%eax -} -c0100a50: c9 leave -c0100a51: c3 ret - -c0100a52 : - * - * Note that, the length of ebp-chain is limited. In boot/bootasm.S, before jumping - * to the kernel entry, the value of ebp has been set to zero, that's the boundary. - * */ -void -print_stackframe(void) { -c0100a52: 55 push %ebp -c0100a53: 89 e5 mov %esp,%ebp -c0100a55: 83 ec 28 sub $0x28,%esp -} - -static inline uint32_t -read_ebp(void) { - uint32_t ebp; - asm volatile ("movl %%ebp, %0" : "=r" (ebp)); -c0100a58: 89 e8 mov %ebp,%eax -c0100a5a: 89 45 e4 mov %eax,-0x1c(%ebp) - return ebp; -c0100a5d: 8b 45 e4 mov -0x1c(%ebp),%eax - * (3.4) call print_debuginfo(eip-1) to print the C calling function name and line number, etc. - * (3.5) popup a calling stackframe - * NOTICE: the calling funciton's return addr eip = ss:[ebp+4] - * the calling funciton's ebp = ss:[ebp] - */ - uint32_t current_ebp = read_ebp(); -c0100a60: 89 45 f4 mov %eax,-0xc(%ebp) - uint32_t current_eip = read_eip(); -c0100a63: e8 d9 ff ff ff call c0100a41 -c0100a68: 89 45 f0 mov %eax,-0x10(%ebp) - for (int i = 0; i < STACKFRAME_DEPTH && current_ebp != 0; ++ i) { -c0100a6b: c7 45 ec 00 00 00 00 movl $0x0,-0x14(%ebp) -c0100a72: e9 87 00 00 00 jmp c0100afe - cprintf("ebp:0x%08x eip:0x%08x args:", current_ebp, current_eip); -c0100a77: 83 ec 04 sub $0x4,%esp -c0100a7a: ff 75 f0 pushl -0x10(%ebp) -c0100a7d: ff 75 f4 pushl -0xc(%ebp) -c0100a80: 68 c4 a0 10 c0 push $0xc010a0c4 -c0100a85: e8 f4 f7 ff ff call c010027e -c0100a8a: 83 c4 10 add $0x10,%esp - for (int argi = 0; argi < 4; ++ argi) { -c0100a8d: c7 45 e8 00 00 00 00 movl $0x0,-0x18(%ebp) -c0100a94: eb 29 jmp c0100abf - cprintf("0x%08x ", *((uint32_t*) current_ebp + 2 + argi)); -c0100a96: 8b 45 e8 mov -0x18(%ebp),%eax -c0100a99: 8d 14 85 00 00 00 00 lea 0x0(,%eax,4),%edx -c0100aa0: 8b 45 f4 mov -0xc(%ebp),%eax -c0100aa3: 01 d0 add %edx,%eax -c0100aa5: 83 c0 08 add $0x8,%eax -c0100aa8: 8b 00 mov (%eax),%eax -c0100aaa: 83 ec 08 sub $0x8,%esp -c0100aad: 50 push %eax -c0100aae: 68 e0 a0 10 c0 push $0xc010a0e0 -c0100ab3: e8 c6 f7 ff ff call c010027e -c0100ab8: 83 c4 10 add $0x10,%esp - */ - uint32_t current_ebp = read_ebp(); - uint32_t current_eip = read_eip(); - for (int i = 0; i < STACKFRAME_DEPTH && current_ebp != 0; ++ i) { - cprintf("ebp:0x%08x eip:0x%08x args:", current_ebp, current_eip); - for (int argi = 0; argi < 4; ++ argi) { -c0100abb: 83 45 e8 01 addl $0x1,-0x18(%ebp) -c0100abf: 83 7d e8 03 cmpl $0x3,-0x18(%ebp) -c0100ac3: 7e d1 jle c0100a96 - cprintf("0x%08x ", *((uint32_t*) current_ebp + 2 + argi)); - } - cprintf("\n"); -c0100ac5: 83 ec 0c sub $0xc,%esp -c0100ac8: 68 e8 a0 10 c0 push $0xc010a0e8 -c0100acd: e8 ac f7 ff ff call c010027e -c0100ad2: 83 c4 10 add $0x10,%esp - print_debuginfo(current_eip - 1); -c0100ad5: 8b 45 f0 mov -0x10(%ebp),%eax -c0100ad8: 83 e8 01 sub $0x1,%eax -c0100adb: 83 ec 0c sub $0xc,%esp -c0100ade: 50 push %eax -c0100adf: e8 c1 fe ff ff call c01009a5 -c0100ae4: 83 c4 10 add $0x10,%esp - current_eip = *((uint32_t*)current_ebp + 1); -c0100ae7: 8b 45 f4 mov -0xc(%ebp),%eax -c0100aea: 83 c0 04 add $0x4,%eax -c0100aed: 8b 00 mov (%eax),%eax -c0100aef: 89 45 f0 mov %eax,-0x10(%ebp) - current_ebp = *((uint32_t*)current_ebp); -c0100af2: 8b 45 f4 mov -0xc(%ebp),%eax -c0100af5: 8b 00 mov (%eax),%eax -c0100af7: 89 45 f4 mov %eax,-0xc(%ebp) - * NOTICE: the calling funciton's return addr eip = ss:[ebp+4] - * the calling funciton's ebp = ss:[ebp] - */ - uint32_t current_ebp = read_ebp(); - uint32_t current_eip = read_eip(); - for (int i = 0; i < STACKFRAME_DEPTH && current_ebp != 0; ++ i) { -c0100afa: 83 45 ec 01 addl $0x1,-0x14(%ebp) -c0100afe: 83 7d ec 13 cmpl $0x13,-0x14(%ebp) -c0100b02: 7f 0a jg c0100b0e -c0100b04: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c0100b08: 0f 85 69 ff ff ff jne c0100a77 - cprintf("\n"); - print_debuginfo(current_eip - 1); - current_eip = *((uint32_t*)current_ebp + 1); - current_ebp = *((uint32_t*)current_ebp); - } -} -c0100b0e: 90 nop -c0100b0f: c9 leave -c0100b10: c3 ret - -c0100b11 : -#define MAXARGS 16 -#define WHITESPACE " \t\n\r" - -/* parse - parse the command buffer into whitespace-separated arguments */ -static int -parse(char *buf, char **argv) { -c0100b11: 55 push %ebp -c0100b12: 89 e5 mov %esp,%ebp -c0100b14: 83 ec 18 sub $0x18,%esp - int argc = 0; -c0100b17: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - while (1) { - // find global whitespace - while (*buf != '\0' && strchr(WHITESPACE, *buf) != NULL) { -c0100b1e: eb 0c jmp c0100b2c - *buf ++ = '\0'; -c0100b20: 8b 45 08 mov 0x8(%ebp),%eax -c0100b23: 8d 50 01 lea 0x1(%eax),%edx -c0100b26: 89 55 08 mov %edx,0x8(%ebp) -c0100b29: c6 00 00 movb $0x0,(%eax) -static int -parse(char *buf, char **argv) { - int argc = 0; - while (1) { - // find global whitespace - while (*buf != '\0' && strchr(WHITESPACE, *buf) != NULL) { -c0100b2c: 8b 45 08 mov 0x8(%ebp),%eax -c0100b2f: 0f b6 00 movzbl (%eax),%eax -c0100b32: 84 c0 test %al,%al -c0100b34: 74 1e je c0100b54 -c0100b36: 8b 45 08 mov 0x8(%ebp),%eax -c0100b39: 0f b6 00 movzbl (%eax),%eax -c0100b3c: 0f be c0 movsbl %al,%eax -c0100b3f: 83 ec 08 sub $0x8,%esp -c0100b42: 50 push %eax -c0100b43: 68 6c a1 10 c0 push $0xc010a16c -c0100b48: e8 5a 89 00 00 call c01094a7 -c0100b4d: 83 c4 10 add $0x10,%esp -c0100b50: 85 c0 test %eax,%eax -c0100b52: 75 cc jne c0100b20 - *buf ++ = '\0'; - } - if (*buf == '\0') { -c0100b54: 8b 45 08 mov 0x8(%ebp),%eax -c0100b57: 0f b6 00 movzbl (%eax),%eax -c0100b5a: 84 c0 test %al,%al -c0100b5c: 74 69 je c0100bc7 - break; - } - - // save and scan past next arg - if (argc == MAXARGS - 1) { -c0100b5e: 83 7d f4 0f cmpl $0xf,-0xc(%ebp) -c0100b62: 75 12 jne c0100b76 - cprintf("Too many arguments (max %d).\n", MAXARGS); -c0100b64: 83 ec 08 sub $0x8,%esp -c0100b67: 6a 10 push $0x10 -c0100b69: 68 71 a1 10 c0 push $0xc010a171 -c0100b6e: e8 0b f7 ff ff call c010027e -c0100b73: 83 c4 10 add $0x10,%esp - } - argv[argc ++] = buf; -c0100b76: 8b 45 f4 mov -0xc(%ebp),%eax -c0100b79: 8d 50 01 lea 0x1(%eax),%edx -c0100b7c: 89 55 f4 mov %edx,-0xc(%ebp) -c0100b7f: 8d 14 85 00 00 00 00 lea 0x0(,%eax,4),%edx -c0100b86: 8b 45 0c mov 0xc(%ebp),%eax -c0100b89: 01 c2 add %eax,%edx -c0100b8b: 8b 45 08 mov 0x8(%ebp),%eax -c0100b8e: 89 02 mov %eax,(%edx) - while (*buf != '\0' && strchr(WHITESPACE, *buf) == NULL) { -c0100b90: eb 04 jmp c0100b96 - buf ++; -c0100b92: 83 45 08 01 addl $0x1,0x8(%ebp) - // save and scan past next arg - if (argc == MAXARGS - 1) { - cprintf("Too many arguments (max %d).\n", MAXARGS); - } - argv[argc ++] = buf; - while (*buf != '\0' && strchr(WHITESPACE, *buf) == NULL) { -c0100b96: 8b 45 08 mov 0x8(%ebp),%eax -c0100b99: 0f b6 00 movzbl (%eax),%eax -c0100b9c: 84 c0 test %al,%al -c0100b9e: 0f 84 7a ff ff ff je c0100b1e -c0100ba4: 8b 45 08 mov 0x8(%ebp),%eax -c0100ba7: 0f b6 00 movzbl (%eax),%eax -c0100baa: 0f be c0 movsbl %al,%eax -c0100bad: 83 ec 08 sub $0x8,%esp -c0100bb0: 50 push %eax -c0100bb1: 68 6c a1 10 c0 push $0xc010a16c -c0100bb6: e8 ec 88 00 00 call c01094a7 -c0100bbb: 83 c4 10 add $0x10,%esp -c0100bbe: 85 c0 test %eax,%eax -c0100bc0: 74 d0 je c0100b92 - buf ++; - } - } -c0100bc2: e9 57 ff ff ff jmp c0100b1e - // find global whitespace - while (*buf != '\0' && strchr(WHITESPACE, *buf) != NULL) { - *buf ++ = '\0'; - } - if (*buf == '\0') { - break; -c0100bc7: 90 nop - argv[argc ++] = buf; - while (*buf != '\0' && strchr(WHITESPACE, *buf) == NULL) { - buf ++; - } - } - return argc; -c0100bc8: 8b 45 f4 mov -0xc(%ebp),%eax -} -c0100bcb: c9 leave -c0100bcc: c3 ret - -c0100bcd : -/* * - * runcmd - parse the input string, split it into separated arguments - * and then lookup and invoke some related commands/ - * */ -static int -runcmd(char *buf, struct trapframe *tf) { -c0100bcd: 55 push %ebp -c0100bce: 89 e5 mov %esp,%ebp -c0100bd0: 83 ec 58 sub $0x58,%esp - char *argv[MAXARGS]; - int argc = parse(buf, argv); -c0100bd3: 83 ec 08 sub $0x8,%esp -c0100bd6: 8d 45 b0 lea -0x50(%ebp),%eax -c0100bd9: 50 push %eax -c0100bda: ff 75 08 pushl 0x8(%ebp) -c0100bdd: e8 2f ff ff ff call c0100b11 -c0100be2: 83 c4 10 add $0x10,%esp -c0100be5: 89 45 f0 mov %eax,-0x10(%ebp) - if (argc == 0) { -c0100be8: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) -c0100bec: 75 0a jne c0100bf8 - return 0; -c0100bee: b8 00 00 00 00 mov $0x0,%eax -c0100bf3: e9 83 00 00 00 jmp c0100c7b - } - int i; - for (i = 0; i < NCOMMANDS; i ++) { -c0100bf8: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) -c0100bff: eb 59 jmp c0100c5a - if (strcmp(commands[i].name, argv[0]) == 0) { -c0100c01: 8b 4d b0 mov -0x50(%ebp),%ecx -c0100c04: 8b 55 f4 mov -0xc(%ebp),%edx -c0100c07: 89 d0 mov %edx,%eax -c0100c09: 01 c0 add %eax,%eax -c0100c0b: 01 d0 add %edx,%eax -c0100c0d: c1 e0 02 shl $0x2,%eax -c0100c10: 05 20 60 12 c0 add $0xc0126020,%eax -c0100c15: 8b 00 mov (%eax),%eax -c0100c17: 83 ec 08 sub $0x8,%esp -c0100c1a: 51 push %ecx -c0100c1b: 50 push %eax -c0100c1c: e8 e6 87 00 00 call c0109407 -c0100c21: 83 c4 10 add $0x10,%esp -c0100c24: 85 c0 test %eax,%eax -c0100c26: 75 2e jne c0100c56 - return commands[i].func(argc - 1, argv + 1, tf); -c0100c28: 8b 55 f4 mov -0xc(%ebp),%edx -c0100c2b: 89 d0 mov %edx,%eax -c0100c2d: 01 c0 add %eax,%eax -c0100c2f: 01 d0 add %edx,%eax -c0100c31: c1 e0 02 shl $0x2,%eax -c0100c34: 05 28 60 12 c0 add $0xc0126028,%eax -c0100c39: 8b 10 mov (%eax),%edx -c0100c3b: 8d 45 b0 lea -0x50(%ebp),%eax -c0100c3e: 83 c0 04 add $0x4,%eax -c0100c41: 8b 4d f0 mov -0x10(%ebp),%ecx -c0100c44: 83 e9 01 sub $0x1,%ecx -c0100c47: 83 ec 04 sub $0x4,%esp -c0100c4a: ff 75 0c pushl 0xc(%ebp) -c0100c4d: 50 push %eax -c0100c4e: 51 push %ecx -c0100c4f: ff d2 call *%edx -c0100c51: 83 c4 10 add $0x10,%esp -c0100c54: eb 25 jmp c0100c7b - int argc = parse(buf, argv); - if (argc == 0) { - return 0; - } - int i; - for (i = 0; i < NCOMMANDS; i ++) { -c0100c56: 83 45 f4 01 addl $0x1,-0xc(%ebp) -c0100c5a: 8b 45 f4 mov -0xc(%ebp),%eax -c0100c5d: 83 f8 02 cmp $0x2,%eax -c0100c60: 76 9f jbe c0100c01 - if (strcmp(commands[i].name, argv[0]) == 0) { - return commands[i].func(argc - 1, argv + 1, tf); - } - } - cprintf("Unknown command '%s'\n", argv[0]); -c0100c62: 8b 45 b0 mov -0x50(%ebp),%eax -c0100c65: 83 ec 08 sub $0x8,%esp -c0100c68: 50 push %eax -c0100c69: 68 8f a1 10 c0 push $0xc010a18f -c0100c6e: e8 0b f6 ff ff call c010027e -c0100c73: 83 c4 10 add $0x10,%esp - return 0; -c0100c76: b8 00 00 00 00 mov $0x0,%eax -} -c0100c7b: c9 leave -c0100c7c: c3 ret - -c0100c7d : - -/***** Implementations of basic kernel monitor commands *****/ - -void -kmonitor(struct trapframe *tf) { -c0100c7d: 55 push %ebp -c0100c7e: 89 e5 mov %esp,%ebp -c0100c80: 83 ec 18 sub $0x18,%esp - cprintf("Welcome to the kernel debug monitor!!\n"); -c0100c83: 83 ec 0c sub $0xc,%esp -c0100c86: 68 a8 a1 10 c0 push $0xc010a1a8 -c0100c8b: e8 ee f5 ff ff call c010027e -c0100c90: 83 c4 10 add $0x10,%esp - cprintf("Type 'help' for a list of commands.\n"); -c0100c93: 83 ec 0c sub $0xc,%esp -c0100c96: 68 d0 a1 10 c0 push $0xc010a1d0 -c0100c9b: e8 de f5 ff ff call c010027e -c0100ca0: 83 c4 10 add $0x10,%esp - - if (tf != NULL) { -c0100ca3: 83 7d 08 00 cmpl $0x0,0x8(%ebp) -c0100ca7: 74 0e je c0100cb7 - print_trapframe(tf); -c0100ca9: 83 ec 0c sub $0xc,%esp -c0100cac: ff 75 08 pushl 0x8(%ebp) -c0100caf: e8 46 16 00 00 call c01022fa -c0100cb4: 83 c4 10 add $0x10,%esp - } - - char *buf; - while (1) { - if ((buf = readline("K> ")) != NULL) { -c0100cb7: 83 ec 0c sub $0xc,%esp -c0100cba: 68 f5 a1 10 c0 push $0xc010a1f5 -c0100cbf: e8 5e f6 ff ff call c0100322 -c0100cc4: 83 c4 10 add $0x10,%esp -c0100cc7: 89 45 f4 mov %eax,-0xc(%ebp) -c0100cca: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c0100cce: 74 e7 je c0100cb7 - if (runcmd(buf, tf) < 0) { -c0100cd0: 83 ec 08 sub $0x8,%esp -c0100cd3: ff 75 08 pushl 0x8(%ebp) -c0100cd6: ff 75 f4 pushl -0xc(%ebp) -c0100cd9: e8 ef fe ff ff call c0100bcd -c0100cde: 83 c4 10 add $0x10,%esp -c0100ce1: 85 c0 test %eax,%eax -c0100ce3: 78 02 js c0100ce7 - break; - } - } - } -c0100ce5: eb d0 jmp c0100cb7 - - char *buf; - while (1) { - if ((buf = readline("K> ")) != NULL) { - if (runcmd(buf, tf) < 0) { - break; -c0100ce7: 90 nop - } - } - } -} -c0100ce8: 90 nop -c0100ce9: c9 leave -c0100cea: c3 ret - -c0100ceb : - -/* mon_help - print the information about mon_* functions */ -int -mon_help(int argc, char **argv, struct trapframe *tf) { -c0100ceb: 55 push %ebp -c0100cec: 89 e5 mov %esp,%ebp -c0100cee: 83 ec 18 sub $0x18,%esp - int i; - for (i = 0; i < NCOMMANDS; i ++) { -c0100cf1: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) -c0100cf8: eb 3c jmp c0100d36 - cprintf("%s - %s\n", commands[i].name, commands[i].desc); -c0100cfa: 8b 55 f4 mov -0xc(%ebp),%edx -c0100cfd: 89 d0 mov %edx,%eax -c0100cff: 01 c0 add %eax,%eax -c0100d01: 01 d0 add %edx,%eax -c0100d03: c1 e0 02 shl $0x2,%eax -c0100d06: 05 24 60 12 c0 add $0xc0126024,%eax -c0100d0b: 8b 08 mov (%eax),%ecx -c0100d0d: 8b 55 f4 mov -0xc(%ebp),%edx -c0100d10: 89 d0 mov %edx,%eax -c0100d12: 01 c0 add %eax,%eax -c0100d14: 01 d0 add %edx,%eax -c0100d16: c1 e0 02 shl $0x2,%eax -c0100d19: 05 20 60 12 c0 add $0xc0126020,%eax -c0100d1e: 8b 00 mov (%eax),%eax -c0100d20: 83 ec 04 sub $0x4,%esp -c0100d23: 51 push %ecx -c0100d24: 50 push %eax -c0100d25: 68 f9 a1 10 c0 push $0xc010a1f9 -c0100d2a: e8 4f f5 ff ff call c010027e -c0100d2f: 83 c4 10 add $0x10,%esp - -/* mon_help - print the information about mon_* functions */ -int -mon_help(int argc, char **argv, struct trapframe *tf) { - int i; - for (i = 0; i < NCOMMANDS; i ++) { -c0100d32: 83 45 f4 01 addl $0x1,-0xc(%ebp) -c0100d36: 8b 45 f4 mov -0xc(%ebp),%eax -c0100d39: 83 f8 02 cmp $0x2,%eax -c0100d3c: 76 bc jbe c0100cfa - cprintf("%s - %s\n", commands[i].name, commands[i].desc); - } - return 0; -c0100d3e: b8 00 00 00 00 mov $0x0,%eax -} -c0100d43: c9 leave -c0100d44: c3 ret - -c0100d45 : -/* * - * mon_kerninfo - call print_kerninfo in kern/debug/kdebug.c to - * print the memory occupancy in kernel. - * */ -int -mon_kerninfo(int argc, char **argv, struct trapframe *tf) { -c0100d45: 55 push %ebp -c0100d46: 89 e5 mov %esp,%ebp -c0100d48: 83 ec 08 sub $0x8,%esp - print_kerninfo(); -c0100d4b: e8 b8 fb ff ff call c0100908 - return 0; -c0100d50: b8 00 00 00 00 mov $0x0,%eax -} -c0100d55: c9 leave -c0100d56: c3 ret - -c0100d57 : -/* * - * mon_backtrace - call print_stackframe in kern/debug/kdebug.c to - * print a backtrace of the stack. - * */ -int -mon_backtrace(int argc, char **argv, struct trapframe *tf) { -c0100d57: 55 push %ebp -c0100d58: 89 e5 mov %esp,%ebp -c0100d5a: 83 ec 08 sub $0x8,%esp - print_stackframe(); -c0100d5d: e8 f0 fc ff ff call c0100a52 - return 0; -c0100d62: b8 00 00 00 00 mov $0x0,%eax -} -c0100d67: c9 leave -c0100d68: c3 ret - -c0100d69 : - unsigned int size; // Size in Sectors - unsigned char model[41]; // Model in String -} ide_devices[MAX_IDE]; - -static int -ide_wait_ready(unsigned short iobase, bool check_error) { -c0100d69: 55 push %ebp -c0100d6a: 89 e5 mov %esp,%ebp -c0100d6c: 83 ec 14 sub $0x14,%esp -c0100d6f: 8b 45 08 mov 0x8(%ebp),%eax -c0100d72: 66 89 45 ec mov %ax,-0x14(%ebp) - int r; - while ((r = inb(iobase + ISA_STATUS)) & IDE_BSY) -c0100d76: 90 nop -c0100d77: 0f b7 45 ec movzwl -0x14(%ebp),%eax -c0100d7b: 83 c0 07 add $0x7,%eax -c0100d7e: 0f b7 c0 movzwl %ax,%eax -c0100d81: 66 89 45 fa mov %ax,-0x6(%ebp) -static inline void invlpg(void *addr) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); -c0100d85: 0f b7 45 fa movzwl -0x6(%ebp),%eax -c0100d89: 89 c2 mov %eax,%edx -c0100d8b: ec in (%dx),%al -c0100d8c: 88 45 f9 mov %al,-0x7(%ebp) - return data; -c0100d8f: 0f b6 45 f9 movzbl -0x7(%ebp),%eax -c0100d93: 0f b6 c0 movzbl %al,%eax -c0100d96: 89 45 fc mov %eax,-0x4(%ebp) -c0100d99: 8b 45 fc mov -0x4(%ebp),%eax -c0100d9c: 25 80 00 00 00 and $0x80,%eax -c0100da1: 85 c0 test %eax,%eax -c0100da3: 75 d2 jne c0100d77 - /* nothing */; - if (check_error && (r & (IDE_DF | IDE_ERR)) != 0) { -c0100da5: 83 7d 0c 00 cmpl $0x0,0xc(%ebp) -c0100da9: 74 11 je c0100dbc -c0100dab: 8b 45 fc mov -0x4(%ebp),%eax -c0100dae: 83 e0 21 and $0x21,%eax -c0100db1: 85 c0 test %eax,%eax -c0100db3: 74 07 je c0100dbc - return -1; -c0100db5: b8 ff ff ff ff mov $0xffffffff,%eax -c0100dba: eb 05 jmp c0100dc1 - } - return 0; -c0100dbc: b8 00 00 00 00 mov $0x0,%eax -} -c0100dc1: c9 leave -c0100dc2: c3 ret - -c0100dc3 : - -void -ide_init(void) { -c0100dc3: 55 push %ebp -c0100dc4: 89 e5 mov %esp,%ebp -c0100dc6: 57 push %edi -c0100dc7: 53 push %ebx -c0100dc8: 81 ec 40 02 00 00 sub $0x240,%esp - static_assert((SECTSIZE % 4) == 0); - unsigned short ideno, iobase; - for (ideno = 0; ideno < MAX_IDE; ideno ++) { -c0100dce: 66 c7 45 f6 00 00 movw $0x0,-0xa(%ebp) -c0100dd4: e9 c1 02 00 00 jmp c010109a - /* assume that no device here */ - ide_devices[ideno].valid = 0; -c0100dd9: 0f b7 45 f6 movzwl -0xa(%ebp),%eax -c0100ddd: c1 e0 03 shl $0x3,%eax -c0100de0: 8d 14 c5 00 00 00 00 lea 0x0(,%eax,8),%edx -c0100de7: 29 c2 sub %eax,%edx -c0100de9: 89 d0 mov %edx,%eax -c0100deb: 05 00 6f 12 c0 add $0xc0126f00,%eax -c0100df0: c6 00 00 movb $0x0,(%eax) - - iobase = IO_BASE(ideno); -c0100df3: 0f b7 45 f6 movzwl -0xa(%ebp),%eax -c0100df7: 66 d1 e8 shr %ax -c0100dfa: 0f b7 c0 movzwl %ax,%eax -c0100dfd: 0f b7 04 85 04 a2 10 movzwl -0x3fef5dfc(,%eax,4),%eax -c0100e04: c0 -c0100e05: 66 89 45 ea mov %ax,-0x16(%ebp) - - /* wait device ready */ - ide_wait_ready(iobase, 0); -c0100e09: 0f b7 45 ea movzwl -0x16(%ebp),%eax -c0100e0d: 6a 00 push $0x0 -c0100e0f: 50 push %eax -c0100e10: e8 54 ff ff ff call c0100d69 -c0100e15: 83 c4 08 add $0x8,%esp - - /* step1: select drive */ - outb(iobase + ISA_SDH, 0xE0 | ((ideno & 1) << 4)); -c0100e18: 0f b7 45 f6 movzwl -0xa(%ebp),%eax -c0100e1c: 83 e0 01 and $0x1,%eax -c0100e1f: c1 e0 04 shl $0x4,%eax -c0100e22: 83 c8 e0 or $0xffffffe0,%eax -c0100e25: 0f b6 c0 movzbl %al,%eax -c0100e28: 0f b7 55 ea movzwl -0x16(%ebp),%edx -c0100e2c: 83 c2 06 add $0x6,%edx -c0100e2f: 0f b7 d2 movzwl %dx,%edx -c0100e32: 66 89 55 e2 mov %dx,-0x1e(%ebp) -c0100e36: 88 45 c7 mov %al,-0x39(%ebp) - : "memory", "cc"); -} - -static inline void -outb(uint16_t port, uint8_t data) { - asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); -c0100e39: 0f b6 45 c7 movzbl -0x39(%ebp),%eax -c0100e3d: 0f b7 55 e2 movzwl -0x1e(%ebp),%edx -c0100e41: ee out %al,(%dx) - ide_wait_ready(iobase, 0); -c0100e42: 0f b7 45 ea movzwl -0x16(%ebp),%eax -c0100e46: 6a 00 push $0x0 -c0100e48: 50 push %eax -c0100e49: e8 1b ff ff ff call c0100d69 -c0100e4e: 83 c4 08 add $0x8,%esp - - /* step2: send ATA identify command */ - outb(iobase + ISA_COMMAND, IDE_CMD_IDENTIFY); -c0100e51: 0f b7 45 ea movzwl -0x16(%ebp),%eax -c0100e55: 83 c0 07 add $0x7,%eax -c0100e58: 0f b7 c0 movzwl %ax,%eax -c0100e5b: 66 89 45 e0 mov %ax,-0x20(%ebp) -c0100e5f: c6 45 c8 ec movb $0xec,-0x38(%ebp) -c0100e63: 0f b6 45 c8 movzbl -0x38(%ebp),%eax -c0100e67: 0f b7 55 e0 movzwl -0x20(%ebp),%edx -c0100e6b: ee out %al,(%dx) - ide_wait_ready(iobase, 0); -c0100e6c: 0f b7 45 ea movzwl -0x16(%ebp),%eax -c0100e70: 6a 00 push $0x0 -c0100e72: 50 push %eax -c0100e73: e8 f1 fe ff ff call c0100d69 -c0100e78: 83 c4 08 add $0x8,%esp - - /* step3: polling */ - if (inb(iobase + ISA_STATUS) == 0 || ide_wait_ready(iobase, 1) != 0) { -c0100e7b: 0f b7 45 ea movzwl -0x16(%ebp),%eax -c0100e7f: 83 c0 07 add $0x7,%eax -c0100e82: 0f b7 c0 movzwl %ax,%eax -c0100e85: 66 89 45 ca mov %ax,-0x36(%ebp) -static inline void invlpg(void *addr) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); -c0100e89: 0f b7 45 ca movzwl -0x36(%ebp),%eax -c0100e8d: 89 c2 mov %eax,%edx -c0100e8f: ec in (%dx),%al -c0100e90: 88 45 c9 mov %al,-0x37(%ebp) - return data; -c0100e93: 0f b6 45 c9 movzbl -0x37(%ebp),%eax -c0100e97: 84 c0 test %al,%al -c0100e99: 0f 84 ef 01 00 00 je c010108e -c0100e9f: 0f b7 45 ea movzwl -0x16(%ebp),%eax -c0100ea3: 6a 01 push $0x1 -c0100ea5: 50 push %eax -c0100ea6: e8 be fe ff ff call c0100d69 -c0100eab: 83 c4 08 add $0x8,%esp -c0100eae: 85 c0 test %eax,%eax -c0100eb0: 0f 85 d8 01 00 00 jne c010108e - continue ; - } - - /* device is ok */ - ide_devices[ideno].valid = 1; -c0100eb6: 0f b7 45 f6 movzwl -0xa(%ebp),%eax -c0100eba: c1 e0 03 shl $0x3,%eax -c0100ebd: 8d 14 c5 00 00 00 00 lea 0x0(,%eax,8),%edx -c0100ec4: 29 c2 sub %eax,%edx -c0100ec6: 89 d0 mov %edx,%eax -c0100ec8: 05 00 6f 12 c0 add $0xc0126f00,%eax -c0100ecd: c6 00 01 movb $0x1,(%eax) - - /* read identification space of the device */ - unsigned int buffer[128]; - insl(iobase + ISA_DATA, buffer, sizeof(buffer) / sizeof(unsigned int)); -c0100ed0: 0f b7 45 ea movzwl -0x16(%ebp),%eax -c0100ed4: 89 45 e4 mov %eax,-0x1c(%ebp) -c0100ed7: 8d 85 bc fd ff ff lea -0x244(%ebp),%eax -c0100edd: 89 45 c0 mov %eax,-0x40(%ebp) -c0100ee0: c7 45 bc 80 00 00 00 movl $0x80,-0x44(%ebp) -} - -static inline void -insl(uint32_t port, void *addr, int cnt) { - asm volatile ( -c0100ee7: 8b 55 e4 mov -0x1c(%ebp),%edx -c0100eea: 8b 4d c0 mov -0x40(%ebp),%ecx -c0100eed: 8b 45 bc mov -0x44(%ebp),%eax -c0100ef0: 89 cb mov %ecx,%ebx -c0100ef2: 89 df mov %ebx,%edi -c0100ef4: 89 c1 mov %eax,%ecx -c0100ef6: fc cld -c0100ef7: f2 6d repnz insl (%dx),%es:(%edi) -c0100ef9: 89 c8 mov %ecx,%eax -c0100efb: 89 fb mov %edi,%ebx -c0100efd: 89 5d c0 mov %ebx,-0x40(%ebp) -c0100f00: 89 45 bc mov %eax,-0x44(%ebp) - - unsigned char *ident = (unsigned char *)buffer; -c0100f03: 8d 85 bc fd ff ff lea -0x244(%ebp),%eax -c0100f09: 89 45 dc mov %eax,-0x24(%ebp) - unsigned int sectors; - unsigned int cmdsets = *(unsigned int *)(ident + IDE_IDENT_CMDSETS); -c0100f0c: 8b 45 dc mov -0x24(%ebp),%eax -c0100f0f: 8b 80 a4 00 00 00 mov 0xa4(%eax),%eax -c0100f15: 89 45 d8 mov %eax,-0x28(%ebp) - /* device use 48-bits or 28-bits addressing */ - if (cmdsets & (1 << 26)) { -c0100f18: 8b 45 d8 mov -0x28(%ebp),%eax -c0100f1b: 25 00 00 00 04 and $0x4000000,%eax -c0100f20: 85 c0 test %eax,%eax -c0100f22: 74 0e je c0100f32 - sectors = *(unsigned int *)(ident + IDE_IDENT_MAX_LBA_EXT); -c0100f24: 8b 45 dc mov -0x24(%ebp),%eax -c0100f27: 8b 80 c8 00 00 00 mov 0xc8(%eax),%eax -c0100f2d: 89 45 f0 mov %eax,-0x10(%ebp) -c0100f30: eb 09 jmp c0100f3b - } - else { - sectors = *(unsigned int *)(ident + IDE_IDENT_MAX_LBA); -c0100f32: 8b 45 dc mov -0x24(%ebp),%eax -c0100f35: 8b 40 78 mov 0x78(%eax),%eax -c0100f38: 89 45 f0 mov %eax,-0x10(%ebp) - } - ide_devices[ideno].sets = cmdsets; -c0100f3b: 0f b7 45 f6 movzwl -0xa(%ebp),%eax -c0100f3f: c1 e0 03 shl $0x3,%eax -c0100f42: 8d 14 c5 00 00 00 00 lea 0x0(,%eax,8),%edx -c0100f49: 29 c2 sub %eax,%edx -c0100f4b: 89 d0 mov %edx,%eax -c0100f4d: 8d 90 04 6f 12 c0 lea -0x3fed90fc(%eax),%edx -c0100f53: 8b 45 d8 mov -0x28(%ebp),%eax -c0100f56: 89 02 mov %eax,(%edx) - ide_devices[ideno].size = sectors; -c0100f58: 0f b7 45 f6 movzwl -0xa(%ebp),%eax -c0100f5c: c1 e0 03 shl $0x3,%eax -c0100f5f: 8d 14 c5 00 00 00 00 lea 0x0(,%eax,8),%edx -c0100f66: 29 c2 sub %eax,%edx -c0100f68: 89 d0 mov %edx,%eax -c0100f6a: 8d 90 08 6f 12 c0 lea -0x3fed90f8(%eax),%edx -c0100f70: 8b 45 f0 mov -0x10(%ebp),%eax -c0100f73: 89 02 mov %eax,(%edx) - - /* check if supports LBA */ - assert((*(unsigned short *)(ident + IDE_IDENT_CAPABILITIES) & 0x200) != 0); -c0100f75: 8b 45 dc mov -0x24(%ebp),%eax -c0100f78: 83 c0 62 add $0x62,%eax -c0100f7b: 0f b7 00 movzwl (%eax),%eax -c0100f7e: 0f b7 c0 movzwl %ax,%eax -c0100f81: 25 00 02 00 00 and $0x200,%eax -c0100f86: 85 c0 test %eax,%eax -c0100f88: 75 16 jne c0100fa0 -c0100f8a: 68 0c a2 10 c0 push $0xc010a20c -c0100f8f: 68 4f a2 10 c0 push $0xc010a24f -c0100f94: 6a 7d push $0x7d -c0100f96: 68 64 a2 10 c0 push $0xc010a264 -c0100f9b: e8 44 f4 ff ff call c01003e4 <__panic> - - unsigned char *model = ide_devices[ideno].model, *data = ident + IDE_IDENT_MODEL; -c0100fa0: 0f b7 45 f6 movzwl -0xa(%ebp),%eax -c0100fa4: 89 c2 mov %eax,%edx -c0100fa6: 8d 04 d5 00 00 00 00 lea 0x0(,%edx,8),%eax -c0100fad: 89 c2 mov %eax,%edx -c0100faf: 8d 04 d5 00 00 00 00 lea 0x0(,%edx,8),%eax -c0100fb6: 29 d0 sub %edx,%eax -c0100fb8: 05 00 6f 12 c0 add $0xc0126f00,%eax -c0100fbd: 83 c0 0c add $0xc,%eax -c0100fc0: 89 45 d4 mov %eax,-0x2c(%ebp) -c0100fc3: 8b 45 dc mov -0x24(%ebp),%eax -c0100fc6: 83 c0 36 add $0x36,%eax -c0100fc9: 89 45 d0 mov %eax,-0x30(%ebp) - unsigned int i, length = 40; -c0100fcc: c7 45 cc 28 00 00 00 movl $0x28,-0x34(%ebp) - for (i = 0; i < length; i += 2) { -c0100fd3: c7 45 ec 00 00 00 00 movl $0x0,-0x14(%ebp) -c0100fda: eb 34 jmp c0101010 - model[i] = data[i + 1], model[i + 1] = data[i]; -c0100fdc: 8b 55 d4 mov -0x2c(%ebp),%edx -c0100fdf: 8b 45 ec mov -0x14(%ebp),%eax -c0100fe2: 01 c2 add %eax,%edx -c0100fe4: 8b 45 ec mov -0x14(%ebp),%eax -c0100fe7: 8d 48 01 lea 0x1(%eax),%ecx -c0100fea: 8b 45 d0 mov -0x30(%ebp),%eax -c0100fed: 01 c8 add %ecx,%eax -c0100fef: 0f b6 00 movzbl (%eax),%eax -c0100ff2: 88 02 mov %al,(%edx) -c0100ff4: 8b 45 ec mov -0x14(%ebp),%eax -c0100ff7: 8d 50 01 lea 0x1(%eax),%edx -c0100ffa: 8b 45 d4 mov -0x2c(%ebp),%eax -c0100ffd: 01 c2 add %eax,%edx -c0100fff: 8b 4d d0 mov -0x30(%ebp),%ecx -c0101002: 8b 45 ec mov -0x14(%ebp),%eax -c0101005: 01 c8 add %ecx,%eax -c0101007: 0f b6 00 movzbl (%eax),%eax -c010100a: 88 02 mov %al,(%edx) - /* check if supports LBA */ - assert((*(unsigned short *)(ident + IDE_IDENT_CAPABILITIES) & 0x200) != 0); - - unsigned char *model = ide_devices[ideno].model, *data = ident + IDE_IDENT_MODEL; - unsigned int i, length = 40; - for (i = 0; i < length; i += 2) { -c010100c: 83 45 ec 02 addl $0x2,-0x14(%ebp) -c0101010: 8b 45 ec mov -0x14(%ebp),%eax -c0101013: 3b 45 cc cmp -0x34(%ebp),%eax -c0101016: 72 c4 jb c0100fdc - model[i] = data[i + 1], model[i + 1] = data[i]; - } - do { - model[i] = '\0'; -c0101018: 8b 55 d4 mov -0x2c(%ebp),%edx -c010101b: 8b 45 ec mov -0x14(%ebp),%eax -c010101e: 01 d0 add %edx,%eax -c0101020: c6 00 00 movb $0x0,(%eax) - } while (i -- > 0 && model[i] == ' '); -c0101023: 8b 45 ec mov -0x14(%ebp),%eax -c0101026: 8d 50 ff lea -0x1(%eax),%edx -c0101029: 89 55 ec mov %edx,-0x14(%ebp) -c010102c: 85 c0 test %eax,%eax -c010102e: 74 0f je c010103f -c0101030: 8b 55 d4 mov -0x2c(%ebp),%edx -c0101033: 8b 45 ec mov -0x14(%ebp),%eax -c0101036: 01 d0 add %edx,%eax -c0101038: 0f b6 00 movzbl (%eax),%eax -c010103b: 3c 20 cmp $0x20,%al -c010103d: 74 d9 je c0101018 - - cprintf("ide %d: %10u(sectors), '%s'.\n", ideno, ide_devices[ideno].size, ide_devices[ideno].model); -c010103f: 0f b7 45 f6 movzwl -0xa(%ebp),%eax -c0101043: 89 c2 mov %eax,%edx -c0101045: 8d 04 d5 00 00 00 00 lea 0x0(,%edx,8),%eax -c010104c: 89 c2 mov %eax,%edx -c010104e: 8d 04 d5 00 00 00 00 lea 0x0(,%edx,8),%eax -c0101055: 29 d0 sub %edx,%eax -c0101057: 05 00 6f 12 c0 add $0xc0126f00,%eax -c010105c: 8d 48 0c lea 0xc(%eax),%ecx -c010105f: 0f b7 45 f6 movzwl -0xa(%ebp),%eax -c0101063: c1 e0 03 shl $0x3,%eax -c0101066: 8d 14 c5 00 00 00 00 lea 0x0(,%eax,8),%edx -c010106d: 29 c2 sub %eax,%edx -c010106f: 89 d0 mov %edx,%eax -c0101071: 05 08 6f 12 c0 add $0xc0126f08,%eax -c0101076: 8b 10 mov (%eax),%edx -c0101078: 0f b7 45 f6 movzwl -0xa(%ebp),%eax -c010107c: 51 push %ecx -c010107d: 52 push %edx -c010107e: 50 push %eax -c010107f: 68 76 a2 10 c0 push $0xc010a276 -c0101084: e8 f5 f1 ff ff call c010027e -c0101089: 83 c4 10 add $0x10,%esp -c010108c: eb 01 jmp c010108f - outb(iobase + ISA_COMMAND, IDE_CMD_IDENTIFY); - ide_wait_ready(iobase, 0); - - /* step3: polling */ - if (inb(iobase + ISA_STATUS) == 0 || ide_wait_ready(iobase, 1) != 0) { - continue ; -c010108e: 90 nop - -void -ide_init(void) { - static_assert((SECTSIZE % 4) == 0); - unsigned short ideno, iobase; - for (ideno = 0; ideno < MAX_IDE; ideno ++) { -c010108f: 0f b7 45 f6 movzwl -0xa(%ebp),%eax -c0101093: 83 c0 01 add $0x1,%eax -c0101096: 66 89 45 f6 mov %ax,-0xa(%ebp) -c010109a: 66 83 7d f6 03 cmpw $0x3,-0xa(%ebp) -c010109f: 0f 86 34 fd ff ff jbe c0100dd9 - - cprintf("ide %d: %10u(sectors), '%s'.\n", ideno, ide_devices[ideno].size, ide_devices[ideno].model); - } - - // enable ide interrupt - pic_enable(IRQ_IDE1); -c01010a5: 83 ec 0c sub $0xc,%esp -c01010a8: 6a 0e push $0xe -c01010aa: e8 8a 0e 00 00 call c0101f39 -c01010af: 83 c4 10 add $0x10,%esp - pic_enable(IRQ_IDE2); -c01010b2: 83 ec 0c sub $0xc,%esp -c01010b5: 6a 0f push $0xf -c01010b7: e8 7d 0e 00 00 call c0101f39 -c01010bc: 83 c4 10 add $0x10,%esp -} -c01010bf: 90 nop -c01010c0: 8d 65 f8 lea -0x8(%ebp),%esp -c01010c3: 5b pop %ebx -c01010c4: 5f pop %edi -c01010c5: 5d pop %ebp -c01010c6: c3 ret - -c01010c7 : - -bool -ide_device_valid(unsigned short ideno) { -c01010c7: 55 push %ebp -c01010c8: 89 e5 mov %esp,%ebp -c01010ca: 83 ec 04 sub $0x4,%esp -c01010cd: 8b 45 08 mov 0x8(%ebp),%eax -c01010d0: 66 89 45 fc mov %ax,-0x4(%ebp) - return VALID_IDE(ideno); -c01010d4: 66 83 7d fc 03 cmpw $0x3,-0x4(%ebp) -c01010d9: 77 25 ja c0101100 -c01010db: 0f b7 45 fc movzwl -0x4(%ebp),%eax -c01010df: c1 e0 03 shl $0x3,%eax -c01010e2: 8d 14 c5 00 00 00 00 lea 0x0(,%eax,8),%edx -c01010e9: 29 c2 sub %eax,%edx -c01010eb: 89 d0 mov %edx,%eax -c01010ed: 05 00 6f 12 c0 add $0xc0126f00,%eax -c01010f2: 0f b6 00 movzbl (%eax),%eax -c01010f5: 84 c0 test %al,%al -c01010f7: 74 07 je c0101100 -c01010f9: b8 01 00 00 00 mov $0x1,%eax -c01010fe: eb 05 jmp c0101105 -c0101100: b8 00 00 00 00 mov $0x0,%eax -} -c0101105: c9 leave -c0101106: c3 ret - -c0101107 : - -size_t -ide_device_size(unsigned short ideno) { -c0101107: 55 push %ebp -c0101108: 89 e5 mov %esp,%ebp -c010110a: 83 ec 04 sub $0x4,%esp -c010110d: 8b 45 08 mov 0x8(%ebp),%eax -c0101110: 66 89 45 fc mov %ax,-0x4(%ebp) - if (ide_device_valid(ideno)) { -c0101114: 0f b7 45 fc movzwl -0x4(%ebp),%eax -c0101118: 50 push %eax -c0101119: e8 a9 ff ff ff call c01010c7 -c010111e: 83 c4 04 add $0x4,%esp -c0101121: 85 c0 test %eax,%eax -c0101123: 74 1b je c0101140 - return ide_devices[ideno].size; -c0101125: 0f b7 45 fc movzwl -0x4(%ebp),%eax -c0101129: c1 e0 03 shl $0x3,%eax -c010112c: 8d 14 c5 00 00 00 00 lea 0x0(,%eax,8),%edx -c0101133: 29 c2 sub %eax,%edx -c0101135: 89 d0 mov %edx,%eax -c0101137: 05 08 6f 12 c0 add $0xc0126f08,%eax -c010113c: 8b 00 mov (%eax),%eax -c010113e: eb 05 jmp c0101145 - } - return 0; -c0101140: b8 00 00 00 00 mov $0x0,%eax -} -c0101145: c9 leave -c0101146: c3 ret - -c0101147 : - -int -ide_read_secs(unsigned short ideno, uint32_t secno, void *dst, size_t nsecs) { -c0101147: 55 push %ebp -c0101148: 89 e5 mov %esp,%ebp -c010114a: 57 push %edi -c010114b: 53 push %ebx -c010114c: 83 ec 40 sub $0x40,%esp -c010114f: 8b 45 08 mov 0x8(%ebp),%eax -c0101152: 66 89 45 c4 mov %ax,-0x3c(%ebp) - assert(nsecs <= MAX_NSECS && VALID_IDE(ideno)); -c0101156: 81 7d 14 80 00 00 00 cmpl $0x80,0x14(%ebp) -c010115d: 77 25 ja c0101184 -c010115f: 66 83 7d c4 03 cmpw $0x3,-0x3c(%ebp) -c0101164: 77 1e ja c0101184 -c0101166: 0f b7 45 c4 movzwl -0x3c(%ebp),%eax -c010116a: c1 e0 03 shl $0x3,%eax -c010116d: 8d 14 c5 00 00 00 00 lea 0x0(,%eax,8),%edx -c0101174: 29 c2 sub %eax,%edx -c0101176: 89 d0 mov %edx,%eax -c0101178: 05 00 6f 12 c0 add $0xc0126f00,%eax -c010117d: 0f b6 00 movzbl (%eax),%eax -c0101180: 84 c0 test %al,%al -c0101182: 75 19 jne c010119d -c0101184: 68 94 a2 10 c0 push $0xc010a294 -c0101189: 68 4f a2 10 c0 push $0xc010a24f -c010118e: 68 9f 00 00 00 push $0x9f -c0101193: 68 64 a2 10 c0 push $0xc010a264 -c0101198: e8 47 f2 ff ff call c01003e4 <__panic> - assert(secno < MAX_DISK_NSECS && secno + nsecs <= MAX_DISK_NSECS); -c010119d: 81 7d 0c ff ff ff 0f cmpl $0xfffffff,0xc(%ebp) -c01011a4: 77 0f ja c01011b5 -c01011a6: 8b 55 0c mov 0xc(%ebp),%edx -c01011a9: 8b 45 14 mov 0x14(%ebp),%eax -c01011ac: 01 d0 add %edx,%eax -c01011ae: 3d 00 00 00 10 cmp $0x10000000,%eax -c01011b3: 76 19 jbe c01011ce -c01011b5: 68 bc a2 10 c0 push $0xc010a2bc -c01011ba: 68 4f a2 10 c0 push $0xc010a24f -c01011bf: 68 a0 00 00 00 push $0xa0 -c01011c4: 68 64 a2 10 c0 push $0xc010a264 -c01011c9: e8 16 f2 ff ff call c01003e4 <__panic> - unsigned short iobase = IO_BASE(ideno), ioctrl = IO_CTRL(ideno); -c01011ce: 0f b7 45 c4 movzwl -0x3c(%ebp),%eax -c01011d2: 66 d1 e8 shr %ax -c01011d5: 0f b7 c0 movzwl %ax,%eax -c01011d8: 0f b7 04 85 04 a2 10 movzwl -0x3fef5dfc(,%eax,4),%eax -c01011df: c0 -c01011e0: 66 89 45 f2 mov %ax,-0xe(%ebp) -c01011e4: 0f b7 45 c4 movzwl -0x3c(%ebp),%eax -c01011e8: 66 d1 e8 shr %ax -c01011eb: 0f b7 c0 movzwl %ax,%eax -c01011ee: 0f b7 04 85 06 a2 10 movzwl -0x3fef5dfa(,%eax,4),%eax -c01011f5: c0 -c01011f6: 66 89 45 f0 mov %ax,-0x10(%ebp) - - ide_wait_ready(iobase, 0); -c01011fa: 0f b7 45 f2 movzwl -0xe(%ebp),%eax -c01011fe: 83 ec 08 sub $0x8,%esp -c0101201: 6a 00 push $0x0 -c0101203: 50 push %eax -c0101204: e8 60 fb ff ff call c0100d69 -c0101209: 83 c4 10 add $0x10,%esp - - // generate interrupt - outb(ioctrl + ISA_CTRL, 0); -c010120c: 0f b7 45 f0 movzwl -0x10(%ebp),%eax -c0101210: 83 c0 02 add $0x2,%eax -c0101213: 0f b7 c0 movzwl %ax,%eax -c0101216: 66 89 45 ea mov %ax,-0x16(%ebp) -c010121a: c6 45 d7 00 movb $0x0,-0x29(%ebp) - : "memory", "cc"); -} - -static inline void -outb(uint16_t port, uint8_t data) { - asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); -c010121e: 0f b6 45 d7 movzbl -0x29(%ebp),%eax -c0101222: 0f b7 55 ea movzwl -0x16(%ebp),%edx -c0101226: ee out %al,(%dx) - outb(iobase + ISA_SECCNT, nsecs); -c0101227: 8b 45 14 mov 0x14(%ebp),%eax -c010122a: 0f b6 c0 movzbl %al,%eax -c010122d: 0f b7 55 f2 movzwl -0xe(%ebp),%edx -c0101231: 83 c2 02 add $0x2,%edx -c0101234: 0f b7 d2 movzwl %dx,%edx -c0101237: 66 89 55 e8 mov %dx,-0x18(%ebp) -c010123b: 88 45 d8 mov %al,-0x28(%ebp) -c010123e: 0f b6 45 d8 movzbl -0x28(%ebp),%eax -c0101242: 0f b7 55 e8 movzwl -0x18(%ebp),%edx -c0101246: ee out %al,(%dx) - outb(iobase + ISA_SECTOR, secno & 0xFF); -c0101247: 8b 45 0c mov 0xc(%ebp),%eax -c010124a: 0f b6 c0 movzbl %al,%eax -c010124d: 0f b7 55 f2 movzwl -0xe(%ebp),%edx -c0101251: 83 c2 03 add $0x3,%edx -c0101254: 0f b7 d2 movzwl %dx,%edx -c0101257: 66 89 55 e6 mov %dx,-0x1a(%ebp) -c010125b: 88 45 d9 mov %al,-0x27(%ebp) -c010125e: 0f b6 45 d9 movzbl -0x27(%ebp),%eax -c0101262: 0f b7 55 e6 movzwl -0x1a(%ebp),%edx -c0101266: ee out %al,(%dx) - outb(iobase + ISA_CYL_LO, (secno >> 8) & 0xFF); -c0101267: 8b 45 0c mov 0xc(%ebp),%eax -c010126a: c1 e8 08 shr $0x8,%eax -c010126d: 0f b6 c0 movzbl %al,%eax -c0101270: 0f b7 55 f2 movzwl -0xe(%ebp),%edx -c0101274: 83 c2 04 add $0x4,%edx -c0101277: 0f b7 d2 movzwl %dx,%edx -c010127a: 66 89 55 e4 mov %dx,-0x1c(%ebp) -c010127e: 88 45 da mov %al,-0x26(%ebp) -c0101281: 0f b6 45 da movzbl -0x26(%ebp),%eax -c0101285: 0f b7 55 e4 movzwl -0x1c(%ebp),%edx -c0101289: ee out %al,(%dx) - outb(iobase + ISA_CYL_HI, (secno >> 16) & 0xFF); -c010128a: 8b 45 0c mov 0xc(%ebp),%eax -c010128d: c1 e8 10 shr $0x10,%eax -c0101290: 0f b6 c0 movzbl %al,%eax -c0101293: 0f b7 55 f2 movzwl -0xe(%ebp),%edx -c0101297: 83 c2 05 add $0x5,%edx -c010129a: 0f b7 d2 movzwl %dx,%edx -c010129d: 66 89 55 e2 mov %dx,-0x1e(%ebp) -c01012a1: 88 45 db mov %al,-0x25(%ebp) -c01012a4: 0f b6 45 db movzbl -0x25(%ebp),%eax -c01012a8: 0f b7 55 e2 movzwl -0x1e(%ebp),%edx -c01012ac: ee out %al,(%dx) - outb(iobase + ISA_SDH, 0xE0 | ((ideno & 1) << 4) | ((secno >> 24) & 0xF)); -c01012ad: 0f b7 45 c4 movzwl -0x3c(%ebp),%eax -c01012b1: 83 e0 01 and $0x1,%eax -c01012b4: c1 e0 04 shl $0x4,%eax -c01012b7: 89 c2 mov %eax,%edx -c01012b9: 8b 45 0c mov 0xc(%ebp),%eax -c01012bc: c1 e8 18 shr $0x18,%eax -c01012bf: 83 e0 0f and $0xf,%eax -c01012c2: 09 d0 or %edx,%eax -c01012c4: 83 c8 e0 or $0xffffffe0,%eax -c01012c7: 0f b6 c0 movzbl %al,%eax -c01012ca: 0f b7 55 f2 movzwl -0xe(%ebp),%edx -c01012ce: 83 c2 06 add $0x6,%edx -c01012d1: 0f b7 d2 movzwl %dx,%edx -c01012d4: 66 89 55 e0 mov %dx,-0x20(%ebp) -c01012d8: 88 45 dc mov %al,-0x24(%ebp) -c01012db: 0f b6 45 dc movzbl -0x24(%ebp),%eax -c01012df: 0f b7 55 e0 movzwl -0x20(%ebp),%edx -c01012e3: ee out %al,(%dx) - outb(iobase + ISA_COMMAND, IDE_CMD_READ); -c01012e4: 0f b7 45 f2 movzwl -0xe(%ebp),%eax -c01012e8: 83 c0 07 add $0x7,%eax -c01012eb: 0f b7 c0 movzwl %ax,%eax -c01012ee: 66 89 45 de mov %ax,-0x22(%ebp) -c01012f2: c6 45 dd 20 movb $0x20,-0x23(%ebp) -c01012f6: 0f b6 45 dd movzbl -0x23(%ebp),%eax -c01012fa: 0f b7 55 de movzwl -0x22(%ebp),%edx -c01012fe: ee out %al,(%dx) - - int ret = 0; -c01012ff: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - for (; nsecs > 0; nsecs --, dst += SECTSIZE) { -c0101306: eb 56 jmp c010135e - if ((ret = ide_wait_ready(iobase, 1)) != 0) { -c0101308: 0f b7 45 f2 movzwl -0xe(%ebp),%eax -c010130c: 83 ec 08 sub $0x8,%esp -c010130f: 6a 01 push $0x1 -c0101311: 50 push %eax -c0101312: e8 52 fa ff ff call c0100d69 -c0101317: 83 c4 10 add $0x10,%esp -c010131a: 89 45 f4 mov %eax,-0xc(%ebp) -c010131d: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c0101321: 75 43 jne c0101366 - goto out; - } - insl(iobase, dst, SECTSIZE / sizeof(uint32_t)); -c0101323: 0f b7 45 f2 movzwl -0xe(%ebp),%eax -c0101327: 89 45 ec mov %eax,-0x14(%ebp) -c010132a: 8b 45 10 mov 0x10(%ebp),%eax -c010132d: 89 45 d0 mov %eax,-0x30(%ebp) -c0101330: c7 45 cc 80 00 00 00 movl $0x80,-0x34(%ebp) - return data; -} - -static inline void -insl(uint32_t port, void *addr, int cnt) { - asm volatile ( -c0101337: 8b 55 ec mov -0x14(%ebp),%edx -c010133a: 8b 4d d0 mov -0x30(%ebp),%ecx -c010133d: 8b 45 cc mov -0x34(%ebp),%eax -c0101340: 89 cb mov %ecx,%ebx -c0101342: 89 df mov %ebx,%edi -c0101344: 89 c1 mov %eax,%ecx -c0101346: fc cld -c0101347: f2 6d repnz insl (%dx),%es:(%edi) -c0101349: 89 c8 mov %ecx,%eax -c010134b: 89 fb mov %edi,%ebx -c010134d: 89 5d d0 mov %ebx,-0x30(%ebp) -c0101350: 89 45 cc mov %eax,-0x34(%ebp) - outb(iobase + ISA_CYL_HI, (secno >> 16) & 0xFF); - outb(iobase + ISA_SDH, 0xE0 | ((ideno & 1) << 4) | ((secno >> 24) & 0xF)); - outb(iobase + ISA_COMMAND, IDE_CMD_READ); - - int ret = 0; - for (; nsecs > 0; nsecs --, dst += SECTSIZE) { -c0101353: 83 6d 14 01 subl $0x1,0x14(%ebp) -c0101357: 81 45 10 00 02 00 00 addl $0x200,0x10(%ebp) -c010135e: 83 7d 14 00 cmpl $0x0,0x14(%ebp) -c0101362: 75 a4 jne c0101308 -c0101364: eb 01 jmp c0101367 - if ((ret = ide_wait_ready(iobase, 1)) != 0) { - goto out; -c0101366: 90 nop - } - insl(iobase, dst, SECTSIZE / sizeof(uint32_t)); - } - -out: - return ret; -c0101367: 8b 45 f4 mov -0xc(%ebp),%eax -} -c010136a: 8d 65 f8 lea -0x8(%ebp),%esp -c010136d: 5b pop %ebx -c010136e: 5f pop %edi -c010136f: 5d pop %ebp -c0101370: c3 ret - -c0101371 : - -int -ide_write_secs(unsigned short ideno, uint32_t secno, const void *src, size_t nsecs) { -c0101371: 55 push %ebp -c0101372: 89 e5 mov %esp,%ebp -c0101374: 56 push %esi -c0101375: 53 push %ebx -c0101376: 83 ec 40 sub $0x40,%esp -c0101379: 8b 45 08 mov 0x8(%ebp),%eax -c010137c: 66 89 45 c4 mov %ax,-0x3c(%ebp) - assert(nsecs <= MAX_NSECS && VALID_IDE(ideno)); -c0101380: 81 7d 14 80 00 00 00 cmpl $0x80,0x14(%ebp) -c0101387: 77 25 ja c01013ae -c0101389: 66 83 7d c4 03 cmpw $0x3,-0x3c(%ebp) -c010138e: 77 1e ja c01013ae -c0101390: 0f b7 45 c4 movzwl -0x3c(%ebp),%eax -c0101394: c1 e0 03 shl $0x3,%eax -c0101397: 8d 14 c5 00 00 00 00 lea 0x0(,%eax,8),%edx -c010139e: 29 c2 sub %eax,%edx -c01013a0: 89 d0 mov %edx,%eax -c01013a2: 05 00 6f 12 c0 add $0xc0126f00,%eax -c01013a7: 0f b6 00 movzbl (%eax),%eax -c01013aa: 84 c0 test %al,%al -c01013ac: 75 19 jne c01013c7 -c01013ae: 68 94 a2 10 c0 push $0xc010a294 -c01013b3: 68 4f a2 10 c0 push $0xc010a24f -c01013b8: 68 bc 00 00 00 push $0xbc -c01013bd: 68 64 a2 10 c0 push $0xc010a264 -c01013c2: e8 1d f0 ff ff call c01003e4 <__panic> - assert(secno < MAX_DISK_NSECS && secno + nsecs <= MAX_DISK_NSECS); -c01013c7: 81 7d 0c ff ff ff 0f cmpl $0xfffffff,0xc(%ebp) -c01013ce: 77 0f ja c01013df -c01013d0: 8b 55 0c mov 0xc(%ebp),%edx -c01013d3: 8b 45 14 mov 0x14(%ebp),%eax -c01013d6: 01 d0 add %edx,%eax -c01013d8: 3d 00 00 00 10 cmp $0x10000000,%eax -c01013dd: 76 19 jbe c01013f8 -c01013df: 68 bc a2 10 c0 push $0xc010a2bc -c01013e4: 68 4f a2 10 c0 push $0xc010a24f -c01013e9: 68 bd 00 00 00 push $0xbd -c01013ee: 68 64 a2 10 c0 push $0xc010a264 -c01013f3: e8 ec ef ff ff call c01003e4 <__panic> - unsigned short iobase = IO_BASE(ideno), ioctrl = IO_CTRL(ideno); -c01013f8: 0f b7 45 c4 movzwl -0x3c(%ebp),%eax -c01013fc: 66 d1 e8 shr %ax -c01013ff: 0f b7 c0 movzwl %ax,%eax -c0101402: 0f b7 04 85 04 a2 10 movzwl -0x3fef5dfc(,%eax,4),%eax -c0101409: c0 -c010140a: 66 89 45 f2 mov %ax,-0xe(%ebp) -c010140e: 0f b7 45 c4 movzwl -0x3c(%ebp),%eax -c0101412: 66 d1 e8 shr %ax -c0101415: 0f b7 c0 movzwl %ax,%eax -c0101418: 0f b7 04 85 06 a2 10 movzwl -0x3fef5dfa(,%eax,4),%eax -c010141f: c0 -c0101420: 66 89 45 f0 mov %ax,-0x10(%ebp) - - ide_wait_ready(iobase, 0); -c0101424: 0f b7 45 f2 movzwl -0xe(%ebp),%eax -c0101428: 83 ec 08 sub $0x8,%esp -c010142b: 6a 00 push $0x0 -c010142d: 50 push %eax -c010142e: e8 36 f9 ff ff call c0100d69 -c0101433: 83 c4 10 add $0x10,%esp - - // generate interrupt - outb(ioctrl + ISA_CTRL, 0); -c0101436: 0f b7 45 f0 movzwl -0x10(%ebp),%eax -c010143a: 83 c0 02 add $0x2,%eax -c010143d: 0f b7 c0 movzwl %ax,%eax -c0101440: 66 89 45 ea mov %ax,-0x16(%ebp) -c0101444: c6 45 d7 00 movb $0x0,-0x29(%ebp) - : "memory", "cc"); -} - -static inline void -outb(uint16_t port, uint8_t data) { - asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); -c0101448: 0f b6 45 d7 movzbl -0x29(%ebp),%eax -c010144c: 0f b7 55 ea movzwl -0x16(%ebp),%edx -c0101450: ee out %al,(%dx) - outb(iobase + ISA_SECCNT, nsecs); -c0101451: 8b 45 14 mov 0x14(%ebp),%eax -c0101454: 0f b6 c0 movzbl %al,%eax -c0101457: 0f b7 55 f2 movzwl -0xe(%ebp),%edx -c010145b: 83 c2 02 add $0x2,%edx -c010145e: 0f b7 d2 movzwl %dx,%edx -c0101461: 66 89 55 e8 mov %dx,-0x18(%ebp) -c0101465: 88 45 d8 mov %al,-0x28(%ebp) -c0101468: 0f b6 45 d8 movzbl -0x28(%ebp),%eax -c010146c: 0f b7 55 e8 movzwl -0x18(%ebp),%edx -c0101470: ee out %al,(%dx) - outb(iobase + ISA_SECTOR, secno & 0xFF); -c0101471: 8b 45 0c mov 0xc(%ebp),%eax -c0101474: 0f b6 c0 movzbl %al,%eax -c0101477: 0f b7 55 f2 movzwl -0xe(%ebp),%edx -c010147b: 83 c2 03 add $0x3,%edx -c010147e: 0f b7 d2 movzwl %dx,%edx -c0101481: 66 89 55 e6 mov %dx,-0x1a(%ebp) -c0101485: 88 45 d9 mov %al,-0x27(%ebp) -c0101488: 0f b6 45 d9 movzbl -0x27(%ebp),%eax -c010148c: 0f b7 55 e6 movzwl -0x1a(%ebp),%edx -c0101490: ee out %al,(%dx) - outb(iobase + ISA_CYL_LO, (secno >> 8) & 0xFF); -c0101491: 8b 45 0c mov 0xc(%ebp),%eax -c0101494: c1 e8 08 shr $0x8,%eax -c0101497: 0f b6 c0 movzbl %al,%eax -c010149a: 0f b7 55 f2 movzwl -0xe(%ebp),%edx -c010149e: 83 c2 04 add $0x4,%edx -c01014a1: 0f b7 d2 movzwl %dx,%edx -c01014a4: 66 89 55 e4 mov %dx,-0x1c(%ebp) -c01014a8: 88 45 da mov %al,-0x26(%ebp) -c01014ab: 0f b6 45 da movzbl -0x26(%ebp),%eax -c01014af: 0f b7 55 e4 movzwl -0x1c(%ebp),%edx -c01014b3: ee out %al,(%dx) - outb(iobase + ISA_CYL_HI, (secno >> 16) & 0xFF); -c01014b4: 8b 45 0c mov 0xc(%ebp),%eax -c01014b7: c1 e8 10 shr $0x10,%eax -c01014ba: 0f b6 c0 movzbl %al,%eax -c01014bd: 0f b7 55 f2 movzwl -0xe(%ebp),%edx -c01014c1: 83 c2 05 add $0x5,%edx -c01014c4: 0f b7 d2 movzwl %dx,%edx -c01014c7: 66 89 55 e2 mov %dx,-0x1e(%ebp) -c01014cb: 88 45 db mov %al,-0x25(%ebp) -c01014ce: 0f b6 45 db movzbl -0x25(%ebp),%eax -c01014d2: 0f b7 55 e2 movzwl -0x1e(%ebp),%edx -c01014d6: ee out %al,(%dx) - outb(iobase + ISA_SDH, 0xE0 | ((ideno & 1) << 4) | ((secno >> 24) & 0xF)); -c01014d7: 0f b7 45 c4 movzwl -0x3c(%ebp),%eax -c01014db: 83 e0 01 and $0x1,%eax -c01014de: c1 e0 04 shl $0x4,%eax -c01014e1: 89 c2 mov %eax,%edx -c01014e3: 8b 45 0c mov 0xc(%ebp),%eax -c01014e6: c1 e8 18 shr $0x18,%eax -c01014e9: 83 e0 0f and $0xf,%eax -c01014ec: 09 d0 or %edx,%eax -c01014ee: 83 c8 e0 or $0xffffffe0,%eax -c01014f1: 0f b6 c0 movzbl %al,%eax -c01014f4: 0f b7 55 f2 movzwl -0xe(%ebp),%edx -c01014f8: 83 c2 06 add $0x6,%edx -c01014fb: 0f b7 d2 movzwl %dx,%edx -c01014fe: 66 89 55 e0 mov %dx,-0x20(%ebp) -c0101502: 88 45 dc mov %al,-0x24(%ebp) -c0101505: 0f b6 45 dc movzbl -0x24(%ebp),%eax -c0101509: 0f b7 55 e0 movzwl -0x20(%ebp),%edx -c010150d: ee out %al,(%dx) - outb(iobase + ISA_COMMAND, IDE_CMD_WRITE); -c010150e: 0f b7 45 f2 movzwl -0xe(%ebp),%eax -c0101512: 83 c0 07 add $0x7,%eax -c0101515: 0f b7 c0 movzwl %ax,%eax -c0101518: 66 89 45 de mov %ax,-0x22(%ebp) -c010151c: c6 45 dd 30 movb $0x30,-0x23(%ebp) -c0101520: 0f b6 45 dd movzbl -0x23(%ebp),%eax -c0101524: 0f b7 55 de movzwl -0x22(%ebp),%edx -c0101528: ee out %al,(%dx) - - int ret = 0; -c0101529: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - for (; nsecs > 0; nsecs --, src += SECTSIZE) { -c0101530: eb 56 jmp c0101588 - if ((ret = ide_wait_ready(iobase, 1)) != 0) { -c0101532: 0f b7 45 f2 movzwl -0xe(%ebp),%eax -c0101536: 83 ec 08 sub $0x8,%esp -c0101539: 6a 01 push $0x1 -c010153b: 50 push %eax -c010153c: e8 28 f8 ff ff call c0100d69 -c0101541: 83 c4 10 add $0x10,%esp -c0101544: 89 45 f4 mov %eax,-0xc(%ebp) -c0101547: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c010154b: 75 43 jne c0101590 - goto out; - } - outsl(iobase, src, SECTSIZE / sizeof(uint32_t)); -c010154d: 0f b7 45 f2 movzwl -0xe(%ebp),%eax -c0101551: 89 45 ec mov %eax,-0x14(%ebp) -c0101554: 8b 45 10 mov 0x10(%ebp),%eax -c0101557: 89 45 d0 mov %eax,-0x30(%ebp) -c010155a: c7 45 cc 80 00 00 00 movl $0x80,-0x34(%ebp) - asm volatile ("outw %0, %1" :: "a" (data), "d" (port) : "memory"); -} - -static inline void -outsl(uint32_t port, const void *addr, int cnt) { - asm volatile ( -c0101561: 8b 55 ec mov -0x14(%ebp),%edx -c0101564: 8b 4d d0 mov -0x30(%ebp),%ecx -c0101567: 8b 45 cc mov -0x34(%ebp),%eax -c010156a: 89 cb mov %ecx,%ebx -c010156c: 89 de mov %ebx,%esi -c010156e: 89 c1 mov %eax,%ecx -c0101570: fc cld -c0101571: f2 6f repnz outsl %ds:(%esi),(%dx) -c0101573: 89 c8 mov %ecx,%eax -c0101575: 89 f3 mov %esi,%ebx -c0101577: 89 5d d0 mov %ebx,-0x30(%ebp) -c010157a: 89 45 cc mov %eax,-0x34(%ebp) - outb(iobase + ISA_CYL_HI, (secno >> 16) & 0xFF); - outb(iobase + ISA_SDH, 0xE0 | ((ideno & 1) << 4) | ((secno >> 24) & 0xF)); - outb(iobase + ISA_COMMAND, IDE_CMD_WRITE); - - int ret = 0; - for (; nsecs > 0; nsecs --, src += SECTSIZE) { -c010157d: 83 6d 14 01 subl $0x1,0x14(%ebp) -c0101581: 81 45 10 00 02 00 00 addl $0x200,0x10(%ebp) -c0101588: 83 7d 14 00 cmpl $0x0,0x14(%ebp) -c010158c: 75 a4 jne c0101532 -c010158e: eb 01 jmp c0101591 - if ((ret = ide_wait_ready(iobase, 1)) != 0) { - goto out; -c0101590: 90 nop - } - outsl(iobase, src, SECTSIZE / sizeof(uint32_t)); - } - -out: - return ret; -c0101591: 8b 45 f4 mov -0xc(%ebp),%eax -} -c0101594: 8d 65 f8 lea -0x8(%ebp),%esp -c0101597: 5b pop %ebx -c0101598: 5e pop %esi -c0101599: 5d pop %ebp -c010159a: c3 ret - -c010159b : -/* * - * clock_init - initialize 8253 clock to interrupt 100 times per second, - * and then enable IRQ_TIMER. - * */ -void -clock_init(void) { -c010159b: 55 push %ebp -c010159c: 89 e5 mov %esp,%ebp -c010159e: 83 ec 18 sub $0x18,%esp -c01015a1: 66 c7 45 f6 43 00 movw $0x43,-0xa(%ebp) -c01015a7: c6 45 ef 34 movb $0x34,-0x11(%ebp) - : "memory", "cc"); -} - -static inline void -outb(uint16_t port, uint8_t data) { - asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); -c01015ab: 0f b6 45 ef movzbl -0x11(%ebp),%eax -c01015af: 0f b7 55 f6 movzwl -0xa(%ebp),%edx -c01015b3: ee out %al,(%dx) -c01015b4: 66 c7 45 f4 40 00 movw $0x40,-0xc(%ebp) -c01015ba: c6 45 f0 9c movb $0x9c,-0x10(%ebp) -c01015be: 0f b6 45 f0 movzbl -0x10(%ebp),%eax -c01015c2: 0f b7 55 f4 movzwl -0xc(%ebp),%edx -c01015c6: ee out %al,(%dx) -c01015c7: 66 c7 45 f2 40 00 movw $0x40,-0xe(%ebp) -c01015cd: c6 45 f1 2e movb $0x2e,-0xf(%ebp) -c01015d1: 0f b6 45 f1 movzbl -0xf(%ebp),%eax -c01015d5: 0f b7 55 f2 movzwl -0xe(%ebp),%edx -c01015d9: ee out %al,(%dx) - outb(TIMER_MODE, TIMER_SEL0 | TIMER_RATEGEN | TIMER_16BIT); - outb(IO_TIMER1, TIMER_DIV(100) % 256); - outb(IO_TIMER1, TIMER_DIV(100) / 256); - - // initialize time counter 'ticks' to zero - ticks = 0; -c01015da: c7 05 14 9b 12 c0 00 movl $0x0,0xc0129b14 -c01015e1: 00 00 00 - - cprintf("++ setup timer interrupts\n"); -c01015e4: 83 ec 0c sub $0xc,%esp -c01015e7: 68 f6 a2 10 c0 push $0xc010a2f6 -c01015ec: e8 8d ec ff ff call c010027e -c01015f1: 83 c4 10 add $0x10,%esp - pic_enable(IRQ_TIMER); -c01015f4: 83 ec 0c sub $0xc,%esp -c01015f7: 6a 00 push $0x0 -c01015f9: e8 3b 09 00 00 call c0101f39 -c01015fe: 83 c4 10 add $0x10,%esp -} -c0101601: 90 nop -c0101602: c9 leave -c0101603: c3 ret - -c0101604 <__intr_save>: -#include -#include -#include - -static inline bool -__intr_save(void) { -c0101604: 55 push %ebp -c0101605: 89 e5 mov %esp,%ebp -c0101607: 83 ec 18 sub $0x18,%esp -} - -static inline uint32_t -read_eflags(void) { - uint32_t eflags; - asm volatile ("pushfl; popl %0" : "=r" (eflags)); -c010160a: 9c pushf -c010160b: 58 pop %eax -c010160c: 89 45 f4 mov %eax,-0xc(%ebp) - return eflags; -c010160f: 8b 45 f4 mov -0xc(%ebp),%eax - if (read_eflags() & FL_IF) { -c0101612: 25 00 02 00 00 and $0x200,%eax -c0101617: 85 c0 test %eax,%eax -c0101619: 74 0c je c0101627 <__intr_save+0x23> - intr_disable(); -c010161b: e8 8a 0a 00 00 call c01020aa - return 1; -c0101620: b8 01 00 00 00 mov $0x1,%eax -c0101625: eb 05 jmp c010162c <__intr_save+0x28> - } - return 0; -c0101627: b8 00 00 00 00 mov $0x0,%eax -} -c010162c: c9 leave -c010162d: c3 ret - -c010162e <__intr_restore>: - -static inline void -__intr_restore(bool flag) { -c010162e: 55 push %ebp -c010162f: 89 e5 mov %esp,%ebp -c0101631: 83 ec 08 sub $0x8,%esp - if (flag) { -c0101634: 83 7d 08 00 cmpl $0x0,0x8(%ebp) -c0101638: 74 05 je c010163f <__intr_restore+0x11> - intr_enable(); -c010163a: e8 64 0a 00 00 call c01020a3 - } -} -c010163f: 90 nop -c0101640: c9 leave -c0101641: c3 ret - -c0101642 : -#include -#include - -/* stupid I/O delay routine necessitated by historical PC design flaws */ -static void -delay(void) { -c0101642: 55 push %ebp -c0101643: 89 e5 mov %esp,%ebp -c0101645: 83 ec 10 sub $0x10,%esp -c0101648: 66 c7 45 fe 84 00 movw $0x84,-0x2(%ebp) -static inline void invlpg(void *addr) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); -c010164e: 0f b7 45 fe movzwl -0x2(%ebp),%eax -c0101652: 89 c2 mov %eax,%edx -c0101654: ec in (%dx),%al -c0101655: 88 45 f4 mov %al,-0xc(%ebp) -c0101658: 66 c7 45 fc 84 00 movw $0x84,-0x4(%ebp) -c010165e: 0f b7 45 fc movzwl -0x4(%ebp),%eax -c0101662: 89 c2 mov %eax,%edx -c0101664: ec in (%dx),%al -c0101665: 88 45 f5 mov %al,-0xb(%ebp) -c0101668: 66 c7 45 fa 84 00 movw $0x84,-0x6(%ebp) -c010166e: 0f b7 45 fa movzwl -0x6(%ebp),%eax -c0101672: 89 c2 mov %eax,%edx -c0101674: ec in (%dx),%al -c0101675: 88 45 f6 mov %al,-0xa(%ebp) -c0101678: 66 c7 45 f8 84 00 movw $0x84,-0x8(%ebp) -c010167e: 0f b7 45 f8 movzwl -0x8(%ebp),%eax -c0101682: 89 c2 mov %eax,%edx -c0101684: ec in (%dx),%al -c0101685: 88 45 f7 mov %al,-0x9(%ebp) - inb(0x84); - inb(0x84); - inb(0x84); - inb(0x84); -} -c0101688: 90 nop -c0101689: c9 leave -c010168a: c3 ret - -c010168b : -static uint16_t addr_6845; - -/* TEXT-mode CGA/VGA display output */ - -static void -cga_init(void) { -c010168b: 55 push %ebp -c010168c: 89 e5 mov %esp,%ebp -c010168e: 83 ec 20 sub $0x20,%esp - volatile uint16_t *cp = (uint16_t *)(CGA_BUF + KERNBASE); -c0101691: c7 45 fc 00 80 0b c0 movl $0xc00b8000,-0x4(%ebp) - uint16_t was = *cp; -c0101698: 8b 45 fc mov -0x4(%ebp),%eax -c010169b: 0f b7 00 movzwl (%eax),%eax -c010169e: 66 89 45 fa mov %ax,-0x6(%ebp) - *cp = (uint16_t) 0xA55A; -c01016a2: 8b 45 fc mov -0x4(%ebp),%eax -c01016a5: 66 c7 00 5a a5 movw $0xa55a,(%eax) - if (*cp != 0xA55A) { -c01016aa: 8b 45 fc mov -0x4(%ebp),%eax -c01016ad: 0f b7 00 movzwl (%eax),%eax -c01016b0: 66 3d 5a a5 cmp $0xa55a,%ax -c01016b4: 74 12 je c01016c8 - cp = (uint16_t*)(MONO_BUF + KERNBASE); -c01016b6: c7 45 fc 00 00 0b c0 movl $0xc00b0000,-0x4(%ebp) - addr_6845 = MONO_BASE; -c01016bd: 66 c7 05 e6 6f 12 c0 movw $0x3b4,0xc0126fe6 -c01016c4: b4 03 -c01016c6: eb 13 jmp c01016db - } else { - *cp = was; -c01016c8: 8b 45 fc mov -0x4(%ebp),%eax -c01016cb: 0f b7 55 fa movzwl -0x6(%ebp),%edx -c01016cf: 66 89 10 mov %dx,(%eax) - addr_6845 = CGA_BASE; -c01016d2: 66 c7 05 e6 6f 12 c0 movw $0x3d4,0xc0126fe6 -c01016d9: d4 03 - } - - // Extract cursor location - uint32_t pos; - outb(addr_6845, 14); -c01016db: 0f b7 05 e6 6f 12 c0 movzwl 0xc0126fe6,%eax -c01016e2: 0f b7 c0 movzwl %ax,%eax -c01016e5: 66 89 45 f8 mov %ax,-0x8(%ebp) -c01016e9: c6 45 ea 0e movb $0xe,-0x16(%ebp) - : "memory", "cc"); -} - -static inline void -outb(uint16_t port, uint8_t data) { - asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); -c01016ed: 0f b6 45 ea movzbl -0x16(%ebp),%eax -c01016f1: 0f b7 55 f8 movzwl -0x8(%ebp),%edx -c01016f5: ee out %al,(%dx) - pos = inb(addr_6845 + 1) << 8; -c01016f6: 0f b7 05 e6 6f 12 c0 movzwl 0xc0126fe6,%eax -c01016fd: 83 c0 01 add $0x1,%eax -c0101700: 0f b7 c0 movzwl %ax,%eax -c0101703: 66 89 45 f2 mov %ax,-0xe(%ebp) -static inline void invlpg(void *addr) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); -c0101707: 0f b7 45 f2 movzwl -0xe(%ebp),%eax -c010170b: 89 c2 mov %eax,%edx -c010170d: ec in (%dx),%al -c010170e: 88 45 eb mov %al,-0x15(%ebp) - return data; -c0101711: 0f b6 45 eb movzbl -0x15(%ebp),%eax -c0101715: 0f b6 c0 movzbl %al,%eax -c0101718: c1 e0 08 shl $0x8,%eax -c010171b: 89 45 f4 mov %eax,-0xc(%ebp) - outb(addr_6845, 15); -c010171e: 0f b7 05 e6 6f 12 c0 movzwl 0xc0126fe6,%eax -c0101725: 0f b7 c0 movzwl %ax,%eax -c0101728: 66 89 45 f0 mov %ax,-0x10(%ebp) -c010172c: c6 45 ec 0f movb $0xf,-0x14(%ebp) - : "memory", "cc"); -} - -static inline void -outb(uint16_t port, uint8_t data) { - asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); -c0101730: 0f b6 45 ec movzbl -0x14(%ebp),%eax -c0101734: 0f b7 55 f0 movzwl -0x10(%ebp),%edx -c0101738: ee out %al,(%dx) - pos |= inb(addr_6845 + 1); -c0101739: 0f b7 05 e6 6f 12 c0 movzwl 0xc0126fe6,%eax -c0101740: 83 c0 01 add $0x1,%eax -c0101743: 0f b7 c0 movzwl %ax,%eax -c0101746: 66 89 45 ee mov %ax,-0x12(%ebp) -static inline void invlpg(void *addr) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); -c010174a: 0f b7 45 ee movzwl -0x12(%ebp),%eax -c010174e: 89 c2 mov %eax,%edx -c0101750: ec in (%dx),%al -c0101751: 88 45 ed mov %al,-0x13(%ebp) - return data; -c0101754: 0f b6 45 ed movzbl -0x13(%ebp),%eax -c0101758: 0f b6 c0 movzbl %al,%eax -c010175b: 09 45 f4 or %eax,-0xc(%ebp) - - crt_buf = (uint16_t*) cp; -c010175e: 8b 45 fc mov -0x4(%ebp),%eax -c0101761: a3 e0 6f 12 c0 mov %eax,0xc0126fe0 - crt_pos = pos; -c0101766: 8b 45 f4 mov -0xc(%ebp),%eax -c0101769: 66 a3 e4 6f 12 c0 mov %ax,0xc0126fe4 -} -c010176f: 90 nop -c0101770: c9 leave -c0101771: c3 ret - -c0101772 : - -static bool serial_exists = 0; - -static void -serial_init(void) { -c0101772: 55 push %ebp -c0101773: 89 e5 mov %esp,%ebp -c0101775: 83 ec 28 sub $0x28,%esp -c0101778: 66 c7 45 f6 fa 03 movw $0x3fa,-0xa(%ebp) -c010177e: c6 45 da 00 movb $0x0,-0x26(%ebp) - : "memory", "cc"); -} - -static inline void -outb(uint16_t port, uint8_t data) { - asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); -c0101782: 0f b6 45 da movzbl -0x26(%ebp),%eax -c0101786: 0f b7 55 f6 movzwl -0xa(%ebp),%edx -c010178a: ee out %al,(%dx) -c010178b: 66 c7 45 f4 fb 03 movw $0x3fb,-0xc(%ebp) -c0101791: c6 45 db 80 movb $0x80,-0x25(%ebp) -c0101795: 0f b6 45 db movzbl -0x25(%ebp),%eax -c0101799: 0f b7 55 f4 movzwl -0xc(%ebp),%edx -c010179d: ee out %al,(%dx) -c010179e: 66 c7 45 f2 f8 03 movw $0x3f8,-0xe(%ebp) -c01017a4: c6 45 dc 0c movb $0xc,-0x24(%ebp) -c01017a8: 0f b6 45 dc movzbl -0x24(%ebp),%eax -c01017ac: 0f b7 55 f2 movzwl -0xe(%ebp),%edx -c01017b0: ee out %al,(%dx) -c01017b1: 66 c7 45 f0 f9 03 movw $0x3f9,-0x10(%ebp) -c01017b7: c6 45 dd 00 movb $0x0,-0x23(%ebp) -c01017bb: 0f b6 45 dd movzbl -0x23(%ebp),%eax -c01017bf: 0f b7 55 f0 movzwl -0x10(%ebp),%edx -c01017c3: ee out %al,(%dx) -c01017c4: 66 c7 45 ee fb 03 movw $0x3fb,-0x12(%ebp) -c01017ca: c6 45 de 03 movb $0x3,-0x22(%ebp) -c01017ce: 0f b6 45 de movzbl -0x22(%ebp),%eax -c01017d2: 0f b7 55 ee movzwl -0x12(%ebp),%edx -c01017d6: ee out %al,(%dx) -c01017d7: 66 c7 45 ec fc 03 movw $0x3fc,-0x14(%ebp) -c01017dd: c6 45 df 00 movb $0x0,-0x21(%ebp) -c01017e1: 0f b6 45 df movzbl -0x21(%ebp),%eax -c01017e5: 0f b7 55 ec movzwl -0x14(%ebp),%edx -c01017e9: ee out %al,(%dx) -c01017ea: 66 c7 45 ea f9 03 movw $0x3f9,-0x16(%ebp) -c01017f0: c6 45 e0 01 movb $0x1,-0x20(%ebp) -c01017f4: 0f b6 45 e0 movzbl -0x20(%ebp),%eax -c01017f8: 0f b7 55 ea movzwl -0x16(%ebp),%edx -c01017fc: ee out %al,(%dx) -c01017fd: 66 c7 45 e8 fd 03 movw $0x3fd,-0x18(%ebp) -static inline void invlpg(void *addr) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); -c0101803: 0f b7 45 e8 movzwl -0x18(%ebp),%eax -c0101807: 89 c2 mov %eax,%edx -c0101809: ec in (%dx),%al -c010180a: 88 45 e1 mov %al,-0x1f(%ebp) - return data; -c010180d: 0f b6 45 e1 movzbl -0x1f(%ebp),%eax - // Enable rcv interrupts - outb(COM1 + COM_IER, COM_IER_RDI); - - // Clear any preexisting overrun indications and interrupts - // Serial port doesn't exist if COM_LSR returns 0xFF - serial_exists = (inb(COM1 + COM_LSR) != 0xFF); -c0101811: 3c ff cmp $0xff,%al -c0101813: 0f 95 c0 setne %al -c0101816: 0f b6 c0 movzbl %al,%eax -c0101819: a3 e8 6f 12 c0 mov %eax,0xc0126fe8 -c010181e: 66 c7 45 e6 fa 03 movw $0x3fa,-0x1a(%ebp) -static inline void invlpg(void *addr) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); -c0101824: 0f b7 45 e6 movzwl -0x1a(%ebp),%eax -c0101828: 89 c2 mov %eax,%edx -c010182a: ec in (%dx),%al -c010182b: 88 45 e2 mov %al,-0x1e(%ebp) -c010182e: 66 c7 45 e4 f8 03 movw $0x3f8,-0x1c(%ebp) -c0101834: 0f b7 45 e4 movzwl -0x1c(%ebp),%eax -c0101838: 89 c2 mov %eax,%edx -c010183a: ec in (%dx),%al -c010183b: 88 45 e3 mov %al,-0x1d(%ebp) - (void) inb(COM1+COM_IIR); - (void) inb(COM1+COM_RX); - - if (serial_exists) { -c010183e: a1 e8 6f 12 c0 mov 0xc0126fe8,%eax -c0101843: 85 c0 test %eax,%eax -c0101845: 74 0d je c0101854 - pic_enable(IRQ_COM1); -c0101847: 83 ec 0c sub $0xc,%esp -c010184a: 6a 04 push $0x4 -c010184c: e8 e8 06 00 00 call c0101f39 -c0101851: 83 c4 10 add $0x10,%esp - } -} -c0101854: 90 nop -c0101855: c9 leave -c0101856: c3 ret - -c0101857 : - -static void -lpt_putc_sub(int c) { -c0101857: 55 push %ebp -c0101858: 89 e5 mov %esp,%ebp -c010185a: 83 ec 10 sub $0x10,%esp - int i; - for (i = 0; !(inb(LPTPORT + 1) & 0x80) && i < 12800; i ++) { -c010185d: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp) -c0101864: eb 09 jmp c010186f - delay(); -c0101866: e8 d7 fd ff ff call c0101642 -} - -static void -lpt_putc_sub(int c) { - int i; - for (i = 0; !(inb(LPTPORT + 1) & 0x80) && i < 12800; i ++) { -c010186b: 83 45 fc 01 addl $0x1,-0x4(%ebp) -c010186f: 66 c7 45 f4 79 03 movw $0x379,-0xc(%ebp) -c0101875: 0f b7 45 f4 movzwl -0xc(%ebp),%eax -c0101879: 89 c2 mov %eax,%edx -c010187b: ec in (%dx),%al -c010187c: 88 45 f3 mov %al,-0xd(%ebp) - return data; -c010187f: 0f b6 45 f3 movzbl -0xd(%ebp),%eax -c0101883: 84 c0 test %al,%al -c0101885: 78 09 js c0101890 -c0101887: 81 7d fc ff 31 00 00 cmpl $0x31ff,-0x4(%ebp) -c010188e: 7e d6 jle c0101866 - delay(); - } - outb(LPTPORT + 0, c); -c0101890: 8b 45 08 mov 0x8(%ebp),%eax -c0101893: 0f b6 c0 movzbl %al,%eax -c0101896: 66 c7 45 f8 78 03 movw $0x378,-0x8(%ebp) -c010189c: 88 45 f0 mov %al,-0x10(%ebp) - : "memory", "cc"); -} - -static inline void -outb(uint16_t port, uint8_t data) { - asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); -c010189f: 0f b6 45 f0 movzbl -0x10(%ebp),%eax -c01018a3: 0f b7 55 f8 movzwl -0x8(%ebp),%edx -c01018a7: ee out %al,(%dx) -c01018a8: 66 c7 45 f6 7a 03 movw $0x37a,-0xa(%ebp) -c01018ae: c6 45 f1 0d movb $0xd,-0xf(%ebp) -c01018b2: 0f b6 45 f1 movzbl -0xf(%ebp),%eax -c01018b6: 0f b7 55 f6 movzwl -0xa(%ebp),%edx -c01018ba: ee out %al,(%dx) -c01018bb: 66 c7 45 fa 7a 03 movw $0x37a,-0x6(%ebp) -c01018c1: c6 45 f2 08 movb $0x8,-0xe(%ebp) -c01018c5: 0f b6 45 f2 movzbl -0xe(%ebp),%eax -c01018c9: 0f b7 55 fa movzwl -0x6(%ebp),%edx -c01018cd: ee out %al,(%dx) - outb(LPTPORT + 2, 0x08 | 0x04 | 0x01); - outb(LPTPORT + 2, 0x08); -} -c01018ce: 90 nop -c01018cf: c9 leave -c01018d0: c3 ret - -c01018d1 : - -/* lpt_putc - copy console output to parallel port */ -static void -lpt_putc(int c) { -c01018d1: 55 push %ebp -c01018d2: 89 e5 mov %esp,%ebp - if (c != '\b') { -c01018d4: 83 7d 08 08 cmpl $0x8,0x8(%ebp) -c01018d8: 74 0d je c01018e7 - lpt_putc_sub(c); -c01018da: ff 75 08 pushl 0x8(%ebp) -c01018dd: e8 75 ff ff ff call c0101857 -c01018e2: 83 c4 04 add $0x4,%esp - else { - lpt_putc_sub('\b'); - lpt_putc_sub(' '); - lpt_putc_sub('\b'); - } -} -c01018e5: eb 1e jmp c0101905 -lpt_putc(int c) { - if (c != '\b') { - lpt_putc_sub(c); - } - else { - lpt_putc_sub('\b'); -c01018e7: 6a 08 push $0x8 -c01018e9: e8 69 ff ff ff call c0101857 -c01018ee: 83 c4 04 add $0x4,%esp - lpt_putc_sub(' '); -c01018f1: 6a 20 push $0x20 -c01018f3: e8 5f ff ff ff call c0101857 -c01018f8: 83 c4 04 add $0x4,%esp - lpt_putc_sub('\b'); -c01018fb: 6a 08 push $0x8 -c01018fd: e8 55 ff ff ff call c0101857 -c0101902: 83 c4 04 add $0x4,%esp - } -} -c0101905: 90 nop -c0101906: c9 leave -c0101907: c3 ret - -c0101908 : - -/* cga_putc - print character to console */ -static void -cga_putc(int c) { -c0101908: 55 push %ebp -c0101909: 89 e5 mov %esp,%ebp -c010190b: 53 push %ebx -c010190c: 83 ec 14 sub $0x14,%esp - // set black on white - if (!(c & ~0xFF)) { -c010190f: 8b 45 08 mov 0x8(%ebp),%eax -c0101912: b0 00 mov $0x0,%al -c0101914: 85 c0 test %eax,%eax -c0101916: 75 07 jne c010191f - c |= 0x0700; -c0101918: 81 4d 08 00 07 00 00 orl $0x700,0x8(%ebp) - } - - switch (c & 0xff) { -c010191f: 8b 45 08 mov 0x8(%ebp),%eax -c0101922: 0f b6 c0 movzbl %al,%eax -c0101925: 83 f8 0a cmp $0xa,%eax -c0101928: 74 4e je c0101978 -c010192a: 83 f8 0d cmp $0xd,%eax -c010192d: 74 59 je c0101988 -c010192f: 83 f8 08 cmp $0x8,%eax -c0101932: 0f 85 8a 00 00 00 jne c01019c2 - case '\b': - if (crt_pos > 0) { -c0101938: 0f b7 05 e4 6f 12 c0 movzwl 0xc0126fe4,%eax -c010193f: 66 85 c0 test %ax,%ax -c0101942: 0f 84 a0 00 00 00 je c01019e8 - crt_pos --; -c0101948: 0f b7 05 e4 6f 12 c0 movzwl 0xc0126fe4,%eax -c010194f: 83 e8 01 sub $0x1,%eax -c0101952: 66 a3 e4 6f 12 c0 mov %ax,0xc0126fe4 - crt_buf[crt_pos] = (c & ~0xff) | ' '; -c0101958: a1 e0 6f 12 c0 mov 0xc0126fe0,%eax -c010195d: 0f b7 15 e4 6f 12 c0 movzwl 0xc0126fe4,%edx -c0101964: 0f b7 d2 movzwl %dx,%edx -c0101967: 01 d2 add %edx,%edx -c0101969: 01 d0 add %edx,%eax -c010196b: 8b 55 08 mov 0x8(%ebp),%edx -c010196e: b2 00 mov $0x0,%dl -c0101970: 83 ca 20 or $0x20,%edx -c0101973: 66 89 10 mov %dx,(%eax) - } - break; -c0101976: eb 70 jmp c01019e8 - case '\n': - crt_pos += CRT_COLS; -c0101978: 0f b7 05 e4 6f 12 c0 movzwl 0xc0126fe4,%eax -c010197f: 83 c0 50 add $0x50,%eax -c0101982: 66 a3 e4 6f 12 c0 mov %ax,0xc0126fe4 - case '\r': - crt_pos -= (crt_pos % CRT_COLS); -c0101988: 0f b7 1d e4 6f 12 c0 movzwl 0xc0126fe4,%ebx -c010198f: 0f b7 0d e4 6f 12 c0 movzwl 0xc0126fe4,%ecx -c0101996: 0f b7 c1 movzwl %cx,%eax -c0101999: 69 c0 cd cc 00 00 imul $0xcccd,%eax,%eax -c010199f: c1 e8 10 shr $0x10,%eax -c01019a2: 89 c2 mov %eax,%edx -c01019a4: 66 c1 ea 06 shr $0x6,%dx -c01019a8: 89 d0 mov %edx,%eax -c01019aa: c1 e0 02 shl $0x2,%eax -c01019ad: 01 d0 add %edx,%eax -c01019af: c1 e0 04 shl $0x4,%eax -c01019b2: 29 c1 sub %eax,%ecx -c01019b4: 89 ca mov %ecx,%edx -c01019b6: 89 d8 mov %ebx,%eax -c01019b8: 29 d0 sub %edx,%eax -c01019ba: 66 a3 e4 6f 12 c0 mov %ax,0xc0126fe4 - break; -c01019c0: eb 27 jmp c01019e9 - default: - crt_buf[crt_pos ++] = c; // write the character -c01019c2: 8b 0d e0 6f 12 c0 mov 0xc0126fe0,%ecx -c01019c8: 0f b7 05 e4 6f 12 c0 movzwl 0xc0126fe4,%eax -c01019cf: 8d 50 01 lea 0x1(%eax),%edx -c01019d2: 66 89 15 e4 6f 12 c0 mov %dx,0xc0126fe4 -c01019d9: 0f b7 c0 movzwl %ax,%eax -c01019dc: 01 c0 add %eax,%eax -c01019de: 01 c8 add %ecx,%eax -c01019e0: 8b 55 08 mov 0x8(%ebp),%edx -c01019e3: 66 89 10 mov %dx,(%eax) - break; -c01019e6: eb 01 jmp c01019e9 - case '\b': - if (crt_pos > 0) { - crt_pos --; - crt_buf[crt_pos] = (c & ~0xff) | ' '; - } - break; -c01019e8: 90 nop - crt_buf[crt_pos ++] = c; // write the character - break; - } - - // What is the purpose of this? - if (crt_pos >= CRT_SIZE) { -c01019e9: 0f b7 05 e4 6f 12 c0 movzwl 0xc0126fe4,%eax -c01019f0: 66 3d cf 07 cmp $0x7cf,%ax -c01019f4: 76 59 jbe c0101a4f - int i; - memmove(crt_buf, crt_buf + CRT_COLS, (CRT_SIZE - CRT_COLS) * sizeof(uint16_t)); -c01019f6: a1 e0 6f 12 c0 mov 0xc0126fe0,%eax -c01019fb: 8d 90 a0 00 00 00 lea 0xa0(%eax),%edx -c0101a01: a1 e0 6f 12 c0 mov 0xc0126fe0,%eax -c0101a06: 83 ec 04 sub $0x4,%esp -c0101a09: 68 00 0f 00 00 push $0xf00 -c0101a0e: 52 push %edx -c0101a0f: 50 push %eax -c0101a10: e8 91 7c 00 00 call c01096a6 -c0101a15: 83 c4 10 add $0x10,%esp - for (i = CRT_SIZE - CRT_COLS; i < CRT_SIZE; i ++) { -c0101a18: c7 45 f4 80 07 00 00 movl $0x780,-0xc(%ebp) -c0101a1f: eb 15 jmp c0101a36 - crt_buf[i] = 0x0700 | ' '; -c0101a21: a1 e0 6f 12 c0 mov 0xc0126fe0,%eax -c0101a26: 8b 55 f4 mov -0xc(%ebp),%edx -c0101a29: 01 d2 add %edx,%edx -c0101a2b: 01 d0 add %edx,%eax -c0101a2d: 66 c7 00 20 07 movw $0x720,(%eax) - - // What is the purpose of this? - if (crt_pos >= CRT_SIZE) { - int i; - memmove(crt_buf, crt_buf + CRT_COLS, (CRT_SIZE - CRT_COLS) * sizeof(uint16_t)); - for (i = CRT_SIZE - CRT_COLS; i < CRT_SIZE; i ++) { -c0101a32: 83 45 f4 01 addl $0x1,-0xc(%ebp) -c0101a36: 81 7d f4 cf 07 00 00 cmpl $0x7cf,-0xc(%ebp) -c0101a3d: 7e e2 jle c0101a21 - crt_buf[i] = 0x0700 | ' '; - } - crt_pos -= CRT_COLS; -c0101a3f: 0f b7 05 e4 6f 12 c0 movzwl 0xc0126fe4,%eax -c0101a46: 83 e8 50 sub $0x50,%eax -c0101a49: 66 a3 e4 6f 12 c0 mov %ax,0xc0126fe4 - } - - // move that little blinky thing - outb(addr_6845, 14); -c0101a4f: 0f b7 05 e6 6f 12 c0 movzwl 0xc0126fe6,%eax -c0101a56: 0f b7 c0 movzwl %ax,%eax -c0101a59: 66 89 45 f2 mov %ax,-0xe(%ebp) -c0101a5d: c6 45 e8 0e movb $0xe,-0x18(%ebp) -c0101a61: 0f b6 45 e8 movzbl -0x18(%ebp),%eax -c0101a65: 0f b7 55 f2 movzwl -0xe(%ebp),%edx -c0101a69: ee out %al,(%dx) - outb(addr_6845 + 1, crt_pos >> 8); -c0101a6a: 0f b7 05 e4 6f 12 c0 movzwl 0xc0126fe4,%eax -c0101a71: 66 c1 e8 08 shr $0x8,%ax -c0101a75: 0f b6 c0 movzbl %al,%eax -c0101a78: 0f b7 15 e6 6f 12 c0 movzwl 0xc0126fe6,%edx -c0101a7f: 83 c2 01 add $0x1,%edx -c0101a82: 0f b7 d2 movzwl %dx,%edx -c0101a85: 66 89 55 f0 mov %dx,-0x10(%ebp) -c0101a89: 88 45 e9 mov %al,-0x17(%ebp) -c0101a8c: 0f b6 45 e9 movzbl -0x17(%ebp),%eax -c0101a90: 0f b7 55 f0 movzwl -0x10(%ebp),%edx -c0101a94: ee out %al,(%dx) - outb(addr_6845, 15); -c0101a95: 0f b7 05 e6 6f 12 c0 movzwl 0xc0126fe6,%eax -c0101a9c: 0f b7 c0 movzwl %ax,%eax -c0101a9f: 66 89 45 ee mov %ax,-0x12(%ebp) -c0101aa3: c6 45 ea 0f movb $0xf,-0x16(%ebp) -c0101aa7: 0f b6 45 ea movzbl -0x16(%ebp),%eax -c0101aab: 0f b7 55 ee movzwl -0x12(%ebp),%edx -c0101aaf: ee out %al,(%dx) - outb(addr_6845 + 1, crt_pos); -c0101ab0: 0f b7 05 e4 6f 12 c0 movzwl 0xc0126fe4,%eax -c0101ab7: 0f b6 c0 movzbl %al,%eax -c0101aba: 0f b7 15 e6 6f 12 c0 movzwl 0xc0126fe6,%edx -c0101ac1: 83 c2 01 add $0x1,%edx -c0101ac4: 0f b7 d2 movzwl %dx,%edx -c0101ac7: 66 89 55 ec mov %dx,-0x14(%ebp) -c0101acb: 88 45 eb mov %al,-0x15(%ebp) -c0101ace: 0f b6 45 eb movzbl -0x15(%ebp),%eax -c0101ad2: 0f b7 55 ec movzwl -0x14(%ebp),%edx -c0101ad6: ee out %al,(%dx) -} -c0101ad7: 90 nop -c0101ad8: 8b 5d fc mov -0x4(%ebp),%ebx -c0101adb: c9 leave -c0101adc: c3 ret - -c0101add : - -static void -serial_putc_sub(int c) { -c0101add: 55 push %ebp -c0101ade: 89 e5 mov %esp,%ebp -c0101ae0: 83 ec 10 sub $0x10,%esp - int i; - for (i = 0; !(inb(COM1 + COM_LSR) & COM_LSR_TXRDY) && i < 12800; i ++) { -c0101ae3: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp) -c0101aea: eb 09 jmp c0101af5 - delay(); -c0101aec: e8 51 fb ff ff call c0101642 -} - -static void -serial_putc_sub(int c) { - int i; - for (i = 0; !(inb(COM1 + COM_LSR) & COM_LSR_TXRDY) && i < 12800; i ++) { -c0101af1: 83 45 fc 01 addl $0x1,-0x4(%ebp) -c0101af5: 66 c7 45 f8 fd 03 movw $0x3fd,-0x8(%ebp) -static inline void invlpg(void *addr) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); -c0101afb: 0f b7 45 f8 movzwl -0x8(%ebp),%eax -c0101aff: 89 c2 mov %eax,%edx -c0101b01: ec in (%dx),%al -c0101b02: 88 45 f7 mov %al,-0x9(%ebp) - return data; -c0101b05: 0f b6 45 f7 movzbl -0x9(%ebp),%eax -c0101b09: 0f b6 c0 movzbl %al,%eax -c0101b0c: 83 e0 20 and $0x20,%eax -c0101b0f: 85 c0 test %eax,%eax -c0101b11: 75 09 jne c0101b1c -c0101b13: 81 7d fc ff 31 00 00 cmpl $0x31ff,-0x4(%ebp) -c0101b1a: 7e d0 jle c0101aec - delay(); - } - outb(COM1 + COM_TX, c); -c0101b1c: 8b 45 08 mov 0x8(%ebp),%eax -c0101b1f: 0f b6 c0 movzbl %al,%eax -c0101b22: 66 c7 45 fa f8 03 movw $0x3f8,-0x6(%ebp) -c0101b28: 88 45 f6 mov %al,-0xa(%ebp) - : "memory", "cc"); -} - -static inline void -outb(uint16_t port, uint8_t data) { - asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); -c0101b2b: 0f b6 45 f6 movzbl -0xa(%ebp),%eax -c0101b2f: 0f b7 55 fa movzwl -0x6(%ebp),%edx -c0101b33: ee out %al,(%dx) -} -c0101b34: 90 nop -c0101b35: c9 leave -c0101b36: c3 ret - -c0101b37 : - -/* serial_putc - print character to serial port */ -static void -serial_putc(int c) { -c0101b37: 55 push %ebp -c0101b38: 89 e5 mov %esp,%ebp - if (c != '\b') { -c0101b3a: 83 7d 08 08 cmpl $0x8,0x8(%ebp) -c0101b3e: 74 0d je c0101b4d - serial_putc_sub(c); -c0101b40: ff 75 08 pushl 0x8(%ebp) -c0101b43: e8 95 ff ff ff call c0101add -c0101b48: 83 c4 04 add $0x4,%esp - else { - serial_putc_sub('\b'); - serial_putc_sub(' '); - serial_putc_sub('\b'); - } -} -c0101b4b: eb 1e jmp c0101b6b -serial_putc(int c) { - if (c != '\b') { - serial_putc_sub(c); - } - else { - serial_putc_sub('\b'); -c0101b4d: 6a 08 push $0x8 -c0101b4f: e8 89 ff ff ff call c0101add -c0101b54: 83 c4 04 add $0x4,%esp - serial_putc_sub(' '); -c0101b57: 6a 20 push $0x20 -c0101b59: e8 7f ff ff ff call c0101add -c0101b5e: 83 c4 04 add $0x4,%esp - serial_putc_sub('\b'); -c0101b61: 6a 08 push $0x8 -c0101b63: e8 75 ff ff ff call c0101add -c0101b68: 83 c4 04 add $0x4,%esp - } -} -c0101b6b: 90 nop -c0101b6c: c9 leave -c0101b6d: c3 ret - -c0101b6e : -/* * - * cons_intr - called by device interrupt routines to feed input - * characters into the circular console input buffer. - * */ -static void -cons_intr(int (*proc)(void)) { -c0101b6e: 55 push %ebp -c0101b6f: 89 e5 mov %esp,%ebp -c0101b71: 83 ec 18 sub $0x18,%esp - int c; - while ((c = (*proc)()) != -1) { -c0101b74: eb 33 jmp c0101ba9 - if (c != 0) { -c0101b76: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c0101b7a: 74 2d je c0101ba9 - cons.buf[cons.wpos ++] = c; -c0101b7c: a1 04 72 12 c0 mov 0xc0127204,%eax -c0101b81: 8d 50 01 lea 0x1(%eax),%edx -c0101b84: 89 15 04 72 12 c0 mov %edx,0xc0127204 -c0101b8a: 8b 55 f4 mov -0xc(%ebp),%edx -c0101b8d: 88 90 00 70 12 c0 mov %dl,-0x3fed9000(%eax) - if (cons.wpos == CONSBUFSIZE) { -c0101b93: a1 04 72 12 c0 mov 0xc0127204,%eax -c0101b98: 3d 00 02 00 00 cmp $0x200,%eax -c0101b9d: 75 0a jne c0101ba9 - cons.wpos = 0; -c0101b9f: c7 05 04 72 12 c0 00 movl $0x0,0xc0127204 -c0101ba6: 00 00 00 - * characters into the circular console input buffer. - * */ -static void -cons_intr(int (*proc)(void)) { - int c; - while ((c = (*proc)()) != -1) { -c0101ba9: 8b 45 08 mov 0x8(%ebp),%eax -c0101bac: ff d0 call *%eax -c0101bae: 89 45 f4 mov %eax,-0xc(%ebp) -c0101bb1: 83 7d f4 ff cmpl $0xffffffff,-0xc(%ebp) -c0101bb5: 75 bf jne c0101b76 - if (cons.wpos == CONSBUFSIZE) { - cons.wpos = 0; - } - } - } -} -c0101bb7: 90 nop -c0101bb8: c9 leave -c0101bb9: c3 ret - -c0101bba : - -/* serial_proc_data - get data from serial port */ -static int -serial_proc_data(void) { -c0101bba: 55 push %ebp -c0101bbb: 89 e5 mov %esp,%ebp -c0101bbd: 83 ec 10 sub $0x10,%esp -c0101bc0: 66 c7 45 f8 fd 03 movw $0x3fd,-0x8(%ebp) -static inline void invlpg(void *addr) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); -c0101bc6: 0f b7 45 f8 movzwl -0x8(%ebp),%eax -c0101bca: 89 c2 mov %eax,%edx -c0101bcc: ec in (%dx),%al -c0101bcd: 88 45 f7 mov %al,-0x9(%ebp) - return data; -c0101bd0: 0f b6 45 f7 movzbl -0x9(%ebp),%eax - if (!(inb(COM1 + COM_LSR) & COM_LSR_DATA)) { -c0101bd4: 0f b6 c0 movzbl %al,%eax -c0101bd7: 83 e0 01 and $0x1,%eax -c0101bda: 85 c0 test %eax,%eax -c0101bdc: 75 07 jne c0101be5 - return -1; -c0101bde: b8 ff ff ff ff mov $0xffffffff,%eax -c0101be3: eb 2a jmp c0101c0f -c0101be5: 66 c7 45 fa f8 03 movw $0x3f8,-0x6(%ebp) -static inline void invlpg(void *addr) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); -c0101beb: 0f b7 45 fa movzwl -0x6(%ebp),%eax -c0101bef: 89 c2 mov %eax,%edx -c0101bf1: ec in (%dx),%al -c0101bf2: 88 45 f6 mov %al,-0xa(%ebp) - return data; -c0101bf5: 0f b6 45 f6 movzbl -0xa(%ebp),%eax - } - int c = inb(COM1 + COM_RX); -c0101bf9: 0f b6 c0 movzbl %al,%eax -c0101bfc: 89 45 fc mov %eax,-0x4(%ebp) - if (c == 127) { -c0101bff: 83 7d fc 7f cmpl $0x7f,-0x4(%ebp) -c0101c03: 75 07 jne c0101c0c - c = '\b'; -c0101c05: c7 45 fc 08 00 00 00 movl $0x8,-0x4(%ebp) - } - return c; -c0101c0c: 8b 45 fc mov -0x4(%ebp),%eax -} -c0101c0f: c9 leave -c0101c10: c3 ret - -c0101c11 : - -/* serial_intr - try to feed input characters from serial port */ -void -serial_intr(void) { -c0101c11: 55 push %ebp -c0101c12: 89 e5 mov %esp,%ebp -c0101c14: 83 ec 08 sub $0x8,%esp - if (serial_exists) { -c0101c17: a1 e8 6f 12 c0 mov 0xc0126fe8,%eax -c0101c1c: 85 c0 test %eax,%eax -c0101c1e: 74 10 je c0101c30 - cons_intr(serial_proc_data); -c0101c20: 83 ec 0c sub $0xc,%esp -c0101c23: 68 ba 1b 10 c0 push $0xc0101bba -c0101c28: e8 41 ff ff ff call c0101b6e -c0101c2d: 83 c4 10 add $0x10,%esp - } -} -c0101c30: 90 nop -c0101c31: c9 leave -c0101c32: c3 ret - -c0101c33 : - * - * The kbd_proc_data() function gets data from the keyboard. - * If we finish a character, return it, else 0. And return -1 if no data. - * */ -static int -kbd_proc_data(void) { -c0101c33: 55 push %ebp -c0101c34: 89 e5 mov %esp,%ebp -c0101c36: 83 ec 18 sub $0x18,%esp -c0101c39: 66 c7 45 ec 64 00 movw $0x64,-0x14(%ebp) -static inline void invlpg(void *addr) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); -c0101c3f: 0f b7 45 ec movzwl -0x14(%ebp),%eax -c0101c43: 89 c2 mov %eax,%edx -c0101c45: ec in (%dx),%al -c0101c46: 88 45 eb mov %al,-0x15(%ebp) - return data; -c0101c49: 0f b6 45 eb movzbl -0x15(%ebp),%eax - int c; - uint8_t data; - static uint32_t shift; - - if ((inb(KBSTATP) & KBS_DIB) == 0) { -c0101c4d: 0f b6 c0 movzbl %al,%eax -c0101c50: 83 e0 01 and $0x1,%eax -c0101c53: 85 c0 test %eax,%eax -c0101c55: 75 0a jne c0101c61 - return -1; -c0101c57: b8 ff ff ff ff mov $0xffffffff,%eax -c0101c5c: e9 5d 01 00 00 jmp c0101dbe -c0101c61: 66 c7 45 f0 60 00 movw $0x60,-0x10(%ebp) -static inline void invlpg(void *addr) __attribute__((always_inline)); - -static inline uint8_t -inb(uint16_t port) { - uint8_t data; - asm volatile ("inb %1, %0" : "=a" (data) : "d" (port) : "memory"); -c0101c67: 0f b7 45 f0 movzwl -0x10(%ebp),%eax -c0101c6b: 89 c2 mov %eax,%edx -c0101c6d: ec in (%dx),%al -c0101c6e: 88 45 ea mov %al,-0x16(%ebp) - return data; -c0101c71: 0f b6 45 ea movzbl -0x16(%ebp),%eax - } - - data = inb(KBDATAP); -c0101c75: 88 45 f3 mov %al,-0xd(%ebp) - - if (data == 0xE0) { -c0101c78: 80 7d f3 e0 cmpb $0xe0,-0xd(%ebp) -c0101c7c: 75 17 jne c0101c95 - // E0 escape character - shift |= E0ESC; -c0101c7e: a1 08 72 12 c0 mov 0xc0127208,%eax -c0101c83: 83 c8 40 or $0x40,%eax -c0101c86: a3 08 72 12 c0 mov %eax,0xc0127208 - return 0; -c0101c8b: b8 00 00 00 00 mov $0x0,%eax -c0101c90: e9 29 01 00 00 jmp c0101dbe - } else if (data & 0x80) { -c0101c95: 0f b6 45 f3 movzbl -0xd(%ebp),%eax -c0101c99: 84 c0 test %al,%al -c0101c9b: 79 47 jns c0101ce4 - // Key released - data = (shift & E0ESC ? data : data & 0x7F); -c0101c9d: a1 08 72 12 c0 mov 0xc0127208,%eax -c0101ca2: 83 e0 40 and $0x40,%eax -c0101ca5: 85 c0 test %eax,%eax -c0101ca7: 75 09 jne c0101cb2 -c0101ca9: 0f b6 45 f3 movzbl -0xd(%ebp),%eax -c0101cad: 83 e0 7f and $0x7f,%eax -c0101cb0: eb 04 jmp c0101cb6 -c0101cb2: 0f b6 45 f3 movzbl -0xd(%ebp),%eax -c0101cb6: 88 45 f3 mov %al,-0xd(%ebp) - shift &= ~(shiftcode[data] | E0ESC); -c0101cb9: 0f b6 45 f3 movzbl -0xd(%ebp),%eax -c0101cbd: 0f b6 80 60 60 12 c0 movzbl -0x3fed9fa0(%eax),%eax -c0101cc4: 83 c8 40 or $0x40,%eax -c0101cc7: 0f b6 c0 movzbl %al,%eax -c0101cca: f7 d0 not %eax -c0101ccc: 89 c2 mov %eax,%edx -c0101cce: a1 08 72 12 c0 mov 0xc0127208,%eax -c0101cd3: 21 d0 and %edx,%eax -c0101cd5: a3 08 72 12 c0 mov %eax,0xc0127208 - return 0; -c0101cda: b8 00 00 00 00 mov $0x0,%eax -c0101cdf: e9 da 00 00 00 jmp c0101dbe - } else if (shift & E0ESC) { -c0101ce4: a1 08 72 12 c0 mov 0xc0127208,%eax -c0101ce9: 83 e0 40 and $0x40,%eax -c0101cec: 85 c0 test %eax,%eax -c0101cee: 74 11 je c0101d01 - // Last character was an E0 escape; or with 0x80 - data |= 0x80; -c0101cf0: 80 4d f3 80 orb $0x80,-0xd(%ebp) - shift &= ~E0ESC; -c0101cf4: a1 08 72 12 c0 mov 0xc0127208,%eax -c0101cf9: 83 e0 bf and $0xffffffbf,%eax -c0101cfc: a3 08 72 12 c0 mov %eax,0xc0127208 - } - - shift |= shiftcode[data]; -c0101d01: 0f b6 45 f3 movzbl -0xd(%ebp),%eax -c0101d05: 0f b6 80 60 60 12 c0 movzbl -0x3fed9fa0(%eax),%eax -c0101d0c: 0f b6 d0 movzbl %al,%edx -c0101d0f: a1 08 72 12 c0 mov 0xc0127208,%eax -c0101d14: 09 d0 or %edx,%eax -c0101d16: a3 08 72 12 c0 mov %eax,0xc0127208 - shift ^= togglecode[data]; -c0101d1b: 0f b6 45 f3 movzbl -0xd(%ebp),%eax -c0101d1f: 0f b6 80 60 61 12 c0 movzbl -0x3fed9ea0(%eax),%eax -c0101d26: 0f b6 d0 movzbl %al,%edx -c0101d29: a1 08 72 12 c0 mov 0xc0127208,%eax -c0101d2e: 31 d0 xor %edx,%eax -c0101d30: a3 08 72 12 c0 mov %eax,0xc0127208 - - c = charcode[shift & (CTL | SHIFT)][data]; -c0101d35: a1 08 72 12 c0 mov 0xc0127208,%eax -c0101d3a: 83 e0 03 and $0x3,%eax -c0101d3d: 8b 14 85 60 65 12 c0 mov -0x3fed9aa0(,%eax,4),%edx -c0101d44: 0f b6 45 f3 movzbl -0xd(%ebp),%eax -c0101d48: 01 d0 add %edx,%eax -c0101d4a: 0f b6 00 movzbl (%eax),%eax -c0101d4d: 0f b6 c0 movzbl %al,%eax -c0101d50: 89 45 f4 mov %eax,-0xc(%ebp) - if (shift & CAPSLOCK) { -c0101d53: a1 08 72 12 c0 mov 0xc0127208,%eax -c0101d58: 83 e0 08 and $0x8,%eax -c0101d5b: 85 c0 test %eax,%eax -c0101d5d: 74 22 je c0101d81 - if ('a' <= c && c <= 'z') -c0101d5f: 83 7d f4 60 cmpl $0x60,-0xc(%ebp) -c0101d63: 7e 0c jle c0101d71 -c0101d65: 83 7d f4 7a cmpl $0x7a,-0xc(%ebp) -c0101d69: 7f 06 jg c0101d71 - c += 'A' - 'a'; -c0101d6b: 83 6d f4 20 subl $0x20,-0xc(%ebp) -c0101d6f: eb 10 jmp c0101d81 - else if ('A' <= c && c <= 'Z') -c0101d71: 83 7d f4 40 cmpl $0x40,-0xc(%ebp) -c0101d75: 7e 0a jle c0101d81 -c0101d77: 83 7d f4 5a cmpl $0x5a,-0xc(%ebp) -c0101d7b: 7f 04 jg c0101d81 - c += 'a' - 'A'; -c0101d7d: 83 45 f4 20 addl $0x20,-0xc(%ebp) - } - - // Process special keys - // Ctrl-Alt-Del: reboot - if (!(~shift & (CTL | ALT)) && c == KEY_DEL) { -c0101d81: a1 08 72 12 c0 mov 0xc0127208,%eax -c0101d86: f7 d0 not %eax -c0101d88: 83 e0 06 and $0x6,%eax -c0101d8b: 85 c0 test %eax,%eax -c0101d8d: 75 2c jne c0101dbb -c0101d8f: 81 7d f4 e9 00 00 00 cmpl $0xe9,-0xc(%ebp) -c0101d96: 75 23 jne c0101dbb - cprintf("Rebooting!\n"); -c0101d98: 83 ec 0c sub $0xc,%esp -c0101d9b: 68 11 a3 10 c0 push $0xc010a311 -c0101da0: e8 d9 e4 ff ff call c010027e -c0101da5: 83 c4 10 add $0x10,%esp -c0101da8: 66 c7 45 ee 92 00 movw $0x92,-0x12(%ebp) -c0101dae: c6 45 e9 03 movb $0x3,-0x17(%ebp) - : "memory", "cc"); -} - -static inline void -outb(uint16_t port, uint8_t data) { - asm volatile ("outb %0, %1" :: "a" (data), "d" (port) : "memory"); -c0101db2: 0f b6 45 e9 movzbl -0x17(%ebp),%eax -c0101db6: 0f b7 55 ee movzwl -0x12(%ebp),%edx -c0101dba: ee out %al,(%dx) - outb(0x92, 0x3); // courtesy of Chris Frost - } - return c; -c0101dbb: 8b 45 f4 mov -0xc(%ebp),%eax -} -c0101dbe: c9 leave -c0101dbf: c3 ret - -c0101dc0 : - -/* kbd_intr - try to feed input characters from keyboard */ -static void -kbd_intr(void) { -c0101dc0: 55 push %ebp -c0101dc1: 89 e5 mov %esp,%ebp -c0101dc3: 83 ec 08 sub $0x8,%esp - cons_intr(kbd_proc_data); -c0101dc6: 83 ec 0c sub $0xc,%esp -c0101dc9: 68 33 1c 10 c0 push $0xc0101c33 -c0101dce: e8 9b fd ff ff call c0101b6e -c0101dd3: 83 c4 10 add $0x10,%esp -} -c0101dd6: 90 nop -c0101dd7: c9 leave -c0101dd8: c3 ret - -c0101dd9 : - -static void -kbd_init(void) { -c0101dd9: 55 push %ebp -c0101dda: 89 e5 mov %esp,%ebp -c0101ddc: 83 ec 08 sub $0x8,%esp - // drain the kbd buffer - kbd_intr(); -c0101ddf: e8 dc ff ff ff call c0101dc0 - pic_enable(IRQ_KBD); -c0101de4: 83 ec 0c sub $0xc,%esp -c0101de7: 6a 01 push $0x1 -c0101de9: e8 4b 01 00 00 call c0101f39 -c0101dee: 83 c4 10 add $0x10,%esp -} -c0101df1: 90 nop -c0101df2: c9 leave -c0101df3: c3 ret - -c0101df4 : - -/* cons_init - initializes the console devices */ -void -cons_init(void) { -c0101df4: 55 push %ebp -c0101df5: 89 e5 mov %esp,%ebp -c0101df7: 83 ec 08 sub $0x8,%esp - cga_init(); -c0101dfa: e8 8c f8 ff ff call c010168b - serial_init(); -c0101dff: e8 6e f9 ff ff call c0101772 - kbd_init(); -c0101e04: e8 d0 ff ff ff call c0101dd9 - if (!serial_exists) { -c0101e09: a1 e8 6f 12 c0 mov 0xc0126fe8,%eax -c0101e0e: 85 c0 test %eax,%eax -c0101e10: 75 10 jne c0101e22 - cprintf("serial port does not exist!!\n"); -c0101e12: 83 ec 0c sub $0xc,%esp -c0101e15: 68 1d a3 10 c0 push $0xc010a31d -c0101e1a: e8 5f e4 ff ff call c010027e -c0101e1f: 83 c4 10 add $0x10,%esp - } -} -c0101e22: 90 nop -c0101e23: c9 leave -c0101e24: c3 ret - -c0101e25 : - -/* cons_putc - print a single character @c to console devices */ -void -cons_putc(int c) { -c0101e25: 55 push %ebp -c0101e26: 89 e5 mov %esp,%ebp -c0101e28: 83 ec 18 sub $0x18,%esp - bool intr_flag; - local_intr_save(intr_flag); -c0101e2b: e8 d4 f7 ff ff call c0101604 <__intr_save> -c0101e30: 89 45 f4 mov %eax,-0xc(%ebp) - { - lpt_putc(c); -c0101e33: 83 ec 0c sub $0xc,%esp -c0101e36: ff 75 08 pushl 0x8(%ebp) -c0101e39: e8 93 fa ff ff call c01018d1 -c0101e3e: 83 c4 10 add $0x10,%esp - cga_putc(c); -c0101e41: 83 ec 0c sub $0xc,%esp -c0101e44: ff 75 08 pushl 0x8(%ebp) -c0101e47: e8 bc fa ff ff call c0101908 -c0101e4c: 83 c4 10 add $0x10,%esp - serial_putc(c); -c0101e4f: 83 ec 0c sub $0xc,%esp -c0101e52: ff 75 08 pushl 0x8(%ebp) -c0101e55: e8 dd fc ff ff call c0101b37 -c0101e5a: 83 c4 10 add $0x10,%esp - } - local_intr_restore(intr_flag); -c0101e5d: 83 ec 0c sub $0xc,%esp -c0101e60: ff 75 f4 pushl -0xc(%ebp) -c0101e63: e8 c6 f7 ff ff call c010162e <__intr_restore> -c0101e68: 83 c4 10 add $0x10,%esp -} -c0101e6b: 90 nop -c0101e6c: c9 leave -c0101e6d: c3 ret - -c0101e6e : -/* * - * cons_getc - return the next input character from console, - * or 0 if none waiting. - * */ -int -cons_getc(void) { -c0101e6e: 55 push %ebp -c0101e6f: 89 e5 mov %esp,%ebp -c0101e71: 83 ec 18 sub $0x18,%esp - int c = 0; -c0101e74: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - bool intr_flag; - local_intr_save(intr_flag); -c0101e7b: e8 84 f7 ff ff call c0101604 <__intr_save> -c0101e80: 89 45 f0 mov %eax,-0x10(%ebp) - { - // poll for any pending input characters, - // so that this function works even when interrupts are disabled - // (e.g., when called from the kernel monitor). - serial_intr(); -c0101e83: e8 89 fd ff ff call c0101c11 - kbd_intr(); -c0101e88: e8 33 ff ff ff call c0101dc0 - - // grab the next character from the input buffer. - if (cons.rpos != cons.wpos) { -c0101e8d: 8b 15 00 72 12 c0 mov 0xc0127200,%edx -c0101e93: a1 04 72 12 c0 mov 0xc0127204,%eax -c0101e98: 39 c2 cmp %eax,%edx -c0101e9a: 74 31 je c0101ecd - c = cons.buf[cons.rpos ++]; -c0101e9c: a1 00 72 12 c0 mov 0xc0127200,%eax -c0101ea1: 8d 50 01 lea 0x1(%eax),%edx -c0101ea4: 89 15 00 72 12 c0 mov %edx,0xc0127200 -c0101eaa: 0f b6 80 00 70 12 c0 movzbl -0x3fed9000(%eax),%eax -c0101eb1: 0f b6 c0 movzbl %al,%eax -c0101eb4: 89 45 f4 mov %eax,-0xc(%ebp) - if (cons.rpos == CONSBUFSIZE) { -c0101eb7: a1 00 72 12 c0 mov 0xc0127200,%eax -c0101ebc: 3d 00 02 00 00 cmp $0x200,%eax -c0101ec1: 75 0a jne c0101ecd - cons.rpos = 0; -c0101ec3: c7 05 00 72 12 c0 00 movl $0x0,0xc0127200 -c0101eca: 00 00 00 - } - } - } - local_intr_restore(intr_flag); -c0101ecd: 83 ec 0c sub $0xc,%esp -c0101ed0: ff 75 f0 pushl -0x10(%ebp) -c0101ed3: e8 56 f7 ff ff call c010162e <__intr_restore> -c0101ed8: 83 c4 10 add $0x10,%esp - return c; -c0101edb: 8b 45 f4 mov -0xc(%ebp),%eax -} -c0101ede: c9 leave -c0101edf: c3 ret - -c0101ee0 : -// Initial IRQ mask has interrupt 2 enabled (for slave 8259A). -static uint16_t irq_mask = 0xFFFF & ~(1 << IRQ_SLAVE); -static bool did_init = 0; - -static void -pic_setmask(uint16_t mask) { -c0101ee0: 55 push %ebp -c0101ee1: 89 e5 mov %esp,%ebp -c0101ee3: 83 ec 14 sub $0x14,%esp -c0101ee6: 8b 45 08 mov 0x8(%ebp),%eax -c0101ee9: 66 89 45 ec mov %ax,-0x14(%ebp) - irq_mask = mask; -c0101eed: 0f b7 45 ec movzwl -0x14(%ebp),%eax -c0101ef1: 66 a3 70 65 12 c0 mov %ax,0xc0126570 - if (did_init) { -c0101ef7: a1 0c 72 12 c0 mov 0xc012720c,%eax -c0101efc: 85 c0 test %eax,%eax -c0101efe: 74 36 je c0101f36 - outb(IO_PIC1 + 1, mask); -c0101f00: 0f b7 45 ec movzwl -0x14(%ebp),%eax -c0101f04: 0f b6 c0 movzbl %al,%eax -c0101f07: 66 c7 45 fe 21 00 movw $0x21,-0x2(%ebp) -c0101f0d: 88 45 fa mov %al,-0x6(%ebp) -c0101f10: 0f b6 45 fa movzbl -0x6(%ebp),%eax -c0101f14: 0f b7 55 fe movzwl -0x2(%ebp),%edx -c0101f18: ee out %al,(%dx) - outb(IO_PIC2 + 1, mask >> 8); -c0101f19: 0f b7 45 ec movzwl -0x14(%ebp),%eax -c0101f1d: 66 c1 e8 08 shr $0x8,%ax -c0101f21: 0f b6 c0 movzbl %al,%eax -c0101f24: 66 c7 45 fc a1 00 movw $0xa1,-0x4(%ebp) -c0101f2a: 88 45 fb mov %al,-0x5(%ebp) -c0101f2d: 0f b6 45 fb movzbl -0x5(%ebp),%eax -c0101f31: 0f b7 55 fc movzwl -0x4(%ebp),%edx -c0101f35: ee out %al,(%dx) - } -} -c0101f36: 90 nop -c0101f37: c9 leave -c0101f38: c3 ret - -c0101f39 : - -void -pic_enable(unsigned int irq) { -c0101f39: 55 push %ebp -c0101f3a: 89 e5 mov %esp,%ebp - pic_setmask(irq_mask & ~(1 << irq)); -c0101f3c: 8b 45 08 mov 0x8(%ebp),%eax -c0101f3f: ba 01 00 00 00 mov $0x1,%edx -c0101f44: 89 c1 mov %eax,%ecx -c0101f46: d3 e2 shl %cl,%edx -c0101f48: 89 d0 mov %edx,%eax -c0101f4a: f7 d0 not %eax -c0101f4c: 89 c2 mov %eax,%edx -c0101f4e: 0f b7 05 70 65 12 c0 movzwl 0xc0126570,%eax -c0101f55: 21 d0 and %edx,%eax -c0101f57: 0f b7 c0 movzwl %ax,%eax -c0101f5a: 50 push %eax -c0101f5b: e8 80 ff ff ff call c0101ee0 -c0101f60: 83 c4 04 add $0x4,%esp -} -c0101f63: 90 nop -c0101f64: c9 leave -c0101f65: c3 ret - -c0101f66 : - -/* pic_init - initialize the 8259A interrupt controllers */ -void -pic_init(void) { -c0101f66: 55 push %ebp -c0101f67: 89 e5 mov %esp,%ebp -c0101f69: 83 ec 30 sub $0x30,%esp - did_init = 1; -c0101f6c: c7 05 0c 72 12 c0 01 movl $0x1,0xc012720c -c0101f73: 00 00 00 -c0101f76: 66 c7 45 fe 21 00 movw $0x21,-0x2(%ebp) -c0101f7c: c6 45 d6 ff movb $0xff,-0x2a(%ebp) -c0101f80: 0f b6 45 d6 movzbl -0x2a(%ebp),%eax -c0101f84: 0f b7 55 fe movzwl -0x2(%ebp),%edx -c0101f88: ee out %al,(%dx) -c0101f89: 66 c7 45 fc a1 00 movw $0xa1,-0x4(%ebp) -c0101f8f: c6 45 d7 ff movb $0xff,-0x29(%ebp) -c0101f93: 0f b6 45 d7 movzbl -0x29(%ebp),%eax -c0101f97: 0f b7 55 fc movzwl -0x4(%ebp),%edx -c0101f9b: ee out %al,(%dx) -c0101f9c: 66 c7 45 fa 20 00 movw $0x20,-0x6(%ebp) -c0101fa2: c6 45 d8 11 movb $0x11,-0x28(%ebp) -c0101fa6: 0f b6 45 d8 movzbl -0x28(%ebp),%eax -c0101faa: 0f b7 55 fa movzwl -0x6(%ebp),%edx -c0101fae: ee out %al,(%dx) -c0101faf: 66 c7 45 f8 21 00 movw $0x21,-0x8(%ebp) -c0101fb5: c6 45 d9 20 movb $0x20,-0x27(%ebp) -c0101fb9: 0f b6 45 d9 movzbl -0x27(%ebp),%eax -c0101fbd: 0f b7 55 f8 movzwl -0x8(%ebp),%edx -c0101fc1: ee out %al,(%dx) -c0101fc2: 66 c7 45 f6 21 00 movw $0x21,-0xa(%ebp) -c0101fc8: c6 45 da 04 movb $0x4,-0x26(%ebp) -c0101fcc: 0f b6 45 da movzbl -0x26(%ebp),%eax -c0101fd0: 0f b7 55 f6 movzwl -0xa(%ebp),%edx -c0101fd4: ee out %al,(%dx) -c0101fd5: 66 c7 45 f4 21 00 movw $0x21,-0xc(%ebp) -c0101fdb: c6 45 db 03 movb $0x3,-0x25(%ebp) -c0101fdf: 0f b6 45 db movzbl -0x25(%ebp),%eax -c0101fe3: 0f b7 55 f4 movzwl -0xc(%ebp),%edx -c0101fe7: ee out %al,(%dx) -c0101fe8: 66 c7 45 f2 a0 00 movw $0xa0,-0xe(%ebp) -c0101fee: c6 45 dc 11 movb $0x11,-0x24(%ebp) -c0101ff2: 0f b6 45 dc movzbl -0x24(%ebp),%eax -c0101ff6: 0f b7 55 f2 movzwl -0xe(%ebp),%edx -c0101ffa: ee out %al,(%dx) -c0101ffb: 66 c7 45 f0 a1 00 movw $0xa1,-0x10(%ebp) -c0102001: c6 45 dd 28 movb $0x28,-0x23(%ebp) -c0102005: 0f b6 45 dd movzbl -0x23(%ebp),%eax -c0102009: 0f b7 55 f0 movzwl -0x10(%ebp),%edx -c010200d: ee out %al,(%dx) -c010200e: 66 c7 45 ee a1 00 movw $0xa1,-0x12(%ebp) -c0102014: c6 45 de 02 movb $0x2,-0x22(%ebp) -c0102018: 0f b6 45 de movzbl -0x22(%ebp),%eax -c010201c: 0f b7 55 ee movzwl -0x12(%ebp),%edx -c0102020: ee out %al,(%dx) -c0102021: 66 c7 45 ec a1 00 movw $0xa1,-0x14(%ebp) -c0102027: c6 45 df 03 movb $0x3,-0x21(%ebp) -c010202b: 0f b6 45 df movzbl -0x21(%ebp),%eax -c010202f: 0f b7 55 ec movzwl -0x14(%ebp),%edx -c0102033: ee out %al,(%dx) -c0102034: 66 c7 45 ea 20 00 movw $0x20,-0x16(%ebp) -c010203a: c6 45 e0 68 movb $0x68,-0x20(%ebp) -c010203e: 0f b6 45 e0 movzbl -0x20(%ebp),%eax -c0102042: 0f b7 55 ea movzwl -0x16(%ebp),%edx -c0102046: ee out %al,(%dx) -c0102047: 66 c7 45 e8 20 00 movw $0x20,-0x18(%ebp) -c010204d: c6 45 e1 0a movb $0xa,-0x1f(%ebp) -c0102051: 0f b6 45 e1 movzbl -0x1f(%ebp),%eax -c0102055: 0f b7 55 e8 movzwl -0x18(%ebp),%edx -c0102059: ee out %al,(%dx) -c010205a: 66 c7 45 e6 a0 00 movw $0xa0,-0x1a(%ebp) -c0102060: c6 45 e2 68 movb $0x68,-0x1e(%ebp) -c0102064: 0f b6 45 e2 movzbl -0x1e(%ebp),%eax -c0102068: 0f b7 55 e6 movzwl -0x1a(%ebp),%edx -c010206c: ee out %al,(%dx) -c010206d: 66 c7 45 e4 a0 00 movw $0xa0,-0x1c(%ebp) -c0102073: c6 45 e3 0a movb $0xa,-0x1d(%ebp) -c0102077: 0f b6 45 e3 movzbl -0x1d(%ebp),%eax -c010207b: 0f b7 55 e4 movzwl -0x1c(%ebp),%edx -c010207f: ee out %al,(%dx) - outb(IO_PIC1, 0x0a); // read IRR by default - - outb(IO_PIC2, 0x68); // OCW3 - outb(IO_PIC2, 0x0a); // OCW3 - - if (irq_mask != 0xFFFF) { -c0102080: 0f b7 05 70 65 12 c0 movzwl 0xc0126570,%eax -c0102087: 66 83 f8 ff cmp $0xffff,%ax -c010208b: 74 13 je c01020a0 - pic_setmask(irq_mask); -c010208d: 0f b7 05 70 65 12 c0 movzwl 0xc0126570,%eax -c0102094: 0f b7 c0 movzwl %ax,%eax -c0102097: 50 push %eax -c0102098: e8 43 fe ff ff call c0101ee0 -c010209d: 83 c4 04 add $0x4,%esp - } -} -c01020a0: 90 nop -c01020a1: c9 leave -c01020a2: c3 ret - -c01020a3 : -#include -#include - -/* intr_enable - enable irq interrupt */ -void -intr_enable(void) { -c01020a3: 55 push %ebp -c01020a4: 89 e5 mov %esp,%ebp - asm volatile ("lidt (%0)" :: "r" (pd) : "memory"); -} - -static inline void -sti(void) { - asm volatile ("sti"); -c01020a6: fb sti - sti(); -} -c01020a7: 90 nop -c01020a8: 5d pop %ebp -c01020a9: c3 ret - -c01020aa : - -/* intr_disable - disable irq interrupt */ -void -intr_disable(void) { -c01020aa: 55 push %ebp -c01020ab: 89 e5 mov %esp,%ebp -} - -static inline void -cli(void) { - asm volatile ("cli" ::: "memory"); -c01020ad: fa cli - cli(); -} -c01020ae: 90 nop -c01020af: 5d pop %ebp -c01020b0: c3 ret - -c01020b1 : -#include -#include - -#define TICK_NUM 100 - -static void print_ticks() { -c01020b1: 55 push %ebp -c01020b2: 89 e5 mov %esp,%ebp -c01020b4: 83 ec 08 sub $0x8,%esp - cprintf("%d ticks\n",TICK_NUM); -c01020b7: 83 ec 08 sub $0x8,%esp -c01020ba: 6a 64 push $0x64 -c01020bc: 68 40 a3 10 c0 push $0xc010a340 -c01020c1: e8 b8 e1 ff ff call c010027e -c01020c6: 83 c4 10 add $0x10,%esp -#ifdef DEBUG_GRADE - cprintf("End of Test.\n"); -c01020c9: 83 ec 0c sub $0xc,%esp -c01020cc: 68 4a a3 10 c0 push $0xc010a34a -c01020d1: e8 a8 e1 ff ff call c010027e -c01020d6: 83 c4 10 add $0x10,%esp - panic("EOT: kernel seems ok."); -c01020d9: 83 ec 04 sub $0x4,%esp -c01020dc: 68 58 a3 10 c0 push $0xc010a358 -c01020e1: 6a 14 push $0x14 -c01020e3: 68 6e a3 10 c0 push $0xc010a36e -c01020e8: e8 f7 e2 ff ff call c01003e4 <__panic> - -c01020ed : - sizeof(idt) - 1, (uintptr_t)idt -}; - -/* idt_init - initialize IDT to each of the entry points in kern/trap/vectors.S */ -void -idt_init(void) { -c01020ed: 55 push %ebp -c01020ee: 89 e5 mov %esp,%ebp -c01020f0: 83 ec 10 sub $0x10,%esp - * (3) After setup the contents of IDT, you will let CPU know where is the IDT by using 'lidt' instruction. - * You don't know the meaning of this instruction? just google it! and check the libs/x86.h to know more. - * Notice: the argument of lidt is idt_pd. try to find it! - */ - extern uintptr_t __vectors[]; - for (int i = 0; i < 256; ++ i) { -c01020f3: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp) -c01020fa: e9 97 01 00 00 jmp c0102296 -// cprintf("vectors %d: 0x%08x\n", i, __vectors[i]); - if (i == T_SYSCALL || i == T_SWITCH_TOK) { -c01020ff: 81 7d fc 80 00 00 00 cmpl $0x80,-0x4(%ebp) -c0102106: 74 0a je c0102112 -c0102108: 83 7d fc 79 cmpl $0x79,-0x4(%ebp) -c010210c: 0f 85 c1 00 00 00 jne c01021d3 - SETGATE(idt[i], 1, KERNEL_CS, __vectors[i], DPL_USER); -c0102112: 8b 45 fc mov -0x4(%ebp),%eax -c0102115: 8b 04 85 00 66 12 c0 mov -0x3fed9a00(,%eax,4),%eax -c010211c: 89 c2 mov %eax,%edx -c010211e: 8b 45 fc mov -0x4(%ebp),%eax -c0102121: 66 89 14 c5 20 72 12 mov %dx,-0x3fed8de0(,%eax,8) -c0102128: c0 -c0102129: 8b 45 fc mov -0x4(%ebp),%eax -c010212c: 66 c7 04 c5 22 72 12 movw $0x8,-0x3fed8dde(,%eax,8) -c0102133: c0 08 00 -c0102136: 8b 45 fc mov -0x4(%ebp),%eax -c0102139: 0f b6 14 c5 24 72 12 movzbl -0x3fed8ddc(,%eax,8),%edx -c0102140: c0 -c0102141: 83 e2 e0 and $0xffffffe0,%edx -c0102144: 88 14 c5 24 72 12 c0 mov %dl,-0x3fed8ddc(,%eax,8) -c010214b: 8b 45 fc mov -0x4(%ebp),%eax -c010214e: 0f b6 14 c5 24 72 12 movzbl -0x3fed8ddc(,%eax,8),%edx -c0102155: c0 -c0102156: 83 e2 1f and $0x1f,%edx -c0102159: 88 14 c5 24 72 12 c0 mov %dl,-0x3fed8ddc(,%eax,8) -c0102160: 8b 45 fc mov -0x4(%ebp),%eax -c0102163: 0f b6 14 c5 25 72 12 movzbl -0x3fed8ddb(,%eax,8),%edx -c010216a: c0 -c010216b: 83 ca 0f or $0xf,%edx -c010216e: 88 14 c5 25 72 12 c0 mov %dl,-0x3fed8ddb(,%eax,8) -c0102175: 8b 45 fc mov -0x4(%ebp),%eax -c0102178: 0f b6 14 c5 25 72 12 movzbl -0x3fed8ddb(,%eax,8),%edx -c010217f: c0 -c0102180: 83 e2 ef and $0xffffffef,%edx -c0102183: 88 14 c5 25 72 12 c0 mov %dl,-0x3fed8ddb(,%eax,8) -c010218a: 8b 45 fc mov -0x4(%ebp),%eax -c010218d: 0f b6 14 c5 25 72 12 movzbl -0x3fed8ddb(,%eax,8),%edx -c0102194: c0 -c0102195: 83 ca 60 or $0x60,%edx -c0102198: 88 14 c5 25 72 12 c0 mov %dl,-0x3fed8ddb(,%eax,8) -c010219f: 8b 45 fc mov -0x4(%ebp),%eax -c01021a2: 0f b6 14 c5 25 72 12 movzbl -0x3fed8ddb(,%eax,8),%edx -c01021a9: c0 -c01021aa: 83 ca 80 or $0xffffff80,%edx -c01021ad: 88 14 c5 25 72 12 c0 mov %dl,-0x3fed8ddb(,%eax,8) -c01021b4: 8b 45 fc mov -0x4(%ebp),%eax -c01021b7: 8b 04 85 00 66 12 c0 mov -0x3fed9a00(,%eax,4),%eax -c01021be: c1 e8 10 shr $0x10,%eax -c01021c1: 89 c2 mov %eax,%edx -c01021c3: 8b 45 fc mov -0x4(%ebp),%eax -c01021c6: 66 89 14 c5 26 72 12 mov %dx,-0x3fed8dda(,%eax,8) -c01021cd: c0 -c01021ce: e9 bf 00 00 00 jmp c0102292 - } else { - SETGATE(idt[i], 0, KERNEL_CS, __vectors[i], DPL_KERNEL); -c01021d3: 8b 45 fc mov -0x4(%ebp),%eax -c01021d6: 8b 04 85 00 66 12 c0 mov -0x3fed9a00(,%eax,4),%eax -c01021dd: 89 c2 mov %eax,%edx -c01021df: 8b 45 fc mov -0x4(%ebp),%eax -c01021e2: 66 89 14 c5 20 72 12 mov %dx,-0x3fed8de0(,%eax,8) -c01021e9: c0 -c01021ea: 8b 45 fc mov -0x4(%ebp),%eax -c01021ed: 66 c7 04 c5 22 72 12 movw $0x8,-0x3fed8dde(,%eax,8) -c01021f4: c0 08 00 -c01021f7: 8b 45 fc mov -0x4(%ebp),%eax -c01021fa: 0f b6 14 c5 24 72 12 movzbl -0x3fed8ddc(,%eax,8),%edx -c0102201: c0 -c0102202: 83 e2 e0 and $0xffffffe0,%edx -c0102205: 88 14 c5 24 72 12 c0 mov %dl,-0x3fed8ddc(,%eax,8) -c010220c: 8b 45 fc mov -0x4(%ebp),%eax -c010220f: 0f b6 14 c5 24 72 12 movzbl -0x3fed8ddc(,%eax,8),%edx -c0102216: c0 -c0102217: 83 e2 1f and $0x1f,%edx -c010221a: 88 14 c5 24 72 12 c0 mov %dl,-0x3fed8ddc(,%eax,8) -c0102221: 8b 45 fc mov -0x4(%ebp),%eax -c0102224: 0f b6 14 c5 25 72 12 movzbl -0x3fed8ddb(,%eax,8),%edx -c010222b: c0 -c010222c: 83 e2 f0 and $0xfffffff0,%edx -c010222f: 83 ca 0e or $0xe,%edx -c0102232: 88 14 c5 25 72 12 c0 mov %dl,-0x3fed8ddb(,%eax,8) -c0102239: 8b 45 fc mov -0x4(%ebp),%eax -c010223c: 0f b6 14 c5 25 72 12 movzbl -0x3fed8ddb(,%eax,8),%edx -c0102243: c0 -c0102244: 83 e2 ef and $0xffffffef,%edx -c0102247: 88 14 c5 25 72 12 c0 mov %dl,-0x3fed8ddb(,%eax,8) -c010224e: 8b 45 fc mov -0x4(%ebp),%eax -c0102251: 0f b6 14 c5 25 72 12 movzbl -0x3fed8ddb(,%eax,8),%edx -c0102258: c0 -c0102259: 83 e2 9f and $0xffffff9f,%edx -c010225c: 88 14 c5 25 72 12 c0 mov %dl,-0x3fed8ddb(,%eax,8) -c0102263: 8b 45 fc mov -0x4(%ebp),%eax -c0102266: 0f b6 14 c5 25 72 12 movzbl -0x3fed8ddb(,%eax,8),%edx -c010226d: c0 -c010226e: 83 ca 80 or $0xffffff80,%edx -c0102271: 88 14 c5 25 72 12 c0 mov %dl,-0x3fed8ddb(,%eax,8) -c0102278: 8b 45 fc mov -0x4(%ebp),%eax -c010227b: 8b 04 85 00 66 12 c0 mov -0x3fed9a00(,%eax,4),%eax -c0102282: c1 e8 10 shr $0x10,%eax -c0102285: 89 c2 mov %eax,%edx -c0102287: 8b 45 fc mov -0x4(%ebp),%eax -c010228a: 66 89 14 c5 26 72 12 mov %dx,-0x3fed8dda(,%eax,8) -c0102291: c0 - * (3) After setup the contents of IDT, you will let CPU know where is the IDT by using 'lidt' instruction. - * You don't know the meaning of this instruction? just google it! and check the libs/x86.h to know more. - * Notice: the argument of lidt is idt_pd. try to find it! - */ - extern uintptr_t __vectors[]; - for (int i = 0; i < 256; ++ i) { -c0102292: 83 45 fc 01 addl $0x1,-0x4(%ebp) -c0102296: 81 7d fc ff 00 00 00 cmpl $0xff,-0x4(%ebp) -c010229d: 0f 8e 5c fe ff ff jle c01020ff -c01022a3: c7 45 f8 80 65 12 c0 movl $0xc0126580,-0x8(%ebp) - } -} - -static inline void -lidt(struct pseudodesc *pd) { - asm volatile ("lidt (%0)" :: "r" (pd) : "memory"); -c01022aa: 8b 45 f8 mov -0x8(%ebp),%eax -c01022ad: 0f 01 18 lidtl (%eax) - } else { - SETGATE(idt[i], 0, KERNEL_CS, __vectors[i], DPL_KERNEL); - } - } - lidt(&idt_pd); -} -c01022b0: 90 nop -c01022b1: c9 leave -c01022b2: c3 ret - -c01022b3 : - -static const char * -trapname(int trapno) { -c01022b3: 55 push %ebp -c01022b4: 89 e5 mov %esp,%ebp - "Alignment Check", - "Machine-Check", - "SIMD Floating-Point Exception" - }; - - if (trapno < sizeof(excnames)/sizeof(const char * const)) { -c01022b6: 8b 45 08 mov 0x8(%ebp),%eax -c01022b9: 83 f8 13 cmp $0x13,%eax -c01022bc: 77 0c ja c01022ca - return excnames[trapno]; -c01022be: 8b 45 08 mov 0x8(%ebp),%eax -c01022c1: 8b 04 85 40 a7 10 c0 mov -0x3fef58c0(,%eax,4),%eax -c01022c8: eb 18 jmp c01022e2 - } - if (trapno >= IRQ_OFFSET && trapno < IRQ_OFFSET + 16) { -c01022ca: 83 7d 08 1f cmpl $0x1f,0x8(%ebp) -c01022ce: 7e 0d jle c01022dd -c01022d0: 83 7d 08 2f cmpl $0x2f,0x8(%ebp) -c01022d4: 7f 07 jg c01022dd - return "Hardware Interrupt"; -c01022d6: b8 7f a3 10 c0 mov $0xc010a37f,%eax -c01022db: eb 05 jmp c01022e2 - } - return "(unknown trap)"; -c01022dd: b8 92 a3 10 c0 mov $0xc010a392,%eax -} -c01022e2: 5d pop %ebp -c01022e3: c3 ret - -c01022e4 : - -/* trap_in_kernel - test if trap happened in kernel */ -bool -trap_in_kernel(struct trapframe *tf) { -c01022e4: 55 push %ebp -c01022e5: 89 e5 mov %esp,%ebp - return (tf->tf_cs == (uint16_t)KERNEL_CS); -c01022e7: 8b 45 08 mov 0x8(%ebp),%eax -c01022ea: 0f b7 40 3c movzwl 0x3c(%eax),%eax -c01022ee: 66 83 f8 08 cmp $0x8,%ax -c01022f2: 0f 94 c0 sete %al -c01022f5: 0f b6 c0 movzbl %al,%eax -} -c01022f8: 5d pop %ebp -c01022f9: c3 ret - -c01022fa : - "TF", "IF", "DF", "OF", NULL, NULL, "NT", NULL, - "RF", "VM", "AC", "VIF", "VIP", "ID", NULL, NULL, -}; - -void -print_trapframe(struct trapframe *tf) { -c01022fa: 55 push %ebp -c01022fb: 89 e5 mov %esp,%ebp -c01022fd: 83 ec 18 sub $0x18,%esp - cprintf("trapframe at %p\n", tf); -c0102300: 83 ec 08 sub $0x8,%esp -c0102303: ff 75 08 pushl 0x8(%ebp) -c0102306: 68 d3 a3 10 c0 push $0xc010a3d3 -c010230b: e8 6e df ff ff call c010027e -c0102310: 83 c4 10 add $0x10,%esp - print_regs(&tf->tf_regs); -c0102313: 8b 45 08 mov 0x8(%ebp),%eax -c0102316: 83 ec 0c sub $0xc,%esp -c0102319: 50 push %eax -c010231a: e8 b8 01 00 00 call c01024d7 -c010231f: 83 c4 10 add $0x10,%esp - cprintf(" ds 0x----%04x\n", tf->tf_ds); -c0102322: 8b 45 08 mov 0x8(%ebp),%eax -c0102325: 0f b7 40 2c movzwl 0x2c(%eax),%eax -c0102329: 0f b7 c0 movzwl %ax,%eax -c010232c: 83 ec 08 sub $0x8,%esp -c010232f: 50 push %eax -c0102330: 68 e4 a3 10 c0 push $0xc010a3e4 -c0102335: e8 44 df ff ff call c010027e -c010233a: 83 c4 10 add $0x10,%esp - cprintf(" es 0x----%04x\n", tf->tf_es); -c010233d: 8b 45 08 mov 0x8(%ebp),%eax -c0102340: 0f b7 40 28 movzwl 0x28(%eax),%eax -c0102344: 0f b7 c0 movzwl %ax,%eax -c0102347: 83 ec 08 sub $0x8,%esp -c010234a: 50 push %eax -c010234b: 68 f7 a3 10 c0 push $0xc010a3f7 -c0102350: e8 29 df ff ff call c010027e -c0102355: 83 c4 10 add $0x10,%esp - cprintf(" fs 0x----%04x\n", tf->tf_fs); -c0102358: 8b 45 08 mov 0x8(%ebp),%eax -c010235b: 0f b7 40 24 movzwl 0x24(%eax),%eax -c010235f: 0f b7 c0 movzwl %ax,%eax -c0102362: 83 ec 08 sub $0x8,%esp -c0102365: 50 push %eax -c0102366: 68 0a a4 10 c0 push $0xc010a40a -c010236b: e8 0e df ff ff call c010027e -c0102370: 83 c4 10 add $0x10,%esp - cprintf(" gs 0x----%04x\n", tf->tf_gs); -c0102373: 8b 45 08 mov 0x8(%ebp),%eax -c0102376: 0f b7 40 20 movzwl 0x20(%eax),%eax -c010237a: 0f b7 c0 movzwl %ax,%eax -c010237d: 83 ec 08 sub $0x8,%esp -c0102380: 50 push %eax -c0102381: 68 1d a4 10 c0 push $0xc010a41d -c0102386: e8 f3 de ff ff call c010027e -c010238b: 83 c4 10 add $0x10,%esp - cprintf(" trap 0x%08x %s\n", tf->tf_trapno, trapname(tf->tf_trapno)); -c010238e: 8b 45 08 mov 0x8(%ebp),%eax -c0102391: 8b 40 30 mov 0x30(%eax),%eax -c0102394: 83 ec 0c sub $0xc,%esp -c0102397: 50 push %eax -c0102398: e8 16 ff ff ff call c01022b3 -c010239d: 83 c4 10 add $0x10,%esp -c01023a0: 89 c2 mov %eax,%edx -c01023a2: 8b 45 08 mov 0x8(%ebp),%eax -c01023a5: 8b 40 30 mov 0x30(%eax),%eax -c01023a8: 83 ec 04 sub $0x4,%esp -c01023ab: 52 push %edx -c01023ac: 50 push %eax -c01023ad: 68 30 a4 10 c0 push $0xc010a430 -c01023b2: e8 c7 de ff ff call c010027e -c01023b7: 83 c4 10 add $0x10,%esp - cprintf(" err 0x%08x\n", tf->tf_err); -c01023ba: 8b 45 08 mov 0x8(%ebp),%eax -c01023bd: 8b 40 34 mov 0x34(%eax),%eax -c01023c0: 83 ec 08 sub $0x8,%esp -c01023c3: 50 push %eax -c01023c4: 68 42 a4 10 c0 push $0xc010a442 -c01023c9: e8 b0 de ff ff call c010027e -c01023ce: 83 c4 10 add $0x10,%esp - cprintf(" eip 0x%08x\n", tf->tf_eip); -c01023d1: 8b 45 08 mov 0x8(%ebp),%eax -c01023d4: 8b 40 38 mov 0x38(%eax),%eax -c01023d7: 83 ec 08 sub $0x8,%esp -c01023da: 50 push %eax -c01023db: 68 51 a4 10 c0 push $0xc010a451 -c01023e0: e8 99 de ff ff call c010027e -c01023e5: 83 c4 10 add $0x10,%esp - cprintf(" cs 0x----%04x\n", tf->tf_cs); -c01023e8: 8b 45 08 mov 0x8(%ebp),%eax -c01023eb: 0f b7 40 3c movzwl 0x3c(%eax),%eax -c01023ef: 0f b7 c0 movzwl %ax,%eax -c01023f2: 83 ec 08 sub $0x8,%esp -c01023f5: 50 push %eax -c01023f6: 68 60 a4 10 c0 push $0xc010a460 -c01023fb: e8 7e de ff ff call c010027e -c0102400: 83 c4 10 add $0x10,%esp - cprintf(" flag 0x%08x ", tf->tf_eflags); -c0102403: 8b 45 08 mov 0x8(%ebp),%eax -c0102406: 8b 40 40 mov 0x40(%eax),%eax -c0102409: 83 ec 08 sub $0x8,%esp -c010240c: 50 push %eax -c010240d: 68 73 a4 10 c0 push $0xc010a473 -c0102412: e8 67 de ff ff call c010027e -c0102417: 83 c4 10 add $0x10,%esp - - int i, j; - for (i = 0, j = 1; i < sizeof(IA32flags) / sizeof(IA32flags[0]); i ++, j <<= 1) { -c010241a: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) -c0102421: c7 45 f0 01 00 00 00 movl $0x1,-0x10(%ebp) -c0102428: eb 3f jmp c0102469 - if ((tf->tf_eflags & j) && IA32flags[i] != NULL) { -c010242a: 8b 45 08 mov 0x8(%ebp),%eax -c010242d: 8b 50 40 mov 0x40(%eax),%edx -c0102430: 8b 45 f0 mov -0x10(%ebp),%eax -c0102433: 21 d0 and %edx,%eax -c0102435: 85 c0 test %eax,%eax -c0102437: 74 29 je c0102462 -c0102439: 8b 45 f4 mov -0xc(%ebp),%eax -c010243c: 8b 04 85 a0 65 12 c0 mov -0x3fed9a60(,%eax,4),%eax -c0102443: 85 c0 test %eax,%eax -c0102445: 74 1b je c0102462 - cprintf("%s,", IA32flags[i]); -c0102447: 8b 45 f4 mov -0xc(%ebp),%eax -c010244a: 8b 04 85 a0 65 12 c0 mov -0x3fed9a60(,%eax,4),%eax -c0102451: 83 ec 08 sub $0x8,%esp -c0102454: 50 push %eax -c0102455: 68 82 a4 10 c0 push $0xc010a482 -c010245a: e8 1f de ff ff call c010027e -c010245f: 83 c4 10 add $0x10,%esp - cprintf(" eip 0x%08x\n", tf->tf_eip); - cprintf(" cs 0x----%04x\n", tf->tf_cs); - cprintf(" flag 0x%08x ", tf->tf_eflags); - - int i, j; - for (i = 0, j = 1; i < sizeof(IA32flags) / sizeof(IA32flags[0]); i ++, j <<= 1) { -c0102462: 83 45 f4 01 addl $0x1,-0xc(%ebp) -c0102466: d1 65 f0 shll -0x10(%ebp) -c0102469: 8b 45 f4 mov -0xc(%ebp),%eax -c010246c: 83 f8 17 cmp $0x17,%eax -c010246f: 76 b9 jbe c010242a - if ((tf->tf_eflags & j) && IA32flags[i] != NULL) { - cprintf("%s,", IA32flags[i]); - } - } - cprintf("IOPL=%d\n", (tf->tf_eflags & FL_IOPL_MASK) >> 12); -c0102471: 8b 45 08 mov 0x8(%ebp),%eax -c0102474: 8b 40 40 mov 0x40(%eax),%eax -c0102477: 25 00 30 00 00 and $0x3000,%eax -c010247c: c1 e8 0c shr $0xc,%eax -c010247f: 83 ec 08 sub $0x8,%esp -c0102482: 50 push %eax -c0102483: 68 86 a4 10 c0 push $0xc010a486 -c0102488: e8 f1 dd ff ff call c010027e -c010248d: 83 c4 10 add $0x10,%esp - - if (!trap_in_kernel(tf)) { -c0102490: 83 ec 0c sub $0xc,%esp -c0102493: ff 75 08 pushl 0x8(%ebp) -c0102496: e8 49 fe ff ff call c01022e4 -c010249b: 83 c4 10 add $0x10,%esp -c010249e: 85 c0 test %eax,%eax -c01024a0: 75 32 jne c01024d4 - cprintf(" esp 0x%08x\n", tf->tf_esp); -c01024a2: 8b 45 08 mov 0x8(%ebp),%eax -c01024a5: 8b 40 44 mov 0x44(%eax),%eax -c01024a8: 83 ec 08 sub $0x8,%esp -c01024ab: 50 push %eax -c01024ac: 68 8f a4 10 c0 push $0xc010a48f -c01024b1: e8 c8 dd ff ff call c010027e -c01024b6: 83 c4 10 add $0x10,%esp - cprintf(" ss 0x----%04x\n", tf->tf_ss); -c01024b9: 8b 45 08 mov 0x8(%ebp),%eax -c01024bc: 0f b7 40 48 movzwl 0x48(%eax),%eax -c01024c0: 0f b7 c0 movzwl %ax,%eax -c01024c3: 83 ec 08 sub $0x8,%esp -c01024c6: 50 push %eax -c01024c7: 68 9e a4 10 c0 push $0xc010a49e -c01024cc: e8 ad dd ff ff call c010027e -c01024d1: 83 c4 10 add $0x10,%esp - } -} -c01024d4: 90 nop -c01024d5: c9 leave -c01024d6: c3 ret - -c01024d7 : - -void -print_regs(struct pushregs *regs) { -c01024d7: 55 push %ebp -c01024d8: 89 e5 mov %esp,%ebp -c01024da: 83 ec 08 sub $0x8,%esp - cprintf(" edi 0x%08x\n", regs->reg_edi); -c01024dd: 8b 45 08 mov 0x8(%ebp),%eax -c01024e0: 8b 00 mov (%eax),%eax -c01024e2: 83 ec 08 sub $0x8,%esp -c01024e5: 50 push %eax -c01024e6: 68 b1 a4 10 c0 push $0xc010a4b1 -c01024eb: e8 8e dd ff ff call c010027e -c01024f0: 83 c4 10 add $0x10,%esp - cprintf(" esi 0x%08x\n", regs->reg_esi); -c01024f3: 8b 45 08 mov 0x8(%ebp),%eax -c01024f6: 8b 40 04 mov 0x4(%eax),%eax -c01024f9: 83 ec 08 sub $0x8,%esp -c01024fc: 50 push %eax -c01024fd: 68 c0 a4 10 c0 push $0xc010a4c0 -c0102502: e8 77 dd ff ff call c010027e -c0102507: 83 c4 10 add $0x10,%esp - cprintf(" ebp 0x%08x\n", regs->reg_ebp); -c010250a: 8b 45 08 mov 0x8(%ebp),%eax -c010250d: 8b 40 08 mov 0x8(%eax),%eax -c0102510: 83 ec 08 sub $0x8,%esp -c0102513: 50 push %eax -c0102514: 68 cf a4 10 c0 push $0xc010a4cf -c0102519: e8 60 dd ff ff call c010027e -c010251e: 83 c4 10 add $0x10,%esp - cprintf(" oesp 0x%08x\n", regs->reg_oesp); -c0102521: 8b 45 08 mov 0x8(%ebp),%eax -c0102524: 8b 40 0c mov 0xc(%eax),%eax -c0102527: 83 ec 08 sub $0x8,%esp -c010252a: 50 push %eax -c010252b: 68 de a4 10 c0 push $0xc010a4de -c0102530: e8 49 dd ff ff call c010027e -c0102535: 83 c4 10 add $0x10,%esp - cprintf(" ebx 0x%08x\n", regs->reg_ebx); -c0102538: 8b 45 08 mov 0x8(%ebp),%eax -c010253b: 8b 40 10 mov 0x10(%eax),%eax -c010253e: 83 ec 08 sub $0x8,%esp -c0102541: 50 push %eax -c0102542: 68 ed a4 10 c0 push $0xc010a4ed -c0102547: e8 32 dd ff ff call c010027e -c010254c: 83 c4 10 add $0x10,%esp - cprintf(" edx 0x%08x\n", regs->reg_edx); -c010254f: 8b 45 08 mov 0x8(%ebp),%eax -c0102552: 8b 40 14 mov 0x14(%eax),%eax -c0102555: 83 ec 08 sub $0x8,%esp -c0102558: 50 push %eax -c0102559: 68 fc a4 10 c0 push $0xc010a4fc -c010255e: e8 1b dd ff ff call c010027e -c0102563: 83 c4 10 add $0x10,%esp - cprintf(" ecx 0x%08x\n", regs->reg_ecx); -c0102566: 8b 45 08 mov 0x8(%ebp),%eax -c0102569: 8b 40 18 mov 0x18(%eax),%eax -c010256c: 83 ec 08 sub $0x8,%esp -c010256f: 50 push %eax -c0102570: 68 0b a5 10 c0 push $0xc010a50b -c0102575: e8 04 dd ff ff call c010027e -c010257a: 83 c4 10 add $0x10,%esp - cprintf(" eax 0x%08x\n", regs->reg_eax); -c010257d: 8b 45 08 mov 0x8(%ebp),%eax -c0102580: 8b 40 1c mov 0x1c(%eax),%eax -c0102583: 83 ec 08 sub $0x8,%esp -c0102586: 50 push %eax -c0102587: 68 1a a5 10 c0 push $0xc010a51a -c010258c: e8 ed dc ff ff call c010027e -c0102591: 83 c4 10 add $0x10,%esp -} -c0102594: 90 nop -c0102595: c9 leave -c0102596: c3 ret - -c0102597 : - -static inline void -print_pgfault(struct trapframe *tf) { -c0102597: 55 push %ebp -c0102598: 89 e5 mov %esp,%ebp -c010259a: 53 push %ebx -c010259b: 83 ec 14 sub $0x14,%esp - * bit 2 == 0 means kernel, 1 means user - * */ - cprintf("page fault at 0x%08x: %c/%c [%s].\n", rcr2(), - (tf->tf_err & 4) ? 'U' : 'K', - (tf->tf_err & 2) ? 'W' : 'R', - (tf->tf_err & 1) ? "protection fault" : "no page found"); -c010259e: 8b 45 08 mov 0x8(%ebp),%eax -c01025a1: 8b 40 34 mov 0x34(%eax),%eax -c01025a4: 83 e0 01 and $0x1,%eax - /* error_code: - * bit 0 == 0 means no page found, 1 means protection fault - * bit 1 == 0 means read, 1 means write - * bit 2 == 0 means kernel, 1 means user - * */ - cprintf("page fault at 0x%08x: %c/%c [%s].\n", rcr2(), -c01025a7: 85 c0 test %eax,%eax -c01025a9: 74 07 je c01025b2 -c01025ab: bb 29 a5 10 c0 mov $0xc010a529,%ebx -c01025b0: eb 05 jmp c01025b7 -c01025b2: bb 3a a5 10 c0 mov $0xc010a53a,%ebx - (tf->tf_err & 4) ? 'U' : 'K', - (tf->tf_err & 2) ? 'W' : 'R', -c01025b7: 8b 45 08 mov 0x8(%ebp),%eax -c01025ba: 8b 40 34 mov 0x34(%eax),%eax -c01025bd: 83 e0 02 and $0x2,%eax - /* error_code: - * bit 0 == 0 means no page found, 1 means protection fault - * bit 1 == 0 means read, 1 means write - * bit 2 == 0 means kernel, 1 means user - * */ - cprintf("page fault at 0x%08x: %c/%c [%s].\n", rcr2(), -c01025c0: 85 c0 test %eax,%eax -c01025c2: 74 07 je c01025cb -c01025c4: b9 57 00 00 00 mov $0x57,%ecx -c01025c9: eb 05 jmp c01025d0 -c01025cb: b9 52 00 00 00 mov $0x52,%ecx - (tf->tf_err & 4) ? 'U' : 'K', -c01025d0: 8b 45 08 mov 0x8(%ebp),%eax -c01025d3: 8b 40 34 mov 0x34(%eax),%eax -c01025d6: 83 e0 04 and $0x4,%eax - /* error_code: - * bit 0 == 0 means no page found, 1 means protection fault - * bit 1 == 0 means read, 1 means write - * bit 2 == 0 means kernel, 1 means user - * */ - cprintf("page fault at 0x%08x: %c/%c [%s].\n", rcr2(), -c01025d9: 85 c0 test %eax,%eax -c01025db: 74 07 je c01025e4 -c01025dd: ba 55 00 00 00 mov $0x55,%edx -c01025e2: eb 05 jmp c01025e9 -c01025e4: ba 4b 00 00 00 mov $0x4b,%edx -} - -static inline uintptr_t -rcr2(void) { - uintptr_t cr2; - asm volatile ("mov %%cr2, %0" : "=r" (cr2) :: "memory"); -c01025e9: 0f 20 d0 mov %cr2,%eax -c01025ec: 89 45 f4 mov %eax,-0xc(%ebp) - return cr2; -c01025ef: 8b 45 f4 mov -0xc(%ebp),%eax -c01025f2: 83 ec 0c sub $0xc,%esp -c01025f5: 53 push %ebx -c01025f6: 51 push %ecx -c01025f7: 52 push %edx -c01025f8: 50 push %eax -c01025f9: 68 48 a5 10 c0 push $0xc010a548 -c01025fe: e8 7b dc ff ff call c010027e -c0102603: 83 c4 20 add $0x20,%esp - (tf->tf_err & 4) ? 'U' : 'K', - (tf->tf_err & 2) ? 'W' : 'R', - (tf->tf_err & 1) ? "protection fault" : "no page found"); -} -c0102606: 90 nop -c0102607: 8b 5d fc mov -0x4(%ebp),%ebx -c010260a: c9 leave -c010260b: c3 ret - -c010260c : - -static int -pgfault_handler(struct trapframe *tf) { -c010260c: 55 push %ebp -c010260d: 89 e5 mov %esp,%ebp -c010260f: 83 ec 18 sub $0x18,%esp - extern struct mm_struct *check_mm_struct; - print_pgfault(tf); -c0102612: 83 ec 0c sub $0xc,%esp -c0102615: ff 75 08 pushl 0x8(%ebp) -c0102618: e8 7a ff ff ff call c0102597 -c010261d: 83 c4 10 add $0x10,%esp - if (check_mm_struct != NULL) { -c0102620: a1 24 9b 12 c0 mov 0xc0129b24,%eax -c0102625: 85 c0 test %eax,%eax -c0102627: 74 24 je c010264d -} - -static inline uintptr_t -rcr2(void) { - uintptr_t cr2; - asm volatile ("mov %%cr2, %0" : "=r" (cr2) :: "memory"); -c0102629: 0f 20 d0 mov %cr2,%eax -c010262c: 89 45 f4 mov %eax,-0xc(%ebp) - return cr2; -c010262f: 8b 4d f4 mov -0xc(%ebp),%ecx - return do_pgfault(check_mm_struct, tf->tf_err, rcr2()); -c0102632: 8b 45 08 mov 0x8(%ebp),%eax -c0102635: 8b 50 34 mov 0x34(%eax),%edx -c0102638: a1 24 9b 12 c0 mov 0xc0129b24,%eax -c010263d: 83 ec 04 sub $0x4,%esp -c0102640: 51 push %ecx -c0102641: 52 push %edx -c0102642: 50 push %eax -c0102643: e8 02 2f 00 00 call c010554a -c0102648: 83 c4 10 add $0x10,%esp -c010264b: eb 17 jmp c0102664 - } - panic("unhandled page fault.\n"); -c010264d: 83 ec 04 sub $0x4,%esp -c0102650: 68 6b a5 10 c0 push $0xc010a56b -c0102655: 68 a9 00 00 00 push $0xa9 -c010265a: 68 6e a3 10 c0 push $0xc010a36e -c010265f: e8 80 dd ff ff call c01003e4 <__panic> -} -c0102664: c9 leave -c0102665: c3 ret - -c0102666 : - -static volatile int in_swap_tick_event = 0; -extern struct mm_struct *check_mm_struct; - -static void -trap_dispatch(struct trapframe *tf) { -c0102666: 55 push %ebp -c0102667: 89 e5 mov %esp,%ebp -c0102669: 83 ec 18 sub $0x18,%esp - char c; - - int ret; - - switch (tf->tf_trapno) { -c010266c: 8b 45 08 mov 0x8(%ebp),%eax -c010266f: 8b 40 30 mov 0x30(%eax),%eax -c0102672: 83 f8 24 cmp $0x24,%eax -c0102675: 0f 84 ba 00 00 00 je c0102735 -c010267b: 83 f8 24 cmp $0x24,%eax -c010267e: 77 18 ja c0102698 -c0102680: 83 f8 20 cmp $0x20,%eax -c0102683: 74 76 je c01026fb -c0102685: 83 f8 21 cmp $0x21,%eax -c0102688: 0f 84 cb 00 00 00 je c0102759 -c010268e: 83 f8 0e cmp $0xe,%eax -c0102691: 74 28 je c01026bb -c0102693: e9 fc 00 00 00 jmp c0102794 -c0102698: 83 f8 2e cmp $0x2e,%eax -c010269b: 0f 82 f3 00 00 00 jb c0102794 -c01026a1: 83 f8 2f cmp $0x2f,%eax -c01026a4: 0f 86 20 01 00 00 jbe c01027ca -c01026aa: 83 e8 78 sub $0x78,%eax -c01026ad: 83 f8 01 cmp $0x1,%eax -c01026b0: 0f 87 de 00 00 00 ja c0102794 -c01026b6: e9 c2 00 00 00 jmp c010277d - case T_PGFLT: //page fault - if ((ret = pgfault_handler(tf)) != 0) { -c01026bb: 83 ec 0c sub $0xc,%esp -c01026be: ff 75 08 pushl 0x8(%ebp) -c01026c1: e8 46 ff ff ff call c010260c -c01026c6: 83 c4 10 add $0x10,%esp -c01026c9: 89 45 f4 mov %eax,-0xc(%ebp) -c01026cc: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c01026d0: 0f 84 f7 00 00 00 je c01027cd - print_trapframe(tf); -c01026d6: 83 ec 0c sub $0xc,%esp -c01026d9: ff 75 08 pushl 0x8(%ebp) -c01026dc: e8 19 fc ff ff call c01022fa -c01026e1: 83 c4 10 add $0x10,%esp - panic("handle pgfault failed. %e\n", ret); -c01026e4: ff 75 f4 pushl -0xc(%ebp) -c01026e7: 68 82 a5 10 c0 push $0xc010a582 -c01026ec: 68 b9 00 00 00 push $0xb9 -c01026f1: 68 6e a3 10 c0 push $0xc010a36e -c01026f6: e8 e9 dc ff ff call c01003e4 <__panic> - /* handle the timer interrupt */ - /* (1) After a timer interrupt, you should record this event using a global variable (increase it), such as ticks in kern/driver/clock.c - * (2) Every TICK_NUM cycle, you can print some info using a funciton, such as print_ticks(). - * (3) Too Simple? Yes, I think so! - */ - ticks ++; -c01026fb: a1 14 9b 12 c0 mov 0xc0129b14,%eax -c0102700: 83 c0 01 add $0x1,%eax -c0102703: a3 14 9b 12 c0 mov %eax,0xc0129b14 - if (ticks % TICK_NUM == 0) { -c0102708: 8b 0d 14 9b 12 c0 mov 0xc0129b14,%ecx -c010270e: ba 1f 85 eb 51 mov $0x51eb851f,%edx -c0102713: 89 c8 mov %ecx,%eax -c0102715: f7 e2 mul %edx -c0102717: 89 d0 mov %edx,%eax -c0102719: c1 e8 05 shr $0x5,%eax -c010271c: 6b c0 64 imul $0x64,%eax,%eax -c010271f: 29 c1 sub %eax,%ecx -c0102721: 89 c8 mov %ecx,%eax -c0102723: 85 c0 test %eax,%eax -c0102725: 0f 85 a5 00 00 00 jne c01027d0 - print_ticks(); -c010272b: e8 81 f9 ff ff call c01020b1 - } - break; -c0102730: e9 9b 00 00 00 jmp c01027d0 - case IRQ_OFFSET + IRQ_COM1: - c = cons_getc(); -c0102735: e8 34 f7 ff ff call c0101e6e -c010273a: 88 45 f3 mov %al,-0xd(%ebp) - cprintf("serial [%03d] %c\n", c, c); -c010273d: 0f be 55 f3 movsbl -0xd(%ebp),%edx -c0102741: 0f be 45 f3 movsbl -0xd(%ebp),%eax -c0102745: 83 ec 04 sub $0x4,%esp -c0102748: 52 push %edx -c0102749: 50 push %eax -c010274a: 68 9d a5 10 c0 push $0xc010a59d -c010274f: e8 2a db ff ff call c010027e -c0102754: 83 c4 10 add $0x10,%esp - break; -c0102757: eb 78 jmp c01027d1 - case IRQ_OFFSET + IRQ_KBD: - c = cons_getc(); -c0102759: e8 10 f7 ff ff call c0101e6e -c010275e: 88 45 f3 mov %al,-0xd(%ebp) - cprintf("kbd [%03d] %c\n", c, c); -c0102761: 0f be 55 f3 movsbl -0xd(%ebp),%edx -c0102765: 0f be 45 f3 movsbl -0xd(%ebp),%eax -c0102769: 83 ec 04 sub $0x4,%esp -c010276c: 52 push %edx -c010276d: 50 push %eax -c010276e: 68 af a5 10 c0 push $0xc010a5af -c0102773: e8 06 db ff ff call c010027e -c0102778: 83 c4 10 add $0x10,%esp - break; -c010277b: eb 54 jmp c01027d1 - //LAB1 CHALLENGE 1 : YOUR CODE you should modify below codes. - case T_SWITCH_TOU: - case T_SWITCH_TOK: - panic("T_SWITCH_** ??\n"); -c010277d: 83 ec 04 sub $0x4,%esp -c0102780: 68 be a5 10 c0 push $0xc010a5be -c0102785: 68 d7 00 00 00 push $0xd7 -c010278a: 68 6e a3 10 c0 push $0xc010a36e -c010278f: e8 50 dc ff ff call c01003e4 <__panic> - case IRQ_OFFSET + IRQ_IDE2: - /* do nothing */ - break; - default: - // in kernel, it must be a mistake - if ((tf->tf_cs & 3) == 0) { -c0102794: 8b 45 08 mov 0x8(%ebp),%eax -c0102797: 0f b7 40 3c movzwl 0x3c(%eax),%eax -c010279b: 0f b7 c0 movzwl %ax,%eax -c010279e: 83 e0 03 and $0x3,%eax -c01027a1: 85 c0 test %eax,%eax -c01027a3: 75 2c jne c01027d1 - print_trapframe(tf); -c01027a5: 83 ec 0c sub $0xc,%esp -c01027a8: ff 75 08 pushl 0x8(%ebp) -c01027ab: e8 4a fb ff ff call c01022fa -c01027b0: 83 c4 10 add $0x10,%esp - panic("unexpected trap in kernel.\n"); -c01027b3: 83 ec 04 sub $0x4,%esp -c01027b6: 68 ce a5 10 c0 push $0xc010a5ce -c01027bb: 68 e1 00 00 00 push $0xe1 -c01027c0: 68 6e a3 10 c0 push $0xc010a36e -c01027c5: e8 1a dc ff ff call c01003e4 <__panic> - panic("T_SWITCH_** ??\n"); - break; - case IRQ_OFFSET + IRQ_IDE1: - case IRQ_OFFSET + IRQ_IDE2: - /* do nothing */ - break; -c01027ca: 90 nop -c01027cb: eb 04 jmp c01027d1 - case T_PGFLT: //page fault - if ((ret = pgfault_handler(tf)) != 0) { - print_trapframe(tf); - panic("handle pgfault failed. %e\n", ret); - } - break; -c01027cd: 90 nop -c01027ce: eb 01 jmp c01027d1 - */ - ticks ++; - if (ticks % TICK_NUM == 0) { - print_ticks(); - } - break; -c01027d0: 90 nop - if ((tf->tf_cs & 3) == 0) { - print_trapframe(tf); - panic("unexpected trap in kernel.\n"); - } - } -} -c01027d1: 90 nop -c01027d2: c9 leave -c01027d3: c3 ret - -c01027d4 : - * trap - handles or dispatches an exception/interrupt. if and when trap() returns, - * the code in kern/trap/trapentry.S restores the old CPU state saved in the - * trapframe and then uses the iret instruction to return from the exception. - * */ -void -trap(struct trapframe *tf) { -c01027d4: 55 push %ebp -c01027d5: 89 e5 mov %esp,%ebp -c01027d7: 83 ec 08 sub $0x8,%esp - // dispatch based on what type of trap occurred - trap_dispatch(tf); -c01027da: 83 ec 0c sub $0xc,%esp -c01027dd: ff 75 08 pushl 0x8(%ebp) -c01027e0: e8 81 fe ff ff call c0102666 -c01027e5: 83 c4 10 add $0x10,%esp -} -c01027e8: 90 nop -c01027e9: c9 leave -c01027ea: c3 ret - -c01027eb : -# handler -.text -.globl __alltraps -.globl vector0 -vector0: - pushl $0 -c01027eb: 6a 00 push $0x0 - pushl $0 -c01027ed: 6a 00 push $0x0 - jmp __alltraps -c01027ef: e9 67 0a 00 00 jmp c010325b <__alltraps> - -c01027f4 : -.globl vector1 -vector1: - pushl $0 -c01027f4: 6a 00 push $0x0 - pushl $1 -c01027f6: 6a 01 push $0x1 - jmp __alltraps -c01027f8: e9 5e 0a 00 00 jmp c010325b <__alltraps> - -c01027fd : -.globl vector2 -vector2: - pushl $0 -c01027fd: 6a 00 push $0x0 - pushl $2 -c01027ff: 6a 02 push $0x2 - jmp __alltraps -c0102801: e9 55 0a 00 00 jmp c010325b <__alltraps> - -c0102806 : -.globl vector3 -vector3: - pushl $0 -c0102806: 6a 00 push $0x0 - pushl $3 -c0102808: 6a 03 push $0x3 - jmp __alltraps -c010280a: e9 4c 0a 00 00 jmp c010325b <__alltraps> - -c010280f : -.globl vector4 -vector4: - pushl $0 -c010280f: 6a 00 push $0x0 - pushl $4 -c0102811: 6a 04 push $0x4 - jmp __alltraps -c0102813: e9 43 0a 00 00 jmp c010325b <__alltraps> - -c0102818 : -.globl vector5 -vector5: - pushl $0 -c0102818: 6a 00 push $0x0 - pushl $5 -c010281a: 6a 05 push $0x5 - jmp __alltraps -c010281c: e9 3a 0a 00 00 jmp c010325b <__alltraps> - -c0102821 : -.globl vector6 -vector6: - pushl $0 -c0102821: 6a 00 push $0x0 - pushl $6 -c0102823: 6a 06 push $0x6 - jmp __alltraps -c0102825: e9 31 0a 00 00 jmp c010325b <__alltraps> - -c010282a : -.globl vector7 -vector7: - pushl $0 -c010282a: 6a 00 push $0x0 - pushl $7 -c010282c: 6a 07 push $0x7 - jmp __alltraps -c010282e: e9 28 0a 00 00 jmp c010325b <__alltraps> - -c0102833 : -.globl vector8 -vector8: - pushl $8 -c0102833: 6a 08 push $0x8 - jmp __alltraps -c0102835: e9 21 0a 00 00 jmp c010325b <__alltraps> - -c010283a : -.globl vector9 -vector9: - pushl $9 -c010283a: 6a 09 push $0x9 - jmp __alltraps -c010283c: e9 1a 0a 00 00 jmp c010325b <__alltraps> - -c0102841 : -.globl vector10 -vector10: - pushl $10 -c0102841: 6a 0a push $0xa - jmp __alltraps -c0102843: e9 13 0a 00 00 jmp c010325b <__alltraps> - -c0102848 : -.globl vector11 -vector11: - pushl $11 -c0102848: 6a 0b push $0xb - jmp __alltraps -c010284a: e9 0c 0a 00 00 jmp c010325b <__alltraps> - -c010284f : -.globl vector12 -vector12: - pushl $12 -c010284f: 6a 0c push $0xc - jmp __alltraps -c0102851: e9 05 0a 00 00 jmp c010325b <__alltraps> - -c0102856 : -.globl vector13 -vector13: - pushl $13 -c0102856: 6a 0d push $0xd - jmp __alltraps -c0102858: e9 fe 09 00 00 jmp c010325b <__alltraps> - -c010285d : -.globl vector14 -vector14: - pushl $14 -c010285d: 6a 0e push $0xe - jmp __alltraps -c010285f: e9 f7 09 00 00 jmp c010325b <__alltraps> - -c0102864 : -.globl vector15 -vector15: - pushl $0 -c0102864: 6a 00 push $0x0 - pushl $15 -c0102866: 6a 0f push $0xf - jmp __alltraps -c0102868: e9 ee 09 00 00 jmp c010325b <__alltraps> - -c010286d : -.globl vector16 -vector16: - pushl $0 -c010286d: 6a 00 push $0x0 - pushl $16 -c010286f: 6a 10 push $0x10 - jmp __alltraps -c0102871: e9 e5 09 00 00 jmp c010325b <__alltraps> - -c0102876 : -.globl vector17 -vector17: - pushl $17 -c0102876: 6a 11 push $0x11 - jmp __alltraps -c0102878: e9 de 09 00 00 jmp c010325b <__alltraps> - -c010287d : -.globl vector18 -vector18: - pushl $0 -c010287d: 6a 00 push $0x0 - pushl $18 -c010287f: 6a 12 push $0x12 - jmp __alltraps -c0102881: e9 d5 09 00 00 jmp c010325b <__alltraps> - -c0102886 : -.globl vector19 -vector19: - pushl $0 -c0102886: 6a 00 push $0x0 - pushl $19 -c0102888: 6a 13 push $0x13 - jmp __alltraps -c010288a: e9 cc 09 00 00 jmp c010325b <__alltraps> - -c010288f : -.globl vector20 -vector20: - pushl $0 -c010288f: 6a 00 push $0x0 - pushl $20 -c0102891: 6a 14 push $0x14 - jmp __alltraps -c0102893: e9 c3 09 00 00 jmp c010325b <__alltraps> - -c0102898 : -.globl vector21 -vector21: - pushl $0 -c0102898: 6a 00 push $0x0 - pushl $21 -c010289a: 6a 15 push $0x15 - jmp __alltraps -c010289c: e9 ba 09 00 00 jmp c010325b <__alltraps> - -c01028a1 : -.globl vector22 -vector22: - pushl $0 -c01028a1: 6a 00 push $0x0 - pushl $22 -c01028a3: 6a 16 push $0x16 - jmp __alltraps -c01028a5: e9 b1 09 00 00 jmp c010325b <__alltraps> - -c01028aa : -.globl vector23 -vector23: - pushl $0 -c01028aa: 6a 00 push $0x0 - pushl $23 -c01028ac: 6a 17 push $0x17 - jmp __alltraps -c01028ae: e9 a8 09 00 00 jmp c010325b <__alltraps> - -c01028b3 : -.globl vector24 -vector24: - pushl $0 -c01028b3: 6a 00 push $0x0 - pushl $24 -c01028b5: 6a 18 push $0x18 - jmp __alltraps -c01028b7: e9 9f 09 00 00 jmp c010325b <__alltraps> - -c01028bc : -.globl vector25 -vector25: - pushl $0 -c01028bc: 6a 00 push $0x0 - pushl $25 -c01028be: 6a 19 push $0x19 - jmp __alltraps -c01028c0: e9 96 09 00 00 jmp c010325b <__alltraps> - -c01028c5 : -.globl vector26 -vector26: - pushl $0 -c01028c5: 6a 00 push $0x0 - pushl $26 -c01028c7: 6a 1a push $0x1a - jmp __alltraps -c01028c9: e9 8d 09 00 00 jmp c010325b <__alltraps> - -c01028ce : -.globl vector27 -vector27: - pushl $0 -c01028ce: 6a 00 push $0x0 - pushl $27 -c01028d0: 6a 1b push $0x1b - jmp __alltraps -c01028d2: e9 84 09 00 00 jmp c010325b <__alltraps> - -c01028d7 : -.globl vector28 -vector28: - pushl $0 -c01028d7: 6a 00 push $0x0 - pushl $28 -c01028d9: 6a 1c push $0x1c - jmp __alltraps -c01028db: e9 7b 09 00 00 jmp c010325b <__alltraps> - -c01028e0 : -.globl vector29 -vector29: - pushl $0 -c01028e0: 6a 00 push $0x0 - pushl $29 -c01028e2: 6a 1d push $0x1d - jmp __alltraps -c01028e4: e9 72 09 00 00 jmp c010325b <__alltraps> - -c01028e9 : -.globl vector30 -vector30: - pushl $0 -c01028e9: 6a 00 push $0x0 - pushl $30 -c01028eb: 6a 1e push $0x1e - jmp __alltraps -c01028ed: e9 69 09 00 00 jmp c010325b <__alltraps> - -c01028f2 : -.globl vector31 -vector31: - pushl $0 -c01028f2: 6a 00 push $0x0 - pushl $31 -c01028f4: 6a 1f push $0x1f - jmp __alltraps -c01028f6: e9 60 09 00 00 jmp c010325b <__alltraps> - -c01028fb : -.globl vector32 -vector32: - pushl $0 -c01028fb: 6a 00 push $0x0 - pushl $32 -c01028fd: 6a 20 push $0x20 - jmp __alltraps -c01028ff: e9 57 09 00 00 jmp c010325b <__alltraps> - -c0102904 : -.globl vector33 -vector33: - pushl $0 -c0102904: 6a 00 push $0x0 - pushl $33 -c0102906: 6a 21 push $0x21 - jmp __alltraps -c0102908: e9 4e 09 00 00 jmp c010325b <__alltraps> - -c010290d : -.globl vector34 -vector34: - pushl $0 -c010290d: 6a 00 push $0x0 - pushl $34 -c010290f: 6a 22 push $0x22 - jmp __alltraps -c0102911: e9 45 09 00 00 jmp c010325b <__alltraps> - -c0102916 : -.globl vector35 -vector35: - pushl $0 -c0102916: 6a 00 push $0x0 - pushl $35 -c0102918: 6a 23 push $0x23 - jmp __alltraps -c010291a: e9 3c 09 00 00 jmp c010325b <__alltraps> - -c010291f : -.globl vector36 -vector36: - pushl $0 -c010291f: 6a 00 push $0x0 - pushl $36 -c0102921: 6a 24 push $0x24 - jmp __alltraps -c0102923: e9 33 09 00 00 jmp c010325b <__alltraps> - -c0102928 : -.globl vector37 -vector37: - pushl $0 -c0102928: 6a 00 push $0x0 - pushl $37 -c010292a: 6a 25 push $0x25 - jmp __alltraps -c010292c: e9 2a 09 00 00 jmp c010325b <__alltraps> - -c0102931 : -.globl vector38 -vector38: - pushl $0 -c0102931: 6a 00 push $0x0 - pushl $38 -c0102933: 6a 26 push $0x26 - jmp __alltraps -c0102935: e9 21 09 00 00 jmp c010325b <__alltraps> - -c010293a : -.globl vector39 -vector39: - pushl $0 -c010293a: 6a 00 push $0x0 - pushl $39 -c010293c: 6a 27 push $0x27 - jmp __alltraps -c010293e: e9 18 09 00 00 jmp c010325b <__alltraps> - -c0102943 : -.globl vector40 -vector40: - pushl $0 -c0102943: 6a 00 push $0x0 - pushl $40 -c0102945: 6a 28 push $0x28 - jmp __alltraps -c0102947: e9 0f 09 00 00 jmp c010325b <__alltraps> - -c010294c : -.globl vector41 -vector41: - pushl $0 -c010294c: 6a 00 push $0x0 - pushl $41 -c010294e: 6a 29 push $0x29 - jmp __alltraps -c0102950: e9 06 09 00 00 jmp c010325b <__alltraps> - -c0102955 : -.globl vector42 -vector42: - pushl $0 -c0102955: 6a 00 push $0x0 - pushl $42 -c0102957: 6a 2a push $0x2a - jmp __alltraps -c0102959: e9 fd 08 00 00 jmp c010325b <__alltraps> - -c010295e : -.globl vector43 -vector43: - pushl $0 -c010295e: 6a 00 push $0x0 - pushl $43 -c0102960: 6a 2b push $0x2b - jmp __alltraps -c0102962: e9 f4 08 00 00 jmp c010325b <__alltraps> - -c0102967 : -.globl vector44 -vector44: - pushl $0 -c0102967: 6a 00 push $0x0 - pushl $44 -c0102969: 6a 2c push $0x2c - jmp __alltraps -c010296b: e9 eb 08 00 00 jmp c010325b <__alltraps> - -c0102970 : -.globl vector45 -vector45: - pushl $0 -c0102970: 6a 00 push $0x0 - pushl $45 -c0102972: 6a 2d push $0x2d - jmp __alltraps -c0102974: e9 e2 08 00 00 jmp c010325b <__alltraps> - -c0102979 : -.globl vector46 -vector46: - pushl $0 -c0102979: 6a 00 push $0x0 - pushl $46 -c010297b: 6a 2e push $0x2e - jmp __alltraps -c010297d: e9 d9 08 00 00 jmp c010325b <__alltraps> - -c0102982 : -.globl vector47 -vector47: - pushl $0 -c0102982: 6a 00 push $0x0 - pushl $47 -c0102984: 6a 2f push $0x2f - jmp __alltraps -c0102986: e9 d0 08 00 00 jmp c010325b <__alltraps> - -c010298b : -.globl vector48 -vector48: - pushl $0 -c010298b: 6a 00 push $0x0 - pushl $48 -c010298d: 6a 30 push $0x30 - jmp __alltraps -c010298f: e9 c7 08 00 00 jmp c010325b <__alltraps> - -c0102994 : -.globl vector49 -vector49: - pushl $0 -c0102994: 6a 00 push $0x0 - pushl $49 -c0102996: 6a 31 push $0x31 - jmp __alltraps -c0102998: e9 be 08 00 00 jmp c010325b <__alltraps> - -c010299d : -.globl vector50 -vector50: - pushl $0 -c010299d: 6a 00 push $0x0 - pushl $50 -c010299f: 6a 32 push $0x32 - jmp __alltraps -c01029a1: e9 b5 08 00 00 jmp c010325b <__alltraps> - -c01029a6 : -.globl vector51 -vector51: - pushl $0 -c01029a6: 6a 00 push $0x0 - pushl $51 -c01029a8: 6a 33 push $0x33 - jmp __alltraps -c01029aa: e9 ac 08 00 00 jmp c010325b <__alltraps> - -c01029af : -.globl vector52 -vector52: - pushl $0 -c01029af: 6a 00 push $0x0 - pushl $52 -c01029b1: 6a 34 push $0x34 - jmp __alltraps -c01029b3: e9 a3 08 00 00 jmp c010325b <__alltraps> - -c01029b8 : -.globl vector53 -vector53: - pushl $0 -c01029b8: 6a 00 push $0x0 - pushl $53 -c01029ba: 6a 35 push $0x35 - jmp __alltraps -c01029bc: e9 9a 08 00 00 jmp c010325b <__alltraps> - -c01029c1 : -.globl vector54 -vector54: - pushl $0 -c01029c1: 6a 00 push $0x0 - pushl $54 -c01029c3: 6a 36 push $0x36 - jmp __alltraps -c01029c5: e9 91 08 00 00 jmp c010325b <__alltraps> - -c01029ca : -.globl vector55 -vector55: - pushl $0 -c01029ca: 6a 00 push $0x0 - pushl $55 -c01029cc: 6a 37 push $0x37 - jmp __alltraps -c01029ce: e9 88 08 00 00 jmp c010325b <__alltraps> - -c01029d3 : -.globl vector56 -vector56: - pushl $0 -c01029d3: 6a 00 push $0x0 - pushl $56 -c01029d5: 6a 38 push $0x38 - jmp __alltraps -c01029d7: e9 7f 08 00 00 jmp c010325b <__alltraps> - -c01029dc : -.globl vector57 -vector57: - pushl $0 -c01029dc: 6a 00 push $0x0 - pushl $57 -c01029de: 6a 39 push $0x39 - jmp __alltraps -c01029e0: e9 76 08 00 00 jmp c010325b <__alltraps> - -c01029e5 : -.globl vector58 -vector58: - pushl $0 -c01029e5: 6a 00 push $0x0 - pushl $58 -c01029e7: 6a 3a push $0x3a - jmp __alltraps -c01029e9: e9 6d 08 00 00 jmp c010325b <__alltraps> - -c01029ee : -.globl vector59 -vector59: - pushl $0 -c01029ee: 6a 00 push $0x0 - pushl $59 -c01029f0: 6a 3b push $0x3b - jmp __alltraps -c01029f2: e9 64 08 00 00 jmp c010325b <__alltraps> - -c01029f7 : -.globl vector60 -vector60: - pushl $0 -c01029f7: 6a 00 push $0x0 - pushl $60 -c01029f9: 6a 3c push $0x3c - jmp __alltraps -c01029fb: e9 5b 08 00 00 jmp c010325b <__alltraps> - -c0102a00 : -.globl vector61 -vector61: - pushl $0 -c0102a00: 6a 00 push $0x0 - pushl $61 -c0102a02: 6a 3d push $0x3d - jmp __alltraps -c0102a04: e9 52 08 00 00 jmp c010325b <__alltraps> - -c0102a09 : -.globl vector62 -vector62: - pushl $0 -c0102a09: 6a 00 push $0x0 - pushl $62 -c0102a0b: 6a 3e push $0x3e - jmp __alltraps -c0102a0d: e9 49 08 00 00 jmp c010325b <__alltraps> - -c0102a12 : -.globl vector63 -vector63: - pushl $0 -c0102a12: 6a 00 push $0x0 - pushl $63 -c0102a14: 6a 3f push $0x3f - jmp __alltraps -c0102a16: e9 40 08 00 00 jmp c010325b <__alltraps> - -c0102a1b : -.globl vector64 -vector64: - pushl $0 -c0102a1b: 6a 00 push $0x0 - pushl $64 -c0102a1d: 6a 40 push $0x40 - jmp __alltraps -c0102a1f: e9 37 08 00 00 jmp c010325b <__alltraps> - -c0102a24 : -.globl vector65 -vector65: - pushl $0 -c0102a24: 6a 00 push $0x0 - pushl $65 -c0102a26: 6a 41 push $0x41 - jmp __alltraps -c0102a28: e9 2e 08 00 00 jmp c010325b <__alltraps> - -c0102a2d : -.globl vector66 -vector66: - pushl $0 -c0102a2d: 6a 00 push $0x0 - pushl $66 -c0102a2f: 6a 42 push $0x42 - jmp __alltraps -c0102a31: e9 25 08 00 00 jmp c010325b <__alltraps> - -c0102a36 : -.globl vector67 -vector67: - pushl $0 -c0102a36: 6a 00 push $0x0 - pushl $67 -c0102a38: 6a 43 push $0x43 - jmp __alltraps -c0102a3a: e9 1c 08 00 00 jmp c010325b <__alltraps> - -c0102a3f : -.globl vector68 -vector68: - pushl $0 -c0102a3f: 6a 00 push $0x0 - pushl $68 -c0102a41: 6a 44 push $0x44 - jmp __alltraps -c0102a43: e9 13 08 00 00 jmp c010325b <__alltraps> - -c0102a48 : -.globl vector69 -vector69: - pushl $0 -c0102a48: 6a 00 push $0x0 - pushl $69 -c0102a4a: 6a 45 push $0x45 - jmp __alltraps -c0102a4c: e9 0a 08 00 00 jmp c010325b <__alltraps> - -c0102a51 : -.globl vector70 -vector70: - pushl $0 -c0102a51: 6a 00 push $0x0 - pushl $70 -c0102a53: 6a 46 push $0x46 - jmp __alltraps -c0102a55: e9 01 08 00 00 jmp c010325b <__alltraps> - -c0102a5a : -.globl vector71 -vector71: - pushl $0 -c0102a5a: 6a 00 push $0x0 - pushl $71 -c0102a5c: 6a 47 push $0x47 - jmp __alltraps -c0102a5e: e9 f8 07 00 00 jmp c010325b <__alltraps> - -c0102a63 : -.globl vector72 -vector72: - pushl $0 -c0102a63: 6a 00 push $0x0 - pushl $72 -c0102a65: 6a 48 push $0x48 - jmp __alltraps -c0102a67: e9 ef 07 00 00 jmp c010325b <__alltraps> - -c0102a6c : -.globl vector73 -vector73: - pushl $0 -c0102a6c: 6a 00 push $0x0 - pushl $73 -c0102a6e: 6a 49 push $0x49 - jmp __alltraps -c0102a70: e9 e6 07 00 00 jmp c010325b <__alltraps> - -c0102a75 : -.globl vector74 -vector74: - pushl $0 -c0102a75: 6a 00 push $0x0 - pushl $74 -c0102a77: 6a 4a push $0x4a - jmp __alltraps -c0102a79: e9 dd 07 00 00 jmp c010325b <__alltraps> - -c0102a7e : -.globl vector75 -vector75: - pushl $0 -c0102a7e: 6a 00 push $0x0 - pushl $75 -c0102a80: 6a 4b push $0x4b - jmp __alltraps -c0102a82: e9 d4 07 00 00 jmp c010325b <__alltraps> - -c0102a87 : -.globl vector76 -vector76: - pushl $0 -c0102a87: 6a 00 push $0x0 - pushl $76 -c0102a89: 6a 4c push $0x4c - jmp __alltraps -c0102a8b: e9 cb 07 00 00 jmp c010325b <__alltraps> - -c0102a90 : -.globl vector77 -vector77: - pushl $0 -c0102a90: 6a 00 push $0x0 - pushl $77 -c0102a92: 6a 4d push $0x4d - jmp __alltraps -c0102a94: e9 c2 07 00 00 jmp c010325b <__alltraps> - -c0102a99 : -.globl vector78 -vector78: - pushl $0 -c0102a99: 6a 00 push $0x0 - pushl $78 -c0102a9b: 6a 4e push $0x4e - jmp __alltraps -c0102a9d: e9 b9 07 00 00 jmp c010325b <__alltraps> - -c0102aa2 : -.globl vector79 -vector79: - pushl $0 -c0102aa2: 6a 00 push $0x0 - pushl $79 -c0102aa4: 6a 4f push $0x4f - jmp __alltraps -c0102aa6: e9 b0 07 00 00 jmp c010325b <__alltraps> - -c0102aab : -.globl vector80 -vector80: - pushl $0 -c0102aab: 6a 00 push $0x0 - pushl $80 -c0102aad: 6a 50 push $0x50 - jmp __alltraps -c0102aaf: e9 a7 07 00 00 jmp c010325b <__alltraps> - -c0102ab4 : -.globl vector81 -vector81: - pushl $0 -c0102ab4: 6a 00 push $0x0 - pushl $81 -c0102ab6: 6a 51 push $0x51 - jmp __alltraps -c0102ab8: e9 9e 07 00 00 jmp c010325b <__alltraps> - -c0102abd : -.globl vector82 -vector82: - pushl $0 -c0102abd: 6a 00 push $0x0 - pushl $82 -c0102abf: 6a 52 push $0x52 - jmp __alltraps -c0102ac1: e9 95 07 00 00 jmp c010325b <__alltraps> - -c0102ac6 : -.globl vector83 -vector83: - pushl $0 -c0102ac6: 6a 00 push $0x0 - pushl $83 -c0102ac8: 6a 53 push $0x53 - jmp __alltraps -c0102aca: e9 8c 07 00 00 jmp c010325b <__alltraps> - -c0102acf : -.globl vector84 -vector84: - pushl $0 -c0102acf: 6a 00 push $0x0 - pushl $84 -c0102ad1: 6a 54 push $0x54 - jmp __alltraps -c0102ad3: e9 83 07 00 00 jmp c010325b <__alltraps> - -c0102ad8 : -.globl vector85 -vector85: - pushl $0 -c0102ad8: 6a 00 push $0x0 - pushl $85 -c0102ada: 6a 55 push $0x55 - jmp __alltraps -c0102adc: e9 7a 07 00 00 jmp c010325b <__alltraps> - -c0102ae1 : -.globl vector86 -vector86: - pushl $0 -c0102ae1: 6a 00 push $0x0 - pushl $86 -c0102ae3: 6a 56 push $0x56 - jmp __alltraps -c0102ae5: e9 71 07 00 00 jmp c010325b <__alltraps> - -c0102aea : -.globl vector87 -vector87: - pushl $0 -c0102aea: 6a 00 push $0x0 - pushl $87 -c0102aec: 6a 57 push $0x57 - jmp __alltraps -c0102aee: e9 68 07 00 00 jmp c010325b <__alltraps> - -c0102af3 : -.globl vector88 -vector88: - pushl $0 -c0102af3: 6a 00 push $0x0 - pushl $88 -c0102af5: 6a 58 push $0x58 - jmp __alltraps -c0102af7: e9 5f 07 00 00 jmp c010325b <__alltraps> - -c0102afc : -.globl vector89 -vector89: - pushl $0 -c0102afc: 6a 00 push $0x0 - pushl $89 -c0102afe: 6a 59 push $0x59 - jmp __alltraps -c0102b00: e9 56 07 00 00 jmp c010325b <__alltraps> - -c0102b05 : -.globl vector90 -vector90: - pushl $0 -c0102b05: 6a 00 push $0x0 - pushl $90 -c0102b07: 6a 5a push $0x5a - jmp __alltraps -c0102b09: e9 4d 07 00 00 jmp c010325b <__alltraps> - -c0102b0e : -.globl vector91 -vector91: - pushl $0 -c0102b0e: 6a 00 push $0x0 - pushl $91 -c0102b10: 6a 5b push $0x5b - jmp __alltraps -c0102b12: e9 44 07 00 00 jmp c010325b <__alltraps> - -c0102b17 : -.globl vector92 -vector92: - pushl $0 -c0102b17: 6a 00 push $0x0 - pushl $92 -c0102b19: 6a 5c push $0x5c - jmp __alltraps -c0102b1b: e9 3b 07 00 00 jmp c010325b <__alltraps> - -c0102b20 : -.globl vector93 -vector93: - pushl $0 -c0102b20: 6a 00 push $0x0 - pushl $93 -c0102b22: 6a 5d push $0x5d - jmp __alltraps -c0102b24: e9 32 07 00 00 jmp c010325b <__alltraps> - -c0102b29 : -.globl vector94 -vector94: - pushl $0 -c0102b29: 6a 00 push $0x0 - pushl $94 -c0102b2b: 6a 5e push $0x5e - jmp __alltraps -c0102b2d: e9 29 07 00 00 jmp c010325b <__alltraps> - -c0102b32 : -.globl vector95 -vector95: - pushl $0 -c0102b32: 6a 00 push $0x0 - pushl $95 -c0102b34: 6a 5f push $0x5f - jmp __alltraps -c0102b36: e9 20 07 00 00 jmp c010325b <__alltraps> - -c0102b3b : -.globl vector96 -vector96: - pushl $0 -c0102b3b: 6a 00 push $0x0 - pushl $96 -c0102b3d: 6a 60 push $0x60 - jmp __alltraps -c0102b3f: e9 17 07 00 00 jmp c010325b <__alltraps> - -c0102b44 : -.globl vector97 -vector97: - pushl $0 -c0102b44: 6a 00 push $0x0 - pushl $97 -c0102b46: 6a 61 push $0x61 - jmp __alltraps -c0102b48: e9 0e 07 00 00 jmp c010325b <__alltraps> - -c0102b4d : -.globl vector98 -vector98: - pushl $0 -c0102b4d: 6a 00 push $0x0 - pushl $98 -c0102b4f: 6a 62 push $0x62 - jmp __alltraps -c0102b51: e9 05 07 00 00 jmp c010325b <__alltraps> - -c0102b56 : -.globl vector99 -vector99: - pushl $0 -c0102b56: 6a 00 push $0x0 - pushl $99 -c0102b58: 6a 63 push $0x63 - jmp __alltraps -c0102b5a: e9 fc 06 00 00 jmp c010325b <__alltraps> - -c0102b5f : -.globl vector100 -vector100: - pushl $0 -c0102b5f: 6a 00 push $0x0 - pushl $100 -c0102b61: 6a 64 push $0x64 - jmp __alltraps -c0102b63: e9 f3 06 00 00 jmp c010325b <__alltraps> - -c0102b68 : -.globl vector101 -vector101: - pushl $0 -c0102b68: 6a 00 push $0x0 - pushl $101 -c0102b6a: 6a 65 push $0x65 - jmp __alltraps -c0102b6c: e9 ea 06 00 00 jmp c010325b <__alltraps> - -c0102b71 : -.globl vector102 -vector102: - pushl $0 -c0102b71: 6a 00 push $0x0 - pushl $102 -c0102b73: 6a 66 push $0x66 - jmp __alltraps -c0102b75: e9 e1 06 00 00 jmp c010325b <__alltraps> - -c0102b7a : -.globl vector103 -vector103: - pushl $0 -c0102b7a: 6a 00 push $0x0 - pushl $103 -c0102b7c: 6a 67 push $0x67 - jmp __alltraps -c0102b7e: e9 d8 06 00 00 jmp c010325b <__alltraps> - -c0102b83 : -.globl vector104 -vector104: - pushl $0 -c0102b83: 6a 00 push $0x0 - pushl $104 -c0102b85: 6a 68 push $0x68 - jmp __alltraps -c0102b87: e9 cf 06 00 00 jmp c010325b <__alltraps> - -c0102b8c : -.globl vector105 -vector105: - pushl $0 -c0102b8c: 6a 00 push $0x0 - pushl $105 -c0102b8e: 6a 69 push $0x69 - jmp __alltraps -c0102b90: e9 c6 06 00 00 jmp c010325b <__alltraps> - -c0102b95 : -.globl vector106 -vector106: - pushl $0 -c0102b95: 6a 00 push $0x0 - pushl $106 -c0102b97: 6a 6a push $0x6a - jmp __alltraps -c0102b99: e9 bd 06 00 00 jmp c010325b <__alltraps> - -c0102b9e : -.globl vector107 -vector107: - pushl $0 -c0102b9e: 6a 00 push $0x0 - pushl $107 -c0102ba0: 6a 6b push $0x6b - jmp __alltraps -c0102ba2: e9 b4 06 00 00 jmp c010325b <__alltraps> - -c0102ba7 : -.globl vector108 -vector108: - pushl $0 -c0102ba7: 6a 00 push $0x0 - pushl $108 -c0102ba9: 6a 6c push $0x6c - jmp __alltraps -c0102bab: e9 ab 06 00 00 jmp c010325b <__alltraps> - -c0102bb0 : -.globl vector109 -vector109: - pushl $0 -c0102bb0: 6a 00 push $0x0 - pushl $109 -c0102bb2: 6a 6d push $0x6d - jmp __alltraps -c0102bb4: e9 a2 06 00 00 jmp c010325b <__alltraps> - -c0102bb9 : -.globl vector110 -vector110: - pushl $0 -c0102bb9: 6a 00 push $0x0 - pushl $110 -c0102bbb: 6a 6e push $0x6e - jmp __alltraps -c0102bbd: e9 99 06 00 00 jmp c010325b <__alltraps> - -c0102bc2 : -.globl vector111 -vector111: - pushl $0 -c0102bc2: 6a 00 push $0x0 - pushl $111 -c0102bc4: 6a 6f push $0x6f - jmp __alltraps -c0102bc6: e9 90 06 00 00 jmp c010325b <__alltraps> - -c0102bcb : -.globl vector112 -vector112: - pushl $0 -c0102bcb: 6a 00 push $0x0 - pushl $112 -c0102bcd: 6a 70 push $0x70 - jmp __alltraps -c0102bcf: e9 87 06 00 00 jmp c010325b <__alltraps> - -c0102bd4 : -.globl vector113 -vector113: - pushl $0 -c0102bd4: 6a 00 push $0x0 - pushl $113 -c0102bd6: 6a 71 push $0x71 - jmp __alltraps -c0102bd8: e9 7e 06 00 00 jmp c010325b <__alltraps> - -c0102bdd : -.globl vector114 -vector114: - pushl $0 -c0102bdd: 6a 00 push $0x0 - pushl $114 -c0102bdf: 6a 72 push $0x72 - jmp __alltraps -c0102be1: e9 75 06 00 00 jmp c010325b <__alltraps> - -c0102be6 : -.globl vector115 -vector115: - pushl $0 -c0102be6: 6a 00 push $0x0 - pushl $115 -c0102be8: 6a 73 push $0x73 - jmp __alltraps -c0102bea: e9 6c 06 00 00 jmp c010325b <__alltraps> - -c0102bef : -.globl vector116 -vector116: - pushl $0 -c0102bef: 6a 00 push $0x0 - pushl $116 -c0102bf1: 6a 74 push $0x74 - jmp __alltraps -c0102bf3: e9 63 06 00 00 jmp c010325b <__alltraps> - -c0102bf8 : -.globl vector117 -vector117: - pushl $0 -c0102bf8: 6a 00 push $0x0 - pushl $117 -c0102bfa: 6a 75 push $0x75 - jmp __alltraps -c0102bfc: e9 5a 06 00 00 jmp c010325b <__alltraps> - -c0102c01 : -.globl vector118 -vector118: - pushl $0 -c0102c01: 6a 00 push $0x0 - pushl $118 -c0102c03: 6a 76 push $0x76 - jmp __alltraps -c0102c05: e9 51 06 00 00 jmp c010325b <__alltraps> - -c0102c0a : -.globl vector119 -vector119: - pushl $0 -c0102c0a: 6a 00 push $0x0 - pushl $119 -c0102c0c: 6a 77 push $0x77 - jmp __alltraps -c0102c0e: e9 48 06 00 00 jmp c010325b <__alltraps> - -c0102c13 : -.globl vector120 -vector120: - pushl $0 -c0102c13: 6a 00 push $0x0 - pushl $120 -c0102c15: 6a 78 push $0x78 - jmp __alltraps -c0102c17: e9 3f 06 00 00 jmp c010325b <__alltraps> - -c0102c1c : -.globl vector121 -vector121: - pushl $0 -c0102c1c: 6a 00 push $0x0 - pushl $121 -c0102c1e: 6a 79 push $0x79 - jmp __alltraps -c0102c20: e9 36 06 00 00 jmp c010325b <__alltraps> - -c0102c25 : -.globl vector122 -vector122: - pushl $0 -c0102c25: 6a 00 push $0x0 - pushl $122 -c0102c27: 6a 7a push $0x7a - jmp __alltraps -c0102c29: e9 2d 06 00 00 jmp c010325b <__alltraps> - -c0102c2e : -.globl vector123 -vector123: - pushl $0 -c0102c2e: 6a 00 push $0x0 - pushl $123 -c0102c30: 6a 7b push $0x7b - jmp __alltraps -c0102c32: e9 24 06 00 00 jmp c010325b <__alltraps> - -c0102c37 : -.globl vector124 -vector124: - pushl $0 -c0102c37: 6a 00 push $0x0 - pushl $124 -c0102c39: 6a 7c push $0x7c - jmp __alltraps -c0102c3b: e9 1b 06 00 00 jmp c010325b <__alltraps> - -c0102c40 : -.globl vector125 -vector125: - pushl $0 -c0102c40: 6a 00 push $0x0 - pushl $125 -c0102c42: 6a 7d push $0x7d - jmp __alltraps -c0102c44: e9 12 06 00 00 jmp c010325b <__alltraps> - -c0102c49 : -.globl vector126 -vector126: - pushl $0 -c0102c49: 6a 00 push $0x0 - pushl $126 -c0102c4b: 6a 7e push $0x7e - jmp __alltraps -c0102c4d: e9 09 06 00 00 jmp c010325b <__alltraps> - -c0102c52 : -.globl vector127 -vector127: - pushl $0 -c0102c52: 6a 00 push $0x0 - pushl $127 -c0102c54: 6a 7f push $0x7f - jmp __alltraps -c0102c56: e9 00 06 00 00 jmp c010325b <__alltraps> - -c0102c5b : -.globl vector128 -vector128: - pushl $0 -c0102c5b: 6a 00 push $0x0 - pushl $128 -c0102c5d: 68 80 00 00 00 push $0x80 - jmp __alltraps -c0102c62: e9 f4 05 00 00 jmp c010325b <__alltraps> - -c0102c67 : -.globl vector129 -vector129: - pushl $0 -c0102c67: 6a 00 push $0x0 - pushl $129 -c0102c69: 68 81 00 00 00 push $0x81 - jmp __alltraps -c0102c6e: e9 e8 05 00 00 jmp c010325b <__alltraps> - -c0102c73 : -.globl vector130 -vector130: - pushl $0 -c0102c73: 6a 00 push $0x0 - pushl $130 -c0102c75: 68 82 00 00 00 push $0x82 - jmp __alltraps -c0102c7a: e9 dc 05 00 00 jmp c010325b <__alltraps> - -c0102c7f : -.globl vector131 -vector131: - pushl $0 -c0102c7f: 6a 00 push $0x0 - pushl $131 -c0102c81: 68 83 00 00 00 push $0x83 - jmp __alltraps -c0102c86: e9 d0 05 00 00 jmp c010325b <__alltraps> - -c0102c8b : -.globl vector132 -vector132: - pushl $0 -c0102c8b: 6a 00 push $0x0 - pushl $132 -c0102c8d: 68 84 00 00 00 push $0x84 - jmp __alltraps -c0102c92: e9 c4 05 00 00 jmp c010325b <__alltraps> - -c0102c97 : -.globl vector133 -vector133: - pushl $0 -c0102c97: 6a 00 push $0x0 - pushl $133 -c0102c99: 68 85 00 00 00 push $0x85 - jmp __alltraps -c0102c9e: e9 b8 05 00 00 jmp c010325b <__alltraps> - -c0102ca3 : -.globl vector134 -vector134: - pushl $0 -c0102ca3: 6a 00 push $0x0 - pushl $134 -c0102ca5: 68 86 00 00 00 push $0x86 - jmp __alltraps -c0102caa: e9 ac 05 00 00 jmp c010325b <__alltraps> - -c0102caf : -.globl vector135 -vector135: - pushl $0 -c0102caf: 6a 00 push $0x0 - pushl $135 -c0102cb1: 68 87 00 00 00 push $0x87 - jmp __alltraps -c0102cb6: e9 a0 05 00 00 jmp c010325b <__alltraps> - -c0102cbb : -.globl vector136 -vector136: - pushl $0 -c0102cbb: 6a 00 push $0x0 - pushl $136 -c0102cbd: 68 88 00 00 00 push $0x88 - jmp __alltraps -c0102cc2: e9 94 05 00 00 jmp c010325b <__alltraps> - -c0102cc7 : -.globl vector137 -vector137: - pushl $0 -c0102cc7: 6a 00 push $0x0 - pushl $137 -c0102cc9: 68 89 00 00 00 push $0x89 - jmp __alltraps -c0102cce: e9 88 05 00 00 jmp c010325b <__alltraps> - -c0102cd3 : -.globl vector138 -vector138: - pushl $0 -c0102cd3: 6a 00 push $0x0 - pushl $138 -c0102cd5: 68 8a 00 00 00 push $0x8a - jmp __alltraps -c0102cda: e9 7c 05 00 00 jmp c010325b <__alltraps> - -c0102cdf : -.globl vector139 -vector139: - pushl $0 -c0102cdf: 6a 00 push $0x0 - pushl $139 -c0102ce1: 68 8b 00 00 00 push $0x8b - jmp __alltraps -c0102ce6: e9 70 05 00 00 jmp c010325b <__alltraps> - -c0102ceb : -.globl vector140 -vector140: - pushl $0 -c0102ceb: 6a 00 push $0x0 - pushl $140 -c0102ced: 68 8c 00 00 00 push $0x8c - jmp __alltraps -c0102cf2: e9 64 05 00 00 jmp c010325b <__alltraps> - -c0102cf7 : -.globl vector141 -vector141: - pushl $0 -c0102cf7: 6a 00 push $0x0 - pushl $141 -c0102cf9: 68 8d 00 00 00 push $0x8d - jmp __alltraps -c0102cfe: e9 58 05 00 00 jmp c010325b <__alltraps> - -c0102d03 : -.globl vector142 -vector142: - pushl $0 -c0102d03: 6a 00 push $0x0 - pushl $142 -c0102d05: 68 8e 00 00 00 push $0x8e - jmp __alltraps -c0102d0a: e9 4c 05 00 00 jmp c010325b <__alltraps> - -c0102d0f : -.globl vector143 -vector143: - pushl $0 -c0102d0f: 6a 00 push $0x0 - pushl $143 -c0102d11: 68 8f 00 00 00 push $0x8f - jmp __alltraps -c0102d16: e9 40 05 00 00 jmp c010325b <__alltraps> - -c0102d1b : -.globl vector144 -vector144: - pushl $0 -c0102d1b: 6a 00 push $0x0 - pushl $144 -c0102d1d: 68 90 00 00 00 push $0x90 - jmp __alltraps -c0102d22: e9 34 05 00 00 jmp c010325b <__alltraps> - -c0102d27 : -.globl vector145 -vector145: - pushl $0 -c0102d27: 6a 00 push $0x0 - pushl $145 -c0102d29: 68 91 00 00 00 push $0x91 - jmp __alltraps -c0102d2e: e9 28 05 00 00 jmp c010325b <__alltraps> - -c0102d33 : -.globl vector146 -vector146: - pushl $0 -c0102d33: 6a 00 push $0x0 - pushl $146 -c0102d35: 68 92 00 00 00 push $0x92 - jmp __alltraps -c0102d3a: e9 1c 05 00 00 jmp c010325b <__alltraps> - -c0102d3f : -.globl vector147 -vector147: - pushl $0 -c0102d3f: 6a 00 push $0x0 - pushl $147 -c0102d41: 68 93 00 00 00 push $0x93 - jmp __alltraps -c0102d46: e9 10 05 00 00 jmp c010325b <__alltraps> - -c0102d4b : -.globl vector148 -vector148: - pushl $0 -c0102d4b: 6a 00 push $0x0 - pushl $148 -c0102d4d: 68 94 00 00 00 push $0x94 - jmp __alltraps -c0102d52: e9 04 05 00 00 jmp c010325b <__alltraps> - -c0102d57 : -.globl vector149 -vector149: - pushl $0 -c0102d57: 6a 00 push $0x0 - pushl $149 -c0102d59: 68 95 00 00 00 push $0x95 - jmp __alltraps -c0102d5e: e9 f8 04 00 00 jmp c010325b <__alltraps> - -c0102d63 : -.globl vector150 -vector150: - pushl $0 -c0102d63: 6a 00 push $0x0 - pushl $150 -c0102d65: 68 96 00 00 00 push $0x96 - jmp __alltraps -c0102d6a: e9 ec 04 00 00 jmp c010325b <__alltraps> - -c0102d6f : -.globl vector151 -vector151: - pushl $0 -c0102d6f: 6a 00 push $0x0 - pushl $151 -c0102d71: 68 97 00 00 00 push $0x97 - jmp __alltraps -c0102d76: e9 e0 04 00 00 jmp c010325b <__alltraps> - -c0102d7b : -.globl vector152 -vector152: - pushl $0 -c0102d7b: 6a 00 push $0x0 - pushl $152 -c0102d7d: 68 98 00 00 00 push $0x98 - jmp __alltraps -c0102d82: e9 d4 04 00 00 jmp c010325b <__alltraps> - -c0102d87 : -.globl vector153 -vector153: - pushl $0 -c0102d87: 6a 00 push $0x0 - pushl $153 -c0102d89: 68 99 00 00 00 push $0x99 - jmp __alltraps -c0102d8e: e9 c8 04 00 00 jmp c010325b <__alltraps> - -c0102d93 : -.globl vector154 -vector154: - pushl $0 -c0102d93: 6a 00 push $0x0 - pushl $154 -c0102d95: 68 9a 00 00 00 push $0x9a - jmp __alltraps -c0102d9a: e9 bc 04 00 00 jmp c010325b <__alltraps> - -c0102d9f : -.globl vector155 -vector155: - pushl $0 -c0102d9f: 6a 00 push $0x0 - pushl $155 -c0102da1: 68 9b 00 00 00 push $0x9b - jmp __alltraps -c0102da6: e9 b0 04 00 00 jmp c010325b <__alltraps> - -c0102dab : -.globl vector156 -vector156: - pushl $0 -c0102dab: 6a 00 push $0x0 - pushl $156 -c0102dad: 68 9c 00 00 00 push $0x9c - jmp __alltraps -c0102db2: e9 a4 04 00 00 jmp c010325b <__alltraps> - -c0102db7 : -.globl vector157 -vector157: - pushl $0 -c0102db7: 6a 00 push $0x0 - pushl $157 -c0102db9: 68 9d 00 00 00 push $0x9d - jmp __alltraps -c0102dbe: e9 98 04 00 00 jmp c010325b <__alltraps> - -c0102dc3 : -.globl vector158 -vector158: - pushl $0 -c0102dc3: 6a 00 push $0x0 - pushl $158 -c0102dc5: 68 9e 00 00 00 push $0x9e - jmp __alltraps -c0102dca: e9 8c 04 00 00 jmp c010325b <__alltraps> - -c0102dcf : -.globl vector159 -vector159: - pushl $0 -c0102dcf: 6a 00 push $0x0 - pushl $159 -c0102dd1: 68 9f 00 00 00 push $0x9f - jmp __alltraps -c0102dd6: e9 80 04 00 00 jmp c010325b <__alltraps> - -c0102ddb : -.globl vector160 -vector160: - pushl $0 -c0102ddb: 6a 00 push $0x0 - pushl $160 -c0102ddd: 68 a0 00 00 00 push $0xa0 - jmp __alltraps -c0102de2: e9 74 04 00 00 jmp c010325b <__alltraps> - -c0102de7 : -.globl vector161 -vector161: - pushl $0 -c0102de7: 6a 00 push $0x0 - pushl $161 -c0102de9: 68 a1 00 00 00 push $0xa1 - jmp __alltraps -c0102dee: e9 68 04 00 00 jmp c010325b <__alltraps> - -c0102df3 : -.globl vector162 -vector162: - pushl $0 -c0102df3: 6a 00 push $0x0 - pushl $162 -c0102df5: 68 a2 00 00 00 push $0xa2 - jmp __alltraps -c0102dfa: e9 5c 04 00 00 jmp c010325b <__alltraps> - -c0102dff : -.globl vector163 -vector163: - pushl $0 -c0102dff: 6a 00 push $0x0 - pushl $163 -c0102e01: 68 a3 00 00 00 push $0xa3 - jmp __alltraps -c0102e06: e9 50 04 00 00 jmp c010325b <__alltraps> - -c0102e0b : -.globl vector164 -vector164: - pushl $0 -c0102e0b: 6a 00 push $0x0 - pushl $164 -c0102e0d: 68 a4 00 00 00 push $0xa4 - jmp __alltraps -c0102e12: e9 44 04 00 00 jmp c010325b <__alltraps> - -c0102e17 : -.globl vector165 -vector165: - pushl $0 -c0102e17: 6a 00 push $0x0 - pushl $165 -c0102e19: 68 a5 00 00 00 push $0xa5 - jmp __alltraps -c0102e1e: e9 38 04 00 00 jmp c010325b <__alltraps> - -c0102e23 : -.globl vector166 -vector166: - pushl $0 -c0102e23: 6a 00 push $0x0 - pushl $166 -c0102e25: 68 a6 00 00 00 push $0xa6 - jmp __alltraps -c0102e2a: e9 2c 04 00 00 jmp c010325b <__alltraps> - -c0102e2f : -.globl vector167 -vector167: - pushl $0 -c0102e2f: 6a 00 push $0x0 - pushl $167 -c0102e31: 68 a7 00 00 00 push $0xa7 - jmp __alltraps -c0102e36: e9 20 04 00 00 jmp c010325b <__alltraps> - -c0102e3b : -.globl vector168 -vector168: - pushl $0 -c0102e3b: 6a 00 push $0x0 - pushl $168 -c0102e3d: 68 a8 00 00 00 push $0xa8 - jmp __alltraps -c0102e42: e9 14 04 00 00 jmp c010325b <__alltraps> - -c0102e47 : -.globl vector169 -vector169: - pushl $0 -c0102e47: 6a 00 push $0x0 - pushl $169 -c0102e49: 68 a9 00 00 00 push $0xa9 - jmp __alltraps -c0102e4e: e9 08 04 00 00 jmp c010325b <__alltraps> - -c0102e53 : -.globl vector170 -vector170: - pushl $0 -c0102e53: 6a 00 push $0x0 - pushl $170 -c0102e55: 68 aa 00 00 00 push $0xaa - jmp __alltraps -c0102e5a: e9 fc 03 00 00 jmp c010325b <__alltraps> - -c0102e5f : -.globl vector171 -vector171: - pushl $0 -c0102e5f: 6a 00 push $0x0 - pushl $171 -c0102e61: 68 ab 00 00 00 push $0xab - jmp __alltraps -c0102e66: e9 f0 03 00 00 jmp c010325b <__alltraps> - -c0102e6b : -.globl vector172 -vector172: - pushl $0 -c0102e6b: 6a 00 push $0x0 - pushl $172 -c0102e6d: 68 ac 00 00 00 push $0xac - jmp __alltraps -c0102e72: e9 e4 03 00 00 jmp c010325b <__alltraps> - -c0102e77 : -.globl vector173 -vector173: - pushl $0 -c0102e77: 6a 00 push $0x0 - pushl $173 -c0102e79: 68 ad 00 00 00 push $0xad - jmp __alltraps -c0102e7e: e9 d8 03 00 00 jmp c010325b <__alltraps> - -c0102e83 : -.globl vector174 -vector174: - pushl $0 -c0102e83: 6a 00 push $0x0 - pushl $174 -c0102e85: 68 ae 00 00 00 push $0xae - jmp __alltraps -c0102e8a: e9 cc 03 00 00 jmp c010325b <__alltraps> - -c0102e8f : -.globl vector175 -vector175: - pushl $0 -c0102e8f: 6a 00 push $0x0 - pushl $175 -c0102e91: 68 af 00 00 00 push $0xaf - jmp __alltraps -c0102e96: e9 c0 03 00 00 jmp c010325b <__alltraps> - -c0102e9b : -.globl vector176 -vector176: - pushl $0 -c0102e9b: 6a 00 push $0x0 - pushl $176 -c0102e9d: 68 b0 00 00 00 push $0xb0 - jmp __alltraps -c0102ea2: e9 b4 03 00 00 jmp c010325b <__alltraps> - -c0102ea7 : -.globl vector177 -vector177: - pushl $0 -c0102ea7: 6a 00 push $0x0 - pushl $177 -c0102ea9: 68 b1 00 00 00 push $0xb1 - jmp __alltraps -c0102eae: e9 a8 03 00 00 jmp c010325b <__alltraps> - -c0102eb3 : -.globl vector178 -vector178: - pushl $0 -c0102eb3: 6a 00 push $0x0 - pushl $178 -c0102eb5: 68 b2 00 00 00 push $0xb2 - jmp __alltraps -c0102eba: e9 9c 03 00 00 jmp c010325b <__alltraps> - -c0102ebf : -.globl vector179 -vector179: - pushl $0 -c0102ebf: 6a 00 push $0x0 - pushl $179 -c0102ec1: 68 b3 00 00 00 push $0xb3 - jmp __alltraps -c0102ec6: e9 90 03 00 00 jmp c010325b <__alltraps> - -c0102ecb : -.globl vector180 -vector180: - pushl $0 -c0102ecb: 6a 00 push $0x0 - pushl $180 -c0102ecd: 68 b4 00 00 00 push $0xb4 - jmp __alltraps -c0102ed2: e9 84 03 00 00 jmp c010325b <__alltraps> - -c0102ed7 : -.globl vector181 -vector181: - pushl $0 -c0102ed7: 6a 00 push $0x0 - pushl $181 -c0102ed9: 68 b5 00 00 00 push $0xb5 - jmp __alltraps -c0102ede: e9 78 03 00 00 jmp c010325b <__alltraps> - -c0102ee3 : -.globl vector182 -vector182: - pushl $0 -c0102ee3: 6a 00 push $0x0 - pushl $182 -c0102ee5: 68 b6 00 00 00 push $0xb6 - jmp __alltraps -c0102eea: e9 6c 03 00 00 jmp c010325b <__alltraps> - -c0102eef : -.globl vector183 -vector183: - pushl $0 -c0102eef: 6a 00 push $0x0 - pushl $183 -c0102ef1: 68 b7 00 00 00 push $0xb7 - jmp __alltraps -c0102ef6: e9 60 03 00 00 jmp c010325b <__alltraps> - -c0102efb : -.globl vector184 -vector184: - pushl $0 -c0102efb: 6a 00 push $0x0 - pushl $184 -c0102efd: 68 b8 00 00 00 push $0xb8 - jmp __alltraps -c0102f02: e9 54 03 00 00 jmp c010325b <__alltraps> - -c0102f07 : -.globl vector185 -vector185: - pushl $0 -c0102f07: 6a 00 push $0x0 - pushl $185 -c0102f09: 68 b9 00 00 00 push $0xb9 - jmp __alltraps -c0102f0e: e9 48 03 00 00 jmp c010325b <__alltraps> - -c0102f13 : -.globl vector186 -vector186: - pushl $0 -c0102f13: 6a 00 push $0x0 - pushl $186 -c0102f15: 68 ba 00 00 00 push $0xba - jmp __alltraps -c0102f1a: e9 3c 03 00 00 jmp c010325b <__alltraps> - -c0102f1f : -.globl vector187 -vector187: - pushl $0 -c0102f1f: 6a 00 push $0x0 - pushl $187 -c0102f21: 68 bb 00 00 00 push $0xbb - jmp __alltraps -c0102f26: e9 30 03 00 00 jmp c010325b <__alltraps> - -c0102f2b : -.globl vector188 -vector188: - pushl $0 -c0102f2b: 6a 00 push $0x0 - pushl $188 -c0102f2d: 68 bc 00 00 00 push $0xbc - jmp __alltraps -c0102f32: e9 24 03 00 00 jmp c010325b <__alltraps> - -c0102f37 : -.globl vector189 -vector189: - pushl $0 -c0102f37: 6a 00 push $0x0 - pushl $189 -c0102f39: 68 bd 00 00 00 push $0xbd - jmp __alltraps -c0102f3e: e9 18 03 00 00 jmp c010325b <__alltraps> - -c0102f43 : -.globl vector190 -vector190: - pushl $0 -c0102f43: 6a 00 push $0x0 - pushl $190 -c0102f45: 68 be 00 00 00 push $0xbe - jmp __alltraps -c0102f4a: e9 0c 03 00 00 jmp c010325b <__alltraps> - -c0102f4f : -.globl vector191 -vector191: - pushl $0 -c0102f4f: 6a 00 push $0x0 - pushl $191 -c0102f51: 68 bf 00 00 00 push $0xbf - jmp __alltraps -c0102f56: e9 00 03 00 00 jmp c010325b <__alltraps> - -c0102f5b : -.globl vector192 -vector192: - pushl $0 -c0102f5b: 6a 00 push $0x0 - pushl $192 -c0102f5d: 68 c0 00 00 00 push $0xc0 - jmp __alltraps -c0102f62: e9 f4 02 00 00 jmp c010325b <__alltraps> - -c0102f67 : -.globl vector193 -vector193: - pushl $0 -c0102f67: 6a 00 push $0x0 - pushl $193 -c0102f69: 68 c1 00 00 00 push $0xc1 - jmp __alltraps -c0102f6e: e9 e8 02 00 00 jmp c010325b <__alltraps> - -c0102f73 : -.globl vector194 -vector194: - pushl $0 -c0102f73: 6a 00 push $0x0 - pushl $194 -c0102f75: 68 c2 00 00 00 push $0xc2 - jmp __alltraps -c0102f7a: e9 dc 02 00 00 jmp c010325b <__alltraps> - -c0102f7f : -.globl vector195 -vector195: - pushl $0 -c0102f7f: 6a 00 push $0x0 - pushl $195 -c0102f81: 68 c3 00 00 00 push $0xc3 - jmp __alltraps -c0102f86: e9 d0 02 00 00 jmp c010325b <__alltraps> - -c0102f8b : -.globl vector196 -vector196: - pushl $0 -c0102f8b: 6a 00 push $0x0 - pushl $196 -c0102f8d: 68 c4 00 00 00 push $0xc4 - jmp __alltraps -c0102f92: e9 c4 02 00 00 jmp c010325b <__alltraps> - -c0102f97 : -.globl vector197 -vector197: - pushl $0 -c0102f97: 6a 00 push $0x0 - pushl $197 -c0102f99: 68 c5 00 00 00 push $0xc5 - jmp __alltraps -c0102f9e: e9 b8 02 00 00 jmp c010325b <__alltraps> - -c0102fa3 : -.globl vector198 -vector198: - pushl $0 -c0102fa3: 6a 00 push $0x0 - pushl $198 -c0102fa5: 68 c6 00 00 00 push $0xc6 - jmp __alltraps -c0102faa: e9 ac 02 00 00 jmp c010325b <__alltraps> - -c0102faf : -.globl vector199 -vector199: - pushl $0 -c0102faf: 6a 00 push $0x0 - pushl $199 -c0102fb1: 68 c7 00 00 00 push $0xc7 - jmp __alltraps -c0102fb6: e9 a0 02 00 00 jmp c010325b <__alltraps> - -c0102fbb : -.globl vector200 -vector200: - pushl $0 -c0102fbb: 6a 00 push $0x0 - pushl $200 -c0102fbd: 68 c8 00 00 00 push $0xc8 - jmp __alltraps -c0102fc2: e9 94 02 00 00 jmp c010325b <__alltraps> - -c0102fc7 : -.globl vector201 -vector201: - pushl $0 -c0102fc7: 6a 00 push $0x0 - pushl $201 -c0102fc9: 68 c9 00 00 00 push $0xc9 - jmp __alltraps -c0102fce: e9 88 02 00 00 jmp c010325b <__alltraps> - -c0102fd3 : -.globl vector202 -vector202: - pushl $0 -c0102fd3: 6a 00 push $0x0 - pushl $202 -c0102fd5: 68 ca 00 00 00 push $0xca - jmp __alltraps -c0102fda: e9 7c 02 00 00 jmp c010325b <__alltraps> - -c0102fdf : -.globl vector203 -vector203: - pushl $0 -c0102fdf: 6a 00 push $0x0 - pushl $203 -c0102fe1: 68 cb 00 00 00 push $0xcb - jmp __alltraps -c0102fe6: e9 70 02 00 00 jmp c010325b <__alltraps> - -c0102feb : -.globl vector204 -vector204: - pushl $0 -c0102feb: 6a 00 push $0x0 - pushl $204 -c0102fed: 68 cc 00 00 00 push $0xcc - jmp __alltraps -c0102ff2: e9 64 02 00 00 jmp c010325b <__alltraps> - -c0102ff7 : -.globl vector205 -vector205: - pushl $0 -c0102ff7: 6a 00 push $0x0 - pushl $205 -c0102ff9: 68 cd 00 00 00 push $0xcd - jmp __alltraps -c0102ffe: e9 58 02 00 00 jmp c010325b <__alltraps> - -c0103003 : -.globl vector206 -vector206: - pushl $0 -c0103003: 6a 00 push $0x0 - pushl $206 -c0103005: 68 ce 00 00 00 push $0xce - jmp __alltraps -c010300a: e9 4c 02 00 00 jmp c010325b <__alltraps> - -c010300f : -.globl vector207 -vector207: - pushl $0 -c010300f: 6a 00 push $0x0 - pushl $207 -c0103011: 68 cf 00 00 00 push $0xcf - jmp __alltraps -c0103016: e9 40 02 00 00 jmp c010325b <__alltraps> - -c010301b : -.globl vector208 -vector208: - pushl $0 -c010301b: 6a 00 push $0x0 - pushl $208 -c010301d: 68 d0 00 00 00 push $0xd0 - jmp __alltraps -c0103022: e9 34 02 00 00 jmp c010325b <__alltraps> - -c0103027 : -.globl vector209 -vector209: - pushl $0 -c0103027: 6a 00 push $0x0 - pushl $209 -c0103029: 68 d1 00 00 00 push $0xd1 - jmp __alltraps -c010302e: e9 28 02 00 00 jmp c010325b <__alltraps> - -c0103033 : -.globl vector210 -vector210: - pushl $0 -c0103033: 6a 00 push $0x0 - pushl $210 -c0103035: 68 d2 00 00 00 push $0xd2 - jmp __alltraps -c010303a: e9 1c 02 00 00 jmp c010325b <__alltraps> - -c010303f : -.globl vector211 -vector211: - pushl $0 -c010303f: 6a 00 push $0x0 - pushl $211 -c0103041: 68 d3 00 00 00 push $0xd3 - jmp __alltraps -c0103046: e9 10 02 00 00 jmp c010325b <__alltraps> - -c010304b : -.globl vector212 -vector212: - pushl $0 -c010304b: 6a 00 push $0x0 - pushl $212 -c010304d: 68 d4 00 00 00 push $0xd4 - jmp __alltraps -c0103052: e9 04 02 00 00 jmp c010325b <__alltraps> - -c0103057 : -.globl vector213 -vector213: - pushl $0 -c0103057: 6a 00 push $0x0 - pushl $213 -c0103059: 68 d5 00 00 00 push $0xd5 - jmp __alltraps -c010305e: e9 f8 01 00 00 jmp c010325b <__alltraps> - -c0103063 : -.globl vector214 -vector214: - pushl $0 -c0103063: 6a 00 push $0x0 - pushl $214 -c0103065: 68 d6 00 00 00 push $0xd6 - jmp __alltraps -c010306a: e9 ec 01 00 00 jmp c010325b <__alltraps> - -c010306f : -.globl vector215 -vector215: - pushl $0 -c010306f: 6a 00 push $0x0 - pushl $215 -c0103071: 68 d7 00 00 00 push $0xd7 - jmp __alltraps -c0103076: e9 e0 01 00 00 jmp c010325b <__alltraps> - -c010307b : -.globl vector216 -vector216: - pushl $0 -c010307b: 6a 00 push $0x0 - pushl $216 -c010307d: 68 d8 00 00 00 push $0xd8 - jmp __alltraps -c0103082: e9 d4 01 00 00 jmp c010325b <__alltraps> - -c0103087 : -.globl vector217 -vector217: - pushl $0 -c0103087: 6a 00 push $0x0 - pushl $217 -c0103089: 68 d9 00 00 00 push $0xd9 - jmp __alltraps -c010308e: e9 c8 01 00 00 jmp c010325b <__alltraps> - -c0103093 : -.globl vector218 -vector218: - pushl $0 -c0103093: 6a 00 push $0x0 - pushl $218 -c0103095: 68 da 00 00 00 push $0xda - jmp __alltraps -c010309a: e9 bc 01 00 00 jmp c010325b <__alltraps> - -c010309f : -.globl vector219 -vector219: - pushl $0 -c010309f: 6a 00 push $0x0 - pushl $219 -c01030a1: 68 db 00 00 00 push $0xdb - jmp __alltraps -c01030a6: e9 b0 01 00 00 jmp c010325b <__alltraps> - -c01030ab : -.globl vector220 -vector220: - pushl $0 -c01030ab: 6a 00 push $0x0 - pushl $220 -c01030ad: 68 dc 00 00 00 push $0xdc - jmp __alltraps -c01030b2: e9 a4 01 00 00 jmp c010325b <__alltraps> - -c01030b7 : -.globl vector221 -vector221: - pushl $0 -c01030b7: 6a 00 push $0x0 - pushl $221 -c01030b9: 68 dd 00 00 00 push $0xdd - jmp __alltraps -c01030be: e9 98 01 00 00 jmp c010325b <__alltraps> - -c01030c3 : -.globl vector222 -vector222: - pushl $0 -c01030c3: 6a 00 push $0x0 - pushl $222 -c01030c5: 68 de 00 00 00 push $0xde - jmp __alltraps -c01030ca: e9 8c 01 00 00 jmp c010325b <__alltraps> - -c01030cf : -.globl vector223 -vector223: - pushl $0 -c01030cf: 6a 00 push $0x0 - pushl $223 -c01030d1: 68 df 00 00 00 push $0xdf - jmp __alltraps -c01030d6: e9 80 01 00 00 jmp c010325b <__alltraps> - -c01030db : -.globl vector224 -vector224: - pushl $0 -c01030db: 6a 00 push $0x0 - pushl $224 -c01030dd: 68 e0 00 00 00 push $0xe0 - jmp __alltraps -c01030e2: e9 74 01 00 00 jmp c010325b <__alltraps> - -c01030e7 : -.globl vector225 -vector225: - pushl $0 -c01030e7: 6a 00 push $0x0 - pushl $225 -c01030e9: 68 e1 00 00 00 push $0xe1 - jmp __alltraps -c01030ee: e9 68 01 00 00 jmp c010325b <__alltraps> - -c01030f3 : -.globl vector226 -vector226: - pushl $0 -c01030f3: 6a 00 push $0x0 - pushl $226 -c01030f5: 68 e2 00 00 00 push $0xe2 - jmp __alltraps -c01030fa: e9 5c 01 00 00 jmp c010325b <__alltraps> - -c01030ff : -.globl vector227 -vector227: - pushl $0 -c01030ff: 6a 00 push $0x0 - pushl $227 -c0103101: 68 e3 00 00 00 push $0xe3 - jmp __alltraps -c0103106: e9 50 01 00 00 jmp c010325b <__alltraps> - -c010310b : -.globl vector228 -vector228: - pushl $0 -c010310b: 6a 00 push $0x0 - pushl $228 -c010310d: 68 e4 00 00 00 push $0xe4 - jmp __alltraps -c0103112: e9 44 01 00 00 jmp c010325b <__alltraps> - -c0103117 : -.globl vector229 -vector229: - pushl $0 -c0103117: 6a 00 push $0x0 - pushl $229 -c0103119: 68 e5 00 00 00 push $0xe5 - jmp __alltraps -c010311e: e9 38 01 00 00 jmp c010325b <__alltraps> - -c0103123 : -.globl vector230 -vector230: - pushl $0 -c0103123: 6a 00 push $0x0 - pushl $230 -c0103125: 68 e6 00 00 00 push $0xe6 - jmp __alltraps -c010312a: e9 2c 01 00 00 jmp c010325b <__alltraps> - -c010312f : -.globl vector231 -vector231: - pushl $0 -c010312f: 6a 00 push $0x0 - pushl $231 -c0103131: 68 e7 00 00 00 push $0xe7 - jmp __alltraps -c0103136: e9 20 01 00 00 jmp c010325b <__alltraps> - -c010313b : -.globl vector232 -vector232: - pushl $0 -c010313b: 6a 00 push $0x0 - pushl $232 -c010313d: 68 e8 00 00 00 push $0xe8 - jmp __alltraps -c0103142: e9 14 01 00 00 jmp c010325b <__alltraps> - -c0103147 : -.globl vector233 -vector233: - pushl $0 -c0103147: 6a 00 push $0x0 - pushl $233 -c0103149: 68 e9 00 00 00 push $0xe9 - jmp __alltraps -c010314e: e9 08 01 00 00 jmp c010325b <__alltraps> - -c0103153 : -.globl vector234 -vector234: - pushl $0 -c0103153: 6a 00 push $0x0 - pushl $234 -c0103155: 68 ea 00 00 00 push $0xea - jmp __alltraps -c010315a: e9 fc 00 00 00 jmp c010325b <__alltraps> - -c010315f : -.globl vector235 -vector235: - pushl $0 -c010315f: 6a 00 push $0x0 - pushl $235 -c0103161: 68 eb 00 00 00 push $0xeb - jmp __alltraps -c0103166: e9 f0 00 00 00 jmp c010325b <__alltraps> - -c010316b : -.globl vector236 -vector236: - pushl $0 -c010316b: 6a 00 push $0x0 - pushl $236 -c010316d: 68 ec 00 00 00 push $0xec - jmp __alltraps -c0103172: e9 e4 00 00 00 jmp c010325b <__alltraps> - -c0103177 : -.globl vector237 -vector237: - pushl $0 -c0103177: 6a 00 push $0x0 - pushl $237 -c0103179: 68 ed 00 00 00 push $0xed - jmp __alltraps -c010317e: e9 d8 00 00 00 jmp c010325b <__alltraps> - -c0103183 : -.globl vector238 -vector238: - pushl $0 -c0103183: 6a 00 push $0x0 - pushl $238 -c0103185: 68 ee 00 00 00 push $0xee - jmp __alltraps -c010318a: e9 cc 00 00 00 jmp c010325b <__alltraps> - -c010318f : -.globl vector239 -vector239: - pushl $0 -c010318f: 6a 00 push $0x0 - pushl $239 -c0103191: 68 ef 00 00 00 push $0xef - jmp __alltraps -c0103196: e9 c0 00 00 00 jmp c010325b <__alltraps> - -c010319b : -.globl vector240 -vector240: - pushl $0 -c010319b: 6a 00 push $0x0 - pushl $240 -c010319d: 68 f0 00 00 00 push $0xf0 - jmp __alltraps -c01031a2: e9 b4 00 00 00 jmp c010325b <__alltraps> - -c01031a7 : -.globl vector241 -vector241: - pushl $0 -c01031a7: 6a 00 push $0x0 - pushl $241 -c01031a9: 68 f1 00 00 00 push $0xf1 - jmp __alltraps -c01031ae: e9 a8 00 00 00 jmp c010325b <__alltraps> - -c01031b3 : -.globl vector242 -vector242: - pushl $0 -c01031b3: 6a 00 push $0x0 - pushl $242 -c01031b5: 68 f2 00 00 00 push $0xf2 - jmp __alltraps -c01031ba: e9 9c 00 00 00 jmp c010325b <__alltraps> - -c01031bf : -.globl vector243 -vector243: - pushl $0 -c01031bf: 6a 00 push $0x0 - pushl $243 -c01031c1: 68 f3 00 00 00 push $0xf3 - jmp __alltraps -c01031c6: e9 90 00 00 00 jmp c010325b <__alltraps> - -c01031cb : -.globl vector244 -vector244: - pushl $0 -c01031cb: 6a 00 push $0x0 - pushl $244 -c01031cd: 68 f4 00 00 00 push $0xf4 - jmp __alltraps -c01031d2: e9 84 00 00 00 jmp c010325b <__alltraps> - -c01031d7 : -.globl vector245 -vector245: - pushl $0 -c01031d7: 6a 00 push $0x0 - pushl $245 -c01031d9: 68 f5 00 00 00 push $0xf5 - jmp __alltraps -c01031de: e9 78 00 00 00 jmp c010325b <__alltraps> - -c01031e3 : -.globl vector246 -vector246: - pushl $0 -c01031e3: 6a 00 push $0x0 - pushl $246 -c01031e5: 68 f6 00 00 00 push $0xf6 - jmp __alltraps -c01031ea: e9 6c 00 00 00 jmp c010325b <__alltraps> - -c01031ef : -.globl vector247 -vector247: - pushl $0 -c01031ef: 6a 00 push $0x0 - pushl $247 -c01031f1: 68 f7 00 00 00 push $0xf7 - jmp __alltraps -c01031f6: e9 60 00 00 00 jmp c010325b <__alltraps> - -c01031fb : -.globl vector248 -vector248: - pushl $0 -c01031fb: 6a 00 push $0x0 - pushl $248 -c01031fd: 68 f8 00 00 00 push $0xf8 - jmp __alltraps -c0103202: e9 54 00 00 00 jmp c010325b <__alltraps> - -c0103207 : -.globl vector249 -vector249: - pushl $0 -c0103207: 6a 00 push $0x0 - pushl $249 -c0103209: 68 f9 00 00 00 push $0xf9 - jmp __alltraps -c010320e: e9 48 00 00 00 jmp c010325b <__alltraps> - -c0103213 : -.globl vector250 -vector250: - pushl $0 -c0103213: 6a 00 push $0x0 - pushl $250 -c0103215: 68 fa 00 00 00 push $0xfa - jmp __alltraps -c010321a: e9 3c 00 00 00 jmp c010325b <__alltraps> - -c010321f : -.globl vector251 -vector251: - pushl $0 -c010321f: 6a 00 push $0x0 - pushl $251 -c0103221: 68 fb 00 00 00 push $0xfb - jmp __alltraps -c0103226: e9 30 00 00 00 jmp c010325b <__alltraps> - -c010322b : -.globl vector252 -vector252: - pushl $0 -c010322b: 6a 00 push $0x0 - pushl $252 -c010322d: 68 fc 00 00 00 push $0xfc - jmp __alltraps -c0103232: e9 24 00 00 00 jmp c010325b <__alltraps> - -c0103237 : -.globl vector253 -vector253: - pushl $0 -c0103237: 6a 00 push $0x0 - pushl $253 -c0103239: 68 fd 00 00 00 push $0xfd - jmp __alltraps -c010323e: e9 18 00 00 00 jmp c010325b <__alltraps> - -c0103243 : -.globl vector254 -vector254: - pushl $0 -c0103243: 6a 00 push $0x0 - pushl $254 -c0103245: 68 fe 00 00 00 push $0xfe - jmp __alltraps -c010324a: e9 0c 00 00 00 jmp c010325b <__alltraps> - -c010324f : -.globl vector255 -vector255: - pushl $0 -c010324f: 6a 00 push $0x0 - pushl $255 -c0103251: 68 ff 00 00 00 push $0xff - jmp __alltraps -c0103256: e9 00 00 00 00 jmp c010325b <__alltraps> - -c010325b <__alltraps>: -.text -.globl __alltraps -__alltraps: - # push registers to build a trap frame - # therefore make the stack look like a struct trapframe - pushl %ds -c010325b: 1e push %ds - pushl %es -c010325c: 06 push %es - pushl %fs -c010325d: 0f a0 push %fs - pushl %gs -c010325f: 0f a8 push %gs - pushal -c0103261: 60 pusha - - # load GD_KDATA into %ds and %es to set up data segments for kernel - movl $GD_KDATA, %eax -c0103262: b8 10 00 00 00 mov $0x10,%eax - movw %ax, %ds -c0103267: 8e d8 mov %eax,%ds - movw %ax, %es -c0103269: 8e c0 mov %eax,%es - - # push %esp to pass a pointer to the trapframe as an argument to trap() - pushl %esp -c010326b: 54 push %esp - - # call trap(tf), where tf=%esp - call trap -c010326c: e8 63 f5 ff ff call c01027d4 - - # pop the pushed stack pointer - popl %esp -c0103271: 5c pop %esp - -c0103272 <__trapret>: - - # return falls through to trapret... -.globl __trapret -__trapret: - # restore registers from stack - popal -c0103272: 61 popa - - # restore %ds, %es, %fs and %gs - popl %gs -c0103273: 0f a9 pop %gs - popl %fs -c0103275: 0f a1 pop %fs - popl %es -c0103277: 07 pop %es - popl %ds -c0103278: 1f pop %ds - - # get rid of the trap number and error code - addl $0x8, %esp -c0103279: 83 c4 08 add $0x8,%esp - iret -c010327c: cf iret - -c010327d : - -.globl forkrets -forkrets: - # set stack to this new process's trapframe - movl 4(%esp), %esp -c010327d: 8b 64 24 04 mov 0x4(%esp),%esp - jmp __trapret -c0103281: eb ef jmp c0103272 <__trapret> - -c0103283 : - -extern struct Page *pages; -extern size_t npage; - -static inline ppn_t -page2ppn(struct Page *page) { -c0103283: 55 push %ebp -c0103284: 89 e5 mov %esp,%ebp - return page - pages; -c0103286: 8b 45 08 mov 0x8(%ebp),%eax -c0103289: 8b 15 20 9b 12 c0 mov 0xc0129b20,%edx -c010328f: 29 d0 sub %edx,%eax -c0103291: c1 f8 05 sar $0x5,%eax -} -c0103294: 5d pop %ebp -c0103295: c3 ret - -c0103296 : - -static inline uintptr_t -page2pa(struct Page *page) { -c0103296: 55 push %ebp -c0103297: 89 e5 mov %esp,%ebp - return page2ppn(page) << PGSHIFT; -c0103299: ff 75 08 pushl 0x8(%ebp) -c010329c: e8 e2 ff ff ff call c0103283 -c01032a1: 83 c4 04 add $0x4,%esp -c01032a4: c1 e0 0c shl $0xc,%eax -} -c01032a7: c9 leave -c01032a8: c3 ret - -c01032a9 : - -static inline struct Page * -pa2page(uintptr_t pa) { -c01032a9: 55 push %ebp -c01032aa: 89 e5 mov %esp,%ebp -c01032ac: 83 ec 08 sub $0x8,%esp - if (PPN(pa) >= npage) { -c01032af: 8b 45 08 mov 0x8(%ebp),%eax -c01032b2: c1 e8 0c shr $0xc,%eax -c01032b5: 89 c2 mov %eax,%edx -c01032b7: a1 40 7a 12 c0 mov 0xc0127a40,%eax -c01032bc: 39 c2 cmp %eax,%edx -c01032be: 72 14 jb c01032d4 - panic("pa2page called with invalid pa"); -c01032c0: 83 ec 04 sub $0x4,%esp -c01032c3: 68 90 a7 10 c0 push $0xc010a790 -c01032c8: 6a 5f push $0x5f -c01032ca: 68 af a7 10 c0 push $0xc010a7af -c01032cf: e8 10 d1 ff ff call c01003e4 <__panic> - } - return &pages[PPN(pa)]; -c01032d4: a1 20 9b 12 c0 mov 0xc0129b20,%eax -c01032d9: 8b 55 08 mov 0x8(%ebp),%edx -c01032dc: c1 ea 0c shr $0xc,%edx -c01032df: c1 e2 05 shl $0x5,%edx -c01032e2: 01 d0 add %edx,%eax -} -c01032e4: c9 leave -c01032e5: c3 ret - -c01032e6 : - -static inline void * -page2kva(struct Page *page) { -c01032e6: 55 push %ebp -c01032e7: 89 e5 mov %esp,%ebp -c01032e9: 83 ec 18 sub $0x18,%esp - return KADDR(page2pa(page)); -c01032ec: ff 75 08 pushl 0x8(%ebp) -c01032ef: e8 a2 ff ff ff call c0103296 -c01032f4: 83 c4 04 add $0x4,%esp -c01032f7: 89 45 f4 mov %eax,-0xc(%ebp) -c01032fa: 8b 45 f4 mov -0xc(%ebp),%eax -c01032fd: c1 e8 0c shr $0xc,%eax -c0103300: 89 45 f0 mov %eax,-0x10(%ebp) -c0103303: a1 40 7a 12 c0 mov 0xc0127a40,%eax -c0103308: 39 45 f0 cmp %eax,-0x10(%ebp) -c010330b: 72 14 jb c0103321 -c010330d: ff 75 f4 pushl -0xc(%ebp) -c0103310: 68 c0 a7 10 c0 push $0xc010a7c0 -c0103315: 6a 66 push $0x66 -c0103317: 68 af a7 10 c0 push $0xc010a7af -c010331c: e8 c3 d0 ff ff call c01003e4 <__panic> -c0103321: 8b 45 f4 mov -0xc(%ebp),%eax -c0103324: 2d 00 00 00 40 sub $0x40000000,%eax -} -c0103329: c9 leave -c010332a: c3 ret - -c010332b : -kva2page(void *kva) { - return pa2page(PADDR(kva)); -} - -static inline struct Page * -pte2page(pte_t pte) { -c010332b: 55 push %ebp -c010332c: 89 e5 mov %esp,%ebp -c010332e: 83 ec 08 sub $0x8,%esp - if (!(pte & PTE_P)) { -c0103331: 8b 45 08 mov 0x8(%ebp),%eax -c0103334: 83 e0 01 and $0x1,%eax -c0103337: 85 c0 test %eax,%eax -c0103339: 75 14 jne c010334f - panic("pte2page called with invalid pte"); -c010333b: 83 ec 04 sub $0x4,%esp -c010333e: 68 e4 a7 10 c0 push $0xc010a7e4 -c0103343: 6a 71 push $0x71 -c0103345: 68 af a7 10 c0 push $0xc010a7af -c010334a: e8 95 d0 ff ff call c01003e4 <__panic> - } - return pa2page(PTE_ADDR(pte)); -c010334f: 8b 45 08 mov 0x8(%ebp),%eax -c0103352: 25 00 f0 ff ff and $0xfffff000,%eax -c0103357: 83 ec 0c sub $0xc,%esp -c010335a: 50 push %eax -c010335b: e8 49 ff ff ff call c01032a9 -c0103360: 83 c4 10 add $0x10,%esp -} -c0103363: c9 leave -c0103364: c3 ret - -c0103365 : - -static inline struct Page * -pde2page(pde_t pde) { -c0103365: 55 push %ebp -c0103366: 89 e5 mov %esp,%ebp -c0103368: 83 ec 08 sub $0x8,%esp - return pa2page(PDE_ADDR(pde)); -c010336b: 8b 45 08 mov 0x8(%ebp),%eax -c010336e: 25 00 f0 ff ff and $0xfffff000,%eax -c0103373: 83 ec 0c sub $0xc,%esp -c0103376: 50 push %eax -c0103377: e8 2d ff ff ff call c01032a9 -c010337c: 83 c4 10 add $0x10,%esp -} -c010337f: c9 leave -c0103380: c3 ret - -c0103381 : - -static inline int -page_ref(struct Page *page) { -c0103381: 55 push %ebp -c0103382: 89 e5 mov %esp,%ebp - return page->ref; -c0103384: 8b 45 08 mov 0x8(%ebp),%eax -c0103387: 8b 00 mov (%eax),%eax -} -c0103389: 5d pop %ebp -c010338a: c3 ret - -c010338b : - -static inline void -set_page_ref(struct Page *page, int val) { -c010338b: 55 push %ebp -c010338c: 89 e5 mov %esp,%ebp - page->ref = val; -c010338e: 8b 45 08 mov 0x8(%ebp),%eax -c0103391: 8b 55 0c mov 0xc(%ebp),%edx -c0103394: 89 10 mov %edx,(%eax) -} -c0103396: 90 nop -c0103397: 5d pop %ebp -c0103398: c3 ret - -c0103399 : - -static inline int -page_ref_inc(struct Page *page) { -c0103399: 55 push %ebp -c010339a: 89 e5 mov %esp,%ebp - page->ref += 1; -c010339c: 8b 45 08 mov 0x8(%ebp),%eax -c010339f: 8b 00 mov (%eax),%eax -c01033a1: 8d 50 01 lea 0x1(%eax),%edx -c01033a4: 8b 45 08 mov 0x8(%ebp),%eax -c01033a7: 89 10 mov %edx,(%eax) - return page->ref; -c01033a9: 8b 45 08 mov 0x8(%ebp),%eax -c01033ac: 8b 00 mov (%eax),%eax -} -c01033ae: 5d pop %ebp -c01033af: c3 ret - -c01033b0 : - -static inline int -page_ref_dec(struct Page *page) { -c01033b0: 55 push %ebp -c01033b1: 89 e5 mov %esp,%ebp - page->ref -= 1; -c01033b3: 8b 45 08 mov 0x8(%ebp),%eax -c01033b6: 8b 00 mov (%eax),%eax -c01033b8: 8d 50 ff lea -0x1(%eax),%edx -c01033bb: 8b 45 08 mov 0x8(%ebp),%eax -c01033be: 89 10 mov %edx,(%eax) - return page->ref; -c01033c0: 8b 45 08 mov 0x8(%ebp),%eax -c01033c3: 8b 00 mov (%eax),%eax -} -c01033c5: 5d pop %ebp -c01033c6: c3 ret - -c01033c7 <__intr_save>: -#include -#include -#include - -static inline bool -__intr_save(void) { -c01033c7: 55 push %ebp -c01033c8: 89 e5 mov %esp,%ebp -c01033ca: 83 ec 18 sub $0x18,%esp -} - -static inline uint32_t -read_eflags(void) { - uint32_t eflags; - asm volatile ("pushfl; popl %0" : "=r" (eflags)); -c01033cd: 9c pushf -c01033ce: 58 pop %eax -c01033cf: 89 45 f4 mov %eax,-0xc(%ebp) - return eflags; -c01033d2: 8b 45 f4 mov -0xc(%ebp),%eax - if (read_eflags() & FL_IF) { -c01033d5: 25 00 02 00 00 and $0x200,%eax -c01033da: 85 c0 test %eax,%eax -c01033dc: 74 0c je c01033ea <__intr_save+0x23> - intr_disable(); -c01033de: e8 c7 ec ff ff call c01020aa - return 1; -c01033e3: b8 01 00 00 00 mov $0x1,%eax -c01033e8: eb 05 jmp c01033ef <__intr_save+0x28> - } - return 0; -c01033ea: b8 00 00 00 00 mov $0x0,%eax -} -c01033ef: c9 leave -c01033f0: c3 ret - -c01033f1 <__intr_restore>: - -static inline void -__intr_restore(bool flag) { -c01033f1: 55 push %ebp -c01033f2: 89 e5 mov %esp,%ebp -c01033f4: 83 ec 08 sub $0x8,%esp - if (flag) { -c01033f7: 83 7d 08 00 cmpl $0x0,0x8(%ebp) -c01033fb: 74 05 je c0103402 <__intr_restore+0x11> - intr_enable(); -c01033fd: e8 a1 ec ff ff call c01020a3 - } -} -c0103402: 90 nop -c0103403: c9 leave -c0103404: c3 ret - -c0103405 : -/* * - * lgdt - load the global descriptor table register and reset the - * data/code segement registers for kernel. - * */ -static inline void -lgdt(struct pseudodesc *pd) { -c0103405: 55 push %ebp -c0103406: 89 e5 mov %esp,%ebp - asm volatile ("lgdt (%0)" :: "r" (pd)); -c0103408: 8b 45 08 mov 0x8(%ebp),%eax -c010340b: 0f 01 10 lgdtl (%eax) - asm volatile ("movw %%ax, %%gs" :: "a" (USER_DS)); -c010340e: b8 23 00 00 00 mov $0x23,%eax -c0103413: 8e e8 mov %eax,%gs - asm volatile ("movw %%ax, %%fs" :: "a" (USER_DS)); -c0103415: b8 23 00 00 00 mov $0x23,%eax -c010341a: 8e e0 mov %eax,%fs - asm volatile ("movw %%ax, %%es" :: "a" (KERNEL_DS)); -c010341c: b8 10 00 00 00 mov $0x10,%eax -c0103421: 8e c0 mov %eax,%es - asm volatile ("movw %%ax, %%ds" :: "a" (KERNEL_DS)); -c0103423: b8 10 00 00 00 mov $0x10,%eax -c0103428: 8e d8 mov %eax,%ds - asm volatile ("movw %%ax, %%ss" :: "a" (KERNEL_DS)); -c010342a: b8 10 00 00 00 mov $0x10,%eax -c010342f: 8e d0 mov %eax,%ss - // reload cs - asm volatile ("ljmp %0, $1f\n 1:\n" :: "i" (KERNEL_CS)); -c0103431: ea 38 34 10 c0 08 00 ljmp $0x8,$0xc0103438 -} -c0103438: 90 nop -c0103439: 5d pop %ebp -c010343a: c3 ret - -c010343b : - * load_esp0 - change the ESP0 in default task state segment, - * so that we can use different kernel stack when we trap frame - * user to kernel. - * */ -void -load_esp0(uintptr_t esp0) { -c010343b: 55 push %ebp -c010343c: 89 e5 mov %esp,%ebp - ts.ts_esp0 = esp0; -c010343e: 8b 45 08 mov 0x8(%ebp),%eax -c0103441: a3 64 7a 12 c0 mov %eax,0xc0127a64 -} -c0103446: 90 nop -c0103447: 5d pop %ebp -c0103448: c3 ret - -c0103449 : - -/* gdt_init - initialize the default GDT and TSS */ -static void -gdt_init(void) { -c0103449: 55 push %ebp -c010344a: 89 e5 mov %esp,%ebp -c010344c: 83 ec 10 sub $0x10,%esp - // set boot kernel stack and default SS0 - load_esp0((uintptr_t)bootstacktop); -c010344f: b8 00 60 12 c0 mov $0xc0126000,%eax -c0103454: 50 push %eax -c0103455: e8 e1 ff ff ff call c010343b -c010345a: 83 c4 04 add $0x4,%esp - ts.ts_ss0 = KERNEL_DS; -c010345d: 66 c7 05 68 7a 12 c0 movw $0x10,0xc0127a68 -c0103464: 10 00 - - // initialize the TSS filed of the gdt - gdt[SEG_TSS] = SEGTSS(STS_T32A, (uintptr_t)&ts, sizeof(ts), DPL_KERNEL); -c0103466: 66 c7 05 28 6a 12 c0 movw $0x68,0xc0126a28 -c010346d: 68 00 -c010346f: b8 60 7a 12 c0 mov $0xc0127a60,%eax -c0103474: 66 a3 2a 6a 12 c0 mov %ax,0xc0126a2a -c010347a: b8 60 7a 12 c0 mov $0xc0127a60,%eax -c010347f: c1 e8 10 shr $0x10,%eax -c0103482: a2 2c 6a 12 c0 mov %al,0xc0126a2c -c0103487: 0f b6 05 2d 6a 12 c0 movzbl 0xc0126a2d,%eax -c010348e: 83 e0 f0 and $0xfffffff0,%eax -c0103491: 83 c8 09 or $0x9,%eax -c0103494: a2 2d 6a 12 c0 mov %al,0xc0126a2d -c0103499: 0f b6 05 2d 6a 12 c0 movzbl 0xc0126a2d,%eax -c01034a0: 83 e0 ef and $0xffffffef,%eax -c01034a3: a2 2d 6a 12 c0 mov %al,0xc0126a2d -c01034a8: 0f b6 05 2d 6a 12 c0 movzbl 0xc0126a2d,%eax -c01034af: 83 e0 9f and $0xffffff9f,%eax -c01034b2: a2 2d 6a 12 c0 mov %al,0xc0126a2d -c01034b7: 0f b6 05 2d 6a 12 c0 movzbl 0xc0126a2d,%eax -c01034be: 83 c8 80 or $0xffffff80,%eax -c01034c1: a2 2d 6a 12 c0 mov %al,0xc0126a2d -c01034c6: 0f b6 05 2e 6a 12 c0 movzbl 0xc0126a2e,%eax -c01034cd: 83 e0 f0 and $0xfffffff0,%eax -c01034d0: a2 2e 6a 12 c0 mov %al,0xc0126a2e -c01034d5: 0f b6 05 2e 6a 12 c0 movzbl 0xc0126a2e,%eax -c01034dc: 83 e0 ef and $0xffffffef,%eax -c01034df: a2 2e 6a 12 c0 mov %al,0xc0126a2e -c01034e4: 0f b6 05 2e 6a 12 c0 movzbl 0xc0126a2e,%eax -c01034eb: 83 e0 df and $0xffffffdf,%eax -c01034ee: a2 2e 6a 12 c0 mov %al,0xc0126a2e -c01034f3: 0f b6 05 2e 6a 12 c0 movzbl 0xc0126a2e,%eax -c01034fa: 83 c8 40 or $0x40,%eax -c01034fd: a2 2e 6a 12 c0 mov %al,0xc0126a2e -c0103502: 0f b6 05 2e 6a 12 c0 movzbl 0xc0126a2e,%eax -c0103509: 83 e0 7f and $0x7f,%eax -c010350c: a2 2e 6a 12 c0 mov %al,0xc0126a2e -c0103511: b8 60 7a 12 c0 mov $0xc0127a60,%eax -c0103516: c1 e8 18 shr $0x18,%eax -c0103519: a2 2f 6a 12 c0 mov %al,0xc0126a2f - - // reload all segment registers - lgdt(&gdt_pd); -c010351e: 68 30 6a 12 c0 push $0xc0126a30 -c0103523: e8 dd fe ff ff call c0103405 -c0103528: 83 c4 04 add $0x4,%esp -c010352b: 66 c7 45 fe 28 00 movw $0x28,-0x2(%ebp) - asm volatile ("cli" ::: "memory"); -} - -static inline void -ltr(uint16_t sel) { - asm volatile ("ltr %0" :: "r" (sel) : "memory"); -c0103531: 0f b7 45 fe movzwl -0x2(%ebp),%eax -c0103535: 0f 00 d8 ltr %ax - - // load the TSS - ltr(GD_TSS); -} -c0103538: 90 nop -c0103539: c9 leave -c010353a: c3 ret - -c010353b : - -//init_pmm_manager - initialize a pmm_manager instance -static void -init_pmm_manager(void) { -c010353b: 55 push %ebp -c010353c: 89 e5 mov %esp,%ebp -c010353e: 83 ec 08 sub $0x8,%esp - pmm_manager = &default_pmm_manager; -c0103541: c7 05 18 9b 12 c0 e4 movl $0xc010bce4,0xc0129b18 -c0103548: bc 10 c0 - cprintf("memory management: %s\n", pmm_manager->name); -c010354b: a1 18 9b 12 c0 mov 0xc0129b18,%eax -c0103550: 8b 00 mov (%eax),%eax -c0103552: 83 ec 08 sub $0x8,%esp -c0103555: 50 push %eax -c0103556: 68 10 a8 10 c0 push $0xc010a810 -c010355b: e8 1e cd ff ff call c010027e -c0103560: 83 c4 10 add $0x10,%esp - pmm_manager->init(); -c0103563: a1 18 9b 12 c0 mov 0xc0129b18,%eax -c0103568: 8b 40 04 mov 0x4(%eax),%eax -c010356b: ff d0 call *%eax -} -c010356d: 90 nop -c010356e: c9 leave -c010356f: c3 ret - -c0103570 : - -//init_memmap - call pmm->init_memmap to build Page struct for free memory -static void -init_memmap(struct Page *base, size_t n) { -c0103570: 55 push %ebp -c0103571: 89 e5 mov %esp,%ebp -c0103573: 83 ec 08 sub $0x8,%esp - pmm_manager->init_memmap(base, n); -c0103576: a1 18 9b 12 c0 mov 0xc0129b18,%eax -c010357b: 8b 40 08 mov 0x8(%eax),%eax -c010357e: 83 ec 08 sub $0x8,%esp -c0103581: ff 75 0c pushl 0xc(%ebp) -c0103584: ff 75 08 pushl 0x8(%ebp) -c0103587: ff d0 call *%eax -c0103589: 83 c4 10 add $0x10,%esp -} -c010358c: 90 nop -c010358d: c9 leave -c010358e: c3 ret - -c010358f : - -//alloc_pages - call pmm->alloc_pages to allocate a continuous n*PAGESIZE memory -struct Page * -alloc_pages(size_t n) { -c010358f: 55 push %ebp -c0103590: 89 e5 mov %esp,%ebp -c0103592: 83 ec 18 sub $0x18,%esp - struct Page *page=NULL; -c0103595: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - bool intr_flag; - - while (1) - { - local_intr_save(intr_flag); -c010359c: e8 26 fe ff ff call c01033c7 <__intr_save> -c01035a1: 89 45 f0 mov %eax,-0x10(%ebp) - { - page = pmm_manager->alloc_pages(n); -c01035a4: a1 18 9b 12 c0 mov 0xc0129b18,%eax -c01035a9: 8b 40 0c mov 0xc(%eax),%eax -c01035ac: 83 ec 0c sub $0xc,%esp -c01035af: ff 75 08 pushl 0x8(%ebp) -c01035b2: ff d0 call *%eax -c01035b4: 83 c4 10 add $0x10,%esp -c01035b7: 89 45 f4 mov %eax,-0xc(%ebp) - } - local_intr_restore(intr_flag); -c01035ba: 83 ec 0c sub $0xc,%esp -c01035bd: ff 75 f0 pushl -0x10(%ebp) -c01035c0: e8 2c fe ff ff call c01033f1 <__intr_restore> -c01035c5: 83 c4 10 add $0x10,%esp - - if (page != NULL || n > 1 || swap_init_ok == 0) break; -c01035c8: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c01035cc: 75 28 jne c01035f6 -c01035ce: 83 7d 08 01 cmpl $0x1,0x8(%ebp) -c01035d2: 77 22 ja c01035f6 -c01035d4: a1 d0 7a 12 c0 mov 0xc0127ad0,%eax -c01035d9: 85 c0 test %eax,%eax -c01035db: 74 19 je c01035f6 - - extern struct mm_struct *check_mm_struct; - //cprintf("page %x, call swap_out in alloc_pages %d\n",page, n); - swap_out(check_mm_struct, n, 0); -c01035dd: 8b 55 08 mov 0x8(%ebp),%edx -c01035e0: a1 24 9b 12 c0 mov 0xc0129b24,%eax -c01035e5: 83 ec 04 sub $0x4,%esp -c01035e8: 6a 00 push $0x0 -c01035ea: 52 push %edx -c01035eb: 50 push %eax -c01035ec: e8 92 22 00 00 call c0105883 -c01035f1: 83 c4 10 add $0x10,%esp - } -c01035f4: eb a6 jmp c010359c - //cprintf("n %d,get page %x, No %d in alloc_pages\n",n,page,(page-pages)); - return page; -c01035f6: 8b 45 f4 mov -0xc(%ebp),%eax -} -c01035f9: c9 leave -c01035fa: c3 ret - -c01035fb : - -//free_pages - call pmm->free_pages to free a continuous n*PAGESIZE memory -void -free_pages(struct Page *base, size_t n) { -c01035fb: 55 push %ebp -c01035fc: 89 e5 mov %esp,%ebp -c01035fe: 83 ec 18 sub $0x18,%esp - bool intr_flag; - local_intr_save(intr_flag); -c0103601: e8 c1 fd ff ff call c01033c7 <__intr_save> -c0103606: 89 45 f4 mov %eax,-0xc(%ebp) - { - pmm_manager->free_pages(base, n); -c0103609: a1 18 9b 12 c0 mov 0xc0129b18,%eax -c010360e: 8b 40 10 mov 0x10(%eax),%eax -c0103611: 83 ec 08 sub $0x8,%esp -c0103614: ff 75 0c pushl 0xc(%ebp) -c0103617: ff 75 08 pushl 0x8(%ebp) -c010361a: ff d0 call *%eax -c010361c: 83 c4 10 add $0x10,%esp - } - local_intr_restore(intr_flag); -c010361f: 83 ec 0c sub $0xc,%esp -c0103622: ff 75 f4 pushl -0xc(%ebp) -c0103625: e8 c7 fd ff ff call c01033f1 <__intr_restore> -c010362a: 83 c4 10 add $0x10,%esp -} -c010362d: 90 nop -c010362e: c9 leave -c010362f: c3 ret - -c0103630 : - -//nr_free_pages - call pmm->nr_free_pages to get the size (nr*PAGESIZE) -//of current free memory -size_t -nr_free_pages(void) { -c0103630: 55 push %ebp -c0103631: 89 e5 mov %esp,%ebp -c0103633: 83 ec 18 sub $0x18,%esp - size_t ret; - bool intr_flag; - local_intr_save(intr_flag); -c0103636: e8 8c fd ff ff call c01033c7 <__intr_save> -c010363b: 89 45 f4 mov %eax,-0xc(%ebp) - { - ret = pmm_manager->nr_free_pages(); -c010363e: a1 18 9b 12 c0 mov 0xc0129b18,%eax -c0103643: 8b 40 14 mov 0x14(%eax),%eax -c0103646: ff d0 call *%eax -c0103648: 89 45 f0 mov %eax,-0x10(%ebp) - } - local_intr_restore(intr_flag); -c010364b: 83 ec 0c sub $0xc,%esp -c010364e: ff 75 f4 pushl -0xc(%ebp) -c0103651: e8 9b fd ff ff call c01033f1 <__intr_restore> -c0103656: 83 c4 10 add $0x10,%esp - return ret; -c0103659: 8b 45 f0 mov -0x10(%ebp),%eax -} -c010365c: c9 leave -c010365d: c3 ret - -c010365e : - -/* pmm_init - initialize the physical memory management */ -static void -page_init(void) { -c010365e: 55 push %ebp -c010365f: 89 e5 mov %esp,%ebp -c0103661: 57 push %edi -c0103662: 56 push %esi -c0103663: 53 push %ebx -c0103664: 83 ec 7c sub $0x7c,%esp - struct e820map *memmap = (struct e820map *)(0x8000 + KERNBASE); -c0103667: c7 45 c4 00 80 00 c0 movl $0xc0008000,-0x3c(%ebp) - uint64_t maxpa = 0; -c010366e: c7 45 e0 00 00 00 00 movl $0x0,-0x20(%ebp) -c0103675: c7 45 e4 00 00 00 00 movl $0x0,-0x1c(%ebp) - - cprintf("e820map:\n"); -c010367c: 83 ec 0c sub $0xc,%esp -c010367f: 68 27 a8 10 c0 push $0xc010a827 -c0103684: e8 f5 cb ff ff call c010027e -c0103689: 83 c4 10 add $0x10,%esp - int i; - for (i = 0; i < memmap->nr_map; i ++) { -c010368c: c7 45 dc 00 00 00 00 movl $0x0,-0x24(%ebp) -c0103693: e9 fc 00 00 00 jmp c0103794 - uint64_t begin = memmap->map[i].addr, end = begin + memmap->map[i].size; -c0103698: 8b 4d c4 mov -0x3c(%ebp),%ecx -c010369b: 8b 55 dc mov -0x24(%ebp),%edx -c010369e: 89 d0 mov %edx,%eax -c01036a0: c1 e0 02 shl $0x2,%eax -c01036a3: 01 d0 add %edx,%eax -c01036a5: c1 e0 02 shl $0x2,%eax -c01036a8: 01 c8 add %ecx,%eax -c01036aa: 8b 50 08 mov 0x8(%eax),%edx -c01036ad: 8b 40 04 mov 0x4(%eax),%eax -c01036b0: 89 45 b8 mov %eax,-0x48(%ebp) -c01036b3: 89 55 bc mov %edx,-0x44(%ebp) -c01036b6: 8b 4d c4 mov -0x3c(%ebp),%ecx -c01036b9: 8b 55 dc mov -0x24(%ebp),%edx -c01036bc: 89 d0 mov %edx,%eax -c01036be: c1 e0 02 shl $0x2,%eax -c01036c1: 01 d0 add %edx,%eax -c01036c3: c1 e0 02 shl $0x2,%eax -c01036c6: 01 c8 add %ecx,%eax -c01036c8: 8b 48 0c mov 0xc(%eax),%ecx -c01036cb: 8b 58 10 mov 0x10(%eax),%ebx -c01036ce: 8b 45 b8 mov -0x48(%ebp),%eax -c01036d1: 8b 55 bc mov -0x44(%ebp),%edx -c01036d4: 01 c8 add %ecx,%eax -c01036d6: 11 da adc %ebx,%edx -c01036d8: 89 45 b0 mov %eax,-0x50(%ebp) -c01036db: 89 55 b4 mov %edx,-0x4c(%ebp) - cprintf(" memory: %08llx, [%08llx, %08llx], type = %d.\n", -c01036de: 8b 4d c4 mov -0x3c(%ebp),%ecx -c01036e1: 8b 55 dc mov -0x24(%ebp),%edx -c01036e4: 89 d0 mov %edx,%eax -c01036e6: c1 e0 02 shl $0x2,%eax -c01036e9: 01 d0 add %edx,%eax -c01036eb: c1 e0 02 shl $0x2,%eax -c01036ee: 01 c8 add %ecx,%eax -c01036f0: 83 c0 14 add $0x14,%eax -c01036f3: 8b 00 mov (%eax),%eax -c01036f5: 89 45 84 mov %eax,-0x7c(%ebp) -c01036f8: 8b 45 b0 mov -0x50(%ebp),%eax -c01036fb: 8b 55 b4 mov -0x4c(%ebp),%edx -c01036fe: 83 c0 ff add $0xffffffff,%eax -c0103701: 83 d2 ff adc $0xffffffff,%edx -c0103704: 89 c1 mov %eax,%ecx -c0103706: 89 d3 mov %edx,%ebx -c0103708: 8b 55 c4 mov -0x3c(%ebp),%edx -c010370b: 89 55 80 mov %edx,-0x80(%ebp) -c010370e: 8b 55 dc mov -0x24(%ebp),%edx -c0103711: 89 d0 mov %edx,%eax -c0103713: c1 e0 02 shl $0x2,%eax -c0103716: 01 d0 add %edx,%eax -c0103718: c1 e0 02 shl $0x2,%eax -c010371b: 03 45 80 add -0x80(%ebp),%eax -c010371e: 8b 50 10 mov 0x10(%eax),%edx -c0103721: 8b 40 0c mov 0xc(%eax),%eax -c0103724: ff 75 84 pushl -0x7c(%ebp) -c0103727: 53 push %ebx -c0103728: 51 push %ecx -c0103729: ff 75 bc pushl -0x44(%ebp) -c010372c: ff 75 b8 pushl -0x48(%ebp) -c010372f: 52 push %edx -c0103730: 50 push %eax -c0103731: 68 34 a8 10 c0 push $0xc010a834 -c0103736: e8 43 cb ff ff call c010027e -c010373b: 83 c4 20 add $0x20,%esp - memmap->map[i].size, begin, end - 1, memmap->map[i].type); - if (memmap->map[i].type == E820_ARM) { -c010373e: 8b 4d c4 mov -0x3c(%ebp),%ecx -c0103741: 8b 55 dc mov -0x24(%ebp),%edx -c0103744: 89 d0 mov %edx,%eax -c0103746: c1 e0 02 shl $0x2,%eax -c0103749: 01 d0 add %edx,%eax -c010374b: c1 e0 02 shl $0x2,%eax -c010374e: 01 c8 add %ecx,%eax -c0103750: 83 c0 14 add $0x14,%eax -c0103753: 8b 00 mov (%eax),%eax -c0103755: 83 f8 01 cmp $0x1,%eax -c0103758: 75 36 jne c0103790 - if (maxpa < end && begin < KMEMSIZE) { -c010375a: 8b 45 e0 mov -0x20(%ebp),%eax -c010375d: 8b 55 e4 mov -0x1c(%ebp),%edx -c0103760: 3b 55 b4 cmp -0x4c(%ebp),%edx -c0103763: 77 2b ja c0103790 -c0103765: 3b 55 b4 cmp -0x4c(%ebp),%edx -c0103768: 72 05 jb c010376f -c010376a: 3b 45 b0 cmp -0x50(%ebp),%eax -c010376d: 73 21 jae c0103790 -c010376f: 83 7d bc 00 cmpl $0x0,-0x44(%ebp) -c0103773: 77 1b ja c0103790 -c0103775: 83 7d bc 00 cmpl $0x0,-0x44(%ebp) -c0103779: 72 09 jb c0103784 -c010377b: 81 7d b8 ff ff ff 37 cmpl $0x37ffffff,-0x48(%ebp) -c0103782: 77 0c ja c0103790 - maxpa = end; -c0103784: 8b 45 b0 mov -0x50(%ebp),%eax -c0103787: 8b 55 b4 mov -0x4c(%ebp),%edx -c010378a: 89 45 e0 mov %eax,-0x20(%ebp) -c010378d: 89 55 e4 mov %edx,-0x1c(%ebp) - struct e820map *memmap = (struct e820map *)(0x8000 + KERNBASE); - uint64_t maxpa = 0; - - cprintf("e820map:\n"); - int i; - for (i = 0; i < memmap->nr_map; i ++) { -c0103790: 83 45 dc 01 addl $0x1,-0x24(%ebp) -c0103794: 8b 45 c4 mov -0x3c(%ebp),%eax -c0103797: 8b 00 mov (%eax),%eax -c0103799: 3b 45 dc cmp -0x24(%ebp),%eax -c010379c: 0f 8f f6 fe ff ff jg c0103698 - if (maxpa < end && begin < KMEMSIZE) { - maxpa = end; - } - } - } - if (maxpa > KMEMSIZE) { -c01037a2: 83 7d e4 00 cmpl $0x0,-0x1c(%ebp) -c01037a6: 72 1d jb c01037c5 -c01037a8: 83 7d e4 00 cmpl $0x0,-0x1c(%ebp) -c01037ac: 77 09 ja c01037b7 -c01037ae: 81 7d e0 00 00 00 38 cmpl $0x38000000,-0x20(%ebp) -c01037b5: 76 0e jbe c01037c5 - maxpa = KMEMSIZE; -c01037b7: c7 45 e0 00 00 00 38 movl $0x38000000,-0x20(%ebp) -c01037be: c7 45 e4 00 00 00 00 movl $0x0,-0x1c(%ebp) - } - - extern char end[]; - - npage = maxpa / PGSIZE; -c01037c5: 8b 45 e0 mov -0x20(%ebp),%eax -c01037c8: 8b 55 e4 mov -0x1c(%ebp),%edx -c01037cb: 0f ac d0 0c shrd $0xc,%edx,%eax -c01037cf: c1 ea 0c shr $0xc,%edx -c01037d2: a3 40 7a 12 c0 mov %eax,0xc0127a40 - pages = (struct Page *)ROUNDUP((void *)end, PGSIZE); -c01037d7: c7 45 ac 00 10 00 00 movl $0x1000,-0x54(%ebp) -c01037de: b8 2c 9c 12 c0 mov $0xc0129c2c,%eax -c01037e3: 8d 50 ff lea -0x1(%eax),%edx -c01037e6: 8b 45 ac mov -0x54(%ebp),%eax -c01037e9: 01 d0 add %edx,%eax -c01037eb: 89 45 a8 mov %eax,-0x58(%ebp) -c01037ee: 8b 45 a8 mov -0x58(%ebp),%eax -c01037f1: ba 00 00 00 00 mov $0x0,%edx -c01037f6: f7 75 ac divl -0x54(%ebp) -c01037f9: 8b 45 a8 mov -0x58(%ebp),%eax -c01037fc: 29 d0 sub %edx,%eax -c01037fe: a3 20 9b 12 c0 mov %eax,0xc0129b20 - - for (i = 0; i < npage; i ++) { -c0103803: c7 45 dc 00 00 00 00 movl $0x0,-0x24(%ebp) -c010380a: eb 27 jmp c0103833 - SetPageReserved(pages + i); -c010380c: a1 20 9b 12 c0 mov 0xc0129b20,%eax -c0103811: 8b 55 dc mov -0x24(%ebp),%edx -c0103814: c1 e2 05 shl $0x5,%edx -c0103817: 01 d0 add %edx,%eax -c0103819: 83 c0 04 add $0x4,%eax -c010381c: c7 45 90 00 00 00 00 movl $0x0,-0x70(%ebp) -c0103823: 89 45 8c mov %eax,-0x74(%ebp) - * Note that @nr may be almost arbitrarily large; this function is not - * restricted to acting on a single-word quantity. - * */ -static inline void -set_bit(int nr, volatile void *addr) { - asm volatile ("btsl %1, %0" :"=m" (*(volatile long *)addr) : "Ir" (nr)); -c0103826: 8b 45 8c mov -0x74(%ebp),%eax -c0103829: 8b 55 90 mov -0x70(%ebp),%edx -c010382c: 0f ab 10 bts %edx,(%eax) - extern char end[]; - - npage = maxpa / PGSIZE; - pages = (struct Page *)ROUNDUP((void *)end, PGSIZE); - - for (i = 0; i < npage; i ++) { -c010382f: 83 45 dc 01 addl $0x1,-0x24(%ebp) -c0103833: 8b 55 dc mov -0x24(%ebp),%edx -c0103836: a1 40 7a 12 c0 mov 0xc0127a40,%eax -c010383b: 39 c2 cmp %eax,%edx -c010383d: 72 cd jb c010380c - SetPageReserved(pages + i); - } - - uintptr_t freemem = PADDR((uintptr_t)pages + sizeof(struct Page) * npage); -c010383f: a1 40 7a 12 c0 mov 0xc0127a40,%eax -c0103844: c1 e0 05 shl $0x5,%eax -c0103847: 89 c2 mov %eax,%edx -c0103849: a1 20 9b 12 c0 mov 0xc0129b20,%eax -c010384e: 01 d0 add %edx,%eax -c0103850: 89 45 a4 mov %eax,-0x5c(%ebp) -c0103853: 81 7d a4 ff ff ff bf cmpl $0xbfffffff,-0x5c(%ebp) -c010385a: 77 17 ja c0103873 -c010385c: ff 75 a4 pushl -0x5c(%ebp) -c010385f: 68 64 a8 10 c0 push $0xc010a864 -c0103864: 68 e9 00 00 00 push $0xe9 -c0103869: 68 88 a8 10 c0 push $0xc010a888 -c010386e: e8 71 cb ff ff call c01003e4 <__panic> -c0103873: 8b 45 a4 mov -0x5c(%ebp),%eax -c0103876: 05 00 00 00 40 add $0x40000000,%eax -c010387b: 89 45 a0 mov %eax,-0x60(%ebp) - - for (i = 0; i < memmap->nr_map; i ++) { -c010387e: c7 45 dc 00 00 00 00 movl $0x0,-0x24(%ebp) -c0103885: e9 69 01 00 00 jmp c01039f3 - uint64_t begin = memmap->map[i].addr, end = begin + memmap->map[i].size; -c010388a: 8b 4d c4 mov -0x3c(%ebp),%ecx -c010388d: 8b 55 dc mov -0x24(%ebp),%edx -c0103890: 89 d0 mov %edx,%eax -c0103892: c1 e0 02 shl $0x2,%eax -c0103895: 01 d0 add %edx,%eax -c0103897: c1 e0 02 shl $0x2,%eax -c010389a: 01 c8 add %ecx,%eax -c010389c: 8b 50 08 mov 0x8(%eax),%edx -c010389f: 8b 40 04 mov 0x4(%eax),%eax -c01038a2: 89 45 d0 mov %eax,-0x30(%ebp) -c01038a5: 89 55 d4 mov %edx,-0x2c(%ebp) -c01038a8: 8b 4d c4 mov -0x3c(%ebp),%ecx -c01038ab: 8b 55 dc mov -0x24(%ebp),%edx -c01038ae: 89 d0 mov %edx,%eax -c01038b0: c1 e0 02 shl $0x2,%eax -c01038b3: 01 d0 add %edx,%eax -c01038b5: c1 e0 02 shl $0x2,%eax -c01038b8: 01 c8 add %ecx,%eax -c01038ba: 8b 48 0c mov 0xc(%eax),%ecx -c01038bd: 8b 58 10 mov 0x10(%eax),%ebx -c01038c0: 8b 45 d0 mov -0x30(%ebp),%eax -c01038c3: 8b 55 d4 mov -0x2c(%ebp),%edx -c01038c6: 01 c8 add %ecx,%eax -c01038c8: 11 da adc %ebx,%edx -c01038ca: 89 45 c8 mov %eax,-0x38(%ebp) -c01038cd: 89 55 cc mov %edx,-0x34(%ebp) - if (memmap->map[i].type == E820_ARM) { -c01038d0: 8b 4d c4 mov -0x3c(%ebp),%ecx -c01038d3: 8b 55 dc mov -0x24(%ebp),%edx -c01038d6: 89 d0 mov %edx,%eax -c01038d8: c1 e0 02 shl $0x2,%eax -c01038db: 01 d0 add %edx,%eax -c01038dd: c1 e0 02 shl $0x2,%eax -c01038e0: 01 c8 add %ecx,%eax -c01038e2: 83 c0 14 add $0x14,%eax -c01038e5: 8b 00 mov (%eax),%eax -c01038e7: 83 f8 01 cmp $0x1,%eax -c01038ea: 0f 85 ff 00 00 00 jne c01039ef - if (begin < freemem) { -c01038f0: 8b 45 a0 mov -0x60(%ebp),%eax -c01038f3: ba 00 00 00 00 mov $0x0,%edx -c01038f8: 3b 55 d4 cmp -0x2c(%ebp),%edx -c01038fb: 72 17 jb c0103914 -c01038fd: 3b 55 d4 cmp -0x2c(%ebp),%edx -c0103900: 77 05 ja c0103907 -c0103902: 3b 45 d0 cmp -0x30(%ebp),%eax -c0103905: 76 0d jbe c0103914 - begin = freemem; -c0103907: 8b 45 a0 mov -0x60(%ebp),%eax -c010390a: 89 45 d0 mov %eax,-0x30(%ebp) -c010390d: c7 45 d4 00 00 00 00 movl $0x0,-0x2c(%ebp) - } - if (end > KMEMSIZE) { -c0103914: 83 7d cc 00 cmpl $0x0,-0x34(%ebp) -c0103918: 72 1d jb c0103937 -c010391a: 83 7d cc 00 cmpl $0x0,-0x34(%ebp) -c010391e: 77 09 ja c0103929 -c0103920: 81 7d c8 00 00 00 38 cmpl $0x38000000,-0x38(%ebp) -c0103927: 76 0e jbe c0103937 - end = KMEMSIZE; -c0103929: c7 45 c8 00 00 00 38 movl $0x38000000,-0x38(%ebp) -c0103930: c7 45 cc 00 00 00 00 movl $0x0,-0x34(%ebp) - } - if (begin < end) { -c0103937: 8b 45 d0 mov -0x30(%ebp),%eax -c010393a: 8b 55 d4 mov -0x2c(%ebp),%edx -c010393d: 3b 55 cc cmp -0x34(%ebp),%edx -c0103940: 0f 87 a9 00 00 00 ja c01039ef -c0103946: 3b 55 cc cmp -0x34(%ebp),%edx -c0103949: 72 09 jb c0103954 -c010394b: 3b 45 c8 cmp -0x38(%ebp),%eax -c010394e: 0f 83 9b 00 00 00 jae c01039ef - begin = ROUNDUP(begin, PGSIZE); -c0103954: c7 45 9c 00 10 00 00 movl $0x1000,-0x64(%ebp) -c010395b: 8b 55 d0 mov -0x30(%ebp),%edx -c010395e: 8b 45 9c mov -0x64(%ebp),%eax -c0103961: 01 d0 add %edx,%eax -c0103963: 83 e8 01 sub $0x1,%eax -c0103966: 89 45 98 mov %eax,-0x68(%ebp) -c0103969: 8b 45 98 mov -0x68(%ebp),%eax -c010396c: ba 00 00 00 00 mov $0x0,%edx -c0103971: f7 75 9c divl -0x64(%ebp) -c0103974: 8b 45 98 mov -0x68(%ebp),%eax -c0103977: 29 d0 sub %edx,%eax -c0103979: ba 00 00 00 00 mov $0x0,%edx -c010397e: 89 45 d0 mov %eax,-0x30(%ebp) -c0103981: 89 55 d4 mov %edx,-0x2c(%ebp) - end = ROUNDDOWN(end, PGSIZE); -c0103984: 8b 45 c8 mov -0x38(%ebp),%eax -c0103987: 89 45 94 mov %eax,-0x6c(%ebp) -c010398a: 8b 45 94 mov -0x6c(%ebp),%eax -c010398d: ba 00 00 00 00 mov $0x0,%edx -c0103992: 89 c3 mov %eax,%ebx -c0103994: 81 e3 00 f0 ff ff and $0xfffff000,%ebx -c010399a: 89 de mov %ebx,%esi -c010399c: 89 d0 mov %edx,%eax -c010399e: 83 e0 00 and $0x0,%eax -c01039a1: 89 c7 mov %eax,%edi -c01039a3: 89 75 c8 mov %esi,-0x38(%ebp) -c01039a6: 89 7d cc mov %edi,-0x34(%ebp) - if (begin < end) { -c01039a9: 8b 45 d0 mov -0x30(%ebp),%eax -c01039ac: 8b 55 d4 mov -0x2c(%ebp),%edx -c01039af: 3b 55 cc cmp -0x34(%ebp),%edx -c01039b2: 77 3b ja c01039ef -c01039b4: 3b 55 cc cmp -0x34(%ebp),%edx -c01039b7: 72 05 jb c01039be -c01039b9: 3b 45 c8 cmp -0x38(%ebp),%eax -c01039bc: 73 31 jae c01039ef - init_memmap(pa2page(begin), (end - begin) / PGSIZE); -c01039be: 8b 45 c8 mov -0x38(%ebp),%eax -c01039c1: 8b 55 cc mov -0x34(%ebp),%edx -c01039c4: 2b 45 d0 sub -0x30(%ebp),%eax -c01039c7: 1b 55 d4 sbb -0x2c(%ebp),%edx -c01039ca: 0f ac d0 0c shrd $0xc,%edx,%eax -c01039ce: c1 ea 0c shr $0xc,%edx -c01039d1: 89 c3 mov %eax,%ebx -c01039d3: 8b 45 d0 mov -0x30(%ebp),%eax -c01039d6: 83 ec 0c sub $0xc,%esp -c01039d9: 50 push %eax -c01039da: e8 ca f8 ff ff call c01032a9 -c01039df: 83 c4 10 add $0x10,%esp -c01039e2: 83 ec 08 sub $0x8,%esp -c01039e5: 53 push %ebx -c01039e6: 50 push %eax -c01039e7: e8 84 fb ff ff call c0103570 -c01039ec: 83 c4 10 add $0x10,%esp - SetPageReserved(pages + i); - } - - uintptr_t freemem = PADDR((uintptr_t)pages + sizeof(struct Page) * npage); - - for (i = 0; i < memmap->nr_map; i ++) { -c01039ef: 83 45 dc 01 addl $0x1,-0x24(%ebp) -c01039f3: 8b 45 c4 mov -0x3c(%ebp),%eax -c01039f6: 8b 00 mov (%eax),%eax -c01039f8: 3b 45 dc cmp -0x24(%ebp),%eax -c01039fb: 0f 8f 89 fe ff ff jg c010388a - init_memmap(pa2page(begin), (end - begin) / PGSIZE); - } - } - } - } -} -c0103a01: 90 nop -c0103a02: 8d 65 f4 lea -0xc(%ebp),%esp -c0103a05: 5b pop %ebx -c0103a06: 5e pop %esi -c0103a07: 5f pop %edi -c0103a08: 5d pop %ebp -c0103a09: c3 ret - -c0103a0a : - -static void -enable_paging(void) { -c0103a0a: 55 push %ebp -c0103a0b: 89 e5 mov %esp,%ebp -c0103a0d: 83 ec 10 sub $0x10,%esp - lcr3(boot_cr3); -c0103a10: a1 1c 9b 12 c0 mov 0xc0129b1c,%eax -c0103a15: 89 45 fc mov %eax,-0x4(%ebp) - asm volatile ("mov %0, %%cr0" :: "r" (cr0) : "memory"); -} - -static inline void -lcr3(uintptr_t cr3) { - asm volatile ("mov %0, %%cr3" :: "r" (cr3) : "memory"); -c0103a18: 8b 45 fc mov -0x4(%ebp),%eax -c0103a1b: 0f 22 d8 mov %eax,%cr3 -} - -static inline uintptr_t -rcr0(void) { - uintptr_t cr0; - asm volatile ("mov %%cr0, %0" : "=r" (cr0) :: "memory"); -c0103a1e: 0f 20 c0 mov %cr0,%eax -c0103a21: 89 45 f4 mov %eax,-0xc(%ebp) - return cr0; -c0103a24: 8b 45 f4 mov -0xc(%ebp),%eax - - // turn on paging - uint32_t cr0 = rcr0(); -c0103a27: 89 45 f8 mov %eax,-0x8(%ebp) - cr0 |= CR0_PE | CR0_PG | CR0_AM | CR0_WP | CR0_NE | CR0_TS | CR0_EM | CR0_MP; -c0103a2a: 81 4d f8 2f 00 05 80 orl $0x8005002f,-0x8(%ebp) - cr0 &= ~(CR0_TS | CR0_EM); -c0103a31: 83 65 f8 f3 andl $0xfffffff3,-0x8(%ebp) -c0103a35: 8b 45 f8 mov -0x8(%ebp),%eax -c0103a38: 89 45 f0 mov %eax,-0x10(%ebp) - asm volatile ("pushl %0; popfl" :: "r" (eflags)); -} - -static inline void -lcr0(uintptr_t cr0) { - asm volatile ("mov %0, %%cr0" :: "r" (cr0) : "memory"); -c0103a3b: 8b 45 f0 mov -0x10(%ebp),%eax -c0103a3e: 0f 22 c0 mov %eax,%cr0 - lcr0(cr0); -} -c0103a41: 90 nop -c0103a42: c9 leave -c0103a43: c3 ret - -c0103a44 : -// la: linear address of this memory need to map (after x86 segment map) -// size: memory size -// pa: physical address of this memory -// perm: permission of this memory -static void -boot_map_segment(pde_t *pgdir, uintptr_t la, size_t size, uintptr_t pa, uint32_t perm) { -c0103a44: 55 push %ebp -c0103a45: 89 e5 mov %esp,%ebp -c0103a47: 83 ec 28 sub $0x28,%esp - assert(PGOFF(la) == PGOFF(pa)); -c0103a4a: 8b 45 0c mov 0xc(%ebp),%eax -c0103a4d: 33 45 14 xor 0x14(%ebp),%eax -c0103a50: 25 ff 0f 00 00 and $0xfff,%eax -c0103a55: 85 c0 test %eax,%eax -c0103a57: 74 19 je c0103a72 -c0103a59: 68 96 a8 10 c0 push $0xc010a896 -c0103a5e: 68 ad a8 10 c0 push $0xc010a8ad -c0103a63: 68 12 01 00 00 push $0x112 -c0103a68: 68 88 a8 10 c0 push $0xc010a888 -c0103a6d: e8 72 c9 ff ff call c01003e4 <__panic> - size_t n = ROUNDUP(size + PGOFF(la), PGSIZE) / PGSIZE; -c0103a72: c7 45 f0 00 10 00 00 movl $0x1000,-0x10(%ebp) -c0103a79: 8b 45 0c mov 0xc(%ebp),%eax -c0103a7c: 25 ff 0f 00 00 and $0xfff,%eax -c0103a81: 89 c2 mov %eax,%edx -c0103a83: 8b 45 10 mov 0x10(%ebp),%eax -c0103a86: 01 c2 add %eax,%edx -c0103a88: 8b 45 f0 mov -0x10(%ebp),%eax -c0103a8b: 01 d0 add %edx,%eax -c0103a8d: 83 e8 01 sub $0x1,%eax -c0103a90: 89 45 ec mov %eax,-0x14(%ebp) -c0103a93: 8b 45 ec mov -0x14(%ebp),%eax -c0103a96: ba 00 00 00 00 mov $0x0,%edx -c0103a9b: f7 75 f0 divl -0x10(%ebp) -c0103a9e: 8b 45 ec mov -0x14(%ebp),%eax -c0103aa1: 29 d0 sub %edx,%eax -c0103aa3: c1 e8 0c shr $0xc,%eax -c0103aa6: 89 45 f4 mov %eax,-0xc(%ebp) - la = ROUNDDOWN(la, PGSIZE); -c0103aa9: 8b 45 0c mov 0xc(%ebp),%eax -c0103aac: 89 45 e8 mov %eax,-0x18(%ebp) -c0103aaf: 8b 45 e8 mov -0x18(%ebp),%eax -c0103ab2: 25 00 f0 ff ff and $0xfffff000,%eax -c0103ab7: 89 45 0c mov %eax,0xc(%ebp) - pa = ROUNDDOWN(pa, PGSIZE); -c0103aba: 8b 45 14 mov 0x14(%ebp),%eax -c0103abd: 89 45 e4 mov %eax,-0x1c(%ebp) -c0103ac0: 8b 45 e4 mov -0x1c(%ebp),%eax -c0103ac3: 25 00 f0 ff ff and $0xfffff000,%eax -c0103ac8: 89 45 14 mov %eax,0x14(%ebp) - for (; n > 0; n --, la += PGSIZE, pa += PGSIZE) { -c0103acb: eb 57 jmp c0103b24 - pte_t *ptep = get_pte(pgdir, la, 1); -c0103acd: 83 ec 04 sub $0x4,%esp -c0103ad0: 6a 01 push $0x1 -c0103ad2: ff 75 0c pushl 0xc(%ebp) -c0103ad5: ff 75 08 pushl 0x8(%ebp) -c0103ad8: e8 9d 01 00 00 call c0103c7a -c0103add: 83 c4 10 add $0x10,%esp -c0103ae0: 89 45 e0 mov %eax,-0x20(%ebp) - assert(ptep != NULL); -c0103ae3: 83 7d e0 00 cmpl $0x0,-0x20(%ebp) -c0103ae7: 75 19 jne c0103b02 -c0103ae9: 68 c2 a8 10 c0 push $0xc010a8c2 -c0103aee: 68 ad a8 10 c0 push $0xc010a8ad -c0103af3: 68 18 01 00 00 push $0x118 -c0103af8: 68 88 a8 10 c0 push $0xc010a888 -c0103afd: e8 e2 c8 ff ff call c01003e4 <__panic> - *ptep = pa | PTE_P | perm; -c0103b02: 8b 45 14 mov 0x14(%ebp),%eax -c0103b05: 0b 45 18 or 0x18(%ebp),%eax -c0103b08: 83 c8 01 or $0x1,%eax -c0103b0b: 89 c2 mov %eax,%edx -c0103b0d: 8b 45 e0 mov -0x20(%ebp),%eax -c0103b10: 89 10 mov %edx,(%eax) -boot_map_segment(pde_t *pgdir, uintptr_t la, size_t size, uintptr_t pa, uint32_t perm) { - assert(PGOFF(la) == PGOFF(pa)); - size_t n = ROUNDUP(size + PGOFF(la), PGSIZE) / PGSIZE; - la = ROUNDDOWN(la, PGSIZE); - pa = ROUNDDOWN(pa, PGSIZE); - for (; n > 0; n --, la += PGSIZE, pa += PGSIZE) { -c0103b12: 83 6d f4 01 subl $0x1,-0xc(%ebp) -c0103b16: 81 45 0c 00 10 00 00 addl $0x1000,0xc(%ebp) -c0103b1d: 81 45 14 00 10 00 00 addl $0x1000,0x14(%ebp) -c0103b24: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c0103b28: 75 a3 jne c0103acd - pte_t *ptep = get_pte(pgdir, la, 1); - assert(ptep != NULL); - *ptep = pa | PTE_P | perm; - } -} -c0103b2a: 90 nop -c0103b2b: c9 leave -c0103b2c: c3 ret - -c0103b2d : - -//boot_alloc_page - allocate one page using pmm->alloc_pages(1) -// return value: the kernel virtual address of this allocated page -//note: this function is used to get the memory for PDT(Page Directory Table)&PT(Page Table) -static void * -boot_alloc_page(void) { -c0103b2d: 55 push %ebp -c0103b2e: 89 e5 mov %esp,%ebp -c0103b30: 83 ec 18 sub $0x18,%esp - struct Page *p = alloc_page(); -c0103b33: 83 ec 0c sub $0xc,%esp -c0103b36: 6a 01 push $0x1 -c0103b38: e8 52 fa ff ff call c010358f -c0103b3d: 83 c4 10 add $0x10,%esp -c0103b40: 89 45 f4 mov %eax,-0xc(%ebp) - if (p == NULL) { -c0103b43: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c0103b47: 75 17 jne c0103b60 - panic("boot_alloc_page failed.\n"); -c0103b49: 83 ec 04 sub $0x4,%esp -c0103b4c: 68 cf a8 10 c0 push $0xc010a8cf -c0103b51: 68 24 01 00 00 push $0x124 -c0103b56: 68 88 a8 10 c0 push $0xc010a888 -c0103b5b: e8 84 c8 ff ff call c01003e4 <__panic> - } - return page2kva(p); -c0103b60: 83 ec 0c sub $0xc,%esp -c0103b63: ff 75 f4 pushl -0xc(%ebp) -c0103b66: e8 7b f7 ff ff call c01032e6 -c0103b6b: 83 c4 10 add $0x10,%esp -} -c0103b6e: c9 leave -c0103b6f: c3 ret - -c0103b70 : - -//pmm_init - setup a pmm to manage physical memory, build PDT&PT to setup paging mechanism -// - check the correctness of pmm & paging mechanism, print PDT&PT -void -pmm_init(void) { -c0103b70: 55 push %ebp -c0103b71: 89 e5 mov %esp,%ebp -c0103b73: 83 ec 18 sub $0x18,%esp - //We need to alloc/free the physical memory (granularity is 4KB or other size). - //So a framework of physical memory manager (struct pmm_manager)is defined in pmm.h - //First we should init a physical memory manager(pmm) based on the framework. - //Then pmm can alloc/free the physical memory. - //Now the first_fit/best_fit/worst_fit/buddy_system pmm are available. - init_pmm_manager(); -c0103b76: e8 c0 f9 ff ff call c010353b - - // detect physical memory space, reserve already used memory, - // then use pmm->init_memmap to create free page list - page_init(); -c0103b7b: e8 de fa ff ff call c010365e - - //use pmm->check to verify the correctness of the alloc/free function in a pmm - check_alloc_page(); -c0103b80: e8 da 04 00 00 call c010405f - - // create boot_pgdir, an initial page directory(Page Directory Table, PDT) - boot_pgdir = boot_alloc_page(); -c0103b85: e8 a3 ff ff ff call c0103b2d -c0103b8a: a3 44 7a 12 c0 mov %eax,0xc0127a44 - memset(boot_pgdir, 0, PGSIZE); -c0103b8f: a1 44 7a 12 c0 mov 0xc0127a44,%eax -c0103b94: 83 ec 04 sub $0x4,%esp -c0103b97: 68 00 10 00 00 push $0x1000 -c0103b9c: 6a 00 push $0x0 -c0103b9e: 50 push %eax -c0103b9f: e8 c2 5a 00 00 call c0109666 -c0103ba4: 83 c4 10 add $0x10,%esp - boot_cr3 = PADDR(boot_pgdir); -c0103ba7: a1 44 7a 12 c0 mov 0xc0127a44,%eax -c0103bac: 89 45 f4 mov %eax,-0xc(%ebp) -c0103baf: 81 7d f4 ff ff ff bf cmpl $0xbfffffff,-0xc(%ebp) -c0103bb6: 77 17 ja c0103bcf -c0103bb8: ff 75 f4 pushl -0xc(%ebp) -c0103bbb: 68 64 a8 10 c0 push $0xc010a864 -c0103bc0: 68 3e 01 00 00 push $0x13e -c0103bc5: 68 88 a8 10 c0 push $0xc010a888 -c0103bca: e8 15 c8 ff ff call c01003e4 <__panic> -c0103bcf: 8b 45 f4 mov -0xc(%ebp),%eax -c0103bd2: 05 00 00 00 40 add $0x40000000,%eax -c0103bd7: a3 1c 9b 12 c0 mov %eax,0xc0129b1c - - check_pgdir(); -c0103bdc: e8 a1 04 00 00 call c0104082 - - static_assert(KERNBASE % PTSIZE == 0 && KERNTOP % PTSIZE == 0); - - // recursively insert boot_pgdir in itself - // to form a virtual page table at virtual address VPT - boot_pgdir[PDX(VPT)] = PADDR(boot_pgdir) | PTE_P | PTE_W; -c0103be1: a1 44 7a 12 c0 mov 0xc0127a44,%eax -c0103be6: 8d 90 ac 0f 00 00 lea 0xfac(%eax),%edx -c0103bec: a1 44 7a 12 c0 mov 0xc0127a44,%eax -c0103bf1: 89 45 f0 mov %eax,-0x10(%ebp) -c0103bf4: 81 7d f0 ff ff ff bf cmpl $0xbfffffff,-0x10(%ebp) -c0103bfb: 77 17 ja c0103c14 -c0103bfd: ff 75 f0 pushl -0x10(%ebp) -c0103c00: 68 64 a8 10 c0 push $0xc010a864 -c0103c05: 68 46 01 00 00 push $0x146 -c0103c0a: 68 88 a8 10 c0 push $0xc010a888 -c0103c0f: e8 d0 c7 ff ff call c01003e4 <__panic> -c0103c14: 8b 45 f0 mov -0x10(%ebp),%eax -c0103c17: 05 00 00 00 40 add $0x40000000,%eax -c0103c1c: 83 c8 03 or $0x3,%eax -c0103c1f: 89 02 mov %eax,(%edx) - - // map all physical memory to linear memory with base linear addr KERNBASE - //linear_addr KERNBASE~KERNBASE+KMEMSIZE = phy_addr 0~KMEMSIZE - //But shouldn't use this map until enable_paging() & gdt_init() finished. - boot_map_segment(boot_pgdir, KERNBASE, KMEMSIZE, 0, PTE_W); -c0103c21: a1 44 7a 12 c0 mov 0xc0127a44,%eax -c0103c26: 83 ec 0c sub $0xc,%esp -c0103c29: 6a 02 push $0x2 -c0103c2b: 6a 00 push $0x0 -c0103c2d: 68 00 00 00 38 push $0x38000000 -c0103c32: 68 00 00 00 c0 push $0xc0000000 -c0103c37: 50 push %eax -c0103c38: e8 07 fe ff ff call c0103a44 -c0103c3d: 83 c4 20 add $0x20,%esp - - //temporary map: - //virtual_addr 3G~3G+4M = linear_addr 0~4M = linear_addr 3G~3G+4M = phy_addr 0~4M - boot_pgdir[0] = boot_pgdir[PDX(KERNBASE)]; -c0103c40: a1 44 7a 12 c0 mov 0xc0127a44,%eax -c0103c45: 8b 15 44 7a 12 c0 mov 0xc0127a44,%edx -c0103c4b: 8b 92 00 0c 00 00 mov 0xc00(%edx),%edx -c0103c51: 89 10 mov %edx,(%eax) - - enable_paging(); -c0103c53: e8 b2 fd ff ff call c0103a0a - - //reload gdt(third time,the last time) to map all physical memory - //virtual_addr 0~4G=liear_addr 0~4G - //then set kernel stack(ss:esp) in TSS, setup TSS in gdt, load TSS - gdt_init(); -c0103c58: e8 ec f7 ff ff call c0103449 - - //disable the map of virtual_addr 0~4M - boot_pgdir[0] = 0; -c0103c5d: a1 44 7a 12 c0 mov 0xc0127a44,%eax -c0103c62: c7 00 00 00 00 00 movl $0x0,(%eax) - - //now the basic virtual memory map(see memalyout.h) is established. - //check the correctness of the basic virtual memory map. - check_boot_pgdir(); -c0103c68: e8 7b 09 00 00 call c01045e8 - - print_pgdir(); -c0103c6d: e8 71 0d 00 00 call c01049e3 - - kmalloc_init(); -c0103c72: e8 d3 2b 00 00 call c010684a - -} -c0103c77: 90 nop -c0103c78: c9 leave -c0103c79: c3 ret - -c0103c7a : -// pgdir: the kernel virtual base address of PDT -// la: the linear address need to map -// create: a logical value to decide if alloc a page for PT -// return vaule: the kernel virtual address of this pte -pte_t * -get_pte(pde_t *pgdir, uintptr_t la, bool create) { -c0103c7a: 55 push %ebp -c0103c7b: 89 e5 mov %esp,%ebp -c0103c7d: 83 ec 28 sub $0x28,%esp - * DEFINEs: - * PTE_P 0x001 // page table/directory entry flags bit : Present - * PTE_W 0x002 // page table/directory entry flags bit : Writeable - * PTE_U 0x004 // page table/directory entry flags bit : User can access - */ - pde_t *pdep = pgdir + PDX(la); // (1) find page directory entry -c0103c80: 8b 45 0c mov 0xc(%ebp),%eax -c0103c83: c1 e8 16 shr $0x16,%eax -c0103c86: 8d 14 85 00 00 00 00 lea 0x0(,%eax,4),%edx -c0103c8d: 8b 45 08 mov 0x8(%ebp),%eax -c0103c90: 01 d0 add %edx,%eax -c0103c92: 89 45 f4 mov %eax,-0xc(%ebp) - if (((*pdep) & PTE_P) != 1) { // (2) check if entry is not present -c0103c95: 8b 45 f4 mov -0xc(%ebp),%eax -c0103c98: 8b 00 mov (%eax),%eax -c0103c9a: 83 e0 01 and $0x1,%eax -c0103c9d: 85 c0 test %eax,%eax -c0103c9f: 0f 85 bd 00 00 00 jne c0103d62 - if (!create) return NULL; // (3) check if creating is needed, then alloc page for page table -c0103ca5: 83 7d 10 00 cmpl $0x0,0x10(%ebp) -c0103ca9: 75 0a jne c0103cb5 -c0103cab: b8 00 00 00 00 mov $0x0,%eax -c0103cb0: e9 fe 00 00 00 jmp c0103db3 - struct Page* ptPage; - assert(ptPage = alloc_page()); -c0103cb5: 83 ec 0c sub $0xc,%esp -c0103cb8: 6a 01 push $0x1 -c0103cba: e8 d0 f8 ff ff call c010358f -c0103cbf: 83 c4 10 add $0x10,%esp -c0103cc2: 89 45 f0 mov %eax,-0x10(%ebp) -c0103cc5: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) -c0103cc9: 75 19 jne c0103ce4 -c0103ccb: 68 e8 a8 10 c0 push $0xc010a8e8 -c0103cd0: 68 ad a8 10 c0 push $0xc010a8ad -c0103cd5: 68 87 01 00 00 push $0x187 -c0103cda: 68 88 a8 10 c0 push $0xc010a888 -c0103cdf: e8 00 c7 ff ff call c01003e4 <__panic> - set_page_ref(ptPage, 1); // (4) set page reference -c0103ce4: 83 ec 08 sub $0x8,%esp -c0103ce7: 6a 01 push $0x1 -c0103ce9: ff 75 f0 pushl -0x10(%ebp) -c0103cec: e8 9a f6 ff ff call c010338b -c0103cf1: 83 c4 10 add $0x10,%esp - uintptr_t pa = page2pa(ptPage); // (5) get linear address of page -c0103cf4: 83 ec 0c sub $0xc,%esp -c0103cf7: ff 75 f0 pushl -0x10(%ebp) -c0103cfa: e8 97 f5 ff ff call c0103296 -c0103cff: 83 c4 10 add $0x10,%esp -c0103d02: 89 45 ec mov %eax,-0x14(%ebp) - memset(KADDR(pa), 0, PGSIZE); // (6) clear page content using memset -c0103d05: 8b 45 ec mov -0x14(%ebp),%eax -c0103d08: 89 45 e8 mov %eax,-0x18(%ebp) -c0103d0b: 8b 45 e8 mov -0x18(%ebp),%eax -c0103d0e: c1 e8 0c shr $0xc,%eax -c0103d11: 89 45 e4 mov %eax,-0x1c(%ebp) -c0103d14: a1 40 7a 12 c0 mov 0xc0127a40,%eax -c0103d19: 39 45 e4 cmp %eax,-0x1c(%ebp) -c0103d1c: 72 17 jb c0103d35 -c0103d1e: ff 75 e8 pushl -0x18(%ebp) -c0103d21: 68 c0 a7 10 c0 push $0xc010a7c0 -c0103d26: 68 8a 01 00 00 push $0x18a -c0103d2b: 68 88 a8 10 c0 push $0xc010a888 -c0103d30: e8 af c6 ff ff call c01003e4 <__panic> -c0103d35: 8b 45 e8 mov -0x18(%ebp),%eax -c0103d38: 2d 00 00 00 40 sub $0x40000000,%eax -c0103d3d: 83 ec 04 sub $0x4,%esp -c0103d40: 68 00 10 00 00 push $0x1000 -c0103d45: 6a 00 push $0x0 -c0103d47: 50 push %eax -c0103d48: e8 19 59 00 00 call c0109666 -c0103d4d: 83 c4 10 add $0x10,%esp - *pdep = ((pa & ~0x0FFF) | PTE_U | PTE_W | PTE_P); // (7) set page directory entry's permission -c0103d50: 8b 45 ec mov -0x14(%ebp),%eax -c0103d53: 25 00 f0 ff ff and $0xfffff000,%eax -c0103d58: 83 c8 07 or $0x7,%eax -c0103d5b: 89 c2 mov %eax,%edx -c0103d5d: 8b 45 f4 mov -0xc(%ebp),%eax -c0103d60: 89 10 mov %edx,(%eax) - } - return ((pte_t*)KADDR((*pdep) & ~0xFFF)) + PTX(la); // (8) return page table entry -c0103d62: 8b 45 f4 mov -0xc(%ebp),%eax -c0103d65: 8b 00 mov (%eax),%eax -c0103d67: 25 00 f0 ff ff and $0xfffff000,%eax -c0103d6c: 89 45 e0 mov %eax,-0x20(%ebp) -c0103d6f: 8b 45 e0 mov -0x20(%ebp),%eax -c0103d72: c1 e8 0c shr $0xc,%eax -c0103d75: 89 45 dc mov %eax,-0x24(%ebp) -c0103d78: a1 40 7a 12 c0 mov 0xc0127a40,%eax -c0103d7d: 39 45 dc cmp %eax,-0x24(%ebp) -c0103d80: 72 17 jb c0103d99 -c0103d82: ff 75 e0 pushl -0x20(%ebp) -c0103d85: 68 c0 a7 10 c0 push $0xc010a7c0 -c0103d8a: 68 8d 01 00 00 push $0x18d -c0103d8f: 68 88 a8 10 c0 push $0xc010a888 -c0103d94: e8 4b c6 ff ff call c01003e4 <__panic> -c0103d99: 8b 45 e0 mov -0x20(%ebp),%eax -c0103d9c: 2d 00 00 00 40 sub $0x40000000,%eax -c0103da1: 89 c2 mov %eax,%edx -c0103da3: 8b 45 0c mov 0xc(%ebp),%eax -c0103da6: c1 e8 0c shr $0xc,%eax -c0103da9: 25 ff 03 00 00 and $0x3ff,%eax -c0103dae: c1 e0 02 shl $0x2,%eax -c0103db1: 01 d0 add %edx,%eax -} -c0103db3: c9 leave -c0103db4: c3 ret - -c0103db5 : - -//get_page - get related Page struct for linear address la using PDT pgdir -struct Page * -get_page(pde_t *pgdir, uintptr_t la, pte_t **ptep_store) { -c0103db5: 55 push %ebp -c0103db6: 89 e5 mov %esp,%ebp -c0103db8: 83 ec 18 sub $0x18,%esp - pte_t *ptep = get_pte(pgdir, la, 0); -c0103dbb: 83 ec 04 sub $0x4,%esp -c0103dbe: 6a 00 push $0x0 -c0103dc0: ff 75 0c pushl 0xc(%ebp) -c0103dc3: ff 75 08 pushl 0x8(%ebp) -c0103dc6: e8 af fe ff ff call c0103c7a -c0103dcb: 83 c4 10 add $0x10,%esp -c0103dce: 89 45 f4 mov %eax,-0xc(%ebp) - if (ptep_store != NULL) { -c0103dd1: 83 7d 10 00 cmpl $0x0,0x10(%ebp) -c0103dd5: 74 08 je c0103ddf - *ptep_store = ptep; -c0103dd7: 8b 45 10 mov 0x10(%ebp),%eax -c0103dda: 8b 55 f4 mov -0xc(%ebp),%edx -c0103ddd: 89 10 mov %edx,(%eax) - } - if (ptep != NULL && *ptep & PTE_P) { -c0103ddf: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c0103de3: 74 1f je c0103e04 -c0103de5: 8b 45 f4 mov -0xc(%ebp),%eax -c0103de8: 8b 00 mov (%eax),%eax -c0103dea: 83 e0 01 and $0x1,%eax -c0103ded: 85 c0 test %eax,%eax -c0103def: 74 13 je c0103e04 - return pte2page(*ptep); -c0103df1: 8b 45 f4 mov -0xc(%ebp),%eax -c0103df4: 8b 00 mov (%eax),%eax -c0103df6: 83 ec 0c sub $0xc,%esp -c0103df9: 50 push %eax -c0103dfa: e8 2c f5 ff ff call c010332b -c0103dff: 83 c4 10 add $0x10,%esp -c0103e02: eb 05 jmp c0103e09 - } - return NULL; -c0103e04: b8 00 00 00 00 mov $0x0,%eax -} -c0103e09: c9 leave -c0103e0a: c3 ret - -c0103e0b : - -//page_remove_pte - free an Page sturct which is related linear address la -// - and clean(invalidate) pte which is related linear address la -//note: PT is changed, so the TLB need to be invalidate -static inline void -page_remove_pte(pde_t *pgdir, uintptr_t la, pte_t *ptep) { -c0103e0b: 55 push %ebp -c0103e0c: 89 e5 mov %esp,%ebp -c0103e0e: 83 ec 18 sub $0x18,%esp - * tlb_invalidate(pde_t *pgdir, uintptr_t la) : Invalidate a TLB entry, but only if the page tables being - * edited are the ones currently in use by the processor. - * DEFINEs: - * PTE_P 0x001 // page table/directory entry flags bit : Present - */ - if (((*ptep) & PTE_P) == 1) { //(1) check if this page table entry is present -c0103e11: 8b 45 10 mov 0x10(%ebp),%eax -c0103e14: 8b 00 mov (%eax),%eax -c0103e16: 83 e0 01 and $0x1,%eax -c0103e19: 85 c0 test %eax,%eax -c0103e1b: 74 55 je c0103e72 - struct Page *page = pte2page(*ptep); //(2) find corresponding page to pte -c0103e1d: 8b 45 10 mov 0x10(%ebp),%eax -c0103e20: 8b 00 mov (%eax),%eax -c0103e22: 83 ec 0c sub $0xc,%esp -c0103e25: 50 push %eax -c0103e26: e8 00 f5 ff ff call c010332b -c0103e2b: 83 c4 10 add $0x10,%esp -c0103e2e: 89 45 f4 mov %eax,-0xc(%ebp) - page_ref_dec(page); //(3) decrease page reference -c0103e31: 83 ec 0c sub $0xc,%esp -c0103e34: ff 75 f4 pushl -0xc(%ebp) -c0103e37: e8 74 f5 ff ff call c01033b0 -c0103e3c: 83 c4 10 add $0x10,%esp - if (page->ref == 0) { -c0103e3f: 8b 45 f4 mov -0xc(%ebp),%eax -c0103e42: 8b 00 mov (%eax),%eax -c0103e44: 85 c0 test %eax,%eax -c0103e46: 75 10 jne c0103e58 - free_page(page); //(4) and free this page when page reference reachs 0 -c0103e48: 83 ec 08 sub $0x8,%esp -c0103e4b: 6a 01 push $0x1 -c0103e4d: ff 75 f4 pushl -0xc(%ebp) -c0103e50: e8 a6 f7 ff ff call c01035fb -c0103e55: 83 c4 10 add $0x10,%esp - } - (*ptep) = 0; //(5) clear second page table entry -c0103e58: 8b 45 10 mov 0x10(%ebp),%eax -c0103e5b: c7 00 00 00 00 00 movl $0x0,(%eax) - tlb_invalidate(pgdir, la); //(6) flush tlb -c0103e61: 83 ec 08 sub $0x8,%esp -c0103e64: ff 75 0c pushl 0xc(%ebp) -c0103e67: ff 75 08 pushl 0x8(%ebp) -c0103e6a: e8 f8 00 00 00 call c0103f67 -c0103e6f: 83 c4 10 add $0x10,%esp - } - // Should I check whether all entries in PT is not present and recycle the PT? - // Then Maybe I should set the pde to be not present. -} -c0103e72: 90 nop -c0103e73: c9 leave -c0103e74: c3 ret - -c0103e75 : - -//page_remove - free an Page which is related linear address la and has an validated pte -void -page_remove(pde_t *pgdir, uintptr_t la) { -c0103e75: 55 push %ebp -c0103e76: 89 e5 mov %esp,%ebp -c0103e78: 83 ec 18 sub $0x18,%esp - pte_t *ptep = get_pte(pgdir, la, 0); -c0103e7b: 83 ec 04 sub $0x4,%esp -c0103e7e: 6a 00 push $0x0 -c0103e80: ff 75 0c pushl 0xc(%ebp) -c0103e83: ff 75 08 pushl 0x8(%ebp) -c0103e86: e8 ef fd ff ff call c0103c7a -c0103e8b: 83 c4 10 add $0x10,%esp -c0103e8e: 89 45 f4 mov %eax,-0xc(%ebp) - if (ptep != NULL) { -c0103e91: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c0103e95: 74 14 je c0103eab - page_remove_pte(pgdir, la, ptep); -c0103e97: 83 ec 04 sub $0x4,%esp -c0103e9a: ff 75 f4 pushl -0xc(%ebp) -c0103e9d: ff 75 0c pushl 0xc(%ebp) -c0103ea0: ff 75 08 pushl 0x8(%ebp) -c0103ea3: e8 63 ff ff ff call c0103e0b -c0103ea8: 83 c4 10 add $0x10,%esp - } -} -c0103eab: 90 nop -c0103eac: c9 leave -c0103ead: c3 ret - -c0103eae : -// la: the linear address need to map -// perm: the permission of this Page which is setted in related pte -// return value: always 0 -//note: PT is changed, so the TLB need to be invalidate -int -page_insert(pde_t *pgdir, struct Page *page, uintptr_t la, uint32_t perm) { -c0103eae: 55 push %ebp -c0103eaf: 89 e5 mov %esp,%ebp -c0103eb1: 83 ec 18 sub $0x18,%esp - pte_t *ptep = get_pte(pgdir, la, 1); -c0103eb4: 83 ec 04 sub $0x4,%esp -c0103eb7: 6a 01 push $0x1 -c0103eb9: ff 75 10 pushl 0x10(%ebp) -c0103ebc: ff 75 08 pushl 0x8(%ebp) -c0103ebf: e8 b6 fd ff ff call c0103c7a -c0103ec4: 83 c4 10 add $0x10,%esp -c0103ec7: 89 45 f4 mov %eax,-0xc(%ebp) - if (ptep == NULL) { -c0103eca: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c0103ece: 75 0a jne c0103eda - return -E_NO_MEM; -c0103ed0: b8 fc ff ff ff mov $0xfffffffc,%eax -c0103ed5: e9 8b 00 00 00 jmp c0103f65 - } - page_ref_inc(page); -c0103eda: 83 ec 0c sub $0xc,%esp -c0103edd: ff 75 0c pushl 0xc(%ebp) -c0103ee0: e8 b4 f4 ff ff call c0103399 -c0103ee5: 83 c4 10 add $0x10,%esp - if (*ptep & PTE_P) { -c0103ee8: 8b 45 f4 mov -0xc(%ebp),%eax -c0103eeb: 8b 00 mov (%eax),%eax -c0103eed: 83 e0 01 and $0x1,%eax -c0103ef0: 85 c0 test %eax,%eax -c0103ef2: 74 40 je c0103f34 - struct Page *p = pte2page(*ptep); -c0103ef4: 8b 45 f4 mov -0xc(%ebp),%eax -c0103ef7: 8b 00 mov (%eax),%eax -c0103ef9: 83 ec 0c sub $0xc,%esp -c0103efc: 50 push %eax -c0103efd: e8 29 f4 ff ff call c010332b -c0103f02: 83 c4 10 add $0x10,%esp -c0103f05: 89 45 f0 mov %eax,-0x10(%ebp) - if (p == page) { -c0103f08: 8b 45 f0 mov -0x10(%ebp),%eax -c0103f0b: 3b 45 0c cmp 0xc(%ebp),%eax -c0103f0e: 75 10 jne c0103f20 - page_ref_dec(page); -c0103f10: 83 ec 0c sub $0xc,%esp -c0103f13: ff 75 0c pushl 0xc(%ebp) -c0103f16: e8 95 f4 ff ff call c01033b0 -c0103f1b: 83 c4 10 add $0x10,%esp -c0103f1e: eb 14 jmp c0103f34 - } - else { - page_remove_pte(pgdir, la, ptep); -c0103f20: 83 ec 04 sub $0x4,%esp -c0103f23: ff 75 f4 pushl -0xc(%ebp) -c0103f26: ff 75 10 pushl 0x10(%ebp) -c0103f29: ff 75 08 pushl 0x8(%ebp) -c0103f2c: e8 da fe ff ff call c0103e0b -c0103f31: 83 c4 10 add $0x10,%esp - } - } - *ptep = page2pa(page) | PTE_P | perm; -c0103f34: 83 ec 0c sub $0xc,%esp -c0103f37: ff 75 0c pushl 0xc(%ebp) -c0103f3a: e8 57 f3 ff ff call c0103296 -c0103f3f: 83 c4 10 add $0x10,%esp -c0103f42: 0b 45 14 or 0x14(%ebp),%eax -c0103f45: 83 c8 01 or $0x1,%eax -c0103f48: 89 c2 mov %eax,%edx -c0103f4a: 8b 45 f4 mov -0xc(%ebp),%eax -c0103f4d: 89 10 mov %edx,(%eax) - tlb_invalidate(pgdir, la); -c0103f4f: 83 ec 08 sub $0x8,%esp -c0103f52: ff 75 10 pushl 0x10(%ebp) -c0103f55: ff 75 08 pushl 0x8(%ebp) -c0103f58: e8 0a 00 00 00 call c0103f67 -c0103f5d: 83 c4 10 add $0x10,%esp - return 0; -c0103f60: b8 00 00 00 00 mov $0x0,%eax -} -c0103f65: c9 leave -c0103f66: c3 ret - -c0103f67 : - -// invalidate a TLB entry, but only if the page tables being -// edited are the ones currently in use by the processor. -void -tlb_invalidate(pde_t *pgdir, uintptr_t la) { -c0103f67: 55 push %ebp -c0103f68: 89 e5 mov %esp,%ebp -c0103f6a: 83 ec 18 sub $0x18,%esp -} - -static inline uintptr_t -rcr3(void) { - uintptr_t cr3; - asm volatile ("mov %%cr3, %0" : "=r" (cr3) :: "memory"); -c0103f6d: 0f 20 d8 mov %cr3,%eax -c0103f70: 89 45 ec mov %eax,-0x14(%ebp) - return cr3; -c0103f73: 8b 55 ec mov -0x14(%ebp),%edx - if (rcr3() == PADDR(pgdir)) { -c0103f76: 8b 45 08 mov 0x8(%ebp),%eax -c0103f79: 89 45 f0 mov %eax,-0x10(%ebp) -c0103f7c: 81 7d f0 ff ff ff bf cmpl $0xbfffffff,-0x10(%ebp) -c0103f83: 77 17 ja c0103f9c -c0103f85: ff 75 f0 pushl -0x10(%ebp) -c0103f88: 68 64 a8 10 c0 push $0xc010a864 -c0103f8d: 68 e9 01 00 00 push $0x1e9 -c0103f92: 68 88 a8 10 c0 push $0xc010a888 -c0103f97: e8 48 c4 ff ff call c01003e4 <__panic> -c0103f9c: 8b 45 f0 mov -0x10(%ebp),%eax -c0103f9f: 05 00 00 00 40 add $0x40000000,%eax -c0103fa4: 39 c2 cmp %eax,%edx -c0103fa6: 75 0c jne c0103fb4 - invlpg((void *)la); -c0103fa8: 8b 45 0c mov 0xc(%ebp),%eax -c0103fab: 89 45 f4 mov %eax,-0xc(%ebp) -} - -static inline void -invlpg(void *addr) { - asm volatile ("invlpg (%0)" :: "r" (addr) : "memory"); -c0103fae: 8b 45 f4 mov -0xc(%ebp),%eax -c0103fb1: 0f 01 38 invlpg (%eax) - } -} -c0103fb4: 90 nop -c0103fb5: c9 leave -c0103fb6: c3 ret - -c0103fb7 : - -// pgdir_alloc_page - call alloc_page & page_insert functions to -// - allocate a page size memory & setup an addr map -// - pa<->la with linear address la and the PDT pgdir -struct Page * -pgdir_alloc_page(pde_t *pgdir, uintptr_t la, uint32_t perm) { -c0103fb7: 55 push %ebp -c0103fb8: 89 e5 mov %esp,%ebp -c0103fba: 83 ec 18 sub $0x18,%esp - struct Page *page = alloc_page(); -c0103fbd: 83 ec 0c sub $0xc,%esp -c0103fc0: 6a 01 push $0x1 -c0103fc2: e8 c8 f5 ff ff call c010358f -c0103fc7: 83 c4 10 add $0x10,%esp -c0103fca: 89 45 f4 mov %eax,-0xc(%ebp) - if (page != NULL) { -c0103fcd: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c0103fd1: 0f 84 83 00 00 00 je c010405a - if (page_insert(pgdir, page, la, perm) != 0) { -c0103fd7: ff 75 10 pushl 0x10(%ebp) -c0103fda: ff 75 0c pushl 0xc(%ebp) -c0103fdd: ff 75 f4 pushl -0xc(%ebp) -c0103fe0: ff 75 08 pushl 0x8(%ebp) -c0103fe3: e8 c6 fe ff ff call c0103eae -c0103fe8: 83 c4 10 add $0x10,%esp -c0103feb: 85 c0 test %eax,%eax -c0103fed: 74 17 je c0104006 - free_page(page); -c0103fef: 83 ec 08 sub $0x8,%esp -c0103ff2: 6a 01 push $0x1 -c0103ff4: ff 75 f4 pushl -0xc(%ebp) -c0103ff7: e8 ff f5 ff ff call c01035fb -c0103ffc: 83 c4 10 add $0x10,%esp - return NULL; -c0103fff: b8 00 00 00 00 mov $0x0,%eax -c0104004: eb 57 jmp c010405d - } - if (swap_init_ok){ -c0104006: a1 d0 7a 12 c0 mov 0xc0127ad0,%eax -c010400b: 85 c0 test %eax,%eax -c010400d: 74 4b je c010405a - swap_map_swappable(check_mm_struct, la, page, 0); -c010400f: a1 24 9b 12 c0 mov 0xc0129b24,%eax -c0104014: 6a 00 push $0x0 -c0104016: ff 75 f4 pushl -0xc(%ebp) -c0104019: ff 75 0c pushl 0xc(%ebp) -c010401c: 50 push %eax -c010401d: e8 22 18 00 00 call c0105844 -c0104022: 83 c4 10 add $0x10,%esp - page->pra_vaddr=la; -c0104025: 8b 45 f4 mov -0xc(%ebp),%eax -c0104028: 8b 55 0c mov 0xc(%ebp),%edx -c010402b: 89 50 1c mov %edx,0x1c(%eax) - assert(page_ref(page) == 1); -c010402e: 83 ec 0c sub $0xc,%esp -c0104031: ff 75 f4 pushl -0xc(%ebp) -c0104034: e8 48 f3 ff ff call c0103381 -c0104039: 83 c4 10 add $0x10,%esp -c010403c: 83 f8 01 cmp $0x1,%eax -c010403f: 74 19 je c010405a -c0104041: 68 fe a8 10 c0 push $0xc010a8fe -c0104046: 68 ad a8 10 c0 push $0xc010a8ad -c010404b: 68 fc 01 00 00 push $0x1fc -c0104050: 68 88 a8 10 c0 push $0xc010a888 -c0104055: e8 8a c3 ff ff call c01003e4 <__panic> - //cprintf("get No. %d page: pra_vaddr %x, pra_link.prev %x, pra_link_next %x in pgdir_alloc_page\n", (page-pages), page->pra_vaddr,page->pra_page_link.prev, page->pra_page_link.next); - } - - } - - return page; -c010405a: 8b 45 f4 mov -0xc(%ebp),%eax -} -c010405d: c9 leave -c010405e: c3 ret - -c010405f : - -static void -check_alloc_page(void) { -c010405f: 55 push %ebp -c0104060: 89 e5 mov %esp,%ebp -c0104062: 83 ec 08 sub $0x8,%esp - pmm_manager->check(); -c0104065: a1 18 9b 12 c0 mov 0xc0129b18,%eax -c010406a: 8b 40 18 mov 0x18(%eax),%eax -c010406d: ff d0 call *%eax - cprintf("check_alloc_page() succeeded!\n"); -c010406f: 83 ec 0c sub $0xc,%esp -c0104072: 68 14 a9 10 c0 push $0xc010a914 -c0104077: e8 02 c2 ff ff call c010027e -c010407c: 83 c4 10 add $0x10,%esp -} -c010407f: 90 nop -c0104080: c9 leave -c0104081: c3 ret - -c0104082 : - -static void -check_pgdir(void) { -c0104082: 55 push %ebp -c0104083: 89 e5 mov %esp,%ebp -c0104085: 83 ec 28 sub $0x28,%esp - assert(npage <= KMEMSIZE / PGSIZE); -c0104088: a1 40 7a 12 c0 mov 0xc0127a40,%eax -c010408d: 3d 00 80 03 00 cmp $0x38000,%eax -c0104092: 76 19 jbe c01040ad -c0104094: 68 33 a9 10 c0 push $0xc010a933 -c0104099: 68 ad a8 10 c0 push $0xc010a8ad -c010409e: 68 0d 02 00 00 push $0x20d -c01040a3: 68 88 a8 10 c0 push $0xc010a888 -c01040a8: e8 37 c3 ff ff call c01003e4 <__panic> - assert(boot_pgdir != NULL && (uint32_t)PGOFF(boot_pgdir) == 0); -c01040ad: a1 44 7a 12 c0 mov 0xc0127a44,%eax -c01040b2: 85 c0 test %eax,%eax -c01040b4: 74 0e je c01040c4 -c01040b6: a1 44 7a 12 c0 mov 0xc0127a44,%eax -c01040bb: 25 ff 0f 00 00 and $0xfff,%eax -c01040c0: 85 c0 test %eax,%eax -c01040c2: 74 19 je c01040dd -c01040c4: 68 50 a9 10 c0 push $0xc010a950 -c01040c9: 68 ad a8 10 c0 push $0xc010a8ad -c01040ce: 68 0e 02 00 00 push $0x20e -c01040d3: 68 88 a8 10 c0 push $0xc010a888 -c01040d8: e8 07 c3 ff ff call c01003e4 <__panic> - assert(get_page(boot_pgdir, 0x0, NULL) == NULL); -c01040dd: a1 44 7a 12 c0 mov 0xc0127a44,%eax -c01040e2: 83 ec 04 sub $0x4,%esp -c01040e5: 6a 00 push $0x0 -c01040e7: 6a 00 push $0x0 -c01040e9: 50 push %eax -c01040ea: e8 c6 fc ff ff call c0103db5 -c01040ef: 83 c4 10 add $0x10,%esp -c01040f2: 85 c0 test %eax,%eax -c01040f4: 74 19 je c010410f -c01040f6: 68 88 a9 10 c0 push $0xc010a988 -c01040fb: 68 ad a8 10 c0 push $0xc010a8ad -c0104100: 68 0f 02 00 00 push $0x20f -c0104105: 68 88 a8 10 c0 push $0xc010a888 -c010410a: e8 d5 c2 ff ff call c01003e4 <__panic> - - struct Page *p1, *p2; - p1 = alloc_page(); -c010410f: 83 ec 0c sub $0xc,%esp -c0104112: 6a 01 push $0x1 -c0104114: e8 76 f4 ff ff call c010358f -c0104119: 83 c4 10 add $0x10,%esp -c010411c: 89 45 f4 mov %eax,-0xc(%ebp) - assert(page_insert(boot_pgdir, p1, 0x0, 0) == 0); -c010411f: a1 44 7a 12 c0 mov 0xc0127a44,%eax -c0104124: 6a 00 push $0x0 -c0104126: 6a 00 push $0x0 -c0104128: ff 75 f4 pushl -0xc(%ebp) -c010412b: 50 push %eax -c010412c: e8 7d fd ff ff call c0103eae -c0104131: 83 c4 10 add $0x10,%esp -c0104134: 85 c0 test %eax,%eax -c0104136: 74 19 je c0104151 -c0104138: 68 b0 a9 10 c0 push $0xc010a9b0 -c010413d: 68 ad a8 10 c0 push $0xc010a8ad -c0104142: 68 13 02 00 00 push $0x213 -c0104147: 68 88 a8 10 c0 push $0xc010a888 -c010414c: e8 93 c2 ff ff call c01003e4 <__panic> - - pte_t *ptep; - assert((ptep = get_pte(boot_pgdir, 0x0, 0)) != NULL); -c0104151: a1 44 7a 12 c0 mov 0xc0127a44,%eax -c0104156: 83 ec 04 sub $0x4,%esp -c0104159: 6a 00 push $0x0 -c010415b: 6a 00 push $0x0 -c010415d: 50 push %eax -c010415e: e8 17 fb ff ff call c0103c7a -c0104163: 83 c4 10 add $0x10,%esp -c0104166: 89 45 f0 mov %eax,-0x10(%ebp) -c0104169: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) -c010416d: 75 19 jne c0104188 -c010416f: 68 dc a9 10 c0 push $0xc010a9dc -c0104174: 68 ad a8 10 c0 push $0xc010a8ad -c0104179: 68 16 02 00 00 push $0x216 -c010417e: 68 88 a8 10 c0 push $0xc010a888 -c0104183: e8 5c c2 ff ff call c01003e4 <__panic> - assert(pte2page(*ptep) == p1); -c0104188: 8b 45 f0 mov -0x10(%ebp),%eax -c010418b: 8b 00 mov (%eax),%eax -c010418d: 83 ec 0c sub $0xc,%esp -c0104190: 50 push %eax -c0104191: e8 95 f1 ff ff call c010332b -c0104196: 83 c4 10 add $0x10,%esp -c0104199: 3b 45 f4 cmp -0xc(%ebp),%eax -c010419c: 74 19 je c01041b7 -c010419e: 68 09 aa 10 c0 push $0xc010aa09 -c01041a3: 68 ad a8 10 c0 push $0xc010a8ad -c01041a8: 68 17 02 00 00 push $0x217 -c01041ad: 68 88 a8 10 c0 push $0xc010a888 -c01041b2: e8 2d c2 ff ff call c01003e4 <__panic> - assert(page_ref(p1) == 1); -c01041b7: 83 ec 0c sub $0xc,%esp -c01041ba: ff 75 f4 pushl -0xc(%ebp) -c01041bd: e8 bf f1 ff ff call c0103381 -c01041c2: 83 c4 10 add $0x10,%esp -c01041c5: 83 f8 01 cmp $0x1,%eax -c01041c8: 74 19 je c01041e3 -c01041ca: 68 1f aa 10 c0 push $0xc010aa1f -c01041cf: 68 ad a8 10 c0 push $0xc010a8ad -c01041d4: 68 18 02 00 00 push $0x218 -c01041d9: 68 88 a8 10 c0 push $0xc010a888 -c01041de: e8 01 c2 ff ff call c01003e4 <__panic> - - ptep = &((pte_t *)KADDR(PDE_ADDR(boot_pgdir[0])))[1]; -c01041e3: a1 44 7a 12 c0 mov 0xc0127a44,%eax -c01041e8: 8b 00 mov (%eax),%eax -c01041ea: 25 00 f0 ff ff and $0xfffff000,%eax -c01041ef: 89 45 ec mov %eax,-0x14(%ebp) -c01041f2: 8b 45 ec mov -0x14(%ebp),%eax -c01041f5: c1 e8 0c shr $0xc,%eax -c01041f8: 89 45 e8 mov %eax,-0x18(%ebp) -c01041fb: a1 40 7a 12 c0 mov 0xc0127a40,%eax -c0104200: 39 45 e8 cmp %eax,-0x18(%ebp) -c0104203: 72 17 jb c010421c -c0104205: ff 75 ec pushl -0x14(%ebp) -c0104208: 68 c0 a7 10 c0 push $0xc010a7c0 -c010420d: 68 1a 02 00 00 push $0x21a -c0104212: 68 88 a8 10 c0 push $0xc010a888 -c0104217: e8 c8 c1 ff ff call c01003e4 <__panic> -c010421c: 8b 45 ec mov -0x14(%ebp),%eax -c010421f: 2d 00 00 00 40 sub $0x40000000,%eax -c0104224: 83 c0 04 add $0x4,%eax -c0104227: 89 45 f0 mov %eax,-0x10(%ebp) - assert(get_pte(boot_pgdir, PGSIZE, 0) == ptep); -c010422a: a1 44 7a 12 c0 mov 0xc0127a44,%eax -c010422f: 83 ec 04 sub $0x4,%esp -c0104232: 6a 00 push $0x0 -c0104234: 68 00 10 00 00 push $0x1000 -c0104239: 50 push %eax -c010423a: e8 3b fa ff ff call c0103c7a -c010423f: 83 c4 10 add $0x10,%esp -c0104242: 3b 45 f0 cmp -0x10(%ebp),%eax -c0104245: 74 19 je c0104260 -c0104247: 68 34 aa 10 c0 push $0xc010aa34 -c010424c: 68 ad a8 10 c0 push $0xc010a8ad -c0104251: 68 1b 02 00 00 push $0x21b -c0104256: 68 88 a8 10 c0 push $0xc010a888 -c010425b: e8 84 c1 ff ff call c01003e4 <__panic> - - p2 = alloc_page(); -c0104260: 83 ec 0c sub $0xc,%esp -c0104263: 6a 01 push $0x1 -c0104265: e8 25 f3 ff ff call c010358f -c010426a: 83 c4 10 add $0x10,%esp -c010426d: 89 45 e4 mov %eax,-0x1c(%ebp) - assert(page_insert(boot_pgdir, p2, PGSIZE, PTE_U | PTE_W) == 0); -c0104270: a1 44 7a 12 c0 mov 0xc0127a44,%eax -c0104275: 6a 06 push $0x6 -c0104277: 68 00 10 00 00 push $0x1000 -c010427c: ff 75 e4 pushl -0x1c(%ebp) -c010427f: 50 push %eax -c0104280: e8 29 fc ff ff call c0103eae -c0104285: 83 c4 10 add $0x10,%esp -c0104288: 85 c0 test %eax,%eax -c010428a: 74 19 je c01042a5 -c010428c: 68 5c aa 10 c0 push $0xc010aa5c -c0104291: 68 ad a8 10 c0 push $0xc010a8ad -c0104296: 68 1e 02 00 00 push $0x21e -c010429b: 68 88 a8 10 c0 push $0xc010a888 -c01042a0: e8 3f c1 ff ff call c01003e4 <__panic> - assert((ptep = get_pte(boot_pgdir, PGSIZE, 0)) != NULL); -c01042a5: a1 44 7a 12 c0 mov 0xc0127a44,%eax -c01042aa: 83 ec 04 sub $0x4,%esp -c01042ad: 6a 00 push $0x0 -c01042af: 68 00 10 00 00 push $0x1000 -c01042b4: 50 push %eax -c01042b5: e8 c0 f9 ff ff call c0103c7a -c01042ba: 83 c4 10 add $0x10,%esp -c01042bd: 89 45 f0 mov %eax,-0x10(%ebp) -c01042c0: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) -c01042c4: 75 19 jne c01042df -c01042c6: 68 94 aa 10 c0 push $0xc010aa94 -c01042cb: 68 ad a8 10 c0 push $0xc010a8ad -c01042d0: 68 1f 02 00 00 push $0x21f -c01042d5: 68 88 a8 10 c0 push $0xc010a888 -c01042da: e8 05 c1 ff ff call c01003e4 <__panic> - assert(*ptep & PTE_U); -c01042df: 8b 45 f0 mov -0x10(%ebp),%eax -c01042e2: 8b 00 mov (%eax),%eax -c01042e4: 83 e0 04 and $0x4,%eax -c01042e7: 85 c0 test %eax,%eax -c01042e9: 75 19 jne c0104304 -c01042eb: 68 c4 aa 10 c0 push $0xc010aac4 -c01042f0: 68 ad a8 10 c0 push $0xc010a8ad -c01042f5: 68 20 02 00 00 push $0x220 -c01042fa: 68 88 a8 10 c0 push $0xc010a888 -c01042ff: e8 e0 c0 ff ff call c01003e4 <__panic> - assert(*ptep & PTE_W); -c0104304: 8b 45 f0 mov -0x10(%ebp),%eax -c0104307: 8b 00 mov (%eax),%eax -c0104309: 83 e0 02 and $0x2,%eax -c010430c: 85 c0 test %eax,%eax -c010430e: 75 19 jne c0104329 -c0104310: 68 d2 aa 10 c0 push $0xc010aad2 -c0104315: 68 ad a8 10 c0 push $0xc010a8ad -c010431a: 68 21 02 00 00 push $0x221 -c010431f: 68 88 a8 10 c0 push $0xc010a888 -c0104324: e8 bb c0 ff ff call c01003e4 <__panic> - assert(boot_pgdir[0] & PTE_U); -c0104329: a1 44 7a 12 c0 mov 0xc0127a44,%eax -c010432e: 8b 00 mov (%eax),%eax -c0104330: 83 e0 04 and $0x4,%eax -c0104333: 85 c0 test %eax,%eax -c0104335: 75 19 jne c0104350 -c0104337: 68 e0 aa 10 c0 push $0xc010aae0 -c010433c: 68 ad a8 10 c0 push $0xc010a8ad -c0104341: 68 22 02 00 00 push $0x222 -c0104346: 68 88 a8 10 c0 push $0xc010a888 -c010434b: e8 94 c0 ff ff call c01003e4 <__panic> - assert(page_ref(p2) == 1); -c0104350: 83 ec 0c sub $0xc,%esp -c0104353: ff 75 e4 pushl -0x1c(%ebp) -c0104356: e8 26 f0 ff ff call c0103381 -c010435b: 83 c4 10 add $0x10,%esp -c010435e: 83 f8 01 cmp $0x1,%eax -c0104361: 74 19 je c010437c -c0104363: 68 f6 aa 10 c0 push $0xc010aaf6 -c0104368: 68 ad a8 10 c0 push $0xc010a8ad -c010436d: 68 23 02 00 00 push $0x223 -c0104372: 68 88 a8 10 c0 push $0xc010a888 -c0104377: e8 68 c0 ff ff call c01003e4 <__panic> - - assert(page_insert(boot_pgdir, p1, PGSIZE, 0) == 0); -c010437c: a1 44 7a 12 c0 mov 0xc0127a44,%eax -c0104381: 6a 00 push $0x0 -c0104383: 68 00 10 00 00 push $0x1000 -c0104388: ff 75 f4 pushl -0xc(%ebp) -c010438b: 50 push %eax -c010438c: e8 1d fb ff ff call c0103eae -c0104391: 83 c4 10 add $0x10,%esp -c0104394: 85 c0 test %eax,%eax -c0104396: 74 19 je c01043b1 -c0104398: 68 08 ab 10 c0 push $0xc010ab08 -c010439d: 68 ad a8 10 c0 push $0xc010a8ad -c01043a2: 68 25 02 00 00 push $0x225 -c01043a7: 68 88 a8 10 c0 push $0xc010a888 -c01043ac: e8 33 c0 ff ff call c01003e4 <__panic> - assert(page_ref(p1) == 2); -c01043b1: 83 ec 0c sub $0xc,%esp -c01043b4: ff 75 f4 pushl -0xc(%ebp) -c01043b7: e8 c5 ef ff ff call c0103381 -c01043bc: 83 c4 10 add $0x10,%esp -c01043bf: 83 f8 02 cmp $0x2,%eax -c01043c2: 74 19 je c01043dd -c01043c4: 68 34 ab 10 c0 push $0xc010ab34 -c01043c9: 68 ad a8 10 c0 push $0xc010a8ad -c01043ce: 68 26 02 00 00 push $0x226 -c01043d3: 68 88 a8 10 c0 push $0xc010a888 -c01043d8: e8 07 c0 ff ff call c01003e4 <__panic> - assert(page_ref(p2) == 0); -c01043dd: 83 ec 0c sub $0xc,%esp -c01043e0: ff 75 e4 pushl -0x1c(%ebp) -c01043e3: e8 99 ef ff ff call c0103381 -c01043e8: 83 c4 10 add $0x10,%esp -c01043eb: 85 c0 test %eax,%eax -c01043ed: 74 19 je c0104408 -c01043ef: 68 46 ab 10 c0 push $0xc010ab46 -c01043f4: 68 ad a8 10 c0 push $0xc010a8ad -c01043f9: 68 27 02 00 00 push $0x227 -c01043fe: 68 88 a8 10 c0 push $0xc010a888 -c0104403: e8 dc bf ff ff call c01003e4 <__panic> - assert((ptep = get_pte(boot_pgdir, PGSIZE, 0)) != NULL); -c0104408: a1 44 7a 12 c0 mov 0xc0127a44,%eax -c010440d: 83 ec 04 sub $0x4,%esp -c0104410: 6a 00 push $0x0 -c0104412: 68 00 10 00 00 push $0x1000 -c0104417: 50 push %eax -c0104418: e8 5d f8 ff ff call c0103c7a -c010441d: 83 c4 10 add $0x10,%esp -c0104420: 89 45 f0 mov %eax,-0x10(%ebp) -c0104423: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) -c0104427: 75 19 jne c0104442 -c0104429: 68 94 aa 10 c0 push $0xc010aa94 -c010442e: 68 ad a8 10 c0 push $0xc010a8ad -c0104433: 68 28 02 00 00 push $0x228 -c0104438: 68 88 a8 10 c0 push $0xc010a888 -c010443d: e8 a2 bf ff ff call c01003e4 <__panic> - assert(pte2page(*ptep) == p1); -c0104442: 8b 45 f0 mov -0x10(%ebp),%eax -c0104445: 8b 00 mov (%eax),%eax -c0104447: 83 ec 0c sub $0xc,%esp -c010444a: 50 push %eax -c010444b: e8 db ee ff ff call c010332b -c0104450: 83 c4 10 add $0x10,%esp -c0104453: 3b 45 f4 cmp -0xc(%ebp),%eax -c0104456: 74 19 je c0104471 -c0104458: 68 09 aa 10 c0 push $0xc010aa09 -c010445d: 68 ad a8 10 c0 push $0xc010a8ad -c0104462: 68 29 02 00 00 push $0x229 -c0104467: 68 88 a8 10 c0 push $0xc010a888 -c010446c: e8 73 bf ff ff call c01003e4 <__panic> - assert((*ptep & PTE_U) == 0); -c0104471: 8b 45 f0 mov -0x10(%ebp),%eax -c0104474: 8b 00 mov (%eax),%eax -c0104476: 83 e0 04 and $0x4,%eax -c0104479: 85 c0 test %eax,%eax -c010447b: 74 19 je c0104496 -c010447d: 68 58 ab 10 c0 push $0xc010ab58 -c0104482: 68 ad a8 10 c0 push $0xc010a8ad -c0104487: 68 2a 02 00 00 push $0x22a -c010448c: 68 88 a8 10 c0 push $0xc010a888 -c0104491: e8 4e bf ff ff call c01003e4 <__panic> - - page_remove(boot_pgdir, 0x0); -c0104496: a1 44 7a 12 c0 mov 0xc0127a44,%eax -c010449b: 83 ec 08 sub $0x8,%esp -c010449e: 6a 00 push $0x0 -c01044a0: 50 push %eax -c01044a1: e8 cf f9 ff ff call c0103e75 -c01044a6: 83 c4 10 add $0x10,%esp - assert(page_ref(p1) == 1); -c01044a9: 83 ec 0c sub $0xc,%esp -c01044ac: ff 75 f4 pushl -0xc(%ebp) -c01044af: e8 cd ee ff ff call c0103381 -c01044b4: 83 c4 10 add $0x10,%esp -c01044b7: 83 f8 01 cmp $0x1,%eax -c01044ba: 74 19 je c01044d5 -c01044bc: 68 1f aa 10 c0 push $0xc010aa1f -c01044c1: 68 ad a8 10 c0 push $0xc010a8ad -c01044c6: 68 2d 02 00 00 push $0x22d -c01044cb: 68 88 a8 10 c0 push $0xc010a888 -c01044d0: e8 0f bf ff ff call c01003e4 <__panic> - assert(page_ref(p2) == 0); -c01044d5: 83 ec 0c sub $0xc,%esp -c01044d8: ff 75 e4 pushl -0x1c(%ebp) -c01044db: e8 a1 ee ff ff call c0103381 -c01044e0: 83 c4 10 add $0x10,%esp -c01044e3: 85 c0 test %eax,%eax -c01044e5: 74 19 je c0104500 -c01044e7: 68 46 ab 10 c0 push $0xc010ab46 -c01044ec: 68 ad a8 10 c0 push $0xc010a8ad -c01044f1: 68 2e 02 00 00 push $0x22e -c01044f6: 68 88 a8 10 c0 push $0xc010a888 -c01044fb: e8 e4 be ff ff call c01003e4 <__panic> - - page_remove(boot_pgdir, PGSIZE); -c0104500: a1 44 7a 12 c0 mov 0xc0127a44,%eax -c0104505: 83 ec 08 sub $0x8,%esp -c0104508: 68 00 10 00 00 push $0x1000 -c010450d: 50 push %eax -c010450e: e8 62 f9 ff ff call c0103e75 -c0104513: 83 c4 10 add $0x10,%esp - assert(page_ref(p1) == 0); -c0104516: 83 ec 0c sub $0xc,%esp -c0104519: ff 75 f4 pushl -0xc(%ebp) -c010451c: e8 60 ee ff ff call c0103381 -c0104521: 83 c4 10 add $0x10,%esp -c0104524: 85 c0 test %eax,%eax -c0104526: 74 19 je c0104541 -c0104528: 68 6d ab 10 c0 push $0xc010ab6d -c010452d: 68 ad a8 10 c0 push $0xc010a8ad -c0104532: 68 31 02 00 00 push $0x231 -c0104537: 68 88 a8 10 c0 push $0xc010a888 -c010453c: e8 a3 be ff ff call c01003e4 <__panic> - assert(page_ref(p2) == 0); -c0104541: 83 ec 0c sub $0xc,%esp -c0104544: ff 75 e4 pushl -0x1c(%ebp) -c0104547: e8 35 ee ff ff call c0103381 -c010454c: 83 c4 10 add $0x10,%esp -c010454f: 85 c0 test %eax,%eax -c0104551: 74 19 je c010456c -c0104553: 68 46 ab 10 c0 push $0xc010ab46 -c0104558: 68 ad a8 10 c0 push $0xc010a8ad -c010455d: 68 32 02 00 00 push $0x232 -c0104562: 68 88 a8 10 c0 push $0xc010a888 -c0104567: e8 78 be ff ff call c01003e4 <__panic> - - assert(page_ref(pde2page(boot_pgdir[0])) == 1); -c010456c: a1 44 7a 12 c0 mov 0xc0127a44,%eax -c0104571: 8b 00 mov (%eax),%eax -c0104573: 83 ec 0c sub $0xc,%esp -c0104576: 50 push %eax -c0104577: e8 e9 ed ff ff call c0103365 -c010457c: 83 c4 10 add $0x10,%esp -c010457f: 83 ec 0c sub $0xc,%esp -c0104582: 50 push %eax -c0104583: e8 f9 ed ff ff call c0103381 -c0104588: 83 c4 10 add $0x10,%esp -c010458b: 83 f8 01 cmp $0x1,%eax -c010458e: 74 19 je c01045a9 -c0104590: 68 80 ab 10 c0 push $0xc010ab80 -c0104595: 68 ad a8 10 c0 push $0xc010a8ad -c010459a: 68 34 02 00 00 push $0x234 -c010459f: 68 88 a8 10 c0 push $0xc010a888 -c01045a4: e8 3b be ff ff call c01003e4 <__panic> - free_page(pde2page(boot_pgdir[0])); -c01045a9: a1 44 7a 12 c0 mov 0xc0127a44,%eax -c01045ae: 8b 00 mov (%eax),%eax -c01045b0: 83 ec 0c sub $0xc,%esp -c01045b3: 50 push %eax -c01045b4: e8 ac ed ff ff call c0103365 -c01045b9: 83 c4 10 add $0x10,%esp -c01045bc: 83 ec 08 sub $0x8,%esp -c01045bf: 6a 01 push $0x1 -c01045c1: 50 push %eax -c01045c2: e8 34 f0 ff ff call c01035fb -c01045c7: 83 c4 10 add $0x10,%esp - boot_pgdir[0] = 0; -c01045ca: a1 44 7a 12 c0 mov 0xc0127a44,%eax -c01045cf: c7 00 00 00 00 00 movl $0x0,(%eax) - - cprintf("check_pgdir() succeeded!\n"); -c01045d5: 83 ec 0c sub $0xc,%esp -c01045d8: 68 a7 ab 10 c0 push $0xc010aba7 -c01045dd: e8 9c bc ff ff call c010027e -c01045e2: 83 c4 10 add $0x10,%esp -} -c01045e5: 90 nop -c01045e6: c9 leave -c01045e7: c3 ret - -c01045e8 : - -static void -check_boot_pgdir(void) { -c01045e8: 55 push %ebp -c01045e9: 89 e5 mov %esp,%ebp -c01045eb: 83 ec 28 sub $0x28,%esp - pte_t *ptep; - int i; - for (i = 0; i < npage; i += PGSIZE) { -c01045ee: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) -c01045f5: e9 a3 00 00 00 jmp c010469d - assert((ptep = get_pte(boot_pgdir, (uintptr_t)KADDR(i), 0)) != NULL); -c01045fa: 8b 45 f4 mov -0xc(%ebp),%eax -c01045fd: 89 45 f0 mov %eax,-0x10(%ebp) -c0104600: 8b 45 f0 mov -0x10(%ebp),%eax -c0104603: c1 e8 0c shr $0xc,%eax -c0104606: 89 45 ec mov %eax,-0x14(%ebp) -c0104609: a1 40 7a 12 c0 mov 0xc0127a40,%eax -c010460e: 39 45 ec cmp %eax,-0x14(%ebp) -c0104611: 72 17 jb c010462a -c0104613: ff 75 f0 pushl -0x10(%ebp) -c0104616: 68 c0 a7 10 c0 push $0xc010a7c0 -c010461b: 68 40 02 00 00 push $0x240 -c0104620: 68 88 a8 10 c0 push $0xc010a888 -c0104625: e8 ba bd ff ff call c01003e4 <__panic> -c010462a: 8b 45 f0 mov -0x10(%ebp),%eax -c010462d: 2d 00 00 00 40 sub $0x40000000,%eax -c0104632: 89 c2 mov %eax,%edx -c0104634: a1 44 7a 12 c0 mov 0xc0127a44,%eax -c0104639: 83 ec 04 sub $0x4,%esp -c010463c: 6a 00 push $0x0 -c010463e: 52 push %edx -c010463f: 50 push %eax -c0104640: e8 35 f6 ff ff call c0103c7a -c0104645: 83 c4 10 add $0x10,%esp -c0104648: 89 45 e8 mov %eax,-0x18(%ebp) -c010464b: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) -c010464f: 75 19 jne c010466a -c0104651: 68 c4 ab 10 c0 push $0xc010abc4 -c0104656: 68 ad a8 10 c0 push $0xc010a8ad -c010465b: 68 40 02 00 00 push $0x240 -c0104660: 68 88 a8 10 c0 push $0xc010a888 -c0104665: e8 7a bd ff ff call c01003e4 <__panic> - assert(PTE_ADDR(*ptep) == i); -c010466a: 8b 45 e8 mov -0x18(%ebp),%eax -c010466d: 8b 00 mov (%eax),%eax -c010466f: 25 00 f0 ff ff and $0xfffff000,%eax -c0104674: 89 c2 mov %eax,%edx -c0104676: 8b 45 f4 mov -0xc(%ebp),%eax -c0104679: 39 c2 cmp %eax,%edx -c010467b: 74 19 je c0104696 -c010467d: 68 01 ac 10 c0 push $0xc010ac01 -c0104682: 68 ad a8 10 c0 push $0xc010a8ad -c0104687: 68 41 02 00 00 push $0x241 -c010468c: 68 88 a8 10 c0 push $0xc010a888 -c0104691: e8 4e bd ff ff call c01003e4 <__panic> - -static void -check_boot_pgdir(void) { - pte_t *ptep; - int i; - for (i = 0; i < npage; i += PGSIZE) { -c0104696: 81 45 f4 00 10 00 00 addl $0x1000,-0xc(%ebp) -c010469d: 8b 55 f4 mov -0xc(%ebp),%edx -c01046a0: a1 40 7a 12 c0 mov 0xc0127a40,%eax -c01046a5: 39 c2 cmp %eax,%edx -c01046a7: 0f 82 4d ff ff ff jb c01045fa - assert((ptep = get_pte(boot_pgdir, (uintptr_t)KADDR(i), 0)) != NULL); - assert(PTE_ADDR(*ptep) == i); - } - - assert(PDE_ADDR(boot_pgdir[PDX(VPT)]) == PADDR(boot_pgdir)); -c01046ad: a1 44 7a 12 c0 mov 0xc0127a44,%eax -c01046b2: 05 ac 0f 00 00 add $0xfac,%eax -c01046b7: 8b 00 mov (%eax),%eax -c01046b9: 25 00 f0 ff ff and $0xfffff000,%eax -c01046be: 89 c2 mov %eax,%edx -c01046c0: a1 44 7a 12 c0 mov 0xc0127a44,%eax -c01046c5: 89 45 e4 mov %eax,-0x1c(%ebp) -c01046c8: 81 7d e4 ff ff ff bf cmpl $0xbfffffff,-0x1c(%ebp) -c01046cf: 77 17 ja c01046e8 -c01046d1: ff 75 e4 pushl -0x1c(%ebp) -c01046d4: 68 64 a8 10 c0 push $0xc010a864 -c01046d9: 68 44 02 00 00 push $0x244 -c01046de: 68 88 a8 10 c0 push $0xc010a888 -c01046e3: e8 fc bc ff ff call c01003e4 <__panic> -c01046e8: 8b 45 e4 mov -0x1c(%ebp),%eax -c01046eb: 05 00 00 00 40 add $0x40000000,%eax -c01046f0: 39 c2 cmp %eax,%edx -c01046f2: 74 19 je c010470d -c01046f4: 68 18 ac 10 c0 push $0xc010ac18 -c01046f9: 68 ad a8 10 c0 push $0xc010a8ad -c01046fe: 68 44 02 00 00 push $0x244 -c0104703: 68 88 a8 10 c0 push $0xc010a888 -c0104708: e8 d7 bc ff ff call c01003e4 <__panic> - - assert(boot_pgdir[0] == 0); -c010470d: a1 44 7a 12 c0 mov 0xc0127a44,%eax -c0104712: 8b 00 mov (%eax),%eax -c0104714: 85 c0 test %eax,%eax -c0104716: 74 19 je c0104731 -c0104718: 68 4c ac 10 c0 push $0xc010ac4c -c010471d: 68 ad a8 10 c0 push $0xc010a8ad -c0104722: 68 46 02 00 00 push $0x246 -c0104727: 68 88 a8 10 c0 push $0xc010a888 -c010472c: e8 b3 bc ff ff call c01003e4 <__panic> - - struct Page *p; - p = alloc_page(); -c0104731: 83 ec 0c sub $0xc,%esp -c0104734: 6a 01 push $0x1 -c0104736: e8 54 ee ff ff call c010358f -c010473b: 83 c4 10 add $0x10,%esp -c010473e: 89 45 e0 mov %eax,-0x20(%ebp) - assert(page_insert(boot_pgdir, p, 0x100, PTE_W) == 0); -c0104741: a1 44 7a 12 c0 mov 0xc0127a44,%eax -c0104746: 6a 02 push $0x2 -c0104748: 68 00 01 00 00 push $0x100 -c010474d: ff 75 e0 pushl -0x20(%ebp) -c0104750: 50 push %eax -c0104751: e8 58 f7 ff ff call c0103eae -c0104756: 83 c4 10 add $0x10,%esp -c0104759: 85 c0 test %eax,%eax -c010475b: 74 19 je c0104776 -c010475d: 68 60 ac 10 c0 push $0xc010ac60 -c0104762: 68 ad a8 10 c0 push $0xc010a8ad -c0104767: 68 4a 02 00 00 push $0x24a -c010476c: 68 88 a8 10 c0 push $0xc010a888 -c0104771: e8 6e bc ff ff call c01003e4 <__panic> - assert(page_ref(p) == 1); -c0104776: 83 ec 0c sub $0xc,%esp -c0104779: ff 75 e0 pushl -0x20(%ebp) -c010477c: e8 00 ec ff ff call c0103381 -c0104781: 83 c4 10 add $0x10,%esp -c0104784: 83 f8 01 cmp $0x1,%eax -c0104787: 74 19 je c01047a2 -c0104789: 68 8e ac 10 c0 push $0xc010ac8e -c010478e: 68 ad a8 10 c0 push $0xc010a8ad -c0104793: 68 4b 02 00 00 push $0x24b -c0104798: 68 88 a8 10 c0 push $0xc010a888 -c010479d: e8 42 bc ff ff call c01003e4 <__panic> - assert(page_insert(boot_pgdir, p, 0x100 + PGSIZE, PTE_W) == 0); -c01047a2: a1 44 7a 12 c0 mov 0xc0127a44,%eax -c01047a7: 6a 02 push $0x2 -c01047a9: 68 00 11 00 00 push $0x1100 -c01047ae: ff 75 e0 pushl -0x20(%ebp) -c01047b1: 50 push %eax -c01047b2: e8 f7 f6 ff ff call c0103eae -c01047b7: 83 c4 10 add $0x10,%esp -c01047ba: 85 c0 test %eax,%eax -c01047bc: 74 19 je c01047d7 -c01047be: 68 a0 ac 10 c0 push $0xc010aca0 -c01047c3: 68 ad a8 10 c0 push $0xc010a8ad -c01047c8: 68 4c 02 00 00 push $0x24c -c01047cd: 68 88 a8 10 c0 push $0xc010a888 -c01047d2: e8 0d bc ff ff call c01003e4 <__panic> - assert(page_ref(p) == 2); -c01047d7: 83 ec 0c sub $0xc,%esp -c01047da: ff 75 e0 pushl -0x20(%ebp) -c01047dd: e8 9f eb ff ff call c0103381 -c01047e2: 83 c4 10 add $0x10,%esp -c01047e5: 83 f8 02 cmp $0x2,%eax -c01047e8: 74 19 je c0104803 -c01047ea: 68 d7 ac 10 c0 push $0xc010acd7 -c01047ef: 68 ad a8 10 c0 push $0xc010a8ad -c01047f4: 68 4d 02 00 00 push $0x24d -c01047f9: 68 88 a8 10 c0 push $0xc010a888 -c01047fe: e8 e1 bb ff ff call c01003e4 <__panic> - - const char *str = "ucore: Hello world!!"; -c0104803: c7 45 dc e8 ac 10 c0 movl $0xc010ace8,-0x24(%ebp) - strcpy((void *)0x100, str); -c010480a: 83 ec 08 sub $0x8,%esp -c010480d: ff 75 dc pushl -0x24(%ebp) -c0104810: 68 00 01 00 00 push $0x100 -c0104815: e8 73 4b 00 00 call c010938d -c010481a: 83 c4 10 add $0x10,%esp - assert(strcmp((void *)0x100, (void *)(0x100 + PGSIZE)) == 0); -c010481d: 83 ec 08 sub $0x8,%esp -c0104820: 68 00 11 00 00 push $0x1100 -c0104825: 68 00 01 00 00 push $0x100 -c010482a: e8 d8 4b 00 00 call c0109407 -c010482f: 83 c4 10 add $0x10,%esp -c0104832: 85 c0 test %eax,%eax -c0104834: 74 19 je c010484f -c0104836: 68 00 ad 10 c0 push $0xc010ad00 -c010483b: 68 ad a8 10 c0 push $0xc010a8ad -c0104840: 68 51 02 00 00 push $0x251 -c0104845: 68 88 a8 10 c0 push $0xc010a888 -c010484a: e8 95 bb ff ff call c01003e4 <__panic> - - *(char *)(page2kva(p) + 0x100) = '\0'; -c010484f: 83 ec 0c sub $0xc,%esp -c0104852: ff 75 e0 pushl -0x20(%ebp) -c0104855: e8 8c ea ff ff call c01032e6 -c010485a: 83 c4 10 add $0x10,%esp -c010485d: 05 00 01 00 00 add $0x100,%eax -c0104862: c6 00 00 movb $0x0,(%eax) - assert(strlen((const char *)0x100) == 0); -c0104865: 83 ec 0c sub $0xc,%esp -c0104868: 68 00 01 00 00 push $0x100 -c010486d: e8 c3 4a 00 00 call c0109335 -c0104872: 83 c4 10 add $0x10,%esp -c0104875: 85 c0 test %eax,%eax -c0104877: 74 19 je c0104892 -c0104879: 68 38 ad 10 c0 push $0xc010ad38 -c010487e: 68 ad a8 10 c0 push $0xc010a8ad -c0104883: 68 54 02 00 00 push $0x254 -c0104888: 68 88 a8 10 c0 push $0xc010a888 -c010488d: e8 52 bb ff ff call c01003e4 <__panic> - - free_page(p); -c0104892: 83 ec 08 sub $0x8,%esp -c0104895: 6a 01 push $0x1 -c0104897: ff 75 e0 pushl -0x20(%ebp) -c010489a: e8 5c ed ff ff call c01035fb -c010489f: 83 c4 10 add $0x10,%esp - free_page(pde2page(boot_pgdir[0])); -c01048a2: a1 44 7a 12 c0 mov 0xc0127a44,%eax -c01048a7: 8b 00 mov (%eax),%eax -c01048a9: 83 ec 0c sub $0xc,%esp -c01048ac: 50 push %eax -c01048ad: e8 b3 ea ff ff call c0103365 -c01048b2: 83 c4 10 add $0x10,%esp -c01048b5: 83 ec 08 sub $0x8,%esp -c01048b8: 6a 01 push $0x1 -c01048ba: 50 push %eax -c01048bb: e8 3b ed ff ff call c01035fb -c01048c0: 83 c4 10 add $0x10,%esp - boot_pgdir[0] = 0; -c01048c3: a1 44 7a 12 c0 mov 0xc0127a44,%eax -c01048c8: c7 00 00 00 00 00 movl $0x0,(%eax) - - cprintf("check_boot_pgdir() succeeded!\n"); -c01048ce: 83 ec 0c sub $0xc,%esp -c01048d1: 68 5c ad 10 c0 push $0xc010ad5c -c01048d6: e8 a3 b9 ff ff call c010027e -c01048db: 83 c4 10 add $0x10,%esp -} -c01048de: 90 nop -c01048df: c9 leave -c01048e0: c3 ret - -c01048e1 : - -//perm2str - use string 'u,r,w,-' to present the permission -static const char * -perm2str(int perm) { -c01048e1: 55 push %ebp -c01048e2: 89 e5 mov %esp,%ebp - static char str[4]; - str[0] = (perm & PTE_U) ? 'u' : '-'; -c01048e4: 8b 45 08 mov 0x8(%ebp),%eax -c01048e7: 83 e0 04 and $0x4,%eax -c01048ea: 85 c0 test %eax,%eax -c01048ec: 74 07 je c01048f5 -c01048ee: b8 75 00 00 00 mov $0x75,%eax -c01048f3: eb 05 jmp c01048fa -c01048f5: b8 2d 00 00 00 mov $0x2d,%eax -c01048fa: a2 c8 7a 12 c0 mov %al,0xc0127ac8 - str[1] = 'r'; -c01048ff: c6 05 c9 7a 12 c0 72 movb $0x72,0xc0127ac9 - str[2] = (perm & PTE_W) ? 'w' : '-'; -c0104906: 8b 45 08 mov 0x8(%ebp),%eax -c0104909: 83 e0 02 and $0x2,%eax -c010490c: 85 c0 test %eax,%eax -c010490e: 74 07 je c0104917 -c0104910: b8 77 00 00 00 mov $0x77,%eax -c0104915: eb 05 jmp c010491c -c0104917: b8 2d 00 00 00 mov $0x2d,%eax -c010491c: a2 ca 7a 12 c0 mov %al,0xc0127aca - str[3] = '\0'; -c0104921: c6 05 cb 7a 12 c0 00 movb $0x0,0xc0127acb - return str; -c0104928: b8 c8 7a 12 c0 mov $0xc0127ac8,%eax -} -c010492d: 5d pop %ebp -c010492e: c3 ret - -c010492f : -// table: the beginning addr of table -// left_store: the pointer of the high side of table's next range -// right_store: the pointer of the low side of table's next range -// return value: 0 - not a invalid item range, perm - a valid item range with perm permission -static int -get_pgtable_items(size_t left, size_t right, size_t start, uintptr_t *table, size_t *left_store, size_t *right_store) { -c010492f: 55 push %ebp -c0104930: 89 e5 mov %esp,%ebp -c0104932: 83 ec 10 sub $0x10,%esp - if (start >= right) { -c0104935: 8b 45 10 mov 0x10(%ebp),%eax -c0104938: 3b 45 0c cmp 0xc(%ebp),%eax -c010493b: 72 0e jb c010494b - return 0; -c010493d: b8 00 00 00 00 mov $0x0,%eax -c0104942: e9 9a 00 00 00 jmp c01049e1 - } - while (start < right && !(table[start] & PTE_P)) { - start ++; -c0104947: 83 45 10 01 addl $0x1,0x10(%ebp) -static int -get_pgtable_items(size_t left, size_t right, size_t start, uintptr_t *table, size_t *left_store, size_t *right_store) { - if (start >= right) { - return 0; - } - while (start < right && !(table[start] & PTE_P)) { -c010494b: 8b 45 10 mov 0x10(%ebp),%eax -c010494e: 3b 45 0c cmp 0xc(%ebp),%eax -c0104951: 73 18 jae c010496b -c0104953: 8b 45 10 mov 0x10(%ebp),%eax -c0104956: 8d 14 85 00 00 00 00 lea 0x0(,%eax,4),%edx -c010495d: 8b 45 14 mov 0x14(%ebp),%eax -c0104960: 01 d0 add %edx,%eax -c0104962: 8b 00 mov (%eax),%eax -c0104964: 83 e0 01 and $0x1,%eax -c0104967: 85 c0 test %eax,%eax -c0104969: 74 dc je c0104947 - start ++; - } - if (start < right) { -c010496b: 8b 45 10 mov 0x10(%ebp),%eax -c010496e: 3b 45 0c cmp 0xc(%ebp),%eax -c0104971: 73 69 jae c01049dc - if (left_store != NULL) { -c0104973: 83 7d 18 00 cmpl $0x0,0x18(%ebp) -c0104977: 74 08 je c0104981 - *left_store = start; -c0104979: 8b 45 18 mov 0x18(%ebp),%eax -c010497c: 8b 55 10 mov 0x10(%ebp),%edx -c010497f: 89 10 mov %edx,(%eax) - } - int perm = (table[start ++] & PTE_USER); -c0104981: 8b 45 10 mov 0x10(%ebp),%eax -c0104984: 8d 50 01 lea 0x1(%eax),%edx -c0104987: 89 55 10 mov %edx,0x10(%ebp) -c010498a: 8d 14 85 00 00 00 00 lea 0x0(,%eax,4),%edx -c0104991: 8b 45 14 mov 0x14(%ebp),%eax -c0104994: 01 d0 add %edx,%eax -c0104996: 8b 00 mov (%eax),%eax -c0104998: 83 e0 07 and $0x7,%eax -c010499b: 89 45 fc mov %eax,-0x4(%ebp) - while (start < right && (table[start] & PTE_USER) == perm) { -c010499e: eb 04 jmp c01049a4 - start ++; -c01049a0: 83 45 10 01 addl $0x1,0x10(%ebp) - if (start < right) { - if (left_store != NULL) { - *left_store = start; - } - int perm = (table[start ++] & PTE_USER); - while (start < right && (table[start] & PTE_USER) == perm) { -c01049a4: 8b 45 10 mov 0x10(%ebp),%eax -c01049a7: 3b 45 0c cmp 0xc(%ebp),%eax -c01049aa: 73 1d jae c01049c9 -c01049ac: 8b 45 10 mov 0x10(%ebp),%eax -c01049af: 8d 14 85 00 00 00 00 lea 0x0(,%eax,4),%edx -c01049b6: 8b 45 14 mov 0x14(%ebp),%eax -c01049b9: 01 d0 add %edx,%eax -c01049bb: 8b 00 mov (%eax),%eax -c01049bd: 83 e0 07 and $0x7,%eax -c01049c0: 89 c2 mov %eax,%edx -c01049c2: 8b 45 fc mov -0x4(%ebp),%eax -c01049c5: 39 c2 cmp %eax,%edx -c01049c7: 74 d7 je c01049a0 - start ++; - } - if (right_store != NULL) { -c01049c9: 83 7d 1c 00 cmpl $0x0,0x1c(%ebp) -c01049cd: 74 08 je c01049d7 - *right_store = start; -c01049cf: 8b 45 1c mov 0x1c(%ebp),%eax -c01049d2: 8b 55 10 mov 0x10(%ebp),%edx -c01049d5: 89 10 mov %edx,(%eax) - } - return perm; -c01049d7: 8b 45 fc mov -0x4(%ebp),%eax -c01049da: eb 05 jmp c01049e1 - } - return 0; -c01049dc: b8 00 00 00 00 mov $0x0,%eax -} -c01049e1: c9 leave -c01049e2: c3 ret - -c01049e3 : - -//print_pgdir - print the PDT&PT -void -print_pgdir(void) { -c01049e3: 55 push %ebp -c01049e4: 89 e5 mov %esp,%ebp -c01049e6: 57 push %edi -c01049e7: 56 push %esi -c01049e8: 53 push %ebx -c01049e9: 83 ec 2c sub $0x2c,%esp - cprintf("-------------------- BEGIN --------------------\n"); -c01049ec: 83 ec 0c sub $0xc,%esp -c01049ef: 68 7c ad 10 c0 push $0xc010ad7c -c01049f4: e8 85 b8 ff ff call c010027e -c01049f9: 83 c4 10 add $0x10,%esp - size_t left, right = 0, perm; -c01049fc: c7 45 dc 00 00 00 00 movl $0x0,-0x24(%ebp) - while ((perm = get_pgtable_items(0, NPDEENTRY, right, vpd, &left, &right)) != 0) { -c0104a03: e9 e5 00 00 00 jmp c0104aed - cprintf("PDE(%03x) %08x-%08x %08x %s\n", right - left, -c0104a08: 8b 45 e4 mov -0x1c(%ebp),%eax -c0104a0b: 83 ec 0c sub $0xc,%esp -c0104a0e: 50 push %eax -c0104a0f: e8 cd fe ff ff call c01048e1 -c0104a14: 83 c4 10 add $0x10,%esp -c0104a17: 89 c7 mov %eax,%edi - left * PTSIZE, right * PTSIZE, (right - left) * PTSIZE, perm2str(perm)); -c0104a19: 8b 55 dc mov -0x24(%ebp),%edx -c0104a1c: 8b 45 e0 mov -0x20(%ebp),%eax -c0104a1f: 29 c2 sub %eax,%edx -c0104a21: 89 d0 mov %edx,%eax -void -print_pgdir(void) { - cprintf("-------------------- BEGIN --------------------\n"); - size_t left, right = 0, perm; - while ((perm = get_pgtable_items(0, NPDEENTRY, right, vpd, &left, &right)) != 0) { - cprintf("PDE(%03x) %08x-%08x %08x %s\n", right - left, -c0104a23: c1 e0 16 shl $0x16,%eax -c0104a26: 89 c3 mov %eax,%ebx -c0104a28: 8b 45 dc mov -0x24(%ebp),%eax -c0104a2b: c1 e0 16 shl $0x16,%eax -c0104a2e: 89 c1 mov %eax,%ecx -c0104a30: 8b 45 e0 mov -0x20(%ebp),%eax -c0104a33: c1 e0 16 shl $0x16,%eax -c0104a36: 89 c2 mov %eax,%edx -c0104a38: 8b 75 dc mov -0x24(%ebp),%esi -c0104a3b: 8b 45 e0 mov -0x20(%ebp),%eax -c0104a3e: 29 c6 sub %eax,%esi -c0104a40: 89 f0 mov %esi,%eax -c0104a42: 83 ec 08 sub $0x8,%esp -c0104a45: 57 push %edi -c0104a46: 53 push %ebx -c0104a47: 51 push %ecx -c0104a48: 52 push %edx -c0104a49: 50 push %eax -c0104a4a: 68 ad ad 10 c0 push $0xc010adad -c0104a4f: e8 2a b8 ff ff call c010027e -c0104a54: 83 c4 20 add $0x20,%esp - left * PTSIZE, right * PTSIZE, (right - left) * PTSIZE, perm2str(perm)); - size_t l, r = left * NPTEENTRY; -c0104a57: 8b 45 e0 mov -0x20(%ebp),%eax -c0104a5a: c1 e0 0a shl $0xa,%eax -c0104a5d: 89 45 d4 mov %eax,-0x2c(%ebp) - while ((perm = get_pgtable_items(left * NPTEENTRY, right * NPTEENTRY, r, vpt, &l, &r)) != 0) { -c0104a60: eb 4f jmp c0104ab1 - cprintf(" |-- PTE(%05x) %08x-%08x %08x %s\n", r - l, -c0104a62: 8b 45 e4 mov -0x1c(%ebp),%eax -c0104a65: 83 ec 0c sub $0xc,%esp -c0104a68: 50 push %eax -c0104a69: e8 73 fe ff ff call c01048e1 -c0104a6e: 83 c4 10 add $0x10,%esp -c0104a71: 89 c7 mov %eax,%edi - l * PGSIZE, r * PGSIZE, (r - l) * PGSIZE, perm2str(perm)); -c0104a73: 8b 55 d4 mov -0x2c(%ebp),%edx -c0104a76: 8b 45 d8 mov -0x28(%ebp),%eax -c0104a79: 29 c2 sub %eax,%edx -c0104a7b: 89 d0 mov %edx,%eax - while ((perm = get_pgtable_items(0, NPDEENTRY, right, vpd, &left, &right)) != 0) { - cprintf("PDE(%03x) %08x-%08x %08x %s\n", right - left, - left * PTSIZE, right * PTSIZE, (right - left) * PTSIZE, perm2str(perm)); - size_t l, r = left * NPTEENTRY; - while ((perm = get_pgtable_items(left * NPTEENTRY, right * NPTEENTRY, r, vpt, &l, &r)) != 0) { - cprintf(" |-- PTE(%05x) %08x-%08x %08x %s\n", r - l, -c0104a7d: c1 e0 0c shl $0xc,%eax -c0104a80: 89 c3 mov %eax,%ebx -c0104a82: 8b 45 d4 mov -0x2c(%ebp),%eax -c0104a85: c1 e0 0c shl $0xc,%eax -c0104a88: 89 c1 mov %eax,%ecx -c0104a8a: 8b 45 d8 mov -0x28(%ebp),%eax -c0104a8d: c1 e0 0c shl $0xc,%eax -c0104a90: 89 c2 mov %eax,%edx -c0104a92: 8b 75 d4 mov -0x2c(%ebp),%esi -c0104a95: 8b 45 d8 mov -0x28(%ebp),%eax -c0104a98: 29 c6 sub %eax,%esi -c0104a9a: 89 f0 mov %esi,%eax -c0104a9c: 83 ec 08 sub $0x8,%esp -c0104a9f: 57 push %edi -c0104aa0: 53 push %ebx -c0104aa1: 51 push %ecx -c0104aa2: 52 push %edx -c0104aa3: 50 push %eax -c0104aa4: 68 cc ad 10 c0 push $0xc010adcc -c0104aa9: e8 d0 b7 ff ff call c010027e -c0104aae: 83 c4 20 add $0x20,%esp - size_t left, right = 0, perm; - while ((perm = get_pgtable_items(0, NPDEENTRY, right, vpd, &left, &right)) != 0) { - cprintf("PDE(%03x) %08x-%08x %08x %s\n", right - left, - left * PTSIZE, right * PTSIZE, (right - left) * PTSIZE, perm2str(perm)); - size_t l, r = left * NPTEENTRY; - while ((perm = get_pgtable_items(left * NPTEENTRY, right * NPTEENTRY, r, vpt, &l, &r)) != 0) { -c0104ab1: be 00 00 c0 fa mov $0xfac00000,%esi -c0104ab6: 8b 45 d4 mov -0x2c(%ebp),%eax -c0104ab9: 8b 55 dc mov -0x24(%ebp),%edx -c0104abc: 89 d3 mov %edx,%ebx -c0104abe: c1 e3 0a shl $0xa,%ebx -c0104ac1: 8b 55 e0 mov -0x20(%ebp),%edx -c0104ac4: 89 d1 mov %edx,%ecx -c0104ac6: c1 e1 0a shl $0xa,%ecx -c0104ac9: 83 ec 08 sub $0x8,%esp -c0104acc: 8d 55 d4 lea -0x2c(%ebp),%edx -c0104acf: 52 push %edx -c0104ad0: 8d 55 d8 lea -0x28(%ebp),%edx -c0104ad3: 52 push %edx -c0104ad4: 56 push %esi -c0104ad5: 50 push %eax -c0104ad6: 53 push %ebx -c0104ad7: 51 push %ecx -c0104ad8: e8 52 fe ff ff call c010492f -c0104add: 83 c4 20 add $0x20,%esp -c0104ae0: 89 45 e4 mov %eax,-0x1c(%ebp) -c0104ae3: 83 7d e4 00 cmpl $0x0,-0x1c(%ebp) -c0104ae7: 0f 85 75 ff ff ff jne c0104a62 -//print_pgdir - print the PDT&PT -void -print_pgdir(void) { - cprintf("-------------------- BEGIN --------------------\n"); - size_t left, right = 0, perm; - while ((perm = get_pgtable_items(0, NPDEENTRY, right, vpd, &left, &right)) != 0) { -c0104aed: b9 00 b0 fe fa mov $0xfafeb000,%ecx -c0104af2: 8b 45 dc mov -0x24(%ebp),%eax -c0104af5: 83 ec 08 sub $0x8,%esp -c0104af8: 8d 55 dc lea -0x24(%ebp),%edx -c0104afb: 52 push %edx -c0104afc: 8d 55 e0 lea -0x20(%ebp),%edx -c0104aff: 52 push %edx -c0104b00: 51 push %ecx -c0104b01: 50 push %eax -c0104b02: 68 00 04 00 00 push $0x400 -c0104b07: 6a 00 push $0x0 -c0104b09: e8 21 fe ff ff call c010492f -c0104b0e: 83 c4 20 add $0x20,%esp -c0104b11: 89 45 e4 mov %eax,-0x1c(%ebp) -c0104b14: 83 7d e4 00 cmpl $0x0,-0x1c(%ebp) -c0104b18: 0f 85 ea fe ff ff jne c0104a08 - while ((perm = get_pgtable_items(left * NPTEENTRY, right * NPTEENTRY, r, vpt, &l, &r)) != 0) { - cprintf(" |-- PTE(%05x) %08x-%08x %08x %s\n", r - l, - l * PGSIZE, r * PGSIZE, (r - l) * PGSIZE, perm2str(perm)); - } - } - cprintf("--------------------- END ---------------------\n"); -c0104b1e: 83 ec 0c sub $0xc,%esp -c0104b21: 68 f0 ad 10 c0 push $0xc010adf0 -c0104b26: e8 53 b7 ff ff call c010027e -c0104b2b: 83 c4 10 add $0x10,%esp -} -c0104b2e: 90 nop -c0104b2f: 8d 65 f4 lea -0xc(%ebp),%esp -c0104b32: 5b pop %ebx -c0104b33: 5e pop %esi -c0104b34: 5f pop %edi -c0104b35: 5d pop %ebp -c0104b36: c3 ret - -c0104b37 : -page2pa(struct Page *page) { - return page2ppn(page) << PGSHIFT; -} - -static inline struct Page * -pa2page(uintptr_t pa) { -c0104b37: 55 push %ebp -c0104b38: 89 e5 mov %esp,%ebp -c0104b3a: 83 ec 08 sub $0x8,%esp - if (PPN(pa) >= npage) { -c0104b3d: 8b 45 08 mov 0x8(%ebp),%eax -c0104b40: c1 e8 0c shr $0xc,%eax -c0104b43: 89 c2 mov %eax,%edx -c0104b45: a1 40 7a 12 c0 mov 0xc0127a40,%eax -c0104b4a: 39 c2 cmp %eax,%edx -c0104b4c: 72 14 jb c0104b62 - panic("pa2page called with invalid pa"); -c0104b4e: 83 ec 04 sub $0x4,%esp -c0104b51: 68 24 ae 10 c0 push $0xc010ae24 -c0104b56: 6a 5f push $0x5f -c0104b58: 68 43 ae 10 c0 push $0xc010ae43 -c0104b5d: e8 82 b8 ff ff call c01003e4 <__panic> - } - return &pages[PPN(pa)]; -c0104b62: a1 20 9b 12 c0 mov 0xc0129b20,%eax -c0104b67: 8b 55 08 mov 0x8(%ebp),%edx -c0104b6a: c1 ea 0c shr $0xc,%edx -c0104b6d: c1 e2 05 shl $0x5,%edx -c0104b70: 01 d0 add %edx,%eax -} -c0104b72: c9 leave -c0104b73: c3 ret - -c0104b74 : - } - return pa2page(PTE_ADDR(pte)); -} - -static inline struct Page * -pde2page(pde_t pde) { -c0104b74: 55 push %ebp -c0104b75: 89 e5 mov %esp,%ebp -c0104b77: 83 ec 08 sub $0x8,%esp - return pa2page(PDE_ADDR(pde)); -c0104b7a: 8b 45 08 mov 0x8(%ebp),%eax -c0104b7d: 25 00 f0 ff ff and $0xfffff000,%eax -c0104b82: 83 ec 0c sub $0xc,%esp -c0104b85: 50 push %eax -c0104b86: e8 ac ff ff ff call c0104b37 -c0104b8b: 83 c4 10 add $0x10,%esp -} -c0104b8e: c9 leave -c0104b8f: c3 ret - -c0104b90 : -static void check_vma_struct(void); -static void check_pgfault(void); - -// mm_create - alloc a mm_struct & initialize it. -struct mm_struct * -mm_create(void) { -c0104b90: 55 push %ebp -c0104b91: 89 e5 mov %esp,%ebp -c0104b93: 83 ec 18 sub $0x18,%esp - struct mm_struct *mm = kmalloc(sizeof(struct mm_struct)); -c0104b96: 83 ec 0c sub $0xc,%esp -c0104b99: 6a 18 push $0x18 -c0104b9b: e8 ef 1d 00 00 call c010698f -c0104ba0: 83 c4 10 add $0x10,%esp -c0104ba3: 89 45 f4 mov %eax,-0xc(%ebp) - - if (mm != NULL) { -c0104ba6: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c0104baa: 74 5b je c0104c07 - list_init(&(mm->mmap_list)); -c0104bac: 8b 45 f4 mov -0xc(%ebp),%eax -c0104baf: 89 45 f0 mov %eax,-0x10(%ebp) - * list_init - initialize a new entry - * @elm: new entry to be initialized - * */ -static inline void -list_init(list_entry_t *elm) { - elm->prev = elm->next = elm; -c0104bb2: 8b 45 f0 mov -0x10(%ebp),%eax -c0104bb5: 8b 55 f0 mov -0x10(%ebp),%edx -c0104bb8: 89 50 04 mov %edx,0x4(%eax) -c0104bbb: 8b 45 f0 mov -0x10(%ebp),%eax -c0104bbe: 8b 50 04 mov 0x4(%eax),%edx -c0104bc1: 8b 45 f0 mov -0x10(%ebp),%eax -c0104bc4: 89 10 mov %edx,(%eax) - mm->mmap_cache = NULL; -c0104bc6: 8b 45 f4 mov -0xc(%ebp),%eax -c0104bc9: c7 40 08 00 00 00 00 movl $0x0,0x8(%eax) - mm->pgdir = NULL; -c0104bd0: 8b 45 f4 mov -0xc(%ebp),%eax -c0104bd3: c7 40 0c 00 00 00 00 movl $0x0,0xc(%eax) - mm->map_count = 0; -c0104bda: 8b 45 f4 mov -0xc(%ebp),%eax -c0104bdd: c7 40 10 00 00 00 00 movl $0x0,0x10(%eax) - - if (swap_init_ok) swap_init_mm(mm); -c0104be4: a1 d0 7a 12 c0 mov 0xc0127ad0,%eax -c0104be9: 85 c0 test %eax,%eax -c0104beb: 74 10 je c0104bfd -c0104bed: 83 ec 0c sub $0xc,%esp -c0104bf0: ff 75 f4 pushl -0xc(%ebp) -c0104bf3: e8 16 0c 00 00 call c010580e -c0104bf8: 83 c4 10 add $0x10,%esp -c0104bfb: eb 0a jmp c0104c07 - else mm->sm_priv = NULL; -c0104bfd: 8b 45 f4 mov -0xc(%ebp),%eax -c0104c00: c7 40 14 00 00 00 00 movl $0x0,0x14(%eax) - } - return mm; -c0104c07: 8b 45 f4 mov -0xc(%ebp),%eax -} -c0104c0a: c9 leave -c0104c0b: c3 ret - -c0104c0c : - -// vma_create - alloc a vma_struct & initialize it. (addr range: vm_start~vm_end) -struct vma_struct * -vma_create(uintptr_t vm_start, uintptr_t vm_end, uint32_t vm_flags) { -c0104c0c: 55 push %ebp -c0104c0d: 89 e5 mov %esp,%ebp -c0104c0f: 83 ec 18 sub $0x18,%esp - struct vma_struct *vma = kmalloc(sizeof(struct vma_struct)); -c0104c12: 83 ec 0c sub $0xc,%esp -c0104c15: 6a 18 push $0x18 -c0104c17: e8 73 1d 00 00 call c010698f -c0104c1c: 83 c4 10 add $0x10,%esp -c0104c1f: 89 45 f4 mov %eax,-0xc(%ebp) - - if (vma != NULL) { -c0104c22: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c0104c26: 74 1b je c0104c43 - vma->vm_start = vm_start; -c0104c28: 8b 45 f4 mov -0xc(%ebp),%eax -c0104c2b: 8b 55 08 mov 0x8(%ebp),%edx -c0104c2e: 89 50 04 mov %edx,0x4(%eax) - vma->vm_end = vm_end; -c0104c31: 8b 45 f4 mov -0xc(%ebp),%eax -c0104c34: 8b 55 0c mov 0xc(%ebp),%edx -c0104c37: 89 50 08 mov %edx,0x8(%eax) - vma->vm_flags = vm_flags; -c0104c3a: 8b 45 f4 mov -0xc(%ebp),%eax -c0104c3d: 8b 55 10 mov 0x10(%ebp),%edx -c0104c40: 89 50 0c mov %edx,0xc(%eax) - } - return vma; -c0104c43: 8b 45 f4 mov -0xc(%ebp),%eax -} -c0104c46: c9 leave -c0104c47: c3 ret - -c0104c48 : - - -// find_vma - find a vma (vma->vm_start <= addr <= vma_vm_end) -struct vma_struct * -find_vma(struct mm_struct *mm, uintptr_t addr) { -c0104c48: 55 push %ebp -c0104c49: 89 e5 mov %esp,%ebp -c0104c4b: 83 ec 20 sub $0x20,%esp - struct vma_struct *vma = NULL; -c0104c4e: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp) - if (mm != NULL) { -c0104c55: 83 7d 08 00 cmpl $0x0,0x8(%ebp) -c0104c59: 0f 84 95 00 00 00 je c0104cf4 - vma = mm->mmap_cache; -c0104c5f: 8b 45 08 mov 0x8(%ebp),%eax -c0104c62: 8b 40 08 mov 0x8(%eax),%eax -c0104c65: 89 45 fc mov %eax,-0x4(%ebp) - if (!(vma != NULL && vma->vm_start <= addr && vma->vm_end > addr)) { -c0104c68: 83 7d fc 00 cmpl $0x0,-0x4(%ebp) -c0104c6c: 74 16 je c0104c84 -c0104c6e: 8b 45 fc mov -0x4(%ebp),%eax -c0104c71: 8b 40 04 mov 0x4(%eax),%eax -c0104c74: 3b 45 0c cmp 0xc(%ebp),%eax -c0104c77: 77 0b ja c0104c84 -c0104c79: 8b 45 fc mov -0x4(%ebp),%eax -c0104c7c: 8b 40 08 mov 0x8(%eax),%eax -c0104c7f: 3b 45 0c cmp 0xc(%ebp),%eax -c0104c82: 77 61 ja c0104ce5 - bool found = 0; -c0104c84: c7 45 f8 00 00 00 00 movl $0x0,-0x8(%ebp) - list_entry_t *list = &(mm->mmap_list), *le = list; -c0104c8b: 8b 45 08 mov 0x8(%ebp),%eax -c0104c8e: 89 45 f0 mov %eax,-0x10(%ebp) -c0104c91: 8b 45 f0 mov -0x10(%ebp),%eax -c0104c94: 89 45 f4 mov %eax,-0xc(%ebp) - while ((le = list_next(le)) != list) { -c0104c97: eb 28 jmp c0104cc1 - vma = le2vma(le, list_link); -c0104c99: 8b 45 f4 mov -0xc(%ebp),%eax -c0104c9c: 83 e8 10 sub $0x10,%eax -c0104c9f: 89 45 fc mov %eax,-0x4(%ebp) - if (vma->vm_start<=addr && addr < vma->vm_end) { -c0104ca2: 8b 45 fc mov -0x4(%ebp),%eax -c0104ca5: 8b 40 04 mov 0x4(%eax),%eax -c0104ca8: 3b 45 0c cmp 0xc(%ebp),%eax -c0104cab: 77 14 ja c0104cc1 -c0104cad: 8b 45 fc mov -0x4(%ebp),%eax -c0104cb0: 8b 40 08 mov 0x8(%eax),%eax -c0104cb3: 3b 45 0c cmp 0xc(%ebp),%eax -c0104cb6: 76 09 jbe c0104cc1 - found = 1; -c0104cb8: c7 45 f8 01 00 00 00 movl $0x1,-0x8(%ebp) - break; -c0104cbf: eb 17 jmp c0104cd8 -c0104cc1: 8b 45 f4 mov -0xc(%ebp),%eax -c0104cc4: 89 45 ec mov %eax,-0x14(%ebp) - * list_next - get the next entry - * @listelm: the list head - **/ -static inline list_entry_t * -list_next(list_entry_t *listelm) { - return listelm->next; -c0104cc7: 8b 45 ec mov -0x14(%ebp),%eax -c0104cca: 8b 40 04 mov 0x4(%eax),%eax - if (mm != NULL) { - vma = mm->mmap_cache; - if (!(vma != NULL && vma->vm_start <= addr && vma->vm_end > addr)) { - bool found = 0; - list_entry_t *list = &(mm->mmap_list), *le = list; - while ((le = list_next(le)) != list) { -c0104ccd: 89 45 f4 mov %eax,-0xc(%ebp) -c0104cd0: 8b 45 f4 mov -0xc(%ebp),%eax -c0104cd3: 3b 45 f0 cmp -0x10(%ebp),%eax -c0104cd6: 75 c1 jne c0104c99 - if (vma->vm_start<=addr && addr < vma->vm_end) { - found = 1; - break; - } - } - if (!found) { -c0104cd8: 83 7d f8 00 cmpl $0x0,-0x8(%ebp) -c0104cdc: 75 07 jne c0104ce5 - vma = NULL; -c0104cde: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp) - } - } - if (vma != NULL) { -c0104ce5: 83 7d fc 00 cmpl $0x0,-0x4(%ebp) -c0104ce9: 74 09 je c0104cf4 - mm->mmap_cache = vma; -c0104ceb: 8b 45 08 mov 0x8(%ebp),%eax -c0104cee: 8b 55 fc mov -0x4(%ebp),%edx -c0104cf1: 89 50 08 mov %edx,0x8(%eax) - } - } - return vma; -c0104cf4: 8b 45 fc mov -0x4(%ebp),%eax -} -c0104cf7: c9 leave -c0104cf8: c3 ret - -c0104cf9 : - - -// check_vma_overlap - check if vma1 overlaps vma2 ? -static inline void -check_vma_overlap(struct vma_struct *prev, struct vma_struct *next) { -c0104cf9: 55 push %ebp -c0104cfa: 89 e5 mov %esp,%ebp -c0104cfc: 83 ec 08 sub $0x8,%esp - assert(prev->vm_start < prev->vm_end); -c0104cff: 8b 45 08 mov 0x8(%ebp),%eax -c0104d02: 8b 50 04 mov 0x4(%eax),%edx -c0104d05: 8b 45 08 mov 0x8(%ebp),%eax -c0104d08: 8b 40 08 mov 0x8(%eax),%eax -c0104d0b: 39 c2 cmp %eax,%edx -c0104d0d: 72 16 jb c0104d25 -c0104d0f: 68 51 ae 10 c0 push $0xc010ae51 -c0104d14: 68 6f ae 10 c0 push $0xc010ae6f -c0104d19: 6a 68 push $0x68 -c0104d1b: 68 84 ae 10 c0 push $0xc010ae84 -c0104d20: e8 bf b6 ff ff call c01003e4 <__panic> - assert(prev->vm_end <= next->vm_start); -c0104d25: 8b 45 08 mov 0x8(%ebp),%eax -c0104d28: 8b 50 08 mov 0x8(%eax),%edx -c0104d2b: 8b 45 0c mov 0xc(%ebp),%eax -c0104d2e: 8b 40 04 mov 0x4(%eax),%eax -c0104d31: 39 c2 cmp %eax,%edx -c0104d33: 76 16 jbe c0104d4b -c0104d35: 68 94 ae 10 c0 push $0xc010ae94 -c0104d3a: 68 6f ae 10 c0 push $0xc010ae6f -c0104d3f: 6a 69 push $0x69 -c0104d41: 68 84 ae 10 c0 push $0xc010ae84 -c0104d46: e8 99 b6 ff ff call c01003e4 <__panic> - assert(next->vm_start < next->vm_end); -c0104d4b: 8b 45 0c mov 0xc(%ebp),%eax -c0104d4e: 8b 50 04 mov 0x4(%eax),%edx -c0104d51: 8b 45 0c mov 0xc(%ebp),%eax -c0104d54: 8b 40 08 mov 0x8(%eax),%eax -c0104d57: 39 c2 cmp %eax,%edx -c0104d59: 72 16 jb c0104d71 -c0104d5b: 68 b3 ae 10 c0 push $0xc010aeb3 -c0104d60: 68 6f ae 10 c0 push $0xc010ae6f -c0104d65: 6a 6a push $0x6a -c0104d67: 68 84 ae 10 c0 push $0xc010ae84 -c0104d6c: e8 73 b6 ff ff call c01003e4 <__panic> -} -c0104d71: 90 nop -c0104d72: c9 leave -c0104d73: c3 ret - -c0104d74 : - - -// insert_vma_struct -insert vma in mm's list link -void -insert_vma_struct(struct mm_struct *mm, struct vma_struct *vma) { -c0104d74: 55 push %ebp -c0104d75: 89 e5 mov %esp,%ebp -c0104d77: 83 ec 38 sub $0x38,%esp - assert(vma->vm_start < vma->vm_end); -c0104d7a: 8b 45 0c mov 0xc(%ebp),%eax -c0104d7d: 8b 50 04 mov 0x4(%eax),%edx -c0104d80: 8b 45 0c mov 0xc(%ebp),%eax -c0104d83: 8b 40 08 mov 0x8(%eax),%eax -c0104d86: 39 c2 cmp %eax,%edx -c0104d88: 72 16 jb c0104da0 -c0104d8a: 68 d1 ae 10 c0 push $0xc010aed1 -c0104d8f: 68 6f ae 10 c0 push $0xc010ae6f -c0104d94: 6a 71 push $0x71 -c0104d96: 68 84 ae 10 c0 push $0xc010ae84 -c0104d9b: e8 44 b6 ff ff call c01003e4 <__panic> - list_entry_t *list = &(mm->mmap_list); -c0104da0: 8b 45 08 mov 0x8(%ebp),%eax -c0104da3: 89 45 ec mov %eax,-0x14(%ebp) - list_entry_t *le_prev = list, *le_next; -c0104da6: 8b 45 ec mov -0x14(%ebp),%eax -c0104da9: 89 45 f4 mov %eax,-0xc(%ebp) - - list_entry_t *le = list; -c0104dac: 8b 45 ec mov -0x14(%ebp),%eax -c0104daf: 89 45 f0 mov %eax,-0x10(%ebp) - while ((le = list_next(le)) != list) { -c0104db2: eb 1f jmp c0104dd3 - struct vma_struct *mmap_prev = le2vma(le, list_link); -c0104db4: 8b 45 f0 mov -0x10(%ebp),%eax -c0104db7: 83 e8 10 sub $0x10,%eax -c0104dba: 89 45 e4 mov %eax,-0x1c(%ebp) - if (mmap_prev->vm_start > vma->vm_start) { -c0104dbd: 8b 45 e4 mov -0x1c(%ebp),%eax -c0104dc0: 8b 50 04 mov 0x4(%eax),%edx -c0104dc3: 8b 45 0c mov 0xc(%ebp),%eax -c0104dc6: 8b 40 04 mov 0x4(%eax),%eax -c0104dc9: 39 c2 cmp %eax,%edx -c0104dcb: 77 1f ja c0104dec - break; - } - le_prev = le; -c0104dcd: 8b 45 f0 mov -0x10(%ebp),%eax -c0104dd0: 89 45 f4 mov %eax,-0xc(%ebp) -c0104dd3: 8b 45 f0 mov -0x10(%ebp),%eax -c0104dd6: 89 45 d8 mov %eax,-0x28(%ebp) -c0104dd9: 8b 45 d8 mov -0x28(%ebp),%eax -c0104ddc: 8b 40 04 mov 0x4(%eax),%eax - assert(vma->vm_start < vma->vm_end); - list_entry_t *list = &(mm->mmap_list); - list_entry_t *le_prev = list, *le_next; - - list_entry_t *le = list; - while ((le = list_next(le)) != list) { -c0104ddf: 89 45 f0 mov %eax,-0x10(%ebp) -c0104de2: 8b 45 f0 mov -0x10(%ebp),%eax -c0104de5: 3b 45 ec cmp -0x14(%ebp),%eax -c0104de8: 75 ca jne c0104db4 -c0104dea: eb 01 jmp c0104ded - struct vma_struct *mmap_prev = le2vma(le, list_link); - if (mmap_prev->vm_start > vma->vm_start) { - break; -c0104dec: 90 nop -c0104ded: 8b 45 f4 mov -0xc(%ebp),%eax -c0104df0: 89 45 e8 mov %eax,-0x18(%ebp) -c0104df3: 8b 45 e8 mov -0x18(%ebp),%eax -c0104df6: 8b 40 04 mov 0x4(%eax),%eax - } - le_prev = le; - } - - le_next = list_next(le_prev); -c0104df9: 89 45 dc mov %eax,-0x24(%ebp) - - /* check overlap */ - if (le_prev != list) { -c0104dfc: 8b 45 f4 mov -0xc(%ebp),%eax -c0104dff: 3b 45 ec cmp -0x14(%ebp),%eax -c0104e02: 74 15 je c0104e19 - check_vma_overlap(le2vma(le_prev, list_link), vma); -c0104e04: 8b 45 f4 mov -0xc(%ebp),%eax -c0104e07: 83 e8 10 sub $0x10,%eax -c0104e0a: 83 ec 08 sub $0x8,%esp -c0104e0d: ff 75 0c pushl 0xc(%ebp) -c0104e10: 50 push %eax -c0104e11: e8 e3 fe ff ff call c0104cf9 -c0104e16: 83 c4 10 add $0x10,%esp - } - if (le_next != list) { -c0104e19: 8b 45 dc mov -0x24(%ebp),%eax -c0104e1c: 3b 45 ec cmp -0x14(%ebp),%eax -c0104e1f: 74 15 je c0104e36 - check_vma_overlap(vma, le2vma(le_next, list_link)); -c0104e21: 8b 45 dc mov -0x24(%ebp),%eax -c0104e24: 83 e8 10 sub $0x10,%eax -c0104e27: 83 ec 08 sub $0x8,%esp -c0104e2a: 50 push %eax -c0104e2b: ff 75 0c pushl 0xc(%ebp) -c0104e2e: e8 c6 fe ff ff call c0104cf9 -c0104e33: 83 c4 10 add $0x10,%esp - } - - vma->vm_mm = mm; -c0104e36: 8b 45 0c mov 0xc(%ebp),%eax -c0104e39: 8b 55 08 mov 0x8(%ebp),%edx -c0104e3c: 89 10 mov %edx,(%eax) - list_add_after(le_prev, &(vma->list_link)); -c0104e3e: 8b 45 0c mov 0xc(%ebp),%eax -c0104e41: 8d 50 10 lea 0x10(%eax),%edx -c0104e44: 8b 45 f4 mov -0xc(%ebp),%eax -c0104e47: 89 45 e0 mov %eax,-0x20(%ebp) -c0104e4a: 89 55 d4 mov %edx,-0x2c(%ebp) - * Insert the new element @elm *after* the element @listelm which - * is already in the list. - * */ -static inline void -list_add_after(list_entry_t *listelm, list_entry_t *elm) { - __list_add(elm, listelm, listelm->next); -c0104e4d: 8b 45 e0 mov -0x20(%ebp),%eax -c0104e50: 8b 40 04 mov 0x4(%eax),%eax -c0104e53: 8b 55 d4 mov -0x2c(%ebp),%edx -c0104e56: 89 55 d0 mov %edx,-0x30(%ebp) -c0104e59: 8b 55 e0 mov -0x20(%ebp),%edx -c0104e5c: 89 55 cc mov %edx,-0x34(%ebp) -c0104e5f: 89 45 c8 mov %eax,-0x38(%ebp) - * This is only for internal list manipulation where we know - * the prev/next entries already! - * */ -static inline void -__list_add(list_entry_t *elm, list_entry_t *prev, list_entry_t *next) { - prev->next = next->prev = elm; -c0104e62: 8b 45 c8 mov -0x38(%ebp),%eax -c0104e65: 8b 55 d0 mov -0x30(%ebp),%edx -c0104e68: 89 10 mov %edx,(%eax) -c0104e6a: 8b 45 c8 mov -0x38(%ebp),%eax -c0104e6d: 8b 10 mov (%eax),%edx -c0104e6f: 8b 45 cc mov -0x34(%ebp),%eax -c0104e72: 89 50 04 mov %edx,0x4(%eax) - elm->next = next; -c0104e75: 8b 45 d0 mov -0x30(%ebp),%eax -c0104e78: 8b 55 c8 mov -0x38(%ebp),%edx -c0104e7b: 89 50 04 mov %edx,0x4(%eax) - elm->prev = prev; -c0104e7e: 8b 45 d0 mov -0x30(%ebp),%eax -c0104e81: 8b 55 cc mov -0x34(%ebp),%edx -c0104e84: 89 10 mov %edx,(%eax) - - mm->map_count ++; -c0104e86: 8b 45 08 mov 0x8(%ebp),%eax -c0104e89: 8b 40 10 mov 0x10(%eax),%eax -c0104e8c: 8d 50 01 lea 0x1(%eax),%edx -c0104e8f: 8b 45 08 mov 0x8(%ebp),%eax -c0104e92: 89 50 10 mov %edx,0x10(%eax) -} -c0104e95: 90 nop -c0104e96: c9 leave -c0104e97: c3 ret - -c0104e98 : - -// mm_destroy - free mm and mm internal fields -void -mm_destroy(struct mm_struct *mm) { -c0104e98: 55 push %ebp -c0104e99: 89 e5 mov %esp,%ebp -c0104e9b: 83 ec 28 sub $0x28,%esp - - list_entry_t *list = &(mm->mmap_list), *le; -c0104e9e: 8b 45 08 mov 0x8(%ebp),%eax -c0104ea1: 89 45 f4 mov %eax,-0xc(%ebp) - while ((le = list_next(list)) != list) { -c0104ea4: eb 3a jmp c0104ee0 -c0104ea6: 8b 45 f0 mov -0x10(%ebp),%eax -c0104ea9: 89 45 e8 mov %eax,-0x18(%ebp) - * Note: list_empty() on @listelm does not return true after this, the entry is - * in an undefined state. - * */ -static inline void -list_del(list_entry_t *listelm) { - __list_del(listelm->prev, listelm->next); -c0104eac: 8b 45 e8 mov -0x18(%ebp),%eax -c0104eaf: 8b 40 04 mov 0x4(%eax),%eax -c0104eb2: 8b 55 e8 mov -0x18(%ebp),%edx -c0104eb5: 8b 12 mov (%edx),%edx -c0104eb7: 89 55 e4 mov %edx,-0x1c(%ebp) -c0104eba: 89 45 e0 mov %eax,-0x20(%ebp) - * This is only for internal list manipulation where we know - * the prev/next entries already! - * */ -static inline void -__list_del(list_entry_t *prev, list_entry_t *next) { - prev->next = next; -c0104ebd: 8b 45 e4 mov -0x1c(%ebp),%eax -c0104ec0: 8b 55 e0 mov -0x20(%ebp),%edx -c0104ec3: 89 50 04 mov %edx,0x4(%eax) - next->prev = prev; -c0104ec6: 8b 45 e0 mov -0x20(%ebp),%eax -c0104ec9: 8b 55 e4 mov -0x1c(%ebp),%edx -c0104ecc: 89 10 mov %edx,(%eax) - list_del(le); - kfree(le2vma(le, list_link)); //kfree vma -c0104ece: 8b 45 f0 mov -0x10(%ebp),%eax -c0104ed1: 83 e8 10 sub $0x10,%eax -c0104ed4: 83 ec 0c sub $0xc,%esp -c0104ed7: 50 push %eax -c0104ed8: e8 ca 1a 00 00 call c01069a7 -c0104edd: 83 c4 10 add $0x10,%esp -c0104ee0: 8b 45 f4 mov -0xc(%ebp),%eax -c0104ee3: 89 45 ec mov %eax,-0x14(%ebp) - * list_next - get the next entry - * @listelm: the list head - **/ -static inline list_entry_t * -list_next(list_entry_t *listelm) { - return listelm->next; -c0104ee6: 8b 45 ec mov -0x14(%ebp),%eax -c0104ee9: 8b 40 04 mov 0x4(%eax),%eax -// mm_destroy - free mm and mm internal fields -void -mm_destroy(struct mm_struct *mm) { - - list_entry_t *list = &(mm->mmap_list), *le; - while ((le = list_next(list)) != list) { -c0104eec: 89 45 f0 mov %eax,-0x10(%ebp) -c0104eef: 8b 45 f0 mov -0x10(%ebp),%eax -c0104ef2: 3b 45 f4 cmp -0xc(%ebp),%eax -c0104ef5: 75 af jne c0104ea6 - list_del(le); - kfree(le2vma(le, list_link)); //kfree vma - } - kfree(mm); //kfree mm -c0104ef7: 83 ec 0c sub $0xc,%esp -c0104efa: ff 75 08 pushl 0x8(%ebp) -c0104efd: e8 a5 1a 00 00 call c01069a7 -c0104f02: 83 c4 10 add $0x10,%esp - mm=NULL; -c0104f05: c7 45 08 00 00 00 00 movl $0x0,0x8(%ebp) -} -c0104f0c: 90 nop -c0104f0d: c9 leave -c0104f0e: c3 ret - -c0104f0f : - -// vmm_init - initialize virtual memory management -// - now just call check_vmm to check correctness of vmm -void -vmm_init(void) { -c0104f0f: 55 push %ebp -c0104f10: 89 e5 mov %esp,%ebp -c0104f12: 83 ec 08 sub $0x8,%esp - check_vmm(); -c0104f15: e8 03 00 00 00 call c0104f1d -} -c0104f1a: 90 nop -c0104f1b: c9 leave -c0104f1c: c3 ret - -c0104f1d : - -// check_vmm - check correctness of vmm -static void -check_vmm(void) { -c0104f1d: 55 push %ebp -c0104f1e: 89 e5 mov %esp,%ebp -c0104f20: 83 ec 18 sub $0x18,%esp - size_t nr_free_pages_store = nr_free_pages(); -c0104f23: e8 08 e7 ff ff call c0103630 -c0104f28: 89 45 f4 mov %eax,-0xc(%ebp) - - check_vma_struct(); -c0104f2b: e8 18 00 00 00 call c0104f48 - check_pgfault(); -c0104f30: e8 10 04 00 00 call c0105345 - - cprintf("check_vmm() succeeded.\n"); -c0104f35: 83 ec 0c sub $0xc,%esp -c0104f38: 68 ed ae 10 c0 push $0xc010aeed -c0104f3d: e8 3c b3 ff ff call c010027e -c0104f42: 83 c4 10 add $0x10,%esp -} -c0104f45: 90 nop -c0104f46: c9 leave -c0104f47: c3 ret - -c0104f48 : - -static void -check_vma_struct(void) { -c0104f48: 55 push %ebp -c0104f49: 89 e5 mov %esp,%ebp -c0104f4b: 83 ec 58 sub $0x58,%esp - size_t nr_free_pages_store = nr_free_pages(); -c0104f4e: e8 dd e6 ff ff call c0103630 -c0104f53: 89 45 ec mov %eax,-0x14(%ebp) - - struct mm_struct *mm = mm_create(); -c0104f56: e8 35 fc ff ff call c0104b90 -c0104f5b: 89 45 e8 mov %eax,-0x18(%ebp) - assert(mm != NULL); -c0104f5e: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) -c0104f62: 75 19 jne c0104f7d -c0104f64: 68 05 af 10 c0 push $0xc010af05 -c0104f69: 68 6f ae 10 c0 push $0xc010ae6f -c0104f6e: 68 b2 00 00 00 push $0xb2 -c0104f73: 68 84 ae 10 c0 push $0xc010ae84 -c0104f78: e8 67 b4 ff ff call c01003e4 <__panic> - - int step1 = 10, step2 = step1 * 10; -c0104f7d: c7 45 e4 0a 00 00 00 movl $0xa,-0x1c(%ebp) -c0104f84: 8b 55 e4 mov -0x1c(%ebp),%edx -c0104f87: 89 d0 mov %edx,%eax -c0104f89: c1 e0 02 shl $0x2,%eax -c0104f8c: 01 d0 add %edx,%eax -c0104f8e: 01 c0 add %eax,%eax -c0104f90: 89 45 e0 mov %eax,-0x20(%ebp) - - int i; - for (i = step1; i >= 1; i --) { -c0104f93: 8b 45 e4 mov -0x1c(%ebp),%eax -c0104f96: 89 45 f4 mov %eax,-0xc(%ebp) -c0104f99: eb 5f jmp c0104ffa - struct vma_struct *vma = vma_create(i * 5, i * 5 + 2, 0); -c0104f9b: 8b 55 f4 mov -0xc(%ebp),%edx -c0104f9e: 89 d0 mov %edx,%eax -c0104fa0: c1 e0 02 shl $0x2,%eax -c0104fa3: 01 d0 add %edx,%eax -c0104fa5: 83 c0 02 add $0x2,%eax -c0104fa8: 89 c1 mov %eax,%ecx -c0104faa: 8b 55 f4 mov -0xc(%ebp),%edx -c0104fad: 89 d0 mov %edx,%eax -c0104faf: c1 e0 02 shl $0x2,%eax -c0104fb2: 01 d0 add %edx,%eax -c0104fb4: 83 ec 04 sub $0x4,%esp -c0104fb7: 6a 00 push $0x0 -c0104fb9: 51 push %ecx -c0104fba: 50 push %eax -c0104fbb: e8 4c fc ff ff call c0104c0c -c0104fc0: 83 c4 10 add $0x10,%esp -c0104fc3: 89 45 dc mov %eax,-0x24(%ebp) - assert(vma != NULL); -c0104fc6: 83 7d dc 00 cmpl $0x0,-0x24(%ebp) -c0104fca: 75 19 jne c0104fe5 -c0104fcc: 68 10 af 10 c0 push $0xc010af10 -c0104fd1: 68 6f ae 10 c0 push $0xc010ae6f -c0104fd6: 68 b9 00 00 00 push $0xb9 -c0104fdb: 68 84 ae 10 c0 push $0xc010ae84 -c0104fe0: e8 ff b3 ff ff call c01003e4 <__panic> - insert_vma_struct(mm, vma); -c0104fe5: 83 ec 08 sub $0x8,%esp -c0104fe8: ff 75 dc pushl -0x24(%ebp) -c0104feb: ff 75 e8 pushl -0x18(%ebp) -c0104fee: e8 81 fd ff ff call c0104d74 -c0104ff3: 83 c4 10 add $0x10,%esp - assert(mm != NULL); - - int step1 = 10, step2 = step1 * 10; - - int i; - for (i = step1; i >= 1; i --) { -c0104ff6: 83 6d f4 01 subl $0x1,-0xc(%ebp) -c0104ffa: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c0104ffe: 7f 9b jg c0104f9b - struct vma_struct *vma = vma_create(i * 5, i * 5 + 2, 0); - assert(vma != NULL); - insert_vma_struct(mm, vma); - } - - for (i = step1 + 1; i <= step2; i ++) { -c0105000: 8b 45 e4 mov -0x1c(%ebp),%eax -c0105003: 83 c0 01 add $0x1,%eax -c0105006: 89 45 f4 mov %eax,-0xc(%ebp) -c0105009: eb 5f jmp c010506a - struct vma_struct *vma = vma_create(i * 5, i * 5 + 2, 0); -c010500b: 8b 55 f4 mov -0xc(%ebp),%edx -c010500e: 89 d0 mov %edx,%eax -c0105010: c1 e0 02 shl $0x2,%eax -c0105013: 01 d0 add %edx,%eax -c0105015: 83 c0 02 add $0x2,%eax -c0105018: 89 c1 mov %eax,%ecx -c010501a: 8b 55 f4 mov -0xc(%ebp),%edx -c010501d: 89 d0 mov %edx,%eax -c010501f: c1 e0 02 shl $0x2,%eax -c0105022: 01 d0 add %edx,%eax -c0105024: 83 ec 04 sub $0x4,%esp -c0105027: 6a 00 push $0x0 -c0105029: 51 push %ecx -c010502a: 50 push %eax -c010502b: e8 dc fb ff ff call c0104c0c -c0105030: 83 c4 10 add $0x10,%esp -c0105033: 89 45 d8 mov %eax,-0x28(%ebp) - assert(vma != NULL); -c0105036: 83 7d d8 00 cmpl $0x0,-0x28(%ebp) -c010503a: 75 19 jne c0105055 -c010503c: 68 10 af 10 c0 push $0xc010af10 -c0105041: 68 6f ae 10 c0 push $0xc010ae6f -c0105046: 68 bf 00 00 00 push $0xbf -c010504b: 68 84 ae 10 c0 push $0xc010ae84 -c0105050: e8 8f b3 ff ff call c01003e4 <__panic> - insert_vma_struct(mm, vma); -c0105055: 83 ec 08 sub $0x8,%esp -c0105058: ff 75 d8 pushl -0x28(%ebp) -c010505b: ff 75 e8 pushl -0x18(%ebp) -c010505e: e8 11 fd ff ff call c0104d74 -c0105063: 83 c4 10 add $0x10,%esp - struct vma_struct *vma = vma_create(i * 5, i * 5 + 2, 0); - assert(vma != NULL); - insert_vma_struct(mm, vma); - } - - for (i = step1 + 1; i <= step2; i ++) { -c0105066: 83 45 f4 01 addl $0x1,-0xc(%ebp) -c010506a: 8b 45 f4 mov -0xc(%ebp),%eax -c010506d: 3b 45 e0 cmp -0x20(%ebp),%eax -c0105070: 7e 99 jle c010500b - struct vma_struct *vma = vma_create(i * 5, i * 5 + 2, 0); - assert(vma != NULL); - insert_vma_struct(mm, vma); - } - - list_entry_t *le = list_next(&(mm->mmap_list)); -c0105072: 8b 45 e8 mov -0x18(%ebp),%eax -c0105075: 89 45 b4 mov %eax,-0x4c(%ebp) -c0105078: 8b 45 b4 mov -0x4c(%ebp),%eax -c010507b: 8b 40 04 mov 0x4(%eax),%eax -c010507e: 89 45 f0 mov %eax,-0x10(%ebp) - - for (i = 1; i <= step2; i ++) { -c0105081: c7 45 f4 01 00 00 00 movl $0x1,-0xc(%ebp) -c0105088: e9 81 00 00 00 jmp c010510e - assert(le != &(mm->mmap_list)); -c010508d: 8b 45 e8 mov -0x18(%ebp),%eax -c0105090: 3b 45 f0 cmp -0x10(%ebp),%eax -c0105093: 75 19 jne c01050ae -c0105095: 68 1c af 10 c0 push $0xc010af1c -c010509a: 68 6f ae 10 c0 push $0xc010ae6f -c010509f: 68 c6 00 00 00 push $0xc6 -c01050a4: 68 84 ae 10 c0 push $0xc010ae84 -c01050a9: e8 36 b3 ff ff call c01003e4 <__panic> - struct vma_struct *mmap = le2vma(le, list_link); -c01050ae: 8b 45 f0 mov -0x10(%ebp),%eax -c01050b1: 83 e8 10 sub $0x10,%eax -c01050b4: 89 45 d0 mov %eax,-0x30(%ebp) - assert(mmap->vm_start == i * 5 && mmap->vm_end == i * 5 + 2); -c01050b7: 8b 45 d0 mov -0x30(%ebp),%eax -c01050ba: 8b 48 04 mov 0x4(%eax),%ecx -c01050bd: 8b 55 f4 mov -0xc(%ebp),%edx -c01050c0: 89 d0 mov %edx,%eax -c01050c2: c1 e0 02 shl $0x2,%eax -c01050c5: 01 d0 add %edx,%eax -c01050c7: 39 c1 cmp %eax,%ecx -c01050c9: 75 17 jne c01050e2 -c01050cb: 8b 45 d0 mov -0x30(%ebp),%eax -c01050ce: 8b 48 08 mov 0x8(%eax),%ecx -c01050d1: 8b 55 f4 mov -0xc(%ebp),%edx -c01050d4: 89 d0 mov %edx,%eax -c01050d6: c1 e0 02 shl $0x2,%eax -c01050d9: 01 d0 add %edx,%eax -c01050db: 83 c0 02 add $0x2,%eax -c01050de: 39 c1 cmp %eax,%ecx -c01050e0: 74 19 je c01050fb -c01050e2: 68 34 af 10 c0 push $0xc010af34 -c01050e7: 68 6f ae 10 c0 push $0xc010ae6f -c01050ec: 68 c8 00 00 00 push $0xc8 -c01050f1: 68 84 ae 10 c0 push $0xc010ae84 -c01050f6: e8 e9 b2 ff ff call c01003e4 <__panic> -c01050fb: 8b 45 f0 mov -0x10(%ebp),%eax -c01050fe: 89 45 d4 mov %eax,-0x2c(%ebp) -c0105101: 8b 45 d4 mov -0x2c(%ebp),%eax -c0105104: 8b 40 04 mov 0x4(%eax),%eax - le = list_next(le); -c0105107: 89 45 f0 mov %eax,-0x10(%ebp) - insert_vma_struct(mm, vma); - } - - list_entry_t *le = list_next(&(mm->mmap_list)); - - for (i = 1; i <= step2; i ++) { -c010510a: 83 45 f4 01 addl $0x1,-0xc(%ebp) -c010510e: 8b 45 f4 mov -0xc(%ebp),%eax -c0105111: 3b 45 e0 cmp -0x20(%ebp),%eax -c0105114: 0f 8e 73 ff ff ff jle c010508d - struct vma_struct *mmap = le2vma(le, list_link); - assert(mmap->vm_start == i * 5 && mmap->vm_end == i * 5 + 2); - le = list_next(le); - } - - for (i = 5; i <= 5 * step2; i +=5) { -c010511a: c7 45 f4 05 00 00 00 movl $0x5,-0xc(%ebp) -c0105121: e9 80 01 00 00 jmp c01052a6 - struct vma_struct *vma1 = find_vma(mm, i); -c0105126: 8b 45 f4 mov -0xc(%ebp),%eax -c0105129: 83 ec 08 sub $0x8,%esp -c010512c: 50 push %eax -c010512d: ff 75 e8 pushl -0x18(%ebp) -c0105130: e8 13 fb ff ff call c0104c48 -c0105135: 83 c4 10 add $0x10,%esp -c0105138: 89 45 cc mov %eax,-0x34(%ebp) - assert(vma1 != NULL); -c010513b: 83 7d cc 00 cmpl $0x0,-0x34(%ebp) -c010513f: 75 19 jne c010515a -c0105141: 68 69 af 10 c0 push $0xc010af69 -c0105146: 68 6f ae 10 c0 push $0xc010ae6f -c010514b: 68 ce 00 00 00 push $0xce -c0105150: 68 84 ae 10 c0 push $0xc010ae84 -c0105155: e8 8a b2 ff ff call c01003e4 <__panic> - struct vma_struct *vma2 = find_vma(mm, i+1); -c010515a: 8b 45 f4 mov -0xc(%ebp),%eax -c010515d: 83 c0 01 add $0x1,%eax -c0105160: 83 ec 08 sub $0x8,%esp -c0105163: 50 push %eax -c0105164: ff 75 e8 pushl -0x18(%ebp) -c0105167: e8 dc fa ff ff call c0104c48 -c010516c: 83 c4 10 add $0x10,%esp -c010516f: 89 45 c8 mov %eax,-0x38(%ebp) - assert(vma2 != NULL); -c0105172: 83 7d c8 00 cmpl $0x0,-0x38(%ebp) -c0105176: 75 19 jne c0105191 -c0105178: 68 76 af 10 c0 push $0xc010af76 -c010517d: 68 6f ae 10 c0 push $0xc010ae6f -c0105182: 68 d0 00 00 00 push $0xd0 -c0105187: 68 84 ae 10 c0 push $0xc010ae84 -c010518c: e8 53 b2 ff ff call c01003e4 <__panic> - struct vma_struct *vma3 = find_vma(mm, i+2); -c0105191: 8b 45 f4 mov -0xc(%ebp),%eax -c0105194: 83 c0 02 add $0x2,%eax -c0105197: 83 ec 08 sub $0x8,%esp -c010519a: 50 push %eax -c010519b: ff 75 e8 pushl -0x18(%ebp) -c010519e: e8 a5 fa ff ff call c0104c48 -c01051a3: 83 c4 10 add $0x10,%esp -c01051a6: 89 45 c4 mov %eax,-0x3c(%ebp) - assert(vma3 == NULL); -c01051a9: 83 7d c4 00 cmpl $0x0,-0x3c(%ebp) -c01051ad: 74 19 je c01051c8 -c01051af: 68 83 af 10 c0 push $0xc010af83 -c01051b4: 68 6f ae 10 c0 push $0xc010ae6f -c01051b9: 68 d2 00 00 00 push $0xd2 -c01051be: 68 84 ae 10 c0 push $0xc010ae84 -c01051c3: e8 1c b2 ff ff call c01003e4 <__panic> - struct vma_struct *vma4 = find_vma(mm, i+3); -c01051c8: 8b 45 f4 mov -0xc(%ebp),%eax -c01051cb: 83 c0 03 add $0x3,%eax -c01051ce: 83 ec 08 sub $0x8,%esp -c01051d1: 50 push %eax -c01051d2: ff 75 e8 pushl -0x18(%ebp) -c01051d5: e8 6e fa ff ff call c0104c48 -c01051da: 83 c4 10 add $0x10,%esp -c01051dd: 89 45 c0 mov %eax,-0x40(%ebp) - assert(vma4 == NULL); -c01051e0: 83 7d c0 00 cmpl $0x0,-0x40(%ebp) -c01051e4: 74 19 je c01051ff -c01051e6: 68 90 af 10 c0 push $0xc010af90 -c01051eb: 68 6f ae 10 c0 push $0xc010ae6f -c01051f0: 68 d4 00 00 00 push $0xd4 -c01051f5: 68 84 ae 10 c0 push $0xc010ae84 -c01051fa: e8 e5 b1 ff ff call c01003e4 <__panic> - struct vma_struct *vma5 = find_vma(mm, i+4); -c01051ff: 8b 45 f4 mov -0xc(%ebp),%eax -c0105202: 83 c0 04 add $0x4,%eax -c0105205: 83 ec 08 sub $0x8,%esp -c0105208: 50 push %eax -c0105209: ff 75 e8 pushl -0x18(%ebp) -c010520c: e8 37 fa ff ff call c0104c48 -c0105211: 83 c4 10 add $0x10,%esp -c0105214: 89 45 bc mov %eax,-0x44(%ebp) - assert(vma5 == NULL); -c0105217: 83 7d bc 00 cmpl $0x0,-0x44(%ebp) -c010521b: 74 19 je c0105236 -c010521d: 68 9d af 10 c0 push $0xc010af9d -c0105222: 68 6f ae 10 c0 push $0xc010ae6f -c0105227: 68 d6 00 00 00 push $0xd6 -c010522c: 68 84 ae 10 c0 push $0xc010ae84 -c0105231: e8 ae b1 ff ff call c01003e4 <__panic> - - assert(vma1->vm_start == i && vma1->vm_end == i + 2); -c0105236: 8b 45 cc mov -0x34(%ebp),%eax -c0105239: 8b 50 04 mov 0x4(%eax),%edx -c010523c: 8b 45 f4 mov -0xc(%ebp),%eax -c010523f: 39 c2 cmp %eax,%edx -c0105241: 75 10 jne c0105253 -c0105243: 8b 45 cc mov -0x34(%ebp),%eax -c0105246: 8b 40 08 mov 0x8(%eax),%eax -c0105249: 8b 55 f4 mov -0xc(%ebp),%edx -c010524c: 83 c2 02 add $0x2,%edx -c010524f: 39 d0 cmp %edx,%eax -c0105251: 74 19 je c010526c -c0105253: 68 ac af 10 c0 push $0xc010afac -c0105258: 68 6f ae 10 c0 push $0xc010ae6f -c010525d: 68 d8 00 00 00 push $0xd8 -c0105262: 68 84 ae 10 c0 push $0xc010ae84 -c0105267: e8 78 b1 ff ff call c01003e4 <__panic> - assert(vma2->vm_start == i && vma2->vm_end == i + 2); -c010526c: 8b 45 c8 mov -0x38(%ebp),%eax -c010526f: 8b 50 04 mov 0x4(%eax),%edx -c0105272: 8b 45 f4 mov -0xc(%ebp),%eax -c0105275: 39 c2 cmp %eax,%edx -c0105277: 75 10 jne c0105289 -c0105279: 8b 45 c8 mov -0x38(%ebp),%eax -c010527c: 8b 40 08 mov 0x8(%eax),%eax -c010527f: 8b 55 f4 mov -0xc(%ebp),%edx -c0105282: 83 c2 02 add $0x2,%edx -c0105285: 39 d0 cmp %edx,%eax -c0105287: 74 19 je c01052a2 -c0105289: 68 dc af 10 c0 push $0xc010afdc -c010528e: 68 6f ae 10 c0 push $0xc010ae6f -c0105293: 68 d9 00 00 00 push $0xd9 -c0105298: 68 84 ae 10 c0 push $0xc010ae84 -c010529d: e8 42 b1 ff ff call c01003e4 <__panic> - struct vma_struct *mmap = le2vma(le, list_link); - assert(mmap->vm_start == i * 5 && mmap->vm_end == i * 5 + 2); - le = list_next(le); - } - - for (i = 5; i <= 5 * step2; i +=5) { -c01052a2: 83 45 f4 05 addl $0x5,-0xc(%ebp) -c01052a6: 8b 55 e0 mov -0x20(%ebp),%edx -c01052a9: 89 d0 mov %edx,%eax -c01052ab: c1 e0 02 shl $0x2,%eax -c01052ae: 01 d0 add %edx,%eax -c01052b0: 3b 45 f4 cmp -0xc(%ebp),%eax -c01052b3: 0f 8d 6d fe ff ff jge c0105126 - - assert(vma1->vm_start == i && vma1->vm_end == i + 2); - assert(vma2->vm_start == i && vma2->vm_end == i + 2); - } - - for (i =4; i>=0; i--) { -c01052b9: c7 45 f4 04 00 00 00 movl $0x4,-0xc(%ebp) -c01052c0: eb 5c jmp c010531e - struct vma_struct *vma_below_5= find_vma(mm,i); -c01052c2: 8b 45 f4 mov -0xc(%ebp),%eax -c01052c5: 83 ec 08 sub $0x8,%esp -c01052c8: 50 push %eax -c01052c9: ff 75 e8 pushl -0x18(%ebp) -c01052cc: e8 77 f9 ff ff call c0104c48 -c01052d1: 83 c4 10 add $0x10,%esp -c01052d4: 89 45 b8 mov %eax,-0x48(%ebp) - if (vma_below_5 != NULL ) { -c01052d7: 83 7d b8 00 cmpl $0x0,-0x48(%ebp) -c01052db: 74 1e je c01052fb - cprintf("vma_below_5: i %x, start %x, end %x\n",i, vma_below_5->vm_start, vma_below_5->vm_end); -c01052dd: 8b 45 b8 mov -0x48(%ebp),%eax -c01052e0: 8b 50 08 mov 0x8(%eax),%edx -c01052e3: 8b 45 b8 mov -0x48(%ebp),%eax -c01052e6: 8b 40 04 mov 0x4(%eax),%eax -c01052e9: 52 push %edx -c01052ea: 50 push %eax -c01052eb: ff 75 f4 pushl -0xc(%ebp) -c01052ee: 68 0c b0 10 c0 push $0xc010b00c -c01052f3: e8 86 af ff ff call c010027e -c01052f8: 83 c4 10 add $0x10,%esp - } - assert(vma_below_5 == NULL); -c01052fb: 83 7d b8 00 cmpl $0x0,-0x48(%ebp) -c01052ff: 74 19 je c010531a -c0105301: 68 31 b0 10 c0 push $0xc010b031 -c0105306: 68 6f ae 10 c0 push $0xc010ae6f -c010530b: 68 e1 00 00 00 push $0xe1 -c0105310: 68 84 ae 10 c0 push $0xc010ae84 -c0105315: e8 ca b0 ff ff call c01003e4 <__panic> - - assert(vma1->vm_start == i && vma1->vm_end == i + 2); - assert(vma2->vm_start == i && vma2->vm_end == i + 2); - } - - for (i =4; i>=0; i--) { -c010531a: 83 6d f4 01 subl $0x1,-0xc(%ebp) -c010531e: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c0105322: 79 9e jns c01052c2 - cprintf("vma_below_5: i %x, start %x, end %x\n",i, vma_below_5->vm_start, vma_below_5->vm_end); - } - assert(vma_below_5 == NULL); - } - - mm_destroy(mm); -c0105324: 83 ec 0c sub $0xc,%esp -c0105327: ff 75 e8 pushl -0x18(%ebp) -c010532a: e8 69 fb ff ff call c0104e98 -c010532f: 83 c4 10 add $0x10,%esp - - cprintf("check_vma_struct() succeeded!\n"); -c0105332: 83 ec 0c sub $0xc,%esp -c0105335: 68 48 b0 10 c0 push $0xc010b048 -c010533a: e8 3f af ff ff call c010027e -c010533f: 83 c4 10 add $0x10,%esp -} -c0105342: 90 nop -c0105343: c9 leave -c0105344: c3 ret - -c0105345 : - -struct mm_struct *check_mm_struct; - -// check_pgfault - check correctness of pgfault handler -static void -check_pgfault(void) { -c0105345: 55 push %ebp -c0105346: 89 e5 mov %esp,%ebp -c0105348: 83 ec 28 sub $0x28,%esp - size_t nr_free_pages_store = nr_free_pages(); -c010534b: e8 e0 e2 ff ff call c0103630 -c0105350: 89 45 ec mov %eax,-0x14(%ebp) - - check_mm_struct = mm_create(); -c0105353: e8 38 f8 ff ff call c0104b90 -c0105358: a3 24 9b 12 c0 mov %eax,0xc0129b24 - assert(check_mm_struct != NULL); -c010535d: a1 24 9b 12 c0 mov 0xc0129b24,%eax -c0105362: 85 c0 test %eax,%eax -c0105364: 75 19 jne c010537f -c0105366: 68 67 b0 10 c0 push $0xc010b067 -c010536b: 68 6f ae 10 c0 push $0xc010ae6f -c0105370: 68 f1 00 00 00 push $0xf1 -c0105375: 68 84 ae 10 c0 push $0xc010ae84 -c010537a: e8 65 b0 ff ff call c01003e4 <__panic> - - struct mm_struct *mm = check_mm_struct; -c010537f: a1 24 9b 12 c0 mov 0xc0129b24,%eax -c0105384: 89 45 e8 mov %eax,-0x18(%ebp) - pde_t *pgdir = mm->pgdir = boot_pgdir; -c0105387: 8b 15 44 7a 12 c0 mov 0xc0127a44,%edx -c010538d: 8b 45 e8 mov -0x18(%ebp),%eax -c0105390: 89 50 0c mov %edx,0xc(%eax) -c0105393: 8b 45 e8 mov -0x18(%ebp),%eax -c0105396: 8b 40 0c mov 0xc(%eax),%eax -c0105399: 89 45 e4 mov %eax,-0x1c(%ebp) - assert(pgdir[0] == 0); -c010539c: 8b 45 e4 mov -0x1c(%ebp),%eax -c010539f: 8b 00 mov (%eax),%eax -c01053a1: 85 c0 test %eax,%eax -c01053a3: 74 19 je c01053be -c01053a5: 68 7f b0 10 c0 push $0xc010b07f -c01053aa: 68 6f ae 10 c0 push $0xc010ae6f -c01053af: 68 f5 00 00 00 push $0xf5 -c01053b4: 68 84 ae 10 c0 push $0xc010ae84 -c01053b9: e8 26 b0 ff ff call c01003e4 <__panic> - - struct vma_struct *vma = vma_create(0, PTSIZE, VM_WRITE); -c01053be: 83 ec 04 sub $0x4,%esp -c01053c1: 6a 02 push $0x2 -c01053c3: 68 00 00 40 00 push $0x400000 -c01053c8: 6a 00 push $0x0 -c01053ca: e8 3d f8 ff ff call c0104c0c -c01053cf: 83 c4 10 add $0x10,%esp -c01053d2: 89 45 e0 mov %eax,-0x20(%ebp) - assert(vma != NULL); -c01053d5: 83 7d e0 00 cmpl $0x0,-0x20(%ebp) -c01053d9: 75 19 jne c01053f4 -c01053db: 68 10 af 10 c0 push $0xc010af10 -c01053e0: 68 6f ae 10 c0 push $0xc010ae6f -c01053e5: 68 f8 00 00 00 push $0xf8 -c01053ea: 68 84 ae 10 c0 push $0xc010ae84 -c01053ef: e8 f0 af ff ff call c01003e4 <__panic> - - insert_vma_struct(mm, vma); -c01053f4: 83 ec 08 sub $0x8,%esp -c01053f7: ff 75 e0 pushl -0x20(%ebp) -c01053fa: ff 75 e8 pushl -0x18(%ebp) -c01053fd: e8 72 f9 ff ff call c0104d74 -c0105402: 83 c4 10 add $0x10,%esp - - uintptr_t addr = 0x100; -c0105405: c7 45 dc 00 01 00 00 movl $0x100,-0x24(%ebp) - assert(find_vma(mm, addr) == vma); -c010540c: 83 ec 08 sub $0x8,%esp -c010540f: ff 75 dc pushl -0x24(%ebp) -c0105412: ff 75 e8 pushl -0x18(%ebp) -c0105415: e8 2e f8 ff ff call c0104c48 -c010541a: 83 c4 10 add $0x10,%esp -c010541d: 3b 45 e0 cmp -0x20(%ebp),%eax -c0105420: 74 19 je c010543b -c0105422: 68 8d b0 10 c0 push $0xc010b08d -c0105427: 68 6f ae 10 c0 push $0xc010ae6f -c010542c: 68 fd 00 00 00 push $0xfd -c0105431: 68 84 ae 10 c0 push $0xc010ae84 -c0105436: e8 a9 af ff ff call c01003e4 <__panic> - - int i, sum = 0; -c010543b: c7 45 f0 00 00 00 00 movl $0x0,-0x10(%ebp) - for (i = 0; i < 100; i ++) { -c0105442: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) -c0105449: eb 19 jmp c0105464 - *(char *)(addr + i) = i; -c010544b: 8b 55 f4 mov -0xc(%ebp),%edx -c010544e: 8b 45 dc mov -0x24(%ebp),%eax -c0105451: 01 d0 add %edx,%eax -c0105453: 89 c2 mov %eax,%edx -c0105455: 8b 45 f4 mov -0xc(%ebp),%eax -c0105458: 88 02 mov %al,(%edx) - sum += i; -c010545a: 8b 45 f4 mov -0xc(%ebp),%eax -c010545d: 01 45 f0 add %eax,-0x10(%ebp) - - uintptr_t addr = 0x100; - assert(find_vma(mm, addr) == vma); - - int i, sum = 0; - for (i = 0; i < 100; i ++) { -c0105460: 83 45 f4 01 addl $0x1,-0xc(%ebp) -c0105464: 83 7d f4 63 cmpl $0x63,-0xc(%ebp) -c0105468: 7e e1 jle c010544b - *(char *)(addr + i) = i; - sum += i; - } - for (i = 0; i < 100; i ++) { -c010546a: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) -c0105471: eb 15 jmp c0105488 - sum -= *(char *)(addr + i); -c0105473: 8b 55 f4 mov -0xc(%ebp),%edx -c0105476: 8b 45 dc mov -0x24(%ebp),%eax -c0105479: 01 d0 add %edx,%eax -c010547b: 0f b6 00 movzbl (%eax),%eax -c010547e: 0f be c0 movsbl %al,%eax -c0105481: 29 45 f0 sub %eax,-0x10(%ebp) - int i, sum = 0; - for (i = 0; i < 100; i ++) { - *(char *)(addr + i) = i; - sum += i; - } - for (i = 0; i < 100; i ++) { -c0105484: 83 45 f4 01 addl $0x1,-0xc(%ebp) -c0105488: 83 7d f4 63 cmpl $0x63,-0xc(%ebp) -c010548c: 7e e5 jle c0105473 - sum -= *(char *)(addr + i); - } - assert(sum == 0); -c010548e: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) -c0105492: 74 19 je c01054ad -c0105494: 68 a7 b0 10 c0 push $0xc010b0a7 -c0105499: 68 6f ae 10 c0 push $0xc010ae6f -c010549e: 68 07 01 00 00 push $0x107 -c01054a3: 68 84 ae 10 c0 push $0xc010ae84 -c01054a8: e8 37 af ff ff call c01003e4 <__panic> - - page_remove(pgdir, ROUNDDOWN(addr, PGSIZE)); -c01054ad: 8b 45 dc mov -0x24(%ebp),%eax -c01054b0: 89 45 d8 mov %eax,-0x28(%ebp) -c01054b3: 8b 45 d8 mov -0x28(%ebp),%eax -c01054b6: 25 00 f0 ff ff and $0xfffff000,%eax -c01054bb: 83 ec 08 sub $0x8,%esp -c01054be: 50 push %eax -c01054bf: ff 75 e4 pushl -0x1c(%ebp) -c01054c2: e8 ae e9 ff ff call c0103e75 -c01054c7: 83 c4 10 add $0x10,%esp - free_page(pde2page(pgdir[0])); -c01054ca: 8b 45 e4 mov -0x1c(%ebp),%eax -c01054cd: 8b 00 mov (%eax),%eax -c01054cf: 83 ec 0c sub $0xc,%esp -c01054d2: 50 push %eax -c01054d3: e8 9c f6 ff ff call c0104b74 -c01054d8: 83 c4 10 add $0x10,%esp -c01054db: 83 ec 08 sub $0x8,%esp -c01054de: 6a 01 push $0x1 -c01054e0: 50 push %eax -c01054e1: e8 15 e1 ff ff call c01035fb -c01054e6: 83 c4 10 add $0x10,%esp - pgdir[0] = 0; -c01054e9: 8b 45 e4 mov -0x1c(%ebp),%eax -c01054ec: c7 00 00 00 00 00 movl $0x0,(%eax) - - mm->pgdir = NULL; -c01054f2: 8b 45 e8 mov -0x18(%ebp),%eax -c01054f5: c7 40 0c 00 00 00 00 movl $0x0,0xc(%eax) - mm_destroy(mm); -c01054fc: 83 ec 0c sub $0xc,%esp -c01054ff: ff 75 e8 pushl -0x18(%ebp) -c0105502: e8 91 f9 ff ff call c0104e98 -c0105507: 83 c4 10 add $0x10,%esp - check_mm_struct = NULL; -c010550a: c7 05 24 9b 12 c0 00 movl $0x0,0xc0129b24 -c0105511: 00 00 00 - - assert(nr_free_pages_store == nr_free_pages()); -c0105514: e8 17 e1 ff ff call c0103630 -c0105519: 3b 45 ec cmp -0x14(%ebp),%eax -c010551c: 74 19 je c0105537 -c010551e: 68 b0 b0 10 c0 push $0xc010b0b0 -c0105523: 68 6f ae 10 c0 push $0xc010ae6f -c0105528: 68 11 01 00 00 push $0x111 -c010552d: 68 84 ae 10 c0 push $0xc010ae84 -c0105532: e8 ad ae ff ff call c01003e4 <__panic> - - cprintf("check_pgfault() succeeded!\n"); -c0105537: 83 ec 0c sub $0xc,%esp -c010553a: 68 d7 b0 10 c0 push $0xc010b0d7 -c010553f: e8 3a ad ff ff call c010027e -c0105544: 83 c4 10 add $0x10,%esp -} -c0105547: 90 nop -c0105548: c9 leave -c0105549: c3 ret - -c010554a : - * was a read (0) or write (1). - * -- The U/S flag (bit 2) indicates whether the processor was executing at user mode (1) - * or supervisor mode (0) at the time of the exception. - */ -int -do_pgfault(struct mm_struct *mm, uint32_t error_code, uintptr_t addr) { -c010554a: 55 push %ebp -c010554b: 89 e5 mov %esp,%ebp -c010554d: 83 ec 28 sub $0x28,%esp - int ret = -E_INVAL; -c0105550: c7 45 f4 fd ff ff ff movl $0xfffffffd,-0xc(%ebp) - //try to find a vma which include addr - struct vma_struct *vma = find_vma(mm, addr); -c0105557: ff 75 10 pushl 0x10(%ebp) -c010555a: ff 75 08 pushl 0x8(%ebp) -c010555d: e8 e6 f6 ff ff call c0104c48 -c0105562: 83 c4 08 add $0x8,%esp -c0105565: 89 45 ec mov %eax,-0x14(%ebp) - - pgfault_num++; -c0105568: a1 cc 7a 12 c0 mov 0xc0127acc,%eax -c010556d: 83 c0 01 add $0x1,%eax -c0105570: a3 cc 7a 12 c0 mov %eax,0xc0127acc - //If the addr is in the range of a mm's vma? - if (vma == NULL || vma->vm_start > addr) { -c0105575: 83 7d ec 00 cmpl $0x0,-0x14(%ebp) -c0105579: 74 0b je c0105586 -c010557b: 8b 45 ec mov -0x14(%ebp),%eax -c010557e: 8b 40 04 mov 0x4(%eax),%eax -c0105581: 3b 45 10 cmp 0x10(%ebp),%eax -c0105584: 76 18 jbe c010559e - cprintf("not valid addr %x, and can not find it in vma\n", addr); -c0105586: 83 ec 08 sub $0x8,%esp -c0105589: ff 75 10 pushl 0x10(%ebp) -c010558c: 68 f4 b0 10 c0 push $0xc010b0f4 -c0105591: e8 e8 ac ff ff call c010027e -c0105596: 83 c4 10 add $0x10,%esp - goto failed; -c0105599: e9 71 01 00 00 jmp c010570f - } - //check the error_code - // If you want to add/mofify perm on pages -> change VMA instead of PTE! - switch (error_code & 3) { -c010559e: 8b 45 0c mov 0xc(%ebp),%eax -c01055a1: 83 e0 03 and $0x3,%eax -c01055a4: 85 c0 test %eax,%eax -c01055a6: 74 3c je c01055e4 -c01055a8: 83 f8 01 cmp $0x1,%eax -c01055ab: 74 22 je c01055cf - default: - /* error code flag : default is 3 ( W/R=1, P=1): write, present */ - case 2: /* error code flag : (W/R=1, P=0): write, not present */ - if (!(vma->vm_flags & VM_WRITE)) { -c01055ad: 8b 45 ec mov -0x14(%ebp),%eax -c01055b0: 8b 40 0c mov 0xc(%eax),%eax -c01055b3: 83 e0 02 and $0x2,%eax -c01055b6: 85 c0 test %eax,%eax -c01055b8: 75 4c jne c0105606 - cprintf("do_pgfault failed: error code flag = write AND not present, but the addr's vma cannot write\n"); -c01055ba: 83 ec 0c sub $0xc,%esp -c01055bd: 68 24 b1 10 c0 push $0xc010b124 -c01055c2: e8 b7 ac ff ff call c010027e -c01055c7: 83 c4 10 add $0x10,%esp - goto failed; -c01055ca: e9 40 01 00 00 jmp c010570f - } - break; - case 1: /* error code flag : (W/R=0, P=1): read, present */ - cprintf("do_pgfault failed: error code flag = read AND present\n"); -c01055cf: 83 ec 0c sub $0xc,%esp -c01055d2: 68 84 b1 10 c0 push $0xc010b184 -c01055d7: e8 a2 ac ff ff call c010027e -c01055dc: 83 c4 10 add $0x10,%esp - goto failed; -c01055df: e9 2b 01 00 00 jmp c010570f - case 0: /* error code flag : (W/R=0, P=0): read, not present */ - if (!(vma->vm_flags & (VM_READ | VM_EXEC))) { -c01055e4: 8b 45 ec mov -0x14(%ebp),%eax -c01055e7: 8b 40 0c mov 0xc(%eax),%eax -c01055ea: 83 e0 05 and $0x5,%eax -c01055ed: 85 c0 test %eax,%eax -c01055ef: 75 16 jne c0105607 - cprintf("do_pgfault failed: error code flag = read AND not present, but the addr's vma cannot read or exec\n"); -c01055f1: 83 ec 0c sub $0xc,%esp -c01055f4: 68 bc b1 10 c0 push $0xc010b1bc -c01055f9: e8 80 ac ff ff call c010027e -c01055fe: 83 c4 10 add $0x10,%esp - goto failed; -c0105601: e9 09 01 00 00 jmp c010570f - case 2: /* error code flag : (W/R=1, P=0): write, not present */ - if (!(vma->vm_flags & VM_WRITE)) { - cprintf("do_pgfault failed: error code flag = write AND not present, but the addr's vma cannot write\n"); - goto failed; - } - break; -c0105606: 90 nop - * (write an non_existed addr && addr is writable) OR - * (read an non_existed addr && addr is readable) - * THEN - * continue process - */ - uint32_t perm = PTE_U; -c0105607: c7 45 f0 04 00 00 00 movl $0x4,-0x10(%ebp) - if (vma->vm_flags & VM_WRITE) { -c010560e: 8b 45 ec mov -0x14(%ebp),%eax -c0105611: 8b 40 0c mov 0xc(%eax),%eax -c0105614: 83 e0 02 and $0x2,%eax -c0105617: 85 c0 test %eax,%eax -c0105619: 74 04 je c010561f - perm |= PTE_W; -c010561b: 83 4d f0 02 orl $0x2,-0x10(%ebp) - } - addr = ROUNDDOWN(addr, PGSIZE); -c010561f: 8b 45 10 mov 0x10(%ebp),%eax -c0105622: 89 45 e8 mov %eax,-0x18(%ebp) -c0105625: 8b 45 e8 mov -0x18(%ebp),%eax -c0105628: 25 00 f0 ff ff and $0xfffff000,%eax -c010562d: 89 45 10 mov %eax,0x10(%ebp) - - ret = -E_NO_MEM; -c0105630: c7 45 f4 fc ff ff ff movl $0xfffffffc,-0xc(%ebp) - - pte_t *ptep=NULL; -c0105637: c7 45 e4 00 00 00 00 movl $0x0,-0x1c(%ebp) - * mm->pgdir : the PDT of these vma - * - */ - /*LAB3 EXERCISE 1: 2014011330*/ - //(1) try to find a pte, if pte's PT(Page Table) isn't existed, then create a PT. - ptep = get_pte(mm->pgdir, addr, 1); -c010563e: 8b 45 08 mov 0x8(%ebp),%eax -c0105641: 8b 40 0c mov 0xc(%eax),%eax -c0105644: 83 ec 04 sub $0x4,%esp -c0105647: 6a 01 push $0x1 -c0105649: ff 75 10 pushl 0x10(%ebp) -c010564c: 50 push %eax -c010564d: e8 28 e6 ff ff call c0103c7a -c0105652: 83 c4 10 add $0x10,%esp -c0105655: 89 45 e4 mov %eax,-0x1c(%ebp) - if (*ptep == 0) { -c0105658: 8b 45 e4 mov -0x1c(%ebp),%eax -c010565b: 8b 00 mov (%eax),%eax -c010565d: 85 c0 test %eax,%eax -c010565f: 75 32 jne c0105693 - //(2) if the phy addr isn't exist, then alloc a page & map the phy addr with logical addr - if (pgdir_alloc_page(mm->pgdir, addr, perm) == NULL) { -c0105661: 8b 45 08 mov 0x8(%ebp),%eax -c0105664: 8b 40 0c mov 0xc(%eax),%eax -c0105667: 83 ec 04 sub $0x4,%esp -c010566a: ff 75 f0 pushl -0x10(%ebp) -c010566d: ff 75 10 pushl 0x10(%ebp) -c0105670: 50 push %eax -c0105671: e8 41 e9 ff ff call c0103fb7 -c0105676: 83 c4 10 add $0x10,%esp -c0105679: 85 c0 test %eax,%eax -c010567b: 0f 85 87 00 00 00 jne c0105708 - // This should not happen unless bad implementation in malloc function. - cprintf("Cannot allocate physical pages for a valid VMA!"); -c0105681: 83 ec 0c sub $0xc,%esp -c0105684: 68 20 b2 10 c0 push $0xc010b220 -c0105689: e8 f0 ab ff ff call c010027e -c010568e: 83 c4 10 add $0x10,%esp - goto failed; -c0105691: eb 7c jmp c010570f - * swap_in(mm, addr, &page) : alloc a memory page, then according to the swap entry in PTE for addr, - * find the addr of disk page, read the content of disk page into this memroy page - * page_insert: build the map of phy addr of an Page with the linear addr la - * swap_map_swappable: set the page swappable - */ - if(swap_init_ok) { -c0105693: a1 d0 7a 12 c0 mov 0xc0127ad0,%eax -c0105698: 85 c0 test %eax,%eax -c010569a: 74 54 je c01056f0 - struct Page *page=NULL; -c010569c: c7 45 e0 00 00 00 00 movl $0x0,-0x20(%ebp) - //(1) According to the mm AND addr, try to load the content of right disk page - // into the memory which page managed. - swap_in(mm, addr, &page); -c01056a3: 83 ec 04 sub $0x4,%esp -c01056a6: 8d 45 e0 lea -0x20(%ebp),%eax -c01056a9: 50 push %eax -c01056aa: ff 75 10 pushl 0x10(%ebp) -c01056ad: ff 75 08 pushl 0x8(%ebp) -c01056b0: e8 1f 03 00 00 call c01059d4 -c01056b5: 83 c4 10 add $0x10,%esp - //(2) According to the mm, addr AND page, setup the map of phy addr <---> logical addr - page_insert(mm->pgdir, page, addr, perm); -c01056b8: 8b 55 e0 mov -0x20(%ebp),%edx -c01056bb: 8b 45 08 mov 0x8(%ebp),%eax -c01056be: 8b 40 0c mov 0xc(%eax),%eax -c01056c1: ff 75 f0 pushl -0x10(%ebp) -c01056c4: ff 75 10 pushl 0x10(%ebp) -c01056c7: 52 push %edx -c01056c8: 50 push %eax -c01056c9: e8 e0 e7 ff ff call c0103eae -c01056ce: 83 c4 10 add $0x10,%esp - //(3) make the page swappable. - swap_map_swappable(mm, addr, page, 1); -c01056d1: 8b 45 e0 mov -0x20(%ebp),%eax -c01056d4: 6a 01 push $0x1 -c01056d6: 50 push %eax -c01056d7: ff 75 10 pushl 0x10(%ebp) -c01056da: ff 75 08 pushl 0x8(%ebp) -c01056dd: e8 62 01 00 00 call c0105844 -c01056e2: 83 c4 10 add $0x10,%esp - page->pra_vaddr = addr; -c01056e5: 8b 45 e0 mov -0x20(%ebp),%eax -c01056e8: 8b 55 10 mov 0x10(%ebp),%edx -c01056eb: 89 50 1c mov %edx,0x1c(%eax) -c01056ee: eb 18 jmp c0105708 - } - else { - cprintf("no swap_init_ok but ptep is %x, failed\n",*ptep); -c01056f0: 8b 45 e4 mov -0x1c(%ebp),%eax -c01056f3: 8b 00 mov (%eax),%eax -c01056f5: 83 ec 08 sub $0x8,%esp -c01056f8: 50 push %eax -c01056f9: 68 50 b2 10 c0 push $0xc010b250 -c01056fe: e8 7b ab ff ff call c010027e -c0105703: 83 c4 10 add $0x10,%esp - goto failed; -c0105706: eb 07 jmp c010570f - } - } - - ret = 0; -c0105708: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) -failed: - return ret; -c010570f: 8b 45 f4 mov -0xc(%ebp),%eax -} -c0105712: c9 leave -c0105713: c3 ret - -c0105714 : -page2pa(struct Page *page) { - return page2ppn(page) << PGSHIFT; -} - -static inline struct Page * -pa2page(uintptr_t pa) { -c0105714: 55 push %ebp -c0105715: 89 e5 mov %esp,%ebp -c0105717: 83 ec 08 sub $0x8,%esp - if (PPN(pa) >= npage) { -c010571a: 8b 45 08 mov 0x8(%ebp),%eax -c010571d: c1 e8 0c shr $0xc,%eax -c0105720: 89 c2 mov %eax,%edx -c0105722: a1 40 7a 12 c0 mov 0xc0127a40,%eax -c0105727: 39 c2 cmp %eax,%edx -c0105729: 72 14 jb c010573f - panic("pa2page called with invalid pa"); -c010572b: 83 ec 04 sub $0x4,%esp -c010572e: 68 78 b2 10 c0 push $0xc010b278 -c0105733: 6a 5f push $0x5f -c0105735: 68 97 b2 10 c0 push $0xc010b297 -c010573a: e8 a5 ac ff ff call c01003e4 <__panic> - } - return &pages[PPN(pa)]; -c010573f: a1 20 9b 12 c0 mov 0xc0129b20,%eax -c0105744: 8b 55 08 mov 0x8(%ebp),%edx -c0105747: c1 ea 0c shr $0xc,%edx -c010574a: c1 e2 05 shl $0x5,%edx -c010574d: 01 d0 add %edx,%eax -} -c010574f: c9 leave -c0105750: c3 ret - -c0105751 : -kva2page(void *kva) { - return pa2page(PADDR(kva)); -} - -static inline struct Page * -pte2page(pte_t pte) { -c0105751: 55 push %ebp -c0105752: 89 e5 mov %esp,%ebp -c0105754: 83 ec 08 sub $0x8,%esp - if (!(pte & PTE_P)) { -c0105757: 8b 45 08 mov 0x8(%ebp),%eax -c010575a: 83 e0 01 and $0x1,%eax -c010575d: 85 c0 test %eax,%eax -c010575f: 75 14 jne c0105775 - panic("pte2page called with invalid pte"); -c0105761: 83 ec 04 sub $0x4,%esp -c0105764: 68 a8 b2 10 c0 push $0xc010b2a8 -c0105769: 6a 71 push $0x71 -c010576b: 68 97 b2 10 c0 push $0xc010b297 -c0105770: e8 6f ac ff ff call c01003e4 <__panic> - } - return pa2page(PTE_ADDR(pte)); -c0105775: 8b 45 08 mov 0x8(%ebp),%eax -c0105778: 25 00 f0 ff ff and $0xfffff000,%eax -c010577d: 83 ec 0c sub $0xc,%esp -c0105780: 50 push %eax -c0105781: e8 8e ff ff ff call c0105714 -c0105786: 83 c4 10 add $0x10,%esp -} -c0105789: c9 leave -c010578a: c3 ret - -c010578b : - -static void check_swap(void); - -int -swap_init(void) -{ -c010578b: 55 push %ebp -c010578c: 89 e5 mov %esp,%ebp -c010578e: 83 ec 18 sub $0x18,%esp - swapfs_init(); -c0105791: e8 33 2f 00 00 call c01086c9 - - if (!(1024 <= max_swap_offset && max_swap_offset < MAX_SWAP_OFFSET_LIMIT)) -c0105796: a1 dc 9b 12 c0 mov 0xc0129bdc,%eax -c010579b: 3d ff 03 00 00 cmp $0x3ff,%eax -c01057a0: 76 0c jbe c01057ae -c01057a2: a1 dc 9b 12 c0 mov 0xc0129bdc,%eax -c01057a7: 3d ff ff ff 00 cmp $0xffffff,%eax -c01057ac: 76 17 jbe c01057c5 - { - panic("bad max_swap_offset %08x.\n", max_swap_offset); -c01057ae: a1 dc 9b 12 c0 mov 0xc0129bdc,%eax -c01057b3: 50 push %eax -c01057b4: 68 c9 b2 10 c0 push $0xc010b2c9 -c01057b9: 6a 26 push $0x26 -c01057bb: 68 e4 b2 10 c0 push $0xc010b2e4 -c01057c0: e8 1f ac ff ff call c01003e4 <__panic> - } - - - sm = &swap_manager_fifo; -c01057c5: c7 05 d8 7a 12 c0 60 movl $0xc0126a60,0xc0127ad8 -c01057cc: 6a 12 c0 -// sm = &swap_manager_clock; - int r = sm->init(); -c01057cf: a1 d8 7a 12 c0 mov 0xc0127ad8,%eax -c01057d4: 8b 40 04 mov 0x4(%eax),%eax -c01057d7: ff d0 call *%eax -c01057d9: 89 45 f4 mov %eax,-0xc(%ebp) - - if (r == 0) -c01057dc: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c01057e0: 75 27 jne c0105809 - { - swap_init_ok = 1; -c01057e2: c7 05 d0 7a 12 c0 01 movl $0x1,0xc0127ad0 -c01057e9: 00 00 00 - cprintf("SWAP: manager = %s\n", sm->name); -c01057ec: a1 d8 7a 12 c0 mov 0xc0127ad8,%eax -c01057f1: 8b 00 mov (%eax),%eax -c01057f3: 83 ec 08 sub $0x8,%esp -c01057f6: 50 push %eax -c01057f7: 68 f3 b2 10 c0 push $0xc010b2f3 -c01057fc: e8 7d aa ff ff call c010027e -c0105801: 83 c4 10 add $0x10,%esp - check_swap(); -c0105804: e8 f7 03 00 00 call c0105c00 - } - - return r; -c0105809: 8b 45 f4 mov -0xc(%ebp),%eax -} -c010580c: c9 leave -c010580d: c3 ret - -c010580e : - -int -swap_init_mm(struct mm_struct *mm) -{ -c010580e: 55 push %ebp -c010580f: 89 e5 mov %esp,%ebp -c0105811: 83 ec 08 sub $0x8,%esp - return sm->init_mm(mm); -c0105814: a1 d8 7a 12 c0 mov 0xc0127ad8,%eax -c0105819: 8b 40 08 mov 0x8(%eax),%eax -c010581c: 83 ec 0c sub $0xc,%esp -c010581f: ff 75 08 pushl 0x8(%ebp) -c0105822: ff d0 call *%eax -c0105824: 83 c4 10 add $0x10,%esp -} -c0105827: c9 leave -c0105828: c3 ret - -c0105829 : - -int -swap_tick_event(struct mm_struct *mm) -{ -c0105829: 55 push %ebp -c010582a: 89 e5 mov %esp,%ebp -c010582c: 83 ec 08 sub $0x8,%esp - return sm->tick_event(mm); -c010582f: a1 d8 7a 12 c0 mov 0xc0127ad8,%eax -c0105834: 8b 40 0c mov 0xc(%eax),%eax -c0105837: 83 ec 0c sub $0xc,%esp -c010583a: ff 75 08 pushl 0x8(%ebp) -c010583d: ff d0 call *%eax -c010583f: 83 c4 10 add $0x10,%esp -} -c0105842: c9 leave -c0105843: c3 ret - -c0105844 : - -int -swap_map_swappable(struct mm_struct *mm, uintptr_t addr, struct Page *page, int swap_in) -{ -c0105844: 55 push %ebp -c0105845: 89 e5 mov %esp,%ebp -c0105847: 83 ec 08 sub $0x8,%esp - return sm->map_swappable(mm, addr, page, swap_in); -c010584a: a1 d8 7a 12 c0 mov 0xc0127ad8,%eax -c010584f: 8b 40 10 mov 0x10(%eax),%eax -c0105852: ff 75 14 pushl 0x14(%ebp) -c0105855: ff 75 10 pushl 0x10(%ebp) -c0105858: ff 75 0c pushl 0xc(%ebp) -c010585b: ff 75 08 pushl 0x8(%ebp) -c010585e: ff d0 call *%eax -c0105860: 83 c4 10 add $0x10,%esp -} -c0105863: c9 leave -c0105864: c3 ret - -c0105865 : - -int -swap_set_unswappable(struct mm_struct *mm, uintptr_t addr) -{ -c0105865: 55 push %ebp -c0105866: 89 e5 mov %esp,%ebp -c0105868: 83 ec 08 sub $0x8,%esp - return sm->set_unswappable(mm, addr); -c010586b: a1 d8 7a 12 c0 mov 0xc0127ad8,%eax -c0105870: 8b 40 14 mov 0x14(%eax),%eax -c0105873: 83 ec 08 sub $0x8,%esp -c0105876: ff 75 0c pushl 0xc(%ebp) -c0105879: ff 75 08 pushl 0x8(%ebp) -c010587c: ff d0 call *%eax -c010587e: 83 c4 10 add $0x10,%esp -} -c0105881: c9 leave -c0105882: c3 ret - -c0105883 : - -volatile unsigned int swap_out_num=0; - -int -swap_out(struct mm_struct *mm, int n, int in_tick) -{ -c0105883: 55 push %ebp -c0105884: 89 e5 mov %esp,%ebp -c0105886: 83 ec 28 sub $0x28,%esp - int i; - for (i = 0; i != n; ++ i) -c0105889: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) -c0105890: e9 2e 01 00 00 jmp c01059c3 - { - uintptr_t v; - //struct Page **ptr_page=NULL; - struct Page *page; - // cprintf("i %d, SWAP: call swap_out_victim\n",i); - int r = sm->swap_out_victim(mm, &page, in_tick); -c0105895: a1 d8 7a 12 c0 mov 0xc0127ad8,%eax -c010589a: 8b 40 18 mov 0x18(%eax),%eax -c010589d: 83 ec 04 sub $0x4,%esp -c01058a0: ff 75 10 pushl 0x10(%ebp) -c01058a3: 8d 55 e4 lea -0x1c(%ebp),%edx -c01058a6: 52 push %edx -c01058a7: ff 75 08 pushl 0x8(%ebp) -c01058aa: ff d0 call *%eax -c01058ac: 83 c4 10 add $0x10,%esp -c01058af: 89 45 f0 mov %eax,-0x10(%ebp) - if (r != 0) { -c01058b2: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) -c01058b6: 74 18 je c01058d0 - cprintf("i %d, swap_out: call swap_out_victim failed\n",i); -c01058b8: 83 ec 08 sub $0x8,%esp -c01058bb: ff 75 f4 pushl -0xc(%ebp) -c01058be: 68 08 b3 10 c0 push $0xc010b308 -c01058c3: e8 b6 a9 ff ff call c010027e -c01058c8: 83 c4 10 add $0x10,%esp -c01058cb: e9 ff 00 00 00 jmp c01059cf - } - //assert(!PageReserved(page)); - - //cprintf("SWAP: choose victim page 0x%08x\n", page); - - v=page->pra_vaddr; -c01058d0: 8b 45 e4 mov -0x1c(%ebp),%eax -c01058d3: 8b 40 1c mov 0x1c(%eax),%eax -c01058d6: 89 45 ec mov %eax,-0x14(%ebp) - pte_t *ptep = get_pte(mm->pgdir, v, 0); -c01058d9: 8b 45 08 mov 0x8(%ebp),%eax -c01058dc: 8b 40 0c mov 0xc(%eax),%eax -c01058df: 83 ec 04 sub $0x4,%esp -c01058e2: 6a 00 push $0x0 -c01058e4: ff 75 ec pushl -0x14(%ebp) -c01058e7: 50 push %eax -c01058e8: e8 8d e3 ff ff call c0103c7a -c01058ed: 83 c4 10 add $0x10,%esp -c01058f0: 89 45 e8 mov %eax,-0x18(%ebp) - assert((*ptep & PTE_P) != 0); -c01058f3: 8b 45 e8 mov -0x18(%ebp),%eax -c01058f6: 8b 00 mov (%eax),%eax -c01058f8: 83 e0 01 and $0x1,%eax -c01058fb: 85 c0 test %eax,%eax -c01058fd: 75 16 jne c0105915 -c01058ff: 68 35 b3 10 c0 push $0xc010b335 -c0105904: 68 4a b3 10 c0 push $0xc010b34a -c0105909: 6a 67 push $0x67 -c010590b: 68 e4 b2 10 c0 push $0xc010b2e4 -c0105910: e8 cf aa ff ff call c01003e4 <__panic> - - if (swapfs_write( (page->pra_vaddr/PGSIZE+1)<<8, page) != 0) { -c0105915: 8b 45 e4 mov -0x1c(%ebp),%eax -c0105918: 8b 55 e4 mov -0x1c(%ebp),%edx -c010591b: 8b 52 1c mov 0x1c(%edx),%edx -c010591e: c1 ea 0c shr $0xc,%edx -c0105921: 83 c2 01 add $0x1,%edx -c0105924: c1 e2 08 shl $0x8,%edx -c0105927: 83 ec 08 sub $0x8,%esp -c010592a: 50 push %eax -c010592b: 52 push %edx -c010592c: e8 34 2e 00 00 call c0108765 -c0105931: 83 c4 10 add $0x10,%esp -c0105934: 85 c0 test %eax,%eax -c0105936: 74 2b je c0105963 - cprintf("SWAP: failed to save\n"); -c0105938: 83 ec 0c sub $0xc,%esp -c010593b: 68 5f b3 10 c0 push $0xc010b35f -c0105940: e8 39 a9 ff ff call c010027e -c0105945: 83 c4 10 add $0x10,%esp - sm->map_swappable(mm, v, page, 0); -c0105948: a1 d8 7a 12 c0 mov 0xc0127ad8,%eax -c010594d: 8b 40 10 mov 0x10(%eax),%eax -c0105950: 8b 55 e4 mov -0x1c(%ebp),%edx -c0105953: 6a 00 push $0x0 -c0105955: 52 push %edx -c0105956: ff 75 ec pushl -0x14(%ebp) -c0105959: ff 75 08 pushl 0x8(%ebp) -c010595c: ff d0 call *%eax -c010595e: 83 c4 10 add $0x10,%esp -c0105961: eb 5c jmp c01059bf - continue; - } - else { - cprintf("swap_out: i %d, store page in vaddr 0x%x to disk swap entry %d\n", i, v, page->pra_vaddr/PGSIZE+1); -c0105963: 8b 45 e4 mov -0x1c(%ebp),%eax -c0105966: 8b 40 1c mov 0x1c(%eax),%eax -c0105969: c1 e8 0c shr $0xc,%eax -c010596c: 83 c0 01 add $0x1,%eax -c010596f: 50 push %eax -c0105970: ff 75 ec pushl -0x14(%ebp) -c0105973: ff 75 f4 pushl -0xc(%ebp) -c0105976: 68 78 b3 10 c0 push $0xc010b378 -c010597b: e8 fe a8 ff ff call c010027e -c0105980: 83 c4 10 add $0x10,%esp - *ptep = (page->pra_vaddr/PGSIZE+1)<<8; -c0105983: 8b 45 e4 mov -0x1c(%ebp),%eax -c0105986: 8b 40 1c mov 0x1c(%eax),%eax -c0105989: c1 e8 0c shr $0xc,%eax -c010598c: 83 c0 01 add $0x1,%eax -c010598f: c1 e0 08 shl $0x8,%eax -c0105992: 89 c2 mov %eax,%edx -c0105994: 8b 45 e8 mov -0x18(%ebp),%eax -c0105997: 89 10 mov %edx,(%eax) - free_page(page); -c0105999: 8b 45 e4 mov -0x1c(%ebp),%eax -c010599c: 83 ec 08 sub $0x8,%esp -c010599f: 6a 01 push $0x1 -c01059a1: 50 push %eax -c01059a2: e8 54 dc ff ff call c01035fb -c01059a7: 83 c4 10 add $0x10,%esp - } - - tlb_invalidate(mm->pgdir, v); -c01059aa: 8b 45 08 mov 0x8(%ebp),%eax -c01059ad: 8b 40 0c mov 0xc(%eax),%eax -c01059b0: 83 ec 08 sub $0x8,%esp -c01059b3: ff 75 ec pushl -0x14(%ebp) -c01059b6: 50 push %eax -c01059b7: e8 ab e5 ff ff call c0103f67 -c01059bc: 83 c4 10 add $0x10,%esp - -int -swap_out(struct mm_struct *mm, int n, int in_tick) -{ - int i; - for (i = 0; i != n; ++ i) -c01059bf: 83 45 f4 01 addl $0x1,-0xc(%ebp) -c01059c3: 8b 45 f4 mov -0xc(%ebp),%eax -c01059c6: 3b 45 0c cmp 0xc(%ebp),%eax -c01059c9: 0f 85 c6 fe ff ff jne c0105895 - free_page(page); - } - - tlb_invalidate(mm->pgdir, v); - } - return i; -c01059cf: 8b 45 f4 mov -0xc(%ebp),%eax -} -c01059d2: c9 leave -c01059d3: c3 ret - -c01059d4 : - -int -swap_in(struct mm_struct *mm, uintptr_t addr, struct Page **ptr_result) -{ -c01059d4: 55 push %ebp -c01059d5: 89 e5 mov %esp,%ebp -c01059d7: 83 ec 18 sub $0x18,%esp - struct Page *result = alloc_page(); -c01059da: 83 ec 0c sub $0xc,%esp -c01059dd: 6a 01 push $0x1 -c01059df: e8 ab db ff ff call c010358f -c01059e4: 83 c4 10 add $0x10,%esp -c01059e7: 89 45 f4 mov %eax,-0xc(%ebp) - assert(result!=NULL); -c01059ea: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c01059ee: 75 16 jne c0105a06 -c01059f0: 68 b8 b3 10 c0 push $0xc010b3b8 -c01059f5: 68 4a b3 10 c0 push $0xc010b34a -c01059fa: 6a 7d push $0x7d -c01059fc: 68 e4 b2 10 c0 push $0xc010b2e4 -c0105a01: e8 de a9 ff ff call c01003e4 <__panic> - - pte_t *ptep = get_pte(mm->pgdir, addr, 0); -c0105a06: 8b 45 08 mov 0x8(%ebp),%eax -c0105a09: 8b 40 0c mov 0xc(%eax),%eax -c0105a0c: 83 ec 04 sub $0x4,%esp -c0105a0f: 6a 00 push $0x0 -c0105a11: ff 75 0c pushl 0xc(%ebp) -c0105a14: 50 push %eax -c0105a15: e8 60 e2 ff ff call c0103c7a -c0105a1a: 83 c4 10 add $0x10,%esp -c0105a1d: 89 45 f0 mov %eax,-0x10(%ebp) - // cprintf("SWAP: load ptep %x swap entry %d to vaddr 0x%08x, page %x, No %d\n", ptep, (*ptep)>>8, addr, result, (result-pages)); - - int r; - if ((r = swapfs_read((*ptep), result)) != 0) -c0105a20: 8b 45 f0 mov -0x10(%ebp),%eax -c0105a23: 8b 00 mov (%eax),%eax -c0105a25: 83 ec 08 sub $0x8,%esp -c0105a28: ff 75 f4 pushl -0xc(%ebp) -c0105a2b: 50 push %eax -c0105a2c: e8 db 2c 00 00 call c010870c -c0105a31: 83 c4 10 add $0x10,%esp -c0105a34: 89 45 ec mov %eax,-0x14(%ebp) -c0105a37: 83 7d ec 00 cmpl $0x0,-0x14(%ebp) -c0105a3b: 74 1f je c0105a5c - { - assert(r!=0); -c0105a3d: 83 7d ec 00 cmpl $0x0,-0x14(%ebp) -c0105a41: 75 19 jne c0105a5c -c0105a43: 68 c5 b3 10 c0 push $0xc010b3c5 -c0105a48: 68 4a b3 10 c0 push $0xc010b34a -c0105a4d: 68 85 00 00 00 push $0x85 -c0105a52: 68 e4 b2 10 c0 push $0xc010b2e4 -c0105a57: e8 88 a9 ff ff call c01003e4 <__panic> - } - cprintf("swap_in: load disk swap entry %d with swap_page in vadr 0x%x\n", (*ptep)>>8, addr); -c0105a5c: 8b 45 f0 mov -0x10(%ebp),%eax -c0105a5f: 8b 00 mov (%eax),%eax -c0105a61: c1 e8 08 shr $0x8,%eax -c0105a64: 83 ec 04 sub $0x4,%esp -c0105a67: ff 75 0c pushl 0xc(%ebp) -c0105a6a: 50 push %eax -c0105a6b: 68 cc b3 10 c0 push $0xc010b3cc -c0105a70: e8 09 a8 ff ff call c010027e -c0105a75: 83 c4 10 add $0x10,%esp - *ptr_result=result; -c0105a78: 8b 45 10 mov 0x10(%ebp),%eax -c0105a7b: 8b 55 f4 mov -0xc(%ebp),%edx -c0105a7e: 89 10 mov %edx,(%eax) - return 0; -c0105a80: b8 00 00 00 00 mov $0x0,%eax -} -c0105a85: c9 leave -c0105a86: c3 ret - -c0105a87 : - - - -static inline void -check_content_set(void) -{ -c0105a87: 55 push %ebp -c0105a88: 89 e5 mov %esp,%ebp -c0105a8a: 83 ec 08 sub $0x8,%esp - *(unsigned char *)0x1000 = 0x0a; -c0105a8d: b8 00 10 00 00 mov $0x1000,%eax -c0105a92: c6 00 0a movb $0xa,(%eax) - assert(pgfault_num==1); -c0105a95: a1 cc 7a 12 c0 mov 0xc0127acc,%eax -c0105a9a: 83 f8 01 cmp $0x1,%eax -c0105a9d: 74 19 je c0105ab8 -c0105a9f: 68 0a b4 10 c0 push $0xc010b40a -c0105aa4: 68 4a b3 10 c0 push $0xc010b34a -c0105aa9: 68 92 00 00 00 push $0x92 -c0105aae: 68 e4 b2 10 c0 push $0xc010b2e4 -c0105ab3: e8 2c a9 ff ff call c01003e4 <__panic> - *(unsigned char *)0x1010 = 0x0a; -c0105ab8: b8 10 10 00 00 mov $0x1010,%eax -c0105abd: c6 00 0a movb $0xa,(%eax) - assert(pgfault_num==1); -c0105ac0: a1 cc 7a 12 c0 mov 0xc0127acc,%eax -c0105ac5: 83 f8 01 cmp $0x1,%eax -c0105ac8: 74 19 je c0105ae3 -c0105aca: 68 0a b4 10 c0 push $0xc010b40a -c0105acf: 68 4a b3 10 c0 push $0xc010b34a -c0105ad4: 68 94 00 00 00 push $0x94 -c0105ad9: 68 e4 b2 10 c0 push $0xc010b2e4 -c0105ade: e8 01 a9 ff ff call c01003e4 <__panic> - *(unsigned char *)0x2000 = 0x0b; -c0105ae3: b8 00 20 00 00 mov $0x2000,%eax -c0105ae8: c6 00 0b movb $0xb,(%eax) - assert(pgfault_num==2); -c0105aeb: a1 cc 7a 12 c0 mov 0xc0127acc,%eax -c0105af0: 83 f8 02 cmp $0x2,%eax -c0105af3: 74 19 je c0105b0e -c0105af5: 68 19 b4 10 c0 push $0xc010b419 -c0105afa: 68 4a b3 10 c0 push $0xc010b34a -c0105aff: 68 96 00 00 00 push $0x96 -c0105b04: 68 e4 b2 10 c0 push $0xc010b2e4 -c0105b09: e8 d6 a8 ff ff call c01003e4 <__panic> - *(unsigned char *)0x2010 = 0x0b; -c0105b0e: b8 10 20 00 00 mov $0x2010,%eax -c0105b13: c6 00 0b movb $0xb,(%eax) - assert(pgfault_num==2); -c0105b16: a1 cc 7a 12 c0 mov 0xc0127acc,%eax -c0105b1b: 83 f8 02 cmp $0x2,%eax -c0105b1e: 74 19 je c0105b39 -c0105b20: 68 19 b4 10 c0 push $0xc010b419 -c0105b25: 68 4a b3 10 c0 push $0xc010b34a -c0105b2a: 68 98 00 00 00 push $0x98 -c0105b2f: 68 e4 b2 10 c0 push $0xc010b2e4 -c0105b34: e8 ab a8 ff ff call c01003e4 <__panic> - *(unsigned char *)0x3000 = 0x0c; -c0105b39: b8 00 30 00 00 mov $0x3000,%eax -c0105b3e: c6 00 0c movb $0xc,(%eax) - assert(pgfault_num==3); -c0105b41: a1 cc 7a 12 c0 mov 0xc0127acc,%eax -c0105b46: 83 f8 03 cmp $0x3,%eax -c0105b49: 74 19 je c0105b64 -c0105b4b: 68 28 b4 10 c0 push $0xc010b428 -c0105b50: 68 4a b3 10 c0 push $0xc010b34a -c0105b55: 68 9a 00 00 00 push $0x9a -c0105b5a: 68 e4 b2 10 c0 push $0xc010b2e4 -c0105b5f: e8 80 a8 ff ff call c01003e4 <__panic> - *(unsigned char *)0x3010 = 0x0c; -c0105b64: b8 10 30 00 00 mov $0x3010,%eax -c0105b69: c6 00 0c movb $0xc,(%eax) - assert(pgfault_num==3); -c0105b6c: a1 cc 7a 12 c0 mov 0xc0127acc,%eax -c0105b71: 83 f8 03 cmp $0x3,%eax -c0105b74: 74 19 je c0105b8f -c0105b76: 68 28 b4 10 c0 push $0xc010b428 -c0105b7b: 68 4a b3 10 c0 push $0xc010b34a -c0105b80: 68 9c 00 00 00 push $0x9c -c0105b85: 68 e4 b2 10 c0 push $0xc010b2e4 -c0105b8a: e8 55 a8 ff ff call c01003e4 <__panic> - *(unsigned char *)0x4000 = 0x0d; -c0105b8f: b8 00 40 00 00 mov $0x4000,%eax -c0105b94: c6 00 0d movb $0xd,(%eax) - assert(pgfault_num==4); -c0105b97: a1 cc 7a 12 c0 mov 0xc0127acc,%eax -c0105b9c: 83 f8 04 cmp $0x4,%eax -c0105b9f: 74 19 je c0105bba -c0105ba1: 68 37 b4 10 c0 push $0xc010b437 -c0105ba6: 68 4a b3 10 c0 push $0xc010b34a -c0105bab: 68 9e 00 00 00 push $0x9e -c0105bb0: 68 e4 b2 10 c0 push $0xc010b2e4 -c0105bb5: e8 2a a8 ff ff call c01003e4 <__panic> - *(unsigned char *)0x4010 = 0x0d; -c0105bba: b8 10 40 00 00 mov $0x4010,%eax -c0105bbf: c6 00 0d movb $0xd,(%eax) - assert(pgfault_num==4); -c0105bc2: a1 cc 7a 12 c0 mov 0xc0127acc,%eax -c0105bc7: 83 f8 04 cmp $0x4,%eax -c0105bca: 74 19 je c0105be5 -c0105bcc: 68 37 b4 10 c0 push $0xc010b437 -c0105bd1: 68 4a b3 10 c0 push $0xc010b34a -c0105bd6: 68 a0 00 00 00 push $0xa0 -c0105bdb: 68 e4 b2 10 c0 push $0xc010b2e4 -c0105be0: e8 ff a7 ff ff call c01003e4 <__panic> -} -c0105be5: 90 nop -c0105be6: c9 leave -c0105be7: c3 ret - -c0105be8 : - -static inline int -check_content_access(void) -{ -c0105be8: 55 push %ebp -c0105be9: 89 e5 mov %esp,%ebp -c0105beb: 83 ec 18 sub $0x18,%esp - int ret = sm->check_swap(); -c0105bee: a1 d8 7a 12 c0 mov 0xc0127ad8,%eax -c0105bf3: 8b 40 1c mov 0x1c(%eax),%eax -c0105bf6: ff d0 call *%eax -c0105bf8: 89 45 f4 mov %eax,-0xc(%ebp) - return ret; -c0105bfb: 8b 45 f4 mov -0xc(%ebp),%eax -} -c0105bfe: c9 leave -c0105bff: c3 ret - -c0105c00 : -#define free_list (free_area.free_list) -#define nr_free (free_area.nr_free) - -static void -check_swap(void) -{ -c0105c00: 55 push %ebp -c0105c01: 89 e5 mov %esp,%ebp -c0105c03: 83 ec 68 sub $0x68,%esp - //backup mem env - int ret, count = 0, total = 0, i; -c0105c06: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) -c0105c0d: c7 45 f0 00 00 00 00 movl $0x0,-0x10(%ebp) - list_entry_t *le = &free_list; -c0105c14: c7 45 e8 0c 9c 12 c0 movl $0xc0129c0c,-0x18(%ebp) - while ((le = list_next(le)) != &free_list) { -c0105c1b: eb 60 jmp c0105c7d - struct Page *p = le2page(le, page_link); -c0105c1d: 8b 45 e8 mov -0x18(%ebp),%eax -c0105c20: 83 e8 0c sub $0xc,%eax -c0105c23: 89 45 e0 mov %eax,-0x20(%ebp) - assert(PageProperty(p)); -c0105c26: 8b 45 e0 mov -0x20(%ebp),%eax -c0105c29: 83 c0 04 add $0x4,%eax -c0105c2c: c7 45 b0 01 00 00 00 movl $0x1,-0x50(%ebp) -c0105c33: 89 45 ac mov %eax,-0x54(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); -c0105c36: 8b 45 ac mov -0x54(%ebp),%eax -c0105c39: 8b 55 b0 mov -0x50(%ebp),%edx -c0105c3c: 0f a3 10 bt %edx,(%eax) -c0105c3f: 19 c0 sbb %eax,%eax -c0105c41: 89 45 a8 mov %eax,-0x58(%ebp) - return oldbit != 0; -c0105c44: 83 7d a8 00 cmpl $0x0,-0x58(%ebp) -c0105c48: 0f 95 c0 setne %al -c0105c4b: 0f b6 c0 movzbl %al,%eax -c0105c4e: 85 c0 test %eax,%eax -c0105c50: 75 19 jne c0105c6b -c0105c52: 68 46 b4 10 c0 push $0xc010b446 -c0105c57: 68 4a b3 10 c0 push $0xc010b34a -c0105c5c: 68 bb 00 00 00 push $0xbb -c0105c61: 68 e4 b2 10 c0 push $0xc010b2e4 -c0105c66: e8 79 a7 ff ff call c01003e4 <__panic> - count ++, total += p->property; -c0105c6b: 83 45 f4 01 addl $0x1,-0xc(%ebp) -c0105c6f: 8b 45 e0 mov -0x20(%ebp),%eax -c0105c72: 8b 50 08 mov 0x8(%eax),%edx -c0105c75: 8b 45 f0 mov -0x10(%ebp),%eax -c0105c78: 01 d0 add %edx,%eax -c0105c7a: 89 45 f0 mov %eax,-0x10(%ebp) -c0105c7d: 8b 45 e8 mov -0x18(%ebp),%eax -c0105c80: 89 45 dc mov %eax,-0x24(%ebp) -c0105c83: 8b 45 dc mov -0x24(%ebp),%eax -c0105c86: 8b 40 04 mov 0x4(%eax),%eax -check_swap(void) -{ - //backup mem env - int ret, count = 0, total = 0, i; - list_entry_t *le = &free_list; - while ((le = list_next(le)) != &free_list) { -c0105c89: 89 45 e8 mov %eax,-0x18(%ebp) -c0105c8c: 81 7d e8 0c 9c 12 c0 cmpl $0xc0129c0c,-0x18(%ebp) -c0105c93: 75 88 jne c0105c1d - struct Page *p = le2page(le, page_link); - assert(PageProperty(p)); - count ++, total += p->property; - } - assert(total == nr_free_pages()); -c0105c95: e8 96 d9 ff ff call c0103630 -c0105c9a: 89 c2 mov %eax,%edx -c0105c9c: 8b 45 f0 mov -0x10(%ebp),%eax -c0105c9f: 39 c2 cmp %eax,%edx -c0105ca1: 74 19 je c0105cbc -c0105ca3: 68 56 b4 10 c0 push $0xc010b456 -c0105ca8: 68 4a b3 10 c0 push $0xc010b34a -c0105cad: 68 be 00 00 00 push $0xbe -c0105cb2: 68 e4 b2 10 c0 push $0xc010b2e4 -c0105cb7: e8 28 a7 ff ff call c01003e4 <__panic> - cprintf("BEGIN check_swap: count %d, total %d\n",count,total); -c0105cbc: 83 ec 04 sub $0x4,%esp -c0105cbf: ff 75 f0 pushl -0x10(%ebp) -c0105cc2: ff 75 f4 pushl -0xc(%ebp) -c0105cc5: 68 70 b4 10 c0 push $0xc010b470 -c0105cca: e8 af a5 ff ff call c010027e -c0105ccf: 83 c4 10 add $0x10,%esp - - //now we set the phy pages env - struct mm_struct *mm = mm_create(); -c0105cd2: e8 b9 ee ff ff call c0104b90 -c0105cd7: 89 45 d8 mov %eax,-0x28(%ebp) - assert(mm != NULL); -c0105cda: 83 7d d8 00 cmpl $0x0,-0x28(%ebp) -c0105cde: 75 19 jne c0105cf9 -c0105ce0: 68 96 b4 10 c0 push $0xc010b496 -c0105ce5: 68 4a b3 10 c0 push $0xc010b34a -c0105cea: 68 c3 00 00 00 push $0xc3 -c0105cef: 68 e4 b2 10 c0 push $0xc010b2e4 -c0105cf4: e8 eb a6 ff ff call c01003e4 <__panic> - - extern struct mm_struct *check_mm_struct; - assert(check_mm_struct == NULL); -c0105cf9: a1 24 9b 12 c0 mov 0xc0129b24,%eax -c0105cfe: 85 c0 test %eax,%eax -c0105d00: 74 19 je c0105d1b -c0105d02: 68 a1 b4 10 c0 push $0xc010b4a1 -c0105d07: 68 4a b3 10 c0 push $0xc010b34a -c0105d0c: 68 c6 00 00 00 push $0xc6 -c0105d11: 68 e4 b2 10 c0 push $0xc010b2e4 -c0105d16: e8 c9 a6 ff ff call c01003e4 <__panic> - - check_mm_struct = mm; -c0105d1b: 8b 45 d8 mov -0x28(%ebp),%eax -c0105d1e: a3 24 9b 12 c0 mov %eax,0xc0129b24 - - pde_t *pgdir = mm->pgdir = boot_pgdir; -c0105d23: 8b 15 44 7a 12 c0 mov 0xc0127a44,%edx -c0105d29: 8b 45 d8 mov -0x28(%ebp),%eax -c0105d2c: 89 50 0c mov %edx,0xc(%eax) -c0105d2f: 8b 45 d8 mov -0x28(%ebp),%eax -c0105d32: 8b 40 0c mov 0xc(%eax),%eax -c0105d35: 89 45 d4 mov %eax,-0x2c(%ebp) - assert(pgdir[0] == 0); -c0105d38: 8b 45 d4 mov -0x2c(%ebp),%eax -c0105d3b: 8b 00 mov (%eax),%eax -c0105d3d: 85 c0 test %eax,%eax -c0105d3f: 74 19 je c0105d5a -c0105d41: 68 b9 b4 10 c0 push $0xc010b4b9 -c0105d46: 68 4a b3 10 c0 push $0xc010b34a -c0105d4b: 68 cb 00 00 00 push $0xcb -c0105d50: 68 e4 b2 10 c0 push $0xc010b2e4 -c0105d55: e8 8a a6 ff ff call c01003e4 <__panic> - - struct vma_struct *vma = vma_create(BEING_CHECK_VALID_VADDR, CHECK_VALID_VADDR, VM_WRITE | VM_READ); -c0105d5a: 83 ec 04 sub $0x4,%esp -c0105d5d: 6a 03 push $0x3 -c0105d5f: 68 00 60 00 00 push $0x6000 -c0105d64: 68 00 10 00 00 push $0x1000 -c0105d69: e8 9e ee ff ff call c0104c0c -c0105d6e: 83 c4 10 add $0x10,%esp -c0105d71: 89 45 d0 mov %eax,-0x30(%ebp) - assert(vma != NULL); -c0105d74: 83 7d d0 00 cmpl $0x0,-0x30(%ebp) -c0105d78: 75 19 jne c0105d93 -c0105d7a: 68 c7 b4 10 c0 push $0xc010b4c7 -c0105d7f: 68 4a b3 10 c0 push $0xc010b34a -c0105d84: 68 ce 00 00 00 push $0xce -c0105d89: 68 e4 b2 10 c0 push $0xc010b2e4 -c0105d8e: e8 51 a6 ff ff call c01003e4 <__panic> - - insert_vma_struct(mm, vma); -c0105d93: 83 ec 08 sub $0x8,%esp -c0105d96: ff 75 d0 pushl -0x30(%ebp) -c0105d99: ff 75 d8 pushl -0x28(%ebp) -c0105d9c: e8 d3 ef ff ff call c0104d74 -c0105da1: 83 c4 10 add $0x10,%esp - - //setup the temp Page Table vaddr 0~4MB - cprintf("setup Page Table for vaddr 0X1000, so alloc a page\n"); -c0105da4: 83 ec 0c sub $0xc,%esp -c0105da7: 68 d4 b4 10 c0 push $0xc010b4d4 -c0105dac: e8 cd a4 ff ff call c010027e -c0105db1: 83 c4 10 add $0x10,%esp - pte_t *temp_ptep=NULL; -c0105db4: c7 45 cc 00 00 00 00 movl $0x0,-0x34(%ebp) - temp_ptep = get_pte(mm->pgdir, BEING_CHECK_VALID_VADDR, 1); -c0105dbb: 8b 45 d8 mov -0x28(%ebp),%eax -c0105dbe: 8b 40 0c mov 0xc(%eax),%eax -c0105dc1: 83 ec 04 sub $0x4,%esp -c0105dc4: 6a 01 push $0x1 -c0105dc6: 68 00 10 00 00 push $0x1000 -c0105dcb: 50 push %eax -c0105dcc: e8 a9 de ff ff call c0103c7a -c0105dd1: 83 c4 10 add $0x10,%esp -c0105dd4: 89 45 cc mov %eax,-0x34(%ebp) - assert(temp_ptep!= NULL); -c0105dd7: 83 7d cc 00 cmpl $0x0,-0x34(%ebp) -c0105ddb: 75 19 jne c0105df6 -c0105ddd: 68 08 b5 10 c0 push $0xc010b508 -c0105de2: 68 4a b3 10 c0 push $0xc010b34a -c0105de7: 68 d6 00 00 00 push $0xd6 -c0105dec: 68 e4 b2 10 c0 push $0xc010b2e4 -c0105df1: e8 ee a5 ff ff call c01003e4 <__panic> - cprintf("setup Page Table vaddr 0~4MB OVER!\n"); -c0105df6: 83 ec 0c sub $0xc,%esp -c0105df9: 68 1c b5 10 c0 push $0xc010b51c -c0105dfe: e8 7b a4 ff ff call c010027e -c0105e03: 83 c4 10 add $0x10,%esp - - for (i=0;i - check_rp[i] = alloc_page(); -c0105e12: 83 ec 0c sub $0xc,%esp -c0105e15: 6a 01 push $0x1 -c0105e17: e8 73 d7 ff ff call c010358f -c0105e1c: 83 c4 10 add $0x10,%esp -c0105e1f: 89 c2 mov %eax,%edx -c0105e21: 8b 45 ec mov -0x14(%ebp),%eax -c0105e24: 89 14 85 40 9b 12 c0 mov %edx,-0x3fed64c0(,%eax,4) - assert(check_rp[i] != NULL ); -c0105e2b: 8b 45 ec mov -0x14(%ebp),%eax -c0105e2e: 8b 04 85 40 9b 12 c0 mov -0x3fed64c0(,%eax,4),%eax -c0105e35: 85 c0 test %eax,%eax -c0105e37: 75 19 jne c0105e52 -c0105e39: 68 40 b5 10 c0 push $0xc010b540 -c0105e3e: 68 4a b3 10 c0 push $0xc010b34a -c0105e43: 68 db 00 00 00 push $0xdb -c0105e48: 68 e4 b2 10 c0 push $0xc010b2e4 -c0105e4d: e8 92 a5 ff ff call c01003e4 <__panic> - assert(!PageProperty(check_rp[i])); -c0105e52: 8b 45 ec mov -0x14(%ebp),%eax -c0105e55: 8b 04 85 40 9b 12 c0 mov -0x3fed64c0(,%eax,4),%eax -c0105e5c: 83 c0 04 add $0x4,%eax -c0105e5f: c7 45 e4 01 00 00 00 movl $0x1,-0x1c(%ebp) -c0105e66: 89 45 a4 mov %eax,-0x5c(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); -c0105e69: 8b 45 a4 mov -0x5c(%ebp),%eax -c0105e6c: 8b 55 e4 mov -0x1c(%ebp),%edx -c0105e6f: 0f a3 10 bt %edx,(%eax) -c0105e72: 19 c0 sbb %eax,%eax -c0105e74: 89 45 a0 mov %eax,-0x60(%ebp) - return oldbit != 0; -c0105e77: 83 7d a0 00 cmpl $0x0,-0x60(%ebp) -c0105e7b: 0f 95 c0 setne %al -c0105e7e: 0f b6 c0 movzbl %al,%eax -c0105e81: 85 c0 test %eax,%eax -c0105e83: 74 19 je c0105e9e -c0105e85: 68 54 b5 10 c0 push $0xc010b554 -c0105e8a: 68 4a b3 10 c0 push $0xc010b34a -c0105e8f: 68 dc 00 00 00 push $0xdc -c0105e94: 68 e4 b2 10 c0 push $0xc010b2e4 -c0105e99: e8 46 a5 ff ff call c01003e4 <__panic> - pte_t *temp_ptep=NULL; - temp_ptep = get_pte(mm->pgdir, BEING_CHECK_VALID_VADDR, 1); - assert(temp_ptep!= NULL); - cprintf("setup Page Table vaddr 0~4MB OVER!\n"); - - for (i=0;i - check_rp[i] = alloc_page(); - assert(check_rp[i] != NULL ); - assert(!PageProperty(check_rp[i])); - } - list_entry_t free_list_store = free_list; -c0105eac: a1 0c 9c 12 c0 mov 0xc0129c0c,%eax -c0105eb1: 8b 15 10 9c 12 c0 mov 0xc0129c10,%edx -c0105eb7: 89 45 98 mov %eax,-0x68(%ebp) -c0105eba: 89 55 9c mov %edx,-0x64(%ebp) -c0105ebd: c7 45 c0 0c 9c 12 c0 movl $0xc0129c0c,-0x40(%ebp) - * list_init - initialize a new entry - * @elm: new entry to be initialized - * */ -static inline void -list_init(list_entry_t *elm) { - elm->prev = elm->next = elm; -c0105ec4: 8b 45 c0 mov -0x40(%ebp),%eax -c0105ec7: 8b 55 c0 mov -0x40(%ebp),%edx -c0105eca: 89 50 04 mov %edx,0x4(%eax) -c0105ecd: 8b 45 c0 mov -0x40(%ebp),%eax -c0105ed0: 8b 50 04 mov 0x4(%eax),%edx -c0105ed3: 8b 45 c0 mov -0x40(%ebp),%eax -c0105ed6: 89 10 mov %edx,(%eax) -c0105ed8: c7 45 c8 0c 9c 12 c0 movl $0xc0129c0c,-0x38(%ebp) - * list_empty - tests whether a list is empty - * @list: the list to test. - * */ -static inline bool -list_empty(list_entry_t *list) { - return list->next == list; -c0105edf: 8b 45 c8 mov -0x38(%ebp),%eax -c0105ee2: 8b 40 04 mov 0x4(%eax),%eax -c0105ee5: 39 45 c8 cmp %eax,-0x38(%ebp) -c0105ee8: 0f 94 c0 sete %al -c0105eeb: 0f b6 c0 movzbl %al,%eax - list_init(&free_list); - assert(list_empty(&free_list)); -c0105eee: 85 c0 test %eax,%eax -c0105ef0: 75 19 jne c0105f0b -c0105ef2: 68 6f b5 10 c0 push $0xc010b56f -c0105ef7: 68 4a b3 10 c0 push $0xc010b34a -c0105efc: 68 e0 00 00 00 push $0xe0 -c0105f01: 68 e4 b2 10 c0 push $0xc010b2e4 -c0105f06: e8 d9 a4 ff ff call c01003e4 <__panic> - - //assert(alloc_page() == NULL); - - unsigned int nr_free_store = nr_free; -c0105f0b: a1 14 9c 12 c0 mov 0xc0129c14,%eax -c0105f10: 89 45 bc mov %eax,-0x44(%ebp) - nr_free = 0; -c0105f13: c7 05 14 9c 12 c0 00 movl $0x0,0xc0129c14 -c0105f1a: 00 00 00 - for (i=0;i - free_pages(check_rp[i],1); -c0105f26: 8b 45 ec mov -0x14(%ebp),%eax -c0105f29: 8b 04 85 40 9b 12 c0 mov -0x3fed64c0(,%eax,4),%eax -c0105f30: 83 ec 08 sub $0x8,%esp -c0105f33: 6a 01 push $0x1 -c0105f35: 50 push %eax -c0105f36: e8 c0 d6 ff ff call c01035fb -c0105f3b: 83 c4 10 add $0x10,%esp - - //assert(alloc_page() == NULL); - - unsigned int nr_free_store = nr_free; - nr_free = 0; - for (i=0;i - free_pages(check_rp[i],1); - } - assert(nr_free==CHECK_VALID_PHY_PAGE_NUM); -c0105f48: a1 14 9c 12 c0 mov 0xc0129c14,%eax -c0105f4d: 83 f8 04 cmp $0x4,%eax -c0105f50: 74 19 je c0105f6b -c0105f52: 68 88 b5 10 c0 push $0xc010b588 -c0105f57: 68 4a b3 10 c0 push $0xc010b34a -c0105f5c: 68 e9 00 00 00 push $0xe9 -c0105f61: 68 e4 b2 10 c0 push $0xc010b2e4 -c0105f66: e8 79 a4 ff ff call c01003e4 <__panic> - - cprintf("set up init env for check_swap begin!\n"); -c0105f6b: 83 ec 0c sub $0xc,%esp -c0105f6e: 68 ac b5 10 c0 push $0xc010b5ac -c0105f73: e8 06 a3 ff ff call c010027e -c0105f78: 83 c4 10 add $0x10,%esp - //setup initial vir_page<->phy_page environment for page relpacement algorithm - - - pgfault_num=0; -c0105f7b: c7 05 cc 7a 12 c0 00 movl $0x0,0xc0127acc -c0105f82: 00 00 00 - - check_content_set(); -c0105f85: e8 fd fa ff ff call c0105a87 - assert( nr_free == 0); -c0105f8a: a1 14 9c 12 c0 mov 0xc0129c14,%eax -c0105f8f: 85 c0 test %eax,%eax -c0105f91: 74 19 je c0105fac -c0105f93: 68 d3 b5 10 c0 push $0xc010b5d3 -c0105f98: 68 4a b3 10 c0 push $0xc010b34a -c0105f9d: 68 f2 00 00 00 push $0xf2 -c0105fa2: 68 e4 b2 10 c0 push $0xc010b2e4 -c0105fa7: e8 38 a4 ff ff call c01003e4 <__panic> - for(i = 0; i - swap_out_seq_no[i]=swap_in_seq_no[i]=-1; -c0105fb5: 8b 45 ec mov -0x14(%ebp),%eax -c0105fb8: c7 04 85 60 9b 12 c0 movl $0xffffffff,-0x3fed64a0(,%eax,4) -c0105fbf: ff ff ff ff -c0105fc3: 8b 45 ec mov -0x14(%ebp),%eax -c0105fc6: 8b 14 85 60 9b 12 c0 mov -0x3fed64a0(,%eax,4),%edx -c0105fcd: 8b 45 ec mov -0x14(%ebp),%eax -c0105fd0: 89 14 85 a0 9b 12 c0 mov %edx,-0x3fed6460(,%eax,4) - - pgfault_num=0; - - check_content_set(); - assert( nr_free == 0); - for(i = 0; i - swap_out_seq_no[i]=swap_in_seq_no[i]=-1; - - for (i= 0;i - check_ptep[i]=0; -c0105fed: 8b 45 ec mov -0x14(%ebp),%eax -c0105ff0: c7 04 85 f4 9b 12 c0 movl $0x0,-0x3fed640c(,%eax,4) -c0105ff7: 00 00 00 00 - check_ptep[i] = get_pte(pgdir, (i+1)*0x1000, 0); -c0105ffb: 8b 45 ec mov -0x14(%ebp),%eax -c0105ffe: 83 c0 01 add $0x1,%eax -c0106001: c1 e0 0c shl $0xc,%eax -c0106004: 83 ec 04 sub $0x4,%esp -c0106007: 6a 00 push $0x0 -c0106009: 50 push %eax -c010600a: ff 75 d4 pushl -0x2c(%ebp) -c010600d: e8 68 dc ff ff call c0103c7a -c0106012: 83 c4 10 add $0x10,%esp -c0106015: 89 c2 mov %eax,%edx -c0106017: 8b 45 ec mov -0x14(%ebp),%eax -c010601a: 89 14 85 f4 9b 12 c0 mov %edx,-0x3fed640c(,%eax,4) - //cprintf("i %d, check_ptep addr %x, value %x\n", i, check_ptep[i], *check_ptep[i]); - assert(check_ptep[i] != NULL); -c0106021: 8b 45 ec mov -0x14(%ebp),%eax -c0106024: 8b 04 85 f4 9b 12 c0 mov -0x3fed640c(,%eax,4),%eax -c010602b: 85 c0 test %eax,%eax -c010602d: 75 19 jne c0106048 -c010602f: 68 e0 b5 10 c0 push $0xc010b5e0 -c0106034: 68 4a b3 10 c0 push $0xc010b34a -c0106039: 68 fa 00 00 00 push $0xfa -c010603e: 68 e4 b2 10 c0 push $0xc010b2e4 -c0106043: e8 9c a3 ff ff call c01003e4 <__panic> - assert(pte2page(*check_ptep[i]) == check_rp[i]); -c0106048: 8b 45 ec mov -0x14(%ebp),%eax -c010604b: 8b 04 85 f4 9b 12 c0 mov -0x3fed640c(,%eax,4),%eax -c0106052: 8b 00 mov (%eax),%eax -c0106054: 83 ec 0c sub $0xc,%esp -c0106057: 50 push %eax -c0106058: e8 f4 f6 ff ff call c0105751 -c010605d: 83 c4 10 add $0x10,%esp -c0106060: 89 c2 mov %eax,%edx -c0106062: 8b 45 ec mov -0x14(%ebp),%eax -c0106065: 8b 04 85 40 9b 12 c0 mov -0x3fed64c0(,%eax,4),%eax -c010606c: 39 c2 cmp %eax,%edx -c010606e: 74 19 je c0106089 -c0106070: 68 f8 b5 10 c0 push $0xc010b5f8 -c0106075: 68 4a b3 10 c0 push $0xc010b34a -c010607a: 68 fb 00 00 00 push $0xfb -c010607f: 68 e4 b2 10 c0 push $0xc010b2e4 -c0106084: e8 5b a3 ff ff call c01003e4 <__panic> - assert((*check_ptep[i] & PTE_P)); -c0106089: 8b 45 ec mov -0x14(%ebp),%eax -c010608c: 8b 04 85 f4 9b 12 c0 mov -0x3fed640c(,%eax,4),%eax -c0106093: 8b 00 mov (%eax),%eax -c0106095: 83 e0 01 and $0x1,%eax -c0106098: 85 c0 test %eax,%eax -c010609a: 75 19 jne c01060b5 -c010609c: 68 20 b6 10 c0 push $0xc010b620 -c01060a1: 68 4a b3 10 c0 push $0xc010b34a -c01060a6: 68 fc 00 00 00 push $0xfc -c01060ab: 68 e4 b2 10 c0 push $0xc010b2e4 -c01060b0: e8 2f a3 ff ff call c01003e4 <__panic> - check_content_set(); - assert( nr_free == 0); - for(i = 0; i - //cprintf("i %d, check_ptep addr %x, value %x\n", i, check_ptep[i], *check_ptep[i]); - assert(check_ptep[i] != NULL); - assert(pte2page(*check_ptep[i]) == check_rp[i]); - assert((*check_ptep[i] & PTE_P)); - } - cprintf("set up init env for check_swap over!\n"); -c01060c3: 83 ec 0c sub $0xc,%esp -c01060c6: 68 3c b6 10 c0 push $0xc010b63c -c01060cb: e8 ae a1 ff ff call c010027e -c01060d0: 83 c4 10 add $0x10,%esp - // now access the virt pages to test page relpacement algorithm - ret=check_content_access(); -c01060d3: e8 10 fb ff ff call c0105be8 -c01060d8: 89 45 b8 mov %eax,-0x48(%ebp) - assert(ret==0); -c01060db: 83 7d b8 00 cmpl $0x0,-0x48(%ebp) -c01060df: 74 19 je c01060fa -c01060e1: 68 62 b6 10 c0 push $0xc010b662 -c01060e6: 68 4a b3 10 c0 push $0xc010b34a -c01060eb: 68 01 01 00 00 push $0x101 -c01060f0: 68 e4 b2 10 c0 push $0xc010b2e4 -c01060f5: e8 ea a2 ff ff call c01003e4 <__panic> - - //restore kernel mem env - for (i=0;i - free_pages(check_rp[i],1); -c0106103: 8b 45 ec mov -0x14(%ebp),%eax -c0106106: 8b 04 85 40 9b 12 c0 mov -0x3fed64c0(,%eax,4),%eax -c010610d: 83 ec 08 sub $0x8,%esp -c0106110: 6a 01 push $0x1 -c0106112: 50 push %eax -c0106113: e8 e3 d4 ff ff call c01035fb -c0106118: 83 c4 10 add $0x10,%esp - // now access the virt pages to test page relpacement algorithm - ret=check_content_access(); - assert(ret==0); - - //restore kernel mem env - for (i=0;i - free_pages(check_rp[i],1); - } - - //free_page(pte2page(*temp_ptep)); - - mm_destroy(mm); -c0106125: 83 ec 0c sub $0xc,%esp -c0106128: ff 75 d8 pushl -0x28(%ebp) -c010612b: e8 68 ed ff ff call c0104e98 -c0106130: 83 c4 10 add $0x10,%esp - - nr_free = nr_free_store; -c0106133: 8b 45 bc mov -0x44(%ebp),%eax -c0106136: a3 14 9c 12 c0 mov %eax,0xc0129c14 - free_list = free_list_store; -c010613b: 8b 45 98 mov -0x68(%ebp),%eax -c010613e: 8b 55 9c mov -0x64(%ebp),%edx -c0106141: a3 0c 9c 12 c0 mov %eax,0xc0129c0c -c0106146: 89 15 10 9c 12 c0 mov %edx,0xc0129c10 - - - le = &free_list; -c010614c: c7 45 e8 0c 9c 12 c0 movl $0xc0129c0c,-0x18(%ebp) - while ((le = list_next(le)) != &free_list) { -c0106153: eb 1d jmp c0106172 - struct Page *p = le2page(le, page_link); -c0106155: 8b 45 e8 mov -0x18(%ebp),%eax -c0106158: 83 e8 0c sub $0xc,%eax -c010615b: 89 45 b4 mov %eax,-0x4c(%ebp) - count --, total -= p->property; -c010615e: 83 6d f4 01 subl $0x1,-0xc(%ebp) -c0106162: 8b 55 f0 mov -0x10(%ebp),%edx -c0106165: 8b 45 b4 mov -0x4c(%ebp),%eax -c0106168: 8b 40 08 mov 0x8(%eax),%eax -c010616b: 29 c2 sub %eax,%edx -c010616d: 89 d0 mov %edx,%eax -c010616f: 89 45 f0 mov %eax,-0x10(%ebp) -c0106172: 8b 45 e8 mov -0x18(%ebp),%eax -c0106175: 89 45 c4 mov %eax,-0x3c(%ebp) - * list_next - get the next entry - * @listelm: the list head - **/ -static inline list_entry_t * -list_next(list_entry_t *listelm) { - return listelm->next; -c0106178: 8b 45 c4 mov -0x3c(%ebp),%eax -c010617b: 8b 40 04 mov 0x4(%eax),%eax - nr_free = nr_free_store; - free_list = free_list_store; - - - le = &free_list; - while ((le = list_next(le)) != &free_list) { -c010617e: 89 45 e8 mov %eax,-0x18(%ebp) -c0106181: 81 7d e8 0c 9c 12 c0 cmpl $0xc0129c0c,-0x18(%ebp) -c0106188: 75 cb jne c0106155 - struct Page *p = le2page(le, page_link); - count --, total -= p->property; - } - cprintf("count is %d, total is %d\n",count,total); -c010618a: 83 ec 04 sub $0x4,%esp -c010618d: ff 75 f0 pushl -0x10(%ebp) -c0106190: ff 75 f4 pushl -0xc(%ebp) -c0106193: 68 69 b6 10 c0 push $0xc010b669 -c0106198: e8 e1 a0 ff ff call c010027e -c010619d: 83 c4 10 add $0x10,%esp - //assert(count == 0); - - cprintf("check_swap() succeeded!\n"); -c01061a0: 83 ec 0c sub $0xc,%esp -c01061a3: 68 83 b6 10 c0 push $0xc010b683 -c01061a8: e8 d1 a0 ff ff call c010027e -c01061ad: 83 c4 10 add $0x10,%esp -} -c01061b0: 90 nop -c01061b1: c9 leave -c01061b2: c3 ret - -c01061b3 <__intr_save>: -#include -#include -#include - -static inline bool -__intr_save(void) { -c01061b3: 55 push %ebp -c01061b4: 89 e5 mov %esp,%ebp -c01061b6: 83 ec 18 sub $0x18,%esp -} - -static inline uint32_t -read_eflags(void) { - uint32_t eflags; - asm volatile ("pushfl; popl %0" : "=r" (eflags)); -c01061b9: 9c pushf -c01061ba: 58 pop %eax -c01061bb: 89 45 f4 mov %eax,-0xc(%ebp) - return eflags; -c01061be: 8b 45 f4 mov -0xc(%ebp),%eax - if (read_eflags() & FL_IF) { -c01061c1: 25 00 02 00 00 and $0x200,%eax -c01061c6: 85 c0 test %eax,%eax -c01061c8: 74 0c je c01061d6 <__intr_save+0x23> - intr_disable(); -c01061ca: e8 db be ff ff call c01020aa - return 1; -c01061cf: b8 01 00 00 00 mov $0x1,%eax -c01061d4: eb 05 jmp c01061db <__intr_save+0x28> - } - return 0; -c01061d6: b8 00 00 00 00 mov $0x0,%eax -} -c01061db: c9 leave -c01061dc: c3 ret - -c01061dd <__intr_restore>: - -static inline void -__intr_restore(bool flag) { -c01061dd: 55 push %ebp -c01061de: 89 e5 mov %esp,%ebp -c01061e0: 83 ec 08 sub $0x8,%esp - if (flag) { -c01061e3: 83 7d 08 00 cmpl $0x0,0x8(%ebp) -c01061e7: 74 05 je c01061ee <__intr_restore+0x11> - intr_enable(); -c01061e9: e8 b5 be ff ff call c01020a3 - } -} -c01061ee: 90 nop -c01061ef: c9 leave -c01061f0: c3 ret - -c01061f1 : - -extern struct Page *pages; -extern size_t npage; - -static inline ppn_t -page2ppn(struct Page *page) { -c01061f1: 55 push %ebp -c01061f2: 89 e5 mov %esp,%ebp - return page - pages; -c01061f4: 8b 45 08 mov 0x8(%ebp),%eax -c01061f7: 8b 15 20 9b 12 c0 mov 0xc0129b20,%edx -c01061fd: 29 d0 sub %edx,%eax -c01061ff: c1 f8 05 sar $0x5,%eax -} -c0106202: 5d pop %ebp -c0106203: c3 ret - -c0106204 : - -static inline uintptr_t -page2pa(struct Page *page) { -c0106204: 55 push %ebp -c0106205: 89 e5 mov %esp,%ebp - return page2ppn(page) << PGSHIFT; -c0106207: ff 75 08 pushl 0x8(%ebp) -c010620a: e8 e2 ff ff ff call c01061f1 -c010620f: 83 c4 04 add $0x4,%esp -c0106212: c1 e0 0c shl $0xc,%eax -} -c0106215: c9 leave -c0106216: c3 ret - -c0106217 : - -static inline struct Page * -pa2page(uintptr_t pa) { -c0106217: 55 push %ebp -c0106218: 89 e5 mov %esp,%ebp -c010621a: 83 ec 08 sub $0x8,%esp - if (PPN(pa) >= npage) { -c010621d: 8b 45 08 mov 0x8(%ebp),%eax -c0106220: c1 e8 0c shr $0xc,%eax -c0106223: 89 c2 mov %eax,%edx -c0106225: a1 40 7a 12 c0 mov 0xc0127a40,%eax -c010622a: 39 c2 cmp %eax,%edx -c010622c: 72 14 jb c0106242 - panic("pa2page called with invalid pa"); -c010622e: 83 ec 04 sub $0x4,%esp -c0106231: 68 9c b6 10 c0 push $0xc010b69c -c0106236: 6a 5f push $0x5f -c0106238: 68 bb b6 10 c0 push $0xc010b6bb -c010623d: e8 a2 a1 ff ff call c01003e4 <__panic> - } - return &pages[PPN(pa)]; -c0106242: a1 20 9b 12 c0 mov 0xc0129b20,%eax -c0106247: 8b 55 08 mov 0x8(%ebp),%edx -c010624a: c1 ea 0c shr $0xc,%edx -c010624d: c1 e2 05 shl $0x5,%edx -c0106250: 01 d0 add %edx,%eax -} -c0106252: c9 leave -c0106253: c3 ret - -c0106254 : - -static inline void * -page2kva(struct Page *page) { -c0106254: 55 push %ebp -c0106255: 89 e5 mov %esp,%ebp -c0106257: 83 ec 18 sub $0x18,%esp - return KADDR(page2pa(page)); -c010625a: ff 75 08 pushl 0x8(%ebp) -c010625d: e8 a2 ff ff ff call c0106204 -c0106262: 83 c4 04 add $0x4,%esp -c0106265: 89 45 f4 mov %eax,-0xc(%ebp) -c0106268: 8b 45 f4 mov -0xc(%ebp),%eax -c010626b: c1 e8 0c shr $0xc,%eax -c010626e: 89 45 f0 mov %eax,-0x10(%ebp) -c0106271: a1 40 7a 12 c0 mov 0xc0127a40,%eax -c0106276: 39 45 f0 cmp %eax,-0x10(%ebp) -c0106279: 72 14 jb c010628f -c010627b: ff 75 f4 pushl -0xc(%ebp) -c010627e: 68 cc b6 10 c0 push $0xc010b6cc -c0106283: 6a 66 push $0x66 -c0106285: 68 bb b6 10 c0 push $0xc010b6bb -c010628a: e8 55 a1 ff ff call c01003e4 <__panic> -c010628f: 8b 45 f4 mov -0xc(%ebp),%eax -c0106292: 2d 00 00 00 40 sub $0x40000000,%eax -} -c0106297: c9 leave -c0106298: c3 ret - -c0106299 : - -static inline struct Page * -kva2page(void *kva) { -c0106299: 55 push %ebp -c010629a: 89 e5 mov %esp,%ebp -c010629c: 83 ec 18 sub $0x18,%esp - return pa2page(PADDR(kva)); -c010629f: 8b 45 08 mov 0x8(%ebp),%eax -c01062a2: 89 45 f4 mov %eax,-0xc(%ebp) -c01062a5: 81 7d f4 ff ff ff bf cmpl $0xbfffffff,-0xc(%ebp) -c01062ac: 77 14 ja c01062c2 -c01062ae: ff 75 f4 pushl -0xc(%ebp) -c01062b1: 68 f0 b6 10 c0 push $0xc010b6f0 -c01062b6: 6a 6b push $0x6b -c01062b8: 68 bb b6 10 c0 push $0xc010b6bb -c01062bd: e8 22 a1 ff ff call c01003e4 <__panic> -c01062c2: 8b 45 f4 mov -0xc(%ebp),%eax -c01062c5: 05 00 00 00 40 add $0x40000000,%eax -c01062ca: 83 ec 0c sub $0xc,%esp -c01062cd: 50 push %eax -c01062ce: e8 44 ff ff ff call c0106217 -c01062d3: 83 c4 10 add $0x10,%esp -} -c01062d6: c9 leave -c01062d7: c3 ret - -c01062d8 <__slob_get_free_pages>: -static slob_t *slobfree = &arena; -static bigblock_t *bigblocks; - - -static void* __slob_get_free_pages(gfp_t gfp, int order) -{ -c01062d8: 55 push %ebp -c01062d9: 89 e5 mov %esp,%ebp -c01062db: 83 ec 18 sub $0x18,%esp - struct Page * page = alloc_pages(1 << order); -c01062de: 8b 45 0c mov 0xc(%ebp),%eax -c01062e1: ba 01 00 00 00 mov $0x1,%edx -c01062e6: 89 c1 mov %eax,%ecx -c01062e8: d3 e2 shl %cl,%edx -c01062ea: 89 d0 mov %edx,%eax -c01062ec: 83 ec 0c sub $0xc,%esp -c01062ef: 50 push %eax -c01062f0: e8 9a d2 ff ff call c010358f -c01062f5: 83 c4 10 add $0x10,%esp -c01062f8: 89 45 f4 mov %eax,-0xc(%ebp) - if(!page) -c01062fb: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c01062ff: 75 07 jne c0106308 <__slob_get_free_pages+0x30> - return NULL; -c0106301: b8 00 00 00 00 mov $0x0,%eax -c0106306: eb 0e jmp c0106316 <__slob_get_free_pages+0x3e> - return page2kva(page); -c0106308: 83 ec 0c sub $0xc,%esp -c010630b: ff 75 f4 pushl -0xc(%ebp) -c010630e: e8 41 ff ff ff call c0106254 -c0106313: 83 c4 10 add $0x10,%esp -} -c0106316: c9 leave -c0106317: c3 ret - -c0106318 <__slob_free_pages>: - -#define __slob_get_free_page(gfp) __slob_get_free_pages(gfp, 0) - -static inline void __slob_free_pages(unsigned long kva, int order) -{ -c0106318: 55 push %ebp -c0106319: 89 e5 mov %esp,%ebp -c010631b: 53 push %ebx -c010631c: 83 ec 04 sub $0x4,%esp - free_pages(kva2page(kva), 1 << order); -c010631f: 8b 45 0c mov 0xc(%ebp),%eax -c0106322: ba 01 00 00 00 mov $0x1,%edx -c0106327: 89 c1 mov %eax,%ecx -c0106329: d3 e2 shl %cl,%edx -c010632b: 89 d0 mov %edx,%eax -c010632d: 89 c3 mov %eax,%ebx -c010632f: 8b 45 08 mov 0x8(%ebp),%eax -c0106332: 83 ec 0c sub $0xc,%esp -c0106335: 50 push %eax -c0106336: e8 5e ff ff ff call c0106299 -c010633b: 83 c4 10 add $0x10,%esp -c010633e: 83 ec 08 sub $0x8,%esp -c0106341: 53 push %ebx -c0106342: 50 push %eax -c0106343: e8 b3 d2 ff ff call c01035fb -c0106348: 83 c4 10 add $0x10,%esp -} -c010634b: 90 nop -c010634c: 8b 5d fc mov -0x4(%ebp),%ebx -c010634f: c9 leave -c0106350: c3 ret - -c0106351 : - -static void slob_free(void *b, int size); - -static void *first_fit_alloc(size_t size, gfp_t gfp, int align) -{ -c0106351: 55 push %ebp -c0106352: 89 e5 mov %esp,%ebp -c0106354: 83 ec 28 sub $0x28,%esp - assert( (size + SLOB_UNIT) < PAGE_SIZE ); -c0106357: 8b 45 08 mov 0x8(%ebp),%eax -c010635a: 83 c0 08 add $0x8,%eax -c010635d: 3d ff 0f 00 00 cmp $0xfff,%eax -c0106362: 76 16 jbe c010637a -c0106364: 68 14 b7 10 c0 push $0xc010b714 -c0106369: 68 33 b7 10 c0 push $0xc010b733 -c010636e: 6a 65 push $0x65 -c0106370: 68 48 b7 10 c0 push $0xc010b748 -c0106375: e8 6a a0 ff ff call c01003e4 <__panic> - - slob_t *prev, *cur, *aligned = 0; -c010637a: c7 45 ec 00 00 00 00 movl $0x0,-0x14(%ebp) - int delta = 0, units = SLOB_UNITS(size); -c0106381: c7 45 e8 00 00 00 00 movl $0x0,-0x18(%ebp) -c0106388: 8b 45 08 mov 0x8(%ebp),%eax -c010638b: 83 c0 07 add $0x7,%eax -c010638e: c1 e8 03 shr $0x3,%eax -c0106391: 89 45 e0 mov %eax,-0x20(%ebp) - unsigned long flags; - - spin_lock_irqsave(&slob_lock, flags); -c0106394: e8 1a fe ff ff call c01061b3 <__intr_save> -c0106399: 89 45 e4 mov %eax,-0x1c(%ebp) - prev = slobfree; -c010639c: a1 40 6a 12 c0 mov 0xc0126a40,%eax -c01063a1: 89 45 f4 mov %eax,-0xc(%ebp) - for (cur = prev->next; ; prev = cur, cur = cur->next) { -c01063a4: 8b 45 f4 mov -0xc(%ebp),%eax -c01063a7: 8b 40 04 mov 0x4(%eax),%eax -c01063aa: 89 45 f0 mov %eax,-0x10(%ebp) - if (align) { -c01063ad: 83 7d 10 00 cmpl $0x0,0x10(%ebp) -c01063b1: 74 25 je c01063d8 - aligned = (slob_t *)ALIGN((unsigned long)cur, align); -c01063b3: 8b 55 f0 mov -0x10(%ebp),%edx -c01063b6: 8b 45 10 mov 0x10(%ebp),%eax -c01063b9: 01 d0 add %edx,%eax -c01063bb: 8d 50 ff lea -0x1(%eax),%edx -c01063be: 8b 45 10 mov 0x10(%ebp),%eax -c01063c1: f7 d8 neg %eax -c01063c3: 21 d0 and %edx,%eax -c01063c5: 89 45 ec mov %eax,-0x14(%ebp) - delta = aligned - cur; -c01063c8: 8b 55 ec mov -0x14(%ebp),%edx -c01063cb: 8b 45 f0 mov -0x10(%ebp),%eax -c01063ce: 29 c2 sub %eax,%edx -c01063d0: 89 d0 mov %edx,%eax -c01063d2: c1 f8 03 sar $0x3,%eax -c01063d5: 89 45 e8 mov %eax,-0x18(%ebp) - } - if (cur->units >= units + delta) { /* room enough? */ -c01063d8: 8b 45 f0 mov -0x10(%ebp),%eax -c01063db: 8b 00 mov (%eax),%eax -c01063dd: 8b 4d e0 mov -0x20(%ebp),%ecx -c01063e0: 8b 55 e8 mov -0x18(%ebp),%edx -c01063e3: 01 ca add %ecx,%edx -c01063e5: 39 d0 cmp %edx,%eax -c01063e7: 0f 8c b1 00 00 00 jl c010649e - if (delta) { /* need to fragment head to align? */ -c01063ed: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) -c01063f1: 74 38 je c010642b - aligned->units = cur->units - delta; -c01063f3: 8b 45 f0 mov -0x10(%ebp),%eax -c01063f6: 8b 00 mov (%eax),%eax -c01063f8: 2b 45 e8 sub -0x18(%ebp),%eax -c01063fb: 89 c2 mov %eax,%edx -c01063fd: 8b 45 ec mov -0x14(%ebp),%eax -c0106400: 89 10 mov %edx,(%eax) - aligned->next = cur->next; -c0106402: 8b 45 f0 mov -0x10(%ebp),%eax -c0106405: 8b 50 04 mov 0x4(%eax),%edx -c0106408: 8b 45 ec mov -0x14(%ebp),%eax -c010640b: 89 50 04 mov %edx,0x4(%eax) - cur->next = aligned; -c010640e: 8b 45 f0 mov -0x10(%ebp),%eax -c0106411: 8b 55 ec mov -0x14(%ebp),%edx -c0106414: 89 50 04 mov %edx,0x4(%eax) - cur->units = delta; -c0106417: 8b 45 f0 mov -0x10(%ebp),%eax -c010641a: 8b 55 e8 mov -0x18(%ebp),%edx -c010641d: 89 10 mov %edx,(%eax) - prev = cur; -c010641f: 8b 45 f0 mov -0x10(%ebp),%eax -c0106422: 89 45 f4 mov %eax,-0xc(%ebp) - cur = aligned; -c0106425: 8b 45 ec mov -0x14(%ebp),%eax -c0106428: 89 45 f0 mov %eax,-0x10(%ebp) - } - - if (cur->units == units) /* exact fit? */ -c010642b: 8b 45 f0 mov -0x10(%ebp),%eax -c010642e: 8b 00 mov (%eax),%eax -c0106430: 3b 45 e0 cmp -0x20(%ebp),%eax -c0106433: 75 0e jne c0106443 - prev->next = cur->next; /* unlink */ -c0106435: 8b 45 f0 mov -0x10(%ebp),%eax -c0106438: 8b 50 04 mov 0x4(%eax),%edx -c010643b: 8b 45 f4 mov -0xc(%ebp),%eax -c010643e: 89 50 04 mov %edx,0x4(%eax) -c0106441: eb 3c jmp c010647f - else { /* fragment */ - prev->next = cur + units; -c0106443: 8b 45 e0 mov -0x20(%ebp),%eax -c0106446: 8d 14 c5 00 00 00 00 lea 0x0(,%eax,8),%edx -c010644d: 8b 45 f0 mov -0x10(%ebp),%eax -c0106450: 01 c2 add %eax,%edx -c0106452: 8b 45 f4 mov -0xc(%ebp),%eax -c0106455: 89 50 04 mov %edx,0x4(%eax) - prev->next->units = cur->units - units; -c0106458: 8b 45 f4 mov -0xc(%ebp),%eax -c010645b: 8b 40 04 mov 0x4(%eax),%eax -c010645e: 8b 55 f0 mov -0x10(%ebp),%edx -c0106461: 8b 12 mov (%edx),%edx -c0106463: 2b 55 e0 sub -0x20(%ebp),%edx -c0106466: 89 10 mov %edx,(%eax) - prev->next->next = cur->next; -c0106468: 8b 45 f4 mov -0xc(%ebp),%eax -c010646b: 8b 40 04 mov 0x4(%eax),%eax -c010646e: 8b 55 f0 mov -0x10(%ebp),%edx -c0106471: 8b 52 04 mov 0x4(%edx),%edx -c0106474: 89 50 04 mov %edx,0x4(%eax) - cur->units = units; -c0106477: 8b 45 f0 mov -0x10(%ebp),%eax -c010647a: 8b 55 e0 mov -0x20(%ebp),%edx -c010647d: 89 10 mov %edx,(%eax) - } - - slobfree = prev; -c010647f: 8b 45 f4 mov -0xc(%ebp),%eax -c0106482: a3 40 6a 12 c0 mov %eax,0xc0126a40 - spin_unlock_irqrestore(&slob_lock, flags); -c0106487: 8b 45 e4 mov -0x1c(%ebp),%eax -c010648a: 83 ec 0c sub $0xc,%esp -c010648d: 50 push %eax -c010648e: e8 4a fd ff ff call c01061dd <__intr_restore> -c0106493: 83 c4 10 add $0x10,%esp - return cur; -c0106496: 8b 45 f0 mov -0x10(%ebp),%eax -c0106499: e9 80 00 00 00 jmp c010651e - } - if (cur == slobfree) { -c010649e: a1 40 6a 12 c0 mov 0xc0126a40,%eax -c01064a3: 39 45 f0 cmp %eax,-0x10(%ebp) -c01064a6: 75 62 jne c010650a - spin_unlock_irqrestore(&slob_lock, flags); -c01064a8: 8b 45 e4 mov -0x1c(%ebp),%eax -c01064ab: 83 ec 0c sub $0xc,%esp -c01064ae: 50 push %eax -c01064af: e8 29 fd ff ff call c01061dd <__intr_restore> -c01064b4: 83 c4 10 add $0x10,%esp - - if (size == PAGE_SIZE) /* trying to shrink arena? */ -c01064b7: 81 7d 08 00 10 00 00 cmpl $0x1000,0x8(%ebp) -c01064be: 75 07 jne c01064c7 - return 0; -c01064c0: b8 00 00 00 00 mov $0x0,%eax -c01064c5: eb 57 jmp c010651e - - cur = (slob_t *)__slob_get_free_page(gfp); -c01064c7: 83 ec 08 sub $0x8,%esp -c01064ca: 6a 00 push $0x0 -c01064cc: ff 75 0c pushl 0xc(%ebp) -c01064cf: e8 04 fe ff ff call c01062d8 <__slob_get_free_pages> -c01064d4: 83 c4 10 add $0x10,%esp -c01064d7: 89 45 f0 mov %eax,-0x10(%ebp) - if (!cur) -c01064da: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) -c01064de: 75 07 jne c01064e7 - return 0; -c01064e0: b8 00 00 00 00 mov $0x0,%eax -c01064e5: eb 37 jmp c010651e - - slob_free(cur, PAGE_SIZE); -c01064e7: 83 ec 08 sub $0x8,%esp -c01064ea: 68 00 10 00 00 push $0x1000 -c01064ef: ff 75 f0 pushl -0x10(%ebp) -c01064f2: e8 1c 02 00 00 call c0106713 -c01064f7: 83 c4 10 add $0x10,%esp - spin_lock_irqsave(&slob_lock, flags); -c01064fa: e8 b4 fc ff ff call c01061b3 <__intr_save> -c01064ff: 89 45 e4 mov %eax,-0x1c(%ebp) - cur = slobfree; -c0106502: a1 40 6a 12 c0 mov 0xc0126a40,%eax -c0106507: 89 45 f0 mov %eax,-0x10(%ebp) - int delta = 0, units = SLOB_UNITS(size); - unsigned long flags; - - spin_lock_irqsave(&slob_lock, flags); - prev = slobfree; - for (cur = prev->next; ; prev = cur, cur = cur->next) { -c010650a: 8b 45 f0 mov -0x10(%ebp),%eax -c010650d: 89 45 f4 mov %eax,-0xc(%ebp) -c0106510: 8b 45 f0 mov -0x10(%ebp),%eax -c0106513: 8b 40 04 mov 0x4(%eax),%eax -c0106516: 89 45 f0 mov %eax,-0x10(%ebp) - - slob_free(cur, PAGE_SIZE); - spin_lock_irqsave(&slob_lock, flags); - cur = slobfree; - } - } -c0106519: e9 8f fe ff ff jmp c01063ad -} -c010651e: c9 leave -c010651f: c3 ret - -c0106520 : - -static void *best_fit_alloc(size_t size, gfp_t gfp, int align) -{ -c0106520: 55 push %ebp -c0106521: 89 e5 mov %esp,%ebp -c0106523: 83 ec 28 sub $0x28,%esp - assert( (size + SLOB_UNIT) < PAGE_SIZE ); -c0106526: 8b 45 08 mov 0x8(%ebp),%eax -c0106529: 83 c0 08 add $0x8,%eax -c010652c: 3d ff 0f 00 00 cmp $0xfff,%eax -c0106531: 76 19 jbe c010654c -c0106533: 68 14 b7 10 c0 push $0xc010b714 -c0106538: 68 33 b7 10 c0 push $0xc010b733 -c010653d: 68 9c 00 00 00 push $0x9c -c0106542: 68 48 b7 10 c0 push $0xc010b748 -c0106547: e8 98 9e ff ff call c01003e4 <__panic> - // This best fit allocator does not consider situations where align != 0 - assert(align == 0); -c010654c: 83 7d 10 00 cmpl $0x0,0x10(%ebp) -c0106550: 74 19 je c010656b -c0106552: 68 5a b7 10 c0 push $0xc010b75a -c0106557: 68 33 b7 10 c0 push $0xc010b733 -c010655c: 68 9e 00 00 00 push $0x9e -c0106561: 68 48 b7 10 c0 push $0xc010b748 -c0106566: e8 79 9e ff ff call c01003e4 <__panic> - int units = SLOB_UNITS(size); -c010656b: 8b 45 08 mov 0x8(%ebp),%eax -c010656e: 83 c0 07 add $0x7,%eax -c0106571: c1 e8 03 shr $0x3,%eax -c0106574: 89 45 d8 mov %eax,-0x28(%ebp) - - unsigned long flags; - spin_lock_irqsave(&slob_lock, flags); -c0106577: e8 37 fc ff ff call c01061b3 <__intr_save> -c010657c: 89 45 f4 mov %eax,-0xc(%ebp) - - slob_t *prev = slobfree, *cur = slobfree->next; -c010657f: a1 40 6a 12 c0 mov 0xc0126a40,%eax -c0106584: 89 45 f0 mov %eax,-0x10(%ebp) -c0106587: a1 40 6a 12 c0 mov 0xc0126a40,%eax -c010658c: 8b 40 04 mov 0x4(%eax),%eax -c010658f: 89 45 ec mov %eax,-0x14(%ebp) - int find_available = 0; -c0106592: c7 45 e8 00 00 00 00 movl $0x0,-0x18(%ebp) - int best_frag_units = 100000; -c0106599: c7 45 e4 a0 86 01 00 movl $0x186a0,-0x1c(%ebp) - slob_t *best_slob = NULL; -c01065a0: c7 45 e0 00 00 00 00 movl $0x0,-0x20(%ebp) - slob_t *best_slob_prev = NULL; -c01065a7: c7 45 dc 00 00 00 00 movl $0x0,-0x24(%ebp) - - for (; ; prev = cur, cur = cur->next) { - if (cur->units >= units) { -c01065ae: 8b 45 ec mov -0x14(%ebp),%eax -c01065b1: 8b 00 mov (%eax),%eax -c01065b3: 3b 45 d8 cmp -0x28(%ebp),%eax -c01065b6: 7c 60 jl c0106618 - // Find available one. - if (cur->units == units) { -c01065b8: 8b 45 ec mov -0x14(%ebp),%eax -c01065bb: 8b 00 mov (%eax),%eax -c01065bd: 3b 45 d8 cmp -0x28(%ebp),%eax -c01065c0: 75 2b jne c01065ed - // If found a perfect one... - prev->next = cur->next; -c01065c2: 8b 45 ec mov -0x14(%ebp),%eax -c01065c5: 8b 50 04 mov 0x4(%eax),%edx -c01065c8: 8b 45 f0 mov -0x10(%ebp),%eax -c01065cb: 89 50 04 mov %edx,0x4(%eax) - slobfree = prev; -c01065ce: 8b 45 f0 mov -0x10(%ebp),%eax -c01065d1: a3 40 6a 12 c0 mov %eax,0xc0126a40 - spin_unlock_irqrestore(&slob_lock, flags); -c01065d6: 8b 45 f4 mov -0xc(%ebp),%eax -c01065d9: 83 ec 0c sub $0xc,%esp -c01065dc: 50 push %eax -c01065dd: e8 fb fb ff ff call c01061dd <__intr_restore> -c01065e2: 83 c4 10 add $0x10,%esp - // That's it! - return cur; -c01065e5: 8b 45 ec mov -0x14(%ebp),%eax -c01065e8: e9 08 01 00 00 jmp c01066f5 - } - else { - // This is not a prefect one. - if (cur->units - units < best_frag_units) { -c01065ed: 8b 45 ec mov -0x14(%ebp),%eax -c01065f0: 8b 00 mov (%eax),%eax -c01065f2: 2b 45 d8 sub -0x28(%ebp),%eax -c01065f5: 3b 45 e4 cmp -0x1c(%ebp),%eax -c01065f8: 7d 1e jge c0106618 - // This seems to be better than previous one. - best_frag_units = cur->units - units; -c01065fa: 8b 45 ec mov -0x14(%ebp),%eax -c01065fd: 8b 00 mov (%eax),%eax -c01065ff: 2b 45 d8 sub -0x28(%ebp),%eax -c0106602: 89 45 e4 mov %eax,-0x1c(%ebp) - best_slob = cur; -c0106605: 8b 45 ec mov -0x14(%ebp),%eax -c0106608: 89 45 e0 mov %eax,-0x20(%ebp) - best_slob_prev = prev; -c010660b: 8b 45 f0 mov -0x10(%ebp),%eax -c010660e: 89 45 dc mov %eax,-0x24(%ebp) - find_available = 1; -c0106611: c7 45 e8 01 00 00 00 movl $0x1,-0x18(%ebp) - } - - } - - // Get to the end of iteration. - if (cur == slobfree) { -c0106618: a1 40 6a 12 c0 mov 0xc0126a40,%eax -c010661d: 39 45 ec cmp %eax,-0x14(%ebp) -c0106620: 0f 85 bb 00 00 00 jne c01066e1 - if (find_available) { -c0106626: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) -c010662a: 74 53 je c010667f - // use the found best fit. - best_slob_prev->next = best_slob + units; -c010662c: 8b 45 d8 mov -0x28(%ebp),%eax -c010662f: 8d 14 c5 00 00 00 00 lea 0x0(,%eax,8),%edx -c0106636: 8b 45 e0 mov -0x20(%ebp),%eax -c0106639: 01 c2 add %eax,%edx -c010663b: 8b 45 dc mov -0x24(%ebp),%eax -c010663e: 89 50 04 mov %edx,0x4(%eax) - best_slob_prev->next->units = best_frag_units; -c0106641: 8b 45 dc mov -0x24(%ebp),%eax -c0106644: 8b 40 04 mov 0x4(%eax),%eax -c0106647: 8b 55 e4 mov -0x1c(%ebp),%edx -c010664a: 89 10 mov %edx,(%eax) - best_slob_prev->next->next = best_slob->next; -c010664c: 8b 45 dc mov -0x24(%ebp),%eax -c010664f: 8b 40 04 mov 0x4(%eax),%eax -c0106652: 8b 55 e0 mov -0x20(%ebp),%edx -c0106655: 8b 52 04 mov 0x4(%edx),%edx -c0106658: 89 50 04 mov %edx,0x4(%eax) - best_slob->units = units; -c010665b: 8b 45 e0 mov -0x20(%ebp),%eax -c010665e: 8b 55 d8 mov -0x28(%ebp),%edx -c0106661: 89 10 mov %edx,(%eax) - slobfree = best_slob_prev; -c0106663: 8b 45 dc mov -0x24(%ebp),%eax -c0106666: a3 40 6a 12 c0 mov %eax,0xc0126a40 - spin_unlock_irqrestore(&slob_lock, flags); -c010666b: 8b 45 f4 mov -0xc(%ebp),%eax -c010666e: 83 ec 0c sub $0xc,%esp -c0106671: 50 push %eax -c0106672: e8 66 fb ff ff call c01061dd <__intr_restore> -c0106677: 83 c4 10 add $0x10,%esp - // That's it! - return best_slob; -c010667a: 8b 45 e0 mov -0x20(%ebp),%eax -c010667d: eb 76 jmp c01066f5 - } - // Initially, there's no available arena. So get some. - spin_unlock_irqrestore(&slob_lock, flags); -c010667f: 8b 45 f4 mov -0xc(%ebp),%eax -c0106682: 83 ec 0c sub $0xc,%esp -c0106685: 50 push %eax -c0106686: e8 52 fb ff ff call c01061dd <__intr_restore> -c010668b: 83 c4 10 add $0x10,%esp - if (size == PAGE_SIZE) return 0; -c010668e: 81 7d 08 00 10 00 00 cmpl $0x1000,0x8(%ebp) -c0106695: 75 07 jne c010669e -c0106697: b8 00 00 00 00 mov $0x0,%eax -c010669c: eb 57 jmp c01066f5 - - cur = (slob_t *)__slob_get_free_page(gfp); -c010669e: 83 ec 08 sub $0x8,%esp -c01066a1: 6a 00 push $0x0 -c01066a3: ff 75 0c pushl 0xc(%ebp) -c01066a6: e8 2d fc ff ff call c01062d8 <__slob_get_free_pages> -c01066ab: 83 c4 10 add $0x10,%esp -c01066ae: 89 45 ec mov %eax,-0x14(%ebp) - if (!cur) return 0; -c01066b1: 83 7d ec 00 cmpl $0x0,-0x14(%ebp) -c01066b5: 75 07 jne c01066be -c01066b7: b8 00 00 00 00 mov $0x0,%eax -c01066bc: eb 37 jmp c01066f5 - - slob_free(cur, PAGE_SIZE); -c01066be: 83 ec 08 sub $0x8,%esp -c01066c1: 68 00 10 00 00 push $0x1000 -c01066c6: ff 75 ec pushl -0x14(%ebp) -c01066c9: e8 45 00 00 00 call c0106713 -c01066ce: 83 c4 10 add $0x10,%esp - spin_lock_irqsave(&slob_lock, flags); -c01066d1: e8 dd fa ff ff call c01061b3 <__intr_save> -c01066d6: 89 45 f4 mov %eax,-0xc(%ebp) - cur = slobfree; -c01066d9: a1 40 6a 12 c0 mov 0xc0126a40,%eax -c01066de: 89 45 ec mov %eax,-0x14(%ebp) - int find_available = 0; - int best_frag_units = 100000; - slob_t *best_slob = NULL; - slob_t *best_slob_prev = NULL; - - for (; ; prev = cur, cur = cur->next) { -c01066e1: 8b 45 ec mov -0x14(%ebp),%eax -c01066e4: 89 45 f0 mov %eax,-0x10(%ebp) -c01066e7: 8b 45 ec mov -0x14(%ebp),%eax -c01066ea: 8b 40 04 mov 0x4(%eax),%eax -c01066ed: 89 45 ec mov %eax,-0x14(%ebp) - - slob_free(cur, PAGE_SIZE); - spin_lock_irqsave(&slob_lock, flags); - cur = slobfree; - } - } -c01066f0: e9 b9 fe ff ff jmp c01065ae -} -c01066f5: c9 leave -c01066f6: c3 ret - -c01066f7 : - -static void *slob_alloc(size_t size, gfp_t gfp, int align) -{ -c01066f7: 55 push %ebp -c01066f8: 89 e5 mov %esp,%ebp -c01066fa: 83 ec 08 sub $0x8,%esp -#ifdef USE_BEST_FIT - return best_fit_alloc(size, gfp, align); -c01066fd: 83 ec 04 sub $0x4,%esp -c0106700: ff 75 10 pushl 0x10(%ebp) -c0106703: ff 75 0c pushl 0xc(%ebp) -c0106706: ff 75 08 pushl 0x8(%ebp) -c0106709: e8 12 fe ff ff call c0106520 -c010670e: 83 c4 10 add $0x10,%esp -#else - return first_fit_alloc(size, gfp, align); -#endif -} -c0106711: c9 leave -c0106712: c3 ret - -c0106713 : - -static void slob_free(void *block, int size) -{ -c0106713: 55 push %ebp -c0106714: 89 e5 mov %esp,%ebp -c0106716: 83 ec 18 sub $0x18,%esp - slob_t *cur, *b = (slob_t *)block; -c0106719: 8b 45 08 mov 0x8(%ebp),%eax -c010671c: 89 45 f0 mov %eax,-0x10(%ebp) - unsigned long flags; - - if (!block) -c010671f: 83 7d 08 00 cmpl $0x0,0x8(%ebp) -c0106723: 0f 84 05 01 00 00 je c010682e - return; - - if (size) -c0106729: 83 7d 0c 00 cmpl $0x0,0xc(%ebp) -c010672d: 74 10 je c010673f - b->units = SLOB_UNITS(size); -c010672f: 8b 45 0c mov 0xc(%ebp),%eax -c0106732: 83 c0 07 add $0x7,%eax -c0106735: c1 e8 03 shr $0x3,%eax -c0106738: 89 c2 mov %eax,%edx -c010673a: 8b 45 f0 mov -0x10(%ebp),%eax -c010673d: 89 10 mov %edx,(%eax) - - /* Find reinsertion point */ - spin_lock_irqsave(&slob_lock, flags); -c010673f: e8 6f fa ff ff call c01061b3 <__intr_save> -c0106744: 89 45 ec mov %eax,-0x14(%ebp) - for (cur = slobfree; !(b > cur && b < cur->next); cur = cur->next) -c0106747: a1 40 6a 12 c0 mov 0xc0126a40,%eax -c010674c: 89 45 f4 mov %eax,-0xc(%ebp) -c010674f: eb 27 jmp c0106778 - if (cur >= cur->next && (b > cur || b < cur->next)) -c0106751: 8b 45 f4 mov -0xc(%ebp),%eax -c0106754: 8b 40 04 mov 0x4(%eax),%eax -c0106757: 3b 45 f4 cmp -0xc(%ebp),%eax -c010675a: 77 13 ja c010676f -c010675c: 8b 45 f0 mov -0x10(%ebp),%eax -c010675f: 3b 45 f4 cmp -0xc(%ebp),%eax -c0106762: 77 27 ja c010678b -c0106764: 8b 45 f4 mov -0xc(%ebp),%eax -c0106767: 8b 40 04 mov 0x4(%eax),%eax -c010676a: 3b 45 f0 cmp -0x10(%ebp),%eax -c010676d: 77 1c ja c010678b - if (size) - b->units = SLOB_UNITS(size); - - /* Find reinsertion point */ - spin_lock_irqsave(&slob_lock, flags); - for (cur = slobfree; !(b > cur && b < cur->next); cur = cur->next) -c010676f: 8b 45 f4 mov -0xc(%ebp),%eax -c0106772: 8b 40 04 mov 0x4(%eax),%eax -c0106775: 89 45 f4 mov %eax,-0xc(%ebp) -c0106778: 8b 45 f0 mov -0x10(%ebp),%eax -c010677b: 3b 45 f4 cmp -0xc(%ebp),%eax -c010677e: 76 d1 jbe c0106751 -c0106780: 8b 45 f4 mov -0xc(%ebp),%eax -c0106783: 8b 40 04 mov 0x4(%eax),%eax -c0106786: 3b 45 f0 cmp -0x10(%ebp),%eax -c0106789: 76 c6 jbe c0106751 - if (cur >= cur->next && (b > cur || b < cur->next)) - break; - - if (b + b->units == cur->next) { -c010678b: 8b 45 f0 mov -0x10(%ebp),%eax -c010678e: 8b 00 mov (%eax),%eax -c0106790: 8d 14 c5 00 00 00 00 lea 0x0(,%eax,8),%edx -c0106797: 8b 45 f0 mov -0x10(%ebp),%eax -c010679a: 01 c2 add %eax,%edx -c010679c: 8b 45 f4 mov -0xc(%ebp),%eax -c010679f: 8b 40 04 mov 0x4(%eax),%eax -c01067a2: 39 c2 cmp %eax,%edx -c01067a4: 75 25 jne c01067cb - b->units += cur->next->units; -c01067a6: 8b 45 f0 mov -0x10(%ebp),%eax -c01067a9: 8b 10 mov (%eax),%edx -c01067ab: 8b 45 f4 mov -0xc(%ebp),%eax -c01067ae: 8b 40 04 mov 0x4(%eax),%eax -c01067b1: 8b 00 mov (%eax),%eax -c01067b3: 01 c2 add %eax,%edx -c01067b5: 8b 45 f0 mov -0x10(%ebp),%eax -c01067b8: 89 10 mov %edx,(%eax) - b->next = cur->next->next; -c01067ba: 8b 45 f4 mov -0xc(%ebp),%eax -c01067bd: 8b 40 04 mov 0x4(%eax),%eax -c01067c0: 8b 50 04 mov 0x4(%eax),%edx -c01067c3: 8b 45 f0 mov -0x10(%ebp),%eax -c01067c6: 89 50 04 mov %edx,0x4(%eax) -c01067c9: eb 0c jmp c01067d7 - } else - b->next = cur->next; -c01067cb: 8b 45 f4 mov -0xc(%ebp),%eax -c01067ce: 8b 50 04 mov 0x4(%eax),%edx -c01067d1: 8b 45 f0 mov -0x10(%ebp),%eax -c01067d4: 89 50 04 mov %edx,0x4(%eax) - - if (cur + cur->units == b) { -c01067d7: 8b 45 f4 mov -0xc(%ebp),%eax -c01067da: 8b 00 mov (%eax),%eax -c01067dc: 8d 14 c5 00 00 00 00 lea 0x0(,%eax,8),%edx -c01067e3: 8b 45 f4 mov -0xc(%ebp),%eax -c01067e6: 01 d0 add %edx,%eax -c01067e8: 3b 45 f0 cmp -0x10(%ebp),%eax -c01067eb: 75 1f jne c010680c - cur->units += b->units; -c01067ed: 8b 45 f4 mov -0xc(%ebp),%eax -c01067f0: 8b 10 mov (%eax),%edx -c01067f2: 8b 45 f0 mov -0x10(%ebp),%eax -c01067f5: 8b 00 mov (%eax),%eax -c01067f7: 01 c2 add %eax,%edx -c01067f9: 8b 45 f4 mov -0xc(%ebp),%eax -c01067fc: 89 10 mov %edx,(%eax) - cur->next = b->next; -c01067fe: 8b 45 f0 mov -0x10(%ebp),%eax -c0106801: 8b 50 04 mov 0x4(%eax),%edx -c0106804: 8b 45 f4 mov -0xc(%ebp),%eax -c0106807: 89 50 04 mov %edx,0x4(%eax) -c010680a: eb 09 jmp c0106815 - } else - cur->next = b; -c010680c: 8b 45 f4 mov -0xc(%ebp),%eax -c010680f: 8b 55 f0 mov -0x10(%ebp),%edx -c0106812: 89 50 04 mov %edx,0x4(%eax) - - slobfree = cur; -c0106815: 8b 45 f4 mov -0xc(%ebp),%eax -c0106818: a3 40 6a 12 c0 mov %eax,0xc0126a40 - - spin_unlock_irqrestore(&slob_lock, flags); -c010681d: 8b 45 ec mov -0x14(%ebp),%eax -c0106820: 83 ec 0c sub $0xc,%esp -c0106823: 50 push %eax -c0106824: e8 b4 f9 ff ff call c01061dd <__intr_restore> -c0106829: 83 c4 10 add $0x10,%esp -c010682c: eb 01 jmp c010682f -{ - slob_t *cur, *b = (slob_t *)block; - unsigned long flags; - - if (!block) - return; -c010682e: 90 nop - cur->next = b; - - slobfree = cur; - - spin_unlock_irqrestore(&slob_lock, flags); -} -c010682f: c9 leave -c0106830: c3 ret - -c0106831 : - - - -void -slob_init(void) { -c0106831: 55 push %ebp -c0106832: 89 e5 mov %esp,%ebp -c0106834: 83 ec 08 sub $0x8,%esp - cprintf("use SLOB allocator\n"); -c0106837: 83 ec 0c sub $0xc,%esp -c010683a: 68 65 b7 10 c0 push $0xc010b765 -c010683f: e8 3a 9a ff ff call c010027e -c0106844: 83 c4 10 add $0x10,%esp -} -c0106847: 90 nop -c0106848: c9 leave -c0106849: c3 ret - -c010684a : - -inline void -kmalloc_init(void) { -c010684a: 55 push %ebp -c010684b: 89 e5 mov %esp,%ebp -c010684d: 83 ec 08 sub $0x8,%esp - slob_init(); -c0106850: e8 dc ff ff ff call c0106831 - cprintf("kmalloc_init() succeeded!\n"); -c0106855: 83 ec 0c sub $0xc,%esp -c0106858: 68 79 b7 10 c0 push $0xc010b779 -c010685d: e8 1c 9a ff ff call c010027e -c0106862: 83 c4 10 add $0x10,%esp -} -c0106865: 90 nop -c0106866: c9 leave -c0106867: c3 ret - -c0106868 : - -size_t -slob_allocated(void) { -c0106868: 55 push %ebp -c0106869: 89 e5 mov %esp,%ebp - return 0; -c010686b: b8 00 00 00 00 mov $0x0,%eax -} -c0106870: 5d pop %ebp -c0106871: c3 ret - -c0106872 : - -size_t -kallocated(void) { -c0106872: 55 push %ebp -c0106873: 89 e5 mov %esp,%ebp - return slob_allocated(); -c0106875: e8 ee ff ff ff call c0106868 -} -c010687a: 5d pop %ebp -c010687b: c3 ret - -c010687c : - -static int find_order(int size) -{ -c010687c: 55 push %ebp -c010687d: 89 e5 mov %esp,%ebp -c010687f: 83 ec 10 sub $0x10,%esp - int order = 0; -c0106882: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp) - for ( ; size > 4096 ; size >>=1) -c0106889: eb 07 jmp c0106892 - order++; -c010688b: 83 45 fc 01 addl $0x1,-0x4(%ebp) -} - -static int find_order(int size) -{ - int order = 0; - for ( ; size > 4096 ; size >>=1) -c010688f: d1 7d 08 sarl 0x8(%ebp) -c0106892: 81 7d 08 00 10 00 00 cmpl $0x1000,0x8(%ebp) -c0106899: 7f f0 jg c010688b - order++; - return order; -c010689b: 8b 45 fc mov -0x4(%ebp),%eax -} -c010689e: c9 leave -c010689f: c3 ret - -c01068a0 <__kmalloc>: - -static void *__kmalloc(size_t size, gfp_t gfp) -{ -c01068a0: 55 push %ebp -c01068a1: 89 e5 mov %esp,%ebp -c01068a3: 83 ec 18 sub $0x18,%esp - slob_t *m; - bigblock_t *bb; - unsigned long flags; - - if (size < PAGE_SIZE - SLOB_UNIT) { -c01068a6: 81 7d 08 f7 0f 00 00 cmpl $0xff7,0x8(%ebp) -c01068ad: 77 35 ja c01068e4 <__kmalloc+0x44> - m = slob_alloc(size + SLOB_UNIT, gfp, 0); -c01068af: 8b 45 08 mov 0x8(%ebp),%eax -c01068b2: 83 c0 08 add $0x8,%eax -c01068b5: 83 ec 04 sub $0x4,%esp -c01068b8: 6a 00 push $0x0 -c01068ba: ff 75 0c pushl 0xc(%ebp) -c01068bd: 50 push %eax -c01068be: e8 34 fe ff ff call c01066f7 -c01068c3: 83 c4 10 add $0x10,%esp -c01068c6: 89 45 f4 mov %eax,-0xc(%ebp) - return m ? (void *)(m + 1) : 0; -c01068c9: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c01068cd: 74 0b je c01068da <__kmalloc+0x3a> -c01068cf: 8b 45 f4 mov -0xc(%ebp),%eax -c01068d2: 83 c0 08 add $0x8,%eax -c01068d5: e9 b3 00 00 00 jmp c010698d <__kmalloc+0xed> -c01068da: b8 00 00 00 00 mov $0x0,%eax -c01068df: e9 a9 00 00 00 jmp c010698d <__kmalloc+0xed> - } - - bb = slob_alloc(sizeof(bigblock_t), gfp, 0); -c01068e4: 83 ec 04 sub $0x4,%esp -c01068e7: 6a 00 push $0x0 -c01068e9: ff 75 0c pushl 0xc(%ebp) -c01068ec: 6a 0c push $0xc -c01068ee: e8 04 fe ff ff call c01066f7 -c01068f3: 83 c4 10 add $0x10,%esp -c01068f6: 89 45 f0 mov %eax,-0x10(%ebp) - if (!bb) -c01068f9: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) -c01068fd: 75 0a jne c0106909 <__kmalloc+0x69> - return 0; -c01068ff: b8 00 00 00 00 mov $0x0,%eax -c0106904: e9 84 00 00 00 jmp c010698d <__kmalloc+0xed> - - bb->order = find_order(size); -c0106909: 8b 45 08 mov 0x8(%ebp),%eax -c010690c: 83 ec 0c sub $0xc,%esp -c010690f: 50 push %eax -c0106910: e8 67 ff ff ff call c010687c -c0106915: 83 c4 10 add $0x10,%esp -c0106918: 89 c2 mov %eax,%edx -c010691a: 8b 45 f0 mov -0x10(%ebp),%eax -c010691d: 89 10 mov %edx,(%eax) - bb->pages = (void *)__slob_get_free_pages(gfp, bb->order); -c010691f: 8b 45 f0 mov -0x10(%ebp),%eax -c0106922: 8b 00 mov (%eax),%eax -c0106924: 83 ec 08 sub $0x8,%esp -c0106927: 50 push %eax -c0106928: ff 75 0c pushl 0xc(%ebp) -c010692b: e8 a8 f9 ff ff call c01062d8 <__slob_get_free_pages> -c0106930: 83 c4 10 add $0x10,%esp -c0106933: 89 c2 mov %eax,%edx -c0106935: 8b 45 f0 mov -0x10(%ebp),%eax -c0106938: 89 50 04 mov %edx,0x4(%eax) - - if (bb->pages) { -c010693b: 8b 45 f0 mov -0x10(%ebp),%eax -c010693e: 8b 40 04 mov 0x4(%eax),%eax -c0106941: 85 c0 test %eax,%eax -c0106943: 74 33 je c0106978 <__kmalloc+0xd8> - spin_lock_irqsave(&block_lock, flags); -c0106945: e8 69 f8 ff ff call c01061b3 <__intr_save> -c010694a: 89 45 ec mov %eax,-0x14(%ebp) - bb->next = bigblocks; -c010694d: 8b 15 dc 7a 12 c0 mov 0xc0127adc,%edx -c0106953: 8b 45 f0 mov -0x10(%ebp),%eax -c0106956: 89 50 08 mov %edx,0x8(%eax) - bigblocks = bb; -c0106959: 8b 45 f0 mov -0x10(%ebp),%eax -c010695c: a3 dc 7a 12 c0 mov %eax,0xc0127adc - spin_unlock_irqrestore(&block_lock, flags); -c0106961: 8b 45 ec mov -0x14(%ebp),%eax -c0106964: 83 ec 0c sub $0xc,%esp -c0106967: 50 push %eax -c0106968: e8 70 f8 ff ff call c01061dd <__intr_restore> -c010696d: 83 c4 10 add $0x10,%esp - return bb->pages; -c0106970: 8b 45 f0 mov -0x10(%ebp),%eax -c0106973: 8b 40 04 mov 0x4(%eax),%eax -c0106976: eb 15 jmp c010698d <__kmalloc+0xed> - } - - slob_free(bb, sizeof(bigblock_t)); -c0106978: 83 ec 08 sub $0x8,%esp -c010697b: 6a 0c push $0xc -c010697d: ff 75 f0 pushl -0x10(%ebp) -c0106980: e8 8e fd ff ff call c0106713 -c0106985: 83 c4 10 add $0x10,%esp - return 0; -c0106988: b8 00 00 00 00 mov $0x0,%eax -} -c010698d: c9 leave -c010698e: c3 ret - -c010698f : - -void * -kmalloc(size_t size) -{ -c010698f: 55 push %ebp -c0106990: 89 e5 mov %esp,%ebp -c0106992: 83 ec 08 sub $0x8,%esp - return __kmalloc(size, 0); -c0106995: 83 ec 08 sub $0x8,%esp -c0106998: 6a 00 push $0x0 -c010699a: ff 75 08 pushl 0x8(%ebp) -c010699d: e8 fe fe ff ff call c01068a0 <__kmalloc> -c01069a2: 83 c4 10 add $0x10,%esp -} -c01069a5: c9 leave -c01069a6: c3 ret - -c01069a7 : - - -void kfree(void *block) -{ -c01069a7: 55 push %ebp -c01069a8: 89 e5 mov %esp,%ebp -c01069aa: 83 ec 18 sub $0x18,%esp - bigblock_t *bb, **last = &bigblocks; -c01069ad: c7 45 f0 dc 7a 12 c0 movl $0xc0127adc,-0x10(%ebp) - unsigned long flags; - - if (!block) -c01069b4: 83 7d 08 00 cmpl $0x0,0x8(%ebp) -c01069b8: 0f 84 ac 00 00 00 je c0106a6a - return; - - if (!((unsigned long)block & (PAGE_SIZE-1))) { -c01069be: 8b 45 08 mov 0x8(%ebp),%eax -c01069c1: 25 ff 0f 00 00 and $0xfff,%eax -c01069c6: 85 c0 test %eax,%eax -c01069c8: 0f 85 85 00 00 00 jne c0106a53 - /* might be on the big block list */ - spin_lock_irqsave(&block_lock, flags); -c01069ce: e8 e0 f7 ff ff call c01061b3 <__intr_save> -c01069d3: 89 45 ec mov %eax,-0x14(%ebp) - for (bb = bigblocks; bb; last = &bb->next, bb = bb->next) { -c01069d6: a1 dc 7a 12 c0 mov 0xc0127adc,%eax -c01069db: 89 45 f4 mov %eax,-0xc(%ebp) -c01069de: eb 5e jmp c0106a3e - if (bb->pages == block) { -c01069e0: 8b 45 f4 mov -0xc(%ebp),%eax -c01069e3: 8b 40 04 mov 0x4(%eax),%eax -c01069e6: 3b 45 08 cmp 0x8(%ebp),%eax -c01069e9: 75 41 jne c0106a2c - *last = bb->next; -c01069eb: 8b 45 f4 mov -0xc(%ebp),%eax -c01069ee: 8b 50 08 mov 0x8(%eax),%edx -c01069f1: 8b 45 f0 mov -0x10(%ebp),%eax -c01069f4: 89 10 mov %edx,(%eax) - spin_unlock_irqrestore(&block_lock, flags); -c01069f6: 8b 45 ec mov -0x14(%ebp),%eax -c01069f9: 83 ec 0c sub $0xc,%esp -c01069fc: 50 push %eax -c01069fd: e8 db f7 ff ff call c01061dd <__intr_restore> -c0106a02: 83 c4 10 add $0x10,%esp - __slob_free_pages((unsigned long)block, bb->order); -c0106a05: 8b 45 f4 mov -0xc(%ebp),%eax -c0106a08: 8b 10 mov (%eax),%edx -c0106a0a: 8b 45 08 mov 0x8(%ebp),%eax -c0106a0d: 83 ec 08 sub $0x8,%esp -c0106a10: 52 push %edx -c0106a11: 50 push %eax -c0106a12: e8 01 f9 ff ff call c0106318 <__slob_free_pages> -c0106a17: 83 c4 10 add $0x10,%esp - slob_free(bb, sizeof(bigblock_t)); -c0106a1a: 83 ec 08 sub $0x8,%esp -c0106a1d: 6a 0c push $0xc -c0106a1f: ff 75 f4 pushl -0xc(%ebp) -c0106a22: e8 ec fc ff ff call c0106713 -c0106a27: 83 c4 10 add $0x10,%esp - return; -c0106a2a: eb 3f jmp c0106a6b - return; - - if (!((unsigned long)block & (PAGE_SIZE-1))) { - /* might be on the big block list */ - spin_lock_irqsave(&block_lock, flags); - for (bb = bigblocks; bb; last = &bb->next, bb = bb->next) { -c0106a2c: 8b 45 f4 mov -0xc(%ebp),%eax -c0106a2f: 83 c0 08 add $0x8,%eax -c0106a32: 89 45 f0 mov %eax,-0x10(%ebp) -c0106a35: 8b 45 f4 mov -0xc(%ebp),%eax -c0106a38: 8b 40 08 mov 0x8(%eax),%eax -c0106a3b: 89 45 f4 mov %eax,-0xc(%ebp) -c0106a3e: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c0106a42: 75 9c jne c01069e0 - __slob_free_pages((unsigned long)block, bb->order); - slob_free(bb, sizeof(bigblock_t)); - return; - } - } - spin_unlock_irqrestore(&block_lock, flags); -c0106a44: 8b 45 ec mov -0x14(%ebp),%eax -c0106a47: 83 ec 0c sub $0xc,%esp -c0106a4a: 50 push %eax -c0106a4b: e8 8d f7 ff ff call c01061dd <__intr_restore> -c0106a50: 83 c4 10 add $0x10,%esp - } - - slob_free((slob_t *)block - 1, 0); -c0106a53: 8b 45 08 mov 0x8(%ebp),%eax -c0106a56: 83 e8 08 sub $0x8,%eax -c0106a59: 83 ec 08 sub $0x8,%esp -c0106a5c: 6a 00 push $0x0 -c0106a5e: 50 push %eax -c0106a5f: e8 af fc ff ff call c0106713 -c0106a64: 83 c4 10 add $0x10,%esp - return; -c0106a67: 90 nop -c0106a68: eb 01 jmp c0106a6b -{ - bigblock_t *bb, **last = &bigblocks; - unsigned long flags; - - if (!block) - return; -c0106a6a: 90 nop - spin_unlock_irqrestore(&block_lock, flags); - } - - slob_free((slob_t *)block - 1, 0); - return; -} -c0106a6b: c9 leave -c0106a6c: c3 ret - -c0106a6d : - - -unsigned int ksize(const void *block) -{ -c0106a6d: 55 push %ebp -c0106a6e: 89 e5 mov %esp,%ebp -c0106a70: 83 ec 18 sub $0x18,%esp - bigblock_t *bb; - unsigned long flags; - - if (!block) -c0106a73: 83 7d 08 00 cmpl $0x0,0x8(%ebp) -c0106a77: 75 07 jne c0106a80 - return 0; -c0106a79: b8 00 00 00 00 mov $0x0,%eax -c0106a7e: eb 73 jmp c0106af3 - - if (!((unsigned long)block & (PAGE_SIZE-1))) { -c0106a80: 8b 45 08 mov 0x8(%ebp),%eax -c0106a83: 25 ff 0f 00 00 and $0xfff,%eax -c0106a88: 85 c0 test %eax,%eax -c0106a8a: 75 5c jne c0106ae8 - spin_lock_irqsave(&block_lock, flags); -c0106a8c: e8 22 f7 ff ff call c01061b3 <__intr_save> -c0106a91: 89 45 f0 mov %eax,-0x10(%ebp) - for (bb = bigblocks; bb; bb = bb->next) -c0106a94: a1 dc 7a 12 c0 mov 0xc0127adc,%eax -c0106a99: 89 45 f4 mov %eax,-0xc(%ebp) -c0106a9c: eb 35 jmp c0106ad3 - if (bb->pages == block) { -c0106a9e: 8b 45 f4 mov -0xc(%ebp),%eax -c0106aa1: 8b 40 04 mov 0x4(%eax),%eax -c0106aa4: 3b 45 08 cmp 0x8(%ebp),%eax -c0106aa7: 75 21 jne c0106aca - spin_unlock_irqrestore(&slob_lock, flags); -c0106aa9: 8b 45 f0 mov -0x10(%ebp),%eax -c0106aac: 83 ec 0c sub $0xc,%esp -c0106aaf: 50 push %eax -c0106ab0: e8 28 f7 ff ff call c01061dd <__intr_restore> -c0106ab5: 83 c4 10 add $0x10,%esp - return PAGE_SIZE << bb->order; -c0106ab8: 8b 45 f4 mov -0xc(%ebp),%eax -c0106abb: 8b 00 mov (%eax),%eax -c0106abd: ba 00 10 00 00 mov $0x1000,%edx -c0106ac2: 89 c1 mov %eax,%ecx -c0106ac4: d3 e2 shl %cl,%edx -c0106ac6: 89 d0 mov %edx,%eax -c0106ac8: eb 29 jmp c0106af3 - if (!block) - return 0; - - if (!((unsigned long)block & (PAGE_SIZE-1))) { - spin_lock_irqsave(&block_lock, flags); - for (bb = bigblocks; bb; bb = bb->next) -c0106aca: 8b 45 f4 mov -0xc(%ebp),%eax -c0106acd: 8b 40 08 mov 0x8(%eax),%eax -c0106ad0: 89 45 f4 mov %eax,-0xc(%ebp) -c0106ad3: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c0106ad7: 75 c5 jne c0106a9e - if (bb->pages == block) { - spin_unlock_irqrestore(&slob_lock, flags); - return PAGE_SIZE << bb->order; - } - spin_unlock_irqrestore(&block_lock, flags); -c0106ad9: 8b 45 f0 mov -0x10(%ebp),%eax -c0106adc: 83 ec 0c sub $0xc,%esp -c0106adf: 50 push %eax -c0106ae0: e8 f8 f6 ff ff call c01061dd <__intr_restore> -c0106ae5: 83 c4 10 add $0x10,%esp - } - - return ((slob_t *)block - 1)->units * SLOB_UNIT; -c0106ae8: 8b 45 08 mov 0x8(%ebp),%eax -c0106aeb: 83 e8 08 sub $0x8,%eax -c0106aee: 8b 00 mov (%eax),%eax -c0106af0: c1 e0 03 shl $0x3,%eax -} -c0106af3: c9 leave -c0106af4: c3 ret - -c0106af5 <_fifo_init_mm>: - * (2) _fifo_init_mm: init pra_list_head and let mm->sm_priv point to the addr of pra_list_head. - * Now, From the memory control struct mm_struct, we can access FIFO PRA - */ -static int -_fifo_init_mm(struct mm_struct *mm) -{ -c0106af5: 55 push %ebp -c0106af6: 89 e5 mov %esp,%ebp -c0106af8: 83 ec 10 sub $0x10,%esp -c0106afb: c7 45 fc 04 9c 12 c0 movl $0xc0129c04,-0x4(%ebp) - * list_init - initialize a new entry - * @elm: new entry to be initialized - * */ -static inline void -list_init(list_entry_t *elm) { - elm->prev = elm->next = elm; -c0106b02: 8b 45 fc mov -0x4(%ebp),%eax -c0106b05: 8b 55 fc mov -0x4(%ebp),%edx -c0106b08: 89 50 04 mov %edx,0x4(%eax) -c0106b0b: 8b 45 fc mov -0x4(%ebp),%eax -c0106b0e: 8b 50 04 mov 0x4(%eax),%edx -c0106b11: 8b 45 fc mov -0x4(%ebp),%eax -c0106b14: 89 10 mov %edx,(%eax) - list_init(&pra_list_head); - mm->sm_priv = &pra_list_head; -c0106b16: 8b 45 08 mov 0x8(%ebp),%eax -c0106b19: c7 40 14 04 9c 12 c0 movl $0xc0129c04,0x14(%eax) - //cprintf(" mm->sm_priv %x in fifo_init_mm\n",mm->sm_priv); - return 0; -c0106b20: b8 00 00 00 00 mov $0x0,%eax -} -c0106b25: c9 leave -c0106b26: c3 ret - -c0106b27 <_fifo_map_swappable>: -/* - * (3)_fifo_map_swappable: According FIFO PRA, we should link the most recent arrival page at the back of pra_list_head qeueue - */ -static int -_fifo_map_swappable(struct mm_struct *mm, uintptr_t addr, struct Page *page, int swap_in) -{ -c0106b27: 55 push %ebp -c0106b28: 89 e5 mov %esp,%ebp -c0106b2a: 83 ec 28 sub $0x28,%esp - list_entry_t *head=(list_entry_t*) mm->sm_priv; -c0106b2d: 8b 45 08 mov 0x8(%ebp),%eax -c0106b30: 8b 40 14 mov 0x14(%eax),%eax -c0106b33: 89 45 f4 mov %eax,-0xc(%ebp) - list_entry_t *entry=&(page->pra_page_link); -c0106b36: 8b 45 10 mov 0x10(%ebp),%eax -c0106b39: 83 c0 14 add $0x14,%eax -c0106b3c: 89 45 f0 mov %eax,-0x10(%ebp) - - assert(entry != NULL && head != NULL); -c0106b3f: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) -c0106b43: 74 06 je c0106b4b <_fifo_map_swappable+0x24> -c0106b45: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c0106b49: 75 16 jne c0106b61 <_fifo_map_swappable+0x3a> -c0106b4b: 68 94 b7 10 c0 push $0xc010b794 -c0106b50: 68 b2 b7 10 c0 push $0xc010b7b2 -c0106b55: 6a 32 push $0x32 -c0106b57: 68 c7 b7 10 c0 push $0xc010b7c7 -c0106b5c: e8 83 98 ff ff call c01003e4 <__panic> -c0106b61: 8b 45 f4 mov -0xc(%ebp),%eax -c0106b64: 89 45 ec mov %eax,-0x14(%ebp) -c0106b67: 8b 45 f0 mov -0x10(%ebp),%eax -c0106b6a: 89 45 e8 mov %eax,-0x18(%ebp) - * Insert the new element @elm *before* the element @listelm which - * is already in the list. - * */ -static inline void -list_add_before(list_entry_t *listelm, list_entry_t *elm) { - __list_add(elm, listelm->prev, listelm); -c0106b6d: 8b 45 ec mov -0x14(%ebp),%eax -c0106b70: 8b 00 mov (%eax),%eax -c0106b72: 8b 55 e8 mov -0x18(%ebp),%edx -c0106b75: 89 55 e4 mov %edx,-0x1c(%ebp) -c0106b78: 89 45 e0 mov %eax,-0x20(%ebp) -c0106b7b: 8b 45 ec mov -0x14(%ebp),%eax -c0106b7e: 89 45 dc mov %eax,-0x24(%ebp) - * This is only for internal list manipulation where we know - * the prev/next entries already! - * */ -static inline void -__list_add(list_entry_t *elm, list_entry_t *prev, list_entry_t *next) { - prev->next = next->prev = elm; -c0106b81: 8b 45 dc mov -0x24(%ebp),%eax -c0106b84: 8b 55 e4 mov -0x1c(%ebp),%edx -c0106b87: 89 10 mov %edx,(%eax) -c0106b89: 8b 45 dc mov -0x24(%ebp),%eax -c0106b8c: 8b 10 mov (%eax),%edx -c0106b8e: 8b 45 e0 mov -0x20(%ebp),%eax -c0106b91: 89 50 04 mov %edx,0x4(%eax) - elm->next = next; -c0106b94: 8b 45 e4 mov -0x1c(%ebp),%eax -c0106b97: 8b 55 dc mov -0x24(%ebp),%edx -c0106b9a: 89 50 04 mov %edx,0x4(%eax) - elm->prev = prev; -c0106b9d: 8b 45 e4 mov -0x1c(%ebp),%eax -c0106ba0: 8b 55 e0 mov -0x20(%ebp),%edx -c0106ba3: 89 10 mov %edx,(%eax) - //record the page access situlation - /*LAB3 EXERCISE 2: 2014011330*/ - //(1)link the most recent arrival page at the back of the pra_list_head qeueue. - list_add_before(head, entry); - return 0; -c0106ba5: b8 00 00 00 00 mov $0x0,%eax -} -c0106baa: c9 leave -c0106bab: c3 ret - -c0106bac <_fifo_swap_out_victim>: - * (4)_fifo_swap_out_victim: According FIFO PRA, we should unlink the earliest arrival page in front of pra_list_head qeueue, - * then set the addr of addr of this page to ptr_page. - */ -static int -_fifo_swap_out_victim(struct mm_struct *mm, struct Page ** ptr_page, int in_tick) -{ -c0106bac: 55 push %ebp -c0106bad: 89 e5 mov %esp,%ebp -c0106baf: 83 ec 28 sub $0x28,%esp - list_entry_t *head=(list_entry_t*) mm->sm_priv; -c0106bb2: 8b 45 08 mov 0x8(%ebp),%eax -c0106bb5: 8b 40 14 mov 0x14(%eax),%eax -c0106bb8: 89 45 f4 mov %eax,-0xc(%ebp) - assert(head != NULL); -c0106bbb: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c0106bbf: 75 16 jne c0106bd7 <_fifo_swap_out_victim+0x2b> -c0106bc1: 68 db b7 10 c0 push $0xc010b7db -c0106bc6: 68 b2 b7 10 c0 push $0xc010b7b2 -c0106bcb: 6a 41 push $0x41 -c0106bcd: 68 c7 b7 10 c0 push $0xc010b7c7 -c0106bd2: e8 0d 98 ff ff call c01003e4 <__panic> - assert(in_tick==0); -c0106bd7: 83 7d 10 00 cmpl $0x0,0x10(%ebp) -c0106bdb: 74 16 je c0106bf3 <_fifo_swap_out_victim+0x47> -c0106bdd: 68 e8 b7 10 c0 push $0xc010b7e8 -c0106be2: 68 b2 b7 10 c0 push $0xc010b7b2 -c0106be7: 6a 42 push $0x42 -c0106be9: 68 c7 b7 10 c0 push $0xc010b7c7 -c0106bee: e8 f1 97 ff ff call c01003e4 <__panic> - /* Select the victim */ - /*LAB3 EXERCISE 2: 2014011330*/ - //(1) unlink the earliest arrival page in front of pra_list_head qeueue - //(2) set the addr of addr of this page to ptr_page - list_entry_t *le = head->next; -c0106bf3: 8b 45 f4 mov -0xc(%ebp),%eax -c0106bf6: 8b 40 04 mov 0x4(%eax),%eax -c0106bf9: 89 45 f0 mov %eax,-0x10(%ebp) - struct Page* p = le2page(le, pra_page_link); -c0106bfc: 8b 45 f0 mov -0x10(%ebp),%eax -c0106bff: 83 e8 14 sub $0x14,%eax -c0106c02: 89 45 ec mov %eax,-0x14(%ebp) - *ptr_page = p; -c0106c05: 8b 45 0c mov 0xc(%ebp),%eax -c0106c08: 8b 55 ec mov -0x14(%ebp),%edx -c0106c0b: 89 10 mov %edx,(%eax) -c0106c0d: 8b 45 f0 mov -0x10(%ebp),%eax -c0106c10: 89 45 e8 mov %eax,-0x18(%ebp) - * Note: list_empty() on @listelm does not return true after this, the entry is - * in an undefined state. - * */ -static inline void -list_del(list_entry_t *listelm) { - __list_del(listelm->prev, listelm->next); -c0106c13: 8b 45 e8 mov -0x18(%ebp),%eax -c0106c16: 8b 40 04 mov 0x4(%eax),%eax -c0106c19: 8b 55 e8 mov -0x18(%ebp),%edx -c0106c1c: 8b 12 mov (%edx),%edx -c0106c1e: 89 55 e4 mov %edx,-0x1c(%ebp) -c0106c21: 89 45 e0 mov %eax,-0x20(%ebp) - * This is only for internal list manipulation where we know - * the prev/next entries already! - * */ -static inline void -__list_del(list_entry_t *prev, list_entry_t *next) { - prev->next = next; -c0106c24: 8b 45 e4 mov -0x1c(%ebp),%eax -c0106c27: 8b 55 e0 mov -0x20(%ebp),%edx -c0106c2a: 89 50 04 mov %edx,0x4(%eax) - next->prev = prev; -c0106c2d: 8b 45 e0 mov -0x20(%ebp),%eax -c0106c30: 8b 55 e4 mov -0x1c(%ebp),%edx -c0106c33: 89 10 mov %edx,(%eax) - list_del(le); - return 0; -c0106c35: b8 00 00 00 00 mov $0x0,%eax -} -c0106c3a: c9 leave -c0106c3b: c3 ret - -c0106c3c <_fifo_check_swap>: - -static int -_fifo_check_swap(void) { -c0106c3c: 55 push %ebp -c0106c3d: 89 e5 mov %esp,%ebp -c0106c3f: 83 ec 08 sub $0x8,%esp - cprintf("write Virt Page c in fifo_check_swap\n"); -c0106c42: 83 ec 0c sub $0xc,%esp -c0106c45: 68 f4 b7 10 c0 push $0xc010b7f4 -c0106c4a: e8 2f 96 ff ff call c010027e -c0106c4f: 83 c4 10 add $0x10,%esp - *(unsigned char *)0x3000 = 0x0c; -c0106c52: b8 00 30 00 00 mov $0x3000,%eax -c0106c57: c6 00 0c movb $0xc,(%eax) - assert(pgfault_num==4); -c0106c5a: a1 cc 7a 12 c0 mov 0xc0127acc,%eax -c0106c5f: 83 f8 04 cmp $0x4,%eax -c0106c62: 74 16 je c0106c7a <_fifo_check_swap+0x3e> -c0106c64: 68 1a b8 10 c0 push $0xc010b81a -c0106c69: 68 b2 b7 10 c0 push $0xc010b7b2 -c0106c6e: 6a 52 push $0x52 -c0106c70: 68 c7 b7 10 c0 push $0xc010b7c7 -c0106c75: e8 6a 97 ff ff call c01003e4 <__panic> - cprintf("write Virt Page a in fifo_check_swap\n"); -c0106c7a: 83 ec 0c sub $0xc,%esp -c0106c7d: 68 2c b8 10 c0 push $0xc010b82c -c0106c82: e8 f7 95 ff ff call c010027e -c0106c87: 83 c4 10 add $0x10,%esp - *(unsigned char *)0x1000 = 0x0a; -c0106c8a: b8 00 10 00 00 mov $0x1000,%eax -c0106c8f: c6 00 0a movb $0xa,(%eax) - assert(pgfault_num==4); -c0106c92: a1 cc 7a 12 c0 mov 0xc0127acc,%eax -c0106c97: 83 f8 04 cmp $0x4,%eax -c0106c9a: 74 16 je c0106cb2 <_fifo_check_swap+0x76> -c0106c9c: 68 1a b8 10 c0 push $0xc010b81a -c0106ca1: 68 b2 b7 10 c0 push $0xc010b7b2 -c0106ca6: 6a 55 push $0x55 -c0106ca8: 68 c7 b7 10 c0 push $0xc010b7c7 -c0106cad: e8 32 97 ff ff call c01003e4 <__panic> - cprintf("write Virt Page d in fifo_check_swap\n"); -c0106cb2: 83 ec 0c sub $0xc,%esp -c0106cb5: 68 54 b8 10 c0 push $0xc010b854 -c0106cba: e8 bf 95 ff ff call c010027e -c0106cbf: 83 c4 10 add $0x10,%esp - *(unsigned char *)0x4000 = 0x0d; -c0106cc2: b8 00 40 00 00 mov $0x4000,%eax -c0106cc7: c6 00 0d movb $0xd,(%eax) - assert(pgfault_num==4); -c0106cca: a1 cc 7a 12 c0 mov 0xc0127acc,%eax -c0106ccf: 83 f8 04 cmp $0x4,%eax -c0106cd2: 74 16 je c0106cea <_fifo_check_swap+0xae> -c0106cd4: 68 1a b8 10 c0 push $0xc010b81a -c0106cd9: 68 b2 b7 10 c0 push $0xc010b7b2 -c0106cde: 6a 58 push $0x58 -c0106ce0: 68 c7 b7 10 c0 push $0xc010b7c7 -c0106ce5: e8 fa 96 ff ff call c01003e4 <__panic> - cprintf("write Virt Page b in fifo_check_swap\n"); -c0106cea: 83 ec 0c sub $0xc,%esp -c0106ced: 68 7c b8 10 c0 push $0xc010b87c -c0106cf2: e8 87 95 ff ff call c010027e -c0106cf7: 83 c4 10 add $0x10,%esp - *(unsigned char *)0x2000 = 0x0b; -c0106cfa: b8 00 20 00 00 mov $0x2000,%eax -c0106cff: c6 00 0b movb $0xb,(%eax) - assert(pgfault_num==4); -c0106d02: a1 cc 7a 12 c0 mov 0xc0127acc,%eax -c0106d07: 83 f8 04 cmp $0x4,%eax -c0106d0a: 74 16 je c0106d22 <_fifo_check_swap+0xe6> -c0106d0c: 68 1a b8 10 c0 push $0xc010b81a -c0106d11: 68 b2 b7 10 c0 push $0xc010b7b2 -c0106d16: 6a 5b push $0x5b -c0106d18: 68 c7 b7 10 c0 push $0xc010b7c7 -c0106d1d: e8 c2 96 ff ff call c01003e4 <__panic> - cprintf("write Virt Page e in fifo_check_swap\n"); -c0106d22: 83 ec 0c sub $0xc,%esp -c0106d25: 68 a4 b8 10 c0 push $0xc010b8a4 -c0106d2a: e8 4f 95 ff ff call c010027e -c0106d2f: 83 c4 10 add $0x10,%esp - *(unsigned char *)0x5000 = 0x0e; -c0106d32: b8 00 50 00 00 mov $0x5000,%eax -c0106d37: c6 00 0e movb $0xe,(%eax) - assert(pgfault_num==5); -c0106d3a: a1 cc 7a 12 c0 mov 0xc0127acc,%eax -c0106d3f: 83 f8 05 cmp $0x5,%eax -c0106d42: 74 16 je c0106d5a <_fifo_check_swap+0x11e> -c0106d44: 68 ca b8 10 c0 push $0xc010b8ca -c0106d49: 68 b2 b7 10 c0 push $0xc010b7b2 -c0106d4e: 6a 5e push $0x5e -c0106d50: 68 c7 b7 10 c0 push $0xc010b7c7 -c0106d55: e8 8a 96 ff ff call c01003e4 <__panic> - cprintf("write Virt Page b in fifo_check_swap\n"); -c0106d5a: 83 ec 0c sub $0xc,%esp -c0106d5d: 68 7c b8 10 c0 push $0xc010b87c -c0106d62: e8 17 95 ff ff call c010027e -c0106d67: 83 c4 10 add $0x10,%esp - *(unsigned char *)0x2000 = 0x0b; -c0106d6a: b8 00 20 00 00 mov $0x2000,%eax -c0106d6f: c6 00 0b movb $0xb,(%eax) - assert(pgfault_num==5); -c0106d72: a1 cc 7a 12 c0 mov 0xc0127acc,%eax -c0106d77: 83 f8 05 cmp $0x5,%eax -c0106d7a: 74 16 je c0106d92 <_fifo_check_swap+0x156> -c0106d7c: 68 ca b8 10 c0 push $0xc010b8ca -c0106d81: 68 b2 b7 10 c0 push $0xc010b7b2 -c0106d86: 6a 61 push $0x61 -c0106d88: 68 c7 b7 10 c0 push $0xc010b7c7 -c0106d8d: e8 52 96 ff ff call c01003e4 <__panic> - cprintf("write Virt Page a in fifo_check_swap\n"); -c0106d92: 83 ec 0c sub $0xc,%esp -c0106d95: 68 2c b8 10 c0 push $0xc010b82c -c0106d9a: e8 df 94 ff ff call c010027e -c0106d9f: 83 c4 10 add $0x10,%esp - *(unsigned char *)0x1000 = 0x0a; -c0106da2: b8 00 10 00 00 mov $0x1000,%eax -c0106da7: c6 00 0a movb $0xa,(%eax) - assert(pgfault_num==6); -c0106daa: a1 cc 7a 12 c0 mov 0xc0127acc,%eax -c0106daf: 83 f8 06 cmp $0x6,%eax -c0106db2: 74 16 je c0106dca <_fifo_check_swap+0x18e> -c0106db4: 68 d9 b8 10 c0 push $0xc010b8d9 -c0106db9: 68 b2 b7 10 c0 push $0xc010b7b2 -c0106dbe: 6a 64 push $0x64 -c0106dc0: 68 c7 b7 10 c0 push $0xc010b7c7 -c0106dc5: e8 1a 96 ff ff call c01003e4 <__panic> - cprintf("write Virt Page b in fifo_check_swap\n"); -c0106dca: 83 ec 0c sub $0xc,%esp -c0106dcd: 68 7c b8 10 c0 push $0xc010b87c -c0106dd2: e8 a7 94 ff ff call c010027e -c0106dd7: 83 c4 10 add $0x10,%esp - *(unsigned char *)0x2000 = 0x0b; -c0106dda: b8 00 20 00 00 mov $0x2000,%eax -c0106ddf: c6 00 0b movb $0xb,(%eax) - assert(pgfault_num==7); -c0106de2: a1 cc 7a 12 c0 mov 0xc0127acc,%eax -c0106de7: 83 f8 07 cmp $0x7,%eax -c0106dea: 74 16 je c0106e02 <_fifo_check_swap+0x1c6> -c0106dec: 68 e8 b8 10 c0 push $0xc010b8e8 -c0106df1: 68 b2 b7 10 c0 push $0xc010b7b2 -c0106df6: 6a 67 push $0x67 -c0106df8: 68 c7 b7 10 c0 push $0xc010b7c7 -c0106dfd: e8 e2 95 ff ff call c01003e4 <__panic> - cprintf("write Virt Page c in fifo_check_swap\n"); -c0106e02: 83 ec 0c sub $0xc,%esp -c0106e05: 68 f4 b7 10 c0 push $0xc010b7f4 -c0106e0a: e8 6f 94 ff ff call c010027e -c0106e0f: 83 c4 10 add $0x10,%esp - *(unsigned char *)0x3000 = 0x0c; -c0106e12: b8 00 30 00 00 mov $0x3000,%eax -c0106e17: c6 00 0c movb $0xc,(%eax) - assert(pgfault_num==8); -c0106e1a: a1 cc 7a 12 c0 mov 0xc0127acc,%eax -c0106e1f: 83 f8 08 cmp $0x8,%eax -c0106e22: 74 16 je c0106e3a <_fifo_check_swap+0x1fe> -c0106e24: 68 f7 b8 10 c0 push $0xc010b8f7 -c0106e29: 68 b2 b7 10 c0 push $0xc010b7b2 -c0106e2e: 6a 6a push $0x6a -c0106e30: 68 c7 b7 10 c0 push $0xc010b7c7 -c0106e35: e8 aa 95 ff ff call c01003e4 <__panic> - cprintf("write Virt Page d in fifo_check_swap\n"); -c0106e3a: 83 ec 0c sub $0xc,%esp -c0106e3d: 68 54 b8 10 c0 push $0xc010b854 -c0106e42: e8 37 94 ff ff call c010027e -c0106e47: 83 c4 10 add $0x10,%esp - *(unsigned char *)0x4000 = 0x0d; -c0106e4a: b8 00 40 00 00 mov $0x4000,%eax -c0106e4f: c6 00 0d movb $0xd,(%eax) - assert(pgfault_num==9); -c0106e52: a1 cc 7a 12 c0 mov 0xc0127acc,%eax -c0106e57: 83 f8 09 cmp $0x9,%eax -c0106e5a: 74 16 je c0106e72 <_fifo_check_swap+0x236> -c0106e5c: 68 06 b9 10 c0 push $0xc010b906 -c0106e61: 68 b2 b7 10 c0 push $0xc010b7b2 -c0106e66: 6a 6d push $0x6d -c0106e68: 68 c7 b7 10 c0 push $0xc010b7c7 -c0106e6d: e8 72 95 ff ff call c01003e4 <__panic> - cprintf("write Virt Page e in fifo_check_swap\n"); -c0106e72: 83 ec 0c sub $0xc,%esp -c0106e75: 68 a4 b8 10 c0 push $0xc010b8a4 -c0106e7a: e8 ff 93 ff ff call c010027e -c0106e7f: 83 c4 10 add $0x10,%esp - *(unsigned char *)0x5000 = 0x0e; -c0106e82: b8 00 50 00 00 mov $0x5000,%eax -c0106e87: c6 00 0e movb $0xe,(%eax) - assert(pgfault_num==10); -c0106e8a: a1 cc 7a 12 c0 mov 0xc0127acc,%eax -c0106e8f: 83 f8 0a cmp $0xa,%eax -c0106e92: 74 16 je c0106eaa <_fifo_check_swap+0x26e> -c0106e94: 68 15 b9 10 c0 push $0xc010b915 -c0106e99: 68 b2 b7 10 c0 push $0xc010b7b2 -c0106e9e: 6a 70 push $0x70 -c0106ea0: 68 c7 b7 10 c0 push $0xc010b7c7 -c0106ea5: e8 3a 95 ff ff call c01003e4 <__panic> - cprintf("write Virt Page a in fifo_check_swap\n"); -c0106eaa: 83 ec 0c sub $0xc,%esp -c0106ead: 68 2c b8 10 c0 push $0xc010b82c -c0106eb2: e8 c7 93 ff ff call c010027e -c0106eb7: 83 c4 10 add $0x10,%esp - assert(*(unsigned char *)0x1000 == 0x0a); -c0106eba: b8 00 10 00 00 mov $0x1000,%eax -c0106ebf: 0f b6 00 movzbl (%eax),%eax -c0106ec2: 3c 0a cmp $0xa,%al -c0106ec4: 74 16 je c0106edc <_fifo_check_swap+0x2a0> -c0106ec6: 68 28 b9 10 c0 push $0xc010b928 -c0106ecb: 68 b2 b7 10 c0 push $0xc010b7b2 -c0106ed0: 6a 72 push $0x72 -c0106ed2: 68 c7 b7 10 c0 push $0xc010b7c7 -c0106ed7: e8 08 95 ff ff call c01003e4 <__panic> - *(unsigned char *)0x1000 = 0x0a; -c0106edc: b8 00 10 00 00 mov $0x1000,%eax -c0106ee1: c6 00 0a movb $0xa,(%eax) - assert(pgfault_num==11); -c0106ee4: a1 cc 7a 12 c0 mov 0xc0127acc,%eax -c0106ee9: 83 f8 0b cmp $0xb,%eax -c0106eec: 74 16 je c0106f04 <_fifo_check_swap+0x2c8> -c0106eee: 68 49 b9 10 c0 push $0xc010b949 -c0106ef3: 68 b2 b7 10 c0 push $0xc010b7b2 -c0106ef8: 6a 74 push $0x74 -c0106efa: 68 c7 b7 10 c0 push $0xc010b7c7 -c0106eff: e8 e0 94 ff ff call c01003e4 <__panic> - return 0; -c0106f04: b8 00 00 00 00 mov $0x0,%eax -} -c0106f09: c9 leave -c0106f0a: c3 ret - -c0106f0b <_fifo_init>: - - -static int -_fifo_init(void) -{ -c0106f0b: 55 push %ebp -c0106f0c: 89 e5 mov %esp,%ebp - return 0; -c0106f0e: b8 00 00 00 00 mov $0x0,%eax -} -c0106f13: 5d pop %ebp -c0106f14: c3 ret - -c0106f15 <_fifo_set_unswappable>: - -static int -_fifo_set_unswappable(struct mm_struct *mm, uintptr_t addr) -{ -c0106f15: 55 push %ebp -c0106f16: 89 e5 mov %esp,%ebp - return 0; -c0106f18: b8 00 00 00 00 mov $0x0,%eax -} -c0106f1d: 5d pop %ebp -c0106f1e: c3 ret - -c0106f1f <_fifo_tick_event>: - -static int -_fifo_tick_event(struct mm_struct *mm) -{ return 0; } -c0106f1f: 55 push %ebp -c0106f20: 89 e5 mov %esp,%ebp -c0106f22: b8 00 00 00 00 mov $0x0,%eax -c0106f27: 5d pop %ebp -c0106f28: c3 ret - -c0106f29 : - -extern struct Page *pages; -extern size_t npage; - -static inline ppn_t -page2ppn(struct Page *page) { -c0106f29: 55 push %ebp -c0106f2a: 89 e5 mov %esp,%ebp - return page - pages; -c0106f2c: 8b 45 08 mov 0x8(%ebp),%eax -c0106f2f: 8b 15 20 9b 12 c0 mov 0xc0129b20,%edx -c0106f35: 29 d0 sub %edx,%eax -c0106f37: c1 f8 05 sar $0x5,%eax -} -c0106f3a: 5d pop %ebp -c0106f3b: c3 ret - -c0106f3c : - -static inline uintptr_t -page2pa(struct Page *page) { -c0106f3c: 55 push %ebp -c0106f3d: 89 e5 mov %esp,%ebp - return page2ppn(page) << PGSHIFT; -c0106f3f: ff 75 08 pushl 0x8(%ebp) -c0106f42: e8 e2 ff ff ff call c0106f29 -c0106f47: 83 c4 04 add $0x4,%esp -c0106f4a: c1 e0 0c shl $0xc,%eax -} -c0106f4d: c9 leave -c0106f4e: c3 ret - -c0106f4f : -pde2page(pde_t pde) { - return pa2page(PDE_ADDR(pde)); -} - -static inline int -page_ref(struct Page *page) { -c0106f4f: 55 push %ebp -c0106f50: 89 e5 mov %esp,%ebp - return page->ref; -c0106f52: 8b 45 08 mov 0x8(%ebp),%eax -c0106f55: 8b 00 mov (%eax),%eax -} -c0106f57: 5d pop %ebp -c0106f58: c3 ret - -c0106f59 : - -static inline void -set_page_ref(struct Page *page, int val) { -c0106f59: 55 push %ebp -c0106f5a: 89 e5 mov %esp,%ebp - page->ref = val; -c0106f5c: 8b 45 08 mov 0x8(%ebp),%eax -c0106f5f: 8b 55 0c mov 0xc(%ebp),%edx -c0106f62: 89 10 mov %edx,(%eax) -} -c0106f64: 90 nop -c0106f65: 5d pop %ebp -c0106f66: c3 ret - -c0106f67 : - -#define free_list (free_area.free_list) -#define nr_free (free_area.nr_free) - -static void -default_init(void) { -c0106f67: 55 push %ebp -c0106f68: 89 e5 mov %esp,%ebp -c0106f6a: 83 ec 10 sub $0x10,%esp -c0106f6d: c7 45 fc 0c 9c 12 c0 movl $0xc0129c0c,-0x4(%ebp) - * list_init - initialize a new entry - * @elm: new entry to be initialized - * */ -static inline void -list_init(list_entry_t *elm) { - elm->prev = elm->next = elm; -c0106f74: 8b 45 fc mov -0x4(%ebp),%eax -c0106f77: 8b 55 fc mov -0x4(%ebp),%edx -c0106f7a: 89 50 04 mov %edx,0x4(%eax) -c0106f7d: 8b 45 fc mov -0x4(%ebp),%eax -c0106f80: 8b 50 04 mov 0x4(%eax),%edx -c0106f83: 8b 45 fc mov -0x4(%ebp),%eax -c0106f86: 89 10 mov %edx,(%eax) - list_init(&free_list); - nr_free = 0; -c0106f88: c7 05 14 9c 12 c0 00 movl $0x0,0xc0129c14 -c0106f8f: 00 00 00 -} -c0106f92: 90 nop -c0106f93: c9 leave -c0106f94: c3 ret - -c0106f95 : - -static void -default_init_memmap(struct Page *base, size_t n) { -c0106f95: 55 push %ebp -c0106f96: 89 e5 mov %esp,%ebp -c0106f98: 83 ec 38 sub $0x38,%esp - assert(n > 0); -c0106f9b: 83 7d 0c 00 cmpl $0x0,0xc(%ebp) -c0106f9f: 75 16 jne c0106fb7 -c0106fa1: 68 6c b9 10 c0 push $0xc010b96c -c0106fa6: 68 72 b9 10 c0 push $0xc010b972 -c0106fab: 6a 46 push $0x46 -c0106fad: 68 87 b9 10 c0 push $0xc010b987 -c0106fb2: e8 2d 94 ff ff call c01003e4 <__panic> - struct Page *p = base; -c0106fb7: 8b 45 08 mov 0x8(%ebp),%eax -c0106fba: 89 45 f4 mov %eax,-0xc(%ebp) - for (; p != base + n; p ++) { -c0106fbd: eb 6c jmp c010702b - // Before: the page must have been set reserved in page_init. - assert(PageReserved(p)); -c0106fbf: 8b 45 f4 mov -0xc(%ebp),%eax -c0106fc2: 83 c0 04 add $0x4,%eax -c0106fc5: c7 45 e8 00 00 00 00 movl $0x0,-0x18(%ebp) -c0106fcc: 89 45 e4 mov %eax,-0x1c(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); -c0106fcf: 8b 45 e4 mov -0x1c(%ebp),%eax -c0106fd2: 8b 55 e8 mov -0x18(%ebp),%edx -c0106fd5: 0f a3 10 bt %edx,(%eax) -c0106fd8: 19 c0 sbb %eax,%eax -c0106fda: 89 45 e0 mov %eax,-0x20(%ebp) - return oldbit != 0; -c0106fdd: 83 7d e0 00 cmpl $0x0,-0x20(%ebp) -c0106fe1: 0f 95 c0 setne %al -c0106fe4: 0f b6 c0 movzbl %al,%eax -c0106fe7: 85 c0 test %eax,%eax -c0106fe9: 75 16 jne c0107001 -c0106feb: 68 9d b9 10 c0 push $0xc010b99d -c0106ff0: 68 72 b9 10 c0 push $0xc010b972 -c0106ff5: 6a 4a push $0x4a -c0106ff7: 68 87 b9 10 c0 push $0xc010b987 -c0106ffc: e8 e3 93 ff ff call c01003e4 <__panic> - // Initialize flags, property and ref - p->flags = p->property = 0; -c0107001: 8b 45 f4 mov -0xc(%ebp),%eax -c0107004: c7 40 08 00 00 00 00 movl $0x0,0x8(%eax) -c010700b: 8b 45 f4 mov -0xc(%ebp),%eax -c010700e: 8b 50 08 mov 0x8(%eax),%edx -c0107011: 8b 45 f4 mov -0xc(%ebp),%eax -c0107014: 89 50 04 mov %edx,0x4(%eax) - set_page_ref(p, 0); -c0107017: 83 ec 08 sub $0x8,%esp -c010701a: 6a 00 push $0x0 -c010701c: ff 75 f4 pushl -0xc(%ebp) -c010701f: e8 35 ff ff ff call c0106f59 -c0107024: 83 c4 10 add $0x10,%esp - -static void -default_init_memmap(struct Page *base, size_t n) { - assert(n > 0); - struct Page *p = base; - for (; p != base + n; p ++) { -c0107027: 83 45 f4 20 addl $0x20,-0xc(%ebp) -c010702b: 8b 45 0c mov 0xc(%ebp),%eax -c010702e: c1 e0 05 shl $0x5,%eax -c0107031: 89 c2 mov %eax,%edx -c0107033: 8b 45 08 mov 0x8(%ebp),%eax -c0107036: 01 d0 add %edx,%eax -c0107038: 3b 45 f4 cmp -0xc(%ebp),%eax -c010703b: 75 82 jne c0106fbf - // Initialize flags, property and ref - p->flags = p->property = 0; - set_page_ref(p, 0); - } - // The base page is the start of continuous free pages. - base->property = n; -c010703d: 8b 45 08 mov 0x8(%ebp),%eax -c0107040: 8b 55 0c mov 0xc(%ebp),%edx -c0107043: 89 50 08 mov %edx,0x8(%eax) - SetPageProperty(base); -c0107046: 8b 45 08 mov 0x8(%ebp),%eax -c0107049: 83 c0 04 add $0x4,%eax -c010704c: c7 45 ec 01 00 00 00 movl $0x1,-0x14(%ebp) -c0107053: 89 45 cc mov %eax,-0x34(%ebp) - * Note that @nr may be almost arbitrarily large; this function is not - * restricted to acting on a single-word quantity. - * */ -static inline void -set_bit(int nr, volatile void *addr) { - asm volatile ("btsl %1, %0" :"=m" (*(volatile long *)addr) : "Ir" (nr)); -c0107056: 8b 45 cc mov -0x34(%ebp),%eax -c0107059: 8b 55 ec mov -0x14(%ebp),%edx -c010705c: 0f ab 10 bts %edx,(%eax) - nr_free += n; -c010705f: 8b 15 14 9c 12 c0 mov 0xc0129c14,%edx -c0107065: 8b 45 0c mov 0xc(%ebp),%eax -c0107068: 01 d0 add %edx,%eax -c010706a: a3 14 9c 12 c0 mov %eax,0xc0129c14 - list_add_before(&free_list, &(base->page_link)); -c010706f: 8b 45 08 mov 0x8(%ebp),%eax -c0107072: 83 c0 0c add $0xc,%eax -c0107075: c7 45 f0 0c 9c 12 c0 movl $0xc0129c0c,-0x10(%ebp) -c010707c: 89 45 dc mov %eax,-0x24(%ebp) - * Insert the new element @elm *before* the element @listelm which - * is already in the list. - * */ -static inline void -list_add_before(list_entry_t *listelm, list_entry_t *elm) { - __list_add(elm, listelm->prev, listelm); -c010707f: 8b 45 f0 mov -0x10(%ebp),%eax -c0107082: 8b 00 mov (%eax),%eax -c0107084: 8b 55 dc mov -0x24(%ebp),%edx -c0107087: 89 55 d8 mov %edx,-0x28(%ebp) -c010708a: 89 45 d4 mov %eax,-0x2c(%ebp) -c010708d: 8b 45 f0 mov -0x10(%ebp),%eax -c0107090: 89 45 d0 mov %eax,-0x30(%ebp) - * This is only for internal list manipulation where we know - * the prev/next entries already! - * */ -static inline void -__list_add(list_entry_t *elm, list_entry_t *prev, list_entry_t *next) { - prev->next = next->prev = elm; -c0107093: 8b 45 d0 mov -0x30(%ebp),%eax -c0107096: 8b 55 d8 mov -0x28(%ebp),%edx -c0107099: 89 10 mov %edx,(%eax) -c010709b: 8b 45 d0 mov -0x30(%ebp),%eax -c010709e: 8b 10 mov (%eax),%edx -c01070a0: 8b 45 d4 mov -0x2c(%ebp),%eax -c01070a3: 89 50 04 mov %edx,0x4(%eax) - elm->next = next; -c01070a6: 8b 45 d8 mov -0x28(%ebp),%eax -c01070a9: 8b 55 d0 mov -0x30(%ebp),%edx -c01070ac: 89 50 04 mov %edx,0x4(%eax) - elm->prev = prev; -c01070af: 8b 45 d8 mov -0x28(%ebp),%eax -c01070b2: 8b 55 d4 mov -0x2c(%ebp),%edx -c01070b5: 89 10 mov %edx,(%eax) -} -c01070b7: 90 nop -c01070b8: c9 leave -c01070b9: c3 ret - -c01070ba : - -static struct Page * -default_alloc_pages(size_t n) { -c01070ba: 55 push %ebp -c01070bb: 89 e5 mov %esp,%ebp -c01070bd: 83 ec 68 sub $0x68,%esp - assert(n > 0); -c01070c0: 83 7d 08 00 cmpl $0x0,0x8(%ebp) -c01070c4: 75 16 jne c01070dc -c01070c6: 68 6c b9 10 c0 push $0xc010b96c -c01070cb: 68 72 b9 10 c0 push $0xc010b972 -c01070d0: 6a 58 push $0x58 -c01070d2: 68 87 b9 10 c0 push $0xc010b987 -c01070d7: e8 08 93 ff ff call c01003e4 <__panic> - if (n > nr_free) { -c01070dc: a1 14 9c 12 c0 mov 0xc0129c14,%eax -c01070e1: 3b 45 08 cmp 0x8(%ebp),%eax -c01070e4: 73 0a jae c01070f0 - return NULL; -c01070e6: b8 00 00 00 00 mov $0x0,%eax -c01070eb: e9 9a 01 00 00 jmp c010728a - } - struct Page *page = NULL; -c01070f0: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - list_entry_t *le = &free_list; -c01070f7: c7 45 f0 0c 9c 12 c0 movl $0xc0129c0c,-0x10(%ebp) - while ((le = list_next(le)) != &free_list) { -c01070fe: eb 1c jmp c010711c - struct Page *p = le2page(le, page_link); -c0107100: 8b 45 f0 mov -0x10(%ebp),%eax -c0107103: 83 e8 0c sub $0xc,%eax -c0107106: 89 45 e4 mov %eax,-0x1c(%ebp) - if (p->property >= n) { -c0107109: 8b 45 e4 mov -0x1c(%ebp),%eax -c010710c: 8b 40 08 mov 0x8(%eax),%eax -c010710f: 3b 45 08 cmp 0x8(%ebp),%eax -c0107112: 72 08 jb c010711c - page = p; -c0107114: 8b 45 e4 mov -0x1c(%ebp),%eax -c0107117: 89 45 f4 mov %eax,-0xc(%ebp) - break; -c010711a: eb 18 jmp c0107134 -c010711c: 8b 45 f0 mov -0x10(%ebp),%eax -c010711f: 89 45 c8 mov %eax,-0x38(%ebp) - * list_next - get the next entry - * @listelm: the list head - **/ -static inline list_entry_t * -list_next(list_entry_t *listelm) { - return listelm->next; -c0107122: 8b 45 c8 mov -0x38(%ebp),%eax -c0107125: 8b 40 04 mov 0x4(%eax),%eax - if (n > nr_free) { - return NULL; - } - struct Page *page = NULL; - list_entry_t *le = &free_list; - while ((le = list_next(le)) != &free_list) { -c0107128: 89 45 f0 mov %eax,-0x10(%ebp) -c010712b: 81 7d f0 0c 9c 12 c0 cmpl $0xc0129c0c,-0x10(%ebp) -c0107132: 75 cc jne c0107100 - if (p->property >= n) { - page = p; - break; - } - } - if (page != NULL) { -c0107134: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c0107138: 0f 84 49 01 00 00 je c0107287 - for (int i = 1; i < n; ++ i) { -c010713e: c7 45 ec 01 00 00 00 movl $0x1,-0x14(%ebp) -c0107145: eb 47 jmp c010718e - struct Page *p = page + i; -c0107147: 8b 45 ec mov -0x14(%ebp),%eax -c010714a: c1 e0 05 shl $0x5,%eax -c010714d: 89 c2 mov %eax,%edx -c010714f: 8b 45 f4 mov -0xc(%ebp),%eax -c0107152: 01 d0 add %edx,%eax -c0107154: 89 45 e0 mov %eax,-0x20(%ebp) - // assert(!PageReserved(p)); - ClearPageProperty(p); -c0107157: 8b 45 e0 mov -0x20(%ebp),%eax -c010715a: 83 c0 04 add $0x4,%eax -c010715d: c7 45 e8 01 00 00 00 movl $0x1,-0x18(%ebp) -c0107164: 89 45 c4 mov %eax,-0x3c(%ebp) - * @nr: the bit to clear - * @addr: the address to start counting from - * */ -static inline void -clear_bit(int nr, volatile void *addr) { - asm volatile ("btrl %1, %0" :"=m" (*(volatile long *)addr) : "Ir" (nr)); -c0107167: 8b 45 c4 mov -0x3c(%ebp),%eax -c010716a: 8b 55 e8 mov -0x18(%ebp),%edx -c010716d: 0f b3 10 btr %edx,(%eax) - p->property = 0; -c0107170: 8b 45 e0 mov -0x20(%ebp),%eax -c0107173: c7 40 08 00 00 00 00 movl $0x0,0x8(%eax) - set_page_ref(p, 0); -c010717a: 83 ec 08 sub $0x8,%esp -c010717d: 6a 00 push $0x0 -c010717f: ff 75 e0 pushl -0x20(%ebp) -c0107182: e8 d2 fd ff ff call c0106f59 -c0107187: 83 c4 10 add $0x10,%esp - page = p; - break; - } - } - if (page != NULL) { - for (int i = 1; i < n; ++ i) { -c010718a: 83 45 ec 01 addl $0x1,-0x14(%ebp) -c010718e: 8b 45 ec mov -0x14(%ebp),%eax -c0107191: 3b 45 08 cmp 0x8(%ebp),%eax -c0107194: 72 b1 jb c0107147 - // assert(!PageReserved(p)); - ClearPageProperty(p); - p->property = 0; - set_page_ref(p, 0); - } - if (page->property > n) { -c0107196: 8b 45 f4 mov -0xc(%ebp),%eax -c0107199: 8b 40 08 mov 0x8(%eax),%eax -c010719c: 3b 45 08 cmp 0x8(%ebp),%eax -c010719f: 0f 86 91 00 00 00 jbe c0107236 - struct Page *p = page + n; -c01071a5: 8b 45 08 mov 0x8(%ebp),%eax -c01071a8: c1 e0 05 shl $0x5,%eax -c01071ab: 89 c2 mov %eax,%edx -c01071ad: 8b 45 f4 mov -0xc(%ebp),%eax -c01071b0: 01 d0 add %edx,%eax -c01071b2: 89 45 d8 mov %eax,-0x28(%ebp) - p->property = page->property - n; -c01071b5: 8b 45 f4 mov -0xc(%ebp),%eax -c01071b8: 8b 40 08 mov 0x8(%eax),%eax -c01071bb: 2b 45 08 sub 0x8(%ebp),%eax -c01071be: 89 c2 mov %eax,%edx -c01071c0: 8b 45 d8 mov -0x28(%ebp),%eax -c01071c3: 89 50 08 mov %edx,0x8(%eax) - SetPageProperty(p); -c01071c6: 8b 45 d8 mov -0x28(%ebp),%eax -c01071c9: 83 c0 04 add $0x4,%eax -c01071cc: c7 45 d0 01 00 00 00 movl $0x1,-0x30(%ebp) -c01071d3: 89 45 a8 mov %eax,-0x58(%ebp) - * Note that @nr may be almost arbitrarily large; this function is not - * restricted to acting on a single-word quantity. - * */ -static inline void -set_bit(int nr, volatile void *addr) { - asm volatile ("btsl %1, %0" :"=m" (*(volatile long *)addr) : "Ir" (nr)); -c01071d6: 8b 45 a8 mov -0x58(%ebp),%eax -c01071d9: 8b 55 d0 mov -0x30(%ebp),%edx -c01071dc: 0f ab 10 bts %edx,(%eax) - list_add(&(page->page_link), &(p->page_link)); -c01071df: 8b 45 d8 mov -0x28(%ebp),%eax -c01071e2: 83 c0 0c add $0xc,%eax -c01071e5: 8b 55 f4 mov -0xc(%ebp),%edx -c01071e8: 83 c2 0c add $0xc,%edx -c01071eb: 89 55 dc mov %edx,-0x24(%ebp) -c01071ee: 89 45 c0 mov %eax,-0x40(%ebp) -c01071f1: 8b 45 dc mov -0x24(%ebp),%eax -c01071f4: 89 45 bc mov %eax,-0x44(%ebp) -c01071f7: 8b 45 c0 mov -0x40(%ebp),%eax -c01071fa: 89 45 b8 mov %eax,-0x48(%ebp) - * Insert the new element @elm *after* the element @listelm which - * is already in the list. - * */ -static inline void -list_add_after(list_entry_t *listelm, list_entry_t *elm) { - __list_add(elm, listelm, listelm->next); -c01071fd: 8b 45 bc mov -0x44(%ebp),%eax -c0107200: 8b 40 04 mov 0x4(%eax),%eax -c0107203: 8b 55 b8 mov -0x48(%ebp),%edx -c0107206: 89 55 b4 mov %edx,-0x4c(%ebp) -c0107209: 8b 55 bc mov -0x44(%ebp),%edx -c010720c: 89 55 b0 mov %edx,-0x50(%ebp) -c010720f: 89 45 ac mov %eax,-0x54(%ebp) - * This is only for internal list manipulation where we know - * the prev/next entries already! - * */ -static inline void -__list_add(list_entry_t *elm, list_entry_t *prev, list_entry_t *next) { - prev->next = next->prev = elm; -c0107212: 8b 45 ac mov -0x54(%ebp),%eax -c0107215: 8b 55 b4 mov -0x4c(%ebp),%edx -c0107218: 89 10 mov %edx,(%eax) -c010721a: 8b 45 ac mov -0x54(%ebp),%eax -c010721d: 8b 10 mov (%eax),%edx -c010721f: 8b 45 b0 mov -0x50(%ebp),%eax -c0107222: 89 50 04 mov %edx,0x4(%eax) - elm->next = next; -c0107225: 8b 45 b4 mov -0x4c(%ebp),%eax -c0107228: 8b 55 ac mov -0x54(%ebp),%edx -c010722b: 89 50 04 mov %edx,0x4(%eax) - elm->prev = prev; -c010722e: 8b 45 b4 mov -0x4c(%ebp),%eax -c0107231: 8b 55 b0 mov -0x50(%ebp),%edx -c0107234: 89 10 mov %edx,(%eax) - } - list_del(&(page->page_link)); -c0107236: 8b 45 f4 mov -0xc(%ebp),%eax -c0107239: 83 c0 0c add $0xc,%eax -c010723c: 89 45 cc mov %eax,-0x34(%ebp) - * Note: list_empty() on @listelm does not return true after this, the entry is - * in an undefined state. - * */ -static inline void -list_del(list_entry_t *listelm) { - __list_del(listelm->prev, listelm->next); -c010723f: 8b 45 cc mov -0x34(%ebp),%eax -c0107242: 8b 40 04 mov 0x4(%eax),%eax -c0107245: 8b 55 cc mov -0x34(%ebp),%edx -c0107248: 8b 12 mov (%edx),%edx -c010724a: 89 55 a0 mov %edx,-0x60(%ebp) -c010724d: 89 45 9c mov %eax,-0x64(%ebp) - * This is only for internal list manipulation where we know - * the prev/next entries already! - * */ -static inline void -__list_del(list_entry_t *prev, list_entry_t *next) { - prev->next = next; -c0107250: 8b 45 a0 mov -0x60(%ebp),%eax -c0107253: 8b 55 9c mov -0x64(%ebp),%edx -c0107256: 89 50 04 mov %edx,0x4(%eax) - next->prev = prev; -c0107259: 8b 45 9c mov -0x64(%ebp),%eax -c010725c: 8b 55 a0 mov -0x60(%ebp),%edx -c010725f: 89 10 mov %edx,(%eax) - nr_free -= n; -c0107261: a1 14 9c 12 c0 mov 0xc0129c14,%eax -c0107266: 2b 45 08 sub 0x8(%ebp),%eax -c0107269: a3 14 9c 12 c0 mov %eax,0xc0129c14 - ClearPageProperty(page); -c010726e: 8b 45 f4 mov -0xc(%ebp),%eax -c0107271: 83 c0 04 add $0x4,%eax -c0107274: c7 45 d4 01 00 00 00 movl $0x1,-0x2c(%ebp) -c010727b: 89 45 a4 mov %eax,-0x5c(%ebp) - * @nr: the bit to clear - * @addr: the address to start counting from - * */ -static inline void -clear_bit(int nr, volatile void *addr) { - asm volatile ("btrl %1, %0" :"=m" (*(volatile long *)addr) : "Ir" (nr)); -c010727e: 8b 45 a4 mov -0x5c(%ebp),%eax -c0107281: 8b 55 d4 mov -0x2c(%ebp),%edx -c0107284: 0f b3 10 btr %edx,(%eax) - } - return page; -c0107287: 8b 45 f4 mov -0xc(%ebp),%eax -} -c010728a: c9 leave -c010728b: c3 ret - -c010728c : - -static void -default_free_pages(struct Page *base, size_t n) { -c010728c: 55 push %ebp -c010728d: 89 e5 mov %esp,%ebp -c010728f: 81 ec 98 00 00 00 sub $0x98,%esp - assert(n > 0); -c0107295: 83 7d 0c 00 cmpl $0x0,0xc(%ebp) -c0107299: 75 16 jne c01072b1 -c010729b: 68 6c b9 10 c0 push $0xc010b96c -c01072a0: 68 72 b9 10 c0 push $0xc010b972 -c01072a5: 6a 7c push $0x7c -c01072a7: 68 87 b9 10 c0 push $0xc010b987 -c01072ac: e8 33 91 ff ff call c01003e4 <__panic> - struct Page *p = base; -c01072b1: 8b 45 08 mov 0x8(%ebp),%eax -c01072b4: 89 45 f4 mov %eax,-0xc(%ebp) - for (; p != base + n; p ++) { -c01072b7: e9 8c 00 00 00 jmp c0107348 - assert(!PageReserved(p) && !PageProperty(p)); -c01072bc: 8b 45 f4 mov -0xc(%ebp),%eax -c01072bf: 83 c0 04 add $0x4,%eax -c01072c2: c7 45 bc 00 00 00 00 movl $0x0,-0x44(%ebp) -c01072c9: 89 45 b8 mov %eax,-0x48(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); -c01072cc: 8b 45 b8 mov -0x48(%ebp),%eax -c01072cf: 8b 55 bc mov -0x44(%ebp),%edx -c01072d2: 0f a3 10 bt %edx,(%eax) -c01072d5: 19 c0 sbb %eax,%eax -c01072d7: 89 45 b4 mov %eax,-0x4c(%ebp) - return oldbit != 0; -c01072da: 83 7d b4 00 cmpl $0x0,-0x4c(%ebp) -c01072de: 0f 95 c0 setne %al -c01072e1: 0f b6 c0 movzbl %al,%eax -c01072e4: 85 c0 test %eax,%eax -c01072e6: 75 2c jne c0107314 -c01072e8: 8b 45 f4 mov -0xc(%ebp),%eax -c01072eb: 83 c0 04 add $0x4,%eax -c01072ee: c7 45 e4 01 00 00 00 movl $0x1,-0x1c(%ebp) -c01072f5: 89 45 b0 mov %eax,-0x50(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); -c01072f8: 8b 45 b0 mov -0x50(%ebp),%eax -c01072fb: 8b 55 e4 mov -0x1c(%ebp),%edx -c01072fe: 0f a3 10 bt %edx,(%eax) -c0107301: 19 c0 sbb %eax,%eax -c0107303: 89 45 ac mov %eax,-0x54(%ebp) - return oldbit != 0; -c0107306: 83 7d ac 00 cmpl $0x0,-0x54(%ebp) -c010730a: 0f 95 c0 setne %al -c010730d: 0f b6 c0 movzbl %al,%eax -c0107310: 85 c0 test %eax,%eax -c0107312: 74 16 je c010732a -c0107314: 68 b0 b9 10 c0 push $0xc010b9b0 -c0107319: 68 72 b9 10 c0 push $0xc010b972 -c010731e: 6a 7f push $0x7f -c0107320: 68 87 b9 10 c0 push $0xc010b987 -c0107325: e8 ba 90 ff ff call c01003e4 <__panic> - p->flags = 0; -c010732a: 8b 45 f4 mov -0xc(%ebp),%eax -c010732d: c7 40 04 00 00 00 00 movl $0x0,0x4(%eax) - set_page_ref(p, 0); -c0107334: 83 ec 08 sub $0x8,%esp -c0107337: 6a 00 push $0x0 -c0107339: ff 75 f4 pushl -0xc(%ebp) -c010733c: e8 18 fc ff ff call c0106f59 -c0107341: 83 c4 10 add $0x10,%esp - -static void -default_free_pages(struct Page *base, size_t n) { - assert(n > 0); - struct Page *p = base; - for (; p != base + n; p ++) { -c0107344: 83 45 f4 20 addl $0x20,-0xc(%ebp) -c0107348: 8b 45 0c mov 0xc(%ebp),%eax -c010734b: c1 e0 05 shl $0x5,%eax -c010734e: 89 c2 mov %eax,%edx -c0107350: 8b 45 08 mov 0x8(%ebp),%eax -c0107353: 01 d0 add %edx,%eax -c0107355: 3b 45 f4 cmp -0xc(%ebp),%eax -c0107358: 0f 85 5e ff ff ff jne c01072bc - assert(!PageReserved(p) && !PageProperty(p)); - p->flags = 0; - set_page_ref(p, 0); - } - base->property = n; -c010735e: 8b 45 08 mov 0x8(%ebp),%eax -c0107361: 8b 55 0c mov 0xc(%ebp),%edx -c0107364: 89 50 08 mov %edx,0x8(%eax) - SetPageProperty(base); -c0107367: 8b 45 08 mov 0x8(%ebp),%eax -c010736a: 83 c0 04 add $0x4,%eax -c010736d: c7 45 d8 01 00 00 00 movl $0x1,-0x28(%ebp) -c0107374: 89 45 a8 mov %eax,-0x58(%ebp) - * Note that @nr may be almost arbitrarily large; this function is not - * restricted to acting on a single-word quantity. - * */ -static inline void -set_bit(int nr, volatile void *addr) { - asm volatile ("btsl %1, %0" :"=m" (*(volatile long *)addr) : "Ir" (nr)); -c0107377: 8b 45 a8 mov -0x58(%ebp),%eax -c010737a: 8b 55 d8 mov -0x28(%ebp),%edx -c010737d: 0f ab 10 bts %edx,(%eax) -c0107380: c7 45 e0 0c 9c 12 c0 movl $0xc0129c0c,-0x20(%ebp) - * list_next - get the next entry - * @listelm: the list head - **/ -static inline list_entry_t * -list_next(list_entry_t *listelm) { - return listelm->next; -c0107387: 8b 45 e0 mov -0x20(%ebp),%eax -c010738a: 8b 40 04 mov 0x4(%eax),%eax - list_entry_t *le = list_next(&free_list); -c010738d: 89 45 f0 mov %eax,-0x10(%ebp) - struct Page *merge_previous = NULL; -c0107390: c7 45 ec 00 00 00 00 movl $0x0,-0x14(%ebp) - struct Page *merge_next = NULL; -c0107397: c7 45 e8 00 00 00 00 movl $0x0,-0x18(%ebp) - while (le != &free_list) { -c010739e: eb 58 jmp c01073f8 - p = le2page(le, page_link); -c01073a0: 8b 45 f0 mov -0x10(%ebp),%eax -c01073a3: 83 e8 0c sub $0xc,%eax -c01073a6: 89 45 f4 mov %eax,-0xc(%ebp) -c01073a9: 8b 45 f0 mov -0x10(%ebp),%eax -c01073ac: 89 45 dc mov %eax,-0x24(%ebp) -c01073af: 8b 45 dc mov -0x24(%ebp),%eax -c01073b2: 8b 40 04 mov 0x4(%eax),%eax - le = list_next(le); -c01073b5: 89 45 f0 mov %eax,-0x10(%ebp) - if (base + base->property == p) { -c01073b8: 8b 45 08 mov 0x8(%ebp),%eax -c01073bb: 8b 40 08 mov 0x8(%eax),%eax -c01073be: c1 e0 05 shl $0x5,%eax -c01073c1: 89 c2 mov %eax,%edx -c01073c3: 8b 45 08 mov 0x8(%ebp),%eax -c01073c6: 01 d0 add %edx,%eax -c01073c8: 3b 45 f4 cmp -0xc(%ebp),%eax -c01073cb: 75 08 jne c01073d5 - merge_next = p; -c01073cd: 8b 45 f4 mov -0xc(%ebp),%eax -c01073d0: 89 45 e8 mov %eax,-0x18(%ebp) - break; -c01073d3: eb 2f jmp c0107404 - } - else if (p + p->property == base) { -c01073d5: 8b 45 f4 mov -0xc(%ebp),%eax -c01073d8: 8b 40 08 mov 0x8(%eax),%eax -c01073db: c1 e0 05 shl $0x5,%eax -c01073de: 89 c2 mov %eax,%edx -c01073e0: 8b 45 f4 mov -0xc(%ebp),%eax -c01073e3: 01 d0 add %edx,%eax -c01073e5: 3b 45 08 cmp 0x8(%ebp),%eax -c01073e8: 75 06 jne c01073f0 - merge_previous = p; -c01073ea: 8b 45 f4 mov -0xc(%ebp),%eax -c01073ed: 89 45 ec mov %eax,-0x14(%ebp) - } - if (p > base) break; -c01073f0: 8b 45 f4 mov -0xc(%ebp),%eax -c01073f3: 3b 45 08 cmp 0x8(%ebp),%eax -c01073f6: 77 0b ja c0107403 - base->property = n; - SetPageProperty(base); - list_entry_t *le = list_next(&free_list); - struct Page *merge_previous = NULL; - struct Page *merge_next = NULL; - while (le != &free_list) { -c01073f8: 81 7d f0 0c 9c 12 c0 cmpl $0xc0129c0c,-0x10(%ebp) -c01073ff: 75 9f jne c01073a0 -c0107401: eb 01 jmp c0107404 - break; - } - else if (p + p->property == base) { - merge_previous = p; - } - if (p > base) break; -c0107403: 90 nop - } - nr_free += n; -c0107404: 8b 15 14 9c 12 c0 mov 0xc0129c14,%edx -c010740a: 8b 45 0c mov 0xc(%ebp),%eax -c010740d: 01 d0 add %edx,%eax -c010740f: a3 14 9c 12 c0 mov %eax,0xc0129c14 - // Try to merge base with merge_previous and merge_next. - if (merge_previous != NULL) { -c0107414: 83 7d ec 00 cmpl $0x0,-0x14(%ebp) -c0107418: 74 33 je c010744d - merge_previous->property += base->property; -c010741a: 8b 45 ec mov -0x14(%ebp),%eax -c010741d: 8b 50 08 mov 0x8(%eax),%edx -c0107420: 8b 45 08 mov 0x8(%ebp),%eax -c0107423: 8b 40 08 mov 0x8(%eax),%eax -c0107426: 01 c2 add %eax,%edx -c0107428: 8b 45 ec mov -0x14(%ebp),%eax -c010742b: 89 50 08 mov %edx,0x8(%eax) - ClearPageProperty(base); -c010742e: 8b 45 08 mov 0x8(%ebp),%eax -c0107431: 83 c0 04 add $0x4,%eax -c0107434: c7 45 d4 01 00 00 00 movl $0x1,-0x2c(%ebp) -c010743b: 89 45 a4 mov %eax,-0x5c(%ebp) - * @nr: the bit to clear - * @addr: the address to start counting from - * */ -static inline void -clear_bit(int nr, volatile void *addr) { - asm volatile ("btrl %1, %0" :"=m" (*(volatile long *)addr) : "Ir" (nr)); -c010743e: 8b 45 a4 mov -0x5c(%ebp),%eax -c0107441: 8b 55 d4 mov -0x2c(%ebp),%edx -c0107444: 0f b3 10 btr %edx,(%eax) - base = merge_previous; -c0107447: 8b 45 ec mov -0x14(%ebp),%eax -c010744a: 89 45 08 mov %eax,0x8(%ebp) - } - if (merge_next != NULL) { -c010744d: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) -c0107451: 0f 84 a8 00 00 00 je c01074ff - base->property += merge_next->property; -c0107457: 8b 45 08 mov 0x8(%ebp),%eax -c010745a: 8b 50 08 mov 0x8(%eax),%edx -c010745d: 8b 45 e8 mov -0x18(%ebp),%eax -c0107460: 8b 40 08 mov 0x8(%eax),%eax -c0107463: 01 c2 add %eax,%edx -c0107465: 8b 45 08 mov 0x8(%ebp),%eax -c0107468: 89 50 08 mov %edx,0x8(%eax) - ClearPageProperty(merge_next); -c010746b: 8b 45 e8 mov -0x18(%ebp),%eax -c010746e: 83 c0 04 add $0x4,%eax -c0107471: c7 45 d0 01 00 00 00 movl $0x1,-0x30(%ebp) -c0107478: 89 45 a0 mov %eax,-0x60(%ebp) -c010747b: 8b 45 a0 mov -0x60(%ebp),%eax -c010747e: 8b 55 d0 mov -0x30(%ebp),%edx -c0107481: 0f b3 10 btr %edx,(%eax) - if (merge_previous == NULL) { -c0107484: 83 7d ec 00 cmpl $0x0,-0x14(%ebp) -c0107488: 75 4a jne c01074d4 - list_add_before(&(merge_next->page_link), &(base->page_link)); -c010748a: 8b 45 08 mov 0x8(%ebp),%eax -c010748d: 83 c0 0c add $0xc,%eax -c0107490: 8b 55 e8 mov -0x18(%ebp),%edx -c0107493: 83 c2 0c add $0xc,%edx -c0107496: 89 55 cc mov %edx,-0x34(%ebp) -c0107499: 89 45 9c mov %eax,-0x64(%ebp) - * Insert the new element @elm *before* the element @listelm which - * is already in the list. - * */ -static inline void -list_add_before(list_entry_t *listelm, list_entry_t *elm) { - __list_add(elm, listelm->prev, listelm); -c010749c: 8b 45 cc mov -0x34(%ebp),%eax -c010749f: 8b 00 mov (%eax),%eax -c01074a1: 8b 55 9c mov -0x64(%ebp),%edx -c01074a4: 89 55 98 mov %edx,-0x68(%ebp) -c01074a7: 89 45 94 mov %eax,-0x6c(%ebp) -c01074aa: 8b 45 cc mov -0x34(%ebp),%eax -c01074ad: 89 45 90 mov %eax,-0x70(%ebp) - * This is only for internal list manipulation where we know - * the prev/next entries already! - * */ -static inline void -__list_add(list_entry_t *elm, list_entry_t *prev, list_entry_t *next) { - prev->next = next->prev = elm; -c01074b0: 8b 45 90 mov -0x70(%ebp),%eax -c01074b3: 8b 55 98 mov -0x68(%ebp),%edx -c01074b6: 89 10 mov %edx,(%eax) -c01074b8: 8b 45 90 mov -0x70(%ebp),%eax -c01074bb: 8b 10 mov (%eax),%edx -c01074bd: 8b 45 94 mov -0x6c(%ebp),%eax -c01074c0: 89 50 04 mov %edx,0x4(%eax) - elm->next = next; -c01074c3: 8b 45 98 mov -0x68(%ebp),%eax -c01074c6: 8b 55 90 mov -0x70(%ebp),%edx -c01074c9: 89 50 04 mov %edx,0x4(%eax) - elm->prev = prev; -c01074cc: 8b 45 98 mov -0x68(%ebp),%eax -c01074cf: 8b 55 94 mov -0x6c(%ebp),%edx -c01074d2: 89 10 mov %edx,(%eax) - } - - list_del(&(merge_next->page_link)); -c01074d4: 8b 45 e8 mov -0x18(%ebp),%eax -c01074d7: 83 c0 0c add $0xc,%eax -c01074da: 89 45 c8 mov %eax,-0x38(%ebp) - * Note: list_empty() on @listelm does not return true after this, the entry is - * in an undefined state. - * */ -static inline void -list_del(list_entry_t *listelm) { - __list_del(listelm->prev, listelm->next); -c01074dd: 8b 45 c8 mov -0x38(%ebp),%eax -c01074e0: 8b 40 04 mov 0x4(%eax),%eax -c01074e3: 8b 55 c8 mov -0x38(%ebp),%edx -c01074e6: 8b 12 mov (%edx),%edx -c01074e8: 89 55 8c mov %edx,-0x74(%ebp) -c01074eb: 89 45 88 mov %eax,-0x78(%ebp) - * This is only for internal list manipulation where we know - * the prev/next entries already! - * */ -static inline void -__list_del(list_entry_t *prev, list_entry_t *next) { - prev->next = next; -c01074ee: 8b 45 8c mov -0x74(%ebp),%eax -c01074f1: 8b 55 88 mov -0x78(%ebp),%edx -c01074f4: 89 50 04 mov %edx,0x4(%eax) - next->prev = prev; -c01074f7: 8b 45 88 mov -0x78(%ebp),%eax -c01074fa: 8b 55 8c mov -0x74(%ebp),%edx -c01074fd: 89 10 mov %edx,(%eax) - } - if (merge_next == NULL && merge_previous == NULL) { -c01074ff: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) -c0107503: 0f 85 f5 00 00 00 jne c01075fe -c0107509: 83 7d ec 00 cmpl $0x0,-0x14(%ebp) -c010750d: 0f 85 eb 00 00 00 jne c01075fe - if (p > base && p != (base + n)) { -c0107513: 8b 45 f4 mov -0xc(%ebp),%eax -c0107516: 3b 45 08 cmp 0x8(%ebp),%eax -c0107519: 76 74 jbe c010758f -c010751b: 8b 45 0c mov 0xc(%ebp),%eax -c010751e: c1 e0 05 shl $0x5,%eax -c0107521: 89 c2 mov %eax,%edx -c0107523: 8b 45 08 mov 0x8(%ebp),%eax -c0107526: 01 d0 add %edx,%eax -c0107528: 3b 45 f4 cmp -0xc(%ebp),%eax -c010752b: 74 62 je c010758f - list_add_before(&(p->page_link), &(base->page_link)); -c010752d: 8b 45 08 mov 0x8(%ebp),%eax -c0107530: 83 c0 0c add $0xc,%eax -c0107533: 8b 55 f4 mov -0xc(%ebp),%edx -c0107536: 83 c2 0c add $0xc,%edx -c0107539: 89 55 c4 mov %edx,-0x3c(%ebp) -c010753c: 89 45 84 mov %eax,-0x7c(%ebp) - * Insert the new element @elm *before* the element @listelm which - * is already in the list. - * */ -static inline void -list_add_before(list_entry_t *listelm, list_entry_t *elm) { - __list_add(elm, listelm->prev, listelm); -c010753f: 8b 45 c4 mov -0x3c(%ebp),%eax -c0107542: 8b 00 mov (%eax),%eax -c0107544: 8b 55 84 mov -0x7c(%ebp),%edx -c0107547: 89 55 80 mov %edx,-0x80(%ebp) -c010754a: 89 85 7c ff ff ff mov %eax,-0x84(%ebp) -c0107550: 8b 45 c4 mov -0x3c(%ebp),%eax -c0107553: 89 85 78 ff ff ff mov %eax,-0x88(%ebp) - * This is only for internal list manipulation where we know - * the prev/next entries already! - * */ -static inline void -__list_add(list_entry_t *elm, list_entry_t *prev, list_entry_t *next) { - prev->next = next->prev = elm; -c0107559: 8b 85 78 ff ff ff mov -0x88(%ebp),%eax -c010755f: 8b 55 80 mov -0x80(%ebp),%edx -c0107562: 89 10 mov %edx,(%eax) -c0107564: 8b 85 78 ff ff ff mov -0x88(%ebp),%eax -c010756a: 8b 10 mov (%eax),%edx -c010756c: 8b 85 7c ff ff ff mov -0x84(%ebp),%eax -c0107572: 89 50 04 mov %edx,0x4(%eax) - elm->next = next; -c0107575: 8b 45 80 mov -0x80(%ebp),%eax -c0107578: 8b 95 78 ff ff ff mov -0x88(%ebp),%edx -c010757e: 89 50 04 mov %edx,0x4(%eax) - elm->prev = prev; -c0107581: 8b 45 80 mov -0x80(%ebp),%eax -c0107584: 8b 95 7c ff ff ff mov -0x84(%ebp),%edx -c010758a: 89 10 mov %edx,(%eax) -c010758c: 90 nop - } else { - list_add_before(&free_list, &(base->page_link)); - } - } -} -c010758d: eb 6f jmp c01075fe - } - if (merge_next == NULL && merge_previous == NULL) { - if (p > base && p != (base + n)) { - list_add_before(&(p->page_link), &(base->page_link)); - } else { - list_add_before(&free_list, &(base->page_link)); -c010758f: 8b 45 08 mov 0x8(%ebp),%eax -c0107592: 83 c0 0c add $0xc,%eax -c0107595: c7 45 c0 0c 9c 12 c0 movl $0xc0129c0c,-0x40(%ebp) -c010759c: 89 85 74 ff ff ff mov %eax,-0x8c(%ebp) - * Insert the new element @elm *before* the element @listelm which - * is already in the list. - * */ -static inline void -list_add_before(list_entry_t *listelm, list_entry_t *elm) { - __list_add(elm, listelm->prev, listelm); -c01075a2: 8b 45 c0 mov -0x40(%ebp),%eax -c01075a5: 8b 00 mov (%eax),%eax -c01075a7: 8b 95 74 ff ff ff mov -0x8c(%ebp),%edx -c01075ad: 89 95 70 ff ff ff mov %edx,-0x90(%ebp) -c01075b3: 89 85 6c ff ff ff mov %eax,-0x94(%ebp) -c01075b9: 8b 45 c0 mov -0x40(%ebp),%eax -c01075bc: 89 85 68 ff ff ff mov %eax,-0x98(%ebp) - * This is only for internal list manipulation where we know - * the prev/next entries already! - * */ -static inline void -__list_add(list_entry_t *elm, list_entry_t *prev, list_entry_t *next) { - prev->next = next->prev = elm; -c01075c2: 8b 85 68 ff ff ff mov -0x98(%ebp),%eax -c01075c8: 8b 95 70 ff ff ff mov -0x90(%ebp),%edx -c01075ce: 89 10 mov %edx,(%eax) -c01075d0: 8b 85 68 ff ff ff mov -0x98(%ebp),%eax -c01075d6: 8b 10 mov (%eax),%edx -c01075d8: 8b 85 6c ff ff ff mov -0x94(%ebp),%eax -c01075de: 89 50 04 mov %edx,0x4(%eax) - elm->next = next; -c01075e1: 8b 85 70 ff ff ff mov -0x90(%ebp),%eax -c01075e7: 8b 95 68 ff ff ff mov -0x98(%ebp),%edx -c01075ed: 89 50 04 mov %edx,0x4(%eax) - elm->prev = prev; -c01075f0: 8b 85 70 ff ff ff mov -0x90(%ebp),%eax -c01075f6: 8b 95 6c ff ff ff mov -0x94(%ebp),%edx -c01075fc: 89 10 mov %edx,(%eax) - } - } -} -c01075fe: 90 nop -c01075ff: c9 leave -c0107600: c3 ret - -c0107601 : - -static size_t -default_nr_free_pages(void) { -c0107601: 55 push %ebp -c0107602: 89 e5 mov %esp,%ebp - return nr_free; -c0107604: a1 14 9c 12 c0 mov 0xc0129c14,%eax -} -c0107609: 5d pop %ebp -c010760a: c3 ret - -c010760b : - -static void -basic_check(void) { -c010760b: 55 push %ebp -c010760c: 89 e5 mov %esp,%ebp -c010760e: 83 ec 38 sub $0x38,%esp - struct Page *p0, *p1, *p2; - p0 = p1 = p2 = NULL; -c0107611: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) -c0107618: 8b 45 f4 mov -0xc(%ebp),%eax -c010761b: 89 45 f0 mov %eax,-0x10(%ebp) -c010761e: 8b 45 f0 mov -0x10(%ebp),%eax -c0107621: 89 45 ec mov %eax,-0x14(%ebp) - assert((p0 = alloc_page()) != NULL); -c0107624: 83 ec 0c sub $0xc,%esp -c0107627: 6a 01 push $0x1 -c0107629: e8 61 bf ff ff call c010358f -c010762e: 83 c4 10 add $0x10,%esp -c0107631: 89 45 ec mov %eax,-0x14(%ebp) -c0107634: 83 7d ec 00 cmpl $0x0,-0x14(%ebp) -c0107638: 75 19 jne c0107653 -c010763a: 68 d5 b9 10 c0 push $0xc010b9d5 -c010763f: 68 72 b9 10 c0 push $0xc010b972 -c0107644: 68 b6 00 00 00 push $0xb6 -c0107649: 68 87 b9 10 c0 push $0xc010b987 -c010764e: e8 91 8d ff ff call c01003e4 <__panic> - assert((p1 = alloc_page()) != NULL); -c0107653: 83 ec 0c sub $0xc,%esp -c0107656: 6a 01 push $0x1 -c0107658: e8 32 bf ff ff call c010358f -c010765d: 83 c4 10 add $0x10,%esp -c0107660: 89 45 f0 mov %eax,-0x10(%ebp) -c0107663: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) -c0107667: 75 19 jne c0107682 -c0107669: 68 f1 b9 10 c0 push $0xc010b9f1 -c010766e: 68 72 b9 10 c0 push $0xc010b972 -c0107673: 68 b7 00 00 00 push $0xb7 -c0107678: 68 87 b9 10 c0 push $0xc010b987 -c010767d: e8 62 8d ff ff call c01003e4 <__panic> - assert((p2 = alloc_page()) != NULL); -c0107682: 83 ec 0c sub $0xc,%esp -c0107685: 6a 01 push $0x1 -c0107687: e8 03 bf ff ff call c010358f -c010768c: 83 c4 10 add $0x10,%esp -c010768f: 89 45 f4 mov %eax,-0xc(%ebp) -c0107692: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c0107696: 75 19 jne c01076b1 -c0107698: 68 0d ba 10 c0 push $0xc010ba0d -c010769d: 68 72 b9 10 c0 push $0xc010b972 -c01076a2: 68 b8 00 00 00 push $0xb8 -c01076a7: 68 87 b9 10 c0 push $0xc010b987 -c01076ac: e8 33 8d ff ff call c01003e4 <__panic> - - assert(p0 != p1 && p0 != p2 && p1 != p2); -c01076b1: 8b 45 ec mov -0x14(%ebp),%eax -c01076b4: 3b 45 f0 cmp -0x10(%ebp),%eax -c01076b7: 74 10 je c01076c9 -c01076b9: 8b 45 ec mov -0x14(%ebp),%eax -c01076bc: 3b 45 f4 cmp -0xc(%ebp),%eax -c01076bf: 74 08 je c01076c9 -c01076c1: 8b 45 f0 mov -0x10(%ebp),%eax -c01076c4: 3b 45 f4 cmp -0xc(%ebp),%eax -c01076c7: 75 19 jne c01076e2 -c01076c9: 68 2c ba 10 c0 push $0xc010ba2c -c01076ce: 68 72 b9 10 c0 push $0xc010b972 -c01076d3: 68 ba 00 00 00 push $0xba -c01076d8: 68 87 b9 10 c0 push $0xc010b987 -c01076dd: e8 02 8d ff ff call c01003e4 <__panic> - assert(page_ref(p0) == 0 && page_ref(p1) == 0 && page_ref(p2) == 0); -c01076e2: 83 ec 0c sub $0xc,%esp -c01076e5: ff 75 ec pushl -0x14(%ebp) -c01076e8: e8 62 f8 ff ff call c0106f4f -c01076ed: 83 c4 10 add $0x10,%esp -c01076f0: 85 c0 test %eax,%eax -c01076f2: 75 24 jne c0107718 -c01076f4: 83 ec 0c sub $0xc,%esp -c01076f7: ff 75 f0 pushl -0x10(%ebp) -c01076fa: e8 50 f8 ff ff call c0106f4f -c01076ff: 83 c4 10 add $0x10,%esp -c0107702: 85 c0 test %eax,%eax -c0107704: 75 12 jne c0107718 -c0107706: 83 ec 0c sub $0xc,%esp -c0107709: ff 75 f4 pushl -0xc(%ebp) -c010770c: e8 3e f8 ff ff call c0106f4f -c0107711: 83 c4 10 add $0x10,%esp -c0107714: 85 c0 test %eax,%eax -c0107716: 74 19 je c0107731 -c0107718: 68 50 ba 10 c0 push $0xc010ba50 -c010771d: 68 72 b9 10 c0 push $0xc010b972 -c0107722: 68 bb 00 00 00 push $0xbb -c0107727: 68 87 b9 10 c0 push $0xc010b987 -c010772c: e8 b3 8c ff ff call c01003e4 <__panic> - - assert(page2pa(p0) < npage * PGSIZE); -c0107731: 83 ec 0c sub $0xc,%esp -c0107734: ff 75 ec pushl -0x14(%ebp) -c0107737: e8 00 f8 ff ff call c0106f3c -c010773c: 83 c4 10 add $0x10,%esp -c010773f: 89 c2 mov %eax,%edx -c0107741: a1 40 7a 12 c0 mov 0xc0127a40,%eax -c0107746: c1 e0 0c shl $0xc,%eax -c0107749: 39 c2 cmp %eax,%edx -c010774b: 72 19 jb c0107766 -c010774d: 68 8c ba 10 c0 push $0xc010ba8c -c0107752: 68 72 b9 10 c0 push $0xc010b972 -c0107757: 68 bd 00 00 00 push $0xbd -c010775c: 68 87 b9 10 c0 push $0xc010b987 -c0107761: e8 7e 8c ff ff call c01003e4 <__panic> - assert(page2pa(p1) < npage * PGSIZE); -c0107766: 83 ec 0c sub $0xc,%esp -c0107769: ff 75 f0 pushl -0x10(%ebp) -c010776c: e8 cb f7 ff ff call c0106f3c -c0107771: 83 c4 10 add $0x10,%esp -c0107774: 89 c2 mov %eax,%edx -c0107776: a1 40 7a 12 c0 mov 0xc0127a40,%eax -c010777b: c1 e0 0c shl $0xc,%eax -c010777e: 39 c2 cmp %eax,%edx -c0107780: 72 19 jb c010779b -c0107782: 68 a9 ba 10 c0 push $0xc010baa9 -c0107787: 68 72 b9 10 c0 push $0xc010b972 -c010778c: 68 be 00 00 00 push $0xbe -c0107791: 68 87 b9 10 c0 push $0xc010b987 -c0107796: e8 49 8c ff ff call c01003e4 <__panic> - assert(page2pa(p2) < npage * PGSIZE); -c010779b: 83 ec 0c sub $0xc,%esp -c010779e: ff 75 f4 pushl -0xc(%ebp) -c01077a1: e8 96 f7 ff ff call c0106f3c -c01077a6: 83 c4 10 add $0x10,%esp -c01077a9: 89 c2 mov %eax,%edx -c01077ab: a1 40 7a 12 c0 mov 0xc0127a40,%eax -c01077b0: c1 e0 0c shl $0xc,%eax -c01077b3: 39 c2 cmp %eax,%edx -c01077b5: 72 19 jb c01077d0 -c01077b7: 68 c6 ba 10 c0 push $0xc010bac6 -c01077bc: 68 72 b9 10 c0 push $0xc010b972 -c01077c1: 68 bf 00 00 00 push $0xbf -c01077c6: 68 87 b9 10 c0 push $0xc010b987 -c01077cb: e8 14 8c ff ff call c01003e4 <__panic> - - list_entry_t free_list_store = free_list; -c01077d0: a1 0c 9c 12 c0 mov 0xc0129c0c,%eax -c01077d5: 8b 15 10 9c 12 c0 mov 0xc0129c10,%edx -c01077db: 89 45 d0 mov %eax,-0x30(%ebp) -c01077de: 89 55 d4 mov %edx,-0x2c(%ebp) -c01077e1: c7 45 e4 0c 9c 12 c0 movl $0xc0129c0c,-0x1c(%ebp) - * list_init - initialize a new entry - * @elm: new entry to be initialized - * */ -static inline void -list_init(list_entry_t *elm) { - elm->prev = elm->next = elm; -c01077e8: 8b 45 e4 mov -0x1c(%ebp),%eax -c01077eb: 8b 55 e4 mov -0x1c(%ebp),%edx -c01077ee: 89 50 04 mov %edx,0x4(%eax) -c01077f1: 8b 45 e4 mov -0x1c(%ebp),%eax -c01077f4: 8b 50 04 mov 0x4(%eax),%edx -c01077f7: 8b 45 e4 mov -0x1c(%ebp),%eax -c01077fa: 89 10 mov %edx,(%eax) -c01077fc: c7 45 d8 0c 9c 12 c0 movl $0xc0129c0c,-0x28(%ebp) - * list_empty - tests whether a list is empty - * @list: the list to test. - * */ -static inline bool -list_empty(list_entry_t *list) { - return list->next == list; -c0107803: 8b 45 d8 mov -0x28(%ebp),%eax -c0107806: 8b 40 04 mov 0x4(%eax),%eax -c0107809: 39 45 d8 cmp %eax,-0x28(%ebp) -c010780c: 0f 94 c0 sete %al -c010780f: 0f b6 c0 movzbl %al,%eax - list_init(&free_list); - assert(list_empty(&free_list)); -c0107812: 85 c0 test %eax,%eax -c0107814: 75 19 jne c010782f -c0107816: 68 e3 ba 10 c0 push $0xc010bae3 -c010781b: 68 72 b9 10 c0 push $0xc010b972 -c0107820: 68 c3 00 00 00 push $0xc3 -c0107825: 68 87 b9 10 c0 push $0xc010b987 -c010782a: e8 b5 8b ff ff call c01003e4 <__panic> - - unsigned int nr_free_store = nr_free; -c010782f: a1 14 9c 12 c0 mov 0xc0129c14,%eax -c0107834: 89 45 e0 mov %eax,-0x20(%ebp) - nr_free = 0; -c0107837: c7 05 14 9c 12 c0 00 movl $0x0,0xc0129c14 -c010783e: 00 00 00 - - assert(alloc_page() == NULL); -c0107841: 83 ec 0c sub $0xc,%esp -c0107844: 6a 01 push $0x1 -c0107846: e8 44 bd ff ff call c010358f -c010784b: 83 c4 10 add $0x10,%esp -c010784e: 85 c0 test %eax,%eax -c0107850: 74 19 je c010786b -c0107852: 68 fa ba 10 c0 push $0xc010bafa -c0107857: 68 72 b9 10 c0 push $0xc010b972 -c010785c: 68 c8 00 00 00 push $0xc8 -c0107861: 68 87 b9 10 c0 push $0xc010b987 -c0107866: e8 79 8b ff ff call c01003e4 <__panic> - - free_page(p0); -c010786b: 83 ec 08 sub $0x8,%esp -c010786e: 6a 01 push $0x1 -c0107870: ff 75 ec pushl -0x14(%ebp) -c0107873: e8 83 bd ff ff call c01035fb -c0107878: 83 c4 10 add $0x10,%esp - free_page(p1); -c010787b: 83 ec 08 sub $0x8,%esp -c010787e: 6a 01 push $0x1 -c0107880: ff 75 f0 pushl -0x10(%ebp) -c0107883: e8 73 bd ff ff call c01035fb -c0107888: 83 c4 10 add $0x10,%esp - free_page(p2); -c010788b: 83 ec 08 sub $0x8,%esp -c010788e: 6a 01 push $0x1 -c0107890: ff 75 f4 pushl -0xc(%ebp) -c0107893: e8 63 bd ff ff call c01035fb -c0107898: 83 c4 10 add $0x10,%esp - assert(nr_free == 3); -c010789b: a1 14 9c 12 c0 mov 0xc0129c14,%eax -c01078a0: 83 f8 03 cmp $0x3,%eax -c01078a3: 74 19 je c01078be -c01078a5: 68 0f bb 10 c0 push $0xc010bb0f -c01078aa: 68 72 b9 10 c0 push $0xc010b972 -c01078af: 68 cd 00 00 00 push $0xcd -c01078b4: 68 87 b9 10 c0 push $0xc010b987 -c01078b9: e8 26 8b ff ff call c01003e4 <__panic> - - assert((p0 = alloc_page()) != NULL); -c01078be: 83 ec 0c sub $0xc,%esp -c01078c1: 6a 01 push $0x1 -c01078c3: e8 c7 bc ff ff call c010358f -c01078c8: 83 c4 10 add $0x10,%esp -c01078cb: 89 45 ec mov %eax,-0x14(%ebp) -c01078ce: 83 7d ec 00 cmpl $0x0,-0x14(%ebp) -c01078d2: 75 19 jne c01078ed -c01078d4: 68 d5 b9 10 c0 push $0xc010b9d5 -c01078d9: 68 72 b9 10 c0 push $0xc010b972 -c01078de: 68 cf 00 00 00 push $0xcf -c01078e3: 68 87 b9 10 c0 push $0xc010b987 -c01078e8: e8 f7 8a ff ff call c01003e4 <__panic> - assert((p1 = alloc_page()) != NULL); -c01078ed: 83 ec 0c sub $0xc,%esp -c01078f0: 6a 01 push $0x1 -c01078f2: e8 98 bc ff ff call c010358f -c01078f7: 83 c4 10 add $0x10,%esp -c01078fa: 89 45 f0 mov %eax,-0x10(%ebp) -c01078fd: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) -c0107901: 75 19 jne c010791c -c0107903: 68 f1 b9 10 c0 push $0xc010b9f1 -c0107908: 68 72 b9 10 c0 push $0xc010b972 -c010790d: 68 d0 00 00 00 push $0xd0 -c0107912: 68 87 b9 10 c0 push $0xc010b987 -c0107917: e8 c8 8a ff ff call c01003e4 <__panic> - assert((p2 = alloc_page()) != NULL); -c010791c: 83 ec 0c sub $0xc,%esp -c010791f: 6a 01 push $0x1 -c0107921: e8 69 bc ff ff call c010358f -c0107926: 83 c4 10 add $0x10,%esp -c0107929: 89 45 f4 mov %eax,-0xc(%ebp) -c010792c: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c0107930: 75 19 jne c010794b -c0107932: 68 0d ba 10 c0 push $0xc010ba0d -c0107937: 68 72 b9 10 c0 push $0xc010b972 -c010793c: 68 d1 00 00 00 push $0xd1 -c0107941: 68 87 b9 10 c0 push $0xc010b987 -c0107946: e8 99 8a ff ff call c01003e4 <__panic> - - assert(alloc_page() == NULL); -c010794b: 83 ec 0c sub $0xc,%esp -c010794e: 6a 01 push $0x1 -c0107950: e8 3a bc ff ff call c010358f -c0107955: 83 c4 10 add $0x10,%esp -c0107958: 85 c0 test %eax,%eax -c010795a: 74 19 je c0107975 -c010795c: 68 fa ba 10 c0 push $0xc010bafa -c0107961: 68 72 b9 10 c0 push $0xc010b972 -c0107966: 68 d3 00 00 00 push $0xd3 -c010796b: 68 87 b9 10 c0 push $0xc010b987 -c0107970: e8 6f 8a ff ff call c01003e4 <__panic> - - free_page(p0); -c0107975: 83 ec 08 sub $0x8,%esp -c0107978: 6a 01 push $0x1 -c010797a: ff 75 ec pushl -0x14(%ebp) -c010797d: e8 79 bc ff ff call c01035fb -c0107982: 83 c4 10 add $0x10,%esp -c0107985: c7 45 e8 0c 9c 12 c0 movl $0xc0129c0c,-0x18(%ebp) -c010798c: 8b 45 e8 mov -0x18(%ebp),%eax -c010798f: 8b 40 04 mov 0x4(%eax),%eax -c0107992: 39 45 e8 cmp %eax,-0x18(%ebp) -c0107995: 0f 94 c0 sete %al -c0107998: 0f b6 c0 movzbl %al,%eax - assert(!list_empty(&free_list)); -c010799b: 85 c0 test %eax,%eax -c010799d: 74 19 je c01079b8 -c010799f: 68 1c bb 10 c0 push $0xc010bb1c -c01079a4: 68 72 b9 10 c0 push $0xc010b972 -c01079a9: 68 d6 00 00 00 push $0xd6 -c01079ae: 68 87 b9 10 c0 push $0xc010b987 -c01079b3: e8 2c 8a ff ff call c01003e4 <__panic> - - struct Page *p; - assert((p = alloc_page()) == p0); -c01079b8: 83 ec 0c sub $0xc,%esp -c01079bb: 6a 01 push $0x1 -c01079bd: e8 cd bb ff ff call c010358f -c01079c2: 83 c4 10 add $0x10,%esp -c01079c5: 89 45 dc mov %eax,-0x24(%ebp) -c01079c8: 8b 45 dc mov -0x24(%ebp),%eax -c01079cb: 3b 45 ec cmp -0x14(%ebp),%eax -c01079ce: 74 19 je c01079e9 -c01079d0: 68 34 bb 10 c0 push $0xc010bb34 -c01079d5: 68 72 b9 10 c0 push $0xc010b972 -c01079da: 68 d9 00 00 00 push $0xd9 -c01079df: 68 87 b9 10 c0 push $0xc010b987 -c01079e4: e8 fb 89 ff ff call c01003e4 <__panic> - assert(alloc_page() == NULL); -c01079e9: 83 ec 0c sub $0xc,%esp -c01079ec: 6a 01 push $0x1 -c01079ee: e8 9c bb ff ff call c010358f -c01079f3: 83 c4 10 add $0x10,%esp -c01079f6: 85 c0 test %eax,%eax -c01079f8: 74 19 je c0107a13 -c01079fa: 68 fa ba 10 c0 push $0xc010bafa -c01079ff: 68 72 b9 10 c0 push $0xc010b972 -c0107a04: 68 da 00 00 00 push $0xda -c0107a09: 68 87 b9 10 c0 push $0xc010b987 -c0107a0e: e8 d1 89 ff ff call c01003e4 <__panic> - - assert(nr_free == 0); -c0107a13: a1 14 9c 12 c0 mov 0xc0129c14,%eax -c0107a18: 85 c0 test %eax,%eax -c0107a1a: 74 19 je c0107a35 -c0107a1c: 68 4d bb 10 c0 push $0xc010bb4d -c0107a21: 68 72 b9 10 c0 push $0xc010b972 -c0107a26: 68 dc 00 00 00 push $0xdc -c0107a2b: 68 87 b9 10 c0 push $0xc010b987 -c0107a30: e8 af 89 ff ff call c01003e4 <__panic> - free_list = free_list_store; -c0107a35: 8b 45 d0 mov -0x30(%ebp),%eax -c0107a38: 8b 55 d4 mov -0x2c(%ebp),%edx -c0107a3b: a3 0c 9c 12 c0 mov %eax,0xc0129c0c -c0107a40: 89 15 10 9c 12 c0 mov %edx,0xc0129c10 - nr_free = nr_free_store; -c0107a46: 8b 45 e0 mov -0x20(%ebp),%eax -c0107a49: a3 14 9c 12 c0 mov %eax,0xc0129c14 - - free_page(p); -c0107a4e: 83 ec 08 sub $0x8,%esp -c0107a51: 6a 01 push $0x1 -c0107a53: ff 75 dc pushl -0x24(%ebp) -c0107a56: e8 a0 bb ff ff call c01035fb -c0107a5b: 83 c4 10 add $0x10,%esp - free_page(p1); -c0107a5e: 83 ec 08 sub $0x8,%esp -c0107a61: 6a 01 push $0x1 -c0107a63: ff 75 f0 pushl -0x10(%ebp) -c0107a66: e8 90 bb ff ff call c01035fb -c0107a6b: 83 c4 10 add $0x10,%esp - free_page(p2); -c0107a6e: 83 ec 08 sub $0x8,%esp -c0107a71: 6a 01 push $0x1 -c0107a73: ff 75 f4 pushl -0xc(%ebp) -c0107a76: e8 80 bb ff ff call c01035fb -c0107a7b: 83 c4 10 add $0x10,%esp -} -c0107a7e: 90 nop -c0107a7f: c9 leave -c0107a80: c3 ret - -c0107a81 : - -// LAB2: below code is used to check the first fit allocation algorithm (your EXERCISE 1) -// NOTICE: You SHOULD NOT CHANGE basic_check, default_check functions! -static void -default_check(void) { -c0107a81: 55 push %ebp -c0107a82: 89 e5 mov %esp,%ebp -c0107a84: 81 ec 88 00 00 00 sub $0x88,%esp - int count = 0, total = 0; -c0107a8a: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) -c0107a91: c7 45 f0 00 00 00 00 movl $0x0,-0x10(%ebp) - list_entry_t *le = &free_list; -c0107a98: c7 45 ec 0c 9c 12 c0 movl $0xc0129c0c,-0x14(%ebp) - while ((le = list_next(le)) != &free_list) { -c0107a9f: eb 60 jmp c0107b01 - struct Page *p = le2page(le, page_link); -c0107aa1: 8b 45 ec mov -0x14(%ebp),%eax -c0107aa4: 83 e8 0c sub $0xc,%eax -c0107aa7: 89 45 e4 mov %eax,-0x1c(%ebp) - assert(PageProperty(p)); -c0107aaa: 8b 45 e4 mov -0x1c(%ebp),%eax -c0107aad: 83 c0 04 add $0x4,%eax -c0107ab0: c7 45 b0 01 00 00 00 movl $0x1,-0x50(%ebp) -c0107ab7: 89 45 ac mov %eax,-0x54(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); -c0107aba: 8b 45 ac mov -0x54(%ebp),%eax -c0107abd: 8b 55 b0 mov -0x50(%ebp),%edx -c0107ac0: 0f a3 10 bt %edx,(%eax) -c0107ac3: 19 c0 sbb %eax,%eax -c0107ac5: 89 45 a8 mov %eax,-0x58(%ebp) - return oldbit != 0; -c0107ac8: 83 7d a8 00 cmpl $0x0,-0x58(%ebp) -c0107acc: 0f 95 c0 setne %al -c0107acf: 0f b6 c0 movzbl %al,%eax -c0107ad2: 85 c0 test %eax,%eax -c0107ad4: 75 19 jne c0107aef -c0107ad6: 68 5a bb 10 c0 push $0xc010bb5a -c0107adb: 68 72 b9 10 c0 push $0xc010b972 -c0107ae0: 68 ed 00 00 00 push $0xed -c0107ae5: 68 87 b9 10 c0 push $0xc010b987 -c0107aea: e8 f5 88 ff ff call c01003e4 <__panic> - count ++, total += p->property; -c0107aef: 83 45 f4 01 addl $0x1,-0xc(%ebp) -c0107af3: 8b 45 e4 mov -0x1c(%ebp),%eax -c0107af6: 8b 50 08 mov 0x8(%eax),%edx -c0107af9: 8b 45 f0 mov -0x10(%ebp),%eax -c0107afc: 01 d0 add %edx,%eax -c0107afe: 89 45 f0 mov %eax,-0x10(%ebp) -c0107b01: 8b 45 ec mov -0x14(%ebp),%eax -c0107b04: 89 45 e0 mov %eax,-0x20(%ebp) - * list_next - get the next entry - * @listelm: the list head - **/ -static inline list_entry_t * -list_next(list_entry_t *listelm) { - return listelm->next; -c0107b07: 8b 45 e0 mov -0x20(%ebp),%eax -c0107b0a: 8b 40 04 mov 0x4(%eax),%eax -// NOTICE: You SHOULD NOT CHANGE basic_check, default_check functions! -static void -default_check(void) { - int count = 0, total = 0; - list_entry_t *le = &free_list; - while ((le = list_next(le)) != &free_list) { -c0107b0d: 89 45 ec mov %eax,-0x14(%ebp) -c0107b10: 81 7d ec 0c 9c 12 c0 cmpl $0xc0129c0c,-0x14(%ebp) -c0107b17: 75 88 jne c0107aa1 - struct Page *p = le2page(le, page_link); - assert(PageProperty(p)); - count ++, total += p->property; - } - assert(total == nr_free_pages()); -c0107b19: e8 12 bb ff ff call c0103630 -c0107b1e: 89 c2 mov %eax,%edx -c0107b20: 8b 45 f0 mov -0x10(%ebp),%eax -c0107b23: 39 c2 cmp %eax,%edx -c0107b25: 74 19 je c0107b40 -c0107b27: 68 6a bb 10 c0 push $0xc010bb6a -c0107b2c: 68 72 b9 10 c0 push $0xc010b972 -c0107b31: 68 f0 00 00 00 push $0xf0 -c0107b36: 68 87 b9 10 c0 push $0xc010b987 -c0107b3b: e8 a4 88 ff ff call c01003e4 <__panic> - - basic_check(); -c0107b40: e8 c6 fa ff ff call c010760b - - struct Page *p0 = alloc_pages(5), *p1, *p2; -c0107b45: 83 ec 0c sub $0xc,%esp -c0107b48: 6a 05 push $0x5 -c0107b4a: e8 40 ba ff ff call c010358f -c0107b4f: 83 c4 10 add $0x10,%esp -c0107b52: 89 45 dc mov %eax,-0x24(%ebp) - assert(p0 != NULL); -c0107b55: 83 7d dc 00 cmpl $0x0,-0x24(%ebp) -c0107b59: 75 19 jne c0107b74 -c0107b5b: 68 83 bb 10 c0 push $0xc010bb83 -c0107b60: 68 72 b9 10 c0 push $0xc010b972 -c0107b65: 68 f5 00 00 00 push $0xf5 -c0107b6a: 68 87 b9 10 c0 push $0xc010b987 -c0107b6f: e8 70 88 ff ff call c01003e4 <__panic> - assert(!PageProperty(p0)); -c0107b74: 8b 45 dc mov -0x24(%ebp),%eax -c0107b77: 83 c0 04 add $0x4,%eax -c0107b7a: c7 45 e8 01 00 00 00 movl $0x1,-0x18(%ebp) -c0107b81: 89 45 a4 mov %eax,-0x5c(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); -c0107b84: 8b 45 a4 mov -0x5c(%ebp),%eax -c0107b87: 8b 55 e8 mov -0x18(%ebp),%edx -c0107b8a: 0f a3 10 bt %edx,(%eax) -c0107b8d: 19 c0 sbb %eax,%eax -c0107b8f: 89 45 a0 mov %eax,-0x60(%ebp) - return oldbit != 0; -c0107b92: 83 7d a0 00 cmpl $0x0,-0x60(%ebp) -c0107b96: 0f 95 c0 setne %al -c0107b99: 0f b6 c0 movzbl %al,%eax -c0107b9c: 85 c0 test %eax,%eax -c0107b9e: 74 19 je c0107bb9 -c0107ba0: 68 8e bb 10 c0 push $0xc010bb8e -c0107ba5: 68 72 b9 10 c0 push $0xc010b972 -c0107baa: 68 f6 00 00 00 push $0xf6 -c0107baf: 68 87 b9 10 c0 push $0xc010b987 -c0107bb4: e8 2b 88 ff ff call c01003e4 <__panic> - - list_entry_t free_list_store = free_list; -c0107bb9: a1 0c 9c 12 c0 mov 0xc0129c0c,%eax -c0107bbe: 8b 15 10 9c 12 c0 mov 0xc0129c10,%edx -c0107bc4: 89 45 80 mov %eax,-0x80(%ebp) -c0107bc7: 89 55 84 mov %edx,-0x7c(%ebp) -c0107bca: c7 45 d0 0c 9c 12 c0 movl $0xc0129c0c,-0x30(%ebp) - * list_init - initialize a new entry - * @elm: new entry to be initialized - * */ -static inline void -list_init(list_entry_t *elm) { - elm->prev = elm->next = elm; -c0107bd1: 8b 45 d0 mov -0x30(%ebp),%eax -c0107bd4: 8b 55 d0 mov -0x30(%ebp),%edx -c0107bd7: 89 50 04 mov %edx,0x4(%eax) -c0107bda: 8b 45 d0 mov -0x30(%ebp),%eax -c0107bdd: 8b 50 04 mov 0x4(%eax),%edx -c0107be0: 8b 45 d0 mov -0x30(%ebp),%eax -c0107be3: 89 10 mov %edx,(%eax) -c0107be5: c7 45 d8 0c 9c 12 c0 movl $0xc0129c0c,-0x28(%ebp) - * list_empty - tests whether a list is empty - * @list: the list to test. - * */ -static inline bool -list_empty(list_entry_t *list) { - return list->next == list; -c0107bec: 8b 45 d8 mov -0x28(%ebp),%eax -c0107bef: 8b 40 04 mov 0x4(%eax),%eax -c0107bf2: 39 45 d8 cmp %eax,-0x28(%ebp) -c0107bf5: 0f 94 c0 sete %al -c0107bf8: 0f b6 c0 movzbl %al,%eax - list_init(&free_list); - assert(list_empty(&free_list)); -c0107bfb: 85 c0 test %eax,%eax -c0107bfd: 75 19 jne c0107c18 -c0107bff: 68 e3 ba 10 c0 push $0xc010bae3 -c0107c04: 68 72 b9 10 c0 push $0xc010b972 -c0107c09: 68 fa 00 00 00 push $0xfa -c0107c0e: 68 87 b9 10 c0 push $0xc010b987 -c0107c13: e8 cc 87 ff ff call c01003e4 <__panic> - assert(alloc_page() == NULL); -c0107c18: 83 ec 0c sub $0xc,%esp -c0107c1b: 6a 01 push $0x1 -c0107c1d: e8 6d b9 ff ff call c010358f -c0107c22: 83 c4 10 add $0x10,%esp -c0107c25: 85 c0 test %eax,%eax -c0107c27: 74 19 je c0107c42 -c0107c29: 68 fa ba 10 c0 push $0xc010bafa -c0107c2e: 68 72 b9 10 c0 push $0xc010b972 -c0107c33: 68 fb 00 00 00 push $0xfb -c0107c38: 68 87 b9 10 c0 push $0xc010b987 -c0107c3d: e8 a2 87 ff ff call c01003e4 <__panic> - - unsigned int nr_free_store = nr_free; -c0107c42: a1 14 9c 12 c0 mov 0xc0129c14,%eax -c0107c47: 89 45 cc mov %eax,-0x34(%ebp) - nr_free = 0; -c0107c4a: c7 05 14 9c 12 c0 00 movl $0x0,0xc0129c14 -c0107c51: 00 00 00 - - free_pages(p0 + 2, 3); -c0107c54: 8b 45 dc mov -0x24(%ebp),%eax -c0107c57: 83 c0 40 add $0x40,%eax -c0107c5a: 83 ec 08 sub $0x8,%esp -c0107c5d: 6a 03 push $0x3 -c0107c5f: 50 push %eax -c0107c60: e8 96 b9 ff ff call c01035fb -c0107c65: 83 c4 10 add $0x10,%esp - assert(alloc_pages(4) == NULL); -c0107c68: 83 ec 0c sub $0xc,%esp -c0107c6b: 6a 04 push $0x4 -c0107c6d: e8 1d b9 ff ff call c010358f -c0107c72: 83 c4 10 add $0x10,%esp -c0107c75: 85 c0 test %eax,%eax -c0107c77: 74 19 je c0107c92 -c0107c79: 68 a0 bb 10 c0 push $0xc010bba0 -c0107c7e: 68 72 b9 10 c0 push $0xc010b972 -c0107c83: 68 01 01 00 00 push $0x101 -c0107c88: 68 87 b9 10 c0 push $0xc010b987 -c0107c8d: e8 52 87 ff ff call c01003e4 <__panic> - assert(PageProperty(p0 + 2) && p0[2].property == 3); -c0107c92: 8b 45 dc mov -0x24(%ebp),%eax -c0107c95: 83 c0 40 add $0x40,%eax -c0107c98: 83 c0 04 add $0x4,%eax -c0107c9b: c7 45 d4 01 00 00 00 movl $0x1,-0x2c(%ebp) -c0107ca2: 89 45 9c mov %eax,-0x64(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); -c0107ca5: 8b 45 9c mov -0x64(%ebp),%eax -c0107ca8: 8b 55 d4 mov -0x2c(%ebp),%edx -c0107cab: 0f a3 10 bt %edx,(%eax) -c0107cae: 19 c0 sbb %eax,%eax -c0107cb0: 89 45 98 mov %eax,-0x68(%ebp) - return oldbit != 0; -c0107cb3: 83 7d 98 00 cmpl $0x0,-0x68(%ebp) -c0107cb7: 0f 95 c0 setne %al -c0107cba: 0f b6 c0 movzbl %al,%eax -c0107cbd: 85 c0 test %eax,%eax -c0107cbf: 74 0e je c0107ccf -c0107cc1: 8b 45 dc mov -0x24(%ebp),%eax -c0107cc4: 83 c0 40 add $0x40,%eax -c0107cc7: 8b 40 08 mov 0x8(%eax),%eax -c0107cca: 83 f8 03 cmp $0x3,%eax -c0107ccd: 74 19 je c0107ce8 -c0107ccf: 68 b8 bb 10 c0 push $0xc010bbb8 -c0107cd4: 68 72 b9 10 c0 push $0xc010b972 -c0107cd9: 68 02 01 00 00 push $0x102 -c0107cde: 68 87 b9 10 c0 push $0xc010b987 -c0107ce3: e8 fc 86 ff ff call c01003e4 <__panic> - assert((p1 = alloc_pages(3)) != NULL); -c0107ce8: 83 ec 0c sub $0xc,%esp -c0107ceb: 6a 03 push $0x3 -c0107ced: e8 9d b8 ff ff call c010358f -c0107cf2: 83 c4 10 add $0x10,%esp -c0107cf5: 89 45 c4 mov %eax,-0x3c(%ebp) -c0107cf8: 83 7d c4 00 cmpl $0x0,-0x3c(%ebp) -c0107cfc: 75 19 jne c0107d17 -c0107cfe: 68 e4 bb 10 c0 push $0xc010bbe4 -c0107d03: 68 72 b9 10 c0 push $0xc010b972 -c0107d08: 68 03 01 00 00 push $0x103 -c0107d0d: 68 87 b9 10 c0 push $0xc010b987 -c0107d12: e8 cd 86 ff ff call c01003e4 <__panic> - assert(alloc_page() == NULL); -c0107d17: 83 ec 0c sub $0xc,%esp -c0107d1a: 6a 01 push $0x1 -c0107d1c: e8 6e b8 ff ff call c010358f -c0107d21: 83 c4 10 add $0x10,%esp -c0107d24: 85 c0 test %eax,%eax -c0107d26: 74 19 je c0107d41 -c0107d28: 68 fa ba 10 c0 push $0xc010bafa -c0107d2d: 68 72 b9 10 c0 push $0xc010b972 -c0107d32: 68 04 01 00 00 push $0x104 -c0107d37: 68 87 b9 10 c0 push $0xc010b987 -c0107d3c: e8 a3 86 ff ff call c01003e4 <__panic> - assert(p0 + 2 == p1); -c0107d41: 8b 45 dc mov -0x24(%ebp),%eax -c0107d44: 83 c0 40 add $0x40,%eax -c0107d47: 3b 45 c4 cmp -0x3c(%ebp),%eax -c0107d4a: 74 19 je c0107d65 -c0107d4c: 68 02 bc 10 c0 push $0xc010bc02 -c0107d51: 68 72 b9 10 c0 push $0xc010b972 -c0107d56: 68 05 01 00 00 push $0x105 -c0107d5b: 68 87 b9 10 c0 push $0xc010b987 -c0107d60: e8 7f 86 ff ff call c01003e4 <__panic> - - p2 = p0 + 1; -c0107d65: 8b 45 dc mov -0x24(%ebp),%eax -c0107d68: 83 c0 20 add $0x20,%eax -c0107d6b: 89 45 c0 mov %eax,-0x40(%ebp) - free_page(p0); -c0107d6e: 83 ec 08 sub $0x8,%esp -c0107d71: 6a 01 push $0x1 -c0107d73: ff 75 dc pushl -0x24(%ebp) -c0107d76: e8 80 b8 ff ff call c01035fb -c0107d7b: 83 c4 10 add $0x10,%esp - free_pages(p1, 3); -c0107d7e: 83 ec 08 sub $0x8,%esp -c0107d81: 6a 03 push $0x3 -c0107d83: ff 75 c4 pushl -0x3c(%ebp) -c0107d86: e8 70 b8 ff ff call c01035fb -c0107d8b: 83 c4 10 add $0x10,%esp - assert(PageProperty(p0) && p0->property == 1); -c0107d8e: 8b 45 dc mov -0x24(%ebp),%eax -c0107d91: 83 c0 04 add $0x4,%eax -c0107d94: c7 45 c8 01 00 00 00 movl $0x1,-0x38(%ebp) -c0107d9b: 89 45 94 mov %eax,-0x6c(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); -c0107d9e: 8b 45 94 mov -0x6c(%ebp),%eax -c0107da1: 8b 55 c8 mov -0x38(%ebp),%edx -c0107da4: 0f a3 10 bt %edx,(%eax) -c0107da7: 19 c0 sbb %eax,%eax -c0107da9: 89 45 90 mov %eax,-0x70(%ebp) - return oldbit != 0; -c0107dac: 83 7d 90 00 cmpl $0x0,-0x70(%ebp) -c0107db0: 0f 95 c0 setne %al -c0107db3: 0f b6 c0 movzbl %al,%eax -c0107db6: 85 c0 test %eax,%eax -c0107db8: 74 0b je c0107dc5 -c0107dba: 8b 45 dc mov -0x24(%ebp),%eax -c0107dbd: 8b 40 08 mov 0x8(%eax),%eax -c0107dc0: 83 f8 01 cmp $0x1,%eax -c0107dc3: 74 19 je c0107dde -c0107dc5: 68 10 bc 10 c0 push $0xc010bc10 -c0107dca: 68 72 b9 10 c0 push $0xc010b972 -c0107dcf: 68 0a 01 00 00 push $0x10a -c0107dd4: 68 87 b9 10 c0 push $0xc010b987 -c0107dd9: e8 06 86 ff ff call c01003e4 <__panic> - assert(PageProperty(p1) && p1->property == 3); -c0107dde: 8b 45 c4 mov -0x3c(%ebp),%eax -c0107de1: 83 c0 04 add $0x4,%eax -c0107de4: c7 45 bc 01 00 00 00 movl $0x1,-0x44(%ebp) -c0107deb: 89 45 8c mov %eax,-0x74(%ebp) - * @addr: the address to count from - * */ -static inline bool -test_bit(int nr, volatile void *addr) { - int oldbit; - asm volatile ("btl %2, %1; sbbl %0,%0" : "=r" (oldbit) : "m" (*(volatile long *)addr), "Ir" (nr)); -c0107dee: 8b 45 8c mov -0x74(%ebp),%eax -c0107df1: 8b 55 bc mov -0x44(%ebp),%edx -c0107df4: 0f a3 10 bt %edx,(%eax) -c0107df7: 19 c0 sbb %eax,%eax -c0107df9: 89 45 88 mov %eax,-0x78(%ebp) - return oldbit != 0; -c0107dfc: 83 7d 88 00 cmpl $0x0,-0x78(%ebp) -c0107e00: 0f 95 c0 setne %al -c0107e03: 0f b6 c0 movzbl %al,%eax -c0107e06: 85 c0 test %eax,%eax -c0107e08: 74 0b je c0107e15 -c0107e0a: 8b 45 c4 mov -0x3c(%ebp),%eax -c0107e0d: 8b 40 08 mov 0x8(%eax),%eax -c0107e10: 83 f8 03 cmp $0x3,%eax -c0107e13: 74 19 je c0107e2e -c0107e15: 68 38 bc 10 c0 push $0xc010bc38 -c0107e1a: 68 72 b9 10 c0 push $0xc010b972 -c0107e1f: 68 0b 01 00 00 push $0x10b -c0107e24: 68 87 b9 10 c0 push $0xc010b987 -c0107e29: e8 b6 85 ff ff call c01003e4 <__panic> - - assert((p0 = alloc_page()) == p2 - 1); -c0107e2e: 83 ec 0c sub $0xc,%esp -c0107e31: 6a 01 push $0x1 -c0107e33: e8 57 b7 ff ff call c010358f -c0107e38: 83 c4 10 add $0x10,%esp -c0107e3b: 89 45 dc mov %eax,-0x24(%ebp) -c0107e3e: 8b 45 c0 mov -0x40(%ebp),%eax -c0107e41: 83 e8 20 sub $0x20,%eax -c0107e44: 39 45 dc cmp %eax,-0x24(%ebp) -c0107e47: 74 19 je c0107e62 -c0107e49: 68 5e bc 10 c0 push $0xc010bc5e -c0107e4e: 68 72 b9 10 c0 push $0xc010b972 -c0107e53: 68 0d 01 00 00 push $0x10d -c0107e58: 68 87 b9 10 c0 push $0xc010b987 -c0107e5d: e8 82 85 ff ff call c01003e4 <__panic> - free_page(p0); -c0107e62: 83 ec 08 sub $0x8,%esp -c0107e65: 6a 01 push $0x1 -c0107e67: ff 75 dc pushl -0x24(%ebp) -c0107e6a: e8 8c b7 ff ff call c01035fb -c0107e6f: 83 c4 10 add $0x10,%esp - assert((p0 = alloc_pages(2)) == p2 + 1); -c0107e72: 83 ec 0c sub $0xc,%esp -c0107e75: 6a 02 push $0x2 -c0107e77: e8 13 b7 ff ff call c010358f -c0107e7c: 83 c4 10 add $0x10,%esp -c0107e7f: 89 45 dc mov %eax,-0x24(%ebp) -c0107e82: 8b 45 c0 mov -0x40(%ebp),%eax -c0107e85: 83 c0 20 add $0x20,%eax -c0107e88: 39 45 dc cmp %eax,-0x24(%ebp) -c0107e8b: 74 19 je c0107ea6 -c0107e8d: 68 7c bc 10 c0 push $0xc010bc7c -c0107e92: 68 72 b9 10 c0 push $0xc010b972 -c0107e97: 68 0f 01 00 00 push $0x10f -c0107e9c: 68 87 b9 10 c0 push $0xc010b987 -c0107ea1: e8 3e 85 ff ff call c01003e4 <__panic> - - free_pages(p0, 2); -c0107ea6: 83 ec 08 sub $0x8,%esp -c0107ea9: 6a 02 push $0x2 -c0107eab: ff 75 dc pushl -0x24(%ebp) -c0107eae: e8 48 b7 ff ff call c01035fb -c0107eb3: 83 c4 10 add $0x10,%esp - free_page(p2); -c0107eb6: 83 ec 08 sub $0x8,%esp -c0107eb9: 6a 01 push $0x1 -c0107ebb: ff 75 c0 pushl -0x40(%ebp) -c0107ebe: e8 38 b7 ff ff call c01035fb -c0107ec3: 83 c4 10 add $0x10,%esp - - assert((p0 = alloc_pages(5)) != NULL); -c0107ec6: 83 ec 0c sub $0xc,%esp -c0107ec9: 6a 05 push $0x5 -c0107ecb: e8 bf b6 ff ff call c010358f -c0107ed0: 83 c4 10 add $0x10,%esp -c0107ed3: 89 45 dc mov %eax,-0x24(%ebp) -c0107ed6: 83 7d dc 00 cmpl $0x0,-0x24(%ebp) -c0107eda: 75 19 jne c0107ef5 -c0107edc: 68 9c bc 10 c0 push $0xc010bc9c -c0107ee1: 68 72 b9 10 c0 push $0xc010b972 -c0107ee6: 68 14 01 00 00 push $0x114 -c0107eeb: 68 87 b9 10 c0 push $0xc010b987 -c0107ef0: e8 ef 84 ff ff call c01003e4 <__panic> - assert(alloc_page() == NULL); -c0107ef5: 83 ec 0c sub $0xc,%esp -c0107ef8: 6a 01 push $0x1 -c0107efa: e8 90 b6 ff ff call c010358f -c0107eff: 83 c4 10 add $0x10,%esp -c0107f02: 85 c0 test %eax,%eax -c0107f04: 74 19 je c0107f1f -c0107f06: 68 fa ba 10 c0 push $0xc010bafa -c0107f0b: 68 72 b9 10 c0 push $0xc010b972 -c0107f10: 68 15 01 00 00 push $0x115 -c0107f15: 68 87 b9 10 c0 push $0xc010b987 -c0107f1a: e8 c5 84 ff ff call c01003e4 <__panic> - - assert(nr_free == 0); -c0107f1f: a1 14 9c 12 c0 mov 0xc0129c14,%eax -c0107f24: 85 c0 test %eax,%eax -c0107f26: 74 19 je c0107f41 -c0107f28: 68 4d bb 10 c0 push $0xc010bb4d -c0107f2d: 68 72 b9 10 c0 push $0xc010b972 -c0107f32: 68 17 01 00 00 push $0x117 -c0107f37: 68 87 b9 10 c0 push $0xc010b987 -c0107f3c: e8 a3 84 ff ff call c01003e4 <__panic> - nr_free = nr_free_store; -c0107f41: 8b 45 cc mov -0x34(%ebp),%eax -c0107f44: a3 14 9c 12 c0 mov %eax,0xc0129c14 - - free_list = free_list_store; -c0107f49: 8b 45 80 mov -0x80(%ebp),%eax -c0107f4c: 8b 55 84 mov -0x7c(%ebp),%edx -c0107f4f: a3 0c 9c 12 c0 mov %eax,0xc0129c0c -c0107f54: 89 15 10 9c 12 c0 mov %edx,0xc0129c10 - free_pages(p0, 5); -c0107f5a: 83 ec 08 sub $0x8,%esp -c0107f5d: 6a 05 push $0x5 -c0107f5f: ff 75 dc pushl -0x24(%ebp) -c0107f62: e8 94 b6 ff ff call c01035fb -c0107f67: 83 c4 10 add $0x10,%esp - - le = &free_list; -c0107f6a: c7 45 ec 0c 9c 12 c0 movl $0xc0129c0c,-0x14(%ebp) - while ((le = list_next(le)) != &free_list) { -c0107f71: eb 1d jmp c0107f90 - struct Page *p = le2page(le, page_link); -c0107f73: 8b 45 ec mov -0x14(%ebp),%eax -c0107f76: 83 e8 0c sub $0xc,%eax -c0107f79: 89 45 b4 mov %eax,-0x4c(%ebp) - count --, total -= p->property; -c0107f7c: 83 6d f4 01 subl $0x1,-0xc(%ebp) -c0107f80: 8b 55 f0 mov -0x10(%ebp),%edx -c0107f83: 8b 45 b4 mov -0x4c(%ebp),%eax -c0107f86: 8b 40 08 mov 0x8(%eax),%eax -c0107f89: 29 c2 sub %eax,%edx -c0107f8b: 89 d0 mov %edx,%eax -c0107f8d: 89 45 f0 mov %eax,-0x10(%ebp) -c0107f90: 8b 45 ec mov -0x14(%ebp),%eax -c0107f93: 89 45 b8 mov %eax,-0x48(%ebp) - * list_next - get the next entry - * @listelm: the list head - **/ -static inline list_entry_t * -list_next(list_entry_t *listelm) { - return listelm->next; -c0107f96: 8b 45 b8 mov -0x48(%ebp),%eax -c0107f99: 8b 40 04 mov 0x4(%eax),%eax - - free_list = free_list_store; - free_pages(p0, 5); - - le = &free_list; - while ((le = list_next(le)) != &free_list) { -c0107f9c: 89 45 ec mov %eax,-0x14(%ebp) -c0107f9f: 81 7d ec 0c 9c 12 c0 cmpl $0xc0129c0c,-0x14(%ebp) -c0107fa6: 75 cb jne c0107f73 - struct Page *p = le2page(le, page_link); - count --, total -= p->property; - } - assert(count == 0); -c0107fa8: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c0107fac: 74 19 je c0107fc7 -c0107fae: 68 ba bc 10 c0 push $0xc010bcba -c0107fb3: 68 72 b9 10 c0 push $0xc010b972 -c0107fb8: 68 22 01 00 00 push $0x122 -c0107fbd: 68 87 b9 10 c0 push $0xc010b987 -c0107fc2: e8 1d 84 ff ff call c01003e4 <__panic> - assert(total == 0); -c0107fc7: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) -c0107fcb: 74 19 je c0107fe6 -c0107fcd: 68 c5 bc 10 c0 push $0xc010bcc5 -c0107fd2: 68 72 b9 10 c0 push $0xc010b972 -c0107fd7: 68 23 01 00 00 push $0x123 -c0107fdc: 68 87 b9 10 c0 push $0xc010b987 -c0107fe1: e8 fe 83 ff ff call c01003e4 <__panic> -} -c0107fe6: 90 nop -c0107fe7: c9 leave -c0107fe8: c3 ret - -c0107fe9 <_clock_init_mm>: - * (2) _clock_init_mm: Build list. - * The sm_priv is used for circular clock pointer - */ -static int -_clock_init_mm(struct mm_struct *mm) -{ -c0107fe9: 55 push %ebp -c0107fea: 89 e5 mov %esp,%ebp -c0107fec: 83 ec 10 sub $0x10,%esp -c0107fef: c7 45 fc 1c 9c 12 c0 movl $0xc0129c1c,-0x4(%ebp) - * list_init - initialize a new entry - * @elm: new entry to be initialized - * */ -static inline void -list_init(list_entry_t *elm) { - elm->prev = elm->next = elm; -c0107ff6: 8b 45 fc mov -0x4(%ebp),%eax -c0107ff9: 8b 55 fc mov -0x4(%ebp),%edx -c0107ffc: 89 50 04 mov %edx,0x4(%eax) -c0107fff: 8b 45 fc mov -0x4(%ebp),%eax -c0108002: 8b 50 04 mov 0x4(%eax),%edx -c0108005: 8b 45 fc mov -0x4(%ebp),%eax -c0108008: 89 10 mov %edx,(%eax) - list_init(&clock_list_head); - mm->sm_priv = &clock_list_head; -c010800a: 8b 45 08 mov 0x8(%ebp),%eax -c010800d: c7 40 14 1c 9c 12 c0 movl $0xc0129c1c,0x14(%eax) - current_clock_pointer = &clock_list_head; -c0108014: c7 05 18 9c 12 c0 1c movl $0xc0129c1c,0xc0129c18 -c010801b: 9c 12 c0 - return 0; -c010801e: b8 00 00 00 00 mov $0x0,%eax -} -c0108023: c9 leave -c0108024: c3 ret - -c0108025 <_clock_map_swappable>: - * (3)_clock_map_swappable: Just add the Page to the clock circle. - * CPU will automatically update PTE based on memory access. - */ -static int -_clock_map_swappable(struct mm_struct *mm, uintptr_t addr, struct Page *page, int swap_in) -{ -c0108025: 55 push %ebp -c0108026: 89 e5 mov %esp,%ebp -c0108028: 83 ec 28 sub $0x28,%esp - list_entry_t *head=(list_entry_t*) mm->sm_priv; -c010802b: 8b 45 08 mov 0x8(%ebp),%eax -c010802e: 8b 40 14 mov 0x14(%eax),%eax -c0108031: 89 45 f4 mov %eax,-0xc(%ebp) - list_entry_t *entry=&(page->pra_page_link); -c0108034: 8b 45 10 mov 0x10(%ebp),%eax -c0108037: 83 c0 14 add $0x14,%eax -c010803a: 89 45 f0 mov %eax,-0x10(%ebp) - - assert(entry != NULL && head != NULL); -c010803d: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) -c0108041: 74 06 je c0108049 <_clock_map_swappable+0x24> -c0108043: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c0108047: 75 16 jne c010805f <_clock_map_swappable+0x3a> -c0108049: 68 00 bd 10 c0 push $0xc010bd00 -c010804e: 68 1e bd 10 c0 push $0xc010bd1e -c0108053: 6a 29 push $0x29 -c0108055: 68 33 bd 10 c0 push $0xc010bd33 -c010805a: e8 85 83 ff ff call c01003e4 <__panic> - list_add_before(current_clock_pointer, entry); -c010805f: a1 18 9c 12 c0 mov 0xc0129c18,%eax -c0108064: 89 45 ec mov %eax,-0x14(%ebp) -c0108067: 8b 45 f0 mov -0x10(%ebp),%eax -c010806a: 89 45 e8 mov %eax,-0x18(%ebp) - * Insert the new element @elm *before* the element @listelm which - * is already in the list. - * */ -static inline void -list_add_before(list_entry_t *listelm, list_entry_t *elm) { - __list_add(elm, listelm->prev, listelm); -c010806d: 8b 45 ec mov -0x14(%ebp),%eax -c0108070: 8b 00 mov (%eax),%eax -c0108072: 8b 55 e8 mov -0x18(%ebp),%edx -c0108075: 89 55 e4 mov %edx,-0x1c(%ebp) -c0108078: 89 45 e0 mov %eax,-0x20(%ebp) -c010807b: 8b 45 ec mov -0x14(%ebp),%eax -c010807e: 89 45 dc mov %eax,-0x24(%ebp) - * This is only for internal list manipulation where we know - * the prev/next entries already! - * */ -static inline void -__list_add(list_entry_t *elm, list_entry_t *prev, list_entry_t *next) { - prev->next = next->prev = elm; -c0108081: 8b 45 dc mov -0x24(%ebp),%eax -c0108084: 8b 55 e4 mov -0x1c(%ebp),%edx -c0108087: 89 10 mov %edx,(%eax) -c0108089: 8b 45 dc mov -0x24(%ebp),%eax -c010808c: 8b 10 mov (%eax),%edx -c010808e: 8b 45 e0 mov -0x20(%ebp),%eax -c0108091: 89 50 04 mov %edx,0x4(%eax) - elm->next = next; -c0108094: 8b 45 e4 mov -0x1c(%ebp),%eax -c0108097: 8b 55 dc mov -0x24(%ebp),%edx -c010809a: 89 50 04 mov %edx,0x4(%eax) - elm->prev = prev; -c010809d: 8b 45 e4 mov -0x1c(%ebp),%eax -c01080a0: 8b 55 e0 mov -0x20(%ebp),%edx -c01080a3: 89 10 mov %edx,(%eax) - // current_clock_pointer = entry; - return 0; -c01080a5: b8 00 00 00 00 mov $0x0,%eax -} -c01080aa: c9 leave -c01080ab: c3 ret - -c01080ac <_clock_swap_out_victim>: - * Check the list circularly, get the pte of each Page and modify them, - * Loop until find a page whose bits are both 0. Then return the page. - */ -static int -_clock_swap_out_victim(struct mm_struct *mm, struct Page ** ptr_page, int in_tick) -{ -c01080ac: 55 push %ebp -c01080ad: 89 e5 mov %esp,%ebp -c01080af: 83 ec 28 sub $0x28,%esp - list_entry_t *head = (list_entry_t*) mm->sm_priv; -c01080b2: 8b 45 08 mov 0x8(%ebp),%eax -c01080b5: 8b 40 14 mov 0x14(%eax),%eax -c01080b8: 89 45 f4 mov %eax,-0xc(%ebp) - assert(head->next != head); -c01080bb: 8b 45 f4 mov -0xc(%ebp),%eax -c01080be: 8b 40 04 mov 0x4(%eax),%eax -c01080c1: 3b 45 f4 cmp -0xc(%ebp),%eax -c01080c4: 75 16 jne c01080dc <_clock_swap_out_victim+0x30> -c01080c6: 68 48 bd 10 c0 push $0xc010bd48 -c01080cb: 68 1e bd 10 c0 push $0xc010bd1e -c01080d0: 6a 39 push $0x39 -c01080d2: 68 33 bd 10 c0 push $0xc010bd33 -c01080d7: e8 08 83 ff ff call c01003e4 <__panic> - pte_t* current_pte = NULL; -c01080dc: c7 45 f0 00 00 00 00 movl $0x0,-0x10(%ebp) - struct Page* current_page = NULL; -c01080e3: c7 45 ec 00 00 00 00 movl $0x0,-0x14(%ebp) - if (current_clock_pointer == head) { -c01080ea: a1 18 9c 12 c0 mov 0xc0129c18,%eax -c01080ef: 3b 45 f4 cmp -0xc(%ebp),%eax -c01080f2: 75 0d jne c0108101 <_clock_swap_out_victim+0x55> - current_clock_pointer = current_clock_pointer->next; -c01080f4: a1 18 9c 12 c0 mov 0xc0129c18,%eax -c01080f9: 8b 40 04 mov 0x4(%eax),%eax -c01080fc: a3 18 9c 12 c0 mov %eax,0xc0129c18 - } - while (1) { - // Get current pointer's PTE. - // If it is 00, then swap, else change and move next. - current_page = le2page(current_clock_pointer, pra_page_link); -c0108101: a1 18 9c 12 c0 mov 0xc0129c18,%eax -c0108106: 83 e8 14 sub $0x14,%eax -c0108109: 89 45 ec mov %eax,-0x14(%ebp) - current_pte = get_pte(mm->pgdir, current_page->pra_vaddr, 0); -c010810c: 8b 45 ec mov -0x14(%ebp),%eax -c010810f: 8b 50 1c mov 0x1c(%eax),%edx -c0108112: 8b 45 08 mov 0x8(%ebp),%eax -c0108115: 8b 40 0c mov 0xc(%eax),%eax -c0108118: 83 ec 04 sub $0x4,%esp -c010811b: 6a 00 push $0x0 -c010811d: 52 push %edx -c010811e: 50 push %eax -c010811f: e8 56 bb ff ff call c0103c7a -c0108124: 83 c4 10 add $0x10,%esp -c0108127: 89 45 f0 mov %eax,-0x10(%ebp) - assert(current_pte != NULL); -c010812a: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) -c010812e: 75 16 jne c0108146 <_clock_swap_out_victim+0x9a> -c0108130: 68 5b bd 10 c0 push $0xc010bd5b -c0108135: 68 1e bd 10 c0 push $0xc010bd1e -c010813a: 6a 44 push $0x44 -c010813c: 68 33 bd 10 c0 push $0xc010bd33 -c0108141: e8 9e 82 ff ff call c01003e4 <__panic> - int accessed = (((*current_pte) & PTE_A) != 0); -c0108146: 8b 45 f0 mov -0x10(%ebp),%eax -c0108149: 8b 00 mov (%eax),%eax -c010814b: 83 e0 20 and $0x20,%eax -c010814e: 85 c0 test %eax,%eax -c0108150: 0f 95 c0 setne %al -c0108153: 0f b6 c0 movzbl %al,%eax -c0108156: 89 45 e8 mov %eax,-0x18(%ebp) - int dirty = (((*current_pte) & PTE_D) != 0); -c0108159: 8b 45 f0 mov -0x10(%ebp),%eax -c010815c: 8b 00 mov (%eax),%eax -c010815e: 83 e0 40 and $0x40,%eax -c0108161: 85 c0 test %eax,%eax -c0108163: 0f 95 c0 setne %al -c0108166: 0f b6 c0 movzbl %al,%eax -c0108169: 89 45 e4 mov %eax,-0x1c(%ebp) - cprintf("A = %d, D = %d, %08x, %08x\n", accessed, dirty, current_pte, *(current_pte)); -c010816c: 8b 45 f0 mov -0x10(%ebp),%eax -c010816f: 8b 00 mov (%eax),%eax -c0108171: 83 ec 0c sub $0xc,%esp -c0108174: 50 push %eax -c0108175: ff 75 f0 pushl -0x10(%ebp) -c0108178: ff 75 e4 pushl -0x1c(%ebp) -c010817b: ff 75 e8 pushl -0x18(%ebp) -c010817e: 68 6f bd 10 c0 push $0xc010bd6f -c0108183: e8 f6 80 ff ff call c010027e -c0108188: 83 c4 20 add $0x20,%esp - if (!accessed && !dirty) { -c010818b: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) -c010818f: 75 06 jne c0108197 <_clock_swap_out_victim+0xeb> -c0108191: 83 7d e4 00 cmpl $0x0,-0x1c(%ebp) -c0108195: 74 47 je c01081de <_clock_swap_out_victim+0x132> - break; - } - // Modify bits. - (*current_pte) = (*current_pte) & (~PTE_A); -c0108197: 8b 45 f0 mov -0x10(%ebp),%eax -c010819a: 8b 00 mov (%eax),%eax -c010819c: 83 e0 df and $0xffffffdf,%eax -c010819f: 89 c2 mov %eax,%edx -c01081a1: 8b 45 f0 mov -0x10(%ebp),%eax -c01081a4: 89 10 mov %edx,(%eax) - if (accessed + dirty == 1) { -c01081a6: 8b 55 e8 mov -0x18(%ebp),%edx -c01081a9: 8b 45 e4 mov -0x1c(%ebp),%eax -c01081ac: 01 d0 add %edx,%eax -c01081ae: 83 f8 01 cmp $0x1,%eax -c01081b1: 75 0f jne c01081c2 <_clock_swap_out_victim+0x116> - // all should be zero - (*current_pte) = (*current_pte) & (~PTE_D); -c01081b3: 8b 45 f0 mov -0x10(%ebp),%eax -c01081b6: 8b 00 mov (%eax),%eax -c01081b8: 83 e0 bf and $0xffffffbf,%eax -c01081bb: 89 c2 mov %eax,%edx -c01081bd: 8b 45 f0 mov -0x10(%ebp),%eax -c01081c0: 89 10 mov %edx,(%eax) - } - // Go to next list (remember to skip the head) - do { - current_clock_pointer = current_clock_pointer->next; -c01081c2: a1 18 9c 12 c0 mov 0xc0129c18,%eax -c01081c7: 8b 40 04 mov 0x4(%eax),%eax -c01081ca: a3 18 9c 12 c0 mov %eax,0xc0129c18 - } - while (current_clock_pointer == head); -c01081cf: a1 18 9c 12 c0 mov 0xc0129c18,%eax -c01081d4: 3b 45 f4 cmp -0xc(%ebp),%eax -c01081d7: 74 e9 je c01081c2 <_clock_swap_out_victim+0x116> - } -c01081d9: e9 23 ff ff ff jmp c0108101 <_clock_swap_out_victim+0x55> - assert(current_pte != NULL); - int accessed = (((*current_pte) & PTE_A) != 0); - int dirty = (((*current_pte) & PTE_D) != 0); - cprintf("A = %d, D = %d, %08x, %08x\n", accessed, dirty, current_pte, *(current_pte)); - if (!accessed && !dirty) { - break; -c01081de: 90 nop - do { - current_clock_pointer = current_clock_pointer->next; - } - while (current_clock_pointer == head); - } - *ptr_page = current_page; -c01081df: 8b 45 0c mov 0xc(%ebp),%eax -c01081e2: 8b 55 ec mov -0x14(%ebp),%edx -c01081e5: 89 10 mov %edx,(%eax) - current_clock_pointer = current_clock_pointer->next; -c01081e7: a1 18 9c 12 c0 mov 0xc0129c18,%eax -c01081ec: 8b 40 04 mov 0x4(%eax),%eax -c01081ef: a3 18 9c 12 c0 mov %eax,0xc0129c18 - list_del(current_clock_pointer->prev); -c01081f4: a1 18 9c 12 c0 mov 0xc0129c18,%eax -c01081f9: 8b 00 mov (%eax),%eax -c01081fb: 89 45 e0 mov %eax,-0x20(%ebp) - * Note: list_empty() on @listelm does not return true after this, the entry is - * in an undefined state. - * */ -static inline void -list_del(list_entry_t *listelm) { - __list_del(listelm->prev, listelm->next); -c01081fe: 8b 45 e0 mov -0x20(%ebp),%eax -c0108201: 8b 40 04 mov 0x4(%eax),%eax -c0108204: 8b 55 e0 mov -0x20(%ebp),%edx -c0108207: 8b 12 mov (%edx),%edx -c0108209: 89 55 dc mov %edx,-0x24(%ebp) -c010820c: 89 45 d8 mov %eax,-0x28(%ebp) - * This is only for internal list manipulation where we know - * the prev/next entries already! - * */ -static inline void -__list_del(list_entry_t *prev, list_entry_t *next) { - prev->next = next; -c010820f: 8b 45 dc mov -0x24(%ebp),%eax -c0108212: 8b 55 d8 mov -0x28(%ebp),%edx -c0108215: 89 50 04 mov %edx,0x4(%eax) - next->prev = prev; -c0108218: 8b 45 d8 mov -0x28(%ebp),%eax -c010821b: 8b 55 dc mov -0x24(%ebp),%edx -c010821e: 89 10 mov %edx,(%eax) - return 0; -c0108220: b8 00 00 00 00 mov $0x0,%eax -} -c0108225: c9 leave -c0108226: c3 ret - -c0108227 : - -static void -mark_read(int page_id) { -c0108227: 55 push %ebp -c0108228: 89 e5 mov %esp,%ebp -c010822a: 83 ec 18 sub $0x18,%esp - uintptr_t la = (page_id << 12); -c010822d: 8b 45 08 mov 0x8(%ebp),%eax -c0108230: c1 e0 0c shl $0xc,%eax -c0108233: 89 45 f4 mov %eax,-0xc(%ebp) - pte_t* pt_entry = get_pte(boot_pgdir, la, 0); -c0108236: a1 44 7a 12 c0 mov 0xc0127a44,%eax -c010823b: 83 ec 04 sub $0x4,%esp -c010823e: 6a 00 push $0x0 -c0108240: ff 75 f4 pushl -0xc(%ebp) -c0108243: 50 push %eax -c0108244: e8 31 ba ff ff call c0103c7a -c0108249: 83 c4 10 add $0x10,%esp -c010824c: 89 45 f0 mov %eax,-0x10(%ebp) - assert(pt_entry != NULL); -c010824f: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) -c0108253: 75 16 jne c010826b -c0108255: 68 8b bd 10 c0 push $0xc010bd8b -c010825a: 68 1e bd 10 c0 push $0xc010bd1e -c010825f: 6a 61 push $0x61 -c0108261: 68 33 bd 10 c0 push $0xc010bd33 -c0108266: e8 79 81 ff ff call c01003e4 <__panic> - (*pt_entry) = (*pt_entry) | (PTE_A); -c010826b: 8b 45 f0 mov -0x10(%ebp),%eax -c010826e: 8b 00 mov (%eax),%eax -c0108270: 83 c8 20 or $0x20,%eax -c0108273: 89 c2 mov %eax,%edx -c0108275: 8b 45 f0 mov -0x10(%ebp),%eax -c0108278: 89 10 mov %edx,(%eax) -} -c010827a: 90 nop -c010827b: c9 leave -c010827c: c3 ret - -c010827d : - -static void -mark_write(int page_id) { -c010827d: 55 push %ebp -c010827e: 89 e5 mov %esp,%ebp -c0108280: 83 ec 18 sub $0x18,%esp - uintptr_t la = (page_id << 12); -c0108283: 8b 45 08 mov 0x8(%ebp),%eax -c0108286: c1 e0 0c shl $0xc,%eax -c0108289: 89 45 f4 mov %eax,-0xc(%ebp) - pte_t* pt_entry = get_pte(boot_pgdir, la, 0); -c010828c: a1 44 7a 12 c0 mov 0xc0127a44,%eax -c0108291: 83 ec 04 sub $0x4,%esp -c0108294: 6a 00 push $0x0 -c0108296: ff 75 f4 pushl -0xc(%ebp) -c0108299: 50 push %eax -c010829a: e8 db b9 ff ff call c0103c7a -c010829f: 83 c4 10 add $0x10,%esp -c01082a2: 89 45 f0 mov %eax,-0x10(%ebp) - assert(pt_entry != NULL); -c01082a5: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) -c01082a9: 75 16 jne c01082c1 -c01082ab: 68 8b bd 10 c0 push $0xc010bd8b -c01082b0: 68 1e bd 10 c0 push $0xc010bd1e -c01082b5: 6a 69 push $0x69 -c01082b7: 68 33 bd 10 c0 push $0xc010bd33 -c01082bc: e8 23 81 ff ff call c01003e4 <__panic> - (*pt_entry) = (*pt_entry) | (PTE_A); -c01082c1: 8b 45 f0 mov -0x10(%ebp),%eax -c01082c4: 8b 00 mov (%eax),%eax -c01082c6: 83 c8 20 or $0x20,%eax -c01082c9: 89 c2 mov %eax,%edx -c01082cb: 8b 45 f0 mov -0x10(%ebp),%eax -c01082ce: 89 10 mov %edx,(%eax) - (*pt_entry) = (*pt_entry) | (PTE_D); -c01082d0: 8b 45 f0 mov -0x10(%ebp),%eax -c01082d3: 8b 00 mov (%eax),%eax -c01082d5: 83 c8 40 or $0x40,%eax -c01082d8: 89 c2 mov %eax,%edx -c01082da: 8b 45 f0 mov -0x10(%ebp),%eax -c01082dd: 89 10 mov %edx,(%eax) -} -c01082df: 90 nop -c01082e0: c9 leave -c01082e1: c3 ret - -c01082e2 <_clock_check_swap>: - -static int -_clock_check_swap(void) { -c01082e2: 55 push %ebp -c01082e3: 89 e5 mov %esp,%ebp -c01082e5: 83 ec 18 sub $0x18,%esp - // Clear all A/D bytes in Page a, b, c, d, e - for (int i = 1; i < 6; ++ i) { -c01082e8: c7 45 f4 01 00 00 00 movl $0x1,-0xc(%ebp) -c01082ef: eb 60 jmp c0108351 <_clock_check_swap+0x6f> - uintptr_t la = (i << 12); -c01082f1: 8b 45 f4 mov -0xc(%ebp),%eax -c01082f4: c1 e0 0c shl $0xc,%eax -c01082f7: 89 45 f0 mov %eax,-0x10(%ebp) - pte_t* pt_entry = get_pte(boot_pgdir, la, 0); -c01082fa: a1 44 7a 12 c0 mov 0xc0127a44,%eax -c01082ff: 83 ec 04 sub $0x4,%esp -c0108302: 6a 00 push $0x0 -c0108304: ff 75 f0 pushl -0x10(%ebp) -c0108307: 50 push %eax -c0108308: e8 6d b9 ff ff call c0103c7a -c010830d: 83 c4 10 add $0x10,%esp -c0108310: 89 45 ec mov %eax,-0x14(%ebp) - assert(pt_entry != NULL); -c0108313: 83 7d ec 00 cmpl $0x0,-0x14(%ebp) -c0108317: 75 16 jne c010832f <_clock_check_swap+0x4d> -c0108319: 68 8b bd 10 c0 push $0xc010bd8b -c010831e: 68 1e bd 10 c0 push $0xc010bd1e -c0108323: 6a 74 push $0x74 -c0108325: 68 33 bd 10 c0 push $0xc010bd33 -c010832a: e8 b5 80 ff ff call c01003e4 <__panic> - (*pt_entry) = (*pt_entry) & (~PTE_A); -c010832f: 8b 45 ec mov -0x14(%ebp),%eax -c0108332: 8b 00 mov (%eax),%eax -c0108334: 83 e0 df and $0xffffffdf,%eax -c0108337: 89 c2 mov %eax,%edx -c0108339: 8b 45 ec mov -0x14(%ebp),%eax -c010833c: 89 10 mov %edx,(%eax) - (*pt_entry) = (*pt_entry) & (~PTE_D); -c010833e: 8b 45 ec mov -0x14(%ebp),%eax -c0108341: 8b 00 mov (%eax),%eax -c0108343: 83 e0 bf and $0xffffffbf,%eax -c0108346: 89 c2 mov %eax,%edx -c0108348: 8b 45 ec mov -0x14(%ebp),%eax -c010834b: 89 10 mov %edx,(%eax) -} - -static int -_clock_check_swap(void) { - // Clear all A/D bytes in Page a, b, c, d, e - for (int i = 1; i < 6; ++ i) { -c010834d: 83 45 f4 01 addl $0x1,-0xc(%ebp) -c0108351: 83 7d f4 05 cmpl $0x5,-0xc(%ebp) -c0108355: 7e 9a jle c01082f1 <_clock_check_swap+0xf> - (*pt_entry) = (*pt_entry) & (~PTE_A); - (*pt_entry) = (*pt_entry) & (~PTE_D); - } - unsigned char temp; - - cprintf("read Virt Page c in clock_check_swap\n"); -c0108357: 83 ec 0c sub $0xc,%esp -c010835a: 68 9c bd 10 c0 push $0xc010bd9c -c010835f: e8 1a 7f ff ff call c010027e -c0108364: 83 c4 10 add $0x10,%esp - temp += *(unsigned char *)0x3000; -c0108367: b8 00 30 00 00 mov $0x3000,%eax -c010836c: 0f b6 00 movzbl (%eax),%eax -c010836f: 00 45 eb add %al,-0x15(%ebp) - mark_read(3); -c0108372: 83 ec 0c sub $0xc,%esp -c0108375: 6a 03 push $0x3 -c0108377: e8 ab fe ff ff call c0108227 -c010837c: 83 c4 10 add $0x10,%esp - assert(pgfault_num==4); -c010837f: a1 cc 7a 12 c0 mov 0xc0127acc,%eax -c0108384: 83 f8 04 cmp $0x4,%eax -c0108387: 74 16 je c010839f <_clock_check_swap+0xbd> -c0108389: 68 c2 bd 10 c0 push $0xc010bdc2 -c010838e: 68 1e bd 10 c0 push $0xc010bd1e -c0108393: 6a 7d push $0x7d -c0108395: 68 33 bd 10 c0 push $0xc010bd33 -c010839a: e8 45 80 ff ff call c01003e4 <__panic> - - cprintf("write Virt Page a in clock_check_swap\n"); -c010839f: 83 ec 0c sub $0xc,%esp -c01083a2: 68 d4 bd 10 c0 push $0xc010bdd4 -c01083a7: e8 d2 7e ff ff call c010027e -c01083ac: 83 c4 10 add $0x10,%esp - *(unsigned char *)0x1000 = 0x0a; -c01083af: b8 00 10 00 00 mov $0x1000,%eax -c01083b4: c6 00 0a movb $0xa,(%eax) - mark_write(1); -c01083b7: 83 ec 0c sub $0xc,%esp -c01083ba: 6a 01 push $0x1 -c01083bc: e8 bc fe ff ff call c010827d -c01083c1: 83 c4 10 add $0x10,%esp - assert(pgfault_num==4); -c01083c4: a1 cc 7a 12 c0 mov 0xc0127acc,%eax -c01083c9: 83 f8 04 cmp $0x4,%eax -c01083cc: 74 19 je c01083e7 <_clock_check_swap+0x105> -c01083ce: 68 c2 bd 10 c0 push $0xc010bdc2 -c01083d3: 68 1e bd 10 c0 push $0xc010bd1e -c01083d8: 68 82 00 00 00 push $0x82 -c01083dd: 68 33 bd 10 c0 push $0xc010bd33 -c01083e2: e8 fd 7f ff ff call c01003e4 <__panic> - - cprintf("read Virt Page d in fifo_check_swap\n"); -c01083e7: 83 ec 0c sub $0xc,%esp -c01083ea: 68 fc bd 10 c0 push $0xc010bdfc -c01083ef: e8 8a 7e ff ff call c010027e -c01083f4: 83 c4 10 add $0x10,%esp - temp += *(unsigned char *)0x4000; -c01083f7: b8 00 40 00 00 mov $0x4000,%eax -c01083fc: 0f b6 00 movzbl (%eax),%eax -c01083ff: 00 45 eb add %al,-0x15(%ebp) - mark_read(4); -c0108402: 83 ec 0c sub $0xc,%esp -c0108405: 6a 04 push $0x4 -c0108407: e8 1b fe ff ff call c0108227 -c010840c: 83 c4 10 add $0x10,%esp - assert(pgfault_num==4); -c010840f: a1 cc 7a 12 c0 mov 0xc0127acc,%eax -c0108414: 83 f8 04 cmp $0x4,%eax -c0108417: 74 19 je c0108432 <_clock_check_swap+0x150> -c0108419: 68 c2 bd 10 c0 push $0xc010bdc2 -c010841e: 68 1e bd 10 c0 push $0xc010bd1e -c0108423: 68 87 00 00 00 push $0x87 -c0108428: 68 33 bd 10 c0 push $0xc010bd33 -c010842d: e8 b2 7f ff ff call c01003e4 <__panic> - - cprintf("write Virt Page b in fifo_check_swap\n"); -c0108432: 83 ec 0c sub $0xc,%esp -c0108435: 68 24 be 10 c0 push $0xc010be24 -c010843a: e8 3f 7e ff ff call c010027e -c010843f: 83 c4 10 add $0x10,%esp - *(unsigned char *)0x2000 = 0x0b; -c0108442: b8 00 20 00 00 mov $0x2000,%eax -c0108447: c6 00 0b movb $0xb,(%eax) - mark_write(2); -c010844a: 83 ec 0c sub $0xc,%esp -c010844d: 6a 02 push $0x2 -c010844f: e8 29 fe ff ff call c010827d -c0108454: 83 c4 10 add $0x10,%esp - assert(pgfault_num==4); -c0108457: a1 cc 7a 12 c0 mov 0xc0127acc,%eax -c010845c: 83 f8 04 cmp $0x4,%eax -c010845f: 74 19 je c010847a <_clock_check_swap+0x198> -c0108461: 68 c2 bd 10 c0 push $0xc010bdc2 -c0108466: 68 1e bd 10 c0 push $0xc010bd1e -c010846b: 68 8c 00 00 00 push $0x8c -c0108470: 68 33 bd 10 c0 push $0xc010bd33 -c0108475: e8 6a 7f ff ff call c01003e4 <__panic> - - cprintf("read Virt Page e in fifo_check_swap\n"); -c010847a: 83 ec 0c sub $0xc,%esp -c010847d: 68 4c be 10 c0 push $0xc010be4c -c0108482: e8 f7 7d ff ff call c010027e -c0108487: 83 c4 10 add $0x10,%esp - temp += *(unsigned char *)0x5000; -c010848a: b8 00 50 00 00 mov $0x5000,%eax -c010848f: 0f b6 00 movzbl (%eax),%eax -c0108492: 00 45 eb add %al,-0x15(%ebp) - mark_read(5); -c0108495: 83 ec 0c sub $0xc,%esp -c0108498: 6a 05 push $0x5 -c010849a: e8 88 fd ff ff call c0108227 -c010849f: 83 c4 10 add $0x10,%esp - assert(pgfault_num==5); -c01084a2: a1 cc 7a 12 c0 mov 0xc0127acc,%eax -c01084a7: 83 f8 05 cmp $0x5,%eax -c01084aa: 74 19 je c01084c5 <_clock_check_swap+0x1e3> -c01084ac: 68 71 be 10 c0 push $0xc010be71 -c01084b1: 68 1e bd 10 c0 push $0xc010bd1e -c01084b6: 68 91 00 00 00 push $0x91 -c01084bb: 68 33 bd 10 c0 push $0xc010bd33 -c01084c0: e8 1f 7f ff ff call c01003e4 <__panic> - - cprintf("read Virt Page b in fifo_check_swap\n"); -c01084c5: 83 ec 0c sub $0xc,%esp -c01084c8: 68 80 be 10 c0 push $0xc010be80 -c01084cd: e8 ac 7d ff ff call c010027e -c01084d2: 83 c4 10 add $0x10,%esp - temp += *(unsigned char *)0x2000; -c01084d5: b8 00 20 00 00 mov $0x2000,%eax -c01084da: 0f b6 00 movzbl (%eax),%eax -c01084dd: 00 45 eb add %al,-0x15(%ebp) - mark_read(2); -c01084e0: 83 ec 0c sub $0xc,%esp -c01084e3: 6a 02 push $0x2 -c01084e5: e8 3d fd ff ff call c0108227 -c01084ea: 83 c4 10 add $0x10,%esp - assert(pgfault_num==5); -c01084ed: a1 cc 7a 12 c0 mov 0xc0127acc,%eax -c01084f2: 83 f8 05 cmp $0x5,%eax -c01084f5: 74 19 je c0108510 <_clock_check_swap+0x22e> -c01084f7: 68 71 be 10 c0 push $0xc010be71 -c01084fc: 68 1e bd 10 c0 push $0xc010bd1e -c0108501: 68 96 00 00 00 push $0x96 -c0108506: 68 33 bd 10 c0 push $0xc010bd33 -c010850b: e8 d4 7e ff ff call c01003e4 <__panic> - - cprintf("write Virt Page a in fifo_check_swap\n"); -c0108510: 83 ec 0c sub $0xc,%esp -c0108513: 68 a8 be 10 c0 push $0xc010bea8 -c0108518: e8 61 7d ff ff call c010027e -c010851d: 83 c4 10 add $0x10,%esp - *(unsigned char *)0x1000 = 0x0a; -c0108520: b8 00 10 00 00 mov $0x1000,%eax -c0108525: c6 00 0a movb $0xa,(%eax) - mark_write(1); -c0108528: 83 ec 0c sub $0xc,%esp -c010852b: 6a 01 push $0x1 -c010852d: e8 4b fd ff ff call c010827d -c0108532: 83 c4 10 add $0x10,%esp - assert(pgfault_num==5); -c0108535: a1 cc 7a 12 c0 mov 0xc0127acc,%eax -c010853a: 83 f8 05 cmp $0x5,%eax -c010853d: 74 19 je c0108558 <_clock_check_swap+0x276> -c010853f: 68 71 be 10 c0 push $0xc010be71 -c0108544: 68 1e bd 10 c0 push $0xc010bd1e -c0108549: 68 9b 00 00 00 push $0x9b -c010854e: 68 33 bd 10 c0 push $0xc010bd33 -c0108553: e8 8c 7e ff ff call c01003e4 <__panic> - - cprintf("read Virt Page b in fifo_check_swap\n"); -c0108558: 83 ec 0c sub $0xc,%esp -c010855b: 68 80 be 10 c0 push $0xc010be80 -c0108560: e8 19 7d ff ff call c010027e -c0108565: 83 c4 10 add $0x10,%esp - temp += *(unsigned char *)0x2000; -c0108568: b8 00 20 00 00 mov $0x2000,%eax -c010856d: 0f b6 00 movzbl (%eax),%eax -c0108570: 00 45 eb add %al,-0x15(%ebp) - mark_read(2); -c0108573: 83 ec 0c sub $0xc,%esp -c0108576: 6a 02 push $0x2 -c0108578: e8 aa fc ff ff call c0108227 -c010857d: 83 c4 10 add $0x10,%esp - assert(pgfault_num==5); -c0108580: a1 cc 7a 12 c0 mov 0xc0127acc,%eax -c0108585: 83 f8 05 cmp $0x5,%eax -c0108588: 74 19 je c01085a3 <_clock_check_swap+0x2c1> -c010858a: 68 71 be 10 c0 push $0xc010be71 -c010858f: 68 1e bd 10 c0 push $0xc010bd1e -c0108594: 68 a0 00 00 00 push $0xa0 -c0108599: 68 33 bd 10 c0 push $0xc010bd33 -c010859e: e8 41 7e ff ff call c01003e4 <__panic> - - cprintf("read Virt Page c in fifo_check_swap\n"); -c01085a3: 83 ec 0c sub $0xc,%esp -c01085a6: 68 d0 be 10 c0 push $0xc010bed0 -c01085ab: e8 ce 7c ff ff call c010027e -c01085b0: 83 c4 10 add $0x10,%esp - temp += *(unsigned char *)0x3000; -c01085b3: b8 00 30 00 00 mov $0x3000,%eax -c01085b8: 0f b6 00 movzbl (%eax),%eax -c01085bb: 00 45 eb add %al,-0x15(%ebp) - mark_read(3); -c01085be: 83 ec 0c sub $0xc,%esp -c01085c1: 6a 03 push $0x3 -c01085c3: e8 5f fc ff ff call c0108227 -c01085c8: 83 c4 10 add $0x10,%esp - assert(pgfault_num==6); -c01085cb: a1 cc 7a 12 c0 mov 0xc0127acc,%eax -c01085d0: 83 f8 06 cmp $0x6,%eax -c01085d3: 74 19 je c01085ee <_clock_check_swap+0x30c> -c01085d5: 68 f5 be 10 c0 push $0xc010bef5 -c01085da: 68 1e bd 10 c0 push $0xc010bd1e -c01085df: 68 a5 00 00 00 push $0xa5 -c01085e4: 68 33 bd 10 c0 push $0xc010bd33 -c01085e9: e8 f6 7d ff ff call c01003e4 <__panic> - - cprintf("read Virt Page d in fifo_check_swap\n"); -c01085ee: 83 ec 0c sub $0xc,%esp -c01085f1: 68 fc bd 10 c0 push $0xc010bdfc -c01085f6: e8 83 7c ff ff call c010027e -c01085fb: 83 c4 10 add $0x10,%esp - temp += *(unsigned char *)0x4000; -c01085fe: b8 00 40 00 00 mov $0x4000,%eax -c0108603: 0f b6 00 movzbl (%eax),%eax -c0108606: 00 45 eb add %al,-0x15(%ebp) - mark_read(4); -c0108609: 83 ec 0c sub $0xc,%esp -c010860c: 6a 04 push $0x4 -c010860e: e8 14 fc ff ff call c0108227 -c0108613: 83 c4 10 add $0x10,%esp - assert(pgfault_num==7); -c0108616: a1 cc 7a 12 c0 mov 0xc0127acc,%eax -c010861b: 83 f8 07 cmp $0x7,%eax -c010861e: 74 19 je c0108639 <_clock_check_swap+0x357> -c0108620: 68 04 bf 10 c0 push $0xc010bf04 -c0108625: 68 1e bd 10 c0 push $0xc010bd1e -c010862a: 68 aa 00 00 00 push $0xaa -c010862f: 68 33 bd 10 c0 push $0xc010bd33 -c0108634: e8 ab 7d ff ff call c01003e4 <__panic> - - return 0; -c0108639: b8 00 00 00 00 mov $0x0,%eax -} -c010863e: c9 leave -c010863f: c3 ret - -c0108640 <_clock_init>: - - -static int -_clock_init(void) -{ -c0108640: 55 push %ebp -c0108641: 89 e5 mov %esp,%ebp - return 0; -c0108643: b8 00 00 00 00 mov $0x0,%eax -} -c0108648: 5d pop %ebp -c0108649: c3 ret - -c010864a <_clock_set_unswappable>: - -static int -_clock_set_unswappable(struct mm_struct *mm, uintptr_t addr) -{ -c010864a: 55 push %ebp -c010864b: 89 e5 mov %esp,%ebp - return 0; -c010864d: b8 00 00 00 00 mov $0x0,%eax -} -c0108652: 5d pop %ebp -c0108653: c3 ret - -c0108654 <_clock_tick_event>: - -static int -_clock_tick_event(struct mm_struct *mm) -{ return 0; } -c0108654: 55 push %ebp -c0108655: 89 e5 mov %esp,%ebp -c0108657: b8 00 00 00 00 mov $0x0,%eax -c010865c: 5d pop %ebp -c010865d: c3 ret - -c010865e : - -extern struct Page *pages; -extern size_t npage; - -static inline ppn_t -page2ppn(struct Page *page) { -c010865e: 55 push %ebp -c010865f: 89 e5 mov %esp,%ebp - return page - pages; -c0108661: 8b 45 08 mov 0x8(%ebp),%eax -c0108664: 8b 15 20 9b 12 c0 mov 0xc0129b20,%edx -c010866a: 29 d0 sub %edx,%eax -c010866c: c1 f8 05 sar $0x5,%eax -} -c010866f: 5d pop %ebp -c0108670: c3 ret - -c0108671 : - -static inline uintptr_t -page2pa(struct Page *page) { -c0108671: 55 push %ebp -c0108672: 89 e5 mov %esp,%ebp - return page2ppn(page) << PGSHIFT; -c0108674: ff 75 08 pushl 0x8(%ebp) -c0108677: e8 e2 ff ff ff call c010865e -c010867c: 83 c4 04 add $0x4,%esp -c010867f: c1 e0 0c shl $0xc,%eax -} -c0108682: c9 leave -c0108683: c3 ret - -c0108684 : - } - return &pages[PPN(pa)]; -} - -static inline void * -page2kva(struct Page *page) { -c0108684: 55 push %ebp -c0108685: 89 e5 mov %esp,%ebp -c0108687: 83 ec 18 sub $0x18,%esp - return KADDR(page2pa(page)); -c010868a: ff 75 08 pushl 0x8(%ebp) -c010868d: e8 df ff ff ff call c0108671 -c0108692: 83 c4 04 add $0x4,%esp -c0108695: 89 45 f4 mov %eax,-0xc(%ebp) -c0108698: 8b 45 f4 mov -0xc(%ebp),%eax -c010869b: c1 e8 0c shr $0xc,%eax -c010869e: 89 45 f0 mov %eax,-0x10(%ebp) -c01086a1: a1 40 7a 12 c0 mov 0xc0127a40,%eax -c01086a6: 39 45 f0 cmp %eax,-0x10(%ebp) -c01086a9: 72 14 jb c01086bf -c01086ab: ff 75 f4 pushl -0xc(%ebp) -c01086ae: 68 30 bf 10 c0 push $0xc010bf30 -c01086b3: 6a 66 push $0x66 -c01086b5: 68 53 bf 10 c0 push $0xc010bf53 -c01086ba: e8 25 7d ff ff call c01003e4 <__panic> -c01086bf: 8b 45 f4 mov -0xc(%ebp),%eax -c01086c2: 2d 00 00 00 40 sub $0x40000000,%eax -} -c01086c7: c9 leave -c01086c8: c3 ret - -c01086c9 : -#include -#include -#include - -void -swapfs_init(void) { -c01086c9: 55 push %ebp -c01086ca: 89 e5 mov %esp,%ebp -c01086cc: 83 ec 08 sub $0x8,%esp - static_assert((PGSIZE % SECTSIZE) == 0); - if (!ide_device_valid(SWAP_DEV_NO)) { -c01086cf: 83 ec 0c sub $0xc,%esp -c01086d2: 6a 01 push $0x1 -c01086d4: e8 ee 89 ff ff call c01010c7 -c01086d9: 83 c4 10 add $0x10,%esp -c01086dc: 85 c0 test %eax,%eax -c01086de: 75 14 jne c01086f4 - panic("swap fs isn't available.\n"); -c01086e0: 83 ec 04 sub $0x4,%esp -c01086e3: 68 61 bf 10 c0 push $0xc010bf61 -c01086e8: 6a 0d push $0xd -c01086ea: 68 7b bf 10 c0 push $0xc010bf7b -c01086ef: e8 f0 7c ff ff call c01003e4 <__panic> - } - max_swap_offset = ide_device_size(SWAP_DEV_NO) / (PGSIZE / SECTSIZE); -c01086f4: 83 ec 0c sub $0xc,%esp -c01086f7: 6a 01 push $0x1 -c01086f9: e8 09 8a ff ff call c0101107 -c01086fe: 83 c4 10 add $0x10,%esp -c0108701: c1 e8 03 shr $0x3,%eax -c0108704: a3 dc 9b 12 c0 mov %eax,0xc0129bdc -} -c0108709: 90 nop -c010870a: c9 leave -c010870b: c3 ret - -c010870c : - -int -swapfs_read(swap_entry_t entry, struct Page *page) { -c010870c: 55 push %ebp -c010870d: 89 e5 mov %esp,%ebp -c010870f: 83 ec 18 sub $0x18,%esp - return ide_read_secs(SWAP_DEV_NO, swap_offset(entry) * PAGE_NSECT, page2kva(page), PAGE_NSECT); -c0108712: 83 ec 0c sub $0xc,%esp -c0108715: ff 75 0c pushl 0xc(%ebp) -c0108718: e8 67 ff ff ff call c0108684 -c010871d: 83 c4 10 add $0x10,%esp -c0108720: 89 c2 mov %eax,%edx -c0108722: 8b 45 08 mov 0x8(%ebp),%eax -c0108725: c1 e8 08 shr $0x8,%eax -c0108728: 89 45 f4 mov %eax,-0xc(%ebp) -c010872b: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c010872f: 74 0a je c010873b -c0108731: a1 dc 9b 12 c0 mov 0xc0129bdc,%eax -c0108736: 39 45 f4 cmp %eax,-0xc(%ebp) -c0108739: 72 14 jb c010874f -c010873b: ff 75 08 pushl 0x8(%ebp) -c010873e: 68 8c bf 10 c0 push $0xc010bf8c -c0108743: 6a 14 push $0x14 -c0108745: 68 7b bf 10 c0 push $0xc010bf7b -c010874a: e8 95 7c ff ff call c01003e4 <__panic> -c010874f: 8b 45 f4 mov -0xc(%ebp),%eax -c0108752: c1 e0 03 shl $0x3,%eax -c0108755: 6a 08 push $0x8 -c0108757: 52 push %edx -c0108758: 50 push %eax -c0108759: 6a 01 push $0x1 -c010875b: e8 e7 89 ff ff call c0101147 -c0108760: 83 c4 10 add $0x10,%esp -} -c0108763: c9 leave -c0108764: c3 ret - -c0108765 : - -int -swapfs_write(swap_entry_t entry, struct Page *page) { -c0108765: 55 push %ebp -c0108766: 89 e5 mov %esp,%ebp -c0108768: 83 ec 18 sub $0x18,%esp - return ide_write_secs(SWAP_DEV_NO, swap_offset(entry) * PAGE_NSECT, page2kva(page), PAGE_NSECT); -c010876b: 83 ec 0c sub $0xc,%esp -c010876e: ff 75 0c pushl 0xc(%ebp) -c0108771: e8 0e ff ff ff call c0108684 -c0108776: 83 c4 10 add $0x10,%esp -c0108779: 89 c2 mov %eax,%edx -c010877b: 8b 45 08 mov 0x8(%ebp),%eax -c010877e: c1 e8 08 shr $0x8,%eax -c0108781: 89 45 f4 mov %eax,-0xc(%ebp) -c0108784: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c0108788: 74 0a je c0108794 -c010878a: a1 dc 9b 12 c0 mov 0xc0129bdc,%eax -c010878f: 39 45 f4 cmp %eax,-0xc(%ebp) -c0108792: 72 14 jb c01087a8 -c0108794: ff 75 08 pushl 0x8(%ebp) -c0108797: 68 8c bf 10 c0 push $0xc010bf8c -c010879c: 6a 19 push $0x19 -c010879e: 68 7b bf 10 c0 push $0xc010bf7b -c01087a3: e8 3c 7c ff ff call c01003e4 <__panic> -c01087a8: 8b 45 f4 mov -0xc(%ebp),%eax -c01087ab: c1 e0 03 shl $0x3,%eax -c01087ae: 6a 08 push $0x8 -c01087b0: 52 push %edx -c01087b1: 50 push %eax -c01087b2: 6a 01 push $0x1 -c01087b4: e8 b8 8b ff ff call c0101371 -c01087b9: 83 c4 10 add $0x10,%esp -} -c01087bc: c9 leave -c01087bd: c3 ret - -c01087be : -.text -.globl switch_to -switch_to: # switch_to(from, to) - - # save from's registers - movl 4(%esp), %eax # eax points to from -c01087be: 8b 44 24 04 mov 0x4(%esp),%eax - popl 0(%eax) # save eip !popl -c01087c2: 8f 00 popl (%eax) - movl %esp, 4(%eax) -c01087c4: 89 60 04 mov %esp,0x4(%eax) - movl %ebx, 8(%eax) -c01087c7: 89 58 08 mov %ebx,0x8(%eax) - movl %ecx, 12(%eax) -c01087ca: 89 48 0c mov %ecx,0xc(%eax) - movl %edx, 16(%eax) -c01087cd: 89 50 10 mov %edx,0x10(%eax) - movl %esi, 20(%eax) -c01087d0: 89 70 14 mov %esi,0x14(%eax) - movl %edi, 24(%eax) -c01087d3: 89 78 18 mov %edi,0x18(%eax) - movl %ebp, 28(%eax) -c01087d6: 89 68 1c mov %ebp,0x1c(%eax) - - # restore to's registers - movl 4(%esp), %eax # not 8(%esp): popped return address already -c01087d9: 8b 44 24 04 mov 0x4(%esp),%eax - # eax now points to to - movl 28(%eax), %ebp -c01087dd: 8b 68 1c mov 0x1c(%eax),%ebp - movl 24(%eax), %edi -c01087e0: 8b 78 18 mov 0x18(%eax),%edi - movl 20(%eax), %esi -c01087e3: 8b 70 14 mov 0x14(%eax),%esi - movl 16(%eax), %edx -c01087e6: 8b 50 10 mov 0x10(%eax),%edx - movl 12(%eax), %ecx -c01087e9: 8b 48 0c mov 0xc(%eax),%ecx - movl 8(%eax), %ebx -c01087ec: 8b 58 08 mov 0x8(%eax),%ebx - movl 4(%eax), %esp -c01087ef: 8b 60 04 mov 0x4(%eax),%esp - - pushl 0(%eax) # push eip -c01087f2: ff 30 pushl (%eax) - - ret -c01087f4: c3 ret - -c01087f5 : -.text -.globl kernel_thread_entry -kernel_thread_entry: # void kernel_thread(void) - - pushl %edx # push arg -c01087f5: 52 push %edx - call *%ebx # call fn -c01087f6: ff d3 call *%ebx - - pushl %eax # save the return value of fn(arg) -c01087f8: 50 push %eax - call do_exit # call do_exit to terminate current thread -c01087f9: e8 bc 07 00 00 call c0108fba - -c01087fe <__intr_save>: -#include -#include -#include - -static inline bool -__intr_save(void) { -c01087fe: 55 push %ebp -c01087ff: 89 e5 mov %esp,%ebp -c0108801: 83 ec 18 sub $0x18,%esp -} - -static inline uint32_t -read_eflags(void) { - uint32_t eflags; - asm volatile ("pushfl; popl %0" : "=r" (eflags)); -c0108804: 9c pushf -c0108805: 58 pop %eax -c0108806: 89 45 f4 mov %eax,-0xc(%ebp) - return eflags; -c0108809: 8b 45 f4 mov -0xc(%ebp),%eax - if (read_eflags() & FL_IF) { -c010880c: 25 00 02 00 00 and $0x200,%eax -c0108811: 85 c0 test %eax,%eax -c0108813: 74 0c je c0108821 <__intr_save+0x23> - intr_disable(); -c0108815: e8 90 98 ff ff call c01020aa - return 1; -c010881a: b8 01 00 00 00 mov $0x1,%eax -c010881f: eb 05 jmp c0108826 <__intr_save+0x28> - } - return 0; -c0108821: b8 00 00 00 00 mov $0x0,%eax -} -c0108826: c9 leave -c0108827: c3 ret - -c0108828 <__intr_restore>: - -static inline void -__intr_restore(bool flag) { -c0108828: 55 push %ebp -c0108829: 89 e5 mov %esp,%ebp -c010882b: 83 ec 08 sub $0x8,%esp - if (flag) { -c010882e: 83 7d 08 00 cmpl $0x0,0x8(%ebp) -c0108832: 74 05 je c0108839 <__intr_restore+0x11> - intr_enable(); -c0108834: e8 6a 98 ff ff call c01020a3 - } -} -c0108839: 90 nop -c010883a: c9 leave -c010883b: c3 ret - -c010883c : - -extern struct Page *pages; -extern size_t npage; - -static inline ppn_t -page2ppn(struct Page *page) { -c010883c: 55 push %ebp -c010883d: 89 e5 mov %esp,%ebp - return page - pages; -c010883f: 8b 45 08 mov 0x8(%ebp),%eax -c0108842: 8b 15 20 9b 12 c0 mov 0xc0129b20,%edx -c0108848: 29 d0 sub %edx,%eax -c010884a: c1 f8 05 sar $0x5,%eax -} -c010884d: 5d pop %ebp -c010884e: c3 ret - -c010884f : - -static inline uintptr_t -page2pa(struct Page *page) { -c010884f: 55 push %ebp -c0108850: 89 e5 mov %esp,%ebp - return page2ppn(page) << PGSHIFT; -c0108852: ff 75 08 pushl 0x8(%ebp) -c0108855: e8 e2 ff ff ff call c010883c -c010885a: 83 c4 04 add $0x4,%esp -c010885d: c1 e0 0c shl $0xc,%eax -} -c0108860: c9 leave -c0108861: c3 ret - -c0108862 : - -static inline struct Page * -pa2page(uintptr_t pa) { -c0108862: 55 push %ebp -c0108863: 89 e5 mov %esp,%ebp -c0108865: 83 ec 08 sub $0x8,%esp - if (PPN(pa) >= npage) { -c0108868: 8b 45 08 mov 0x8(%ebp),%eax -c010886b: c1 e8 0c shr $0xc,%eax -c010886e: 89 c2 mov %eax,%edx -c0108870: a1 40 7a 12 c0 mov 0xc0127a40,%eax -c0108875: 39 c2 cmp %eax,%edx -c0108877: 72 14 jb c010888d - panic("pa2page called with invalid pa"); -c0108879: 83 ec 04 sub $0x4,%esp -c010887c: 68 ac bf 10 c0 push $0xc010bfac -c0108881: 6a 5f push $0x5f -c0108883: 68 cb bf 10 c0 push $0xc010bfcb -c0108888: e8 57 7b ff ff call c01003e4 <__panic> - } - return &pages[PPN(pa)]; -c010888d: a1 20 9b 12 c0 mov 0xc0129b20,%eax -c0108892: 8b 55 08 mov 0x8(%ebp),%edx -c0108895: c1 ea 0c shr $0xc,%edx -c0108898: c1 e2 05 shl $0x5,%edx -c010889b: 01 d0 add %edx,%eax -} -c010889d: c9 leave -c010889e: c3 ret - -c010889f : - -static inline void * -page2kva(struct Page *page) { -c010889f: 55 push %ebp -c01088a0: 89 e5 mov %esp,%ebp -c01088a2: 83 ec 18 sub $0x18,%esp - return KADDR(page2pa(page)); -c01088a5: ff 75 08 pushl 0x8(%ebp) -c01088a8: e8 a2 ff ff ff call c010884f -c01088ad: 83 c4 04 add $0x4,%esp -c01088b0: 89 45 f4 mov %eax,-0xc(%ebp) -c01088b3: 8b 45 f4 mov -0xc(%ebp),%eax -c01088b6: c1 e8 0c shr $0xc,%eax -c01088b9: 89 45 f0 mov %eax,-0x10(%ebp) -c01088bc: a1 40 7a 12 c0 mov 0xc0127a40,%eax -c01088c1: 39 45 f0 cmp %eax,-0x10(%ebp) -c01088c4: 72 14 jb c01088da -c01088c6: ff 75 f4 pushl -0xc(%ebp) -c01088c9: 68 dc bf 10 c0 push $0xc010bfdc -c01088ce: 6a 66 push $0x66 -c01088d0: 68 cb bf 10 c0 push $0xc010bfcb -c01088d5: e8 0a 7b ff ff call c01003e4 <__panic> -c01088da: 8b 45 f4 mov -0xc(%ebp),%eax -c01088dd: 2d 00 00 00 40 sub $0x40000000,%eax -} -c01088e2: c9 leave -c01088e3: c3 ret - -c01088e4 : - -static inline struct Page * -kva2page(void *kva) { -c01088e4: 55 push %ebp -c01088e5: 89 e5 mov %esp,%ebp -c01088e7: 83 ec 18 sub $0x18,%esp - return pa2page(PADDR(kva)); -c01088ea: 8b 45 08 mov 0x8(%ebp),%eax -c01088ed: 89 45 f4 mov %eax,-0xc(%ebp) -c01088f0: 81 7d f4 ff ff ff bf cmpl $0xbfffffff,-0xc(%ebp) -c01088f7: 77 14 ja c010890d -c01088f9: ff 75 f4 pushl -0xc(%ebp) -c01088fc: 68 00 c0 10 c0 push $0xc010c000 -c0108901: 6a 6b push $0x6b -c0108903: 68 cb bf 10 c0 push $0xc010bfcb -c0108908: e8 d7 7a ff ff call c01003e4 <__panic> -c010890d: 8b 45 f4 mov -0xc(%ebp),%eax -c0108910: 05 00 00 00 40 add $0x40000000,%eax -c0108915: 83 ec 0c sub $0xc,%esp -c0108918: 50 push %eax -c0108919: e8 44 ff ff ff call c0108862 -c010891e: 83 c4 10 add $0x10,%esp -} -c0108921: c9 leave -c0108922: c3 ret - -c0108923 : -void forkrets(struct trapframe *tf); -void switch_to(struct context *from, struct context *to); - -// alloc_proc - alloc a proc_struct and init all fields of proc_struct -static struct proc_struct * -alloc_proc(void) { -c0108923: 55 push %ebp -c0108924: 89 e5 mov %esp,%ebp -c0108926: 83 ec 18 sub $0x18,%esp - struct proc_struct *proc = kmalloc(sizeof(struct proc_struct)); -c0108929: 83 ec 0c sub $0xc,%esp -c010892c: 6a 68 push $0x68 -c010892e: e8 5c e0 ff ff call c010698f -c0108933: 83 c4 10 add $0x10,%esp -c0108936: 89 45 f4 mov %eax,-0xc(%ebp) - if (proc != NULL) { -c0108939: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c010893d: 0f 84 91 00 00 00 je c01089d4 - * struct trapframe *tf; // Trap frame for current interrupt - * uintptr_t cr3; // CR3 register: the base addr of Page Directroy Table(PDT) - * uint32_t flags; // Process flag - * char name[PROC_NAME_LEN + 1]; // Process name - */ - proc->state = PROC_UNINIT; -c0108943: 8b 45 f4 mov -0xc(%ebp),%eax -c0108946: c7 00 00 00 00 00 movl $0x0,(%eax) - proc->pid = -1; -c010894c: 8b 45 f4 mov -0xc(%ebp),%eax -c010894f: c7 40 04 ff ff ff ff movl $0xffffffff,0x4(%eax) - proc->runs = 0; -c0108956: 8b 45 f4 mov -0xc(%ebp),%eax -c0108959: c7 40 08 00 00 00 00 movl $0x0,0x8(%eax) - proc->kstack = NULL; -c0108960: 8b 45 f4 mov -0xc(%ebp),%eax -c0108963: c7 40 0c 00 00 00 00 movl $0x0,0xc(%eax) - proc->need_resched = 0; -c010896a: 8b 45 f4 mov -0xc(%ebp),%eax -c010896d: c7 40 10 00 00 00 00 movl $0x0,0x10(%eax) - proc->parent = NULL; -c0108974: 8b 45 f4 mov -0xc(%ebp),%eax -c0108977: c7 40 14 00 00 00 00 movl $0x0,0x14(%eax) - proc->mm = NULL; -c010897e: 8b 45 f4 mov -0xc(%ebp),%eax -c0108981: c7 40 18 00 00 00 00 movl $0x0,0x18(%eax) - memset(&(proc->context), 0, sizeof(struct context)); -c0108988: 8b 45 f4 mov -0xc(%ebp),%eax -c010898b: 83 c0 1c add $0x1c,%eax -c010898e: 83 ec 04 sub $0x4,%esp -c0108991: 6a 20 push $0x20 -c0108993: 6a 00 push $0x0 -c0108995: 50 push %eax -c0108996: e8 cb 0c 00 00 call c0109666 -c010899b: 83 c4 10 add $0x10,%esp - proc->tf = NULL; -c010899e: 8b 45 f4 mov -0xc(%ebp),%eax -c01089a1: c7 40 3c 00 00 00 00 movl $0x0,0x3c(%eax) - proc->cr3 = boot_cr3; -c01089a8: 8b 15 1c 9b 12 c0 mov 0xc0129b1c,%edx -c01089ae: 8b 45 f4 mov -0xc(%ebp),%eax -c01089b1: 89 50 40 mov %edx,0x40(%eax) - proc->flags = 0; -c01089b4: 8b 45 f4 mov -0xc(%ebp),%eax -c01089b7: c7 40 44 00 00 00 00 movl $0x0,0x44(%eax) - memset(proc->name, 0, PROC_NAME_LEN); -c01089be: 8b 45 f4 mov -0xc(%ebp),%eax -c01089c1: 83 c0 48 add $0x48,%eax -c01089c4: 83 ec 04 sub $0x4,%esp -c01089c7: 6a 0f push $0xf -c01089c9: 6a 00 push $0x0 -c01089cb: 50 push %eax -c01089cc: e8 95 0c 00 00 call c0109666 -c01089d1: 83 c4 10 add $0x10,%esp - } - return proc; -c01089d4: 8b 45 f4 mov -0xc(%ebp),%eax -} -c01089d7: c9 leave -c01089d8: c3 ret - -c01089d9 : - -// set_proc_name - set the name of proc -char * -set_proc_name(struct proc_struct *proc, const char *name) { -c01089d9: 55 push %ebp -c01089da: 89 e5 mov %esp,%ebp -c01089dc: 83 ec 08 sub $0x8,%esp - memset(proc->name, 0, sizeof(proc->name)); -c01089df: 8b 45 08 mov 0x8(%ebp),%eax -c01089e2: 83 c0 48 add $0x48,%eax -c01089e5: 83 ec 04 sub $0x4,%esp -c01089e8: 6a 10 push $0x10 -c01089ea: 6a 00 push $0x0 -c01089ec: 50 push %eax -c01089ed: e8 74 0c 00 00 call c0109666 -c01089f2: 83 c4 10 add $0x10,%esp - return memcpy(proc->name, name, PROC_NAME_LEN); -c01089f5: 8b 45 08 mov 0x8(%ebp),%eax -c01089f8: 83 c0 48 add $0x48,%eax -c01089fb: 83 ec 04 sub $0x4,%esp -c01089fe: 6a 0f push $0xf -c0108a00: ff 75 0c pushl 0xc(%ebp) -c0108a03: 50 push %eax -c0108a04: e8 40 0d 00 00 call c0109749 -c0108a09: 83 c4 10 add $0x10,%esp -} -c0108a0c: c9 leave -c0108a0d: c3 ret - -c0108a0e : - -// get_proc_name - get the name of proc -char * -get_proc_name(struct proc_struct *proc) { -c0108a0e: 55 push %ebp -c0108a0f: 89 e5 mov %esp,%ebp -c0108a11: 83 ec 08 sub $0x8,%esp - static char name[PROC_NAME_LEN + 1]; - memset(name, 0, sizeof(name)); -c0108a14: 83 ec 04 sub $0x4,%esp -c0108a17: 6a 10 push $0x10 -c0108a19: 6a 00 push $0x0 -c0108a1b: 68 04 9b 12 c0 push $0xc0129b04 -c0108a20: e8 41 0c 00 00 call c0109666 -c0108a25: 83 c4 10 add $0x10,%esp - return memcpy(name, proc->name, PROC_NAME_LEN); -c0108a28: 8b 45 08 mov 0x8(%ebp),%eax -c0108a2b: 83 c0 48 add $0x48,%eax -c0108a2e: 83 ec 04 sub $0x4,%esp -c0108a31: 6a 0f push $0xf -c0108a33: 50 push %eax -c0108a34: 68 04 9b 12 c0 push $0xc0129b04 -c0108a39: e8 0b 0d 00 00 call c0109749 -c0108a3e: 83 c4 10 add $0x10,%esp -} -c0108a41: c9 leave -c0108a42: c3 ret - -c0108a43 : - -// get_pid - alloc a unique pid for process -static int -get_pid(void) { -c0108a43: 55 push %ebp -c0108a44: 89 e5 mov %esp,%ebp -c0108a46: 83 ec 10 sub $0x10,%esp - static_assert(MAX_PID > MAX_PROCESS); - struct proc_struct *proc; - list_entry_t *list = &proc_list, *le; -c0108a49: c7 45 f8 24 9c 12 c0 movl $0xc0129c24,-0x8(%ebp) - static int next_safe = MAX_PID, last_pid = MAX_PID; - if (++ last_pid >= MAX_PID) { -c0108a50: a1 a0 6a 12 c0 mov 0xc0126aa0,%eax -c0108a55: 83 c0 01 add $0x1,%eax -c0108a58: a3 a0 6a 12 c0 mov %eax,0xc0126aa0 -c0108a5d: a1 a0 6a 12 c0 mov 0xc0126aa0,%eax -c0108a62: 3d ff 1f 00 00 cmp $0x1fff,%eax -c0108a67: 7e 0c jle c0108a75 - last_pid = 1; -c0108a69: c7 05 a0 6a 12 c0 01 movl $0x1,0xc0126aa0 -c0108a70: 00 00 00 - goto inside; -c0108a73: eb 13 jmp c0108a88 - } - if (last_pid >= next_safe) { -c0108a75: 8b 15 a0 6a 12 c0 mov 0xc0126aa0,%edx -c0108a7b: a1 a4 6a 12 c0 mov 0xc0126aa4,%eax -c0108a80: 39 c2 cmp %eax,%edx -c0108a82: 0f 8c ac 00 00 00 jl c0108b34 - inside: - next_safe = MAX_PID; -c0108a88: c7 05 a4 6a 12 c0 00 movl $0x2000,0xc0126aa4 -c0108a8f: 20 00 00 - repeat: - le = list; -c0108a92: 8b 45 f8 mov -0x8(%ebp),%eax -c0108a95: 89 45 fc mov %eax,-0x4(%ebp) - while ((le = list_next(le)) != list) { -c0108a98: eb 7f jmp c0108b19 - proc = le2proc(le, list_link); -c0108a9a: 8b 45 fc mov -0x4(%ebp),%eax -c0108a9d: 83 e8 58 sub $0x58,%eax -c0108aa0: 89 45 f4 mov %eax,-0xc(%ebp) - if (proc->pid == last_pid) { -c0108aa3: 8b 45 f4 mov -0xc(%ebp),%eax -c0108aa6: 8b 50 04 mov 0x4(%eax),%edx -c0108aa9: a1 a0 6a 12 c0 mov 0xc0126aa0,%eax -c0108aae: 39 c2 cmp %eax,%edx -c0108ab0: 75 3e jne c0108af0 - if (++ last_pid >= next_safe) { -c0108ab2: a1 a0 6a 12 c0 mov 0xc0126aa0,%eax -c0108ab7: 83 c0 01 add $0x1,%eax -c0108aba: a3 a0 6a 12 c0 mov %eax,0xc0126aa0 -c0108abf: 8b 15 a0 6a 12 c0 mov 0xc0126aa0,%edx -c0108ac5: a1 a4 6a 12 c0 mov 0xc0126aa4,%eax -c0108aca: 39 c2 cmp %eax,%edx -c0108acc: 7c 4b jl c0108b19 - if (last_pid >= MAX_PID) { -c0108ace: a1 a0 6a 12 c0 mov 0xc0126aa0,%eax -c0108ad3: 3d ff 1f 00 00 cmp $0x1fff,%eax -c0108ad8: 7e 0a jle c0108ae4 - last_pid = 1; -c0108ada: c7 05 a0 6a 12 c0 01 movl $0x1,0xc0126aa0 -c0108ae1: 00 00 00 - } - next_safe = MAX_PID; -c0108ae4: c7 05 a4 6a 12 c0 00 movl $0x2000,0xc0126aa4 -c0108aeb: 20 00 00 - goto repeat; -c0108aee: eb a2 jmp c0108a92 - } - } - else if (proc->pid > last_pid && next_safe > proc->pid) { -c0108af0: 8b 45 f4 mov -0xc(%ebp),%eax -c0108af3: 8b 50 04 mov 0x4(%eax),%edx -c0108af6: a1 a0 6a 12 c0 mov 0xc0126aa0,%eax -c0108afb: 39 c2 cmp %eax,%edx -c0108afd: 7e 1a jle c0108b19 -c0108aff: 8b 45 f4 mov -0xc(%ebp),%eax -c0108b02: 8b 50 04 mov 0x4(%eax),%edx -c0108b05: a1 a4 6a 12 c0 mov 0xc0126aa4,%eax -c0108b0a: 39 c2 cmp %eax,%edx -c0108b0c: 7d 0b jge c0108b19 - next_safe = proc->pid; -c0108b0e: 8b 45 f4 mov -0xc(%ebp),%eax -c0108b11: 8b 40 04 mov 0x4(%eax),%eax -c0108b14: a3 a4 6a 12 c0 mov %eax,0xc0126aa4 -c0108b19: 8b 45 fc mov -0x4(%ebp),%eax -c0108b1c: 89 45 f0 mov %eax,-0x10(%ebp) - * list_next - get the next entry - * @listelm: the list head - **/ -static inline list_entry_t * -list_next(list_entry_t *listelm) { - return listelm->next; -c0108b1f: 8b 45 f0 mov -0x10(%ebp),%eax -c0108b22: 8b 40 04 mov 0x4(%eax),%eax - if (last_pid >= next_safe) { - inside: - next_safe = MAX_PID; - repeat: - le = list; - while ((le = list_next(le)) != list) { -c0108b25: 89 45 fc mov %eax,-0x4(%ebp) -c0108b28: 8b 45 fc mov -0x4(%ebp),%eax -c0108b2b: 3b 45 f8 cmp -0x8(%ebp),%eax -c0108b2e: 0f 85 66 ff ff ff jne c0108a9a - else if (proc->pid > last_pid && next_safe > proc->pid) { - next_safe = proc->pid; - } - } - } - return last_pid; -c0108b34: a1 a0 6a 12 c0 mov 0xc0126aa0,%eax -} -c0108b39: c9 leave -c0108b3a: c3 ret - -c0108b3b : - -// proc_run - make process "proc" running on cpu -// NOTE: before call switch_to, should load base addr of "proc"'s new PDT -void -proc_run(struct proc_struct *proc) { -c0108b3b: 55 push %ebp -c0108b3c: 89 e5 mov %esp,%ebp -c0108b3e: 83 ec 18 sub $0x18,%esp - if (proc != current) { -c0108b41: a1 e8 7a 12 c0 mov 0xc0127ae8,%eax -c0108b46: 39 45 08 cmp %eax,0x8(%ebp) -c0108b49: 74 6b je c0108bb6 - bool intr_flag; - struct proc_struct *prev = current, *next = proc; -c0108b4b: a1 e8 7a 12 c0 mov 0xc0127ae8,%eax -c0108b50: 89 45 f4 mov %eax,-0xc(%ebp) -c0108b53: 8b 45 08 mov 0x8(%ebp),%eax -c0108b56: 89 45 f0 mov %eax,-0x10(%ebp) - local_intr_save(intr_flag); -c0108b59: e8 a0 fc ff ff call c01087fe <__intr_save> -c0108b5e: 89 45 ec mov %eax,-0x14(%ebp) - { - current = proc; -c0108b61: 8b 45 08 mov 0x8(%ebp),%eax -c0108b64: a3 e8 7a 12 c0 mov %eax,0xc0127ae8 - load_esp0(next->kstack + KSTACKSIZE); -c0108b69: 8b 45 f0 mov -0x10(%ebp),%eax -c0108b6c: 8b 40 0c mov 0xc(%eax),%eax -c0108b6f: 05 00 20 00 00 add $0x2000,%eax -c0108b74: 83 ec 0c sub $0xc,%esp -c0108b77: 50 push %eax -c0108b78: e8 be a8 ff ff call c010343b -c0108b7d: 83 c4 10 add $0x10,%esp - lcr3(next->cr3); -c0108b80: 8b 45 f0 mov -0x10(%ebp),%eax -c0108b83: 8b 40 40 mov 0x40(%eax),%eax -c0108b86: 89 45 e8 mov %eax,-0x18(%ebp) - asm volatile ("mov %0, %%cr0" :: "r" (cr0) : "memory"); -} - -static inline void -lcr3(uintptr_t cr3) { - asm volatile ("mov %0, %%cr3" :: "r" (cr3) : "memory"); -c0108b89: 8b 45 e8 mov -0x18(%ebp),%eax -c0108b8c: 0f 22 d8 mov %eax,%cr3 - switch_to(&(prev->context), &(next->context)); -c0108b8f: 8b 45 f0 mov -0x10(%ebp),%eax -c0108b92: 8d 50 1c lea 0x1c(%eax),%edx -c0108b95: 8b 45 f4 mov -0xc(%ebp),%eax -c0108b98: 83 c0 1c add $0x1c,%eax -c0108b9b: 83 ec 08 sub $0x8,%esp -c0108b9e: 52 push %edx -c0108b9f: 50 push %eax -c0108ba0: e8 19 fc ff ff call c01087be -c0108ba5: 83 c4 10 add $0x10,%esp - } - local_intr_restore(intr_flag); -c0108ba8: 83 ec 0c sub $0xc,%esp -c0108bab: ff 75 ec pushl -0x14(%ebp) -c0108bae: e8 75 fc ff ff call c0108828 <__intr_restore> -c0108bb3: 83 c4 10 add $0x10,%esp - } -} -c0108bb6: 90 nop -c0108bb7: c9 leave -c0108bb8: c3 ret - -c0108bb9 : - -// forkret -- the first kernel entry point of a new thread/process -// NOTE: the addr of forkret is setted in copy_thread function -// after switch_to, the current proc will execute here. -static void -forkret(void) { -c0108bb9: 55 push %ebp -c0108bba: 89 e5 mov %esp,%ebp -c0108bbc: 83 ec 08 sub $0x8,%esp - forkrets(current->tf); -c0108bbf: a1 e8 7a 12 c0 mov 0xc0127ae8,%eax -c0108bc4: 8b 40 3c mov 0x3c(%eax),%eax -c0108bc7: 83 ec 0c sub $0xc,%esp -c0108bca: 50 push %eax -c0108bcb: e8 ad a6 ff ff call c010327d -c0108bd0: 83 c4 10 add $0x10,%esp -} -c0108bd3: 90 nop -c0108bd4: c9 leave -c0108bd5: c3 ret - -c0108bd6 : - -// hash_proc - add proc into proc hash_list -static void -hash_proc(struct proc_struct *proc) { -c0108bd6: 55 push %ebp -c0108bd7: 89 e5 mov %esp,%ebp -c0108bd9: 53 push %ebx -c0108bda: 83 ec 24 sub $0x24,%esp - list_add(hash_list + pid_hashfn(proc->pid), &(proc->hash_link)); -c0108bdd: 8b 45 08 mov 0x8(%ebp),%eax -c0108be0: 8d 58 60 lea 0x60(%eax),%ebx -c0108be3: 8b 45 08 mov 0x8(%ebp),%eax -c0108be6: 8b 40 04 mov 0x4(%eax),%eax -c0108be9: 83 ec 08 sub $0x8,%esp -c0108bec: 6a 0a push $0xa -c0108bee: 50 push %eax -c0108bef: e8 09 12 00 00 call c0109dfd -c0108bf4: 83 c4 10 add $0x10,%esp -c0108bf7: c1 e0 03 shl $0x3,%eax -c0108bfa: 05 00 7b 12 c0 add $0xc0127b00,%eax -c0108bff: 89 45 f4 mov %eax,-0xc(%ebp) -c0108c02: 89 5d f0 mov %ebx,-0x10(%ebp) -c0108c05: 8b 45 f4 mov -0xc(%ebp),%eax -c0108c08: 89 45 ec mov %eax,-0x14(%ebp) -c0108c0b: 8b 45 f0 mov -0x10(%ebp),%eax -c0108c0e: 89 45 e8 mov %eax,-0x18(%ebp) - * Insert the new element @elm *after* the element @listelm which - * is already in the list. - * */ -static inline void -list_add_after(list_entry_t *listelm, list_entry_t *elm) { - __list_add(elm, listelm, listelm->next); -c0108c11: 8b 45 ec mov -0x14(%ebp),%eax -c0108c14: 8b 40 04 mov 0x4(%eax),%eax -c0108c17: 8b 55 e8 mov -0x18(%ebp),%edx -c0108c1a: 89 55 e4 mov %edx,-0x1c(%ebp) -c0108c1d: 8b 55 ec mov -0x14(%ebp),%edx -c0108c20: 89 55 e0 mov %edx,-0x20(%ebp) -c0108c23: 89 45 dc mov %eax,-0x24(%ebp) - * This is only for internal list manipulation where we know - * the prev/next entries already! - * */ -static inline void -__list_add(list_entry_t *elm, list_entry_t *prev, list_entry_t *next) { - prev->next = next->prev = elm; -c0108c26: 8b 45 dc mov -0x24(%ebp),%eax -c0108c29: 8b 55 e4 mov -0x1c(%ebp),%edx -c0108c2c: 89 10 mov %edx,(%eax) -c0108c2e: 8b 45 dc mov -0x24(%ebp),%eax -c0108c31: 8b 10 mov (%eax),%edx -c0108c33: 8b 45 e0 mov -0x20(%ebp),%eax -c0108c36: 89 50 04 mov %edx,0x4(%eax) - elm->next = next; -c0108c39: 8b 45 e4 mov -0x1c(%ebp),%eax -c0108c3c: 8b 55 dc mov -0x24(%ebp),%edx -c0108c3f: 89 50 04 mov %edx,0x4(%eax) - elm->prev = prev; -c0108c42: 8b 45 e4 mov -0x1c(%ebp),%eax -c0108c45: 8b 55 e0 mov -0x20(%ebp),%edx -c0108c48: 89 10 mov %edx,(%eax) -} -c0108c4a: 90 nop -c0108c4b: 8b 5d fc mov -0x4(%ebp),%ebx -c0108c4e: c9 leave -c0108c4f: c3 ret - -c0108c50 : - -// find_proc - find proc frome proc hash_list according to pid -struct proc_struct * -find_proc(int pid) { -c0108c50: 55 push %ebp -c0108c51: 89 e5 mov %esp,%ebp -c0108c53: 83 ec 18 sub $0x18,%esp - if (0 < pid && pid < MAX_PID) { -c0108c56: 83 7d 08 00 cmpl $0x0,0x8(%ebp) -c0108c5a: 7e 5d jle c0108cb9 -c0108c5c: 81 7d 08 ff 1f 00 00 cmpl $0x1fff,0x8(%ebp) -c0108c63: 7f 54 jg c0108cb9 - list_entry_t *list = hash_list + pid_hashfn(pid), *le = list; -c0108c65: 8b 45 08 mov 0x8(%ebp),%eax -c0108c68: 83 ec 08 sub $0x8,%esp -c0108c6b: 6a 0a push $0xa -c0108c6d: 50 push %eax -c0108c6e: e8 8a 11 00 00 call c0109dfd -c0108c73: 83 c4 10 add $0x10,%esp -c0108c76: c1 e0 03 shl $0x3,%eax -c0108c79: 05 00 7b 12 c0 add $0xc0127b00,%eax -c0108c7e: 89 45 f0 mov %eax,-0x10(%ebp) -c0108c81: 8b 45 f0 mov -0x10(%ebp),%eax -c0108c84: 89 45 f4 mov %eax,-0xc(%ebp) - while ((le = list_next(le)) != list) { -c0108c87: eb 19 jmp c0108ca2 - struct proc_struct *proc = le2proc(le, hash_link); -c0108c89: 8b 45 f4 mov -0xc(%ebp),%eax -c0108c8c: 83 e8 60 sub $0x60,%eax -c0108c8f: 89 45 ec mov %eax,-0x14(%ebp) - if (proc->pid == pid) { -c0108c92: 8b 45 ec mov -0x14(%ebp),%eax -c0108c95: 8b 40 04 mov 0x4(%eax),%eax -c0108c98: 3b 45 08 cmp 0x8(%ebp),%eax -c0108c9b: 75 05 jne c0108ca2 - return proc; -c0108c9d: 8b 45 ec mov -0x14(%ebp),%eax -c0108ca0: eb 1c jmp c0108cbe -c0108ca2: 8b 45 f4 mov -0xc(%ebp),%eax -c0108ca5: 89 45 e8 mov %eax,-0x18(%ebp) - * list_next - get the next entry - * @listelm: the list head - **/ -static inline list_entry_t * -list_next(list_entry_t *listelm) { - return listelm->next; -c0108ca8: 8b 45 e8 mov -0x18(%ebp),%eax -c0108cab: 8b 40 04 mov 0x4(%eax),%eax -// find_proc - find proc frome proc hash_list according to pid -struct proc_struct * -find_proc(int pid) { - if (0 < pid && pid < MAX_PID) { - list_entry_t *list = hash_list + pid_hashfn(pid), *le = list; - while ((le = list_next(le)) != list) { -c0108cae: 89 45 f4 mov %eax,-0xc(%ebp) -c0108cb1: 8b 45 f4 mov -0xc(%ebp),%eax -c0108cb4: 3b 45 f0 cmp -0x10(%ebp),%eax -c0108cb7: 75 d0 jne c0108c89 - if (proc->pid == pid) { - return proc; - } - } - } - return NULL; -c0108cb9: b8 00 00 00 00 mov $0x0,%eax -} -c0108cbe: c9 leave -c0108cbf: c3 ret - -c0108cc0 : - -// kernel_thread - create a kernel thread using "fn" function -// NOTE: the contents of temp trapframe tf will be copied to -// proc->tf in do_fork-->copy_thread function -int -kernel_thread(int (*fn)(void *), void *arg, uint32_t clone_flags) { -c0108cc0: 55 push %ebp -c0108cc1: 89 e5 mov %esp,%ebp -c0108cc3: 83 ec 58 sub $0x58,%esp - struct trapframe tf; - memset(&tf, 0, sizeof(struct trapframe)); -c0108cc6: 83 ec 04 sub $0x4,%esp -c0108cc9: 6a 4c push $0x4c -c0108ccb: 6a 00 push $0x0 -c0108ccd: 8d 45 ac lea -0x54(%ebp),%eax -c0108cd0: 50 push %eax -c0108cd1: e8 90 09 00 00 call c0109666 -c0108cd6: 83 c4 10 add $0x10,%esp - tf.tf_cs = KERNEL_CS; -c0108cd9: 66 c7 45 e8 08 00 movw $0x8,-0x18(%ebp) - tf.tf_ds = tf.tf_es = tf.tf_ss = KERNEL_DS; -c0108cdf: 66 c7 45 f4 10 00 movw $0x10,-0xc(%ebp) -c0108ce5: 0f b7 45 f4 movzwl -0xc(%ebp),%eax -c0108ce9: 66 89 45 d4 mov %ax,-0x2c(%ebp) -c0108ced: 0f b7 45 d4 movzwl -0x2c(%ebp),%eax -c0108cf1: 66 89 45 d8 mov %ax,-0x28(%ebp) - tf.tf_regs.reg_ebx = (uint32_t)fn; -c0108cf5: 8b 45 08 mov 0x8(%ebp),%eax -c0108cf8: 89 45 bc mov %eax,-0x44(%ebp) - tf.tf_regs.reg_edx = (uint32_t)arg; -c0108cfb: 8b 45 0c mov 0xc(%ebp),%eax -c0108cfe: 89 45 c0 mov %eax,-0x40(%ebp) - tf.tf_eip = (uint32_t)kernel_thread_entry; -c0108d01: b8 f5 87 10 c0 mov $0xc01087f5,%eax -c0108d06: 89 45 e4 mov %eax,-0x1c(%ebp) - return do_fork(clone_flags | CLONE_VM, 0, &tf); -c0108d09: 8b 45 10 mov 0x10(%ebp),%eax -c0108d0c: 80 cc 01 or $0x1,%ah -c0108d0f: 89 c2 mov %eax,%edx -c0108d11: 83 ec 04 sub $0x4,%esp -c0108d14: 8d 45 ac lea -0x54(%ebp),%eax -c0108d17: 50 push %eax -c0108d18: 6a 00 push $0x0 -c0108d1a: 52 push %edx -c0108d1b: e8 3c 01 00 00 call c0108e5c -c0108d20: 83 c4 10 add $0x10,%esp -} -c0108d23: c9 leave -c0108d24: c3 ret - -c0108d25 : - -// setup_kstack - alloc pages with size KSTACKPAGE as process kernel stack -static int -setup_kstack(struct proc_struct *proc) { -c0108d25: 55 push %ebp -c0108d26: 89 e5 mov %esp,%ebp -c0108d28: 83 ec 18 sub $0x18,%esp - struct Page *page = alloc_pages(KSTACKPAGE); -c0108d2b: 83 ec 0c sub $0xc,%esp -c0108d2e: 6a 02 push $0x2 -c0108d30: e8 5a a8 ff ff call c010358f -c0108d35: 83 c4 10 add $0x10,%esp -c0108d38: 89 45 f4 mov %eax,-0xc(%ebp) - if (page != NULL) { -c0108d3b: 83 7d f4 00 cmpl $0x0,-0xc(%ebp) -c0108d3f: 74 1d je c0108d5e - proc->kstack = (uintptr_t)page2kva(page); -c0108d41: 83 ec 0c sub $0xc,%esp -c0108d44: ff 75 f4 pushl -0xc(%ebp) -c0108d47: e8 53 fb ff ff call c010889f -c0108d4c: 83 c4 10 add $0x10,%esp -c0108d4f: 89 c2 mov %eax,%edx -c0108d51: 8b 45 08 mov 0x8(%ebp),%eax -c0108d54: 89 50 0c mov %edx,0xc(%eax) - return 0; -c0108d57: b8 00 00 00 00 mov $0x0,%eax -c0108d5c: eb 05 jmp c0108d63 - } - return -E_NO_MEM; -c0108d5e: b8 fc ff ff ff mov $0xfffffffc,%eax -} -c0108d63: c9 leave -c0108d64: c3 ret - -c0108d65 : - -// put_kstack - free the memory space of process kernel stack -static void -put_kstack(struct proc_struct *proc) { -c0108d65: 55 push %ebp -c0108d66: 89 e5 mov %esp,%ebp -c0108d68: 83 ec 08 sub $0x8,%esp - free_pages(kva2page((void *)(proc->kstack)), KSTACKPAGE); -c0108d6b: 8b 45 08 mov 0x8(%ebp),%eax -c0108d6e: 8b 40 0c mov 0xc(%eax),%eax -c0108d71: 83 ec 0c sub $0xc,%esp -c0108d74: 50 push %eax -c0108d75: e8 6a fb ff ff call c01088e4 -c0108d7a: 83 c4 10 add $0x10,%esp -c0108d7d: 83 ec 08 sub $0x8,%esp -c0108d80: 6a 02 push $0x2 -c0108d82: 50 push %eax -c0108d83: e8 73 a8 ff ff call c01035fb -c0108d88: 83 c4 10 add $0x10,%esp -} -c0108d8b: 90 nop -c0108d8c: c9 leave -c0108d8d: c3 ret - -c0108d8e : - -// copy_mm - process "proc" duplicate OR share process "current"'s mm according clone_flags -// - if clone_flags & CLONE_VM, then "share" ; else "duplicate" -static int -copy_mm(uint32_t clone_flags, struct proc_struct *proc) { -c0108d8e: 55 push %ebp -c0108d8f: 89 e5 mov %esp,%ebp -c0108d91: 83 ec 08 sub $0x8,%esp - assert(current->mm == NULL); -c0108d94: a1 e8 7a 12 c0 mov 0xc0127ae8,%eax -c0108d99: 8b 40 18 mov 0x18(%eax),%eax -c0108d9c: 85 c0 test %eax,%eax -c0108d9e: 74 19 je c0108db9 -c0108da0: 68 24 c0 10 c0 push $0xc010c024 -c0108da5: 68 38 c0 10 c0 push $0xc010c038 -c0108daa: 68 fe 00 00 00 push $0xfe -c0108daf: 68 4d c0 10 c0 push $0xc010c04d -c0108db4: e8 2b 76 ff ff call c01003e4 <__panic> - /* do nothing in this project */ - return 0; -c0108db9: b8 00 00 00 00 mov $0x0,%eax -} -c0108dbe: c9 leave -c0108dbf: c3 ret - -c0108dc0 : - -// copy_thread - setup the trapframe on the process's kernel stack top and -// - setup the kernel entry point and stack of process -static void -copy_thread(struct proc_struct *proc, uintptr_t esp, struct trapframe *tf) { -c0108dc0: 55 push %ebp -c0108dc1: 89 e5 mov %esp,%ebp -c0108dc3: 57 push %edi -c0108dc4: 56 push %esi -c0108dc5: 53 push %ebx - proc->tf = (struct trapframe *)(proc->kstack + KSTACKSIZE) - 1; -c0108dc6: 8b 45 08 mov 0x8(%ebp),%eax -c0108dc9: 8b 40 0c mov 0xc(%eax),%eax -c0108dcc: 05 b4 1f 00 00 add $0x1fb4,%eax -c0108dd1: 89 c2 mov %eax,%edx -c0108dd3: 8b 45 08 mov 0x8(%ebp),%eax -c0108dd6: 89 50 3c mov %edx,0x3c(%eax) - *(proc->tf) = *tf; -c0108dd9: 8b 45 08 mov 0x8(%ebp),%eax -c0108ddc: 8b 40 3c mov 0x3c(%eax),%eax -c0108ddf: 8b 55 10 mov 0x10(%ebp),%edx -c0108de2: 89 d3 mov %edx,%ebx -c0108de4: ba 4c 00 00 00 mov $0x4c,%edx -c0108de9: 8b 0b mov (%ebx),%ecx -c0108deb: 89 08 mov %ecx,(%eax) -c0108ded: 8b 4c 13 fc mov -0x4(%ebx,%edx,1),%ecx -c0108df1: 89 4c 10 fc mov %ecx,-0x4(%eax,%edx,1) -c0108df5: 8d 78 04 lea 0x4(%eax),%edi -c0108df8: 83 e7 fc and $0xfffffffc,%edi -c0108dfb: 29 f8 sub %edi,%eax -c0108dfd: 29 c3 sub %eax,%ebx -c0108dff: 01 c2 add %eax,%edx -c0108e01: 83 e2 fc and $0xfffffffc,%edx -c0108e04: 89 d0 mov %edx,%eax -c0108e06: c1 e8 02 shr $0x2,%eax -c0108e09: 89 de mov %ebx,%esi -c0108e0b: 89 c1 mov %eax,%ecx -c0108e0d: f3 a5 rep movsl %ds:(%esi),%es:(%edi) - proc->tf->tf_regs.reg_eax = 0; -c0108e0f: 8b 45 08 mov 0x8(%ebp),%eax -c0108e12: 8b 40 3c mov 0x3c(%eax),%eax -c0108e15: c7 40 1c 00 00 00 00 movl $0x0,0x1c(%eax) - proc->tf->tf_esp = esp; -c0108e1c: 8b 45 08 mov 0x8(%ebp),%eax -c0108e1f: 8b 40 3c mov 0x3c(%eax),%eax -c0108e22: 8b 55 0c mov 0xc(%ebp),%edx -c0108e25: 89 50 44 mov %edx,0x44(%eax) - proc->tf->tf_eflags |= FL_IF; -c0108e28: 8b 45 08 mov 0x8(%ebp),%eax -c0108e2b: 8b 40 3c mov 0x3c(%eax),%eax -c0108e2e: 8b 55 08 mov 0x8(%ebp),%edx -c0108e31: 8b 52 3c mov 0x3c(%edx),%edx -c0108e34: 8b 52 40 mov 0x40(%edx),%edx -c0108e37: 80 ce 02 or $0x2,%dh -c0108e3a: 89 50 40 mov %edx,0x40(%eax) - - proc->context.eip = (uintptr_t)forkret; -c0108e3d: ba b9 8b 10 c0 mov $0xc0108bb9,%edx -c0108e42: 8b 45 08 mov 0x8(%ebp),%eax -c0108e45: 89 50 1c mov %edx,0x1c(%eax) - proc->context.esp = (uintptr_t)(proc->tf); -c0108e48: 8b 45 08 mov 0x8(%ebp),%eax -c0108e4b: 8b 40 3c mov 0x3c(%eax),%eax -c0108e4e: 89 c2 mov %eax,%edx -c0108e50: 8b 45 08 mov 0x8(%ebp),%eax -c0108e53: 89 50 20 mov %edx,0x20(%eax) -} -c0108e56: 90 nop -c0108e57: 5b pop %ebx -c0108e58: 5e pop %esi -c0108e59: 5f pop %edi -c0108e5a: 5d pop %ebp -c0108e5b: c3 ret - -c0108e5c : - * @clone_flags: used to guide how to clone the child process - * @stack: the parent's user stack pointer. if stack==0, It means to fork a kernel thread. - * @tf: the trapframe info, which will be copied to child process's proc->tf - */ -int -do_fork(uint32_t clone_flags, uintptr_t stack, struct trapframe *tf) { -c0108e5c: 55 push %ebp -c0108e5d: 89 e5 mov %esp,%ebp -c0108e5f: 83 ec 38 sub $0x38,%esp - int ret = -E_NO_FREE_PROC; -c0108e62: c7 45 f4 fb ff ff ff movl $0xfffffffb,-0xc(%ebp) - struct proc_struct *proc; - if (nr_process >= MAX_PROCESS) { -c0108e69: a1 00 9b 12 c0 mov 0xc0129b00,%eax -c0108e6e: 3d ff 0f 00 00 cmp $0xfff,%eax -c0108e73: 0f 8f 14 01 00 00 jg c0108f8d - goto fork_out; - } - ret = -E_NO_MEM; -c0108e79: c7 45 f4 fc ff ff ff movl $0xfffffffc,-0xc(%ebp) - // 3. call copy_mm to dup OR share mm according clone_flag - // 4. call copy_thread to setup tf & context in proc_struct - // 5. insert proc_struct into hash_list && proc_list - // 6. call wakeup_proc to make the new child process RUNNABLE - // 7. set ret vaule using child proc's pid - proc = alloc_proc(); -c0108e80: e8 9e fa ff ff call c0108923 -c0108e85: 89 45 f0 mov %eax,-0x10(%ebp) - if (proc == NULL) { -c0108e88: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) -c0108e8c: 0f 84 fe 00 00 00 je c0108f90 - goto fork_out; - } - proc->parent = current; -c0108e92: 8b 15 e8 7a 12 c0 mov 0xc0127ae8,%edx -c0108e98: 8b 45 f0 mov -0x10(%ebp),%eax -c0108e9b: 89 50 14 mov %edx,0x14(%eax) - if (setup_kstack(proc) != 0) { -c0108e9e: 83 ec 0c sub $0xc,%esp -c0108ea1: ff 75 f0 pushl -0x10(%ebp) -c0108ea4: e8 7c fe ff ff call c0108d25 -c0108ea9: 83 c4 10 add $0x10,%esp -c0108eac: 85 c0 test %eax,%eax -c0108eae: 0f 85 f3 00 00 00 jne c0108fa7 - goto bad_fork_cleanup_proc; - } - if (copy_mm(clone_flags, proc) != 0) { -c0108eb4: 83 ec 08 sub $0x8,%esp -c0108eb7: ff 75 f0 pushl -0x10(%ebp) -c0108eba: ff 75 08 pushl 0x8(%ebp) -c0108ebd: e8 cc fe ff ff call c0108d8e -c0108ec2: 83 c4 10 add $0x10,%esp -c0108ec5: 85 c0 test %eax,%eax -c0108ec7: 0f 85 c9 00 00 00 jne c0108f96 - goto bad_fork_cleanup_kstack; - } - - // Copy parent's trapframe - // Also set syscall (exec/fork) return value to be 0. - copy_thread(proc, stack, tf); -c0108ecd: 83 ec 04 sub $0x4,%esp -c0108ed0: ff 75 10 pushl 0x10(%ebp) -c0108ed3: ff 75 0c pushl 0xc(%ebp) -c0108ed6: ff 75 f0 pushl -0x10(%ebp) -c0108ed9: e8 e2 fe ff ff call c0108dc0 -c0108ede: 83 c4 10 add $0x10,%esp - - bool intr_flag; - local_intr_save(intr_flag); -c0108ee1: e8 18 f9 ff ff call c01087fe <__intr_save> -c0108ee6: 89 45 ec mov %eax,-0x14(%ebp) - { - proc->pid = get_pid(); -c0108ee9: e8 55 fb ff ff call c0108a43 -c0108eee: 89 c2 mov %eax,%edx -c0108ef0: 8b 45 f0 mov -0x10(%ebp),%eax -c0108ef3: 89 50 04 mov %edx,0x4(%eax) - hash_proc(proc); -c0108ef6: 83 ec 0c sub $0xc,%esp -c0108ef9: ff 75 f0 pushl -0x10(%ebp) -c0108efc: e8 d5 fc ff ff call c0108bd6 -c0108f01: 83 c4 10 add $0x10,%esp - list_add(&proc_list, &(proc->list_link)); -c0108f04: 8b 45 f0 mov -0x10(%ebp),%eax -c0108f07: 83 c0 58 add $0x58,%eax -c0108f0a: c7 45 e8 24 9c 12 c0 movl $0xc0129c24,-0x18(%ebp) -c0108f11: 89 45 e4 mov %eax,-0x1c(%ebp) -c0108f14: 8b 45 e8 mov -0x18(%ebp),%eax -c0108f17: 89 45 e0 mov %eax,-0x20(%ebp) -c0108f1a: 8b 45 e4 mov -0x1c(%ebp),%eax -c0108f1d: 89 45 dc mov %eax,-0x24(%ebp) - * Insert the new element @elm *after* the element @listelm which - * is already in the list. - * */ -static inline void -list_add_after(list_entry_t *listelm, list_entry_t *elm) { - __list_add(elm, listelm, listelm->next); -c0108f20: 8b 45 e0 mov -0x20(%ebp),%eax -c0108f23: 8b 40 04 mov 0x4(%eax),%eax -c0108f26: 8b 55 dc mov -0x24(%ebp),%edx -c0108f29: 89 55 d8 mov %edx,-0x28(%ebp) -c0108f2c: 8b 55 e0 mov -0x20(%ebp),%edx -c0108f2f: 89 55 d4 mov %edx,-0x2c(%ebp) -c0108f32: 89 45 d0 mov %eax,-0x30(%ebp) - * This is only for internal list manipulation where we know - * the prev/next entries already! - * */ -static inline void -__list_add(list_entry_t *elm, list_entry_t *prev, list_entry_t *next) { - prev->next = next->prev = elm; -c0108f35: 8b 45 d0 mov -0x30(%ebp),%eax -c0108f38: 8b 55 d8 mov -0x28(%ebp),%edx -c0108f3b: 89 10 mov %edx,(%eax) -c0108f3d: 8b 45 d0 mov -0x30(%ebp),%eax -c0108f40: 8b 10 mov (%eax),%edx -c0108f42: 8b 45 d4 mov -0x2c(%ebp),%eax -c0108f45: 89 50 04 mov %edx,0x4(%eax) - elm->next = next; -c0108f48: 8b 45 d8 mov -0x28(%ebp),%eax -c0108f4b: 8b 55 d0 mov -0x30(%ebp),%edx -c0108f4e: 89 50 04 mov %edx,0x4(%eax) - elm->prev = prev; -c0108f51: 8b 45 d8 mov -0x28(%ebp),%eax -c0108f54: 8b 55 d4 mov -0x2c(%ebp),%edx -c0108f57: 89 10 mov %edx,(%eax) - nr_process ++; -c0108f59: a1 00 9b 12 c0 mov 0xc0129b00,%eax -c0108f5e: 83 c0 01 add $0x1,%eax -c0108f61: a3 00 9b 12 c0 mov %eax,0xc0129b00 - } - local_intr_restore(intr_flag); -c0108f66: 83 ec 0c sub $0xc,%esp -c0108f69: ff 75 ec pushl -0x14(%ebp) -c0108f6c: e8 b7 f8 ff ff call c0108828 <__intr_restore> -c0108f71: 83 c4 10 add $0x10,%esp - - wakeup_proc(proc); -c0108f74: 83 ec 0c sub $0xc,%esp -c0108f77: ff 75 f0 pushl -0x10(%ebp) -c0108f7a: e8 ac 02 00 00 call c010922b -c0108f7f: 83 c4 10 add $0x10,%esp - - ret = proc->pid; -c0108f82: 8b 45 f0 mov -0x10(%ebp),%eax -c0108f85: 8b 40 04 mov 0x4(%eax),%eax -c0108f88: 89 45 f4 mov %eax,-0xc(%ebp) -c0108f8b: eb 04 jmp c0108f91 -int -do_fork(uint32_t clone_flags, uintptr_t stack, struct trapframe *tf) { - int ret = -E_NO_FREE_PROC; - struct proc_struct *proc; - if (nr_process >= MAX_PROCESS) { - goto fork_out; -c0108f8d: 90 nop -c0108f8e: eb 01 jmp c0108f91 - // 5. insert proc_struct into hash_list && proc_list - // 6. call wakeup_proc to make the new child process RUNNABLE - // 7. set ret vaule using child proc's pid - proc = alloc_proc(); - if (proc == NULL) { - goto fork_out; -c0108f90: 90 nop - - wakeup_proc(proc); - - ret = proc->pid; -fork_out: - return ret; -c0108f91: 8b 45 f4 mov -0xc(%ebp),%eax -c0108f94: eb 22 jmp c0108fb8 - proc->parent = current; - if (setup_kstack(proc) != 0) { - goto bad_fork_cleanup_proc; - } - if (copy_mm(clone_flags, proc) != 0) { - goto bad_fork_cleanup_kstack; -c0108f96: 90 nop - ret = proc->pid; -fork_out: - return ret; - -bad_fork_cleanup_kstack: - put_kstack(proc); -c0108f97: 83 ec 0c sub $0xc,%esp -c0108f9a: ff 75 f0 pushl -0x10(%ebp) -c0108f9d: e8 c3 fd ff ff call c0108d65 -c0108fa2: 83 c4 10 add $0x10,%esp -c0108fa5: eb 01 jmp c0108fa8 - if (proc == NULL) { - goto fork_out; - } - proc->parent = current; - if (setup_kstack(proc) != 0) { - goto bad_fork_cleanup_proc; -c0108fa7: 90 nop - return ret; - -bad_fork_cleanup_kstack: - put_kstack(proc); -bad_fork_cleanup_proc: - kfree(proc); -c0108fa8: 83 ec 0c sub $0xc,%esp -c0108fab: ff 75 f0 pushl -0x10(%ebp) -c0108fae: e8 f4 d9 ff ff call c01069a7 -c0108fb3: 83 c4 10 add $0x10,%esp - goto fork_out; -c0108fb6: eb d9 jmp c0108f91 -} -c0108fb8: c9 leave -c0108fb9: c3 ret - -c0108fba : -// do_exit - called by sys_exit -// 1. call exit_mmap & put_pgdir & mm_destroy to free the almost all memory space of process -// 2. set process' state as PROC_ZOMBIE, then call wakeup_proc(parent) to ask parent reclaim itself. -// 3. call scheduler to switch to other process -int -do_exit(int error_code) { -c0108fba: 55 push %ebp -c0108fbb: 89 e5 mov %esp,%ebp -c0108fbd: 83 ec 08 sub $0x8,%esp - panic("process exit!!.\n"); -c0108fc0: 83 ec 04 sub $0x4,%esp -c0108fc3: 68 61 c0 10 c0 push $0xc010c061 -c0108fc8: 68 64 01 00 00 push $0x164 -c0108fcd: 68 4d c0 10 c0 push $0xc010c04d -c0108fd2: e8 0d 74 ff ff call c01003e4 <__panic> - -c0108fd7 : -} - -// init_main - the second kernel thread used to create user_main kernel threads -static int -init_main(void *arg) { -c0108fd7: 55 push %ebp -c0108fd8: 89 e5 mov %esp,%ebp -c0108fda: 83 ec 08 sub $0x8,%esp - cprintf("this initproc, pid = %d, name = \"%s\"\n", current->pid, get_proc_name(current)); -c0108fdd: a1 e8 7a 12 c0 mov 0xc0127ae8,%eax -c0108fe2: 83 ec 0c sub $0xc,%esp -c0108fe5: 50 push %eax -c0108fe6: e8 23 fa ff ff call c0108a0e -c0108feb: 83 c4 10 add $0x10,%esp -c0108fee: 89 c2 mov %eax,%edx -c0108ff0: a1 e8 7a 12 c0 mov 0xc0127ae8,%eax -c0108ff5: 8b 40 04 mov 0x4(%eax),%eax -c0108ff8: 83 ec 04 sub $0x4,%esp -c0108ffb: 52 push %edx -c0108ffc: 50 push %eax -c0108ffd: 68 74 c0 10 c0 push $0xc010c074 -c0109002: e8 77 72 ff ff call c010027e -c0109007: 83 c4 10 add $0x10,%esp - cprintf("To U: \"%s\".\n", (const char *)arg); -c010900a: 83 ec 08 sub $0x8,%esp -c010900d: ff 75 08 pushl 0x8(%ebp) -c0109010: 68 9a c0 10 c0 push $0xc010c09a -c0109015: e8 64 72 ff ff call c010027e -c010901a: 83 c4 10 add $0x10,%esp - cprintf("To U: \"en.., Bye, Bye. :)\"\n"); -c010901d: 83 ec 0c sub $0xc,%esp -c0109020: 68 a7 c0 10 c0 push $0xc010c0a7 -c0109025: e8 54 72 ff ff call c010027e -c010902a: 83 c4 10 add $0x10,%esp - return 0; -c010902d: b8 00 00 00 00 mov $0x0,%eax -} -c0109032: c9 leave -c0109033: c3 ret - -c0109034 : - -// proc_init - set up the first kernel thread idleproc "idle" by itself and -// - create the second kernel thread init_main -void -proc_init(void) { -c0109034: 55 push %ebp -c0109035: 89 e5 mov %esp,%ebp -c0109037: 83 ec 18 sub $0x18,%esp -c010903a: c7 45 e8 24 9c 12 c0 movl $0xc0129c24,-0x18(%ebp) - * list_init - initialize a new entry - * @elm: new entry to be initialized - * */ -static inline void -list_init(list_entry_t *elm) { - elm->prev = elm->next = elm; -c0109041: 8b 45 e8 mov -0x18(%ebp),%eax -c0109044: 8b 55 e8 mov -0x18(%ebp),%edx -c0109047: 89 50 04 mov %edx,0x4(%eax) -c010904a: 8b 45 e8 mov -0x18(%ebp),%eax -c010904d: 8b 50 04 mov 0x4(%eax),%edx -c0109050: 8b 45 e8 mov -0x18(%ebp),%eax -c0109053: 89 10 mov %edx,(%eax) - int i; - - list_init(&proc_list); - for (i = 0; i < HASH_LIST_SIZE; i ++) { -c0109055: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) -c010905c: eb 26 jmp c0109084 - list_init(hash_list + i); -c010905e: 8b 45 f4 mov -0xc(%ebp),%eax -c0109061: c1 e0 03 shl $0x3,%eax -c0109064: 05 00 7b 12 c0 add $0xc0127b00,%eax -c0109069: 89 45 f0 mov %eax,-0x10(%ebp) -c010906c: 8b 45 f0 mov -0x10(%ebp),%eax -c010906f: 8b 55 f0 mov -0x10(%ebp),%edx -c0109072: 89 50 04 mov %edx,0x4(%eax) -c0109075: 8b 45 f0 mov -0x10(%ebp),%eax -c0109078: 8b 50 04 mov 0x4(%eax),%edx -c010907b: 8b 45 f0 mov -0x10(%ebp),%eax -c010907e: 89 10 mov %edx,(%eax) -void -proc_init(void) { - int i; - - list_init(&proc_list); - for (i = 0; i < HASH_LIST_SIZE; i ++) { -c0109080: 83 45 f4 01 addl $0x1,-0xc(%ebp) -c0109084: 81 7d f4 ff 03 00 00 cmpl $0x3ff,-0xc(%ebp) -c010908b: 7e d1 jle c010905e - list_init(hash_list + i); - } - - if ((idleproc = alloc_proc()) == NULL) { -c010908d: e8 91 f8 ff ff call c0108923 -c0109092: a3 e0 7a 12 c0 mov %eax,0xc0127ae0 -c0109097: a1 e0 7a 12 c0 mov 0xc0127ae0,%eax -c010909c: 85 c0 test %eax,%eax -c010909e: 75 17 jne c01090b7 - panic("cannot alloc idleproc.\n"); -c01090a0: 83 ec 04 sub $0x4,%esp -c01090a3: 68 c3 c0 10 c0 push $0xc010c0c3 -c01090a8: 68 7c 01 00 00 push $0x17c -c01090ad: 68 4d c0 10 c0 push $0xc010c04d -c01090b2: e8 2d 73 ff ff call c01003e4 <__panic> - } - - idleproc->pid = 0; -c01090b7: a1 e0 7a 12 c0 mov 0xc0127ae0,%eax -c01090bc: c7 40 04 00 00 00 00 movl $0x0,0x4(%eax) - idleproc->state = PROC_RUNNABLE; -c01090c3: a1 e0 7a 12 c0 mov 0xc0127ae0,%eax -c01090c8: c7 00 02 00 00 00 movl $0x2,(%eax) - idleproc->kstack = (uintptr_t)bootstack; -c01090ce: a1 e0 7a 12 c0 mov 0xc0127ae0,%eax -c01090d3: ba 00 40 12 c0 mov $0xc0124000,%edx -c01090d8: 89 50 0c mov %edx,0xc(%eax) - idleproc->need_resched = 1; -c01090db: a1 e0 7a 12 c0 mov 0xc0127ae0,%eax -c01090e0: c7 40 10 01 00 00 00 movl $0x1,0x10(%eax) - set_proc_name(idleproc, "idle"); -c01090e7: a1 e0 7a 12 c0 mov 0xc0127ae0,%eax -c01090ec: 83 ec 08 sub $0x8,%esp -c01090ef: 68 db c0 10 c0 push $0xc010c0db -c01090f4: 50 push %eax -c01090f5: e8 df f8 ff ff call c01089d9 -c01090fa: 83 c4 10 add $0x10,%esp - nr_process ++; -c01090fd: a1 00 9b 12 c0 mov 0xc0129b00,%eax -c0109102: 83 c0 01 add $0x1,%eax -c0109105: a3 00 9b 12 c0 mov %eax,0xc0129b00 - - current = idleproc; -c010910a: a1 e0 7a 12 c0 mov 0xc0127ae0,%eax -c010910f: a3 e8 7a 12 c0 mov %eax,0xc0127ae8 - - int pid = kernel_thread(init_main, "Hello world!!", 0); -c0109114: 83 ec 04 sub $0x4,%esp -c0109117: 6a 00 push $0x0 -c0109119: 68 e0 c0 10 c0 push $0xc010c0e0 -c010911e: 68 d7 8f 10 c0 push $0xc0108fd7 -c0109123: e8 98 fb ff ff call c0108cc0 -c0109128: 83 c4 10 add $0x10,%esp -c010912b: 89 45 ec mov %eax,-0x14(%ebp) - if (pid <= 0) { -c010912e: 83 7d ec 00 cmpl $0x0,-0x14(%ebp) -c0109132: 7f 17 jg c010914b - panic("create init_main failed.\n"); -c0109134: 83 ec 04 sub $0x4,%esp -c0109137: 68 ee c0 10 c0 push $0xc010c0ee -c010913c: 68 8a 01 00 00 push $0x18a -c0109141: 68 4d c0 10 c0 push $0xc010c04d -c0109146: e8 99 72 ff ff call c01003e4 <__panic> - } - - initproc = find_proc(pid); -c010914b: 83 ec 0c sub $0xc,%esp -c010914e: ff 75 ec pushl -0x14(%ebp) -c0109151: e8 fa fa ff ff call c0108c50 -c0109156: 83 c4 10 add $0x10,%esp -c0109159: a3 e4 7a 12 c0 mov %eax,0xc0127ae4 - set_proc_name(initproc, "init"); -c010915e: a1 e4 7a 12 c0 mov 0xc0127ae4,%eax -c0109163: 83 ec 08 sub $0x8,%esp -c0109166: 68 08 c1 10 c0 push $0xc010c108 -c010916b: 50 push %eax -c010916c: e8 68 f8 ff ff call c01089d9 -c0109171: 83 c4 10 add $0x10,%esp - - assert(idleproc != NULL && idleproc->pid == 0); -c0109174: a1 e0 7a 12 c0 mov 0xc0127ae0,%eax -c0109179: 85 c0 test %eax,%eax -c010917b: 74 0c je c0109189 -c010917d: a1 e0 7a 12 c0 mov 0xc0127ae0,%eax -c0109182: 8b 40 04 mov 0x4(%eax),%eax -c0109185: 85 c0 test %eax,%eax -c0109187: 74 19 je c01091a2 -c0109189: 68 10 c1 10 c0 push $0xc010c110 -c010918e: 68 38 c0 10 c0 push $0xc010c038 -c0109193: 68 90 01 00 00 push $0x190 -c0109198: 68 4d c0 10 c0 push $0xc010c04d -c010919d: e8 42 72 ff ff call c01003e4 <__panic> - assert(initproc != NULL && initproc->pid == 1); -c01091a2: a1 e4 7a 12 c0 mov 0xc0127ae4,%eax -c01091a7: 85 c0 test %eax,%eax -c01091a9: 74 0d je c01091b8 -c01091ab: a1 e4 7a 12 c0 mov 0xc0127ae4,%eax -c01091b0: 8b 40 04 mov 0x4(%eax),%eax -c01091b3: 83 f8 01 cmp $0x1,%eax -c01091b6: 74 19 je c01091d1 -c01091b8: 68 38 c1 10 c0 push $0xc010c138 -c01091bd: 68 38 c0 10 c0 push $0xc010c038 -c01091c2: 68 91 01 00 00 push $0x191 -c01091c7: 68 4d c0 10 c0 push $0xc010c04d -c01091cc: e8 13 72 ff ff call c01003e4 <__panic> -} -c01091d1: 90 nop -c01091d2: c9 leave -c01091d3: c3 ret - -c01091d4 : - -// cpu_idle - at the end of kern_init, the first kernel thread idleproc will do below works -void -cpu_idle(void) { -c01091d4: 55 push %ebp -c01091d5: 89 e5 mov %esp,%ebp -c01091d7: 83 ec 08 sub $0x8,%esp - while (1) { - if (current->need_resched) { -c01091da: a1 e8 7a 12 c0 mov 0xc0127ae8,%eax -c01091df: 8b 40 10 mov 0x10(%eax),%eax -c01091e2: 85 c0 test %eax,%eax -c01091e4: 74 f4 je c01091da - schedule(); -c01091e6: e8 7c 00 00 00 call c0109267 - } - } -c01091eb: eb ed jmp c01091da - -c01091ed <__intr_save>: -#include -#include -#include - -static inline bool -__intr_save(void) { -c01091ed: 55 push %ebp -c01091ee: 89 e5 mov %esp,%ebp -c01091f0: 83 ec 18 sub $0x18,%esp -} - -static inline uint32_t -read_eflags(void) { - uint32_t eflags; - asm volatile ("pushfl; popl %0" : "=r" (eflags)); -c01091f3: 9c pushf -c01091f4: 58 pop %eax -c01091f5: 89 45 f4 mov %eax,-0xc(%ebp) - return eflags; -c01091f8: 8b 45 f4 mov -0xc(%ebp),%eax - if (read_eflags() & FL_IF) { -c01091fb: 25 00 02 00 00 and $0x200,%eax -c0109200: 85 c0 test %eax,%eax -c0109202: 74 0c je c0109210 <__intr_save+0x23> - intr_disable(); -c0109204: e8 a1 8e ff ff call c01020aa - return 1; -c0109209: b8 01 00 00 00 mov $0x1,%eax -c010920e: eb 05 jmp c0109215 <__intr_save+0x28> - } - return 0; -c0109210: b8 00 00 00 00 mov $0x0,%eax -} -c0109215: c9 leave -c0109216: c3 ret - -c0109217 <__intr_restore>: - -static inline void -__intr_restore(bool flag) { -c0109217: 55 push %ebp -c0109218: 89 e5 mov %esp,%ebp -c010921a: 83 ec 08 sub $0x8,%esp - if (flag) { -c010921d: 83 7d 08 00 cmpl $0x0,0x8(%ebp) -c0109221: 74 05 je c0109228 <__intr_restore+0x11> - intr_enable(); -c0109223: e8 7b 8e ff ff call c01020a3 - } -} -c0109228: 90 nop -c0109229: c9 leave -c010922a: c3 ret - -c010922b : -#include -#include -#include - -void -wakeup_proc(struct proc_struct *proc) { -c010922b: 55 push %ebp -c010922c: 89 e5 mov %esp,%ebp -c010922e: 83 ec 08 sub $0x8,%esp - assert(proc->state != PROC_ZOMBIE && proc->state != PROC_RUNNABLE); -c0109231: 8b 45 08 mov 0x8(%ebp),%eax -c0109234: 8b 00 mov (%eax),%eax -c0109236: 83 f8 03 cmp $0x3,%eax -c0109239: 74 0a je c0109245 -c010923b: 8b 45 08 mov 0x8(%ebp),%eax -c010923e: 8b 00 mov (%eax),%eax -c0109240: 83 f8 02 cmp $0x2,%eax -c0109243: 75 16 jne c010925b -c0109245: 68 60 c1 10 c0 push $0xc010c160 -c010924a: 68 9b c1 10 c0 push $0xc010c19b -c010924f: 6a 09 push $0x9 -c0109251: 68 b0 c1 10 c0 push $0xc010c1b0 -c0109256: e8 89 71 ff ff call c01003e4 <__panic> - proc->state = PROC_RUNNABLE; -c010925b: 8b 45 08 mov 0x8(%ebp),%eax -c010925e: c7 00 02 00 00 00 movl $0x2,(%eax) -} -c0109264: 90 nop -c0109265: c9 leave -c0109266: c3 ret - -c0109267 : - -void -schedule(void) { -c0109267: 55 push %ebp -c0109268: 89 e5 mov %esp,%ebp -c010926a: 83 ec 28 sub $0x28,%esp - bool intr_flag; - list_entry_t *le, *last; - struct proc_struct *next = NULL; -c010926d: c7 45 f0 00 00 00 00 movl $0x0,-0x10(%ebp) - local_intr_save(intr_flag); -c0109274: e8 74 ff ff ff call c01091ed <__intr_save> -c0109279: 89 45 ec mov %eax,-0x14(%ebp) - { - current->need_resched = 0; -c010927c: a1 e8 7a 12 c0 mov 0xc0127ae8,%eax -c0109281: c7 40 10 00 00 00 00 movl $0x0,0x10(%eax) - last = (current == idleproc) ? &proc_list : &(current->list_link); -c0109288: 8b 15 e8 7a 12 c0 mov 0xc0127ae8,%edx -c010928e: a1 e0 7a 12 c0 mov 0xc0127ae0,%eax -c0109293: 39 c2 cmp %eax,%edx -c0109295: 74 0a je c01092a1 -c0109297: a1 e8 7a 12 c0 mov 0xc0127ae8,%eax -c010929c: 83 c0 58 add $0x58,%eax -c010929f: eb 05 jmp c01092a6 -c01092a1: b8 24 9c 12 c0 mov $0xc0129c24,%eax -c01092a6: 89 45 e8 mov %eax,-0x18(%ebp) - le = last; -c01092a9: 8b 45 e8 mov -0x18(%ebp),%eax -c01092ac: 89 45 f4 mov %eax,-0xc(%ebp) -c01092af: 8b 45 f4 mov -0xc(%ebp),%eax -c01092b2: 89 45 e4 mov %eax,-0x1c(%ebp) - * list_next - get the next entry - * @listelm: the list head - **/ -static inline list_entry_t * -list_next(list_entry_t *listelm) { - return listelm->next; -c01092b5: 8b 45 e4 mov -0x1c(%ebp),%eax -c01092b8: 8b 40 04 mov 0x4(%eax),%eax - do { - if ((le = list_next(le)) != &proc_list) { -c01092bb: 89 45 f4 mov %eax,-0xc(%ebp) -c01092be: 81 7d f4 24 9c 12 c0 cmpl $0xc0129c24,-0xc(%ebp) -c01092c5: 74 13 je c01092da - next = le2proc(le, list_link); -c01092c7: 8b 45 f4 mov -0xc(%ebp),%eax -c01092ca: 83 e8 58 sub $0x58,%eax -c01092cd: 89 45 f0 mov %eax,-0x10(%ebp) - if (next->state == PROC_RUNNABLE) { -c01092d0: 8b 45 f0 mov -0x10(%ebp),%eax -c01092d3: 8b 00 mov (%eax),%eax -c01092d5: 83 f8 02 cmp $0x2,%eax -c01092d8: 74 0a je c01092e4 - break; - } - } - } while (le != last); -c01092da: 8b 45 f4 mov -0xc(%ebp),%eax -c01092dd: 3b 45 e8 cmp -0x18(%ebp),%eax -c01092e0: 75 cd jne c01092af -c01092e2: eb 01 jmp c01092e5 - le = last; - do { - if ((le = list_next(le)) != &proc_list) { - next = le2proc(le, list_link); - if (next->state == PROC_RUNNABLE) { - break; -c01092e4: 90 nop - } - } - } while (le != last); - if (next == NULL || next->state != PROC_RUNNABLE) { -c01092e5: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) -c01092e9: 74 0a je c01092f5 -c01092eb: 8b 45 f0 mov -0x10(%ebp),%eax -c01092ee: 8b 00 mov (%eax),%eax -c01092f0: 83 f8 02 cmp $0x2,%eax -c01092f3: 74 08 je c01092fd - next = idleproc; -c01092f5: a1 e0 7a 12 c0 mov 0xc0127ae0,%eax -c01092fa: 89 45 f0 mov %eax,-0x10(%ebp) - } - next->runs ++; -c01092fd: 8b 45 f0 mov -0x10(%ebp),%eax -c0109300: 8b 40 08 mov 0x8(%eax),%eax -c0109303: 8d 50 01 lea 0x1(%eax),%edx -c0109306: 8b 45 f0 mov -0x10(%ebp),%eax -c0109309: 89 50 08 mov %edx,0x8(%eax) - if (next != current) { -c010930c: a1 e8 7a 12 c0 mov 0xc0127ae8,%eax -c0109311: 39 45 f0 cmp %eax,-0x10(%ebp) -c0109314: 74 0e je c0109324 - proc_run(next); -c0109316: 83 ec 0c sub $0xc,%esp -c0109319: ff 75 f0 pushl -0x10(%ebp) -c010931c: e8 1a f8 ff ff call c0108b3b -c0109321: 83 c4 10 add $0x10,%esp - } - } - local_intr_restore(intr_flag); -c0109324: 83 ec 0c sub $0xc,%esp -c0109327: ff 75 ec pushl -0x14(%ebp) -c010932a: e8 e8 fe ff ff call c0109217 <__intr_restore> -c010932f: 83 c4 10 add $0x10,%esp -} -c0109332: 90 nop -c0109333: c9 leave -c0109334: c3 ret - -c0109335 : - * @s: the input string - * - * The strlen() function returns the length of string @s. - * */ -size_t -strlen(const char *s) { -c0109335: 55 push %ebp -c0109336: 89 e5 mov %esp,%ebp -c0109338: 83 ec 10 sub $0x10,%esp - size_t cnt = 0; -c010933b: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp) - while (*s ++ != '\0') { -c0109342: eb 04 jmp c0109348 - cnt ++; -c0109344: 83 45 fc 01 addl $0x1,-0x4(%ebp) - * The strlen() function returns the length of string @s. - * */ -size_t -strlen(const char *s) { - size_t cnt = 0; - while (*s ++ != '\0') { -c0109348: 8b 45 08 mov 0x8(%ebp),%eax -c010934b: 8d 50 01 lea 0x1(%eax),%edx -c010934e: 89 55 08 mov %edx,0x8(%ebp) -c0109351: 0f b6 00 movzbl (%eax),%eax -c0109354: 84 c0 test %al,%al -c0109356: 75 ec jne c0109344 - cnt ++; - } - return cnt; -c0109358: 8b 45 fc mov -0x4(%ebp),%eax -} -c010935b: c9 leave -c010935c: c3 ret - -c010935d : - * The return value is strlen(s), if that is less than @len, or - * @len if there is no '\0' character among the first @len characters - * pointed by @s. - * */ -size_t -strnlen(const char *s, size_t len) { -c010935d: 55 push %ebp -c010935e: 89 e5 mov %esp,%ebp -c0109360: 83 ec 10 sub $0x10,%esp - size_t cnt = 0; -c0109363: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp) - while (cnt < len && *s ++ != '\0') { -c010936a: eb 04 jmp c0109370 - cnt ++; -c010936c: 83 45 fc 01 addl $0x1,-0x4(%ebp) - * pointed by @s. - * */ -size_t -strnlen(const char *s, size_t len) { - size_t cnt = 0; - while (cnt < len && *s ++ != '\0') { -c0109370: 8b 45 fc mov -0x4(%ebp),%eax -c0109373: 3b 45 0c cmp 0xc(%ebp),%eax -c0109376: 73 10 jae c0109388 -c0109378: 8b 45 08 mov 0x8(%ebp),%eax -c010937b: 8d 50 01 lea 0x1(%eax),%edx -c010937e: 89 55 08 mov %edx,0x8(%ebp) -c0109381: 0f b6 00 movzbl (%eax),%eax -c0109384: 84 c0 test %al,%al -c0109386: 75 e4 jne c010936c - cnt ++; - } - return cnt; -c0109388: 8b 45 fc mov -0x4(%ebp),%eax -} -c010938b: c9 leave -c010938c: c3 ret - -c010938d : - * To avoid overflows, the size of array pointed by @dst should be long enough to - * contain the same string as @src (including the terminating null character), and - * should not overlap in memory with @src. - * */ -char * -strcpy(char *dst, const char *src) { -c010938d: 55 push %ebp -c010938e: 89 e5 mov %esp,%ebp -c0109390: 57 push %edi -c0109391: 56 push %esi -c0109392: 83 ec 20 sub $0x20,%esp -c0109395: 8b 45 08 mov 0x8(%ebp),%eax -c0109398: 89 45 f4 mov %eax,-0xc(%ebp) -c010939b: 8b 45 0c mov 0xc(%ebp),%eax -c010939e: 89 45 f0 mov %eax,-0x10(%ebp) -#ifndef __HAVE_ARCH_STRCPY -#define __HAVE_ARCH_STRCPY -static inline char * -__strcpy(char *dst, const char *src) { - int d0, d1, d2; - asm volatile ( -c01093a1: 8b 55 f0 mov -0x10(%ebp),%edx -c01093a4: 8b 45 f4 mov -0xc(%ebp),%eax -c01093a7: 89 d1 mov %edx,%ecx -c01093a9: 89 c2 mov %eax,%edx -c01093ab: 89 ce mov %ecx,%esi -c01093ad: 89 d7 mov %edx,%edi -c01093af: ac lods %ds:(%esi),%al -c01093b0: aa stos %al,%es:(%edi) -c01093b1: 84 c0 test %al,%al -c01093b3: 75 fa jne c01093af -c01093b5: 89 fa mov %edi,%edx -c01093b7: 89 f1 mov %esi,%ecx -c01093b9: 89 4d ec mov %ecx,-0x14(%ebp) -c01093bc: 89 55 e8 mov %edx,-0x18(%ebp) -c01093bf: 89 45 e4 mov %eax,-0x1c(%ebp) - "stosb;" - "testb %%al, %%al;" - "jne 1b;" - : "=&S" (d0), "=&D" (d1), "=&a" (d2) - : "0" (src), "1" (dst) : "memory"); - return dst; -c01093c2: 8b 45 f4 mov -0xc(%ebp),%eax -#ifdef __HAVE_ARCH_STRCPY - return __strcpy(dst, src); -c01093c5: 90 nop - char *p = dst; - while ((*p ++ = *src ++) != '\0') - /* nothing */; - return dst; -#endif /* __HAVE_ARCH_STRCPY */ -} -c01093c6: 83 c4 20 add $0x20,%esp -c01093c9: 5e pop %esi -c01093ca: 5f pop %edi -c01093cb: 5d pop %ebp -c01093cc: c3 ret - -c01093cd : - * @len: maximum number of characters to be copied from @src - * - * The return value is @dst - * */ -char * -strncpy(char *dst, const char *src, size_t len) { -c01093cd: 55 push %ebp -c01093ce: 89 e5 mov %esp,%ebp -c01093d0: 83 ec 10 sub $0x10,%esp - char *p = dst; -c01093d3: 8b 45 08 mov 0x8(%ebp),%eax -c01093d6: 89 45 fc mov %eax,-0x4(%ebp) - while (len > 0) { -c01093d9: eb 21 jmp c01093fc - if ((*p = *src) != '\0') { -c01093db: 8b 45 0c mov 0xc(%ebp),%eax -c01093de: 0f b6 10 movzbl (%eax),%edx -c01093e1: 8b 45 fc mov -0x4(%ebp),%eax -c01093e4: 88 10 mov %dl,(%eax) -c01093e6: 8b 45 fc mov -0x4(%ebp),%eax -c01093e9: 0f b6 00 movzbl (%eax),%eax -c01093ec: 84 c0 test %al,%al -c01093ee: 74 04 je c01093f4 - src ++; -c01093f0: 83 45 0c 01 addl $0x1,0xc(%ebp) - } - p ++, len --; -c01093f4: 83 45 fc 01 addl $0x1,-0x4(%ebp) -c01093f8: 83 6d 10 01 subl $0x1,0x10(%ebp) - * The return value is @dst - * */ -char * -strncpy(char *dst, const char *src, size_t len) { - char *p = dst; - while (len > 0) { -c01093fc: 83 7d 10 00 cmpl $0x0,0x10(%ebp) -c0109400: 75 d9 jne c01093db - if ((*p = *src) != '\0') { - src ++; - } - p ++, len --; - } - return dst; -c0109402: 8b 45 08 mov 0x8(%ebp),%eax -} -c0109405: c9 leave -c0109406: c3 ret - -c0109407 : - * - A value greater than zero indicates that the first character that does - * not match has a greater value in @s1 than in @s2; - * - And a value less than zero indicates the opposite. - * */ -int -strcmp(const char *s1, const char *s2) { -c0109407: 55 push %ebp -c0109408: 89 e5 mov %esp,%ebp -c010940a: 57 push %edi -c010940b: 56 push %esi -c010940c: 83 ec 20 sub $0x20,%esp -c010940f: 8b 45 08 mov 0x8(%ebp),%eax -c0109412: 89 45 f4 mov %eax,-0xc(%ebp) -c0109415: 8b 45 0c mov 0xc(%ebp),%eax -c0109418: 89 45 f0 mov %eax,-0x10(%ebp) -#ifndef __HAVE_ARCH_STRCMP -#define __HAVE_ARCH_STRCMP -static inline int -__strcmp(const char *s1, const char *s2) { - int d0, d1, ret; - asm volatile ( -c010941b: 8b 55 f4 mov -0xc(%ebp),%edx -c010941e: 8b 45 f0 mov -0x10(%ebp),%eax -c0109421: 89 d1 mov %edx,%ecx -c0109423: 89 c2 mov %eax,%edx -c0109425: 89 ce mov %ecx,%esi -c0109427: 89 d7 mov %edx,%edi -c0109429: ac lods %ds:(%esi),%al -c010942a: ae scas %es:(%edi),%al -c010942b: 75 08 jne c0109435 -c010942d: 84 c0 test %al,%al -c010942f: 75 f8 jne c0109429 -c0109431: 31 c0 xor %eax,%eax -c0109433: eb 04 jmp c0109439 -c0109435: 19 c0 sbb %eax,%eax -c0109437: 0c 01 or $0x1,%al -c0109439: 89 fa mov %edi,%edx -c010943b: 89 f1 mov %esi,%ecx -c010943d: 89 45 ec mov %eax,-0x14(%ebp) -c0109440: 89 4d e8 mov %ecx,-0x18(%ebp) -c0109443: 89 55 e4 mov %edx,-0x1c(%ebp) - "orb $1, %%al;" - "3:" - : "=a" (ret), "=&S" (d0), "=&D" (d1) - : "1" (s1), "2" (s2) - : "memory"); - return ret; -c0109446: 8b 45 ec mov -0x14(%ebp),%eax -#ifdef __HAVE_ARCH_STRCMP - return __strcmp(s1, s2); -c0109449: 90 nop - while (*s1 != '\0' && *s1 == *s2) { - s1 ++, s2 ++; - } - return (int)((unsigned char)*s1 - (unsigned char)*s2); -#endif /* __HAVE_ARCH_STRCMP */ -} -c010944a: 83 c4 20 add $0x20,%esp -c010944d: 5e pop %esi -c010944e: 5f pop %edi -c010944f: 5d pop %ebp -c0109450: c3 ret - -c0109451 : - * they are equal to each other, it continues with the following pairs until - * the characters differ, until a terminating null-character is reached, or - * until @n characters match in both strings, whichever happens first. - * */ -int -strncmp(const char *s1, const char *s2, size_t n) { -c0109451: 55 push %ebp -c0109452: 89 e5 mov %esp,%ebp - while (n > 0 && *s1 != '\0' && *s1 == *s2) { -c0109454: eb 0c jmp c0109462 - n --, s1 ++, s2 ++; -c0109456: 83 6d 10 01 subl $0x1,0x10(%ebp) -c010945a: 83 45 08 01 addl $0x1,0x8(%ebp) -c010945e: 83 45 0c 01 addl $0x1,0xc(%ebp) - * the characters differ, until a terminating null-character is reached, or - * until @n characters match in both strings, whichever happens first. - * */ -int -strncmp(const char *s1, const char *s2, size_t n) { - while (n > 0 && *s1 != '\0' && *s1 == *s2) { -c0109462: 83 7d 10 00 cmpl $0x0,0x10(%ebp) -c0109466: 74 1a je c0109482 -c0109468: 8b 45 08 mov 0x8(%ebp),%eax -c010946b: 0f b6 00 movzbl (%eax),%eax -c010946e: 84 c0 test %al,%al -c0109470: 74 10 je c0109482 -c0109472: 8b 45 08 mov 0x8(%ebp),%eax -c0109475: 0f b6 10 movzbl (%eax),%edx -c0109478: 8b 45 0c mov 0xc(%ebp),%eax -c010947b: 0f b6 00 movzbl (%eax),%eax -c010947e: 38 c2 cmp %al,%dl -c0109480: 74 d4 je c0109456 - n --, s1 ++, s2 ++; - } - return (n == 0) ? 0 : (int)((unsigned char)*s1 - (unsigned char)*s2); -c0109482: 83 7d 10 00 cmpl $0x0,0x10(%ebp) -c0109486: 74 18 je c01094a0 -c0109488: 8b 45 08 mov 0x8(%ebp),%eax -c010948b: 0f b6 00 movzbl (%eax),%eax -c010948e: 0f b6 d0 movzbl %al,%edx -c0109491: 8b 45 0c mov 0xc(%ebp),%eax -c0109494: 0f b6 00 movzbl (%eax),%eax -c0109497: 0f b6 c0 movzbl %al,%eax -c010949a: 29 c2 sub %eax,%edx -c010949c: 89 d0 mov %edx,%eax -c010949e: eb 05 jmp c01094a5 -c01094a0: b8 00 00 00 00 mov $0x0,%eax -} -c01094a5: 5d pop %ebp -c01094a6: c3 ret - -c01094a7 : - * - * The strchr() function returns a pointer to the first occurrence of - * character in @s. If the value is not found, the function returns 'NULL'. - * */ -char * -strchr(const char *s, char c) { -c01094a7: 55 push %ebp -c01094a8: 89 e5 mov %esp,%ebp -c01094aa: 83 ec 04 sub $0x4,%esp -c01094ad: 8b 45 0c mov 0xc(%ebp),%eax -c01094b0: 88 45 fc mov %al,-0x4(%ebp) - while (*s != '\0') { -c01094b3: eb 14 jmp c01094c9 - if (*s == c) { -c01094b5: 8b 45 08 mov 0x8(%ebp),%eax -c01094b8: 0f b6 00 movzbl (%eax),%eax -c01094bb: 3a 45 fc cmp -0x4(%ebp),%al -c01094be: 75 05 jne c01094c5 - return (char *)s; -c01094c0: 8b 45 08 mov 0x8(%ebp),%eax -c01094c3: eb 13 jmp c01094d8 - } - s ++; -c01094c5: 83 45 08 01 addl $0x1,0x8(%ebp) - * The strchr() function returns a pointer to the first occurrence of - * character in @s. If the value is not found, the function returns 'NULL'. - * */ -char * -strchr(const char *s, char c) { - while (*s != '\0') { -c01094c9: 8b 45 08 mov 0x8(%ebp),%eax -c01094cc: 0f b6 00 movzbl (%eax),%eax -c01094cf: 84 c0 test %al,%al -c01094d1: 75 e2 jne c01094b5 - if (*s == c) { - return (char *)s; - } - s ++; - } - return NULL; -c01094d3: b8 00 00 00 00 mov $0x0,%eax -} -c01094d8: c9 leave -c01094d9: c3 ret - -c01094da : - * The strfind() function is like strchr() except that if @c is - * not found in @s, then it returns a pointer to the null byte at the - * end of @s, rather than 'NULL'. - * */ -char * -strfind(const char *s, char c) { -c01094da: 55 push %ebp -c01094db: 89 e5 mov %esp,%ebp -c01094dd: 83 ec 04 sub $0x4,%esp -c01094e0: 8b 45 0c mov 0xc(%ebp),%eax -c01094e3: 88 45 fc mov %al,-0x4(%ebp) - while (*s != '\0') { -c01094e6: eb 0f jmp c01094f7 - if (*s == c) { -c01094e8: 8b 45 08 mov 0x8(%ebp),%eax -c01094eb: 0f b6 00 movzbl (%eax),%eax -c01094ee: 3a 45 fc cmp -0x4(%ebp),%al -c01094f1: 74 10 je c0109503 - break; - } - s ++; -c01094f3: 83 45 08 01 addl $0x1,0x8(%ebp) - * not found in @s, then it returns a pointer to the null byte at the - * end of @s, rather than 'NULL'. - * */ -char * -strfind(const char *s, char c) { - while (*s != '\0') { -c01094f7: 8b 45 08 mov 0x8(%ebp),%eax -c01094fa: 0f b6 00 movzbl (%eax),%eax -c01094fd: 84 c0 test %al,%al -c01094ff: 75 e7 jne c01094e8 -c0109501: eb 01 jmp c0109504 - if (*s == c) { - break; -c0109503: 90 nop - } - s ++; - } - return (char *)s; -c0109504: 8b 45 08 mov 0x8(%ebp),%eax -} -c0109507: c9 leave -c0109508: c3 ret - -c0109509 : - * an optional "0x" or "0X" prefix. - * - * The strtol() function returns the converted integral number as a long int value. - * */ -long -strtol(const char *s, char **endptr, int base) { -c0109509: 55 push %ebp -c010950a: 89 e5 mov %esp,%ebp -c010950c: 83 ec 10 sub $0x10,%esp - int neg = 0; -c010950f: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp) - long val = 0; -c0109516: c7 45 f8 00 00 00 00 movl $0x0,-0x8(%ebp) - - // gobble initial whitespace - while (*s == ' ' || *s == '\t') { -c010951d: eb 04 jmp c0109523 - s ++; -c010951f: 83 45 08 01 addl $0x1,0x8(%ebp) -strtol(const char *s, char **endptr, int base) { - int neg = 0; - long val = 0; - - // gobble initial whitespace - while (*s == ' ' || *s == '\t') { -c0109523: 8b 45 08 mov 0x8(%ebp),%eax -c0109526: 0f b6 00 movzbl (%eax),%eax -c0109529: 3c 20 cmp $0x20,%al -c010952b: 74 f2 je c010951f -c010952d: 8b 45 08 mov 0x8(%ebp),%eax -c0109530: 0f b6 00 movzbl (%eax),%eax -c0109533: 3c 09 cmp $0x9,%al -c0109535: 74 e8 je c010951f - s ++; - } - - // plus/minus sign - if (*s == '+') { -c0109537: 8b 45 08 mov 0x8(%ebp),%eax -c010953a: 0f b6 00 movzbl (%eax),%eax -c010953d: 3c 2b cmp $0x2b,%al -c010953f: 75 06 jne c0109547 - s ++; -c0109541: 83 45 08 01 addl $0x1,0x8(%ebp) -c0109545: eb 15 jmp c010955c - } - else if (*s == '-') { -c0109547: 8b 45 08 mov 0x8(%ebp),%eax -c010954a: 0f b6 00 movzbl (%eax),%eax -c010954d: 3c 2d cmp $0x2d,%al -c010954f: 75 0b jne c010955c - s ++, neg = 1; -c0109551: 83 45 08 01 addl $0x1,0x8(%ebp) -c0109555: c7 45 fc 01 00 00 00 movl $0x1,-0x4(%ebp) - } - - // hex or octal base prefix - if ((base == 0 || base == 16) && (s[0] == '0' && s[1] == 'x')) { -c010955c: 83 7d 10 00 cmpl $0x0,0x10(%ebp) -c0109560: 74 06 je c0109568 -c0109562: 83 7d 10 10 cmpl $0x10,0x10(%ebp) -c0109566: 75 24 jne c010958c -c0109568: 8b 45 08 mov 0x8(%ebp),%eax -c010956b: 0f b6 00 movzbl (%eax),%eax -c010956e: 3c 30 cmp $0x30,%al -c0109570: 75 1a jne c010958c -c0109572: 8b 45 08 mov 0x8(%ebp),%eax -c0109575: 83 c0 01 add $0x1,%eax -c0109578: 0f b6 00 movzbl (%eax),%eax -c010957b: 3c 78 cmp $0x78,%al -c010957d: 75 0d jne c010958c - s += 2, base = 16; -c010957f: 83 45 08 02 addl $0x2,0x8(%ebp) -c0109583: c7 45 10 10 00 00 00 movl $0x10,0x10(%ebp) -c010958a: eb 2a jmp c01095b6 - } - else if (base == 0 && s[0] == '0') { -c010958c: 83 7d 10 00 cmpl $0x0,0x10(%ebp) -c0109590: 75 17 jne c01095a9 -c0109592: 8b 45 08 mov 0x8(%ebp),%eax -c0109595: 0f b6 00 movzbl (%eax),%eax -c0109598: 3c 30 cmp $0x30,%al -c010959a: 75 0d jne c01095a9 - s ++, base = 8; -c010959c: 83 45 08 01 addl $0x1,0x8(%ebp) -c01095a0: c7 45 10 08 00 00 00 movl $0x8,0x10(%ebp) -c01095a7: eb 0d jmp c01095b6 - } - else if (base == 0) { -c01095a9: 83 7d 10 00 cmpl $0x0,0x10(%ebp) -c01095ad: 75 07 jne c01095b6 - base = 10; -c01095af: c7 45 10 0a 00 00 00 movl $0xa,0x10(%ebp) - - // digits - while (1) { - int dig; - - if (*s >= '0' && *s <= '9') { -c01095b6: 8b 45 08 mov 0x8(%ebp),%eax -c01095b9: 0f b6 00 movzbl (%eax),%eax -c01095bc: 3c 2f cmp $0x2f,%al -c01095be: 7e 1b jle c01095db -c01095c0: 8b 45 08 mov 0x8(%ebp),%eax -c01095c3: 0f b6 00 movzbl (%eax),%eax -c01095c6: 3c 39 cmp $0x39,%al -c01095c8: 7f 11 jg c01095db - dig = *s - '0'; -c01095ca: 8b 45 08 mov 0x8(%ebp),%eax -c01095cd: 0f b6 00 movzbl (%eax),%eax -c01095d0: 0f be c0 movsbl %al,%eax -c01095d3: 83 e8 30 sub $0x30,%eax -c01095d6: 89 45 f4 mov %eax,-0xc(%ebp) -c01095d9: eb 48 jmp c0109623 - } - else if (*s >= 'a' && *s <= 'z') { -c01095db: 8b 45 08 mov 0x8(%ebp),%eax -c01095de: 0f b6 00 movzbl (%eax),%eax -c01095e1: 3c 60 cmp $0x60,%al -c01095e3: 7e 1b jle c0109600 -c01095e5: 8b 45 08 mov 0x8(%ebp),%eax -c01095e8: 0f b6 00 movzbl (%eax),%eax -c01095eb: 3c 7a cmp $0x7a,%al -c01095ed: 7f 11 jg c0109600 - dig = *s - 'a' + 10; -c01095ef: 8b 45 08 mov 0x8(%ebp),%eax -c01095f2: 0f b6 00 movzbl (%eax),%eax -c01095f5: 0f be c0 movsbl %al,%eax -c01095f8: 83 e8 57 sub $0x57,%eax -c01095fb: 89 45 f4 mov %eax,-0xc(%ebp) -c01095fe: eb 23 jmp c0109623 - } - else if (*s >= 'A' && *s <= 'Z') { -c0109600: 8b 45 08 mov 0x8(%ebp),%eax -c0109603: 0f b6 00 movzbl (%eax),%eax -c0109606: 3c 40 cmp $0x40,%al -c0109608: 7e 3c jle c0109646 -c010960a: 8b 45 08 mov 0x8(%ebp),%eax -c010960d: 0f b6 00 movzbl (%eax),%eax -c0109610: 3c 5a cmp $0x5a,%al -c0109612: 7f 32 jg c0109646 - dig = *s - 'A' + 10; -c0109614: 8b 45 08 mov 0x8(%ebp),%eax -c0109617: 0f b6 00 movzbl (%eax),%eax -c010961a: 0f be c0 movsbl %al,%eax -c010961d: 83 e8 37 sub $0x37,%eax -c0109620: 89 45 f4 mov %eax,-0xc(%ebp) - } - else { - break; - } - if (dig >= base) { -c0109623: 8b 45 f4 mov -0xc(%ebp),%eax -c0109626: 3b 45 10 cmp 0x10(%ebp),%eax -c0109629: 7d 1a jge c0109645 - break; - } - s ++, val = (val * base) + dig; -c010962b: 83 45 08 01 addl $0x1,0x8(%ebp) -c010962f: 8b 45 f8 mov -0x8(%ebp),%eax -c0109632: 0f af 45 10 imul 0x10(%ebp),%eax -c0109636: 89 c2 mov %eax,%edx -c0109638: 8b 45 f4 mov -0xc(%ebp),%eax -c010963b: 01 d0 add %edx,%eax -c010963d: 89 45 f8 mov %eax,-0x8(%ebp) - // we don't properly detect overflow! - } -c0109640: e9 71 ff ff ff jmp c01095b6 - } - else { - break; - } - if (dig >= base) { - break; -c0109645: 90 nop - } - s ++, val = (val * base) + dig; - // we don't properly detect overflow! - } - - if (endptr) { -c0109646: 83 7d 0c 00 cmpl $0x0,0xc(%ebp) -c010964a: 74 08 je c0109654 - *endptr = (char *) s; -c010964c: 8b 45 0c mov 0xc(%ebp),%eax -c010964f: 8b 55 08 mov 0x8(%ebp),%edx -c0109652: 89 10 mov %edx,(%eax) - } - return (neg ? -val : val); -c0109654: 83 7d fc 00 cmpl $0x0,-0x4(%ebp) -c0109658: 74 07 je c0109661 -c010965a: 8b 45 f8 mov -0x8(%ebp),%eax -c010965d: f7 d8 neg %eax -c010965f: eb 03 jmp c0109664 -c0109661: 8b 45 f8 mov -0x8(%ebp),%eax -} -c0109664: c9 leave -c0109665: c3 ret - -c0109666 : - * @n: number of bytes to be set to the value - * - * The memset() function returns @s. - * */ -void * -memset(void *s, char c, size_t n) { -c0109666: 55 push %ebp -c0109667: 89 e5 mov %esp,%ebp -c0109669: 57 push %edi -c010966a: 83 ec 24 sub $0x24,%esp -c010966d: 8b 45 0c mov 0xc(%ebp),%eax -c0109670: 88 45 d8 mov %al,-0x28(%ebp) -#ifdef __HAVE_ARCH_MEMSET - return __memset(s, c, n); -c0109673: 0f be 45 d8 movsbl -0x28(%ebp),%eax -c0109677: 8b 55 08 mov 0x8(%ebp),%edx -c010967a: 89 55 f8 mov %edx,-0x8(%ebp) -c010967d: 88 45 f7 mov %al,-0x9(%ebp) -c0109680: 8b 45 10 mov 0x10(%ebp),%eax -c0109683: 89 45 f0 mov %eax,-0x10(%ebp) -#ifndef __HAVE_ARCH_MEMSET -#define __HAVE_ARCH_MEMSET -static inline void * -__memset(void *s, char c, size_t n) { - int d0, d1; - asm volatile ( -c0109686: 8b 4d f0 mov -0x10(%ebp),%ecx -c0109689: 0f b6 45 f7 movzbl -0x9(%ebp),%eax -c010968d: 8b 55 f8 mov -0x8(%ebp),%edx -c0109690: 89 d7 mov %edx,%edi -c0109692: f3 aa rep stos %al,%es:(%edi) -c0109694: 89 fa mov %edi,%edx -c0109696: 89 4d ec mov %ecx,-0x14(%ebp) -c0109699: 89 55 e8 mov %edx,-0x18(%ebp) - "rep; stosb;" - : "=&c" (d0), "=&D" (d1) - : "0" (n), "a" (c), "1" (s) - : "memory"); - return s; -c010969c: 8b 45 f8 mov -0x8(%ebp),%eax -c010969f: 90 nop - while (n -- > 0) { - *p ++ = c; - } - return s; -#endif /* __HAVE_ARCH_MEMSET */ -} -c01096a0: 83 c4 24 add $0x24,%esp -c01096a3: 5f pop %edi -c01096a4: 5d pop %ebp -c01096a5: c3 ret - -c01096a6 : - * @n: number of bytes to copy - * - * The memmove() function returns @dst. - * */ -void * -memmove(void *dst, const void *src, size_t n) { -c01096a6: 55 push %ebp -c01096a7: 89 e5 mov %esp,%ebp -c01096a9: 57 push %edi -c01096aa: 56 push %esi -c01096ab: 53 push %ebx -c01096ac: 83 ec 30 sub $0x30,%esp -c01096af: 8b 45 08 mov 0x8(%ebp),%eax -c01096b2: 89 45 f0 mov %eax,-0x10(%ebp) -c01096b5: 8b 45 0c mov 0xc(%ebp),%eax -c01096b8: 89 45 ec mov %eax,-0x14(%ebp) -c01096bb: 8b 45 10 mov 0x10(%ebp),%eax -c01096be: 89 45 e8 mov %eax,-0x18(%ebp) - -#ifndef __HAVE_ARCH_MEMMOVE -#define __HAVE_ARCH_MEMMOVE -static inline void * -__memmove(void *dst, const void *src, size_t n) { - if (dst < src) { -c01096c1: 8b 45 f0 mov -0x10(%ebp),%eax -c01096c4: 3b 45 ec cmp -0x14(%ebp),%eax -c01096c7: 73 42 jae c010970b -c01096c9: 8b 45 f0 mov -0x10(%ebp),%eax -c01096cc: 89 45 e4 mov %eax,-0x1c(%ebp) -c01096cf: 8b 45 ec mov -0x14(%ebp),%eax -c01096d2: 89 45 e0 mov %eax,-0x20(%ebp) -c01096d5: 8b 45 e8 mov -0x18(%ebp),%eax -c01096d8: 89 45 dc mov %eax,-0x24(%ebp) - "andl $3, %%ecx;" - "jz 1f;" - "rep; movsb;" - "1:" - : "=&c" (d0), "=&D" (d1), "=&S" (d2) - : "0" (n / 4), "g" (n), "1" (dst), "2" (src) -c01096db: 8b 45 dc mov -0x24(%ebp),%eax -c01096de: c1 e8 02 shr $0x2,%eax -c01096e1: 89 c1 mov %eax,%ecx -#ifndef __HAVE_ARCH_MEMCPY -#define __HAVE_ARCH_MEMCPY -static inline void * -__memcpy(void *dst, const void *src, size_t n) { - int d0, d1, d2; - asm volatile ( -c01096e3: 8b 55 e4 mov -0x1c(%ebp),%edx -c01096e6: 8b 45 e0 mov -0x20(%ebp),%eax -c01096e9: 89 d7 mov %edx,%edi -c01096eb: 89 c6 mov %eax,%esi -c01096ed: f3 a5 rep movsl %ds:(%esi),%es:(%edi) -c01096ef: 8b 4d dc mov -0x24(%ebp),%ecx -c01096f2: 83 e1 03 and $0x3,%ecx -c01096f5: 74 02 je c01096f9 -c01096f7: f3 a4 rep movsb %ds:(%esi),%es:(%edi) -c01096f9: 89 f0 mov %esi,%eax -c01096fb: 89 fa mov %edi,%edx -c01096fd: 89 4d d8 mov %ecx,-0x28(%ebp) -c0109700: 89 55 d4 mov %edx,-0x2c(%ebp) -c0109703: 89 45 d0 mov %eax,-0x30(%ebp) - "rep; movsb;" - "1:" - : "=&c" (d0), "=&D" (d1), "=&S" (d2) - : "0" (n / 4), "g" (n), "1" (dst), "2" (src) - : "memory"); - return dst; -c0109706: 8b 45 e4 mov -0x1c(%ebp),%eax -#ifdef __HAVE_ARCH_MEMMOVE - return __memmove(dst, src, n); -c0109709: eb 36 jmp c0109741 - asm volatile ( - "std;" - "rep; movsb;" - "cld;" - : "=&c" (d0), "=&S" (d1), "=&D" (d2) - : "0" (n), "1" (n - 1 + src), "2" (n - 1 + dst) -c010970b: 8b 45 e8 mov -0x18(%ebp),%eax -c010970e: 8d 50 ff lea -0x1(%eax),%edx -c0109711: 8b 45 ec mov -0x14(%ebp),%eax -c0109714: 01 c2 add %eax,%edx -c0109716: 8b 45 e8 mov -0x18(%ebp),%eax -c0109719: 8d 48 ff lea -0x1(%eax),%ecx -c010971c: 8b 45 f0 mov -0x10(%ebp),%eax -c010971f: 8d 1c 01 lea (%ecx,%eax,1),%ebx -__memmove(void *dst, const void *src, size_t n) { - if (dst < src) { - return __memcpy(dst, src, n); - } - int d0, d1, d2; - asm volatile ( -c0109722: 8b 45 e8 mov -0x18(%ebp),%eax -c0109725: 89 c1 mov %eax,%ecx -c0109727: 89 d8 mov %ebx,%eax -c0109729: 89 d6 mov %edx,%esi -c010972b: 89 c7 mov %eax,%edi -c010972d: fd std -c010972e: f3 a4 rep movsb %ds:(%esi),%es:(%edi) -c0109730: fc cld -c0109731: 89 f8 mov %edi,%eax -c0109733: 89 f2 mov %esi,%edx -c0109735: 89 4d cc mov %ecx,-0x34(%ebp) -c0109738: 89 55 c8 mov %edx,-0x38(%ebp) -c010973b: 89 45 c4 mov %eax,-0x3c(%ebp) - "rep; movsb;" - "cld;" - : "=&c" (d0), "=&S" (d1), "=&D" (d2) - : "0" (n), "1" (n - 1 + src), "2" (n - 1 + dst) - : "memory"); - return dst; -c010973e: 8b 45 f0 mov -0x10(%ebp),%eax - *d ++ = *s ++; - } - } - return dst; -#endif /* __HAVE_ARCH_MEMMOVE */ -} -c0109741: 83 c4 30 add $0x30,%esp -c0109744: 5b pop %ebx -c0109745: 5e pop %esi -c0109746: 5f pop %edi -c0109747: 5d pop %ebp -c0109748: c3 ret - -c0109749 : - * it always copies exactly @n bytes. To avoid overflows, the size of arrays pointed - * by both @src and @dst, should be at least @n bytes, and should not overlap - * (for overlapping memory area, memmove is a safer approach). - * */ -void * -memcpy(void *dst, const void *src, size_t n) { -c0109749: 55 push %ebp -c010974a: 89 e5 mov %esp,%ebp -c010974c: 57 push %edi -c010974d: 56 push %esi -c010974e: 83 ec 20 sub $0x20,%esp -c0109751: 8b 45 08 mov 0x8(%ebp),%eax -c0109754: 89 45 f4 mov %eax,-0xc(%ebp) -c0109757: 8b 45 0c mov 0xc(%ebp),%eax -c010975a: 89 45 f0 mov %eax,-0x10(%ebp) -c010975d: 8b 45 10 mov 0x10(%ebp),%eax -c0109760: 89 45 ec mov %eax,-0x14(%ebp) - "andl $3, %%ecx;" - "jz 1f;" - "rep; movsb;" - "1:" - : "=&c" (d0), "=&D" (d1), "=&S" (d2) - : "0" (n / 4), "g" (n), "1" (dst), "2" (src) -c0109763: 8b 45 ec mov -0x14(%ebp),%eax -c0109766: c1 e8 02 shr $0x2,%eax -c0109769: 89 c1 mov %eax,%ecx -#ifndef __HAVE_ARCH_MEMCPY -#define __HAVE_ARCH_MEMCPY -static inline void * -__memcpy(void *dst, const void *src, size_t n) { - int d0, d1, d2; - asm volatile ( -c010976b: 8b 55 f4 mov -0xc(%ebp),%edx -c010976e: 8b 45 f0 mov -0x10(%ebp),%eax -c0109771: 89 d7 mov %edx,%edi -c0109773: 89 c6 mov %eax,%esi -c0109775: f3 a5 rep movsl %ds:(%esi),%es:(%edi) -c0109777: 8b 4d ec mov -0x14(%ebp),%ecx -c010977a: 83 e1 03 and $0x3,%ecx -c010977d: 74 02 je c0109781 -c010977f: f3 a4 rep movsb %ds:(%esi),%es:(%edi) -c0109781: 89 f0 mov %esi,%eax -c0109783: 89 fa mov %edi,%edx -c0109785: 89 4d e8 mov %ecx,-0x18(%ebp) -c0109788: 89 55 e4 mov %edx,-0x1c(%ebp) -c010978b: 89 45 e0 mov %eax,-0x20(%ebp) - "rep; movsb;" - "1:" - : "=&c" (d0), "=&D" (d1), "=&S" (d2) - : "0" (n / 4), "g" (n), "1" (dst), "2" (src) - : "memory"); - return dst; -c010978e: 8b 45 f4 mov -0xc(%ebp),%eax -#ifdef __HAVE_ARCH_MEMCPY - return __memcpy(dst, src, n); -c0109791: 90 nop - while (n -- > 0) { - *d ++ = *s ++; - } - return dst; -#endif /* __HAVE_ARCH_MEMCPY */ -} -c0109792: 83 c4 20 add $0x20,%esp -c0109795: 5e pop %esi -c0109796: 5f pop %edi -c0109797: 5d pop %ebp -c0109798: c3 ret - -c0109799 : - * match in both memory blocks has a greater value in @v1 than in @v2 - * as if evaluated as unsigned char values; - * - And a value less than zero indicates the opposite. - * */ -int -memcmp(const void *v1, const void *v2, size_t n) { -c0109799: 55 push %ebp -c010979a: 89 e5 mov %esp,%ebp -c010979c: 83 ec 10 sub $0x10,%esp - const char *s1 = (const char *)v1; -c010979f: 8b 45 08 mov 0x8(%ebp),%eax -c01097a2: 89 45 fc mov %eax,-0x4(%ebp) - const char *s2 = (const char *)v2; -c01097a5: 8b 45 0c mov 0xc(%ebp),%eax -c01097a8: 89 45 f8 mov %eax,-0x8(%ebp) - while (n -- > 0) { -c01097ab: eb 30 jmp c01097dd - if (*s1 != *s2) { -c01097ad: 8b 45 fc mov -0x4(%ebp),%eax -c01097b0: 0f b6 10 movzbl (%eax),%edx -c01097b3: 8b 45 f8 mov -0x8(%ebp),%eax -c01097b6: 0f b6 00 movzbl (%eax),%eax -c01097b9: 38 c2 cmp %al,%dl -c01097bb: 74 18 je c01097d5 - return (int)((unsigned char)*s1 - (unsigned char)*s2); -c01097bd: 8b 45 fc mov -0x4(%ebp),%eax -c01097c0: 0f b6 00 movzbl (%eax),%eax -c01097c3: 0f b6 d0 movzbl %al,%edx -c01097c6: 8b 45 f8 mov -0x8(%ebp),%eax -c01097c9: 0f b6 00 movzbl (%eax),%eax -c01097cc: 0f b6 c0 movzbl %al,%eax -c01097cf: 29 c2 sub %eax,%edx -c01097d1: 89 d0 mov %edx,%eax -c01097d3: eb 1a jmp c01097ef - } - s1 ++, s2 ++; -c01097d5: 83 45 fc 01 addl $0x1,-0x4(%ebp) -c01097d9: 83 45 f8 01 addl $0x1,-0x8(%ebp) - * */ -int -memcmp(const void *v1, const void *v2, size_t n) { - const char *s1 = (const char *)v1; - const char *s2 = (const char *)v2; - while (n -- > 0) { -c01097dd: 8b 45 10 mov 0x10(%ebp),%eax -c01097e0: 8d 50 ff lea -0x1(%eax),%edx -c01097e3: 89 55 10 mov %edx,0x10(%ebp) -c01097e6: 85 c0 test %eax,%eax -c01097e8: 75 c3 jne c01097ad - if (*s1 != *s2) { - return (int)((unsigned char)*s1 - (unsigned char)*s2); - } - s1 ++, s2 ++; - } - return 0; -c01097ea: b8 00 00 00 00 mov $0x0,%eax -} -c01097ef: c9 leave -c01097f0: c3 ret - -c01097f1 : - * @width: maximum number of digits, if the actual width is less than @width, use @padc instead - * @padc: character that padded on the left if the actual width is less than @width - * */ -static void -printnum(void (*putch)(int, void*), void *putdat, - unsigned long long num, unsigned base, int width, int padc) { -c01097f1: 55 push %ebp -c01097f2: 89 e5 mov %esp,%ebp -c01097f4: 83 ec 38 sub $0x38,%esp -c01097f7: 8b 45 10 mov 0x10(%ebp),%eax -c01097fa: 89 45 d0 mov %eax,-0x30(%ebp) -c01097fd: 8b 45 14 mov 0x14(%ebp),%eax -c0109800: 89 45 d4 mov %eax,-0x2c(%ebp) - unsigned long long result = num; -c0109803: 8b 45 d0 mov -0x30(%ebp),%eax -c0109806: 8b 55 d4 mov -0x2c(%ebp),%edx -c0109809: 89 45 e8 mov %eax,-0x18(%ebp) -c010980c: 89 55 ec mov %edx,-0x14(%ebp) - unsigned mod = do_div(result, base); -c010980f: 8b 45 18 mov 0x18(%ebp),%eax -c0109812: 89 45 e4 mov %eax,-0x1c(%ebp) -c0109815: 8b 45 e8 mov -0x18(%ebp),%eax -c0109818: 8b 55 ec mov -0x14(%ebp),%edx -c010981b: 89 45 e0 mov %eax,-0x20(%ebp) -c010981e: 89 55 f0 mov %edx,-0x10(%ebp) -c0109821: 8b 45 f0 mov -0x10(%ebp),%eax -c0109824: 89 45 f4 mov %eax,-0xc(%ebp) -c0109827: 83 7d f0 00 cmpl $0x0,-0x10(%ebp) -c010982b: 74 1c je c0109849 -c010982d: 8b 45 f0 mov -0x10(%ebp),%eax -c0109830: ba 00 00 00 00 mov $0x0,%edx -c0109835: f7 75 e4 divl -0x1c(%ebp) -c0109838: 89 55 f4 mov %edx,-0xc(%ebp) -c010983b: 8b 45 f0 mov -0x10(%ebp),%eax -c010983e: ba 00 00 00 00 mov $0x0,%edx -c0109843: f7 75 e4 divl -0x1c(%ebp) -c0109846: 89 45 f0 mov %eax,-0x10(%ebp) -c0109849: 8b 45 e0 mov -0x20(%ebp),%eax -c010984c: 8b 55 f4 mov -0xc(%ebp),%edx -c010984f: f7 75 e4 divl -0x1c(%ebp) -c0109852: 89 45 e0 mov %eax,-0x20(%ebp) -c0109855: 89 55 dc mov %edx,-0x24(%ebp) -c0109858: 8b 45 e0 mov -0x20(%ebp),%eax -c010985b: 8b 55 f0 mov -0x10(%ebp),%edx -c010985e: 89 45 e8 mov %eax,-0x18(%ebp) -c0109861: 89 55 ec mov %edx,-0x14(%ebp) -c0109864: 8b 45 dc mov -0x24(%ebp),%eax -c0109867: 89 45 d8 mov %eax,-0x28(%ebp) - - // first recursively print all preceding (more significant) digits - if (num >= base) { -c010986a: 8b 45 18 mov 0x18(%ebp),%eax -c010986d: ba 00 00 00 00 mov $0x0,%edx -c0109872: 3b 55 d4 cmp -0x2c(%ebp),%edx -c0109875: 77 41 ja c01098b8 -c0109877: 3b 55 d4 cmp -0x2c(%ebp),%edx -c010987a: 72 05 jb c0109881 -c010987c: 3b 45 d0 cmp -0x30(%ebp),%eax -c010987f: 77 37 ja c01098b8 - printnum(putch, putdat, result, base, width - 1, padc); -c0109881: 8b 45 1c mov 0x1c(%ebp),%eax -c0109884: 83 e8 01 sub $0x1,%eax -c0109887: 83 ec 04 sub $0x4,%esp -c010988a: ff 75 20 pushl 0x20(%ebp) -c010988d: 50 push %eax -c010988e: ff 75 18 pushl 0x18(%ebp) -c0109891: ff 75 ec pushl -0x14(%ebp) -c0109894: ff 75 e8 pushl -0x18(%ebp) -c0109897: ff 75 0c pushl 0xc(%ebp) -c010989a: ff 75 08 pushl 0x8(%ebp) -c010989d: e8 4f ff ff ff call c01097f1 -c01098a2: 83 c4 20 add $0x20,%esp -c01098a5: eb 1b jmp c01098c2 - } else { - // print any needed pad characters before first digit - while (-- width > 0) - putch(padc, putdat); -c01098a7: 83 ec 08 sub $0x8,%esp -c01098aa: ff 75 0c pushl 0xc(%ebp) -c01098ad: ff 75 20 pushl 0x20(%ebp) -c01098b0: 8b 45 08 mov 0x8(%ebp),%eax -c01098b3: ff d0 call *%eax -c01098b5: 83 c4 10 add $0x10,%esp - // first recursively print all preceding (more significant) digits - if (num >= base) { - printnum(putch, putdat, result, base, width - 1, padc); - } else { - // print any needed pad characters before first digit - while (-- width > 0) -c01098b8: 83 6d 1c 01 subl $0x1,0x1c(%ebp) -c01098bc: 83 7d 1c 00 cmpl $0x0,0x1c(%ebp) -c01098c0: 7f e5 jg c01098a7 - putch(padc, putdat); - } - // then print this (the least significant) digit - putch("0123456789abcdef"[mod], putdat); -c01098c2: 8b 45 d8 mov -0x28(%ebp),%eax -c01098c5: 05 48 c2 10 c0 add $0xc010c248,%eax -c01098ca: 0f b6 00 movzbl (%eax),%eax -c01098cd: 0f be c0 movsbl %al,%eax -c01098d0: 83 ec 08 sub $0x8,%esp -c01098d3: ff 75 0c pushl 0xc(%ebp) -c01098d6: 50 push %eax -c01098d7: 8b 45 08 mov 0x8(%ebp),%eax -c01098da: ff d0 call *%eax -c01098dc: 83 c4 10 add $0x10,%esp -} -c01098df: 90 nop -c01098e0: c9 leave -c01098e1: c3 ret - -c01098e2 : - * getuint - get an unsigned int of various possible sizes from a varargs list - * @ap: a varargs list pointer - * @lflag: determines the size of the vararg that @ap points to - * */ -static unsigned long long -getuint(va_list *ap, int lflag) { -c01098e2: 55 push %ebp -c01098e3: 89 e5 mov %esp,%ebp - if (lflag >= 2) { -c01098e5: 83 7d 0c 01 cmpl $0x1,0xc(%ebp) -c01098e9: 7e 14 jle c01098ff - return va_arg(*ap, unsigned long long); -c01098eb: 8b 45 08 mov 0x8(%ebp),%eax -c01098ee: 8b 00 mov (%eax),%eax -c01098f0: 8d 48 08 lea 0x8(%eax),%ecx -c01098f3: 8b 55 08 mov 0x8(%ebp),%edx -c01098f6: 89 0a mov %ecx,(%edx) -c01098f8: 8b 50 04 mov 0x4(%eax),%edx -c01098fb: 8b 00 mov (%eax),%eax -c01098fd: eb 30 jmp c010992f - } - else if (lflag) { -c01098ff: 83 7d 0c 00 cmpl $0x0,0xc(%ebp) -c0109903: 74 16 je c010991b - return va_arg(*ap, unsigned long); -c0109905: 8b 45 08 mov 0x8(%ebp),%eax -c0109908: 8b 00 mov (%eax),%eax -c010990a: 8d 48 04 lea 0x4(%eax),%ecx -c010990d: 8b 55 08 mov 0x8(%ebp),%edx -c0109910: 89 0a mov %ecx,(%edx) -c0109912: 8b 00 mov (%eax),%eax -c0109914: ba 00 00 00 00 mov $0x0,%edx -c0109919: eb 14 jmp c010992f - } - else { - return va_arg(*ap, unsigned int); -c010991b: 8b 45 08 mov 0x8(%ebp),%eax -c010991e: 8b 00 mov (%eax),%eax -c0109920: 8d 48 04 lea 0x4(%eax),%ecx -c0109923: 8b 55 08 mov 0x8(%ebp),%edx -c0109926: 89 0a mov %ecx,(%edx) -c0109928: 8b 00 mov (%eax),%eax -c010992a: ba 00 00 00 00 mov $0x0,%edx - } -} -c010992f: 5d pop %ebp -c0109930: c3 ret - -c0109931 : - * getint - same as getuint but signed, we can't use getuint because of sign extension - * @ap: a varargs list pointer - * @lflag: determines the size of the vararg that @ap points to - * */ -static long long -getint(va_list *ap, int lflag) { -c0109931: 55 push %ebp -c0109932: 89 e5 mov %esp,%ebp - if (lflag >= 2) { -c0109934: 83 7d 0c 01 cmpl $0x1,0xc(%ebp) -c0109938: 7e 14 jle c010994e - return va_arg(*ap, long long); -c010993a: 8b 45 08 mov 0x8(%ebp),%eax -c010993d: 8b 00 mov (%eax),%eax -c010993f: 8d 48 08 lea 0x8(%eax),%ecx -c0109942: 8b 55 08 mov 0x8(%ebp),%edx -c0109945: 89 0a mov %ecx,(%edx) -c0109947: 8b 50 04 mov 0x4(%eax),%edx -c010994a: 8b 00 mov (%eax),%eax -c010994c: eb 28 jmp c0109976 - } - else if (lflag) { -c010994e: 83 7d 0c 00 cmpl $0x0,0xc(%ebp) -c0109952: 74 12 je c0109966 - return va_arg(*ap, long); -c0109954: 8b 45 08 mov 0x8(%ebp),%eax -c0109957: 8b 00 mov (%eax),%eax -c0109959: 8d 48 04 lea 0x4(%eax),%ecx -c010995c: 8b 55 08 mov 0x8(%ebp),%edx -c010995f: 89 0a mov %ecx,(%edx) -c0109961: 8b 00 mov (%eax),%eax -c0109963: 99 cltd -c0109964: eb 10 jmp c0109976 - } - else { - return va_arg(*ap, int); -c0109966: 8b 45 08 mov 0x8(%ebp),%eax -c0109969: 8b 00 mov (%eax),%eax -c010996b: 8d 48 04 lea 0x4(%eax),%ecx -c010996e: 8b 55 08 mov 0x8(%ebp),%edx -c0109971: 89 0a mov %ecx,(%edx) -c0109973: 8b 00 mov (%eax),%eax -c0109975: 99 cltd - } -} -c0109976: 5d pop %ebp -c0109977: c3 ret - -c0109978 : - * @putch: specified putch function, print a single character - * @putdat: used by @putch function - * @fmt: the format string to use - * */ -void -printfmt(void (*putch)(int, void*), void *putdat, const char *fmt, ...) { -c0109978: 55 push %ebp -c0109979: 89 e5 mov %esp,%ebp -c010997b: 83 ec 18 sub $0x18,%esp - va_list ap; - - va_start(ap, fmt); -c010997e: 8d 45 14 lea 0x14(%ebp),%eax -c0109981: 89 45 f4 mov %eax,-0xc(%ebp) - vprintfmt(putch, putdat, fmt, ap); -c0109984: 8b 45 f4 mov -0xc(%ebp),%eax -c0109987: 50 push %eax -c0109988: ff 75 10 pushl 0x10(%ebp) -c010998b: ff 75 0c pushl 0xc(%ebp) -c010998e: ff 75 08 pushl 0x8(%ebp) -c0109991: e8 06 00 00 00 call c010999c -c0109996: 83 c4 10 add $0x10,%esp - va_end(ap); -} -c0109999: 90 nop -c010999a: c9 leave -c010999b: c3 ret - -c010999c : - * - * Call this function if you are already dealing with a va_list. - * Or you probably want printfmt() instead. - * */ -void -vprintfmt(void (*putch)(int, void*), void *putdat, const char *fmt, va_list ap) { -c010999c: 55 push %ebp -c010999d: 89 e5 mov %esp,%ebp -c010999f: 56 push %esi -c01099a0: 53 push %ebx -c01099a1: 83 ec 20 sub $0x20,%esp - register int ch, err; - unsigned long long num; - int base, width, precision, lflag, altflag; - - while (1) { - while ((ch = *(unsigned char *)fmt ++) != '%') { -c01099a4: eb 17 jmp c01099bd - if (ch == '\0') { -c01099a6: 85 db test %ebx,%ebx -c01099a8: 0f 84 8e 03 00 00 je c0109d3c - return; - } - putch(ch, putdat); -c01099ae: 83 ec 08 sub $0x8,%esp -c01099b1: ff 75 0c pushl 0xc(%ebp) -c01099b4: 53 push %ebx -c01099b5: 8b 45 08 mov 0x8(%ebp),%eax -c01099b8: ff d0 call *%eax -c01099ba: 83 c4 10 add $0x10,%esp - register int ch, err; - unsigned long long num; - int base, width, precision, lflag, altflag; - - while (1) { - while ((ch = *(unsigned char *)fmt ++) != '%') { -c01099bd: 8b 45 10 mov 0x10(%ebp),%eax -c01099c0: 8d 50 01 lea 0x1(%eax),%edx -c01099c3: 89 55 10 mov %edx,0x10(%ebp) -c01099c6: 0f b6 00 movzbl (%eax),%eax -c01099c9: 0f b6 d8 movzbl %al,%ebx -c01099cc: 83 fb 25 cmp $0x25,%ebx -c01099cf: 75 d5 jne c01099a6 - } - putch(ch, putdat); - } - - // Process a %-escape sequence - char padc = ' '; -c01099d1: c6 45 db 20 movb $0x20,-0x25(%ebp) - width = precision = -1; -c01099d5: c7 45 e4 ff ff ff ff movl $0xffffffff,-0x1c(%ebp) -c01099dc: 8b 45 e4 mov -0x1c(%ebp),%eax -c01099df: 89 45 e8 mov %eax,-0x18(%ebp) - lflag = altflag = 0; -c01099e2: c7 45 dc 00 00 00 00 movl $0x0,-0x24(%ebp) -c01099e9: 8b 45 dc mov -0x24(%ebp),%eax -c01099ec: 89 45 e0 mov %eax,-0x20(%ebp) - - reswitch: - switch (ch = *(unsigned char *)fmt ++) { -c01099ef: 8b 45 10 mov 0x10(%ebp),%eax -c01099f2: 8d 50 01 lea 0x1(%eax),%edx -c01099f5: 89 55 10 mov %edx,0x10(%ebp) -c01099f8: 0f b6 00 movzbl (%eax),%eax -c01099fb: 0f b6 d8 movzbl %al,%ebx -c01099fe: 8d 43 dd lea -0x23(%ebx),%eax -c0109a01: 83 f8 55 cmp $0x55,%eax -c0109a04: 0f 87 05 03 00 00 ja c0109d0f -c0109a0a: 8b 04 85 6c c2 10 c0 mov -0x3fef3d94(,%eax,4),%eax -c0109a11: ff e0 jmp *%eax - - // flag to pad on the right - case '-': - padc = '-'; -c0109a13: c6 45 db 2d movb $0x2d,-0x25(%ebp) - goto reswitch; -c0109a17: eb d6 jmp c01099ef - - // flag to pad with 0's instead of spaces - case '0': - padc = '0'; -c0109a19: c6 45 db 30 movb $0x30,-0x25(%ebp) - goto reswitch; -c0109a1d: eb d0 jmp c01099ef - - // width field - case '1' ... '9': - for (precision = 0; ; ++ fmt) { -c0109a1f: c7 45 e4 00 00 00 00 movl $0x0,-0x1c(%ebp) - precision = precision * 10 + ch - '0'; -c0109a26: 8b 55 e4 mov -0x1c(%ebp),%edx -c0109a29: 89 d0 mov %edx,%eax -c0109a2b: c1 e0 02 shl $0x2,%eax -c0109a2e: 01 d0 add %edx,%eax -c0109a30: 01 c0 add %eax,%eax -c0109a32: 01 d8 add %ebx,%eax -c0109a34: 83 e8 30 sub $0x30,%eax -c0109a37: 89 45 e4 mov %eax,-0x1c(%ebp) - ch = *fmt; -c0109a3a: 8b 45 10 mov 0x10(%ebp),%eax -c0109a3d: 0f b6 00 movzbl (%eax),%eax -c0109a40: 0f be d8 movsbl %al,%ebx - if (ch < '0' || ch > '9') { -c0109a43: 83 fb 2f cmp $0x2f,%ebx -c0109a46: 7e 39 jle c0109a81 -c0109a48: 83 fb 39 cmp $0x39,%ebx -c0109a4b: 7f 34 jg c0109a81 - padc = '0'; - goto reswitch; - - // width field - case '1' ... '9': - for (precision = 0; ; ++ fmt) { -c0109a4d: 83 45 10 01 addl $0x1,0x10(%ebp) - precision = precision * 10 + ch - '0'; - ch = *fmt; - if (ch < '0' || ch > '9') { - break; - } - } -c0109a51: eb d3 jmp c0109a26 - goto process_precision; - - case '*': - precision = va_arg(ap, int); -c0109a53: 8b 45 14 mov 0x14(%ebp),%eax -c0109a56: 8d 50 04 lea 0x4(%eax),%edx -c0109a59: 89 55 14 mov %edx,0x14(%ebp) -c0109a5c: 8b 00 mov (%eax),%eax -c0109a5e: 89 45 e4 mov %eax,-0x1c(%ebp) - goto process_precision; -c0109a61: eb 1f jmp c0109a82 - - case '.': - if (width < 0) -c0109a63: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) -c0109a67: 79 86 jns c01099ef - width = 0; -c0109a69: c7 45 e8 00 00 00 00 movl $0x0,-0x18(%ebp) - goto reswitch; -c0109a70: e9 7a ff ff ff jmp c01099ef - - case '#': - altflag = 1; -c0109a75: c7 45 dc 01 00 00 00 movl $0x1,-0x24(%ebp) - goto reswitch; -c0109a7c: e9 6e ff ff ff jmp c01099ef - ch = *fmt; - if (ch < '0' || ch > '9') { - break; - } - } - goto process_precision; -c0109a81: 90 nop - case '#': - altflag = 1; - goto reswitch; - - process_precision: - if (width < 0) -c0109a82: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) -c0109a86: 0f 89 63 ff ff ff jns c01099ef - width = precision, precision = -1; -c0109a8c: 8b 45 e4 mov -0x1c(%ebp),%eax -c0109a8f: 89 45 e8 mov %eax,-0x18(%ebp) -c0109a92: c7 45 e4 ff ff ff ff movl $0xffffffff,-0x1c(%ebp) - goto reswitch; -c0109a99: e9 51 ff ff ff jmp c01099ef - - // long flag (doubled for long long) - case 'l': - lflag ++; -c0109a9e: 83 45 e0 01 addl $0x1,-0x20(%ebp) - goto reswitch; -c0109aa2: e9 48 ff ff ff jmp c01099ef - - // character - case 'c': - putch(va_arg(ap, int), putdat); -c0109aa7: 8b 45 14 mov 0x14(%ebp),%eax -c0109aaa: 8d 50 04 lea 0x4(%eax),%edx -c0109aad: 89 55 14 mov %edx,0x14(%ebp) -c0109ab0: 8b 00 mov (%eax),%eax -c0109ab2: 83 ec 08 sub $0x8,%esp -c0109ab5: ff 75 0c pushl 0xc(%ebp) -c0109ab8: 50 push %eax -c0109ab9: 8b 45 08 mov 0x8(%ebp),%eax -c0109abc: ff d0 call *%eax -c0109abe: 83 c4 10 add $0x10,%esp - break; -c0109ac1: e9 71 02 00 00 jmp c0109d37 - - // error message - case 'e': - err = va_arg(ap, int); -c0109ac6: 8b 45 14 mov 0x14(%ebp),%eax -c0109ac9: 8d 50 04 lea 0x4(%eax),%edx -c0109acc: 89 55 14 mov %edx,0x14(%ebp) -c0109acf: 8b 18 mov (%eax),%ebx - if (err < 0) { -c0109ad1: 85 db test %ebx,%ebx -c0109ad3: 79 02 jns c0109ad7 - err = -err; -c0109ad5: f7 db neg %ebx - } - if (err > MAXERROR || (p = error_string[err]) == NULL) { -c0109ad7: 83 fb 06 cmp $0x6,%ebx -c0109ada: 7f 0b jg c0109ae7 -c0109adc: 8b 34 9d 2c c2 10 c0 mov -0x3fef3dd4(,%ebx,4),%esi -c0109ae3: 85 f6 test %esi,%esi -c0109ae5: 75 19 jne c0109b00 - printfmt(putch, putdat, "error %d", err); -c0109ae7: 53 push %ebx -c0109ae8: 68 59 c2 10 c0 push $0xc010c259 -c0109aed: ff 75 0c pushl 0xc(%ebp) -c0109af0: ff 75 08 pushl 0x8(%ebp) -c0109af3: e8 80 fe ff ff call c0109978 -c0109af8: 83 c4 10 add $0x10,%esp - } - else { - printfmt(putch, putdat, "%s", p); - } - break; -c0109afb: e9 37 02 00 00 jmp c0109d37 - } - if (err > MAXERROR || (p = error_string[err]) == NULL) { - printfmt(putch, putdat, "error %d", err); - } - else { - printfmt(putch, putdat, "%s", p); -c0109b00: 56 push %esi -c0109b01: 68 62 c2 10 c0 push $0xc010c262 -c0109b06: ff 75 0c pushl 0xc(%ebp) -c0109b09: ff 75 08 pushl 0x8(%ebp) -c0109b0c: e8 67 fe ff ff call c0109978 -c0109b11: 83 c4 10 add $0x10,%esp - } - break; -c0109b14: e9 1e 02 00 00 jmp c0109d37 - - // string - case 's': - if ((p = va_arg(ap, char *)) == NULL) { -c0109b19: 8b 45 14 mov 0x14(%ebp),%eax -c0109b1c: 8d 50 04 lea 0x4(%eax),%edx -c0109b1f: 89 55 14 mov %edx,0x14(%ebp) -c0109b22: 8b 30 mov (%eax),%esi -c0109b24: 85 f6 test %esi,%esi -c0109b26: 75 05 jne c0109b2d - p = "(null)"; -c0109b28: be 65 c2 10 c0 mov $0xc010c265,%esi - } - if (width > 0 && padc != '-') { -c0109b2d: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) -c0109b31: 7e 76 jle c0109ba9 -c0109b33: 80 7d db 2d cmpb $0x2d,-0x25(%ebp) -c0109b37: 74 70 je c0109ba9 - for (width -= strnlen(p, precision); width > 0; width --) { -c0109b39: 8b 45 e4 mov -0x1c(%ebp),%eax -c0109b3c: 83 ec 08 sub $0x8,%esp -c0109b3f: 50 push %eax -c0109b40: 56 push %esi -c0109b41: e8 17 f8 ff ff call c010935d -c0109b46: 83 c4 10 add $0x10,%esp -c0109b49: 89 c2 mov %eax,%edx -c0109b4b: 8b 45 e8 mov -0x18(%ebp),%eax -c0109b4e: 29 d0 sub %edx,%eax -c0109b50: 89 45 e8 mov %eax,-0x18(%ebp) -c0109b53: eb 17 jmp c0109b6c - putch(padc, putdat); -c0109b55: 0f be 45 db movsbl -0x25(%ebp),%eax -c0109b59: 83 ec 08 sub $0x8,%esp -c0109b5c: ff 75 0c pushl 0xc(%ebp) -c0109b5f: 50 push %eax -c0109b60: 8b 45 08 mov 0x8(%ebp),%eax -c0109b63: ff d0 call *%eax -c0109b65: 83 c4 10 add $0x10,%esp - case 's': - if ((p = va_arg(ap, char *)) == NULL) { - p = "(null)"; - } - if (width > 0 && padc != '-') { - for (width -= strnlen(p, precision); width > 0; width --) { -c0109b68: 83 6d e8 01 subl $0x1,-0x18(%ebp) -c0109b6c: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) -c0109b70: 7f e3 jg c0109b55 - putch(padc, putdat); - } - } - for (; (ch = *p ++) != '\0' && (precision < 0 || -- precision >= 0); width --) { -c0109b72: eb 35 jmp c0109ba9 - if (altflag && (ch < ' ' || ch > '~')) { -c0109b74: 83 7d dc 00 cmpl $0x0,-0x24(%ebp) -c0109b78: 74 1c je c0109b96 -c0109b7a: 83 fb 1f cmp $0x1f,%ebx -c0109b7d: 7e 05 jle c0109b84 -c0109b7f: 83 fb 7e cmp $0x7e,%ebx -c0109b82: 7e 12 jle c0109b96 - putch('?', putdat); -c0109b84: 83 ec 08 sub $0x8,%esp -c0109b87: ff 75 0c pushl 0xc(%ebp) -c0109b8a: 6a 3f push $0x3f -c0109b8c: 8b 45 08 mov 0x8(%ebp),%eax -c0109b8f: ff d0 call *%eax -c0109b91: 83 c4 10 add $0x10,%esp -c0109b94: eb 0f jmp c0109ba5 - } - else { - putch(ch, putdat); -c0109b96: 83 ec 08 sub $0x8,%esp -c0109b99: ff 75 0c pushl 0xc(%ebp) -c0109b9c: 53 push %ebx -c0109b9d: 8b 45 08 mov 0x8(%ebp),%eax -c0109ba0: ff d0 call *%eax -c0109ba2: 83 c4 10 add $0x10,%esp - if (width > 0 && padc != '-') { - for (width -= strnlen(p, precision); width > 0; width --) { - putch(padc, putdat); - } - } - for (; (ch = *p ++) != '\0' && (precision < 0 || -- precision >= 0); width --) { -c0109ba5: 83 6d e8 01 subl $0x1,-0x18(%ebp) -c0109ba9: 89 f0 mov %esi,%eax -c0109bab: 8d 70 01 lea 0x1(%eax),%esi -c0109bae: 0f b6 00 movzbl (%eax),%eax -c0109bb1: 0f be d8 movsbl %al,%ebx -c0109bb4: 85 db test %ebx,%ebx -c0109bb6: 74 26 je c0109bde -c0109bb8: 83 7d e4 00 cmpl $0x0,-0x1c(%ebp) -c0109bbc: 78 b6 js c0109b74 -c0109bbe: 83 6d e4 01 subl $0x1,-0x1c(%ebp) -c0109bc2: 83 7d e4 00 cmpl $0x0,-0x1c(%ebp) -c0109bc6: 79 ac jns c0109b74 - } - else { - putch(ch, putdat); - } - } - for (; width > 0; width --) { -c0109bc8: eb 14 jmp c0109bde - putch(' ', putdat); -c0109bca: 83 ec 08 sub $0x8,%esp -c0109bcd: ff 75 0c pushl 0xc(%ebp) -c0109bd0: 6a 20 push $0x20 -c0109bd2: 8b 45 08 mov 0x8(%ebp),%eax -c0109bd5: ff d0 call *%eax -c0109bd7: 83 c4 10 add $0x10,%esp - } - else { - putch(ch, putdat); - } - } - for (; width > 0; width --) { -c0109bda: 83 6d e8 01 subl $0x1,-0x18(%ebp) -c0109bde: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) -c0109be2: 7f e6 jg c0109bca - putch(' ', putdat); - } - break; -c0109be4: e9 4e 01 00 00 jmp c0109d37 - - // (signed) decimal - case 'd': - num = getint(&ap, lflag); -c0109be9: 83 ec 08 sub $0x8,%esp -c0109bec: ff 75 e0 pushl -0x20(%ebp) -c0109bef: 8d 45 14 lea 0x14(%ebp),%eax -c0109bf2: 50 push %eax -c0109bf3: e8 39 fd ff ff call c0109931 -c0109bf8: 83 c4 10 add $0x10,%esp -c0109bfb: 89 45 f0 mov %eax,-0x10(%ebp) -c0109bfe: 89 55 f4 mov %edx,-0xc(%ebp) - if ((long long)num < 0) { -c0109c01: 8b 45 f0 mov -0x10(%ebp),%eax -c0109c04: 8b 55 f4 mov -0xc(%ebp),%edx -c0109c07: 85 d2 test %edx,%edx -c0109c09: 79 23 jns c0109c2e - putch('-', putdat); -c0109c0b: 83 ec 08 sub $0x8,%esp -c0109c0e: ff 75 0c pushl 0xc(%ebp) -c0109c11: 6a 2d push $0x2d -c0109c13: 8b 45 08 mov 0x8(%ebp),%eax -c0109c16: ff d0 call *%eax -c0109c18: 83 c4 10 add $0x10,%esp - num = -(long long)num; -c0109c1b: 8b 45 f0 mov -0x10(%ebp),%eax -c0109c1e: 8b 55 f4 mov -0xc(%ebp),%edx -c0109c21: f7 d8 neg %eax -c0109c23: 83 d2 00 adc $0x0,%edx -c0109c26: f7 da neg %edx -c0109c28: 89 45 f0 mov %eax,-0x10(%ebp) -c0109c2b: 89 55 f4 mov %edx,-0xc(%ebp) - } - base = 10; -c0109c2e: c7 45 ec 0a 00 00 00 movl $0xa,-0x14(%ebp) - goto number; -c0109c35: e9 9f 00 00 00 jmp c0109cd9 - - // unsigned decimal - case 'u': - num = getuint(&ap, lflag); -c0109c3a: 83 ec 08 sub $0x8,%esp -c0109c3d: ff 75 e0 pushl -0x20(%ebp) -c0109c40: 8d 45 14 lea 0x14(%ebp),%eax -c0109c43: 50 push %eax -c0109c44: e8 99 fc ff ff call c01098e2 -c0109c49: 83 c4 10 add $0x10,%esp -c0109c4c: 89 45 f0 mov %eax,-0x10(%ebp) -c0109c4f: 89 55 f4 mov %edx,-0xc(%ebp) - base = 10; -c0109c52: c7 45 ec 0a 00 00 00 movl $0xa,-0x14(%ebp) - goto number; -c0109c59: eb 7e jmp c0109cd9 - - // (unsigned) octal - case 'o': - num = getuint(&ap, lflag); -c0109c5b: 83 ec 08 sub $0x8,%esp -c0109c5e: ff 75 e0 pushl -0x20(%ebp) -c0109c61: 8d 45 14 lea 0x14(%ebp),%eax -c0109c64: 50 push %eax -c0109c65: e8 78 fc ff ff call c01098e2 -c0109c6a: 83 c4 10 add $0x10,%esp -c0109c6d: 89 45 f0 mov %eax,-0x10(%ebp) -c0109c70: 89 55 f4 mov %edx,-0xc(%ebp) - base = 8; -c0109c73: c7 45 ec 08 00 00 00 movl $0x8,-0x14(%ebp) - goto number; -c0109c7a: eb 5d jmp c0109cd9 - - // pointer - case 'p': - putch('0', putdat); -c0109c7c: 83 ec 08 sub $0x8,%esp -c0109c7f: ff 75 0c pushl 0xc(%ebp) -c0109c82: 6a 30 push $0x30 -c0109c84: 8b 45 08 mov 0x8(%ebp),%eax -c0109c87: ff d0 call *%eax -c0109c89: 83 c4 10 add $0x10,%esp - putch('x', putdat); -c0109c8c: 83 ec 08 sub $0x8,%esp -c0109c8f: ff 75 0c pushl 0xc(%ebp) -c0109c92: 6a 78 push $0x78 -c0109c94: 8b 45 08 mov 0x8(%ebp),%eax -c0109c97: ff d0 call *%eax -c0109c99: 83 c4 10 add $0x10,%esp - num = (unsigned long long)(uintptr_t)va_arg(ap, void *); -c0109c9c: 8b 45 14 mov 0x14(%ebp),%eax -c0109c9f: 8d 50 04 lea 0x4(%eax),%edx -c0109ca2: 89 55 14 mov %edx,0x14(%ebp) -c0109ca5: 8b 00 mov (%eax),%eax -c0109ca7: 89 45 f0 mov %eax,-0x10(%ebp) -c0109caa: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - base = 16; -c0109cb1: c7 45 ec 10 00 00 00 movl $0x10,-0x14(%ebp) - goto number; -c0109cb8: eb 1f jmp c0109cd9 - - // (unsigned) hexadecimal - case 'x': - num = getuint(&ap, lflag); -c0109cba: 83 ec 08 sub $0x8,%esp -c0109cbd: ff 75 e0 pushl -0x20(%ebp) -c0109cc0: 8d 45 14 lea 0x14(%ebp),%eax -c0109cc3: 50 push %eax -c0109cc4: e8 19 fc ff ff call c01098e2 -c0109cc9: 83 c4 10 add $0x10,%esp -c0109ccc: 89 45 f0 mov %eax,-0x10(%ebp) -c0109ccf: 89 55 f4 mov %edx,-0xc(%ebp) - base = 16; -c0109cd2: c7 45 ec 10 00 00 00 movl $0x10,-0x14(%ebp) - number: - printnum(putch, putdat, num, base, width, padc); -c0109cd9: 0f be 55 db movsbl -0x25(%ebp),%edx -c0109cdd: 8b 45 ec mov -0x14(%ebp),%eax -c0109ce0: 83 ec 04 sub $0x4,%esp -c0109ce3: 52 push %edx -c0109ce4: ff 75 e8 pushl -0x18(%ebp) -c0109ce7: 50 push %eax -c0109ce8: ff 75 f4 pushl -0xc(%ebp) -c0109ceb: ff 75 f0 pushl -0x10(%ebp) -c0109cee: ff 75 0c pushl 0xc(%ebp) -c0109cf1: ff 75 08 pushl 0x8(%ebp) -c0109cf4: e8 f8 fa ff ff call c01097f1 -c0109cf9: 83 c4 20 add $0x20,%esp - break; -c0109cfc: eb 39 jmp c0109d37 - - // escaped '%' character - case '%': - putch(ch, putdat); -c0109cfe: 83 ec 08 sub $0x8,%esp -c0109d01: ff 75 0c pushl 0xc(%ebp) -c0109d04: 53 push %ebx -c0109d05: 8b 45 08 mov 0x8(%ebp),%eax -c0109d08: ff d0 call *%eax -c0109d0a: 83 c4 10 add $0x10,%esp - break; -c0109d0d: eb 28 jmp c0109d37 - - // unrecognized escape sequence - just print it literally - default: - putch('%', putdat); -c0109d0f: 83 ec 08 sub $0x8,%esp -c0109d12: ff 75 0c pushl 0xc(%ebp) -c0109d15: 6a 25 push $0x25 -c0109d17: 8b 45 08 mov 0x8(%ebp),%eax -c0109d1a: ff d0 call *%eax -c0109d1c: 83 c4 10 add $0x10,%esp - for (fmt --; fmt[-1] != '%'; fmt --) -c0109d1f: 83 6d 10 01 subl $0x1,0x10(%ebp) -c0109d23: eb 04 jmp c0109d29 -c0109d25: 83 6d 10 01 subl $0x1,0x10(%ebp) -c0109d29: 8b 45 10 mov 0x10(%ebp),%eax -c0109d2c: 83 e8 01 sub $0x1,%eax -c0109d2f: 0f b6 00 movzbl (%eax),%eax -c0109d32: 3c 25 cmp $0x25,%al -c0109d34: 75 ef jne c0109d25 - /* do nothing */; - break; -c0109d36: 90 nop - } - } -c0109d37: e9 68 fc ff ff jmp c01099a4 - int base, width, precision, lflag, altflag; - - while (1) { - while ((ch = *(unsigned char *)fmt ++) != '%') { - if (ch == '\0') { - return; -c0109d3c: 90 nop - for (fmt --; fmt[-1] != '%'; fmt --) - /* do nothing */; - break; - } - } -} -c0109d3d: 8d 65 f8 lea -0x8(%ebp),%esp -c0109d40: 5b pop %ebx -c0109d41: 5e pop %esi -c0109d42: 5d pop %ebp -c0109d43: c3 ret - -c0109d44 : - * sprintputch - 'print' a single character in a buffer - * @ch: the character will be printed - * @b: the buffer to place the character @ch - * */ -static void -sprintputch(int ch, struct sprintbuf *b) { -c0109d44: 55 push %ebp -c0109d45: 89 e5 mov %esp,%ebp - b->cnt ++; -c0109d47: 8b 45 0c mov 0xc(%ebp),%eax -c0109d4a: 8b 40 08 mov 0x8(%eax),%eax -c0109d4d: 8d 50 01 lea 0x1(%eax),%edx -c0109d50: 8b 45 0c mov 0xc(%ebp),%eax -c0109d53: 89 50 08 mov %edx,0x8(%eax) - if (b->buf < b->ebuf) { -c0109d56: 8b 45 0c mov 0xc(%ebp),%eax -c0109d59: 8b 10 mov (%eax),%edx -c0109d5b: 8b 45 0c mov 0xc(%ebp),%eax -c0109d5e: 8b 40 04 mov 0x4(%eax),%eax -c0109d61: 39 c2 cmp %eax,%edx -c0109d63: 73 12 jae c0109d77 - *b->buf ++ = ch; -c0109d65: 8b 45 0c mov 0xc(%ebp),%eax -c0109d68: 8b 00 mov (%eax),%eax -c0109d6a: 8d 48 01 lea 0x1(%eax),%ecx -c0109d6d: 8b 55 0c mov 0xc(%ebp),%edx -c0109d70: 89 0a mov %ecx,(%edx) -c0109d72: 8b 55 08 mov 0x8(%ebp),%edx -c0109d75: 88 10 mov %dl,(%eax) - } -} -c0109d77: 90 nop -c0109d78: 5d pop %ebp -c0109d79: c3 ret - -c0109d7a : - * @str: the buffer to place the result into - * @size: the size of buffer, including the trailing null space - * @fmt: the format string to use - * */ -int -snprintf(char *str, size_t size, const char *fmt, ...) { -c0109d7a: 55 push %ebp -c0109d7b: 89 e5 mov %esp,%ebp -c0109d7d: 83 ec 18 sub $0x18,%esp - va_list ap; - int cnt; - va_start(ap, fmt); -c0109d80: 8d 45 14 lea 0x14(%ebp),%eax -c0109d83: 89 45 f0 mov %eax,-0x10(%ebp) - cnt = vsnprintf(str, size, fmt, ap); -c0109d86: 8b 45 f0 mov -0x10(%ebp),%eax -c0109d89: 50 push %eax -c0109d8a: ff 75 10 pushl 0x10(%ebp) -c0109d8d: ff 75 0c pushl 0xc(%ebp) -c0109d90: ff 75 08 pushl 0x8(%ebp) -c0109d93: e8 0b 00 00 00 call c0109da3 -c0109d98: 83 c4 10 add $0x10,%esp -c0109d9b: 89 45 f4 mov %eax,-0xc(%ebp) - va_end(ap); - return cnt; -c0109d9e: 8b 45 f4 mov -0xc(%ebp),%eax -} -c0109da1: c9 leave -c0109da2: c3 ret - -c0109da3 : - * - * Call this function if you are already dealing with a va_list. - * Or you probably want snprintf() instead. - * */ -int -vsnprintf(char *str, size_t size, const char *fmt, va_list ap) { -c0109da3: 55 push %ebp -c0109da4: 89 e5 mov %esp,%ebp -c0109da6: 83 ec 18 sub $0x18,%esp - struct sprintbuf b = {str, str + size - 1, 0}; -c0109da9: 8b 45 08 mov 0x8(%ebp),%eax -c0109dac: 89 45 ec mov %eax,-0x14(%ebp) -c0109daf: 8b 45 0c mov 0xc(%ebp),%eax -c0109db2: 8d 50 ff lea -0x1(%eax),%edx -c0109db5: 8b 45 08 mov 0x8(%ebp),%eax -c0109db8: 01 d0 add %edx,%eax -c0109dba: 89 45 f0 mov %eax,-0x10(%ebp) -c0109dbd: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - if (str == NULL || b.buf > b.ebuf) { -c0109dc4: 83 7d 08 00 cmpl $0x0,0x8(%ebp) -c0109dc8: 74 0a je c0109dd4 -c0109dca: 8b 55 ec mov -0x14(%ebp),%edx -c0109dcd: 8b 45 f0 mov -0x10(%ebp),%eax -c0109dd0: 39 c2 cmp %eax,%edx -c0109dd2: 76 07 jbe c0109ddb - return -E_INVAL; -c0109dd4: b8 fd ff ff ff mov $0xfffffffd,%eax -c0109dd9: eb 20 jmp c0109dfb - } - // print the string to the buffer - vprintfmt((void*)sprintputch, &b, fmt, ap); -c0109ddb: ff 75 14 pushl 0x14(%ebp) -c0109dde: ff 75 10 pushl 0x10(%ebp) -c0109de1: 8d 45 ec lea -0x14(%ebp),%eax -c0109de4: 50 push %eax -c0109de5: 68 44 9d 10 c0 push $0xc0109d44 -c0109dea: e8 ad fb ff ff call c010999c -c0109def: 83 c4 10 add $0x10,%esp - // null terminate the buffer - *b.buf = '\0'; -c0109df2: 8b 45 ec mov -0x14(%ebp),%eax -c0109df5: c6 00 00 movb $0x0,(%eax) - return b.cnt; -c0109df8: 8b 45 f4 mov -0xc(%ebp),%eax -} -c0109dfb: c9 leave -c0109dfc: c3 ret - -c0109dfd : - * @bits: the number of bits in a return value - * - * High bits are more random, so we use them. - * */ -uint32_t -hash32(uint32_t val, unsigned int bits) { -c0109dfd: 55 push %ebp -c0109dfe: 89 e5 mov %esp,%ebp -c0109e00: 83 ec 10 sub $0x10,%esp - uint32_t hash = val * GOLDEN_RATIO_PRIME_32; -c0109e03: 8b 45 08 mov 0x8(%ebp),%eax -c0109e06: 69 c0 01 00 37 9e imul $0x9e370001,%eax,%eax -c0109e0c: 89 45 fc mov %eax,-0x4(%ebp) - return (hash >> (32 - bits)); -c0109e0f: b8 20 00 00 00 mov $0x20,%eax -c0109e14: 2b 45 0c sub 0xc(%ebp),%eax -c0109e17: 8b 55 fc mov -0x4(%ebp),%edx -c0109e1a: 89 c1 mov %eax,%ecx -c0109e1c: d3 ea shr %cl,%edx -c0109e1e: 89 d0 mov %edx,%eax -} -c0109e20: c9 leave -c0109e21: c3 ret - -c0109e22 : - * rand - returns a pseudo-random integer - * - * The rand() function return a value in the range [0, RAND_MAX]. - * */ -int -rand(void) { -c0109e22: 55 push %ebp -c0109e23: 89 e5 mov %esp,%ebp -c0109e25: 57 push %edi -c0109e26: 56 push %esi -c0109e27: 53 push %ebx -c0109e28: 83 ec 24 sub $0x24,%esp - next = (next * 0x5DEECE66DLL + 0xBLL) & ((1LL << 48) - 1); -c0109e2b: a1 a8 6a 12 c0 mov 0xc0126aa8,%eax -c0109e30: 8b 15 ac 6a 12 c0 mov 0xc0126aac,%edx -c0109e36: 69 fa 6d e6 ec de imul $0xdeece66d,%edx,%edi -c0109e3c: 6b f0 05 imul $0x5,%eax,%esi -c0109e3f: 01 fe add %edi,%esi -c0109e41: bf 6d e6 ec de mov $0xdeece66d,%edi -c0109e46: f7 e7 mul %edi -c0109e48: 01 d6 add %edx,%esi -c0109e4a: 89 f2 mov %esi,%edx -c0109e4c: 83 c0 0b add $0xb,%eax -c0109e4f: 83 d2 00 adc $0x0,%edx -c0109e52: 89 c7 mov %eax,%edi -c0109e54: 83 e7 ff and $0xffffffff,%edi -c0109e57: 89 f9 mov %edi,%ecx -c0109e59: 0f b7 da movzwl %dx,%ebx -c0109e5c: 89 0d a8 6a 12 c0 mov %ecx,0xc0126aa8 -c0109e62: 89 1d ac 6a 12 c0 mov %ebx,0xc0126aac - unsigned long long result = (next >> 12); -c0109e68: a1 a8 6a 12 c0 mov 0xc0126aa8,%eax -c0109e6d: 8b 15 ac 6a 12 c0 mov 0xc0126aac,%edx -c0109e73: 0f ac d0 0c shrd $0xc,%edx,%eax -c0109e77: c1 ea 0c shr $0xc,%edx -c0109e7a: 89 45 e0 mov %eax,-0x20(%ebp) -c0109e7d: 89 55 e4 mov %edx,-0x1c(%ebp) - return (int)do_div(result, RAND_MAX + 1); -c0109e80: c7 45 dc 00 00 00 80 movl $0x80000000,-0x24(%ebp) -c0109e87: 8b 45 e0 mov -0x20(%ebp),%eax -c0109e8a: 8b 55 e4 mov -0x1c(%ebp),%edx -c0109e8d: 89 45 d8 mov %eax,-0x28(%ebp) -c0109e90: 89 55 e8 mov %edx,-0x18(%ebp) -c0109e93: 8b 45 e8 mov -0x18(%ebp),%eax -c0109e96: 89 45 ec mov %eax,-0x14(%ebp) -c0109e99: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) -c0109e9d: 74 1c je c0109ebb -c0109e9f: 8b 45 e8 mov -0x18(%ebp),%eax -c0109ea2: ba 00 00 00 00 mov $0x0,%edx -c0109ea7: f7 75 dc divl -0x24(%ebp) -c0109eaa: 89 55 ec mov %edx,-0x14(%ebp) -c0109ead: 8b 45 e8 mov -0x18(%ebp),%eax -c0109eb0: ba 00 00 00 00 mov $0x0,%edx -c0109eb5: f7 75 dc divl -0x24(%ebp) -c0109eb8: 89 45 e8 mov %eax,-0x18(%ebp) -c0109ebb: 8b 45 d8 mov -0x28(%ebp),%eax -c0109ebe: 8b 55 ec mov -0x14(%ebp),%edx -c0109ec1: f7 75 dc divl -0x24(%ebp) -c0109ec4: 89 45 d8 mov %eax,-0x28(%ebp) -c0109ec7: 89 55 d4 mov %edx,-0x2c(%ebp) -c0109eca: 8b 45 d8 mov -0x28(%ebp),%eax -c0109ecd: 8b 55 e8 mov -0x18(%ebp),%edx -c0109ed0: 89 45 e0 mov %eax,-0x20(%ebp) -c0109ed3: 89 55 e4 mov %edx,-0x1c(%ebp) -c0109ed6: 8b 45 d4 mov -0x2c(%ebp),%eax -} -c0109ed9: 83 c4 24 add $0x24,%esp -c0109edc: 5b pop %ebx -c0109edd: 5e pop %esi -c0109ede: 5f pop %edi -c0109edf: 5d pop %ebp -c0109ee0: c3 ret - -c0109ee1 : -/* * - * srand - seed the random number generator with the given number - * @seed: the required seed number - * */ -void -srand(unsigned int seed) { -c0109ee1: 55 push %ebp -c0109ee2: 89 e5 mov %esp,%ebp - next = seed; -c0109ee4: 8b 45 08 mov 0x8(%ebp),%eax -c0109ee7: ba 00 00 00 00 mov $0x0,%edx -c0109eec: a3 a8 6a 12 c0 mov %eax,0xc0126aa8 -c0109ef1: 89 15 ac 6a 12 c0 mov %edx,0xc0126aac -} -c0109ef7: 90 nop -c0109ef8: 5d pop %ebp -c0109ef9: c3 ret diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kernel.sym" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kernel.sym" deleted file mode 100644 index c4c80e8bd..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/kernel.sym" +++ /dev/null @@ -1,623 +0,0 @@ -c0100000 .text -c0109f00 .rodata -c010c3c4 .stab -c011eb45 .stabstr -c0124000 .data -c0126ac0 .bss -00000000 .comment -00000000 obj/kern/init/entry.o -c0126018 __gdtdesc -c0100019 relocated -c0100028 spin -c0126000 __gdt -00000000 init.c -c0100126 lab1_print_cur_status -c0126ac0 round.1884 -c01001e3 lab1_switch_to_user -c01001e9 lab1_switch_to_kernel -c01001ef lab1_switch_test -00000000 stdio.c -c0100231 cputch -00000000 readline.c -c0126ae0 buf -00000000 panic.c -c0126ee0 is_panic -00000000 kdebug.c -c01004a3 stab_binsearch -c0100a41 read_eip -00000000 kmonitor.c -c0126020 commands -c0100b11 parse -c0100bcd runcmd -00000000 ide.c -c010a204 channels -c0126f00 ide_devices -c0100d69 ide_wait_ready -00000000 clock.c -00000000 console.c -c0101604 __intr_save -c010162e __intr_restore -c0101642 delay -c0126fe0 crt_buf -c0126fe4 crt_pos -c0126fe6 addr_6845 -c010168b cga_init -c0126fe8 serial_exists -c0101772 serial_init -c0101857 lpt_putc_sub -c01018d1 lpt_putc -c0101908 cga_putc -c0101add serial_putc_sub -c0101b37 serial_putc -c0127000 cons -c0101b6e cons_intr -c0101bba serial_proc_data -c0126060 shiftcode -c0126160 togglecode -c0126260 normalmap -c0126360 shiftmap -c0126460 ctlmap -c0126560 charcode -c0101c33 kbd_proc_data -c0127208 shift.1612 -c0101dc0 kbd_intr -c0101dd9 kbd_init -00000000 picirq.c -c0126570 irq_mask -c012720c did_init -c0101ee0 pic_setmask -00000000 intr.c -00000000 trap.c -c01020b1 print_ticks -c0127220 idt -c0126580 idt_pd -c01022b3 trapname -c010a740 excnames.1705 -c01265a0 IA32flags -c0102597 print_pgfault -c010260c pgfault_handler -c0127a20 in_swap_tick_event -c0102666 trap_dispatch -00000000 pmm.c -c0103283 page2ppn -c0103296 page2pa -c01032a9 pa2page -c01032e6 page2kva -c010332b pte2page -c0103365 pde2page -c0103381 page_ref -c010338b set_page_ref -c0103399 page_ref_inc -c01033b0 page_ref_dec -c01033c7 __intr_save -c01033f1 __intr_restore -c0127a60 ts -c0126a00 gdt -c0126a30 gdt_pd -c0103405 lgdt -c0103449 gdt_init -c010353b init_pmm_manager -c0103570 init_memmap -c010365e page_init -c0103a0a enable_paging -c0103a44 boot_map_segment -c0103b2d boot_alloc_page -c010405f check_alloc_page -c0104082 check_pgdir -c01045e8 check_boot_pgdir -c0103e0b page_remove_pte -c01048e1 perm2str -c0127ac8 str.1896 -c010492f get_pgtable_items -00000000 vmm.c -c0104b37 pa2page -c0104b74 pde2page -c0104cf9 check_vma_overlap -c0104f1d check_vmm -c0104f48 check_vma_struct -c0105345 check_pgfault -00000000 swap.c -c0105714 pa2page -c0105751 pte2page -c0127ad8 sm -c0105c00 check_swap -c0105a87 check_content_set -c0105be8 check_content_access -00000000 kmalloc.c -c01061b3 __intr_save -c01061dd __intr_restore -c01061f1 page2ppn -c0106204 page2pa -c0106217 pa2page -c0106254 page2kva -c0106299 kva2page -c0126a38 arena -c0126a40 slobfree -c0127adc bigblocks -c01062d8 __slob_get_free_pages -c0106318 __slob_free_pages -c0106351 first_fit_alloc -c0106713 slob_free -c0106520 best_fit_alloc -c01066f7 slob_alloc -c010687c find_order -c01068a0 __kmalloc -00000000 swap_fifo.c -c0106af5 _fifo_init_mm -c0106b27 _fifo_map_swappable -c0106bac _fifo_swap_out_victim -c0106c3c _fifo_check_swap -c0106f0b _fifo_init -c0106f15 _fifo_set_unswappable -c0106f1f _fifo_tick_event -00000000 default_pmm.c -c0106f29 page2ppn -c0106f3c page2pa -c0106f4f page_ref -c0106f59 set_page_ref -c0106f67 default_init -c0106f95 default_init_memmap -c01070ba default_alloc_pages -c010728c default_free_pages -c0107601 default_nr_free_pages -c010760b basic_check -c0107a81 default_check -00000000 swap_clock.c -c0107fe9 _clock_init_mm -c0108025 _clock_map_swappable -c01080ac _clock_swap_out_victim -c0108227 mark_read -c010827d mark_write -c01082e2 _clock_check_swap -c0108640 _clock_init -c010864a _clock_set_unswappable -c0108654 _clock_tick_event -00000000 swapfs.c -c010865e page2ppn -c0108671 page2pa -c0108684 page2kva -00000000 proc.c -c01087fe __intr_save -c0108828 __intr_restore -c010883c page2ppn -c010884f page2pa -c0108862 pa2page -c010889f page2kva -c01088e4 kva2page -c0127b00 hash_list -c0129b00 nr_process -c0108923 alloc_proc -c0129b04 name.1792 -c0108a43 get_pid -c0126aa0 last_pid.1802 -c0126aa4 next_safe.1801 -c0108bb9 forkret -c0108bd6 hash_proc -c0108d25 setup_kstack -c0108d65 put_kstack -c0108d8e copy_mm -c0108dc0 copy_thread -c0108fd7 init_main -00000000 sched.c -c01091ed __intr_save -c0109217 __intr_restore -00000000 string.c -00000000 printfmt.c -c010c22c error_string -c01097f1 printnum -c01098e2 getuint -c0109931 getint -c0109d44 sprintputch -00000000 hash.c -00000000 rand.c -c0126aa8 next -c0126a80 swap_manager_clock -c01031b3 vector242 -c0102c0a vector119 -c0100908 print_kerninfo -c0102aea vector87 -c0102ae1 vector86 -c010321f vector251 -c010938d strcpy -c01010c7 ide_device_valid -c0102b0e vector91 -c0102904 vector33 -c0102df3 vector162 -c0103057 vector213 -c0102ba7 vector108 -c010295e vector43 -c0106868 slob_allocated -c0100000 kern_entry -c0100d57 mon_backtrace -c0102e17 vector165 -c0102f07 vector185 -c0102be6 vector115 -c0102c25 vector122 -c0103eae page_insert -c0102dab vector156 -c01031d7 vector245 -c0102f37 vector189 -c010282a vector7 -c0102a00 vector61 -c01028b3 vector24 -c0102bc2 vector111 -c0102fbb vector200 -c0102a36 vector67 -c010922b wakeup_proc -c0106872 kallocated -c0103fb7 pgdir_alloc_page -c0102cd3 vector138 -c0102a75 vector74 -c01096a6 memmove -c01029dc vector57 -c0104b90 mm_create -c0109d7a snprintf -c01022fa print_trapframe -c0103063 vector214 -c010999c vprintfmt -c0102b56 vector99 -c0103db5 get_page -c010325b __alltraps -c0101e6e cons_getc -c0102cf7 vector141 -c0100499 is_kernel_panic -c0102e6b vector172 -c0100a52 print_stackframe -c01031a7 vector241 -c0129c04 pra_list_head -c0103237 vector253 -c0102806 vector3 -c010327d forkrets -c01027fd vector2 -c0108e5c do_fork -c01030ff vector227 -c0108cc0 kernel_thread -c0103033 vector210 -c0127ae0 idleproc -c01030db vector224 -c010294c vector41 -c0126a60 swap_manager_fifo -c010027e cprintf -c0129c24 proc_list -c0102898 vector21 -c0102ea7 vector177 -c0102c01 vector118 -c0102a51 vector70 -c0102a48 vector69 -c0103177 vector237 -c0102a1b vector64 -c01028ce vector27 -c0104f0f vmm_init -c0102c8b vector132 -c0102f13 vector186 -c0103087 vector217 -c0104e98 mm_destroy -c01087f5 kernel_thread_entry -c0109749 memcpy -c01027f4 vector1 -c0102eb3 vector178 -c0102931 vector38 -c01069a7 kfree -c0103183 vector238 -c0100322 readline -c0102c97 vector133 -c0102a6c vector73 -c0102d1b vector144 -c010a80c vpd -c010002a kern_init -c0103243 vector254 -c0102b68 vector101 -c010303f vector211 -c0102e83 vector174 -c01031bf vector243 -c0102c5b vector128 -c0102ab4 vector81 -c01035fb free_pages -c0102856 vector13 -c0109da3 vsnprintf -c01029a6 vector51 -c010286d vector16 -c0126ab0 edata -c0101df4 cons_init -c01059d4 swap_in -c0101371 ide_write_secs -c0129b18 pmm_manager -c010319b vector240 -c01029c1 vector54 -c0102886 vector19 -c011eb44 __STAB_END__ -c0102b17 vector92 -c01031cb vector244 -c0127ad0 swap_init_ok -c010343b load_esp0 -c0102ceb vector140 -c0102970 vector45 -c0102aa2 vector79 -c0103117 vector229 -c010578b swap_init -c0102dc3 vector158 -c0101f39 pic_enable -c01086c9 swapfs_init -c0129b40 check_rp -c010293a vector39 -c0102e3b vector168 -c0102916 vector35 -c0102bd4 vector113 -c011eb45 __STABSTR_BEGIN__ -c0102c40 vector125 -c01003e4 __panic -c0127ae4 initproc -c010307b vector216 -c0102a12 vector63 -c01028c5 vector26 -c0101c11 serial_intr -c0102f67 vector193 -c0102f8b vector196 -c01000eb grade_backtrace0 -c0103027 vector209 -c010280f vector4 -c0102e53 vector170 -c0109267 schedule -c0102cbb vector136 -c0102841 vector10 -c0103003 vector206 -c010324f vector255 -c0102ed7 vector181 -c01029ee vector59 -c0100105 grade_backtrace -c0102ad8 vector85 -c0102acf vector84 -c01087be switch_to -c0102eef vector183 -c0102dcf vector159 -c010304b vector212 -c0102982 vector47 -c0109509 strtol -c010310b vector228 -c0102955 vector42 -c0102bdd vector114 -c010935d strnlen -c0102e8f vector175 -c0102d0f vector143 -c0102c73 vector130 -c010bce4 default_pmm_manager -c01031e3 vector246 -c010283a vector9 -c0102d03 vector142 -c0102b5f vector100 -c0102fc7 vector201 -c01020ed idt_init -c01009a5 print_debuginfo -c0104c48 find_vma -c0129b60 swap_in_seq_no -c01029f7 vector60 -c01028aa vector23 -c010316b vector236 -c0127a40 npage -c010554a do_pgfault -c010312f vector231 -c01089d9 set_proc_name -c0102a2d vector66 -c01028e0 vector29 -c01049e3 print_pgdir -c0102caf vector135 -c0100c7d kmonitor -c0102a90 vector77 -c0102ecb vector180 -c010159b clock_init -c010301b vector208 -c0102b4d vector98 -c0102b44 vector97 -c0103630 nr_free_pages -c0106a6d ksize -c0102e9b vector176 -c0102f73 vector194 -c01028fb vector32 -c0129b1c boot_cr3 -c0129c2c end -c0102faf vector199 -c0108fba do_exit -c0102c7f vector131 -c010322b vector252 -c01027eb vector0 -c01094da strfind -c0101e25 cons_putc -c0129ba0 swap_out_seq_no -c0109efa etext -c0102d27 vector145 -c0102b9e vector107 -c0127a44 boot_pgdir -c0129c18 current_clock_pointer -c0102943 vector40 -c01020a3 intr_enable -c0129c1c clock_list_head -c0102b71 vector102 -c01029d3 vector56 -c0102a3f vector68 -c0102821 vector6 -c0109e22 rand -c0102c67 vector129 -c0102f97 vector197 -c0102d7b vector152 -c0126600 __vectors -c0103123 vector230 -c0109451 strncmp -c0106831 slob_init -c0103c7a get_pte -c0101107 ide_device_size -c0102928 vector37 -c0129bc8 check_swap_addr -c0102ff7 vector205 -c0102de7 vector161 -c0127ae8 current -c01093cd strncpy -c0102a5a vector71 -c0102ddb vector160 -c010684a kmalloc_init -c010306f vector215 -c0102db7 vector157 -c01020aa intr_disable -c01024d7 print_regs -c0102bcb vector112 -c01000ac grade_backtrace2 -c0102ee3 vector182 -c010284f vector12 -c0109799 memcmp -c0102bb0 vector109 -c010288f vector20 -c01029b8 vector53 -c010287d vector18 -c01091d4 cpu_idle -c0102b32 vector95 -c01030f3 vector226 -c0102994 vector49 -c0102967 vector44 -c0102a99 vector78 -c0102e77 vector173 -c010870c swapfs_read -c0102bf8 vector117 -c01022e4 trap_in_kernel -c0105865 swap_set_unswappable -c0102abd vector82 -c01030c3 vector222 -c0102833 vector8 -c0102d57 vector149 -c01002a4 cputchar -c0109666 memset -c010313b vector232 -c0101147 ide_read_secs -c0102b95 vector106 -c01030ab vector220 -c0102b05 vector90 -c0102dff vector163 -c0109ee1 srand -c0103153 vector234 -c0105844 swap_map_swappable -c0102a09 vector62 -c01028bc vector25 -c0102fa3 vector198 -c0102c13 vector120 -c0100309 getchar -c0103e75 page_remove -c0109dfd hash32 -c010299d vector50 -c0102864 vector15 -c0127ad4 swap_out_num -c0109978 printfmt -c0102d6f vector151 -c0102ac6 vector83 -c0102afc vector89 -c0102af3 vector88 -c01027d4 trap -c0102ebf vector179 -c010290d vector34 -c0123610 __STABSTR_END__ -c0102979 vector46 -c0109407 strcmp -c0102ca3 vector134 -c01030cf vector223 -c0103093 vector218 -c01005fa debuginfo_eip -c0129bdc max_swap_offset -c0104d74 insert_vma_struct -c0101f66 pic_init -c01030e7 vector225 -c0102f1f vector187 -c0103b70 pmm_init -c01028e9 vector30 -c0102c52 vector127 -c0129b14 ticks -c0102f5b vector192 -c0102e23 vector166 -c0102a87 vector76 -c0102a7e vector75 -c0102f7f vector195 -c0102d63 vector150 -c01029e5 vector58 -c01031fb vector248 -c0102c2e vector123 -c0102b3b vector96 -c01028f2 vector31 -c0102fdf vector203 -c010358f alloc_pages -c0102cdf vector139 -c0102d87 vector153 -c0102e0b vector164 -c0102c1c vector121 -c0102818 vector5 -c0102e2f vector167 -c0102d9f vector155 -c0103207 vector249 -c010a808 vpt -c0103213 vector250 -c0102c37 vector124 -c0102bb9 vector110 -c0102feb vector204 -c0129be0 swap_page -c0103272 __trapret -c0100255 vcprintf -c0102cc7 vector137 -c0100452 __warn -c01031ef vector247 -c01028a1 vector22 -c0102fd3 vector202 -c0102a63 vector72 -c01029ca vector55 -c01002bb cputs -c0126000 bootstacktop -c0108c50 find_proc -c0102c49 vector126 -c0102a24 vector65 -c01028d7 vector28 -c0102e47 vector169 -c0105829 swap_tick_event -c0103147 vector233 -c0105883 swap_out -c010698f kmalloc -c0104c0c vma_create -c0102d3f vector147 -c0108b3b proc_run -c0124000 bootstack -c0102b83 vector104 -c0129c0c free_area -c0102bef vector116 -c0108765 swapfs_write -c010c3c4 __STAB_BEGIN__ -c0129bf4 check_ptep -c01029af vector52 -c0102876 vector17 -c0102efb vector184 -c0109335 strlen -c0108a0e get_proc_name -c0127acc pgfault_num -c010300f vector207 -c0102f43 vector190 -c0100dc3 ide_init -c010318f vector239 -c0102b29 vector94 -c0102b20 vector93 -c0102f2b vector188 -c01094a7 strchr -c010298b vector48 -c0129b24 check_mm_struct -c010580e swap_init_mm -c01000c6 grade_backtrace1 -c010309f vector219 -c0102d4b vector148 -c01030b7 vector221 -c0102aab vector80 -c0102e5f vector171 -c0102d93 vector154 -c010291f vector36 -c010315f vector235 -c0102b8c vector105 -c0100d45 mon_kerninfo -c0129b20 pages -c0102d33 vector146 -c0102f4f vector191 -c0109034 proc_init -c0102b7a vector103 -c0100ceb mon_help -c0102848 vector11 -c0103f67 tlb_invalidate -c010285d vector14 diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/libs/hash.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/libs/hash.d" deleted file mode 100644 index 15c8e8ac6..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/libs/hash.d" +++ /dev/null @@ -1 +0,0 @@ -obj/libs/hash.o obj/libs/hash.d: libs/hash.c libs/stdlib.h libs/defs.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/libs/hash.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/libs/hash.o" deleted file mode 100644 index 3166d726f..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/libs/hash.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/libs/printfmt.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/libs/printfmt.d" deleted file mode 100644 index 7f093e2c5..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/libs/printfmt.d" +++ /dev/null @@ -1,2 +0,0 @@ -obj/libs/printfmt.o obj/libs/printfmt.d: libs/printfmt.c libs/defs.h \ - libs/x86.h libs/error.h libs/stdio.h libs/stdarg.h libs/string.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/libs/printfmt.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/libs/printfmt.o" deleted file mode 100644 index 628685517..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/libs/printfmt.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/libs/rand.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/libs/rand.d" deleted file mode 100644 index fa05545e2..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/libs/rand.d" +++ /dev/null @@ -1,2 +0,0 @@ -obj/libs/rand.o obj/libs/rand.d: libs/rand.c libs/x86.h libs/defs.h \ - libs/stdlib.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/libs/rand.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/libs/rand.o" deleted file mode 100644 index 9e807ce2a..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/libs/rand.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/libs/string.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/libs/string.d" deleted file mode 100644 index dd7b1bae0..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/libs/string.d" +++ /dev/null @@ -1,2 +0,0 @@ -obj/libs/string.o obj/libs/string.d: libs/string.c libs/string.h \ - libs/defs.h libs/x86.h diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/libs/string.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/libs/string.o" deleted file mode 100644 index d26c664fd..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/libs/string.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/sign/tools/sign.d" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/sign/tools/sign.d" deleted file mode 100644 index c988243d1..000000000 --- "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/sign/tools/sign.d" +++ /dev/null @@ -1 +0,0 @@ -obj/sign/tools/sign.o obj/sign/tools/sign.d: tools/sign.c diff --git "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/sign/tools/sign.o" "b/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/sign/tools/sign.o" deleted file mode 100644 index c12492741..000000000 Binary files "a/\345\244\247\344\270\211\344\270\213/\346\223\215\344\275\234\347\263\273\347\273\237/hw/2017/2014011330_738793_537703740_lab4-2014011330/obj/sign/tools/sign.o" and /dev/null differ diff --git "a/\345\244\247\344\270\211\345\260\217\345\255\246\346\234\237/\344\277\235\347\240\224\350\200\203\350\257\225/readme.md" "b/\345\244\247\344\270\211\345\260\217\345\255\246\346\234\237/\344\277\235\347\240\224\350\200\203\350\257\225/readme.md" index 1a9292692..e5447b0b2 100644 --- "a/\345\244\247\344\270\211\345\260\217\345\255\246\346\234\237/\344\277\235\347\240\224\350\200\203\350\257\225/readme.md" +++ "b/\345\244\247\344\270\211\345\260\217\345\255\246\346\234\237/\344\277\235\347\240\224\350\200\203\350\257\225/readme.md" @@ -1 +1,3 @@ 来自5字班的资料:https://cloud.thusaac.org/index.php/s/r3QO1bbLVheBUjH + +CCF CSP真题:http://118.190.20.162/UserEnter.do?USERKEY=%3Ctest%3E&NAME=%3Ctest%3E diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw1/T1/T1.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw1/T1/T1.class" deleted file mode 100644 index 5622c9b55..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw1/T1/T1.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw1/T2/T2.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw1/T2/T2.class" deleted file mode 100644 index 53c633847..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw1/T2/T2.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw1/T3/T3.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw1/T3/T3.class" deleted file mode 100644 index 393401ae1..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw1/T3/T3.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw1/T4/Exchange.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw1/T4/Exchange.class" deleted file mode 100644 index 60d7cf494..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw1/T4/Exchange.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw1/T4/T4.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw1/T4/T4.class" deleted file mode 100644 index 440414fb1..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw1/T4/T4.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw10/src/fakemenu/FakeMenu.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw10/src/fakemenu/FakeMenu.class" deleted file mode 100644 index 48bcff7fa..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw10/src/fakemenu/FakeMenu.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw10/src/fakemenu/Test.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw10/src/fakemenu/Test.class" deleted file mode 100644 index 550b7f94a..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw10/src/fakemenu/Test.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw10/src/simplenotepad/SimpleNotepad.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw10/src/simplenotepad/SimpleNotepad.class" deleted file mode 100644 index 2600c07b9..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw10/src/simplenotepad/SimpleNotepad.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw10/src/simplenotepad/Test.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw10/src/simplenotepad/Test.class" deleted file mode 100644 index 9a8621a8f..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw10/src/simplenotepad/Test.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw11/src/chaoticsum/ChaoticSum$1.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw11/src/chaoticsum/ChaoticSum$1.class" deleted file mode 100644 index 876e6f8f9..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw11/src/chaoticsum/ChaoticSum$1.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw11/src/chaoticsum/ChaoticSum.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw11/src/chaoticsum/ChaoticSum.class" deleted file mode 100644 index 944875055..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw11/src/chaoticsum/ChaoticSum.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw11/src/writer/Test.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw11/src/writer/Test.class" deleted file mode 100644 index 1116f21a1..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw11/src/writer/Test.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw11/src/writer/Writer.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw11/src/writer/Writer.class" deleted file mode 100644 index 5c57a276f..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw11/src/writer/Writer.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw11/src/writer/Writer2.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw11/src/writer/Writer2.class" deleted file mode 100644 index a17fce20d..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw11/src/writer/Writer2.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw12/src/matrixcalculator/Counter.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw12/src/matrixcalculator/Counter.class" deleted file mode 100644 index 55937a086..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw12/src/matrixcalculator/Counter.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw12/src/matrixcalculator/Matrix.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw12/src/matrixcalculator/Matrix.class" deleted file mode 100644 index c5d226909..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw12/src/matrixcalculator/Matrix.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw12/src/matrixcalculator/MatrixCalculator.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw12/src/matrixcalculator/MatrixCalculator.class" deleted file mode 100644 index 0d160b183..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw12/src/matrixcalculator/MatrixCalculator.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw12/src/matrixcalculator/Test.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw12/src/matrixcalculator/Test.class" deleted file mode 100644 index fa4301d2d..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw12/src/matrixcalculator/Test.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw12/src/parallelsum/Counter.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw12/src/parallelsum/Counter.class" deleted file mode 100644 index cb4426c86..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw12/src/parallelsum/Counter.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw12/src/parallelsum/Data.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw12/src/parallelsum/Data.class" deleted file mode 100644 index 519ddb8f4..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw12/src/parallelsum/Data.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw12/src/parallelsum/ParallelSum.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw12/src/parallelsum/ParallelSum.class" deleted file mode 100644 index 595c66d31..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw12/src/parallelsum/ParallelSum.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw12/src/parallelsum/Test.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw12/src/parallelsum/Test.class" deleted file mode 100644 index c9798b6a6..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw12/src/parallelsum/Test.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw12/src/writer/Test.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw12/src/writer/Test.class" deleted file mode 100644 index 8e1aeb074..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw12/src/writer/Test.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw12/src/writer/Writer.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw12/src/writer/Writer.class" deleted file mode 100644 index 5c57a276f..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw12/src/writer/Writer.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw12/src/writer/Writer2.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw12/src/writer/Writer2.class" deleted file mode 100644 index a17fce20d..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw12/src/writer/Writer2.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/ConnectPanel$1.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/ConnectPanel$1.class" deleted file mode 100644 index 6428738bc..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/ConnectPanel$1.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/ConnectPanel$2.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/ConnectPanel$2.class" deleted file mode 100644 index 36621dc4d..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/ConnectPanel$2.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/ConnectPanel.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/ConnectPanel.class" deleted file mode 100644 index cee24c47d..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/ConnectPanel.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/DirectionTrans$1.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/DirectionTrans$1.class" deleted file mode 100644 index 65e78baa0..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/DirectionTrans$1.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/DirectionTrans.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/DirectionTrans.class" deleted file mode 100644 index 0fd8d56ee..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/DirectionTrans.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/EntityTrans$1.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/EntityTrans$1.class" deleted file mode 100644 index 1039edd96..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/EntityTrans$1.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/EntityTrans.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/EntityTrans.class" deleted file mode 100644 index 3f7153ebe..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/EntityTrans.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/GamePanel$1.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/GamePanel$1.class" deleted file mode 100644 index f41d29680..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/GamePanel$1.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/GamePanel.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/GamePanel.class" deleted file mode 100644 index 5b9405514..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/GamePanel.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/GameUI.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/GameUI.class" deleted file mode 100644 index 8206ab04e..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/GameUI.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/SocketHandler$1.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/SocketHandler$1.class" deleted file mode 100644 index 0c1d8277f..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/SocketHandler$1.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/SocketHandler.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/SocketHandler.class" deleted file mode 100644 index 1b37a30a9..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/SocketHandler.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/Test.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/Test.class" deleted file mode 100644 index 12080a9ef..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/Test.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/TicGame.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/TicGame.class" deleted file mode 100644 index aa6e00afc..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw13/src/tic/TicGame.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw14/src/arraylist/NumArrayList.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw14/src/arraylist/NumArrayList.class" deleted file mode 100644 index 947a40b33..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw14/src/arraylist/NumArrayList.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw14/src/arraylist/Test.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw14/src/arraylist/Test.class" deleted file mode 100644 index a37a0a321..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw14/src/arraylist/Test.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw14/src/hashmap/Encryption.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw14/src/hashmap/Encryption.class" deleted file mode 100644 index f7caad23a..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw14/src/hashmap/Encryption.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw14/src/hashmap/Test.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw14/src/hashmap/Test.class" deleted file mode 100644 index 692f13b29..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw14/src/hashmap/Test.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw14/src/treeset/NumTreeSet.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw14/src/treeset/NumTreeSet.class" deleted file mode 100644 index ed41e8c28..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw14/src/treeset/NumTreeSet.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw14/src/treeset/Test.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw14/src/treeset/Test.class" deleted file mode 100644 index 2bcdd1406..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw14/src/treeset/Test.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw2/src/complex/Complex.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw2/src/complex/Complex.class" deleted file mode 100644 index af6d7bacc..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw2/src/complex/Complex.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw2/src/complex/Test.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw2/src/complex/Test.class" deleted file mode 100644 index d4e909286..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw2/src/complex/Test.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw2/src/hugeinteger/HugeInteger.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw2/src/hugeinteger/HugeInteger.class" deleted file mode 100644 index 85b85c545..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw2/src/hugeinteger/HugeInteger.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw2/src/hugeinteger/Test.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw2/src/hugeinteger/Test.class" deleted file mode 100644 index 2540902f2..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw2/src/hugeinteger/Test.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw2/src/rational/Rational.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw2/src/rational/Rational.class" deleted file mode 100644 index 3ee27c540..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw2/src/rational/Rational.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw2/src/rational/Test.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw2/src/rational/Test.class" deleted file mode 100644 index 19509ee45..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw2/src/rational/Test.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw3/date/Date.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw3/date/Date.class" deleted file mode 100644 index 84c5d78c5..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw3/date/Date.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw3/date/Test.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw3/date/Test.class" deleted file mode 100644 index 17abcff5a..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw3/date/Test.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw3/savingsaccount/SavingsAccount.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw3/savingsaccount/SavingsAccount.class" deleted file mode 100644 index 8b40f1e48..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw3/savingsaccount/SavingsAccount.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw3/savingsaccount/Test.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw3/savingsaccount/Test.class" deleted file mode 100644 index a4a4baafd..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw3/savingsaccount/Test.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw4/role/Employee.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw4/role/Employee.class" deleted file mode 100644 index b1cad31cf..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw4/role/Employee.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw4/role/Manager.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw4/role/Manager.class" deleted file mode 100644 index 36f87bd08..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw4/role/Manager.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw4/role/Role.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw4/role/Role.class" deleted file mode 100644 index 79127d2d5..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw4/role/Role.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw4/role/Test.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw4/role/Test.class" deleted file mode 100644 index f7141988c..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw4/role/Test.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw4/student/Graduate.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw4/student/Graduate.class" deleted file mode 100644 index 75fccb21f..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw4/student/Graduate.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw4/student/Student.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw4/student/Student.class" deleted file mode 100644 index dd0611038..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw4/student/Student.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw4/student/Test.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw4/student/Test.class" deleted file mode 100644 index d29096112..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw4/student/Test.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw4/student/Undergraduate.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw4/student/Undergraduate.class" deleted file mode 100644 index 5e48c2f01..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw4/student/Undergraduate.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw4/vehicles/Car.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw4/vehicles/Car.class" deleted file mode 100644 index bc43ba760..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw4/vehicles/Car.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw4/vehicles/Test.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw4/vehicles/Test.class" deleted file mode 100644 index 0d36461b9..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw4/vehicles/Test.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw4/vehicles/Truck.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw4/vehicles/Truck.class" deleted file mode 100644 index 544efd6a2..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw4/vehicles/Truck.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw4/vehicles/Vehicles.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw4/vehicles/Vehicles.class" deleted file mode 100644 index c5bf32c06..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw4/vehicles/Vehicles.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/bank/Bank.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/bank/Bank.class" deleted file mode 100644 index e9462f7e3..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/bank/Bank.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/bank/Test.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/bank/Test.class" deleted file mode 100644 index fd4e7147c..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/bank/Test.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/bank/interestAccount.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/bank/interestAccount.class" deleted file mode 100644 index b061777ff..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/bank/interestAccount.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/bank/oneyearNationaldebtAccount.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/bank/oneyearNationaldebtAccount.class" deleted file mode 100644 index b3452b8ba..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/bank/oneyearNationaldebtAccount.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/bank/oneyearRateAccount.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/bank/oneyearRateAccount.class" deleted file mode 100644 index 1bbc90c01..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/bank/oneyearRateAccount.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/person/Employee.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/person/Employee.class" deleted file mode 100644 index 7a9b53950..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/person/Employee.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/person/Person.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/person/Person.class" deleted file mode 100644 index 79eadf1eb..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/person/Person.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/person/Retired.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/person/Retired.class" deleted file mode 100644 index af1c990d0..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/person/Retired.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/person/Student.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/person/Student.class" deleted file mode 100644 index 4c186cf37..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/person/Student.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/person/Test.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/person/Test.class" deleted file mode 100644 index ba1156c7b..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/person/Test.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/shape/Circle.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/shape/Circle.class" deleted file mode 100644 index e302ee523..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/shape/Circle.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/shape/Shape.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/shape/Shape.class" deleted file mode 100644 index beeaafe8d..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/shape/Shape.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/shape/Square.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/shape/Square.class" deleted file mode 100644 index c030d001a..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/shape/Square.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/shape/Test.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/shape/Test.class" deleted file mode 100644 index e79539fe9..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw5/shape/Test.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw6/src/lab6/Lab.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw6/src/lab6/Lab.class" deleted file mode 100644 index 5fbd370d9..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw6/src/lab6/Lab.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw6/src/lab6/MyException.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw6/src/lab6/MyException.class" deleted file mode 100644 index 9e538075a..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw6/src/lab6/MyException.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw6/src/lab6/Test.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw6/src/lab6/Test.class" deleted file mode 100644 index bc07592d4..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw6/src/lab6/Test.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw6/src/triangle/NotTriangleException.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw6/src/triangle/NotTriangleException.class" deleted file mode 100644 index 4ff351f04..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw6/src/triangle/NotTriangleException.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw6/src/triangle/Test.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw6/src/triangle/Test.class" deleted file mode 100644 index dbd8c9bb0..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw6/src/triangle/Test.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw6/src/triangle/Triangle.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw6/src/triangle/Triangle.class" deleted file mode 100644 index ff78fd925..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw6/src/triangle/Triangle.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw7/commentdeleter/CommentDeleter.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw7/commentdeleter/CommentDeleter.class" deleted file mode 100644 index 5c2ed9c0c..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw7/commentdeleter/CommentDeleter.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw7/commentdeleter/Test.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw7/commentdeleter/Test.class" deleted file mode 100644 index 555d98031..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw7/commentdeleter/Test.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw7/datachooser/Data.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw7/datachooser/Data.class" deleted file mode 100644 index 3986c248b..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw7/datachooser/Data.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw7/datachooser/DataChooser.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw7/datachooser/DataChooser.class" deleted file mode 100644 index 355d4115e..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw7/datachooser/DataChooser.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw7/datachooser/Test.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw7/datachooser/Test.class" deleted file mode 100644 index 8675d8cd5..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw7/datachooser/Test.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw7/fslister/FSLister.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw7/fslister/FSLister.class" deleted file mode 100644 index cacead834..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw7/fslister/FSLister.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw7/fslister/Test.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw7/fslister/Test.class" deleted file mode 100644 index 45a129282..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw7/fslister/Test.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw8/drawarc/DrawArc.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw8/drawarc/DrawArc.class" deleted file mode 100644 index 2eb97da93..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw8/drawarc/DrawArc.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw8/drawarc/Test.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw8/drawarc/Test.class" deleted file mode 100644 index 04fb48d94..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw8/drawarc/Test.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw9/calculator/Calculator.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw9/calculator/Calculator.class" deleted file mode 100644 index e89402c34..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw9/calculator/Calculator.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw9/calculator/Test.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw9/calculator/Test.class" deleted file mode 100644 index c7abd2a35..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw9/calculator/Test.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw9/colorword/ColorWord.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw9/colorword/ColorWord.class" deleted file mode 100644 index 9731cc878..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw9/colorword/ColorWord.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw9/colorword/Test.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw9/colorword/Test.class" deleted file mode 100644 index 35de772f9..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/hw9/colorword/Test.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/AngleWall.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/AngleWall.class" deleted file mode 100644 index 7ceff6c5a..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/AngleWall.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Animal.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Animal.class" deleted file mode 100644 index 657d599df..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Animal.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/ChatPage.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/ChatPage.class" deleted file mode 100644 index 23f090317..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/ChatPage.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/CircleWall.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/CircleWall.class" deleted file mode 100644 index 2e95f6b92..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/CircleWall.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/ConnectPanel$1.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/ConnectPanel$1.class" deleted file mode 100644 index 303321503..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/ConnectPanel$1.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/ConnectPanel$2.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/ConnectPanel$2.class" deleted file mode 100644 index a0d3cebf8..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/ConnectPanel$2.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/ConnectPanel$3.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/ConnectPanel$3.class" deleted file mode 100644 index 43abb7494..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/ConnectPanel$3.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/ConnectPanel$4.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/ConnectPanel$4.class" deleted file mode 100644 index b18af3ece..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/ConnectPanel$4.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/ConnectPanel$5.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/ConnectPanel$5.class" deleted file mode 100644 index 62fc4a753..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/ConnectPanel$5.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/ConnectPanel$6.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/ConnectPanel$6.class" deleted file mode 100644 index afc57c154..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/ConnectPanel$6.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/ConnectPanel.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/ConnectPanel.class" deleted file mode 100644 index ad1362e6f..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/ConnectPanel.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/DirectionTrans$1.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/DirectionTrans$1.class" deleted file mode 100644 index 05fc8d395..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/DirectionTrans$1.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/DirectionTrans.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/DirectionTrans.class" deleted file mode 100644 index e63d7e2f5..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/DirectionTrans.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Entity.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Entity.class" deleted file mode 100644 index 9b82d6490..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Entity.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/EntityTrans$1.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/EntityTrans$1.class" deleted file mode 100644 index f6b934ee2..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/EntityTrans$1.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/EntityTrans.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/EntityTrans.class" deleted file mode 100644 index 8a96ea5cb..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/EntityTrans.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Food.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Food.class" deleted file mode 100644 index 8a82d82cc..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Food.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/GamePage.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/GamePage.class" deleted file mode 100644 index 8e6ece65f..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/GamePage.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/GameUI.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/GameUI.class" deleted file mode 100644 index 4d774ffae..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/GameUI.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/HelpPage$1.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/HelpPage$1.class" deleted file mode 100644 index 24e9d74ff..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/HelpPage$1.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/HelpPage.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/HelpPage.class" deleted file mode 100644 index 5054147ec..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/HelpPage.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Hole.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Hole.class" deleted file mode 100644 index 8302df35b..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Hole.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/HoriWall.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/HoriWall.class" deleted file mode 100644 index 5136539bd..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/HoriWall.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/InitPage$1.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/InitPage$1.class" deleted file mode 100644 index bd1fd742d..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/InitPage$1.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/InitPage.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/InitPage.class" deleted file mode 100644 index f2ed6e99c..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/InitPage.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/LoaderClass.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/LoaderClass.class" deleted file mode 100644 index 4bc1d5312..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/LoaderClass.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Login$1.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Login$1.class" deleted file mode 100644 index af98fce9c..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Login$1.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Login.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Login.class" deleted file mode 100644 index 852461f1e..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Login.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Message.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Message.class" deleted file mode 100644 index ca07cc1bc..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Message.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Obstacle.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Obstacle.class" deleted file mode 100644 index 95fedf972..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Obstacle.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Ran.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Ran.class" deleted file mode 100644 index 6f293e313..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Ran.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/RankItem.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/RankItem.class" deleted file mode 100644 index 97609f2d4..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/RankItem.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/RankPage$1.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/RankPage$1.class" deleted file mode 100644 index 08565ac75..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/RankPage$1.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/RankPage.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/RankPage.class" deleted file mode 100644 index 841da725c..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/RankPage.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Run.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Run.class" deleted file mode 100644 index c80eecd45..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Run.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/SetPage.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/SetPage.class" deleted file mode 100644 index 987d42d02..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/SetPage.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Snake$1.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Snake$1.class" deleted file mode 100644 index ae23f11bd..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Snake$1.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Snake.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Snake.class" deleted file mode 100644 index 879c6c865..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Snake.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/SnakeEntity.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/SnakeEntity.class" deleted file mode 100644 index 1e77abcc2..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/SnakeEntity.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/SnakeLogic$1.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/SnakeLogic$1.class" deleted file mode 100644 index f1076b86d..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/SnakeLogic$1.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/SnakeLogic$2.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/SnakeLogic$2.class" deleted file mode 100644 index 12c29a160..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/SnakeLogic$2.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/SnakeLogic$3.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/SnakeLogic$3.class" deleted file mode 100644 index 58a9c549a..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/SnakeLogic$3.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/SnakeLogic.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/SnakeLogic.class" deleted file mode 100644 index 56500a5bc..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/SnakeLogic.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/SocketHandle$1.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/SocketHandle$1.class" deleted file mode 100644 index 199e588cd..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/SocketHandle$1.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/SocketHandle$2.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/SocketHandle$2.class" deleted file mode 100644 index 7c8280ac1..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/SocketHandle$2.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/SocketHandle$3.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/SocketHandle$3.class" deleted file mode 100644 index eb57688ef..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/SocketHandle$3.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/SocketHandle.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/SocketHandle.class" deleted file mode 100644 index f40d949f0..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/SocketHandle.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Str.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Str.class" deleted file mode 100644 index 0c0ad22b4..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Str.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/VertWall.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/VertWall.class" deleted file mode 100644 index b051723c6..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/VertWall.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Wall.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Wall.class" deleted file mode 100644 index 003826fbb..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/Wall.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/WallEntity.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/WallEntity.class" deleted file mode 100644 index f781cb011..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/WallEntity.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/bufferedImages.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/bufferedImages.class" deleted file mode 100644 index 23718e261..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/bufferedImages.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/chatPanel.class" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/chatPanel.class" deleted file mode 100644 index fa195d5ea..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/Java\345\217\260\346\271\276\345\260\217\345\255\246\346\234\237/hw/\345\244\247\344\275\234\344\270\232-s2016011286/GreedSnake/chatPanel.class" and /dev/null differ diff --git "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/\346\261\207\347\274\226\350\257\255\350\250\200\347\250\213\345\272\217\350\256\276\350\256\241/hw/\347\254\254\344\272\214\346\254\241\344\275\234\344\270\232\345\224\220\347\216\211\346\266\265/\346\230\237\346\230\237/~$\346\265\213\350\257\225\350\257\264\346\230\216.docx" "b/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/\346\261\207\347\274\226\350\257\255\350\250\200\347\250\213\345\272\217\350\256\276\350\256\241/hw/\347\254\254\344\272\214\346\254\241\344\275\234\344\270\232\345\224\220\347\216\211\346\266\265/\346\230\237\346\230\237/~$\346\265\213\350\257\225\350\257\264\346\230\216.docx" deleted file mode 100644 index 47b442986..000000000 Binary files "a/\345\244\247\344\272\214\345\260\217\345\255\246\346\234\237/\346\261\207\347\274\226\350\257\255\350\250\200\347\250\213\345\272\217\350\256\276\350\256\241/hw/\347\254\254\344\272\214\346\254\241\344\275\234\344\270\232\345\224\220\347\216\211\346\266\265/\346\230\237\346\230\237/~$\346\265\213\350\257\225\350\257\264\346\230\216.docx" and /dev/null differ diff --git "a/\346\224\266\345\275\225\345\206\205\345\256\271.md" "b/\346\224\266\345\275\225\345\206\205\345\256\271.md" index 164060514..31d180fea 100644 --- "a/\346\224\266\345\275\225\345\206\205\345\256\271.md" +++ "b/\346\224\266\345\275\225\345\206\205\345\256\271.md" @@ -1,87 +1,87 @@ -## 目录 - -本项目至今为止收录了以下内容: - -- 课程攻略:readme.md -- 电子版课件和参考教材:ebook/[教学年份]/[老师姓名].pdf (由于可能存在的版权问题,暂未加入) -- 平时作业答案与大作业资料:hw/[学生年级_学生姓名]/ -- 历年试卷和复习资料:exam/ -- 开卷考试 A4 纸:a4paper/ - -等等。目前具体已涵盖课程如下:(课程分类按照实际情况而不是按照培养方案) - -- 大一上: - -| 必修 | 任选 | -| ---------------------- | -------------- | -| 微积分A(1) | 计算机科学导论 | -| 线性代数(1) | 工程图学基础 | -| 程序设计基础 | | -| 离散数学(1) | | -| 思想道德修养与法律基础 | | -| 信息科学技术概论 | | - -- 大一下: - -| 必修 | 物理必修 | -| -------------------- | ------------ | -| 微积分A(2) | 大学物理B(1) | -| 线性代数(2) | 大学物理英 | -| 离散数学(2) | | -| 中国近现代史纲要 | | -| 面向对象程序设计基础 | | - -- 大一小学期:程序设计训练 -- 大二上: - -| 必修 | 物理必修 | -| ------------------ | ------------ | -| 数据结构 | 大学物理B(2) | -| 复变函数引论 | 大学物理英 | -| 电子学基础 | 物理实验B(1) | -| 电子学基础实验 | | -| 马克思主义基本原理 | | - -- 大二下: - -| 必修 | 数学必修 | 专业限选 | -| ---------------- | -------------- | ---------------- | -| 人工智能导论 | 概率论数理统计 | 计算机图形学基础 | -| 形式语言与自动机 | 随机数学方法 | 初等数论 | -| 数字逻辑电路 | | 高性能计算导论 | -| 数字逻辑实验 | | | -| 物理实验B(2) | | | - -- 大二小学期:Java台湾小学期、Java程序设计与训练、汇编语言程序设计 -- 大三上: - -| 必修 | 专业限选 | -| -------------- | ------------------ | -| 计算机组成原理 | 人工神经网络 | -| 计算机网络原理 | 计算机网络安全技术 | -| 编译原理 | 人机交互理论与技术 | -| 信号处理原理 | VLSI设计导论 | -| 软件工程 | 数据库系统概论 | - -- 大三下: - -| 必修 | 专业限选 | -| -------------- | ------------------ | -| 操作系统 | 机器学习概论 | -| 计算机系统结构 | 数字图像处理 | -| 数值分析 | 模式识别 | -| 数学实验 | 数据挖掘 | -| | 多媒体技术 | -| | 现代密码学 | -| | 搜索引擎技术基础 | -| | 存储技术基础 | -| | 数据库专题训练 | -| | 计算机网络专题训练 | -| | 系统分析与控制 | - - -- 大三小学期:并行计算机体系结构与编程、保研考试 -- 大四上:网络安全工程与实践、嵌入式系统、现代控制技术 -- 研究生课:组合数学 - -电脑前的您请不要吝啬,您的作品一旦被合并至该仓库中,有可能会被无数学弟仰慕。我们需要您的PR! +## 目录 + +本项目至今为止收录了以下内容: + +- 课程攻略:readme.md +- 电子版课件和参考教材:ebook/[教学年份]/[老师姓名].pdf (由于可能存在的版权问题,暂未加入) +- 平时作业答案与大作业资料:hw/[学生年级\_学生姓名]/ +- 历年试卷和复习资料:exam/ +- 开卷考试 A4 纸:a4paper/ + +等等。目前具体已涵盖课程如下:(课程分类按照实际情况而不是按照培养方案) + +- 大一上: + +| 必修 | 任选 | +| ---------------------- | -------------- | +| 微积分A(1) | 计算机科学导论 | +| 线性代数(1) | 工程图学基础 | +| 程序设计基础 | | +| 离散数学(1) | | +| 思想道德修养与法律基础 | | +| 信息科学技术概论 | | + +- 大一下: + +| 必修 | 物理必修 | +| -------------------- | ------------ | +| 微积分A(2) | 大学物理B(1) | +| 线性代数(2) | 大学物理英 | +| 离散数学(2) | | +| 中国近现代史纲要 | | +| 面向对象程序设计基础 | | + +- 大一小学期:程序设计训练 +- 大二上: + +| 必修 | 物理必修 | +| ------------------ | ------------ | +| 数据结构 | 大学物理B(2) | +| 复变函数引论 | 大学物理英 | +| 电子学基础 | 物理实验B(1) | +| 电子学基础实验 | | +| 马克思主义基本原理 | | + +- 大二下: + +| 必修 | 数学必修 | 专业限选 | +| ---------------- | -------------- | ---------------- | +| 人工智能导论 | 概率论数理统计 | 计算机图形学基础 | +| 形式语言与自动机 | 随机数学方法 | 初等数论 | +| 数字逻辑电路 | | 高性能计算导论 | +| 数字逻辑实验 | | | +| 物理实验B(2) | | | + +- 大二小学期:Java台湾小学期、Java程序设计与训练、汇编语言程序设计 +- 大三上: + +| 必修 | 专业限选 | +| -------------- | ------------------ | +| 计算机组成原理 | 人工神经网络 | +| 计算机网络原理 | 计算机网络安全技术 | +| 编译原理 | 人机交互理论与技术 | +| 信号处理原理 | VLSI设计导论 | +| 软件工程 | 数据库系统概论 | + +- 大三下: + +| 必修 | 专业限选 | +| -------------- | ------------------ | +| 操作系统 | 机器学习概论 | +| 计算机系统结构 | 数字图像处理 | +| 数值分析 | 模式识别 | +| 数学实验 | 数据挖掘 | +| | 多媒体技术 | +| | 现代密码学 | +| | 搜索引擎技术基础 | +| | 存储技术基础 | +| | 数据库专题训练 | +| | 计算机网络专题训练 | +| | 系统分析与控制 | + + +- 大三小学期:并行计算机体系结构与编程、保研考试 +- 大四上:网络安全工程与实践、嵌入式系统、现代控制技术、编译原理专题训练 +- 研究生课:组合数学 + +电脑前的您请不要吝啬,您的作品一旦被合并至该仓库中,有可能会被无数学弟仰慕。我们需要您的PR! diff --git "a/\350\264\241\347\214\256\346\226\271\346\263\225.md" "b/\350\264\241\347\214\256\346\226\271\346\263\225.md" index deb6e2ac0..4f2efb48a 100644 --- "a/\350\264\241\347\214\256\346\226\271\346\263\225.md" +++ "b/\350\264\241\347\214\256\346\226\271\346\263\225.md" @@ -1,21 +1,21 @@ -## 贡献 - -Issue、PR、纠错、资料、选课/考试攻略,完全欢迎!来自大家的关注、维护和贡献,才是让这个攻略继续存在的动力~ - -如果希望匿名贡献,可以email至此邮箱,注明"REKCARC-TSC-UHT"即可:PKUanonymous@qq.com - -对于课程和教师的评价可写在对应课程的`readme.md`中。 - -由于本项目体积很大,故可以采用在Github Web端直接上传的方式,具体操作如下: - -1. 首先Fork本项目,点击右上角的Fork按键即可。 - -2.1. 上传文件到已有文件夹:打开对应文件夹,点击绿色Download按钮旁的upload,上传你的文件。 - -2.2. 上传文件到新文件夹:打开任意文件夹,点击绿色Download按钮旁的upload,**把浏览器地址栏中文件夹名称改为你想要新建的文件夹名称,然后回车**,上传你的文件。 - -3.1 提交 PR:上传完文件到个人仓库之后,点击 `Pull Request` 即可。请留意一下项目的文件组织。 - -3.2 也可以直接附加在 [Issue](https://github.com/PKUanonym/REKCARC-TSC-UHT/issues/new) 中,由维护者进行添加。 - +## 贡献 + +Issue、PR、纠错、资料、选课/考试攻略,完全欢迎!来自大家的关注、维护和贡献,才是让这个攻略继续存在的动力~ + +如果希望匿名贡献,可以email至此邮箱,注明"REKCARC-TSC-UHT"即可:PKUanonymous@qq.com + +对于课程和教师的评价可写在对应课程的`readme.md`中。 + +由于本项目体积很大,故可以采用在Github Web端直接上传的方式,具体操作如下: + +1. 首先Fork本项目,点击右上角的Fork按键即可。 + +2.1. 上传文件到已有文件夹:打开对应文件夹,点击绿色Download按钮旁的upload,上传你的文件。 + +2.2. 上传文件到新文件夹:打开任意文件夹,点击绿色Download按钮旁的upload,**把浏览器地址栏中文件夹名称改为你想要新建的文件夹名称,然后回车**,上传你的文件。 + +3.1 提交 PR:上传完文件到个人仓库之后,点击 `Pull Request` 即可。请留意一下项目的文件组织。 + +3.2 也可以直接附加在 [Issue](https://github.com/PKUanonym/REKCARC-TSC-UHT/issues/new) 中,由维护者进行添加。 + 比如我是2050年上网络原理的anonym,想在网络原理上传一个自己的作业,即在网络原理文件夹下新建文件夹`2050_anonym`,然后往里面填东西即可(当然,欢迎往对应的`readme.md`里面放自己的GitHub对应仓库链接~) \ No newline at end of file