General Category > Sol_Asm
jump short
(1/1)
kaisermtv:
Hello sir Bogdan.
I'm having trouble with my bootloader code.
The code size after the build exceeds 512 bytes.
You can optimize jump functions in 16bit mode
--- Code: ---je label ; 4byte "0F 84 XX XX"
je short label ; 2byte "74 XX"
--- End code ---
--- Code: ---jmp label ; 3byte "E9 XX XX"
jmp short label ; 2 byte "EB XX"
--- End code ---
If you can provide or add the following functions in 16bit mode
--- Code: ---ljmp segment:offset ; jmp segment:offset
mov {reg},[es:{reg}] ; mov ax,[es:di]
mov {reg},[ss:{reg}] ; mov ax,[ss:di]
cmpsb
--- End code ---
bogdanontanu:
--- Quote from: kaisermtv on June 08, 2018, 09:21:23 PM ---Hello sir Bogdan.
I'm having trouble with my bootloader code.
The code size after the build exceeds 512 bytes.
You can optimize jump functions in 16bit mode
--- Code: ---je label ; 4byte "0F 84 XX XX"
je short label ; 2byte "74 XX"
--- End code ---
--- Code: ---jmp label ; 3byte "E9 XX XX"
jmp short label ; 2 byte "EB XX"
--- End code ---
If you can provide or add the following functions in 16bit mode
--- Code: ---ljmp segment:offset ; jmp segment:offset
mov {reg},[es:{reg}] ; mov ax,[es:di]
mov {reg},[ss:{reg}] ; mov ax,[ss:di]
cmpsb
--- End code ---
--- End quote ---
Hi kaiser,
Thanks for checking this,
I will check it out and see if I can improve the size of the 16 bits encodings.
I will also add the missing long jump and cmpsb instructions.
Meanwhile
I also have bootloader code in Solar_OS (same 512 bytes) and I have managed to fit the code in there.
However I did not try to add all the code in there.
The general advice here is to simply load a 2nd stage boot loader code with a bigger size.
For example in my boot loader I load 24 sectors for 12Kilo bytes right after the boot loader.
And then I jump to that code ;)
This way I avoid trying to stuff all the boot loader code in the first 512 bytes
kaisermtv:
I want to make a partition for the floppy. This makes it easier for me to manage files and code.
So the task of bootload (512 bytes) is to load a file "BOOT" up to start phase 2
bogdanontanu:
--- Quote from: kaisermtv on June 20, 2018, 11:36:58 AM ---I want to make a partition for the floppy. This makes it easier for me to manage files and code.
So the task of bootload (512 bytes) is to load a file "BOOT" up to start phase 2
--- End quote ---
Hi keiser,
A partition for the floppy is kind of unusual. You can have files on a floppy. But usually there is no partition on a floppy.
A HDD does have a partition table and one or more partitions.
It is OK to arrange your files like that.
However it might be a task that is too complicated for the first 512 bytes.
I guess that it can be done for FAT12, maybe even for FAT32. I doubt it can be done for NTFS.
Anyway it will be complicated and cumbersome to try and fit a real filesystem read in 512 bytes :D
I still think it is better to read some stage 2 code in and then let that stage 2 code implement a filesystem and read files from boot floppy or boot HDD if you want to.
Just my personal opinion of course ;)
You are free to try. I have heard that some people have succeed in doing this.
However I personally would not do it.
It is IMHO too complicated to fit good (bug free) filesystem reading code in just 512 bytes or less ;)
Navigation
[0] Message Index
Go to full version