/r/lowlevel
Low level programming and hacking subreddit for Linux and Windows.
/r/lowlevel
Hi, I'm a 3rd year CS student in India and I recently got interested in low level programming. I want to work in this domain but I'm not sure how to proceed. I'm very fascinated with GPUs and CPUs and would like to work as a GPU Performance Engineer or GPU driver development or maybe come low level C++ roles. Everything is all interconnected and I'm getting overwhelmed and confused. Some posts are telling to pick up a development board like Arduino/Raspberry Pi etc, some are telling to learn assembly, computer architecture and compilers. I'm confused and would like some clarity on how to proceed. Thank you
According to Rubenstein Barnaby was the “mad genius of assembly language coding.” . In four months Barnaby wrote 137,000 lines of bullet-proof assembly language code. Rubenstein later checked with some friends from IBM who calculated Barnaby’s output as 42-man years.
Hey guys, I’m looking to get a lower level job down the road and I’m kinda wondering what my options are, I’ve always been interested in c /rust, c++ is interesting too, but a bit daunting as I hear it’s tough. Performance applications/ servers and lower level kernel and driver development all sound super fun to me and I’ve dipped my toes very lightly in each , only in a beginner level, do you have any recommendations for me ? I’m 22 so I might be approaching an age eventually that college students just grad might be more looked at, as I have no college experience , I’m full self taught, been a web dev for 2 years but don’t like it, enjoying lower level langs more.
I'm currently working in the Kubernetes and CloudNative field as an SRE, from India.
I want to achieve niche tech skills in the domain of Rust, Distributed Systems, Systems Engineering and Core Blockchain Engineering.
One of my main motivations behind this is, permanently moving to the EU.
Outside my office hours, I work on building things from scratch : like Operating Systems, WASM Runtimes, Container Runtimes, Databases, Ethereum node implementation etc. in Rust / Zig / C / Go, for educational purposes.
My post keeps getting removed, if it contains any link! So I have linked my Github profile in my Reddit profile.
Doing these complex projects alone, makes me very exhausted and sometimes creates a lack of motivation in me / gets me very depressed.
I'm looking for 2 - 5 motivated people (beginners / more preferrebly intermediates in these fields) with whom I can form a group.
I want the group to be small (3 - 6 members including me) and focused.
Maybe :
- 1-2 person can work on WASM Runtime (memory model, garbage collection etc.)
- other 1-2 can work on the Database (distributed KV store, BTree / LSM tree implementation from scratch, CRDTs etc.)
- remaining 1-2 person can work on the OS (memory model, network stack, RISCV CPU simulation using VeriLog etc.)
Every weekend, we can meet and discuss with each other, whatever we learnt (walk through the code and architecture, share the resources that we referenced). Being in a group, we can motivate, get inspired and mutually benefit from each other.
If you're interested, hit me up 😃.
Is it possible to log in to a remote machine using RDP without a password by utilizing a custom credential provider?
I've been learning Rust and I’ve heard “learn a bit of assembly and C to understand computers and program better” a lot. I also find I run into a general knowledge barrier when asking “why” too many times about language and program design decisions. Are there any books/resources that can bridge this understanding gap? Any “bibles” in this area? I’m not trying to avoid learning assembly/C, I’m just more interested in the underlying ideas than the languages themselves. Included examples and crash courses in assembly/C are fine. I get it if the answer is simply “learn assembly and C”.
I’ve been reading AMD’s virtualization manual (https://www.0x04.net/doc/amd/33047.pdf), and I came across this part about #VMEXIT:
"The VMRUN instruction then checks the guest state just loaded. If illegal state has been loaded, the processor exits back to the host (see “#VMEXIT” on page 12). Otherwise, the processor now runs the guest code until an intercept event occurs, at which point the processor suspends guest execution and resumes host execution at the instruction following the VMRUN. This is called a #VMEXIT and is described in detail in “#VMEXIT” on page 12. VMRUN saves or restores a minimal amount of state information to allow the VMM to resume execution after a guest has exited. This allows the VMM to handle simple intercept conditions quickly. If additional guest state information must be saved or restored (e.g., to handle more complex intercepts or to switch to a different guest), the VMM"
Does this mean that when a #VMEXIT happens, the entire VM (all vCPUs) is paused, or does it only suspend the thread (vCPU) that caused the exit?
I’m trying to understand how granular this interruption is.
Hey all! Hope everyone is doing well!
So, lately I've been learning some basic concepts of the x86 family's instructions and the ELF object file format as a side project. I wrote a library, called jas that compiles some basic instructions for x64 down into a raw ELF binary that ld
is willing chew up and for it to spit out an executable file for. The assembler has been brewing since the end of last year and it's just recently starting to get ready and I really wanted to show off my progress.
The Jas assembler allows operating and low-level enthusiasts to quickly and easily whip out a simple compiler, or integrate into a developing operating system without the hassle of a large and complex library like LLVM. Using my library, I've already written some pretty cool projects such as a very very simple brain f*ck compiler in less than 1MB of source code that compiles down to a x64 ELF object file - Check it out herehttps://github.com/cheng-alvin/brainfry
Feel free to contribute to the repo: https://github.com/cheng-alvin/jas
Thanks, Alvin
Hey guys, so I'm not sure if this question is allowed here. But I've been working as a web dev for all of my career but I'm getting really interested in low level and systems development, but is been kinda of difficult to migrate to this area since I have a lot to learn and I've been mostly a high level developer for all my life.
So I was wondering what do you guys do for work, do all of you work in system development or do guys work in something else and do sys dev on the side as a recreation?
I would love to learn more about how did you get into this area, if you started from college to this or migrated from other computer area to sys dev.
Thanks in advance!
I'm excited to share a project I've been working on: FBGL (Framebuffer Graphics Library), a lightweight, header-only graphics library for direct framebuffer manipulation in Linux.
FBGL is a simple, single-header C library that allows you to draw directly to the Linux framebuffer with minimal dependencies. Whether you're into embedded graphics, game development, or just want low-level graphics rendering, this library might be for you!
github: https://github.com/lvntky/fbgl
I posed this on another subreddit but I thought I might have better luck here.
Hello!! I am a second year student studying I Japan for computer engineering and the stuff we do in school is all software engineering based but I’m all honesty I’ve never found that stuff particularly fun tbh. I started computer things because I love low level programming but more specifically IC design. On the past a made a simple 16 bit CPU and assembly to run real time on my computer all by myself aswell as a crappy raspberry PI operating system but I wanna learn more about more advance subjects things like parallelism, SIMD, shared memory, FPUs, in addition to stuff like computer cluster operating systems. My issue is I’m having trouble finding information to learn about this stuff because it’s legit sooo fricken cool and I wanna make some dumb stuff like perhaps designing my own Vector logic unit from logic gates or make my own mini supercomputer operating system and data manager from raspberry pis. Any help would be so amazing thank you for your time!!
Also if anyone also likes this stuff and wants to be friends dm me I’d love to meet people o can geek out with!!
Has any1 come across a youtuber by the name Sphaerophoria?? Recently came across his channel and he's beyond insane. I know this will sound crazy but how can I be like him, in terms of the amount of the amount of information he knows.
Hello everyone! I’m working on something related to low-level programming and systems programming. I’d like to find a community or a person who shares a passion for this area so I can follow and explore more. Can anyone recommend a group or community like that?
I am a third year university student and want to make my career in low-level and systems programming ...can someone from the industry share a roadmap to follow ??
I've recently got to know how BGP speakers work and I want to make my own implementation in Rust.
How do I start? What things should I implement? How to split this big task to little subtasks?
I'm a little stuck & would absolutely appreciate any help >__<
I've been running some performance tests on a single-threaded workload using stress-ng
and monitoring the results with perf stat
. I noticed that binding the process to a specific CPU core using taskset
results in significantly more cache misses compared to running it without setting CPU affinity. Example:
Without affinity:
With taskset -c 20
:
Run script example:
taskset -c 20 stress-ng --cpu 1 --cpu-load 100 --timeout 12s &
PROCESS_PID=$!
sudo perf stat -e migrations,context-switches,cache-misses,cycles,instructions,cache-references -p $PROCESS_PID
The core 20 is aribrary (I checked others), free, not isolated.
Any ideas why I get more cache misses when isolate workload? I'd expect rather less cache misses.
OS: Ubuntu 20.04
CPU: Intel Core i9-10980XE, no NUMA.
Thanks!
Hello,
I graduated with a bachelor's and master's degree in computer science. I have been working as a professional backend developer for about 2 years. I work with Java and Spring boot at work. But what I have wanted to do since my childhood is to work with languages such as C/C++/Assembly. Do you think I should or can I work as an embedded developer? I am 25 years old and I already have advanced knowledge of C and C++. Am I too late for such a domain change or is it right to switch to embedded development just to work in C? Thank you very much in advance for your answers.
Posting here to see if anyone knows of any documentation for the DS-01 compression algorithm. This is a legacy compression algorithm for DMSDOS compressed FAT filesystems.
I have the emails from one "pali" who wrote the only DS-01 decompression implementation I can find.
I really got no idea. Can you guys give me some discord servers, groups, etc.
Or dm me if you want to :D
So the IEEE club of my university offered me to do do a research and lead a research team on any subject. The common topic for research would be AI and ML but i have decent knowledge of reverse engineering and low level stuff so i wanted to work on this subject rather than AI and ML.
So i am looking for suggestions on what unique thing I can explore and research in reverse engineering. I searched online and most of the stuff related to RE is related to malware analysis, I am also open for that idea but I first need to know my goal exactly so here I am asking for help from reddit gods. I have experience with exploring malicious stuff with volatility but again I want something unqiue with a good learning outcome so that the paper actually gets published.
One idea that has been in my mind was on reverse engineering self modifying binaries, but just analysis binaries with a RE framework won't be enough so I wanted to extend this by adding some more things into it like if I have a binary that injects shellcode during runtime and then modifies that shellcode etc etc. So pls suggestions are welcomed.