1. 主页 > 产品运营

不同编程语言最终生成的机器码是否一样(汇编语言word ptr)

不同编程语言最终生成的机器码是否一样,汇编语言word ptr。这个问题金纳莱为您提供更多相关信息让你了解。

这个问题问的很好。同样的程序段在操作系统汇编语言word ptr、CPU位数、编绎设置等一致的情况下,结果是一样的。否则,最终的机器码是不相同的。

VS系列,PYTHON,一般的C语言,再编绎时,都最终生成ASM汇编语言,进而以机器码的形式,让计算机识别并最终执行(以下在32位系统下编绎)。此处,我们把a,b两个整数相加,送给整数c,在VS运行环境下,我们看一下c=a+b的机器码、汇编、VS编码的结果,如下图:

从上面可以看出,不论a,b赋值如何,a+

b一>c的代码只有三行,而且是一致的,每一个变量占据4个字节。mov eax,dword ptr [edp-4],mov eax,dword ptr [edp-8]等,标准的X86系列宏汇编语言。可以用下表查到相应的机器码。

这就说明,在同样的运行环境下a+b一>c的汇编码、机器码是一致的。

同样是32位的a+b一>c,在8位、16位等单片机机上,结果是不一样的。因为指令系统不一样。也就是说,在硬件不一致时,机器码是截然不同的。如下图为单片机的编码形式,可以看出MOV A,Rn为11 E8,而MOV A,data 则为21 E5,差异非常大。

总结:在写软件的,首先要考虑运行环境,PC机X86系列还是单片机系列,是在16位、32位还是在64位的操作系统下运行,支持动态还是静态库,支持高速运行还是优化运行等等,在编绎时都要选择好。

只有以上的选项一致了,那么同样的代码,其机器码是绝对一致的。

BYTE PTR和WORD PTR分别是什么意思

BYTE PTR 表示[DI]处一个字节,[DI]表示DI值指定的内存地址处BYTE PTR [DI],0 就是把[DI]处的一个字节填为0,如果是WORD PTR则会把那个地方的两个字节填为0。WORD PTR WORD PTR [SI] ;这是强制定义为字大小mov ds:[si],10f ;这是不允许的操作,因为si指向的空间只有8bit(1byte)大小,所以mov WPRD PTR ds:[SI],10f就是为了告诉CPU mov的源地址是2byte大小的,10f是可以存储进去的.10f需要占用9bit,而存储器内最小空间是1字节所以10f在存储器内需要占用2byte大小的内存空间

以上就是金纳莱网»汇编语言word ptr,不同编程语言最终生成的机器码是否一样的相关内容了,更多精彩请关注金纳莱号公众号。

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 203304862@qq.com

本文链接:https://jinnalai.com/yunying/43194.html

联系我们

在线咨询:点击这里给我发消息

微信号:

工作日:9:30-18:30,节假日休息