想法很好,意义不大。
首先,CPU硬件的视角上,根本没有汇编指令,都是一个一个微指令,对于像call/push这类指令,在CPU内部都是被打散的状态,call是push+jmp,然后再继续拆散成内存访问和寄存器修改。所以你把多个指令打包,最后到CPU里面还是要拆散的,从效率上说,没什么影响。
那么打包的意义在哪?节约汇编指令编码?现在x86的指令编码可用的空间已经很有限了,再发明一个指令,想找一个地方塞进去很困难,况且有没有用到的编码,去做点别的比如科学计算的指令不是更好吗?
ARM上能打包,是因为ARM汇编设计的时候就预留了编码空间,x86设计的时候没有预留,现在要加指令就很困难。
push ebp/push ebp,esp一共只有三个字节,而新增一条指令,多一级编码,就可能还需要额外一个字节,那么你的CALLX执行也就在每个函数调用的地方节约两个字节的长度,并且实际执行效率上没有提升,微指令没编码。所以这样做的意义不大。
况且,另外有一个问题是,ABI上要求用ebp/esp做栈帧,但这种要求不是强制的,对于那些不想用ebp/esp做栈帧的代码,你的这条指令就没什么用处了,除非你要设计一套:对任意两个寄存器做栈帧的CALLX指令,考虑到寄存器组合的话,这条指令的编码已经很大的了,要知道一条pop也就一个字节,你的新的指令要组合任意两个寄存器的话,至少需要16*16的编码空间,这就已经一个字节了,况且你不考虑点预留空间去扩展吗?
所以算下来,这样做的意义不大,x86体系已经很少去在编码上优化传统指令了,这样的优化得不偿失。
命题可能不成立。所以也就无法回答它等于多少。
为什么命题可能不成立呢?因为一个数它之所以存在,是要参与运算。
一除以零之所以没意义,是因为这个结果无法参与任何代数运算。不满足常规数学运算的规则。
假如你把一除以零命名为无穷,然而这个所谓的无穷,并不能像常规的数一样参与数学运算,它参与数学运算会导致非常多的数学公式不成立,无法纳入到现有的数字体系中。
所以,要想使它有意义,除非你能定义一个数学体系,让这个数能够在这个体系内正常参与运算,
我从小学开始就思考这个问题,到了中学,大学继续思考,工作之后也仍然思考过。然而最终发现,没有办法把这个数定义成有意义的值,因为这个值它不是自然数,不是有理数,不是实数,也不是复数,不属于已知数字范围内的任何数,这个数无法以兼容现有数学运算规则的方式参与任何运算。