NCTU-Teacher 板


LINE

※ [本文转录自 neoneon 信箱] 作者: [email protected] ("爱宕有机奈米负离子猫") 标题: [心得] 陈永昇 - 组合语言与系统程式 时间: Sun Jul 10 09:31:09 2016 作者: shaform (回不去的旅程) 看板: NCTU-Teacher 标题: [心得] 陈永昇 - 组合语言与系统程式 时间: 2011/07/23 Sat 06:52:59 网志好读版: http://wp.me/sJ4X-assembly ----------------------------------------------- ⊕课名⊕ 组合语言与系统程式 ▲教授▲ 陈永昇 ★修课年度★(请加注开课单位 如:大三通识、XX系选修、XX所) 99下 资工系 £教了什麽£(课程大概内容。或是额外学会了什麽东西。) 组合语言的部份使用的是 《Assembly Language for x86 Processors》, 6th http://kipirvine.com/asm/ 教了以下章节 1. Basic Concepts 2. x86 Processor Architecture 3. Assembly Language Fundamentals 4. Data Transfers, Addressing, and Arithmetic 5. Procedures 6. Conditional Processing 7. Integer Arithmetic 8. Advanced Procedures 9. Strings and Arrays 10. Structures and Macros 13. High-Level Language Interface 14. 16-Bit MS-DOS Programming 17. Expert MS-DOS Programming Table of Contents: http://goo.gl/td857 系统程式的部份使用的是 《System Software: An Introduction to Systems Programming》, 3rd 教了以下章节 1. Background 2. Assemblers 3. Loaders and Linkers 8. Software Engineering Issues Table of Contents: http://goo.gl/UDVmu 额外有出了一份写 DOS 病毒的作业,可以学习一些感染 EXE 档的技巧。 本门课的组语主要是用 MASM 组译器的格式,同时也会运用到教科书中的诸多 routines 由於老师并不会特别教导组译环境的设置,同学需自行阅读教科书及作者网站 一种环境设置的方法和其他一些跟这门课相关的议题: 〈组合语言与系统程式〉 http://wp.me/s1t0PL-asm ◆上课方式◆(投影片、团体讨论、老师教学风格) 使用投影片上课,大抵上上课气氛很自由,不会有什麽压力。 这门课的配分是这样的: 60% 4次组语作业 25% SIC/XE 组绎器(可用任意语言写) 15% 期末考 没有期中考, 此外,有一个期中组语上机考,是考较为简单组语程式题目, 也可携带参考资料和作业原始码,但若未通过则4次组语作业不能算分。 由配分可见它是以实作为主的课程,本文也以介绍作业为主, 老师上课情形期待其他心得分享。 每份作业都需 demo(包含期末 project 在暑假 demo) 是在 demo 时从 E3 上下载之前上传的程式码, 由於并不会事先公布所有的测资,所以要细心一点。 组语作业如果有多做功能可以主动向助教提出,可以得到不等的额外加分。 另外,事後会公布全班的 code 供大家学习参考。 上到最後一堂课时会有一张特别的投影片, 师:「永生难忘」 ▼考试作业▼ 作业通常会在上课公布,晚一点则会公布在 E3,死限通常在星期日的夜晚。 第一个作业是三个组语小程式: (1) 输入两个32-bit正整数,输出其最小公倍数。 (2) 输入一个日期,输出那天星期几。 (3) 输入一个正整数,输出所有比它小的质数。 第二个作业 用组语写一个 finite-state machine 可以解析一行输入的组合语言 (MASM 格式),如: Input=> L1: sub ecx, var ; substract ecx by var Result=> LABEL L1 INSTRUCTION sub REGISTER ecx IDENTIFIER var COMMENT substract ecx by var 如果有错误输入,该错误 token 输出 unknown 但其後的正确 token 仍需正确辨识 不需判断 grammar 错误,如 mul 应该只能接受一个 operand: Input=> mul eax, 5 Result=> INSTRUCTION mul REGISTER eax INTEGER 5 #禁止使用 .IF .WHILE 等 directives 第三个作业 写一个计算机,可以计算输入运算式结果: 支援 + - * / ( ) 如 2+4-6*2 = -6 输入运算式最长为100字,数字长度最长也是100位 (需使用大数运算) ref. http://goo.gl/H3BH9 第四个作业是 16-bit DOS programming (1) 写一个 TSR 钢琴程式,键盘需可正常输入, 但按下按键会发出声音。 (2) bonus(这题本来不是 bonus,後来更改评分) 写一个 TSR 病毒程式,执行後会常驻於系统中, 在你开启另一个 exe 档时感染该执行档,使其执行被插入的程式码 (如列印一行字)但仍保持原有的功能。 期末 Project,期限在期末考後的一个星期後。 如《System Software: An Introduction to Systems Programming》一书的格式 撰写一个 SIC/XE 组译器可以产生 relocatable object program 60% 支援所有 addressing modes, 教到的 assembler directives, 以及以下除外的指令 浮点数运算、SW register 相关指令,SIO, TIO, HIO,LPS, STI, SVC,SSK 40% Literals Symbol-defining statements Expressions Program Blocks and Control Sections ref. http://goo.gl/fFIMW 上机考有三题: (1) 印出 Pascal's triangle (ref. http://goo.gl/ffPA ) (2) 给一个长度4字串,输出任一重排後字串 (3) 给两个最多40位(?)的二进位数字,输出相减後结果。 # 若转换为正常表示法长度最多用两个 32-bit DWORD 即可储存,再用 sbb 计算 # 或者可用类似大数运算的变体) 不需全部解出也算通过。 期末考的题目主要配分是系统程式占的较重,所以不要只看组语的部份。 仔细观察可以发现,题目大多为课本习题, 特别是系统程式的部份。 这次的组语大多为选择题,系统程式相对较难。 老师会给考古题,不过有重叠的题数大概只有一两题。 ¥其他¥(是否注重出席率or严禁迟到?需要的基础?) 不点名,但是有来上课的话可以提早得知作业。 作业投影片通常在宣布後一星期放上E3。 此外,死限延期或其他特殊事项也是只有在上课时公布, 或者在上课时提早公布。 分数方面,根据前人的经验,只要作业都满分, 就算期末考六十几分也能得到99,有付出就有收获。 ¢最後想说的话¢ 想要预习或自修的话,《Assembly Language for x86 Processors》这本书每章背後 都有程式练习题,笔者做过几章,觉得挺有帮助, 感觉跟程式语言有关的课练习都是十分重要。 组语的教学也可以参考 小木偶的网页 http://goo.gl/4XYfq 系统程式部份可以边写组译器边看,这样会有更深的理解。 自己修这门课花了很多心思在作业上,不知不觉就会忘了读系统程式。 这门课的系统程式部份实际上占分满多的。 另外,没有期中考确实让期中的压力减轻不少。 对笔者而言,组译器的撰写显得有些匆忙,逼近期末考周时, 因为要准备考试,没时间写期末 Project。 即使考完期末考,最後一个星期忙着搬宿舍,能写的时间不是很有弹性, 不得已得花很长得时间连续不断写 Project,写到最後动力递减,很容易想放弃。 现在想起来,我认为最好可以一开学就开始写 SIC/XE 组译器, 一方面可以边写边看课本来准备期末考, 二方面透过时段的切割可以避免学期末挤在一起时的压力。 况且其实一开学就会说期末 project 是什麽了 就算最後发现要求不太一样,也依然有理解系统程式课程的好处。 &References& x86 Assembly http://goo.gl/TNiIw Prime number http://goo.gl/31Y2W Calculating the day of the week http://goo.gl/1AcvC Lexical analysis http://goo.gl/5BQmz Writing a simple expression evaluator http://goo.gl/SjjwZ Evaluate mathematical expressions http://goo.gl/Y4up7 Reverse Polish notation http://goo.gl/xt1gQ Watching the Keyboard Scan Codes http://goo.gl/1Yb02 Keyboard Scan Codes http://goo.gl/O3HSf Making Music using the PC Speaker http://goo.gl/OUb54 Make sound from the speaker using assembly http://goo.gl/pdUwo Guide To EXE Infection http://goo.gl/8yc2O An Introduction to Nonoverwriting Virii http://goo.gl/hsqUn Dark Angel's Phunky Virus Writing Guide http://goo.gl/UkbvL SIC/XE Assembler http://goo.gl/fFIMW http://goo.gl/smYBu http://goo.gl/Xjg8U Introduction to Systems Software http://goo.gl/l3STH -- ▄▄▄▄▄▄▄ ▄▄▄▄ ▄▄▄▄▄▄ <telnet://bbs.cs.nctu.edu.tw> █▄▄▄▄█ █ ▄▄▄▄▄█ Player: shaform ▄█▄▄▄▄█ ▄▄▄█ █▄▄▄▄▄ From: linux1.cs.nctu.edu.tw ☆ 次世代BS2 ☆ 可申请个人板 150MB 相簿 http://pic.bs2.to 交大资讯人 250MB super9817020:推荐永生难忘 (有神快拜 07/23 07:54 c871111116:大推永昇啊 07/23 08:41 darkgerm:成绩终於出来了....等了好久,等等来发~ 07/23 09:02 yan:因为睡过头忘了去考期末考 最後成绩低空飞过 好险~ 07/23 11:11 baby03201:推大神心得 :) 07/23 11:18 dandy:推荐这篇文章 07/23 11:28 freeman921:成绩终於公布了喔  哈哈= = 07/23 15:03 b6683421:推荐这篇文章 07/23 15:28 legend0416:推荐这篇文章 07/24 14:54 CMturtle:推荐这篇文章 07/24 15:05 francis87192:推荐这篇文章 07/24 16:30 peanut:推荐这篇文章 07/24 18:32 deepwoody:大神shaform <(_ _)> 07/25 12:41 zzzace2007:推荐这篇文章 07/30 11:13 Jalex:推荐这篇文章 07/31 09:28 sunnyboy:推荐这篇文章 08/05 02:04 作者从 linux1.cs.nctu.edu.tw 修改文章於 2013/01/01 Tue 14:20:16



※ 发信站: 批踢踢实业坊(ptt.cc)
※ 转录者: neoneon (106.105.175.48), 07/12/2016 00:52:35







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP