一个难忘的夜晚,记与老师的谈话

汇编 I/O 与中断:端口读写、中断向量表与 ISR 本文详解x86架构下I/O端口与中断机制,涵盖端口映射、IN/OUT指令、中断向量表(IVT)结构及中断处理流程。通过实模式下的键盘、定时器等硬件示例,揭示操作系统如何通过中断实现硬件管理,并演示自定义中断服务程序的安装与正确调用方式,强调保护现场、读取扫描码、避免重入等关键细节,为理解操作系统底层交互提供坚实基础。 阅读详情


       强哥是我的编译原理老师,因为单名一个强字,平时和我们如朋友一般,像个大哥,于是我们就干脆叫他强哥。
       作为计算机专业,上机实验课是少不了的。实验的时间,也正是我们同老师交流的最佳时间。我和强哥的这次神侃,就发生在一个实验课的夜晚。既是编译原理的实验课,那么这方面的问题自然是少不了的。我们的话题,是从语法分析器说起的。通过分析器的这一预热,我俩很快就进入了状态。平时自己早已积攒了一大摞的问题,现在,就是把它们一股脑倒出来的时候。大体总结一下,可以分为以下几个方面:

 


             1、编程语言的学习方向
             2、关于未来职业的探讨,关于游戏设计师
             3、中美程序员的差异
             4、中外IT企业对比
 
      首先,从程序语言谈起。自己平时编程用的语言就只有C++,尽管也学习了汇编和Java,但除了在课程学习时用的那点,再一直没用过。因为担心将来作为一名程序员,只用一门语言未免太单一,就想再把汇编拾起来。谈到自己对汇编的想法,强哥马上就精神了一下,饶有兴趣的问我为什么要选择汇编?汇编难学是众所周知的,因为最接近机器语言,在本身能力强大的同时也带来了理解的复杂性。然而,它吸引我的首要原因,正式它强大的灵活性。因为它能做到其它语言做不到的事。     另外,C语言也是众多由汇编转化而来的语言之一,而我喜欢的C++又是C的进化型,或许是因为它们其中的因果关系,让我对汇编产生兴趣(怎么当时学的时候没兴趣呢)。强哥微微点头,说出了他的想法。建议我在精通了一门语言的基础上,再来学习汇编。而要首先来精通的的这门语言,可以是C++、Java、C#等。老师进一步说道,汇编现在的一大作用,是在软件的破译方面。因为软件破译后,显示的就是汇编语言代码。所以,你若是对汇编不了解,就束手无策了。一款千行代码的软件,破解后代码量会增加许多,这是由于汇编的语句都很简短,别人的一句话,他要好几句才能完成。我过去一直以为,在硬件编程方面,汇编的优势应该很大。经老师一说, 其实并非如此。在硬件的编程领域里,是C语言的天下。因为C语言本身功能的强大,再加上它的编程效率要比汇编高的多,所以汇编发热的空间并不大。不过,在将来作为一名程序员,了解汇编语言是个巨大潜力,因为现在懂得它的人越来越少,而它自身的强大又摆在那里,所以在日后拾起它来,没错的。


 
      聊完语言,我把自己在未来的终极目标:成为一名电脑游戏设计师,告诉了强哥。一说到这,强哥立马就把我常用的C++摆在了面前,并告诉我,既然这是你的编程母语,而你日后又想从事这种工作,那么精通C++,就是你需要做的了。强哥说到这儿,自然我是振奋加激动,自己最常用的语言正对了自己事业的路子,这是多么幸运呢。置于其中的原因,听强哥道来。 一谈起游戏,那可比其它的东西有意思多了,而且强哥貌似也很感兴趣。以目前流行的大型网游为例,强哥讲到,游戏的剧情是否吸引人,这和程序员没多大关系;游戏的界面是否精美,这是美工的任务;而一款游戏的核心,影响游戏整体因素的引擎,却是由我们程序员来完成的。而当今游戏引擎的设计任务,就是由C++承担的。为了让我理解的更明白,强哥把游戏的引擎比喻成了计算机的操作系统。一款游戏的执行速度,稳定性等各种因素的调配,都是由它来完成。而C++的执行效率能很好的适应引擎的要求。所以,看向未来,我就是为了游戏的引擎设计而奋斗的,真好。知晓了游戏设计师的工作范畴,我又小小的发挥了一下野心,问起了首席游戏设计师这个意义非凡的词。啊,从强哥的表情可以看得出来,这个词的冲击力。因为,他所表示的含义,那就是不仅仅只局限在技术方面,包括游戏的各方各面,都要了解。这代表的,就是大师级人物了。要定目标,就先做到技术领域的领头人,强哥如是说。

 

 
      

     自己心里最大,也是最重要的问题得到解决后,顿时感觉轻松许多,并且结果也让我满意。从对编程的兴趣,我又想到了在图书馆中看到的许多采访国外编程名人的文章,我发现他们大都是在自己很小的时候,就对编程产生了兴趣,然后在这股兴趣的带领下,一步步由从小的自玩自学,才到后来的专业学习。在这其中,兴趣的引导作用排在了首位。而像我和自己身边的计算机专业学生,大多数在进入大学前没接触过编程,而是进入学校后立马接受了正规的专业教育,兴趣是在这个专业教育的过程中慢慢产生的,当然也有可能根本没产生什么兴趣。这样同国外的孩子比起来,我们不是落后很多了吗?不仅起步晚,而且完全由内心产生的兴趣和在外界环境的压力下所产生出来的,这完全是两码事。而我的疑问就是,怎么会这样呢,为什么会存在这种差距?对此,强哥也很无奈的笑笑,对我的疑问表示理解,然后和我进行了本次谈话中一个至关重要的话题,中美学生的创新能力。从兴趣谈起,强哥说到了美国人对自己的孩子所进行的自由式教育,你有什么想法,奇思妙想也好,胡思乱想也好,是不被打断而禁止的。孩子的那股好奇,各种自由的想法在脑子里乱撞,而大人们并没有把这一个个的idea以他们自己的眼光给过滤掉。伴随着成长,头脑的勇气并没有被自认为成熟的大人们消耗殆尽,而是随着知识的增长不断被转换成了一个个的实体-创新,这就是老美。而我们的状况,亲身经历,大家也都清楚。正式因为有了这种创新上的差距,使我们在技术上离别人的距离也越来越远,差距被慢慢扩大。老师打了一个形象的比喻,一个创新的诞生,就好比是发现一座金矿。在别人发现这座金矿,并把其中大部分金子都采走之后,我们便来到这里,开始了对剩余价值的开采。只因为我们不具有发现金矿的能力。虽然不服气,但这就是现实。不过,也不要气馁。虽然大环境是这样的,可是为什么还有许多的国人能够站在科技创新的前列呢?这就是要看你自己的,即引导你自己。外部环境很难改善,但我们却是自己的财产。自己要尝试着多看多想,多看容易,多想难。尽管让自己去胡思乱想吧,然后奇思妙想就会向你飞来。这是强哥教导我的。


 
     

     说完个体,我又问起强哥关于国内企业和国外企业的对比。因为我是联想的忠实用户,台式机、笔记本、手机,都有Lenovo的标志,对于联想,我是充满信心的。而国外企业,强哥拿惠普来做了比较。同为顶级的电脑生产商,惠普不仅有自己的生产部门,而且还有自己的,是相当大的研发部门。这类部门在重金的支持下,进行着前沿技术的研发工作。这些技术并不一定是要立刻能够投放市场,而是被公司作为一种技术资源储备了起来。可能近前看不到效益,但当市场条件一旦成熟,这些先进科技成果被投向市场时,将会带来巨大的影响,更会带来差距。国外的名企,惠普,微软,IBM,它们都有着属于自己的研发团队,而且是一只很庞大的团队,为他们不断地贮存资本。而在国内,即使是如联想这样的公司,在这方面也是向国外学习的起步状态,距离可想而知。
 


      在这次的谈话中,还有许多零零碎碎的小问题,就不一一赘述了。这样的夜晚过的真快,在同老师告别后,自己就想要迫不及待的把脑中的东西都记下来,生怕落下一丁一点。对它们的消化,是我在今后生活中的营养。伴随着心中疑惑的消释,自己脚下的路也清晰了许多。又要加紧前进了,否则这么大的差距,怎么赶得上呢 ?

 

 

C 与汇编混合编程:符号链接、调用约定与参数传递 本文详解汇编与C语言混合编程的实现原理,涵盖PUBLIC与EXTERN指令的使用、32位调用约定(参数从右往左压栈、调用者清栈)、栈帧布局及寄存器保护规则。通过实例展示C调用汇编函数与汇编调用C库(如printf)的写法,并对比32位与64位(Windows x64)在参数传递、返回值和栈对齐上的差异。强调边界清晰的重要性,确保跨模块调用稳定可靠,适用于性能优化、硬件操作及学习底层机制场景。 阅读详情

相关推荐

28GHz毫米波滤波器设计实战:用SynMatrix快速搞定SIW带通滤波器(附完整参数)

本文详细介绍了如何使用SynMatrix工具链高效设计28GHz SIW带通滤波器,涵盖智能参数预测、多物理场联合优化和加工误差补偿等核心技术。通过实战案例和完整参数模板,帮助射频工程师快速实现毫米波滤波器设计,显著提升工作效率并避免反复迭代。

weixin_29284657的博客 496

C++的三大特性?C也可以做到

C++的三大特性是什么?封装、继承与多态,那么今天这篇文章小编就来介绍一下,如何用C语言实现C++的这三个特性。 1.封装 何为封装? 在面向对象的思想中,将数据和对数据的操作封装在一起——即类。 类只对外界开放接口(即有权访问的函数接口),而将接口的实现细节和该类的一些属性(变量)隐藏起来,达到数据的抽象性(使具有相同行为的不同数据可以抽象为同一个类)、隐藏性和封装性。 我们知道,C语言中有s...

weixin_34252686的博客 272

英伟达笔试1

本文摘要: 使用NAND2门设计4位奇偶校验发生器,通过15个NAND2门实现4输入异或功能,分三级结构完成奇校验计算。 时序分析公式总结: 建立时间约束:T_cq + T_comb(max) + T_setup + T_skew ≤ T_clk 保持时间约束:T_cq + T_comb(min) + T_skew ≥ T_hold 提供了两段路径的具体时序检查公式和建立违规修复方法 分析32位粘滞累积寄存器Verilog代码: 功能:记录输入数据中出现过的所有1位 每个bit独立实现,复位清零,有效输入时

soulermax的博客 166

程序媛人生——专访“龙书”《编译原理》联合作者 Monica S. Lam

Monica S. Lam 是首位在斯坦福计算机系任教的亚裔女教授,也是编译理论圣经“龙书”《编译原理》的联合作者。Monica 教授在采访中分享了自己在教育研究方面的成果,深信技术改变一切,向往“人人都是创造者”的世界。

唐小引(Echo)的 优快云 博客。 1901

百元DIY手机荧光计:低成本荧光检测平台搭建与实战

荧光检测是一种基于物质受特定波长光激发后发射更长波长荧光的分析技术,其核心原理在于光与物质的相互作用。通过选择性激发与检测,该技术能实现对痕量物质的高灵敏度、高特异性定量分析,在生物医学、环境监测和食品安全等领域具有重要价值。传统荧光分光光度计虽精度高,但成本昂贵、体积庞大且操作复杂,限制了其在现场快检和普及教育中的应用。本文聚焦于如何利用智能手机的高性能摄像头和处理器,结合低成本光学滤光片和LED光源,构建一个便携、经济的DIY荧光检测平台。该方案通过简化光路设计,采用带通滤光片进行波长选择,并利用图像处

weixin_34194829的博客 308

【程序化天空盒】过程记录01:日月 天空渐变 大气散射

在做一个仿照原神的天空盒,写文章作为技术总结和记录。

qq_41835314的博客 6741

专家访谈:《编译原理》课程教学的探讨

《编译原理》课程教学的探讨张 昱 陈意云 郑启龙(中国科学技术大学  计算机科学与技术学院, 安徽 合肥) 中国科学技术大学计算机科学技术系张昱、陈意云、郑启龙,多年来在中国科大从事编译原理教学和科研。总结教学中的体会,探讨在编译原理课程上所进行的课程建设,供国内同行参考与切磋。 编译原理是计算机专业的一门专业基础课程。该课程介绍编译器构造的一般原理、基本实现方法。主要内容

华章IT官方博客 4029

LLM之RAG实战(五十四)| 复杂文档处理RAG框架:Ragflow

RAGFlow 是一种结合了检索增强(Retrieval-Augmented Generation,RAG)与流程控制(Flow)的人工智能技术架构。它通过检索外部知识库中的信息,结合自然语言生成技术,为用户提供更准确、更丰富的回答。同时,它还引入了流程控制机制,能够根据任务需求动态调整信息检索和生成的流程,从而更好地完成复杂的任务。RAGFlow 的核心优势在于将检索和生成相结合,打破了传统生成模型仅依赖内部参数进行文本生成的局限。

wshzd的博客 1067

沈从文计算机,易班

寒假已经开始倒计时了,“悦”读打卡活动也已经落幕,大家是否都收获满满呢?一起来看最后一期笔记吧。安全与环境工程学院莹斌凡尔赛文学队《起风了》故事中的男主人公和患有肺结核的节子萍水相逢、一见钟情,他们的爱起于生之终点,于是故事也就从人们以为的“已然终止之处”谈起;然而,尽管这故事带给我们的不是轻松,更没有快乐,但是,当他们试图从“时间这一存在中”挣脱出来,在“病痛和死亡的阴影面前由衷地欣赏自然风景”...

weixin_39928648的博客 385

代谢组数据分析(四):多种差异分析方法筛选代谢物标记物

本文详细介绍了代谢组学中常用的差异分析方法,包括倍数变化法、T检验、VIP值在OPLS-DA中的应用。通过这些方法,研究者能够筛选出在不同组别间具有显著差异的代谢物,为疾病诊断和治疗提供线索。文章还提供了一个整合的R函数run_metabolomeDA,便于研究人员进行一站式差异分析,并展示了如何生成火山图来可视化结果。

专注生信领域 6772

基于深度学习的停车位检测系统(UI界面 + YOLOv8/v7/v6/v5代码 + 训练数据集)

传统的停车位检测方法主要依赖于人工或基于简单图像处理的技术,存在检测速度慢、准确率低、环境适应性差等问题。近年来,随着深度学习技术的快速发展,基于目标检测的停车位检测系统已成为研究的热点。本文基于YOLO(You Only Look Once)系列模型(包括YOLOv5、YOLOv6、YOLOv7和YOLOv8),开发了一个完整的停车位检测系统,支持实时检测、结果可视化以及UI交互界面。本文实现了一个基于深度学习的停车位检测系统,采用YOLO模型在实时视频流中进行高效检测。

YOLO 332

普通话证书

1 调整呼吸方法 1.转化呼吸方式,胸腹联合呼吸,用肌肉带给力量,而不是靠嗓子(找不到可以用闻花香的方式) 2.喉头放松(叹气的方式体验) 3.找到自己最舒服,最松弛的状态,不需要刻意,每个人是不同的状态 4.接受自己的声音,有自己的特色,对自己的声音有自信 学气息还是为了相处和交流的舒适,不那么需要一直提着腔调,大道至简,找到自己声音好听的状态,自然舒适的交流就好 ...

han29_的博客 1257

你分得清ChatGPT、Gemini、Grok、豆包、千问、DeepSeek、OpenClaw、CloudCode、vibeCodeing、sKill、MCP,飞书、微信这些到底是什么吗?

AI技术生态呈现层级化发展,从基础模型到应用平台形成完整技术栈。核心分为五层:模型层(GPT、Gemini等基础模型)→AI助手层(ChatGPT等应用产品)→工具层(ClaudeCode等开发工具)→协议层(MCP等接口标准)→应用层(微信、飞书等平台)。未来趋势将形成"模型公司-开发框架-应用生态"三层结构,AI正逐步演变为新型操作系统,通过标准化协议连接各类外部系统,实现能力调用与生态整合。技术发展呈现出从底层基础设施到上层应用场景的垂直整合特征。

hy行者勇哥的博客 397

汇编调试实战:DEBUG、Turbo Debugger、GDB 与 IDA

本文系统讲解汇编调试技巧,涵盖 DEBUG.exe 基础使用(寄存器查看、单步执行、内存操作)、Turbo Debugger 图形化调试,以及 GDB(32位Linux)和逆向工具(IDA/Ghidra)的高级应用。重点解析寄存器管理、断点设置、栈平衡检查与常见错误排查,如死循环、内存越界、栈崩溃等,强调静态分析识别函数边界、动态分析验证逻辑流程。掌握这些方法可高效定位底层缺陷,提升汇编开发能力。

软件工程师文艺 241

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

ARM 汇编调试入门:MOV、LDR 和 STR

掌握,最重要的是看清数据移动的方向。

ccddvvv的博客 189

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

10个完整汇编实例:排序、字符串与递归算法

本文提供10个16位实模式下可运行的汇编程序,涵盖冒泡排序、字符串反转、进制转换、阶乘与斐波那契计算等经典算法,附逐行解析。重点讲解寄存器使用、循环控制、栈操作、除法清零、符号比较、字符处理等核心技巧,揭示如PUSH/POP CX保全计数器、DIV前清DX、ASCII转换、溢出处理等关键细节。通过实践掌握底层逻辑,提升汇编编程能力。

软件工程师文艺 236

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

汇编子程序设计:参数传递、局部变量与调用约定

汇编代码模块化核心在于子程序设计。通过PROC/ENDP定义函数,结合栈帧管理(PUSH BP/MOV BP, SP)实现局部变量隔离与递归支持。参数传递可选寄存器(高效)或栈(多参适用),配合调用约定(如C、Pascal)规范参数入栈顺序与栈清理责任。掌握这些模式,便能编写结构清晰、可复用的汇编代码,迈向工程化开发。

软件工程师文艺 231

四级 Linux 应用与开发工程师笔记:8086 汇编、存储器、接口芯片和操作系统计算题整理

计算机四级 Linux 应用与开发工程师备考笔记:这门考的不是 Linux 命令,而是操作系统原理和计算机组成与接口两门课。组成与接口部分重点整理 8086 寻址方式、常考汇编指令和读程序题、存储器位扩展和字扩展、流水线时空图,接口芯片和中断按做题方法整理;操作系统部分整理高响应比优先、Clock 置换、两级页表、生产者消费者等考点,配真题讲解。

qq_39121450的博客 247

C 语言:编译 → 汇编 → 链接 → 加载运行

C程序从源码到执行经历预处理、编译、汇编、链接四阶段,生成ELF可执行文件,由操作系统加载至内存并由CPU执行。关键点包括:交叉编译生成ARM指令;链接分静态与动态;入口为_start而非main;动态库需-fPIC保证位置无关性;嵌入式环境下可能跳过OS直接运行。

嵌入式开发,ARM Linux开发 431

ARM 汇编入门(六):栈、子程序与 AAPCS64 调用约定

AArch64汇编中,函数调用依赖AAPCS64 ABI协议,确保跨语言、跨编译器的二进制兼容。核心规则包括:寄存器分工明确(caller-saved可覆盖,callee-saved需保存)、栈指针SP必须16字节对齐、栈帧大小为16字节倍数;参数通过X0~X7(整数)和V0~V7(浮点/SIMD)传递,超出则压栈;大结构体传指针,小结构体拆入寄存器;非叶子函数须保存LR(X30),否则返回错误;标准prologue/epilogue维护调用链与栈安全。掌握这些规则,方能实现手写汇编与高级语言的无缝协作,避

m0_58087444的博客 248

汇编分支与循环:JMP/LOOP/条件跳转的结构化编程

本文详解如何用汇编的JMP与条件跳转实现if/else、for、while等高级控制流。通过循环计数、嵌套循环及复杂判断的典型模式,展示底层指令如何构建逻辑结构。掌握LOOP指令与跳转组合,即可在无高级语法环境下实现高效、精准的程序控制,体现汇编语言的简洁与性能优势。

软件工程师文艺 260

直接操作 VGA 显存:用汇编控制文本显示

本文详解VGA文本模式下直接操作显存的原理与实践:通过段寄存器B800h访问显存,每字符占2字节(ASCII+属性),利用偏移公式(n×80+m)×2定位输出。属性字节控制颜色与闪烁,如1Ch为蓝底亮红字。使用MOV ES:[DI], AX结合REP STOSW可高效清屏,配合INT 10h实现光标重置与滚动窗口。深入理解显存映射,是掌握图形底层逻辑的关键。

软件工程师文艺 209

【Unity知识速递】第7期 Unity 6.6 深度解析:WebGPU 正式版与 WebAssembly64,Web 游戏的内存革命

如何启用 Wasm64?需要注意的是,Wasm64 需要浏览器支持 Memory64 提案,目前主流浏览器的最新版本都已支持。一句话总结: Unity 6.6 用 WebGPU 转正、Wasm64 16GB 内存和渐进式加载三连击,将 Web 游戏的体验天花板又往上推了一大截——Web 平台不再是"妥协版",正在成为真正的一等公民。Unity 6.6 新增了 WebAssembly64(Wasm64) 构建选项,这可能是本次更新中对 Web 游戏开发者影响最大的一项升级。

crystal_WJT的博客 425

设计模式(unity游戏研发版)

当你使用图形用户界面类时通常会遇到一个问题。比如,你创建了自定义按钮类并允许客户端在按钮中注入自定义代码,这样当用户按下按钮时就会触发这些代码。观察者模式允许任何实现了订阅者接口的对象订阅发布者对象的事件通知。你可在按钮中添加订阅机制,允许客户端通过自定义订阅类注入自定义代码。在Unity中,这就像UnityEvent在Inspector中绑定多个回调。

m0_63330263的博客 102
上一篇: 原来你对我如此重要,记自己对存储结构的恍然大悟
下一篇: 迟来的反省
杜晓萌
博客等级 码龄16年 221粉丝 70原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值