Skip to content

Instantly share code, notes, and snippets.


Yuan He lenage

View GitHub Profile


This document was originally written several years ago. At the time I was working as an execution core verification engineer at Arm. The following points are coloured heavily by working in and around the execution cores of various processors. Apply a pinch of salt; points contain varying degrees of opinion.

It is still my opinion that RISC-V could be much better designed; though I will also say that if I was building a 32 or 64-bit CPU today I'd likely implement the architecture to benefit from the existing tooling.

Mostly based upon the RISC-V ISA spec v2.0. Some updates have been made for v2.2

Original Foreword: Some Opinion

The RISC-V ISA has pursued minimalism to a fault. There is a large emphasis on minimizing instruction count, normalizing encoding, etc. This pursuit of minimalism has resulted in false orthogonalities (such as reusing the same instruction for branches, calls and returns) and a requirement for superfluous instructions which impacts code density both in terms of size and

lenage / gist:4b9315654af7064b13b7b037135eaf88
Created Oct 26, 2018 — forked from jimbojsb/gist:1630790
Code highlighting for Keynote presentations
View gist:4b9315654af7064b13b7b037135eaf88

Step 0:

Get Homebrew installed on your mac if you don't already have it

Step 1:

Install highlight. "brew install highlight". (This brings down Lua and Boost as well)

Step 2:

View gist:891ad2dc04d97d012a8520efa3289338
---- darwin
lenage / fnv_example.go
Created Mar 31, 2017
golang fnv example
View fnv_example.go
package main
import (
lenage / ss-ignore.list
Created Jan 4, 2017
Shadowsock ignore list
View ss-ignore.list
lenage / feature.swagger.json
Created Nov 14, 2016
swagger JSON example
View feature.swagger.json
"swagger": "2.0",
"info": {
"title": "feature.proto",
"version": "version not set"
"schemes": [
lenage / dnscrypt.csv
Created Jul 30, 2016
DNScrypt server list
View dnscrypt.csv
We can make this file beautiful and searchable if this error is corrected: It looks like row 5 should actually have 14 columns, instead of 6. in line 4.
Name,Full name,Description,Location,Coordinates,URL,Version,DNSSEC validation,No logs,Namecoin,Resolver address,Provider name,Provider public key,Provider public key TXT record
4armed,4ARMED,DNSCrypt Server provided by,France,,,1,yes,yes,no,,,FD3E:5887:63EA:17A9:1AF8:4325:DE82:1507:6ED0:01AB:2F9E:55DE:689B:F491:4D8E:526E,
cisco,Cisco OpenDNS,Remove your DNS blind spot,Anycast,,,1,no,no,no,,,B735:1140:206F:225D:3E2B:D822:D7FD:691E:A1C3:3CC8:D666:8D0C:BE04:BFAB:CA43:FB79,
cisco-familyshield,Cisco OpenDNS with FamilyShield,Blocks web sites not suitable for children,Anycast,,,1,no,no,no,,,B735:1140:206F:225D:3E2B:D822:D7FD:691E:A1C3:3CC8:D666:8D0C:BE04:BFAB:CA43:FB79,
cisco-ipv6,Cisco OpenDNS over IPv6,Cisco OpenDNS IPv6 sandbox,Anycast,,https://www.op
lenage / qiku360-debug.log
Last active Jul 16, 2016
qiku360 劫持 分析
View qiku360-debug.log
!10013 [11:35:07] ~ $ curl -vvvv -L,basePatch/1.0.0/basePatch.js
* Trying
* Connected to ( port 80 (#0)
> GET /jdf/1.0.0/unit/??base/1.0.0/base.js,basePatch/1.0.0/basePatch.js HTTP/1.1
> Host:
> User-Agent: curl/7.43.0
> Accept: */*
< HTTP/1.1 302 Found
< Connection: close
View replace-bundle-hash.js
'use strict'
var jsonfile = require('jsonfile')
var replace = require('replace-in-file')
var fs = require('fs')
fs.readdir('dist', function(err, files) {
var htmlFiles = []
files.forEach(function(x) {
if (/\.html$/.test(x)) { htmlFiles.push('dist/' + x) }
lenage /
Created Aug 5, 2015
List all Git commit date
git log --format='%ci' --no-merges | awk '{print $1}' | uniq | wc -l