x86

解析x86与x64:架构之争、性能较量与未来趋势

在计算机体系结构领域,x86和x64是两种备受关注的架构,它们在硬件设计、内存寻址、性能表现等方面有着显著的差异。本文将深入探讨x86和x64的详细区别以及各自的优点,帮助读者更全面地理解这两种计算机体系结构。 架构概述 x86 x86架构最初设计用于Intel的16位微处理器,后来扩展到32位。它 ......
架构 性能 趋势 x86 x64

mac M2 arm 架构模拟器运行 x86 apk

设置当前的架构 arch -x86_64 zsh 安装apk adb install app-release.apk 打开应用 adb shell am start -n com.td.flutter_tv/.MainActivity ......
模拟器 架构 mac arm apk

使用汇编和反汇编引擎写一个x86任意地址hook

最简单的Hook 刚开始学的时候,用的hook都是最基础的5字节hook,也不会使用hook框架,hook流程如下: 构建一个jmp指令跳转到你的函数(函数需定义为裸函数) 保存被hook地址的至少5字节机器码,然后写入构建的jmp指令 接着在你的代码里做你想要的操作 以内联汇编的形式执行被hook ......
地址 引擎 hook x86 86

利用qemu,在x86平台下虚拟aarch64系统

利用qeum在x86架构下安装aarch64操作系统环境 准备,下载以下文件 下载qemu [quem]: https://pan.baidu.com/s/1kGxfz00-nKzGMMAIpY0SrQ?pwd=8tf1 下载efi引导 [efi]: 链接:https://pan.baidu.com ......
系统 aarch 平台 qemu x86

X86 安装 ARM虚拟机

WIN10 x86环境部署ARM虚拟机(银河麒麟)实例目录WIN10 x86环境部署ARM虚拟机(银河麒麟)实例前言部署前的准备安装安装虚拟机启动虚拟机利用shell工具连接前言在我们日常的生产以及运维中,我们经常使用到不同架构的服务器,我们经常使用的是x86架构的cpu,这样一来我们对于同样是x8 ......
X86 ARM 86

x86架构平台安装模拟arm架构系统

最近工作中需要给 ARM 架构的服务器安装 Python 的 Conda 开发环境,而且服务器不能连接外网。手动安装有些繁琐,最方便的方式是在另一台相同配置的机器上安装好,然后将环境整体打包上传到服务器。 但是我手头的电脑都是 x86 架构,在不购买云服务器的情况下,怎样才能弄一台 ARM 的机器呢 ......
架构 系统 平台 x86 arm

x86机器上运行arm64 docker

Docker Hub 上可以找到各种非 x86_64 平台的镜像,但是在x86上直接运行会报错: panic: standard_init_linux.go:175: exec user process caused “exec format error” [recovered] 在 x86_64 ......
机器 docker x86 arm 86

自制x86 Bootloader开发笔记(4)——— 编写ELF Loader

前言 我们的Bootloader目标是加载64位的ELF可执行文件,因此需要理解64位ELF文件的结构,并且支持运行ELF文件。 ELF文件结构 ELF文件的结构如下图所示: 它包含了ELF头部,一个可选的Program Header Table,多个Section和一个Section Header ......
Bootloader 笔记 Loader x86 ELF

自制x86 Bootloader开发笔记(3)——— 进入长模式

前言 本项目是基于IA32架构架构(32位Intel架构)的,而IA32架构有以下的操作模式: 实模式、保护模式、虚拟8086模式和系统管理模式。这些模式被称为 传统模式。 实模式是计算机刚启动时的模式,在实模式下可以随意访问可用的内存地址,实模式比较简单直接,但是随着操作系统的发展,实模式这种直接 ......
Bootloader 模式 笔记 x86 86

x86架构上构建arm64架构的docker镜像

需求项目需要提供arm64架构上的centos7对应docker镜像,然后本地宿主机只有x86架构机器,因此需要在x86机器上构建centos arm64架构的docker镜像 环境宿主机操作系统:centos7.7 amd64架构docker版本:19.03.15 镜像构建拉取arm64版本cen ......
架构 镜像 docker x86 arm

x86宕机日志解读1

下面以一个典型的x86服务的宕机日志为例进行解读: [330931.874444] BUG: unable to handle kernel paging request at ffffffffa22a4668 [330931.874532] PGD 3a23067 P4D 3a23067 PUD ......
日志 x86 86

gcc 为什么在arm 开发板上 就是编译的arch64 , 在虚拟机中编译的就是 x86

在开发板上,编译命令如下, 并且程序也是可以运行的。 看看原因。 所以 在板子上编译的是 aarch64 架构的。 ......
就是 arch gcc arm x86

自制x86 Bootloader开发笔记(2)——— Bootloader设计与启动区代码实现

计算机启动流程简介 要知道如何设计bootloader,需要先了解一下计算机启动的流程。具体可见引用1,这里只需要关注以下这一点即可: 系统启动后会自动将硬盘的第一个扇区(主引导记录,MBR)加载至内存0x7c00处,并检查MBR的第511和第512个字节是否为0x55和0xaa,如果是,则跳转至0 ......
Bootloader 代码 笔记 x86 86

x86平台SIMD编程入门(5):提示与技巧

1、提示与技巧 访问内存的成本非常高,一次缓存未命中可能会耗费100~300个周期。L3缓存加载需要40~50个周期,L2缓存大约需要10个周期,即使L1缓存的访问速度也明显慢于寄存器。所以要尽量保持数据结构对SIMD友好,优先选择std::vector、CAtlArray、eastl::vecto ......
技巧 平台 SIMD x86 86

x86平台SIMD编程入门(4):整型指令

1、算术指令 算术类型 函数示例 加 _mm_add_epi32、_mm256_sub_epi16 减 _mm_sub_epi32、_mm256_sub_epi16 乘 _mm_mul_epi32、_mm_mullo_epi32 除 无 水平加/减 _mm_hadd_epi16、_mm256_hsu ......
指令 平台 SIMD x86 86

x86平台SIMD编程入门(3):浮点指令

1、算术指令 算术类型 函数示例 备注 加 _mm_add_sd、_mm256_add_ps 减 _mm_sub_sd、_mm256_sub_ps 乘 _mm_mul_sd、_mm256_mul_ps 除 _mm_div_sd、_mm256_div_ps 平方根 _mm_sqrt_sd、_mm256 ......
浮点 指令 平台 SIMD x86

x86平台SIMD编程入门(2):通用指令

1、重解释转换 虽然128位的XMM寄存器在硬件上只是256位YMM寄存器的下半部分,但在C++中它们是不同的类型。有一些intrinsic函数可以将它们重新解释为不同的类型,如下表所示,行代表源类型,列代表目标类型。 __m128 __m128d __m128i __m256 __m256d __ ......
指令 平台 SIMD x86 86

x86平台SIMD编程入门(1):SIMD基础知识

1、简介 SIMD(Single Instruction, Multiple Data)是一种并行计算技术,它通过向量寄存器存储多个数据元素,并使用单条指令同时对这些数据元素进行处理,从而提高了计算效率。SIMD已被广泛应用于需要大量数据并行计算的领域,包括图像处理、视频编码、信号处理、科学计算等。 ......
SIMD 基础知识 基础 知识 平台

钡铼技术 工控机选购指南:理解X86和ARM处理器的区别

X86和ARM是两种不同的处理器架构,它们在工控机中的应用也有所不同。 X86架构的处理器是英特尔公司和AMD公司生产的,它们主要应用于个人电脑和服务器等领域。X86架构的处理器具有良好的通用性和兼容性,可以运行各种操作系统和应用软件。X86架构的处理器的性能强劲,适合处理复杂的计算任务,但也相对较 ......

ELF文件结构分析(x86 gnu版本)

为了学习使用objdump和size命令,以simple_section.c为例进行分析。 编译环境是x86 ubuntu,首先编译这个文件。 gcc -c simple_section.c 命令解释 objdump 作用:分析二进制文件的内容信息 objdump --help Usage: obj ......
版本 结构 文件 ELF x86

自制x86 BOOTLADER开发笔记(1)——— 开发环境配置

前言 数年前,出于对于操作系统内核的好奇和兴趣,看了一些自制内核资料和教程,断断续续地也写了一个简单的的玩具内核。 在学习的过程中,往往第一步遇到的问题就是内核的加载和系统的引导,发现不少教程都使用grub等现成的工具直接完成这一步骤,这样能快速的完成读取硬盘、加载内核文件、探测内存等这些dirty ......
BOOTLADER 环境 笔记 x86 86

x86多核启动代码实现

前言 对于多核CPU,开机上电后,最开始其实只有一个cpu会启动,称为bootstrap processor (BSP) ,而其他的核心则称为application processors (APs)。BSP的启动无需操心,而启动AP则需要我们自己代码实现,学习时发现少有相关的资料,也踩了一些坑,因此 ......
代码 x86 86

快速将一个x86架构的开源软件源码修改成loongarch架构的源码

将一个x86架构的开源软件源码修改成loongarch架构的源码是一个复杂的过程,需要深入了解两种架构的差异、编译工具链以及相关开发工具的使用。以下是一个大致的步骤,供您参考: 了解LoongArch架构:首先,您需要了解LoongArch架构的特点、指令集、寄存器使用方式等。可以阅读LoongAr ......
架构 源码 loongarch 软件 x86

x86开机过程(Linux0.11)

x86开机 参考于:【哈工大】操作系统 李治军、linux-0.11源码。 需要读入执行的内容有:boot扇区中的bootsect、setup和system。源文件处于启动盘中排在前面扇区: 上电时 刚开机时处于实模式。CS=0xFFFF、IP=0x0000。寻址0xFFFF0(ROM BIOS映射 ......
过程 Linux0 Linux x86 86

微处理器:80x86

目录微处理器8088/8086硬件结构寄存器段寄存器的使用80386硬件结构寄存器通用寄存器指令指针和标志寄存器控制寄存器段寄存器和段描述寄存器系统地址寄存器调试寄存器测试寄存器 微处理器 参考自:吴宁,乔亚男.微型计算机原理与接口技术(第4版)[M].北京:清华大学出版社,2016-9:38-58 ......
微处理器 80x86 80x x86 80

安装 Android x86 并开启 arm 兼容

安装 Android x86 并开启 arm 兼容 尝试了各种安卓模拟器,要么不能设置代理(BlueStacks),要么/system目录没办法设置。 获取 Android x86 这里使用的是 Android 7 版本, 在本次操作时 houdini 对 Android 8 / Android 9 ......
Android x86 arm 86

win下编译libcurl x86静态库 (附带ssl)

Visual Studio版本: 克隆libcurl项目: git clone https://github.com/curl/curl.git 添加依赖(ssl): 在拷贝的项目下添加deps目录: 在deps下创建lib和include目录: 关于编译openssl参考: https://www ......
下编 静态 libcurl win ssl

x86汇编学习

sal为算术左移,保持符号位不变。shl为逻辑左移,为无符号左移,最高位直接被次高位覆盖。对应的右移分别为sar, shr。 参考[https://blog.csdn.net/deniece1/article/details/](https://blog.csdn.net/deniece1/arti ......
x86 86

x86 Linux 下实现 10us 误差的高精度延时 | 软件开发 转载文章

在 Linux 下实现高精度延时,网上所能找到的大部分方法只能实现 50us 左右的延时精度。 https://mp.weixin.qq.com/s/H6TRsSAcQPGgX03rfsbxGQ 作者:董文会 (本文字数:4554,阅读时长大约:7 分钟) 在 Linux 下实现高精度延时,网上所能 ......
高精 误差 高精度 软件开发 文章

Proj CDeepFuzz Paper Reading: Decompiling x86 Deep Neural Network Executables

## Abstract 本文: BTD github: https://github.com/monkbai/DNN-decompiler/ Task: a decompiler for DNN models to output DNN specifications including: opera ......