About cuobjdump and nvdisasm output

/*0000*/ IMAD.MOV.U32 R1, RZ, RZ, c[0x0][0x28] ; /* 0x00000a00ff017624 */

Could you tell me what’s the meaning of the first column /*0000*/ ?

That is the instruction offset / relative address of that instruction. Generally, instructions are eight bytes in length. The 16 hex digits in the right-most column show the instruction encoding.

For most GPU architectures, you will notice missing addresses. That is where the op-steering and control-flow information is stored that is interspersed with the instructions. This information is not publicly documented, but various people have reverse engineered at least parts of it so they can write SASS-level assemblers.

From memory: For Volta and Ampere, this information follows after every instruction. For Maxwell and Pascal, this information follows a group of three instructions. For Kepler it follows a group of seven instructions.

1 Like

Thank you so much!

Does cuobjdump or nvdisasm contain the offset of the kernel start address to the whole cubin file?

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.