我似乎无法让调试工作在bochs上进行。我是用macport安装的。具体来说,当我启动bochs时,命令行就不会出现。
我很确定我在安装它时包含了调试变体;但是,我想我可能会错误地输入它。
当我运行port installed bochs时,我得到了这个
$ port installed bochs
The following ports are currently installed:
bochs @2.6.8_1+avx+sdl2+smp+term (active)
这似乎表明没有安装调试变体;但是,当我尝试添加调试变量时,响应表明不需要进行任何操作:
$ sudo port upgr
Prototype mismatch: sub main::SIGVTALRM () vs none at /home/abhijay/pintos-os/pintos/src/utils/pintos line 934.
Constant subroutine SIGVTALRM redefined at /home/abhijay/pintos-os/pintos/src/utils/pintos line 926.
warning: can't find squish-pty, so terminal input will fail
bochs -q
==============
我正在做一个叫做pintos的操作系统编程项目。它在boch上运行,命令是pintos run nameOfProcess
下面是我得到的错误信息
Writing command line to /tmp/eKW3NMXoGT.dsk...
squish-pty bochs -q
========================================================================
Bochs x86 Emulator 2.5.1.svn
Built from SVN snapshot
我在Linux上使用Bochs。它工作得很好,但有一个问题我还没有设法解决。我得到vga-信息(可用模式,线性帧缓冲器(LFB)地址),然后切换到1024*768*24在真实模式。根据vga模式118 h (1024*768*24)支持,而LFB是从E 000:0000(即E0000由于段:偏移,或0xE 00000在平面寻址,但该内存不存在,因为它几乎是3.5Gb)。稍后,我切换到保护模式(PM)并将数据写入E0000,但没有出现像素。如果我写信给0xE0000000,也不会。但是,如果我写到A0000,它们就会这样做,但是只映射了一个0000-C0000内存(128 is )。我想使用PM
我目前正在尝试用bochs编译并运行一个简单的引导加载程序。目前,这是我的bootloader.asm文件:
[BITS 16]
[ORG 0x7C00] ;Where the code gets mapped
top:
jmp top ;Loop forever
times 510-($-$$) db 0 ;Pad with 0
dw 0xAA55 ;Bootloader signature (backwards)
;; dw declares a word (2 bytes because we’re 16 bits)
然后,在我的pragmalinux img目录中输入以
我可以和别人一起组装
section my_main vstart=0
但是,bochs模拟器声称没有可引导的磁盘。
jmp $
times 510-($-$$) db 0
db 0x55
db 0xaa
没有它,bochs什么都没有。
section my_main vstart=0
here:
%include 'main.s'
times 1474560 - ($-$$) db 0
如何将标签“这里”从512更改为0?
这是我的MBR代码:
config/boot.asm:
%ifndef BOOT_H
%define BOOT_H
; Kernel loader address.
LOADER_BASE_ADDR: equ 0x900
; The logical sector address of the kernel loader on the disk.
LOADER_START_SECTOR: equ 0x2
; The number of sectors occupied by the kernel loader.
LOADER_SECTORS: equ 4
%endif
mbr.asm:
se