电脑机器码怎么改,电脑开挂机器码封了怎么解决

因为我的电脑是x64的CPU,所以暂时scf编译器框架也只有x64的机器码生成。

最近学了下qemu虚拟机,安装了arm64的ubuntu 18.04,准备年后给scf加上arm64的机器码生成。

ARM是现在使用最多的RISC架构的CPU,在移动设备中使用很广泛,但PC机上几乎没有使用的。

所以,在PC机上的C代码编译成了ARM的机器指令之后,还要传到ARM的板子上去跑,这就是交叉编译。

arm机器码的调试还是比较麻烦的,因为要在两个机器码不通用的机器上来回传文件。

然后就有大牛做了一套虚拟机,就是qemu。

安装了qemu虚拟机,我准备给scf加上arm64的机器码生成

法布里斯-贝拉,ffmpeg和qemu之父

qemu的作者叫法布里斯-贝拉,是法国的一个程序员,他同时也是音视频框架ffmpeg的作者。

ffmpeg应该都不陌生,撑起了整个多媒体行业!

现在看到的各种直播、短视频、美颜的背后,都离不开ffmpeg。

就跟Linux之父同时还做了代码管理工具git一样,ffmpeg之父也做了虚拟机qemu。

qemu的出现,为底层技术的开发者们提供了巨大的方便!

不用找硬件了,也不用在两台机器上来回传代码了,直接安装个虚拟机就行了[呲牙]

只要下载个arm64版的ubuntu 18.04,我就可以在x64的电脑上编写arm64的机器码生成模块了。

arm64的学名叫aarch64,就是arm的arch64的缩写。

arch,在底层的软硬件里一般都是指的机器平台。

它(64位的arm)与C语言的接口ABI就是arm-v8。

32位的arm与C语言的接口ABI是arm-v7,这个版本的前几年使用率非常高,现在应该没多少arm-v7的机器了。

在我看来,即使在移动嵌入式领域,32位CPU的时代也过去了。

在scf编译器框架里,我准备不支持任何架构的32位机器码了,只支持64位的。

安装了qemu虚拟机,我准备给scf加上arm64的机器码生成

arm64的hello world的ELF文件头

上图是arm64上的hello world的ELF头,可以看到Machine这项的名字是AArch64,其他内容跟x64的差不多。

当然ELF文件里的机器码是不一样的。

arm64的机器码是这样的:

安装了qemu虚拟机,我准备给scf加上arm64的机器码生成

arm64的hello world的机器码

arm的所有型号的CPU都是RISC架构,它的每条指令都是4个字节。

不像x64,每条指令的长度是不固定的:少的1个字节,多的很多字节。

安装了qemu虚拟机,我准备给scf加上arm64的机器码生成

x64的hello world的机器码

从语法分析的角度来看,arm的指令要比x64的简单很多。

每4字节就是1条指令,这32位里的每一位表示什么,就按照什么执行就行了。

但是x64的不可以,不分析完整条指令的语法,就不知道它多少字节。

x64使用可变的字节数来编码指令,一般来说,最终文件的大小比arm有优势。

在内存和硬盘特别小的上古IT时代,这种编码方式有节省空间的优势[捂脸]

现在,intel节省的那点内存空间,还不够给软件作者添麻烦的。

所以,指令长度不固定的CISC架构,也是个历史遗留问题。

arm的寄存器和指令没有互相绑定的问题,例如intel的乘法指令只能使用EAX和EDX,让生成机器指令的时候还得现腾出这俩寄存器来。

arm的寄存器和指令没有耦合度,机器码生成模块写起来比intel的要简单。

春节之后,把它加上。

本文地址:https://www.cknow.cn/archives/27579

以上内容源自互联网,由百科助手整理汇总,其目的在于收集传播生活技巧,行业技能,本网站不对其真实性、可靠性承担任何法律责任。特此声明!

如发现本站文章存在版权问题,烦请提供版权疑问、侵权链接、联系方式等信息发邮件至candieraddenipc92@gmail.com,我们将及时沟通与处理。