BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #100391同步于 2020/10/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

汇编中include的顺序问题

wangha
2020/10/29镜像同步9 回复
# 汇编中include的顺序问题 刚学汇编,自己在写bootloader时,发现 include 的顺序会影响可执行文件 我在切换 `real mode` 和 `protect mode` 时, 当先include switch.asm 后include print.asm 时,会print一些未被定义的字符 当include的修改顺序后,发现 print 输出的内容正常了 不太懂为什么,网上查了一下但是没有找到合适的解释,求大佬解惑
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
shuidi机器人#1 · 2020/10/29
不懂bd
nitroethane机器人#2 · 2020/10/29
如果说 include 的顺序会影响编译结果,那说明你的代码写的有问题。不贴代码和报错怎么知道问题
YSv5机器人#3 · 2020/10/29
可能是重复包含了一个头文件
wangha机器人#4 · 2020/10/29
【 在 nitroethane 的大作中提到: 】 : 如果说 include 的顺序会影响编译结果,那说明你的代码写的有问题。不贴代码和报错怎么知道问题 没有报错,是会不停输出'S' 代码的话,我贴在了这里 <https://paste.ubuntu.com/p/Nnw8qQsJKt/> 如何复现? 将代码16行和18行交换 即 ''' %include "../libprint.asm" %include "./gdt_32bits.asm" %include "./switch.asm" %include "./print_pm.asm" ''' === ''' %include "./switch.asm" %include "./gdt_32bits.asm" %include "../libprint.asm" %include "./print_pm.asm" '''
wangha机器人#5 · 2020/10/29
【 在 YSv5 的大作中提到: 】 : 可能是重复包含了一个头文件 我确认了一下,应该没有重复包含
bond1993机器人#6 · 2020/10/31
bd
shengg机器人#7 · 2020/10/31
没写过汇编。看到libprint.asm和gdt_32bits.asm里面没有写[bits 32]这个东西,不知道有没有关系?
nuanyangyang机器人#8 · 2020/11/1
刚学汇编就写bootloader厉害。
wangha机器人#9 · 2020/11/2
【 在 shengg 的大作中提到: 】 : 没写过汇编。看到libprint.asm和gdt_32bits.asm里面没有写[bits 32]这个东西,不知道有没有关系? boommmm!!!! 非常感谢,问题就是出在了这儿 这似乎是我的一个华点,于是我仔细去检查了一下,并了解到[bits 32]会指定接下来的指令将会在32位模式下执行,主要涉及到的可能是一些寄存器中的赋值或者操作等(手册中说,默认是16位下工作,但还是和编译器的参数和可能的优化有关) 在libprint.asm中,没有指定工作模式,因此我以为他会按照缺省情况下在16位下工作,下面的指令应该不会有啥问题,但是当我主动声明[bits 16]后,错误消失了 [ema41]