Understand your Mac and iPhone more deeply by tracing the evolution of Mac OS X from prelease to Swift. John Siracusa delivers the details.
You've got two main options:
| # IDA (disassembler) and Hex-Rays (decompiler) plugin for Apple AMX | |
| # | |
| # WIP research. (This was edited to add more info after someone posted it to | |
| # Hacker News. Click "Revisions" to see full changes.) | |
| # | |
| # Copyright (c) 2020 dougallj | |
| # Based on Python port of VMX intrinsics plugin: | |
| # Copyright (c) 2019 w4kfu - Synacktiv |
| #!/usr/bin/env bash | |
| set -Eeuo pipefail | |
| trap cleanup SIGINT SIGTERM ERR EXIT | |
| script_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd -P) | |
| usage() { | |
| cat <<EOF | |
| Usage: $(basename "${BASH_SOURCE[0]}") [-h] [-v] [-f] -p param_value arg1 [arg2...] |
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
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
| #!/usr/bin/env python3 | |
| import os | |
| import paramiko | |
| ssh_key_filename = os.getenv('HOME') + '/.ssh/id_rsa' | |
| jumpbox_public_addr = '168.128.52.199' | |
| jumpbox_private_addr = '10.0.5.10' | |
| target_addr = '10.0.5.20' |
| # Scanner i2c en MicroPython | MicroPython i2c scanner | |
| # Renvoi l'adresse en decimal et hexa de chaque device connecte sur le bus i2c | |
| # Return decimal and hexa adress of each i2c device | |
| # https://projetsdiy.fr - https://diyprojects.io (dec. 2017) | |
| import machine | |
| i2c = machine.I2C(scl=machine.Pin(5), sda=machine.Pin(4)) | |
| print('Scan i2c bus...') | |
| devices = i2c.scan() |
Simple guide for setting up OTG modes on the Raspberry Pi Zero - By Andrew Mulholland (gbaman).
The Raspberry Pi Zero (and model A and A+) support USB On The Go, given the processor is connected directly to the USB port, unlike on the B, B+ or Pi 2 B, which goes via a USB hub.
Because of this, if setup to, the Pi can act as a USB slave instead, providing virtual serial (a terminal), virtual ethernet, virtual mass storage device (pendrive) or even other virtual devices like HID, MIDI, or act as a virtual webcam!
It is important to note that, although the model A and A+ can support being a USB slave, they are missing the ID pin (is tied to ground internally) so are unable to dynamically switch between USB master/slave mode. As such, they default to USB master mode. There is no easy way to change this right now.
It is also important to note, that a USB to UART serial adapter is not needed for any of these guides, as may be documented elsewhere across the int
| // To the extent possible under law, the Yawning Angel has waived all copyright | |
| // and related or neighboring rights to orhttp_example, using the creative | |
| // commons "cc0" public domain dedication. See LICENSE or | |
| // <http://creativecommons.org/publicdomain/zero/1.0/> for full details. | |
| package main | |
| import ( | |
| // Things needed by the actual interface. | |
| "golang.org/x/net/proxy" |
| /* bling.js */ | |
| window.$ = document.querySelector.bind(document); | |
| window.$$ = document.querySelectorAll.bind(document); | |
| Node.prototype.on = window.on = function(name, fn) { this.addEventListener(name, fn); }; | |
| NodeList.prototype.__proto__ = Array.prototype; | |
| NodeList.prototype.on = function(name, fn) { this.forEach((elem) => elem.on(name, fn)); }; |
| var bleno = require('bleno'), | |
| uuid = '842AF9C408F511E39282F23C91AEC05E', | |
| major = 65000, | |
| minor = 65000, | |
| measuredPower = -59; | |
| var intervalId = setInterval(function() { | |
| bleno.stopAdvertising(); | |
| minor++; | |
| if (minor > 65009) { |