菜鸟源码网站-Freebasic初学者 Freebasic基础教程1:一分钟了解手

Freebsic是一种开源语言,没有任何功能,很无聊。 它披着VB句型牛皮,有C语言的心,有C++的情结,却诞生在托管语言横行的世界。 因此,特此将本系列文章送给极少数喜欢Freebasic的人。

freebasic的句型和vb非常相似,所以如果你有vb6或者vba的基础,你用Freebasic写代码几乎没有任何障碍,而且非常熟悉。 如果你有一点c语言基础,就可以立即使用Freebasic,Freebasic和c高度兼容,可以用gcc或LLvm编译。 这个系列适合有一点VB基础的人,不过我只是对c语言入门教程做了一个非常简单的改编。

这部分内容改编自C语言英文网站中的C语言介绍。 这个入门教程写得很好。 也可以随便找一本C语言的入门,只看VB没有的章节。

《胡萝卜汤》改编自C语言 C语言英语网入门

1. 1分钟彻底理解手的概念:

菜鸟源码网站-Freebasic初学者 Freebasic基础教程1:一分钟了解手

电脑中的所有数据都必须放在显存中。 不同类型的数据占用不同数量的字节。 例如long占用4个字节,boolean占用1个字节。 为了正确地访问这些数据,每个字节都必须被编号,就像门钢号和ID号一样菜鸟源码网站,每个字节的编号都是唯一的,根据编号可以准确地找到某个字节。

右图是4G显存中每个字节的数量(以十六进制补码表示):

我们把显存中的字节数称为地址(Address)或指针(Pointer)。 地址从0开始依次递减。对于32位环境菜鸟源码网站,程序可以使用的显存为4GB,最小地址为0,最大地址为0XFFFFFFFF。

菜鸟源码网站-Freebasic初学者 Freebasic基础教程1:一分钟了解手

以下代码演示了如何输出地址:

迪马斯隆加=100

dimasStringmyStr="这是 FB 入门教程"

print "a 的地址: "&varptr(a)

菜鸟源码网站-Freebasic初学者 Freebasic基础教程1:一分钟了解手

print "myStr 的地址: "&strptr(mystr)

睡觉

运行结果:

a的地址:1310384

mystr地址:6164384

FB语言使用变量来存储数据,使用函数来定义一段可以重复使用的代码。 它们必须放置在视频内存中以供CPU 使用。

数据和代码都以二进制补码的形式存储在显存中,计算机很难从格式上判断一块显存存储的是数据还是代码。 当程序加载到显存中时,操作系统会给不同的显存块分配不同的权限。 具有读和执行权限的显存块是代码,具有读和写权限(或仅读权限)的显存块是数据。

CPU只能通过地址来获取显存中的代码和数据,程序在执行时会通知CPU要执行的代码和要读写的数据的地址。 如果程序不小心出错,或者开发者在CPU要写入数据时故意给它一个代码区的地址,就会出现显存访问错误。 这些显存访问错误被硬件和操作系统拦截,迫使程序崩溃,程序员没有机会挽救。

CPU访问显存时需要的是地址,而不是变量名和函数名! 变量名和函数名只是地址的助记符,当源文件被编译并链接成可执行程序时,它们将被地址替换。 编译和链接过程的一个重要任务就是找到这些名称对应的地址。

假设变量a、b、c在显存中的地址分别为0X1000、0X2000、0X3000,则乘法运算c=a+b; 将被转换成类似如下的方法:

0X3000=(0X1000)+(0X2000);

()表示数值运算,整个表达式的含义是取出地址0X1000和0X2000处的值,相减,将相乘的结果参数交给地址0X3000处的显存

变量名和函数名给我们提供了方便,让我们在编译代码的过程中可以使用易于阅读和理解的中文字符串,而不是直接面对两者的补码地址,那场面简直是崩溃的。

需要注意的是,虽然变量名、函数名、字符串名、字段名本质上是一样的,都是地址的助记符,但是在编译代码的过程中,我们认为变量名代表的是数据本身,而函数名、字符串名和字段名代表代码块或数据块的首地址。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 网站源码 菜鸟源码网站-Freebasic初学者 Freebasic基础教程1:一分钟了解手 https://www.wkzy.net/game/141885.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务