当前位置: 首页 > news >正文

建设家具网站的目的及功能定位下载什么软件可以做动漫视频网站

建设家具网站的目的及功能定位,下载什么软件可以做动漫视频网站,wordpress手机版如何设置密码,最受欢迎的建站平台QEMU的两种模式 QEMU#xff08;快速模拟器#xff09;是一个开源的机器模拟器和虚拟化器#xff0c;它能够模拟多种处理器架构#xff0c;并且可以在不同平台上运行。QEMU 支持两种模式#xff1a;用户模式和系统模式。 用户模式#xff08;User Mode#xff09;快速模拟器是一个开源的机器模拟器和虚拟化器它能够模拟多种处理器架构并且可以在不同平台上运行。QEMU 支持两种模式用户模式和系统模式。 用户模式User Mode 用户模式下的 QEMU 仅模拟用户空间的二进制执行环境不模拟底层硬件。这种模式下QEMU 可以运行不同架构编译的二进制程序而不需要这些程序与宿主机的架构相匹配。用户模式通常用于测试和运行不同架构的应用程序或者在不支持特定硬件架构的系统上运行程序。用户模式不需要硬件虚拟化支持因为它不模拟硬件。系统模式System Mode 系统模式下的 QEMU 模拟整个计算机系统包括 CPU、内存、硬盘、网络接口等硬件设备。这种模式下QEMU 可以运行完整的操作系统镜像允许用户安装和运行完整的操作系统。系统模式需要更多的资源并且可能需要硬件虚拟化支持以提高性能和安全性。系统模式允许用户进行更全面的测试包括操作系统级别的测试和硬件兼容性测试。在系统模式下QEMU 还可以使用不同的后端来提高性能例如使用 KVMKernel-based Virtual Machine在 Linux 系统上进行硬件辅助虚拟化。KVM 可以将 QEMU 转换为一个全功能的虚拟机监控器提供接近原生硬件的性能。 要启动 QEMU 并使用用户模式或系统模式你需要使用不同的命令行参数。例如 用户模式qemu-arch -cpu cpu-type -L path-to-libraries program-to-run 系统模式qemu-system-arch -m memory-size -hda disk-image 其中 arch 是你想要模拟的架构比如aarch64cpu-type 是特定的 CPU 类型path-to-libraries 是库文件的路径program-to-run 是你想要运行的程序memory-size 是分配给虚拟机的内存大小disk-image 是虚拟硬盘镜像的路径。 QEMU 是一个非常灵活的工具可以根据需要进行配置和扩展以满足不同的模拟和虚拟化需求。 用户模式的安装 简单的执行如下命令就可以安装用户模式 sudo apt-get update sudo apt-get install qemu-user qemu-user-static gdb-multiarch build-essential gcc-aarch64-linux-gnu 用户模式C程序的测试 编写一个简单的C程序 #include stdio.hint main(void) { return printf(Hello AARCH64!\n); } 使用aarch64的编译器进行静态的交叉编译 aarch64-linux-gnu-gcc -static -o hello64 hello.c 编译后使用file命令确认一下编译产生的事aarch64架构文件。  developerecs-cloud-host-ubuntu-img-make:~$ file hello64 hello64: ELF 64-bit LSB executable, ARM aarch64, version 1 (GNU/Linux), statically linked, BuildID[sha1]c6209c6d4f0f2ec56fc1e9fe2443c34009ad60d5, for GNU/Linux 3.7.0, not stripped如果没有安装QEMU用户模式程序直接运行该程序会报告错误 bash: ./hello64: cannot execute binary file: Exec format error 安装了QEMU用户模式之后直接运行程序就可以得到正确的输出了。这是因为系统内有qemu-user-static它支持了其他架构程序的直接运行。 developerecs-cloud-host-ubuntu-img-make:~$ ./hello64 Hello AARCH64!也可以不使用static编译比如 aarch64-linux-gnu-gcc -o hello64dyn hello.c不过不能直接运行hello64dyn这个程序会报告错误 developerecs-cloud-host-ubuntu-img-make:~$ ./hello64dyn aarch64-binfmt-P: Could not open /lib/ld-linux-aarch64.so.1: No such file or directory这是需要使用qemu-user了 developerecs-cloud-host-ubuntu-img-make:~$ qemu-aarch64 -L /usr/aarch64-linux-gnu ./hello64dyn Hello AARCH64!用户模式汇编程序的测试调用C库 准备一个简单的汇编程序hello.S .section .text.global mainmain: // Call puts and return stp fp, lr, [sp, #0x10]!mov fp, spadr x0, msgbl putsmov w0, wzrldp fp, lr, [sp], #0x10retmsg:.asciz Hello Again!.align 2 这个程序里面调用了C语言的puts函数。 前两条指令是所谓的序言SP 寄存器被调整以便在可能的中断情况下保存数据以便使用 puts 函数。 adr 指令将 x0 设置为字符串所在位置的内存地址。 bl puts 调用 puts 函数。它是一个 C 库函数它将文本输出到控制台/终端。或者可以使用 printf 代替。之所以使用 puts是因为它对 CPU 来说更快因为它不能接受所谓的字符串中的格式描述符。此外puts 函数在控制台上自动加入换行。注意我们没有在 Hello Again 字符串中包含 \n。 mov w0, wzr 指令是给 CPU 一个零值它将在退出程序时使用。稍后CPU 将调用 C/C 退出函数来退出程序。每当你编写任何 .Smain:类型的源文件时最终的 ret 指令将使 CPU 结束程序并调用 C/C 退出函数。在 ret 指令之前w0 应该总是设置为 0。 最后两条指令是所谓的尾声。基本上是序言的相反。 直接使用下面的语句去编译C语言的编译器会自动处理汇编代码并进行库链接。 aarch64-linux-gnu-gcc -o hello hello.S运行程序的方法和前面类似 developerecs-cloud-host-ubuntu-img-make:~$ qemu-aarch64 -L /usr/aarch64-linux-gnu ./hello Hello Again!用户模式汇编程序的测试调用系统调用 我们也可以不使用C语言函数直接使用QEMU模拟的系统调用。这和系统模式所模拟的裸机编程有所不同系统模式是不提供任何系统调用的你必须自己写串口输出代码或者使用编译好的BIOS文件。 下面是汇编代码 .section .text.global _start_start: // syscall write(int fd, const void *buf, size_t count)mov x0, #1 adr x1, msgmov x2, lenmov w8, #64 /*Syscall number for write for ARM64*/svc #0// syscall exit(int status)mov x0, #0mov w8, #93 /*Syscall number for exit for ARM64*/svc #0msg:.asciz Hello World!\nlen . - msg QEMU 模拟所谓的系统调用。这些系统调用旨在模拟具有内置基本任务功能的计算机 BIOS。可以在程序中使用 svc 指令调用。在真正的硬件中svc 指令将进入一个异常处理程序。在这个程序中有代码已经由程序早期编写来处理 svc 的使用。 在 QEMU 中这是完全不同的。你的程序在异常处理程序中写了什么并不重要。QEMU 将执行 svc 来模拟一个已经编写了某些指令的计算机 BIOS。简而言之那里的例程在计算机 BIOS 中是通用的。因此该例程接受某些参数以产生结果。你可以看出这是情况因为在上述文件中我们没有编写任何指令到任何异常处理程序。模拟系统调用的不好之处在于我们不能实际看到和调试 svc 异常。好的是我们可以使用这些模拟器系统调用来执行基本任务。比如打印文本到控制台终端修改文件等。 系统调用 Write 会在控制台终端上打印消息。系统调用 Exit 退出程序。 有许多系统调用每个系统调用都需要参数。在系统调用被“调用”通过 svc 指令之前必须将正确的值放在正确的寄存器中。这种将正确的参数放在正确的寄存器中的概念被称为 ARM64 的调用约定。 代码中一些变量的解释 adr 设置 msg 标签所在位置的内存地址。msg: 是源文件中 Hello World 字符串所在的标签。字符串中的 \n 部分是你在控制台/终端输入新行时需要输入的。len . - msg 这是用于计算字符串大小的汇编器指令。点.在这里代表这里。所以 这里 减去 msg 将设置字符串的字节量。 要运行程序需要将其汇编成一个目标文件。然后使用链接器制作一个可执行文件。这可以通过以下两个终端命令完成.. aarch64-linux-gnu-as hello_world.s -o hello_world.o aarch64-linux-gnu-ld hello_world.o -o hello_world 所以我们现在有一个可执行文件。我们可以用 QEMU 启动它 qemu-aarch64 ./hello_world 得到如下输出 developerecs-cloud-host-ubuntu-img-make:~$ qemu-aarch64 ./hello_world Hello World!因为安装了qemu-user-static直接运行程序也是可以的。  参考文献 Assembler, QEMU, GDBRunning Arm Binaries on x86 with QEMU-User | Azeria Labs
http://www.hkea.cn/news/14419983/

相关文章:

  • 在线搭建网站深圳品牌策划vi设计
  • 网站一跳率如何制作单页网站
  • 可信网站注册网站制作合同范本
  • 免费注册网站软件WordPress最强大的主题
  • 商城网站带宽控制玉林做网站公司
  • 在线做头像网站有哪些个人网站备案简介
  • it外包方式包括重庆网站seo昔年优化
  • 龙岗中心城有学网站建设网站建设与管理领导小组
  • 个人网站模板怎么用试用网站cms
  • 做网站哪些做网站开发需要考什么证书
  • 人防工程做资料的网站做网站服务器可以挂到外地么
  • 成都建立网站的公司建设免费网站模板
  • 网站制作与维护公司网站基本建设投资内容
  • 湖北响应式网站建设企业wordpress应用教程 pdf
  • 用手机可以做网站吗wordpress 去掉w
  • 华为商城网站设计分析小锋云主机
  • 企业网站模板公司园林景观设计公司纳税义务的发生时间的确定
  • 家居设计网站推荐建设大马路小学网站
  • 蓬莱网站建设哪家专业wordpress改模版
  • 网站开发公司经营范围奇客影院wordpress
  • 深圳恒诚信企业管理有限公司临沂seo代理商
  • 邢台公司做网站wordpress表单附件上传图片
  • 请问门户网站是什么意思电商设计年终总结
  • ps素材网站大全莱芜吧诚意带大家修车
  • wordpress view插件陕西seo推广
  • 公司网站怎么管理seo伪原创工具
  • 做餐饮系统网站建设国外网站流量查询
  • 枣庄手机网站制作德国网站的后缀名
  • 梁山城乡建设局网站找资源
  • 计算机网站开发项目怎么选择一个好的友情链接网站