C语言中有位运算的功能,能够控制二进制位,既然这样,为什么还要用汇编呢。C的运算不能代替汇编吗?如果不能请详细说明理由,如果能,那请说明为什么现在还有程序用汇编写而不用C位运算写?
------解决方案--------------------------------------------------------
我感觉一般的C语言编译器可能90%以上的汇编指令根本就没有用。我看过一些C语言编译后的汇编代码,有些操作明明可以用一条汇编指令直接完成,但这个编译器却将这个操作拆成好几条汇编指令。所以我感觉用高级语言编译出来的东西有非常多的无用的操作。另外汇编里的位运算相当多,C里面只有那么几种,而且汇编不是只有位运算。
------解决方案--------------------------------------------------------
你认为汇编只是对二进制操作有优势!?
使用汇编的话能充分使用CPU
例如SSE MMX 指令等,C的编译器是不会使用这些指令的
------解决方案--------------------------------------------------------
你用C去修改其他内存的代码、HOOK试试,C显然就比汇编麻烦。
------解决方案--------------------------------------------------------
C无法得到任意函数地址,也就是C无法直接读取fs寄存器值从而无法定位TEB中得到kernel32.dll基址,而这个是在通用shellcode中非常有用的东西