so i wonder where in source code of seabios calculate PCI BAR address?
src/fw/pciinit.c initializes all pci devices and assigns addresses to the bars. bars are sorted by size for best packing, so the addresses they end up depends on the size and also which other devices are present.
and also, i wonder why qemu's vga pci bar address is different from virtualbox's vga pci bar address though both of devices are classified as same 'vga' device(class id number : 0x30)
There is no need for it to have a fixed address.
(in Virtualbox, VGA PIC BAR ADDRESS always starts from e0000000 and it is VBE standard)
I doubt it is VBE standard.