社区
汇编语言
帖子详情
散分(顺便也解疑):从实模式向保护模式的转换过程中,代码为16-bit与32-bit的混合体,该用什么编译器生成?UP有分!
tianxiangyuan
2004-03-26 10:41:08
从实模式向保护模式的转换过程中,代码为16-bit与32-bit的混合体,因在下的汇编语言功力有限,想结合C语言写,该使用什么编译器,怎么写代码?请大虾不吝赐教,UP有分。
...全文
45
27
打赏
收藏
散分(顺便也解疑):从实模式向保护模式的转换过程中,代码为16-bit与32-bit的混合体,该用什么编译器生成?UP有分!
从实模式向保护模式的转换过程中,代码为16-bit与32-bit的混合体,因在下的汇编语言功力有限,想结合C语言写,该使用什么编译器,怎么写代码?请大虾不吝赐教,UP有分。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
27 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Tiangua
2004-03-31
打赏
举报
回复
gz
Areslee
2004-03-31
打赏
举报
回复
PM就是保护模式
carehare
2004-03-31
打赏
举报
回复
sorry,忘了申明用C前memory(用作堆栈)必须可用,比如在SMP系统中把第2个CPU唤醒时可以很快切到保护模式并用C写。还有大家说的PM是什么意思?
WindWay
2004-03-31
打赏
举报
回复
水平有限,帮顶吧
Areslee
2004-03-30
打赏
举报
回复
生成什么样的代码要看是什么编译器,BC 3.1就只能生成16位代码
直接在PM中用就等着重启吧
tianxiangyuan
2004-03-30
打赏
举报
回复
to Areslee(易水) :
Linux使用的PM规则到底是什么?
carehare
2004-03-30
打赏
举报
回复
To Areslee:
内核可以用C,其实C编译后无非也是一些汇编代码,只不过要设好堆栈,还有通常生成的代码是32位的(也许用tiny可以生成16位代码?)
yqzq
2004-03-30
打赏
举报
回复
Nasm+ Tc2.0 就可以啊
ggyy2005
2004-03-30
打赏
举报
回复
up
sunny
2004-03-29
打赏
举报
回复
linux的核心的底层代码当然是汇编语言写的了!然后才是C语言写的系统周边。
在MASM中可以自己通过加上一个指令前缀来指示当前指令的读取解释方式,也可以在一个代码段中采用USER32或者USER16来表示你这个段中要求使用的读取解释方式!
其实在C中也是一样,你可以使用16位的代码对应16的汇编接口。
tianxiangyuan
2004-03-29
打赏
举报
回复
to Areslee(易水) :
照你这么说,像Linux这样的操作系统只能用汇编语言写了?
Areslee
2004-03-29
打赏
举报
回复
PM代码建议还是用汇编写吧,不然很危险的,要不也可以将段寄存器全部置为基址为0的4GB段,然后用VC写32位部分,生成汇编代码在用汇编编译器编译
zeax
2004-03-29
打赏
举报
回复
……关注,顺便UP
Areslee
2004-03-29
打赏
举报
回复
to tianxiangyuan(潇湘夜雨):
你按LINUX内核模型写的代码就符合它的规则
to carehare(carehare):
编译器编译时怎么知道你的代码在什么模式下运行呢?就算你能跳过去也同样会造成异常
所以32位内核部分一定要用汇编写,然后外围部分可以考虑用32位C编译器编
紫郢剑侠
2004-03-29
打赏
举报
回复
cmain只能采用TINY模式,不会罢?
你可以装cmain()编译在.OBJ文件,
在连接汇编语言写的代码时把这个OBJ文件一起连接进去.
carehare
2004-03-29
打赏
举报
回复
偶不懂什么叫TINY模式,不过既然已经在保护模式,C函数应该用普通的32位模式吧
如果编译不过,试试jmp,实在不行的可以jmp Address,(事先在这个Address中填入C函数地址)
或者这个_start先call个32bit的汇编寒暑,再call C函数试试
tianxiangyuan
2004-03-29
打赏
举报
回复
to Areslee(易水) :
Linux使用的PM规则是什么样的?我如何也是用这样的规则?
BuW
2004-03-29
打赏
举报
回复
看看,顺便UP!~~~~
Areslee
2004-03-29
打赏
举报
回复
LINUX有自己的编译器和文件格式,它的编译器知道它所用到的PM使用规则,但你自己的代码的规则编译器不知道,因此很可能生成引起异常的代码
tianxiangyuan
2004-03-27
打赏
举报
回复
首先感谢大家的帮助。各位大虾好像误解了我的意思。下面是代码的框架:
.MODEL TINY,C
.CODE
_start:
...
call cmain ;cmain为C语言写的函数,也是TINY模式,否则,无法调用
...
end _start
如果,我在调用cmain之前,将cpu转到保护模式下,再调用cmain函数时,就会出错。请问,这时的cmain函数该如何写?如何编译?
加载更多回复(7)
【讲师卡】Array老师讲师卡的介绍
讲师介绍 【讲师卡介绍】 权益: 年卡的高性价比,时效期内均免费听课...第一时间提供
解疑
服务,第一时间提供更新服 【服务承诺】 承诺: 第一时间优先提供
解疑
服务;第一时间优先提供更新服务;第一时间优先提供优惠服务
计算机系统
中
虚拟内存概念
解疑
(1)
c++
STM
32
SPI实验
目录 本文将按照以下几个内容介绍 SPI简介 相关寄存器 相关步骤 相关
代码
运行结果 几个注意点 SPI简介 SPI 是英语 Serial Peripheral interface 的缩写,顾名思义就是串行外围设备接口。是 Motorola 首先在其 MC68HCXX 系列处理器上定义的。SPI 接口主要应用在 EEPROM,FLASH,实时时 钟,AD
转换
器,还有数字信号处理器和数...
AIX常见问题整理
AIX常见问题整理创建时间:2002-08-17文章属性:原创文章来源:www.cnsafe.net文章提交:mayi (mayi99_at_263.net)by:ciline来自:www.cnsafe.net提纲:用feprom_update升级Firmware 2002-07-24 CHRPSystems系统启动
过程
的LEDE1DC报错提示 2002-07-24 怎样在AIX5.1
中
建立热后备
oracle
解疑
SQL&PL/SQL [Q]怎么样查询特殊字符,如通配符%与_ [A]select * from table where name like 'A_%' escape '' [Q]如何插入单引号到数据库表
中
[A]可以用ASCII码处理,其它特殊字符如&也一样,如 i
汇编语言
21,459
社区成员
41,601
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章