In assembly, we treat NULL the same as zero, it's for clarity to let the developer know that the argument was supposed to be a pointer of some kind but it's being ignored. This comes from (afaik) early C code which referred to NULL as a "void pointer to zero" or "#define NULL ((void*)0)", however this convention didn't actually survive to be cross platform because many compiler developers felt the same way about it as assembly developers do and some compilers now define NULL as "#define NULL 0". In fact, I think that C++ now forces the NULL = 0 convention and many C++ compilers will refuse to even build the ((void*)0) variants (causing a lot of problems when cross building C and C++). Personally, I would say just treat it as 0 but only use it where pointers are expected to be used.