Skip to content

Instantly share code, notes, and snippets.

View maekawatoshiki's full-sized avatar
🙃
Pursuing a master's degree

uint256_t maekawatoshiki

🙃
Pursuing a master's degree
View GitHub Profile
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
char *input;
typedef enum {
Num,
Op
} Kind;
@maekawatoshiki
maekawatoshiki / a.md
Last active July 12, 2020 15:00
簡単で効率的なレジスタ割り付けを考えたい

生存区間分割を実装しないとすると,こうするのが一番いいんじゃないかなという案.

virts = 物理レジスタを割り付けたい仮想レジスタの集合

for virt in virts
    if 関数呼び出しに起因してvirtがevict&reloadされる回数 > virtをspillした場合のevict&reload回数
        if virtにcallee-saved registerを割り付け可能
            virtにcallee-saved registerを割り付ける
 else
@maekawatoshiki
maekawatoshiki / pat_syntax.txt
Created March 22, 2020 12:45
理想の命令選択パターンマッチ構文を考える
%c = (%a + %b) => addrr
%c = add(%a, $imm) => addri
%c = %a + %b
: %c i32/f32
: %a i32/f32
: %b i32/f32
=> addrr / faddrr
(add a, b
以下のようなコードがあるとする.
block.1:
vreg.1 = load [stack.0]
br block.2 if vreg.1 < 100
br block.3
block.2:
call @something
inc = add vreg.1, 1
store inc, [stack.0]
$ cat examples/Hello.java
class Hello {
public static void main(String[] args) {
long l = 123534l;
double x = 2.31;
System.out.println("Hello World");
}
}
$ javac examples/Hello.java
$ cargo run examples/Hello.class
int w0, x, y, c, i, dx, dy, xn, yn, xn1, yn1, t, t2, xmin, ymin, xp, yp;
w0 = openWin(512, 256);
ymin = 0 - 256;
xmin = 0 - 512;
for (y = 256; y > ymin; y--) {
for (x = xmin; x < 256; x++) {
xn = 0;
yn = 0;
xn1 = 0;
yn1 = 0;
Profiling naglfar with callgrind...
Total Instructions...4,962,742,777
481,536,774 (9.7%) ???:0x0000000000014970
-----------------------------------------------------------------------
169,401,790 (3.4%) memcpy-sse2-unaligned.S:__memcpy_sse2_unaligned
-----------------------------------------------------------------------
139,040,681 (2.8%) ???:0x0000000000019ac0
### Keybase proof
I hereby claim:
* I am maekawatoshiki on github.
* I am uint256_t (https://keybase.io/uint256_t) on keybase.
* I have a public key ASCpxh_KSIPDBk5IDLTmAckR6-yDwJILn1-C-CBuDgcDkwo
To claim this, I am signing this object:
#include <stdio.h>
#include <time.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <netinet/in.h>
@maekawatoshiki
maekawatoshiki / calc.rb
Created August 9, 2016 13:11
calculator
require "std"
module Calc
def prim(input:string):string
str = ""
if input[$pos].alpha? # function (sqrt..)
fname = ""
while input[$pos].alpha?
fname += input[$pos]
$pos += 1