diff --git a/C/strange_size/strange_size.c b/C/strange_size/strange_size.c new file mode 100644 index 0000000..d8c3331 --- /dev/null +++ b/C/strange_size/strange_size.c @@ -0,0 +1,10 @@ +#include +#include + +int main(int argc, char **argv) { + uint8_t i = 72; + uint8_t j = 84; + uint8_t k = i + j; + printf("%d + %d = %d\n", i, j, k); + return 0; +} diff --git a/C/strange_size/strange_size.s b/C/strange_size/strange_size.s new file mode 100644 index 0000000..5456b76 --- /dev/null +++ b/C/strange_size/strange_size.s @@ -0,0 +1,49 @@ +; ModuleID = 'strange_size.c' +source_filename = "strange_size.c" +target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" + +@.str = private unnamed_addr constant [14 x i8] c"%d + %d = %d\0A\00", align 1 + +; Function Attrs: noinline nounwind optnone sspstrong uwtable +define dso_local i32 @main(i32, i8**) #0 { + %3 = alloca i32, align 4 + %4 = alloca i32, align 4 + %5 = alloca i8**, align 8 + %6 = alloca i7, align 1 + %7 = alloca i7, align 1 + %8 = alloca i7, align 1 + store i32 0, i32* %3, align 4 + store i32 %0, i32* %4, align 4 + store i8** %1, i8*** %5, align 8 + store i7 72, i7* %6, align 1 + store i7 84, i7* %7, align 1 + %9 = load i7, i7* %6, align 1 + %10 = zext i7 %9 to i32 + %11 = load i7, i7* %7, align 1 + %12 = zext i7 %11 to i32 + %13 = add nsw i32 %10, %12 + %14 = trunc i32 %13 to i7 + store i7 %14, i7* %8, align 1 + %15 = load i7, i7* %6, align 1 + %16 = zext i7 %15 to i32 + %17 = load i7, i7* %7, align 1 + %18 = zext i7 %17 to i32 + %19 = load i7, i7* %8, align 1 + %20 = zext i7 %19 to i32 + %21 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str, i32 0, i32 0), i32 %16, i32 %18, i32 %20) + ret i32 0 +} + +declare i32 @printf(i8*, ...) #1 + +attributes #0 = { noinline nounwind optnone sspstrong uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #1 = { "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } + +!llvm.module.flags = !{!0, !1, !2} +!llvm.ident = !{!3} + +!0 = !{i32 1, !"wchar_size", i32 4} +!1 = !{i32 7, !"PIC Level", i32 2} +!2 = !{i32 7, !"PIE Level", i32 2} +!3 = !{!"clang version 7.0.0 (tags/RELEASE_700/final)"} diff --git a/C/strange_size/strange_size.s.s b/C/strange_size/strange_size.s.s new file mode 100644 index 0000000..ee44223 --- /dev/null +++ b/C/strange_size/strange_size.s.s @@ -0,0 +1,49 @@ + .text + .intel_syntax noprefix + .file "strange_size.c" + .globl main # -- Begin function main + .p2align 4, 0x90 + .type main,@function +main: # @main + .cfi_startproc +# %bb.0: + push rbp + .cfi_def_cfa_offset 16 + .cfi_offset rbp, -16 + mov rbp, rsp + .cfi_def_cfa_register rbp + sub rsp, 32 + mov dword ptr [rbp - 12], 0 + mov dword ptr [rbp - 8], edi + mov qword ptr [rbp - 24], rsi + mov byte ptr [rbp - 2], 72 + mov byte ptr [rbp - 1], 84 + movzx eax, byte ptr [rbp - 2] + movzx ecx, byte ptr [rbp - 1] + add eax, ecx + and al, 127 + mov byte ptr [rbp - 3], al + movzx esi, byte ptr [rbp - 2] + movzx edx, byte ptr [rbp - 1] + movzx ecx, byte ptr [rbp - 3] + movabs rdi, offset .L.str + mov al, 0 + call printf + xor eax, eax + add rsp, 32 + pop rbp + .cfi_def_cfa rsp, 8 + ret +.Lfunc_end0: + .size main, .Lfunc_end0-main + .cfi_endproc + # -- End function + .type .L.str,@object # @.str + .section .rodata.str1.1,"aMS",@progbits,1 +.L.str: + .asciz "%d + %d = %d\n" + .size .L.str, 14 + + + .ident "clang version 7.0.0 (tags/RELEASE_700/final)" + .section ".note.GNU-stack","",@progbits diff --git a/idris/.gitignore b/idris/.gitignore new file mode 100644 index 0000000..ddcac96 --- /dev/null +++ b/idris/.gitignore @@ -0,0 +1,3 @@ +a.out +*.o +*.idc diff --git a/idris/Hello.idr b/idris/Hello.idr new file mode 100644 index 0000000..45ff708 --- /dev/null +++ b/idris/Hello.idr @@ -0,0 +1,4 @@ +module Main + +main : IO () +main = putStrLn "Hallo, Welt" diff --git a/notebooks/.gitignore b/notebooks/.gitignore new file mode 100644 index 0000000..87620ac --- /dev/null +++ b/notebooks/.gitignore @@ -0,0 +1 @@ +.ipynb_checkpoints/ diff --git a/notebooks/rolldice.ipynb b/notebooks/rolldice.ipynb new file mode 100644 index 0000000..e91ee06 --- /dev/null +++ b/notebooks/rolldice.ipynb @@ -0,0 +1,101 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import scipy.stats" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "res = [int(os.popen('rolldice d20').read()) for i in range(10000)]" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(array([541., 487., 471., 503., 531., 517., 489., 479., 490., 498., 505.,\n", + " 503., 488., 484., 515., 478., 522., 476., 533., 490.]),\n", + " array([ 1. , 1.95, 2.9 , 3.85, 4.8 , 5.75, 6.7 , 7.65, 8.6 ,\n", + " 9.55, 10.5 , 11.45, 12.4 , 13.35, 14.3 , 15.25, 16.2 , 17.15,\n", + " 18.1 , 19.05, 20. ]),\n", + " )" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAD8CAYAAAB5Pm/hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAD8pJREFUeJzt3X+MpVV9x/H3pyzYRo3Lj+12u7txtZI29A+VbOharaHSUkDj0kYJxpQtbrIxwURjG93WxNqkf0CbSkvT0GyFuBiqUJWysVjdIsb0D6gDwgKiZSAQdrOwIyBoiG3Rb/+4Z9vLOLNzh5k7d/bwfiU39zznnGee7zz78Jlnztx7SVUhSerXz0y6AEnSeBn0ktQ5g16SOmfQS1LnDHpJ6pxBL0mdM+glqXMGvSR1zqCXpM6tmXQBAKeddlpt2bJl0mVI0nHlzjvv/F5VrVto3qoI+i1btjA1NTXpMiTpuJLk0VHmuXQjSZ0z6CWpcwa9JHXOoJekzhn0ktQ5g16SOmfQS1LnDHpJ6pxBL0mdWxXvjF2KLbv/ZUn7P3L525epEklanbyjl6TOGfSS1LnjfulGkpZqKUvAx8Pyr0F/HOr9opS0vFy6kaTOGfSS1DmXbiStGi5Ljod39JLUOe/oX2J8g5n00mPQS3oBbwb649KNJHVupKBP8kiSe5PcnWSq9Z2SZH+SB9vzya0/Sa5KMp3kQJIzx/kNSJKObTFLN79ZVd8b2t4N3FpVlyfZ3bY/CpwPnN4evwZc3Z6l447LGOrBUtbotwNnt/Ze4OsMgn47cF1VFXB7krVJNlTV4aUU2pulBoiOD75cUKvBqGv0BXw1yZ1JdrW+9UPh/TiwvrU3Ao8N7Xuw9b1Akl1JppJMzczMvIjSJUmjGPWO/i1VdSjJzwP7k3xneLCqKkkt5sBVtQfYA7B169ZF7Ssthr896aVupDv6qjrUno8ANwFnAU8k2QDQno+06YeAzUO7b2p9kqQJWDDok7w8ySuPtoFzgfuAfcCONm0HcHNr7wMuaa++2QY84/q8JE3OKEs364Gbkhyd/49V9a9JvgncmGQn8ChwUZt/C3ABMA08B1y67FXrJcflF61Wx8MrsxYM+qp6GHj9HP1PAufM0V/AZctS3QrwVRGL4/laOZ5rLRffGStJnfOzbqQOudSlYQa9VozhI02GQS9pWfkDffUx6CV1wR8w8/OPsZLUOe/ol8A7CEnHA+/oJalzBr0kdc6gl6TOGfSS1DmDXpI6Z9BLUucMeknqnEEvSZ0z6CWpcwa9JHXOoJekzhn0ktQ5g16SOmfQS1LnDHpJ6pxBL0mdM+glqXMGvSR1zqCXpM4Z9JLUOYNekjpn0EtS50YO+iQnJPlWki+17dckuSPJdJIbkpzU+l/Wtqfb+JbxlC5JGsVi7ug/CDwwtH0FcGVVvQ54GtjZ+ncCT7f+K9s8SdKEjBT0STYBbwc+1bYDvA34fJuyF7iwtbe3bdr4OW2+JGkCRr2j/2vgI8BP2vapwPer6vm2fRDY2NobgccA2vgzbb4kaQIWDPok7wCOVNWdy3ngJLuSTCWZmpmZWc4vLUkaMsod/ZuBdyZ5BPgcgyWbvwHWJlnT5mwCDrX2IWAzQBt/FfDk7C9aVXuqamtVbV23bt2SvglJ0vwWDPqq+uOq2lRVW4CLga9V1XuB24B3tWk7gJtbe1/bpo1/rapqWauWJI1sKa+j/yjw4STTDNbgr2n91wCntv4PA7uXVqIkaSnWLDzl/1XV14Gvt/bDwFlzzPkR8O5lqE2StAx8Z6wkdc6gl6TOGfSS1DmDXpI6Z9BLUucMeknqnEEvSZ0z6CWpcwa9JHXOoJekzhn0ktQ5g16SOmfQS1LnDHpJ6pxBL0mdM+glqXMGvSR1zqCXpM4Z9JLUOYNekjpn0EtS5wx6SeqcQS9JnTPoJalzBr0kdc6gl6TOGfSS1DmDXpI6Z9BLUucWDPokP5vkP5Lck+T+JH/W+l+T5I4k00luSHJS639Z255u41vG+y1Iko5llDv6/wLeVlWvB94AnJdkG3AFcGVVvQ54GtjZ5u8Enm79V7Z5kqQJWTDoa+CHbfPE9ijgbcDnW/9e4MLW3t62aePnJMmyVSxJWpSR1uiTnJDkbuAIsB94CPh+VT3fphwENrb2RuAxgDb+DHDqchYtSRrdSEFfVT+uqjcAm4CzgF9Z6oGT7EoylWRqZmZmqV9OkjSPRb3qpqq+D9wGvAlYm2RNG9oEHGrtQ8BmgDb+KuDJOb7WnqraWlVb161b9yLLlyQtZJRX3axLsra1fw74beABBoH/rjZtB3Bza+9r27Txr1VVLWfRkqTRrVl4ChuAvUlOYPCD4caq+lKSbwOfS/LnwLeAa9r8a4DPJJkGngIuHkPdkqQRLRj0VXUAeOMc/Q8zWK+f3f8j4N3LUp0kacl8Z6wkdc6gl6TOGfSS1DmDXpI6Z9BLUucMeknqnEEvSZ0z6CWpcwa9JHXOoJekzhn0ktQ5g16SOmfQS1LnDHpJ6pxBL0mdM+glqXMGvSR1zqCXpM4Z9JLUOYNekjpn0EtS5wx6SeqcQS9JnTPoJalzBr0kdc6gl6TOGfSS1DmDXpI6Z9BLUucMeknq3IJBn2RzktuSfDvJ/Uk+2PpPSbI/yYPt+eTWnyRXJZlOciDJmeP+JiRJ8xvljv554A+r6gxgG3BZkjOA3cCtVXU6cGvbBjgfOL09dgFXL3vVkqSRLRj0VXW4qu5q7R8ADwAbge3A3jZtL3Bha28HrquB24G1STYse+WSpJEsao0+yRbgjcAdwPqqOtyGHgfWt/ZG4LGh3Q62vtlfa1eSqSRTMzMziyxbkjSqkYM+ySuALwAfqqpnh8eqqoBazIGrak9Vba2qrevWrVvMrpKkRRgp6JOcyCDkr6+qL7buJ44uybTnI63/ELB5aPdNrU+SNAGjvOomwDXAA1X1yaGhfcCO1t4B3DzUf0l79c024JmhJR5J0gpbM8KcNwO/D9yb5O7W9yfA5cCNSXYCjwIXtbFbgAuAaeA54NJlrViStCgLBn1V/TuQeYbPmWN+AZctsS5J0jLxnbGS1DmDXpI6Z9BLUucMeknqnEEvSZ0z6CWpcwa9JHXOoJekzhn0ktQ5g16SOmfQS1LnDHpJ6pxBL0mdM+glqXMGvSR1zqCXpM4Z9JLUOYNekjpn0EtS5wx6SeqcQS9JnTPoJalzBr0kdc6gl6TOGfSS1DmDXpI6Z9BLUucMeknqnEEvSZ1bMOiTXJvkSJL7hvpOSbI/yYPt+eTWnyRXJZlOciDJmeMsXpK0sFHu6D8NnDerbzdwa1WdDtzatgHOB05vj13A1ctTpiTpxVow6KvqG8BTs7q3A3tbey9w4VD/dTVwO7A2yYblKlaStHgvdo1+fVUdbu3HgfWtvRF4bGjewdYnSZqQJf8xtqoKqMXul2RXkqkkUzMzM0stQ5I0jxcb9E8cXZJpz0da/yFg89C8Ta3vp1TVnqraWlVb161b9yLLkCQt5MUG/T5gR2vvAG4e6r+kvfpmG/DM0BKPJGkC1iw0IclngbOB05IcBP4UuBy4MclO4FHgojb9FuACYBp4Drh0DDVLkhZhwaCvqvfMM3TOHHMLuGypRUmSlo/vjJWkzhn0ktQ5g16SOmfQS1LnDHpJ6pxBL0mdM+glqXMGvSR1zqCXpM4Z9JLUOYNekjpn0EtS5wx6SeqcQS9JnTPoJalzBr0kdc6gl6TOGfSS1DmDXpI6Z9BLUucMeknqnEEvSZ0z6CWpcwa9JHXOoJekzhn0ktQ5g16SOmfQS1LnDHpJ6txYgj7JeUm+m2Q6ye5xHEOSNJplD/okJwB/B5wPnAG8J8kZy30cSdJoxnFHfxYwXVUPV9V/A58Dto/hOJKkEYwj6DcCjw1tH2x9kqQJWDOpAyfZBexqmz9M8t1J1bKA04DvTbqIY7C+pVnt9cHqr9H6liBXLKm+V48yaRxBfwjYPLS9qfW9QFXtAfaM4fjLKslUVW2ddB3zsb6lWe31weqv0fqWZiXqG8fSzTeB05O8JslJwMXAvjEcR5I0gmW/o6+q55N8APgKcAJwbVXdv9zHkSSNZixr9FV1C3DLOL72BKz25SXrW5rVXh+s/hqtb2nGXl+qatzHkCRNkB+BIEmdM+iBJJuT3Jbk20nuT/LBOeacneSZJHe3x8dXuMZHktzbjj01x3iSXNU+duJAkjNXsLZfHjovdyd5NsmHZs1Z8fOX5NokR5LcN9R3SpL9SR5szyfPs++ONufBJDtWqLa/TPKd9u93U5K18+x7zGthzDV+IsmhoX/HC+bZd+wfgzJPfTcM1fZIkrvn2Xes53C+TJnY9VdVL/kHsAE4s7VfCfwncMasOWcDX5pgjY8Apx1j/ALgy0CAbcAdE6rzBOBx4NWTPn/AW4EzgfuG+v4C2N3au4Er5tjvFODh9nxya5+8ArWdC6xp7Svmqm2Ua2HMNX4C+KMRroGHgNcCJwH3zP7vaVz1zRr/K+DjkziH82XKpK4/7+iBqjpcVXe19g+ABzj+3s27HbiuBm4H1ibZMIE6zgEeqqpHJ3DsF6iqbwBPzereDuxt7b3AhXPs+jvA/qp6qqqeBvYD5427tqr6alU93zZvZ/AelImZ5/yNYkU+BuVY9SUJcBHw2eU+7iiOkSkTuf4M+lmSbAHeCNwxx/CbktyT5MtJfnVFC4MCvprkzvau4tlWy0dPXMz8/3FN8vwdtb6qDrf248D6OeashnP5Pga/oc1loWth3D7QlpeunWfpYTWcv98AnqiqB+cZX7FzOCtTJnL9GfRDkrwC+ALwoap6dtbwXQyWI14P/C3wzytc3luq6kwGnwp6WZK3rvDxF9TeIPdO4J/mGJ70+fspNfg9edW97CzJx4DngevnmTLJa+Fq4JeANwCHGSyPrEbv4dh38ytyDo+VKSt5/Rn0TZITGfyDXF9VX5w9XlXPVtUPW/sW4MQkp61UfVV1qD0fAW5i8OvxsJE+emLMzgfuqqonZg9M+vwNeeLoklZ7PjLHnImdyyR/ALwDeG8Lgp8ywrUwNlX1RFX9uKp+AvzDPMee6LWYZA3we8AN881ZiXM4T6ZM5Poz6Pm/9bxrgAeq6pPzzPmFNo8kZzE4d0+uUH0vT/LKo20Gf7S7b9a0fcAl7dU324Bnhn5FXCnz3kVN8vzNsg84+iqGHcDNc8z5CnBukpPb0sS5rW+skpwHfAR4Z1U9N8+cUa6FcdY4/Hef353n2JP+GJTfAr5TVQfnGlyJc3iMTJnM9TeuvzofTw/gLQx+hToA3N0eFwDvB97f5nwAuJ/BKwhuB359Bet7bTvuPa2Gj7X+4frC4H/48hBwL7B1hc/hyxkE96uG+iZ6/hj80DkM/A+Ddc6dwKnArcCDwL8Bp7S5W4FPDe37PmC6PS5dodqmGazNHr0G/77N/UXglmNdCyt4/j7Trq8DDEJrw+wa2/YFDF5p8tC4apyrvtb/6aPX3dDcFT2Hx8iUiVx/vjNWkjrn0o0kdc6gl6TOGfSS1DmDXpI6Z9BLUucMeknqnEEvSZ0z6CWpc/8LjtA+FfDvda0AAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.hist(res, bins=20)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Power_divergenceResult(statistic=31984.521923755903, pvalue=0.0)" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "scipy.stats.chisquare(res)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/scripts/pppassword b/scripts/pppassword index 53d27ae..83af05c 100755 --- a/scripts/pppassword +++ b/scripts/pppassword @@ -4,8 +4,10 @@ import os import secrets a = "".join(sys.argv[1:]) d = "pq" +if "b" in a: + d = d + "b" if "u" in a: - d = d + "PQ" + d = d + d.upper() l = 16 + secrets.randbelow(16)