cyan's blog

しょーもない事しか書いていません

x86におけるセグメンテーションについてのメモ

書かないと忘れるので... 概要 16-bitマシンであった8086では20-bitのデータバスを利用するために各種セグメントレジスタの値を16bit left shiftした値+オフセットをリニアアドレスとして使用していた.*1全てのx86アーキテクチャCPUは今でも16bitリアルモー…

KVM_SET_USER_MEMORY_REGION in Linux x86 part1

Linux(tag v5.4)におけるVM ioctl KVM_SET_USER_MEMORY_REGIONリクエストの処理の流れについてのメモ.読んだ順に書いているだけなのでまとまっていない. 前提 kvmを利用したいアプリケーションはkvm APIを利用することでVMを管理するための諸構造,vCPUな…

array_index_nospec in Linux x86

Linux(tag v5.4)のソースコードリーディングをしていたときに面白いと思ったマクロのメモ. array_index_nospec include/linux/nospec.hで以下のように定義される. /* * array_index_nospec - sanitize an array index after a bounds check * * For a code…

__chk_range_not_ok() in Linux x86

Linux(tag v5.4)のソースコードリーディングをしていたときに面白いと思った関数のメモ. __chk_range_not_ok() arch/x86/include/asm/uaccess.hにて以下のように定義される. static inline bool __chk_range_not_ok(unsigned long addr, unsigned long siz…

ABC099 C問題: とりあえずDPは良くない?

教育的な内容だったのでメモ. atcoder.jp 詳細は上記リンクより参照. 問題の概要: 1<=N<=100000 Nは整数 であるときにN円を支払いたいとする. 一回に支払える金額は 1円 6円, 6^2円, 6^3円, ... 9円, 9^2円, 9^3円, ... のいずれかである. この制約下で合計N…

ABC179 E問題: 数列の各項の剰余における周期性

atcoder.jp 詳細は上記リンクより参照. 問題の概要: 1 <= N <= 10^10 0 <= X < M <= 10^5 N, X, Mはそれぞれ整数 という制約下において, 初期値: A_1 = X 漸化式: A_(n+1) = (A_n)^2 mod M で定義される数列Aについて, A_1からA_Nまでの各項の和を求めるとい…

ProtonMail: プライバシーポリシー Memo

周りの人がProtonはいいというが何が具体的に良いのかは調べないとわからないので,プライバシーポリシー, それに関連する文書を読んだ際の備忘録的なメモ. あくまで著者自身用のメモであり, 内容の正確性は一切保証できない. 現在の内容は 2022/03/06 時点…