Page 1 of 1

understanding function calls in assembly files

Posted: Thu Feb 13, 2014 10:57 pm
by Mohsen47
Hi everyone, I am trying to understand the code in kolibriOS and how it works to help me write my own hobby OS but sometimes I encounter calls to functions that I can't understand or find the implementation of the function for example I was reading rtl8029.asm and I saw the call PCI_Find_IO I found this function in pci.inc but inside this file I there is this stdcall PciRead32, [device.pci_bus], [device.pci_dev], esi but I couldn't find the implemetation of the function PciRead32.
How can I solve this problem and such problems in the future thank you?

Re: understanding function calls in assembly files

Posted: Thu Feb 13, 2014 11:06 pm
by hidnplayr
These functions are in kernel. They are imported into the driver (MS COFF format, or now recently, PE)
Look at the files import.inc near the drivers, and exports.inc in kernel code.

Re: understanding function calls in assembly files

Posted: Fri Feb 14, 2014 9:53 am
by Mohsen47
How are they imported into the file so they are used in it? format MS COFF defines the output format, it doesn't import them right? Also the syntax of imports.inc is hard to undertsand I cannot tell what is this file for, and I cannot find exports.inc in kernel code.

Re: understanding function calls in assembly files

Posted: Fri Feb 14, 2014 12:56 pm
by SoUrcerer
http://websvn.kolibrios.org/filedetails ... xports.inc - there it is, core/exports.inc
imports.inc is very simple, it's just an array of labels and addresses.

Re: understanding function calls in assembly files

Posted: Sat Feb 15, 2014 10:08 am
by Mohsen47
Should I search all the files in kernel directory to find this function? I searched in pci32.inc but nothing, my goal is to find the io base address and irq line of the rtl8029 network card so I can write my own driver, so please would you give me a hint on how can I find those functions so I can understand every thing? Is there a way to debug the boot process and track every thing that happens from boot until all drivers are ready, this would help understanding the boot process and how is every thing set up especially the network drivers.

Re: understanding function calls in assembly files

Posted: Sat Feb 15, 2014 1:26 pm
by hidnplayr
Mohsen47 wrote:Should I search all the files in kernel directory to find this function? I searched in pci32.inc but nothing, my goal is to find the io base address and irq line of the rtl8029 network card so I can write my own driver, so please would you give me a hint on how can I find those functions so I can understand every thing? Is there a way to debug the boot process and track every thing that happens from boot until all drivers are ready, this would help understanding the boot process and how is every thing set up especially the network drivers.
If you actually look at the files I pointed you to, you'll see that the name of the function in kernel is not always the same as the name that is used in the driver.
In exports.inc, you'll find the line

Code: Select all

pci_read32,            'PciRead32',          \      ; stdcall
The function in kernel is thus called 'pci_read32'.
Now you can use a tool to search inside the contents of the file (windows search even can do this for you...)
You will find 3 files now exports.inc, dll.inc and apic.inc. We know it's not in exports.inc