3个回答
展开全部
1.汇编不伏燃用遵循调用规则,即一个子程序可以不返回,多线程技术属于从一个函数无返回跳转到另一个无关的函数,这种技术C的规则是做不到的,所以多线程技术的底层代码,即跳转必须用汇编实现,汇编完成的工作有保存当前线程现场,然后跳转到令一个函数恢复到程序之前的现场。。。。
2. 汇编可以在不设定栈指针的情况下运行,这些C语言以及更高级语言都做不到,因为入栈是C语言的基本操作,你声明一个自动变量,就意味着一次入栈,在没有定位栈指针的情况下,C语言这种操作意味着程序崩溃。缺迟虚。。
3. C语言不能直接访问CPU工作寄存器,C语言操作东西必须寻址,而CPU工作寄存器没有地址,也就意味着单纯的C代码做不到这个目标,因为C语言的工作寄存器使用规则是编译器安排的,与编程员无关,如果想用只能用汇编指令实现。。
4. 中断跳转相关的,中断属于严重违背C语言规则的执行方式,必须汇编来保护C语言环境不被破坏。。。
说白了就是C不能做的,汇编都可以做,因为汇编旦缺直接对应机器码,没有优化黑科技,程序最终到机器码的方式是100%受制于人,而不是编译器。。。
汇编缺点就不说了,如果能用C的地方,一般是不会考虑汇编的,连出入栈这种基本操作都亲历亲行,显然不是一种好的编程方式,因为这种代码写的越多错的越多,写的又慢又易错。。。
2. 汇编可以在不设定栈指针的情况下运行,这些C语言以及更高级语言都做不到,因为入栈是C语言的基本操作,你声明一个自动变量,就意味着一次入栈,在没有定位栈指针的情况下,C语言这种操作意味着程序崩溃。缺迟虚。。
3. C语言不能直接访问CPU工作寄存器,C语言操作东西必须寻址,而CPU工作寄存器没有地址,也就意味着单纯的C代码做不到这个目标,因为C语言的工作寄存器使用规则是编译器安排的,与编程员无关,如果想用只能用汇编指令实现。。
4. 中断跳转相关的,中断属于严重违背C语言规则的执行方式,必须汇编来保护C语言环境不被破坏。。。
说白了就是C不能做的,汇编都可以做,因为汇编旦缺直接对应机器码,没有优化黑科技,程序最终到机器码的方式是100%受制于人,而不是编译器。。。
汇编缺点就不说了,如果能用C的地方,一般是不会考虑汇编的,连出入栈这种基本操作都亲历亲行,显然不是一种好的编程方式,因为这种代码写的越多错的越多,写的又慢又易错。。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询