grub4dos icon indicating copy to clipboard operation
grub4dos copied to clipboard

grub4efi - call Fn.42 function not compatible with grub4dos

Open steve6375 opened this issue 4 years ago • 2 comments

Originally old grub4dos had Fn.42 params as [start] [offset] [length] but then grub4dos 0.4.6a changed params to [displayaddLow] [displayaddHi] [start] [length]

Here is grub4dos 0.4.6a example image

grub4efi still uses old version of Fn.42

Please can you update Fn.42 in grub4efi to be compatible with grub4dos 0.4.6a.

steve6375 avatar Sep 15 '21 10:09 steve6375

call Fn.42 的原型是 void hexdump(grub_u64_t ofs,char* buf,int len);

在32位系统,call Fn.42 的第一个参数 ofs 是64位,因此需要占用 2 个位置,也就是 [OfsLow] [OfsHi]。 在64位系统,call Fn.42 的第一个参数 ofs 是64位,因此只需要占用 1 个位置,也就是 [Ofs] 。

这一点需要格外注意。在 64 位系统,call Fn.nn 后面的参数都是64位的(当然32位包含在内)。

好在使用 grub_u64_t 定义的参数不多,都是有关内存的。

yaya2007 avatar Sep 16 '21 02:09 yaya2007

在64位系统,call Fn.42 的第一个参数 ofs 是64位,因此只需要占用 1 个位置,也就是 [Ofs] 。

It only NEEDS to occupy 1 position, but it is not compatible

How do you suggest I write a .bat file which will display memory locations using Fn.42 function calls which will work on all versions of grub4dos and grub4efi (32 and 64)?

e.g. displaysectors.bat

steve6375 avatar Sep 16 '21 07:09 steve6375