在 arm host 上使用 gdb 调试 amd64 程序
非原创 解决方案来源 在 Docker run 中加入 --cap-add=SYS_PTRACE --security-opt seccomp=unconfined 创建一个/usr/local/bin/gdb,因为PATH中/usr/local/bin比较靠前,会比/usr/bin/gdb先被找到 1234567891011121314151617181920#!/bin/bashSCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )if [ "$#" != "1" ]; then echo "Usage: $0 <path/to/program to debug>" >&2 exit 1fiprog="$1"# Start program in...
brainfuck 代码生成工具 - 将C代码编译到brainfuck
最近在做一个编译原理lab ☝️🤓诶,我已经有结构化的AST和IR了,岂不是能不太费劲地地写出一些有意思的东西? 就这样一拍脑袋给编译器加了个brainfuck后端 由于还没想好怎么实现栈,现在所有变量都是static的,也不支持递归函数调用 demo 12345678910/// file: test/int_size.cint main() { int bit = 0; int v = 1; while (v) { v = v * 2; bit = bit + 1; } return bit;} 1234567891011121314$ build/compiler -brainz...
给C++实现一个模式匹配
没用的小玩具
Xcode CLT 一个有意思的机制
最近觉得终端里面输 python 出来的竟然是 python2 很不爽,然后就想用个软链接把 /usr/local/bin/python 指到 /usr/local/bin/python3。 1$ sudo ln -s /usr/local/bin/python3 /usr/local/bin/python 完事,然后: 好怪哦 弄了半天不知道怎么回事,最后群里问了问,有大佬解释是这个 Xcode CommandLine Tools 提供的 python 会根据传入的程序名称决定行为,argv[0] 是 python 就当 python2 执行 软链接没问题,文件确实是一样的 换个名字就执行不了了 其实我应该自己早点发现这个问题的,之前刷知乎刷到过 clang/clang++ 也是一样的原理,共用一个执行文件,根据传入的 argv[0] 决定是否链接 libc++ 库等 还是没想到这里去 最后用了个 alias ,不折腾软链接了 最后还是用上了 conda 管理环境,删掉了 /usr/local/bin 里面的python/pip等。 等等…… 啊? 所以...
从零开始打造一个原琴模拟器
计科导大作业 试玩链接: 原琴模拟器 6.14 音色库来源:@Colalala_冰阔落落落 试了半天,发现没法正常播放这个风物之诗琴的音源,决定先用 smplr 默认的钢琴音源把别的写了。 写好了键盘演奏函数、谱子 parser 以及自动播放功能。 version 0.1.0 6.15 加入 [] {} 表示时值变化。 添加临时升降记号 -/+ 以及临时高/低八度记号。 重写了教程 version 0.3.0 6.16 添加了固定调转调方式,更适合对着五线谱演奏。 version 0.4.0 6.17 优化了调号显示。 version 0.4.4 加了个键盘,可以看到哪些音被按下了。 version 0.5.4 把自动演奏和按键动画连接了起来。 version 0.6.0 加了个加载时的提示悬浮窗 version 0.6.1 6.18 重构了代码 version 0.7.0 给按钮加了点阴影,感谢Box-Shadow CSS Generator以及用filter: drop-shadow()给透明图片添加阴影 version 0.7.1 遇到了个...
C++20 新特性试玩:concept
定义 concept 12template<typename T>concept c = (bool_expression); requires(args) {...} 可以作为一个 bool 表达式,检查大括号中内容是否编译通过 e.g. 12template <typename T>concept printable = requires(std::ostream& os, T a) { os << a; }; requires 字句也能嵌套,这样就不用把两个无关的条件参数写到同一个括号里面。 12template <typename T>concept Field = <concepts> 头文件内有一些预定义的...
图灵加法器
题目:loj6572, loj6573, loj6574 主要写一下 t3 一开始本人的思路是先把一个数前后颠倒地放到等号后面,再加上另一个数,最后把求得的和正过来,写了约 90 行。 小组讨论一会后发现这个取反操作挺没必要的,直接把第二个数加到第一个数上就行。 如何处理进位问题? 每次从第二个数那里取一位加至第一个数的时候将一个 0/1 转换为 a/b,相当于打上 “计算完毕”...
月度总结
2024 年 3 月 屁事没干,破防了 对比一下
线性代数复习
考前复习
vim 切换模式之后自动切换输入法
由于 vim 在 Normal 模式并不能识别中文输入法打出的命令,所以可以考虑在退出插入模式时自动切换输入法为英文。 使用 InputSourceSelector 12345678910111213141516171819if has('mac') function SwitchInput() let g:stored_input = split(system('input_selector current'))[0] if g:stored_input != "com.apple.keylayout.ABC" exec system('input_selector select com.apple.keylayout.ABC') endif endfunction set ttimeoutlen=100 call SwitchInput() autocmd InsertLeave * call...