Kaleidoscope:LLVM IR的代码生成 第三章绪论 欢迎阅读“使用LLVM实现语言”教程的第3章。本章介绍如何将第2章中构建的抽象语法树转换为LLVM IR。 还要注意,您需要使用与您的LLVM发行版相匹配的本教程版本:如果您使用的是正式的LLVM发行版,请使用发行版中包含的文档版本或在llvm.org发行版页面中的版本。 重申一下,本教程不会详述好的软件工程实践:就我们的目的而言,添加虚拟方法是最简单的。 = fmul double %b, %b %addtmp4 = fadd double %addtmp, %multmp3 ret double %addtmp4 } 这结束了Kaleidoscope教程的第三章。接下来,我们将描述如何添加JIT代码生成和优化器支持,这样我们就可以真正开始运行代码了!
作者主页:Designer 小郑 作者简介:3年JAVA全栈开发经验,专注JAVA技术、系统定制、远程指导,致力于企业数字化转型,CSDN博客专家,阿里云社区专家博主,蓝桥云课讲师。 \color{red}{前言:本教程配套博主发布的所有} T系列项目。 一、删除前端多余文件 同学们拿到的 T 系列前端项目架构,如下图所示。 请同学们删除红圈内的文件,如下图所示。 三、拉取前端依赖 请同学们输入 npm i 命令,拉取项目前端依赖,如下图所示。 五、前端项目的运行 最后,同学们就可以输入 npm run serve 命令,运行前端项目了,如下图所示。 npm run build 前端项目默认是 8081端口,运行成功后如下图所示。 提示:因为项目后端还没启动,系统是无法登录进去的,请同学们继续按照教程启动后端。
CSS样式 课程目标 1.css引入方式(重点) 2.css选择器 *(重点) 3.css盒子模型(重点) 4.css3常见效果(重点) 5.CSS3常用的规则; 级联样式表 css介绍 1、如果样式是固定并且不修改并且很少情况,行内样式 2、如果样式针对当前html页面做的样式,并且量比较大的情况下, 内联样式 3、如果你的样式是通用,如果你的css代码很多,外联样式, div> </body> 样式选择 三种样式引入方式,在实际开发过程中该如何选择 1.如果是通用样式,就选择外联样式 2.当样式内容过多时,也会将样式单独抽离成一个.css文件,方便管理 3. 标签中的span标签 /* 逗号就代表前后的元素是同等级的 */ div span,p span{ color: #00BFFF; } 伪类选择器 伪类选择器是css3中提供的用于快速查找元素的便捷选择器
我们可以通过一个中括号来定义一个数组 示例代码如下: 1 var numlist = [1,3,5,7,9]; 在上面的代码中我们定义了一个数组,数组有5个元素,五个元素多是数值型。 我们可以通过数组的变量名配合中括号来获取数组的元素 1 var numlist = [1,3,5,7,9]; 2 console.log(numlist[0]); //输出数组的第一个元素 3 console.log 示例代码如下: 1 const list = [1,2,3].filter((v)= > { 2 console.log(v); //输出为1,2,3 3 return v>1; 4 }) 5 console.log(list); //输出为[2,3]; find方法 find()方法返回数组中第一个满足回调函数测试的第一个元素的值。 课后练习 找到数组[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]中的奇数加和并放到一个新数组中; 找出数组[4,6,1,2,3,7,5]中的最大索引
三、前端插件的安装 现在可以开始安装前端所需要的插件了,和安装中文插件的方法一样,首先搜索HTML CSS Suport选择安装。此插件是在HTML中编写CSS的快捷神器。 右键点击,选择“vscode-preview-server:Launch on browser” 这样我们就可以开始前端程序的编写了。
= {}; 在花括号中,我们可以为对象定义属性,下面我们来写一个猫的对象 示例代码如下: 1 var cat = { 2 //定义一个对象cat,它有两个属性,name和age 3 其实对象的属性值可以是任何数据类型,甚至可以是函数,如果对象的属性值是函数,那么我们叫这个属性为这个对象的方法 示例代码如下: 1 var cat = { 2 name:"喵喵", 3 方法简写 1 var cat = { 2 name:"喵喵", 3 age:2, 4 sayName(){ 5 console.log("我是喵喵"); 6 8 cat.sayName(); 四、this关键字 在上面的例子中,我们可以给cat的那么属性重新赋值,代码如下 示例代码如下: 1 var cat = { 2 name:"喵喵", 3 在对象的方法中使用this,可以指向这个对象本身, 示例代码如下: 1 var cat = { 2 name:"喵喵", 3 age:2, 4 sayName:function
2009年,Node.js问世,JavaScript这门语言逐步在后台占据一席之地,目前,前端开发的大量工具都基于node.js。 二、JavaScript是做什么的 在前端,通过javascript可以实现更多的页面交互,与后台的数据交互,以及更为丰富的网页效果。 在后台,借助node的运行环境,使用javascript一门语言,即可完成服务器端开发,我们会在后续的章节中讲解如何使用JavaScript做服务端开发,本章主要内容仍然面向前端开发。 DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title
入门类 地址 前端入门教程 http://www.cnblogs.com/jikey/p/3613082.html 瘳雪峰的Javascript教程 http://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000 jQuery基础教程 http:/ /www.imooc.com/view/11 前端工程师必备的PS技能——切图篇 http://www.imooc.com/view/506 结合个人经历总结的前端入门方法 https://github.com 雪碧图制作 http://www.imooc.com/learn/93 版本控制入门 – 搬进 Github http://www.imooc.com/learn/390 Grunt-beginner前端自动化工具 http://www.imooc.com/learn/30 IntelliJ IDEA 简体中文专题教程 https://github.com/judasn/IntelliJ-IDEA-Tutorial
++7 8 - 自减 --7 6 自增运算符和自减运算符可以向上面的例子,写在变量的后面,也可写在变量的前面,写在前后意义不同 1 var num1 = 10; 2 var num2 = 10; 3
AJAX(Asynchronous JavaScript and XML)是前端与后端进行异步通信的核心技术。封装AJAX可以提高代码复用性、统一处理错误和优化请求流程。 下面是一个实用的AJAX封装教程,包含完整实现和使用示例。 error.status === 401) { // 未授权,跳转到登录页 location.href = '/login'; } return error; }});3.
; Math对象提供了很多方法来简化我们的数学运算,下面简单列举几个方法 1 var pi = Math.PI; 2 var num1 = Math.floor(pi); //向下取整 3 var num2 = Math.ceil(pi); //向上取整 4 var num3 = Math.round(pi); //四舍五入 5 var num4 = Math.abs(-pi); num5 = Math.random(); //获取0~1之间的随机数 7 console.log(num1); 8 console.log(num2); 9 console.log(num3) ,还是小于结果,还是等于结果,都会有相应的提示 代码如下 1 <input type="text" id="number"> 2 <button id="guess">猜数字</button> 3 1 var dateNow = new Date(); 2 var year = dateNow.getFullYear(); //获取年,不能用getYear()方法,此方法已经被废弃 3
首先写一个打开vscode写一个案例计时器方法 示例代码如下: 1 window.setTimeout(()>={ 2 console.log("hello word") 3 },1000) 如上代码时一个计时器方法使用
一、for语句 for语句的语法如下: 1 for(初始值;布尔值;计数器){ 2 //语句块 3 } 在for语句中,如果布尔值是true,就会一直执行语句块中的内容,为了防止死循环,需要有一个计数器 以内所有正整数的加和 示例代码如下: 1 var sum = 0; //sum用来存储循环过程中正整数的加和 2 for(var i = 1;i<=100;i++){ 3 5 console.log(sum); //这时候输出的就应该是5050 二、while语句 while语句语法如下所示: 1 while(bool){ 2 //bool为true,循环执行 3 在每次循环的过程中都会让n的值加1,这样当n的值等于10,循环便停止,下面我来使用while语句输出100以内所有正整数的加和 示例代码如下: 1 var n = 0; 2 var sum = 0; 3 下面我们使用continue来实现计算100以内所有不能被7整除的正整数加和 示例代码如下: 1 var sum = 0; 2 for(var i = 0;i<=100;i++){ 3 if(i
//创建数组 2 var reg = new RegExp(); //创建正则表达式 在开发中,我们一般用简写的方法创建正则表达式,同样和数组比较,代码如下 1 var arr = [1,2,3] 如果不符合这个规则,就不会匹配 1 var reg = /123/; //创建了一个正则表达式,这个正则表达式可以匹配字符串"123" 2 var str = "123"; //创建字符串"123" 3 false 我们可以看到程序在控制台输出了true,因为reg定义的时候就是为了匹配字符串123的,我们再来看下面的例子 1 var reg = /123/; 2 var str = "012345"; 3 页不匹配,如果希望这样的话,我们需要改进我们的正则表达式 1 var reg = /^123$/; //^表示开头,$表示结尾,两个符号之间是匹配的内容 2 var str = "012345"; 3 /; //匹配3位字母 2 var str = "012345abcde"; 3 console.log(reg.exec(str)); 下面我们来定义一个正则表达式来匹配一个邮箱格式的字符串,我们先来确定一下邮箱的格式
if后面的括号内一般不会直接写一个布尔值,而是写一个表达式, 示例代码如下: 1 var num1 = 10; 2 var num2 = 20; 3 if(num1<num2) //如果改成num1 示例代码如下: 1 var num1 = 10; 2 var num2 = 20; 3 if(num1<num2){ 4 console.log("判断num1是否小于num2"); 5 else语句可以判断两种情况下,需要执行哪些代码,如果需要判断的条件是三种情况,我们可以使用if…else if…语句 示例代码如下: 1 var num1 = 10; 2 var num2 = 20; 3 通过控制运算符来实现数学运算 1 var num1 = 10; 2 var num2 = 20; 3 var sign = "+"; //通过修改操作符,输出不同的结果 4 var result break; 9 case 2: 10 console.log("num的值是二"); //当n===2,执行 11 break; 12 case 3:
async函数 二、立即执行函数 立即执行函数顾名思义,就是声明之后立刻执行的函数,实例代码如下所示: 1 (function(){ 2 console.log("hello world"); 3 立即执行函数通常用来封装代码,例如下面的例子: 1 (function(){ 2 let a = 10; 3 let b = 20; 4 console.log(a + b) 5 三、闭包 闭包是定义在函数内部的函数,我们用立即执行函数编写一个闭包的例子 1 (function(){ 2 function add(a, b){ 3 return a + b 函数表达式 在ES2015中增加了箭头函数的语法,可以使用=>来定义函数,我们来对比一下三种写法,实例代码如下所示: 1 function add(a, b){ 2 return a + b 3 如果函数体只有一个表达式作为返回值,可以省略花括号和return关键字 实例代码如下所示 1 const fun = x=>x*x; 2 let result = fun(6); 3 console.log
2 let getData = new Promise((resolve) => { 3 let data = "string data"; 4 resolve(data); 5 }) 函数与Promise对象结合使用,可以优雅地处理异步问题,声明async函数的语法如下所示: 1 async function fun(){ 2 //async函数内部可以使用await关键字 3 1 let getData = new Promise((resolve) => { 2 let data = "string data"; 3 resolve(data); 4
当我们点击按钮的时候,在h1标签中插入“hello world” 示例代码如下: 1
1
名称:{{fruit}}
3索引:{{index}}</ 示例代码如下所示: 1 export default { 2 data(){ 3 return { 4 students:[ 5 1
1
名称:{{fruit}}
3索引:{{index}}</ 示例代码如下所示: 1 export default { 2 data(){ 3 return { 4 students:[ 5 1