How to start a Project using C
发表于|更新于|CS Project
|总字数:237|阅读时长:1分钟|浏览量:
介绍
- 将会介绍如何使用C开发在Linux平台上运行的控制台应用程序
- 和HelloWorld一样😄
- 选用的项目是自己写一个文本编辑器!(Build Your Own Text Editor)
- 初步开发这个项目,我觉得从中学到最重要的东西就是,开发不是一蹴而就的,为了更新功能,删改重构是常有的事情,现在这个阶段,很难有一次性铺平,统筹规划好所有东西的能力,所以不能用十分平面的想法去开发。当然这一切要尽可能与其他模块解耦,不能因为这里的重构,影响到其他大的模块。
准备工作
-
了解所要开发项目的背景知识
环境搭建
-
gcc作为编译器工具链
-
Make作为构建工具
项目框架
-
一个kilo.c文件,但划分模块
开发与测试
运行维护
updating…
相关推荐
2023-04-24
How to start a Project from Zero
介绍 如何从0开始完成一个项目?这是我在学习过程中遇到的一个难以忽视的问题。这篇文章将会包含如何去开始一个项目,如何去维护一个项目的记录。不过这些想法没有经过认证,仅仅是对于开发过程中的思考方式的归纳和总结。 开发的范式很难总结出来,因此我将尝试分析我在一门程序设计专题课最后的大作业开发流程,通过完善这个远古项目开发的过程,来帮助构建一个开发的范式。 这个项目采用C和visual studio2017开发 项目介绍 项目的名字叫做"排序可视化",要求我们小组实现常见排序的可视化展示。 项目的实现需要借助学校里一个老掉牙的图形库,该图形库为我们封装了某些图形的画法,还有windows窗口的生成等等 这个项目按理来说是简单的,但是还是有一些刚开始难以思考的要素,比如说Windows,比如说图形化,这样就不够把最需要关注的点显露出来,因此我想在另一篇文章中选择一个要素最为稀少的项目,也就是使用C/C++和文本编辑器开发的在Linux平台上运行的控制台应用程序,来阐述我认为的项目开发思路。 准备工作 单拎出来一个排序可视化,我们如何使用我们手...
2023-11-13
CSAPP bomblab
Intro CSAPP里传奇的实验 通过汇编能力拆除二进制炸弹,拯救世界! phase_1 通过strings_not_equal想到这里有个字符串判断 x/s 402400得到字符串为Border relations with Canada have never been better. phase_1就是上述字符串 phase_2 通过read_six_numbers得到phase_2是六个数字 add eax, eax可见每次取出的比较数字翻倍,第一个数字为1 phase_2就是1 2 4 8 16 32 phase_3 阅读反汇编,可知读取两个数字 第一个要比7小 第二个根据第一个有不同的分支答案 phase_4 第四题的func4是一个递归函数 phase_5 通过内存查找关键字符串flyers x/s 0x4024b0查找另一个敏感字符串maduiersnfotvbylSo you think you can stop the bomb with ctrl-c, do you? 输入的六个...
2023-11-11
CSAPP datalab
突发奇想,重做下CSAPP的lab,顺便把以前没做完的补上,希望能坚持下来 Links lab download Intro datalab主要是使用位运算来实现函数,考验对底层数据类型的掌握 修改bit.c文件以彰显你的位运算技术 32bit Solution bitXor 用位与和位非实现位异或 德摩根律走起 123int bitXor(int x, int y) { return ~(~(~x & y) & ~(x & ~ y));} tmin 要求返回最小的补码值0x10000000 123int tmin(void) { return 1 << 31;} isTmax 判断是否是补码最大值 由tmax的特征可得,特判0xFFFFFFFF 123int isTmax(int x) { return !(((x + 1) ^ x) ^ ~0x0) & !!(~x);} allOddBits 要求判断所有奇数位是否都为1 先取奇数位 再判断是否...
2023-09-22
MIT 6.858
Links 课程主页 课程视频 LEC 1: Introduction, threat models
2023-08-25
CS161 Project 1
Project1 Q0 Customizer 以customizer - customizer身份获取后续密码 remus - ilearned Q1 Remus 要求我们使用缓冲区溢出注入代码,由此读取访问受限的文件README orbit.c12345678910111213#include <stdio.h>void orbit(){ char buf[8]; gets(buf);}int main(){ orbit(); return 0;} 可以发现gets()没有对读取的输入作越界处理,因此含有缓冲区溢出的隐患 ./debug-exploit并在第五行处打断点 gdb12345678910111213141516(gdb) b 5(gdb) r(gdb) x/16x buf0xbffffc68: 0xbffffd1c 0xb7ffc165 0x00000000 0x000000000xbffffc78: 0xbffffc88 0xb7ffc...
2023-08-20
CS161
The primary way of securing a system is understanding how it works? False. Oftentimes the best defense is to remove incentives for attackers Links ucb的一门系统安全课程 课程主页su20 课程主页su21用作proj 课程hw(toekn: G2DR3D) Lecture 1: Introduction Threat Model: 谁会攻击你、他们有什么样的资源 Lecture 2: Security Principles Don’t Blame the Users Security is Economics Prevention Detection, Defense in Depth Password Authentication Measuring Attacker Capabilities rubber-hose cryptanalysis Least P...