c语言程序如何调用标准库函数,如何调用C标准库的exit函数详解

news/2024/9/29 8:23:18/

编译大于运算符

原定的计划中这一篇应当是要讲如何编译if表达式的,但是我发现没什么东西可以作为if的test-form的部分的表达式,所以觉得,要不还是先实现一下比较两个数字这样子的功能吧。说干就干,我决定用大于运算符来作为例子——大于运算符就是指>啦。所以,我的目标是要编译下面这样的代码

(> 1 2)

并且比较之后的结果要放在EAX寄存器中。鉴于现在这门语言还非常地简陋,没有布尔类型这样子的东西,所以在此仿照C语言的处置方式,以数值0表示逻辑假,其它的值表示逻辑真。所以上面的表达式在编译成汇编代码并最终运行后,应当可以看到EAX寄存器中的值为0。

为了编译大于运算符,并且将结果放入到EAX寄存器中,需要用到新的指令CMP、JG,以及JMP了。我的想法是,先将第一个操作数放入到EAX寄存器,将第二个操作数放入到EBX寄存器。然后,使用CMP指令比较这两个寄存器。如果EAX中的数值大于EBX,那么就使用JG指令跳到一个MOV指令上,这道MOV会将寄存器EAX的值修改为1;否则,JG不被执行,执行后续的一道MOV指令,将数值0写入到EAX寄存器,然后使用JMP跳走,避免又执行到了刚才的第一道MOV指令。思路还是挺简单的。

在修改jjcc2之前,还需要在inside-out/aux中对>予以支持,但没什么特别的,就是往member的参数中加入>这个符号而已。之后,将jjcc2改为如下的形式

(defun jjcc2 (expr globals)

"支持两个数的四则运算的编译器"

(check-type globals hash-tabl


http://www.ppmy.cn/news/177620.html

相关文章

ps做出一个框,然后拉图片进去只显示框中得部分

新建图层1 建立选区-填充 把照片放在图层1上 按CtrlAltG 然后 Ctrlt 调整大小 回车

转:智能手机Flash/DRAM选择、配置与价格大全

作者: 孙昌旭 引言:智能手机的Memory配置五花八门,结构形式多样,选择错了不仅手机性能受影响,价格昂贵,更有可能无货可供。Memory的选择又与手机主芯片平台十分相关,这让手机设计者十分头痛,用户…

中国手机市场销售额破万亿,二手手机的春天来了?

以往提到智能手机市场各家厂商的表现,总是“唯出货量”论排名而忽略了销售额。但今年这种“刻板印象”也许要改变了。 市场研究机构Gfk发布的数据显示, 2021 年的手机销售额达到了1. 03 万亿元,超过了前几年巅峰时期的水平,与之对…

手机号码归属地查询[免费]

文章目录 依赖地址代码 依赖地址 使用百度的号码归属地查询接口 https://sp0.baidu.com/8aQDcjqpAAV3otqbppnN2DJv/api.php?resource_nameguishudi&queryxxx 网上虽然有很多可以使用的地址,但是大部分都已经不能使用了。筛选了很多终于找到这个可以使用 代码…

联想E431拆机

朋友的联想电脑显示屏花屏,只有主显示器花,外接显示器并不花,E431的双显卡更新了驱动没有效果。 那么试着拆机把显示器的接线重新接一下,E431型号不知道显示器接线在主板的哪里! 放一张拆机图吧: 我还是太…

联想thinkpad E431(win7系统)进入bios设置页面修改虚拟化设置

复制虚拟机使用时,出现如下问题: 百度一大波,才知道原因是BIOS未开启虚拟化技术,解决办法是进入bios界面进行修改。 电脑是14年入手的,系统也去重装过几次,进入bios页面又全是英文,百度到的修…

联想E431 win10+Unbutun+Deepin系统安装

本人14年购买的联想E431,用到今天觉得有些卡,并且windows系统软件广告和弹窗太多,实在不喜欢。现在给笔记本增加一个M2接口的固态硬盘,再将光驱改为一个硬盘。因此电脑上有三块硬盘,现计划系统安装如下。 原硬盘&…

联想e431笔记本更改硬盘模式bios设置的详细教程

用硬盘安装系统,就要进入bios,将硬盘改为第一启动项即可重装系统。不同品牌的电脑,它的bios设置方法也就不同。那么,联想e431笔记本要如何更改硬盘模式呢?今天U大侠小编就和大家分享联想e431笔记本更改硬盘模式bios设置…