使用函数多版本控制在一个二进制文件中支持多种 CPU 架构
近期我在开发 Video2X 的时候为了程序在支持 AVX2 和 AVX-512 的 CPU 上能完全发挥出扩展指令集的性能,同时又能够保持对不支持这些扩展的 CPU 的支持,研究了一下如何将一个函数多个架构的版本同时编译进可执行文件中,并且在运行时根据 CPU 支持的扩展动态选择应该调用的函数。我将在这篇文章中讲述如何在 GCC 和 LLVM 中用多版本控制来达成在程序运行时自动选择最佳的函数实现。
近期我在开发 Video2X 的时候为了程序在支持 AVX2 和 AVX-512 的 CPU 上能完全发挥出扩展指令集的性能,同时又能够保持对不支持这些扩展的 CPU 的支持,研究了一下如何将一个函数多个架构的版本同时编译进可执行文件中,并且在运行时根据 CPU 支持的扩展动态选择应该调用的函数。我将在这篇文章中讲述如何在 GCC 和 LLVM 中用多版本控制来达成在程序运行时自动选择最佳的函数实现。
I have recently ran into issues trying to rename Firefox’s profile path for synchronization and automation purposes. In this article I’m going to show you how to make it work.
最近在用绝区零学习技术,虽然看反汇编和调试的时间比玩游戏的要长的多,但是多少还是玩了点游戏的,这算是我接触的第一款氪金抽卡游戏,也算是体验了一下这种类型的游戏,想通过绝区零简单聊聊服务型氪金抽卡游戏
B 站不做人的产品经理最近下线了悄悄关注功能,本教程将简述如何用 Burp Suite 篡改请求来继续悄悄关注新的 UP 主。
最新的网易云客户端都需要自签证书才能被 UnblockNeteaseMusic 代理了,这篇文章就来讲讲怎么为 UnblockNeteaseMusic 的 Docker 服务生成自己的证书而不是使用开发者签发的证书和 CA。
SIGNALIS 是一款风格十分独特而设计精良的游戏。其对于游戏美学出类拔萃的理解和运用造就了其从多方位上呈现的惊艳游戏体验。在这篇文章中我们就来聊聊 SIGNALIS 和它的游戏美学。
The new generation of AI-powered automation might completely redefine how most works are done. Will this be a blessing or a curse for humanity? What will be the fate of humanity?
虽然 fcitx5-configtool 内可以为 fcitx5-pinyin 导入搜狗词库,但它并不能批量导入词库,因而特此写一篇教程记录下我研究出的批量导入搜狗词库的方案。 批量下载词库 批量下载词库的方法多种多样,在此我以 搜狗词库爬虫 (Sougou_dict_spider) 为例,批量下载所有词典。 批量转换为 libime dict 接下来将所有需要转换的词典收集到同一个目录下方便操作,下面的这条目录复制了所有官方推荐的词典到 recommended 目录下。命令中还用 -not 参数排除了几个不需要的类别。 1 find . -type f -iname '*官方推荐*.scel' -not -path "./436/*" -not -path "./403/*" -exec cp {} ~/sogou/recommended/ \; 接下来我们需要使用 fcitx5-chinese-addons 包提供的 scel2org5 命令将 scel 文件转成文本格式,再用 libime 提供的 libime_pinyindict 命令将 .txt 文本转换为 libime 可以识别的 .dict 格式。下面这个脚本可以批量转换当前目录下的所有 .scel 文件并将转换完的文件输出到 dict/ 子目录中。 1 2 3 4 5 6 7 8 9 10 #!/usr/bin/python # -*- coding: utf-8 -*- import pathlib import subprocess for file in pathlib....
Roses are blue, violets are red. We have entered the era of misinformation. What is it, and what should we do about it? This blog post may help you get a better understanding of misinformation.
This article will introduce a relatively new way to perform automatic certificate renewal with systemd timers instead of traditional ways such as crontab.
Asynchronous copy-paste can be helpful in a handful of situations. I’ll show you how to add async copy-paste functionality into Zsh in this post.
旧系统在重装之前备份到了 dd 镜像,而重装完了之后发现有些文件遗忘在了原先的 EFI 分区。我将在这篇 post 中简单讲述我是怎么将 dd 镜像里的分区挂载到系统并且取回文件的。
在本文中我将展示如何用 Cheat Engine 给 Cyberpunk 2077 写一个非常简单用注入的方法实现的的无限子弹外挂。
This post walk though how I pwned the machine “Unbalanced” on Hack The Box.
ISC BIND sends immediate and authoritative NXDOMAIN responses to recursive lookups of LAN addresses by default. This prevents recursive lookup servers from sending meaningless requests to other DNS servers on the Internet. This tutorial will cover how recursive reverse lookups of LAN addresses can be enabled in BIND for lab environments and other special cases.
其实 VMware 自带的 DHCP 服务器就是随处可见的 ISC DHCP 服务器(dhcpd)。每个 VMware 接口都有一份 dhcpd 配置,并且用户可以像配置普通 dhcpd 一样编写这些配置来自定义 dhcpd 的行为。在此篇教程中我将记述如何通过更改该 VMware 的 DHCP 配置文件来手动分配访客网卡的 IP 地址。
本篇文章将会介绍一些我目前使用的安全、隐私和实用相关的 Firefox 扩展。
当用户使用非标准窗口尺寸的浏览器进行网页浏览时,浏览器的独特尺寸可以让网站有效追踪用户身份,即使用户已经禁用了 JavaScript 和 Cookie 等传统身份追踪(Fingerprinting)手段的媒介。这篇文章将教您如何在 Firefox 中启用 Letterboxing 功能来预防此种身份追踪手段。
本篇文章将介绍 Ontario 主流的现役警车,其参数,其卧底(unmarked)版本外观以及识别方法。
在给虚拟机分配磁盘时,为了不让分配的磁盘立马占用大量宿主机空间,可以使用精简分配(thin provisioning)。虚拟机的磁盘文件大小会随着磁盘中内容的增多而增加,但是却不会随着文件的删除而减少。这篇文章将介绍如何把虚拟机精简分配的磁盘空闲的空间返还给宿主机。
LLMNR 和 NetBIOS 都可以解析本地其它设备的名称解析请求,但是都不验证其回复合法性。这两个服务容易被利用进行 MITM 攻击。此篇文章将会讲解如何在 Linux 和 Windows 系统上关闭 LLMNR 和 NetBIOS。
Proxmox 安装默认会占用整个磁盘,并且无法像 Ubuntu 等发行版一样在安装时调整各 LVM 的容量。此篇文章将会讲述如何调整 Proxmox LVM 的容量。
作为安全研究人员,有时需要编译一些完全不安全的二进制文件用来研究缓冲区溢出等漏洞。最新的 GCC 在编译是会默认加上许多安全功能来防止安全漏洞的出现,而为了触发漏洞我们必须关闭这些安全功能。这篇文章将讲述如何编译并运行不安全的 GCC 编译二进制。
如果在安装 ESXi 的时候提示找不到网卡,这篇笔记可能会有帮助。
AnyConnect 在 Linux 上的安装并不是很方便,这篇文章将会介绍如何在 Linux 上安装以及配置 AnyConnect,以及一些常见问题的解决方法。 安装 AnyConnect 您可以从任意源下载并安装 AnyConnect,以 root 权限执行压缩包中的 vpn_install 可执行程序即可安装 AnyConnect。 解决证书错误问题 出于某些原因,AnyConnect 的默认 CA 证书库完全无法使用,所以我们用 Linux 自带的 CA 证书库来代替 AnyConnect 的证书库。 1 2 sudo mv /opt/.cisco/certificates/ca ca.backup # 备份证书库 sudo ln -sf /etc/ssl/certs/ /opt/.cisco/certificates/ca # 将系统证书库软链接到 AnyConnect 导入用户证书 Linux 上的 AnyConnect 无法读取 PKCS12 或 P12 证书,并且 Linux 也没有证书库,所以我们需要将私钥和公钥从 P12 证书中提取出来并放置在 AnyConnect 目录下。注意公钥和私钥名称必须相同, 如果公钥名称是 user.pem,那么私钥名称必须是 user.key。 从 PKCS12 证书中提取公钥 其中 k4yt3x@flexio.org.p12 为输入 P12 证书,/opt/.cisco/certificates/client/k4yt3x@flexio.org.pem 为输出公钥。...
此篇教程将会介绍如何在 Debian 环境下进行基础 Trojan 安装与配置。