I fail to see how this thread is fundamentally different from the 1st question in your first thread:
How to extract operand size in bits of a C program? nor why you believe that changing from an addition to a multiplication should cause a different answer than what you received in post #2 in that thread??? Is there some reason why you believe the answer I provided there is wrong?
I suppose if you really wanted to you could try to write a C language parser in a shell script to look for every multiplication operation in the C and assembler source files it is asked to process and instead of producing object code emits sizes of the types of the variables or constants being multiplied. And, if what you really want is the highest bit set in the results of each of those multiplications (as in the second question in your first thread), you would not only have to produce runnable object code, but also run them with real data and have your compiler add code to that object code that would print he highest bit set after each multiplication operation found in the source files you processed with your compiler.
I won't say it is impossible to do this, but shell is certainly not the language of choice for a project like this.