{"id":19878377,"url":"https://github.com/pawn-lang/amx_assembly","last_synced_at":"2025-05-02T12:31:53.701Z","repository":{"id":2343449,"uuid":"3305866","full_name":"pawn-lang/amx_assembly","owner":"pawn-lang","description":"Interesting #emit stuff","archived":false,"fork":false,"pushed_at":"2023-11-08T15:36:55.000Z","size":880,"stargazers_count":59,"open_issues_count":5,"forks_count":14,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-04-07T02:06:27.322Z","etag":null,"topics":["amx","assembly","pawn","pawn-package","sa-mp"],"latest_commit_sha":null,"homepage":"","language":"Pawn","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pawn-lang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2012-01-30T15:14:38.000Z","updated_at":"2024-11-03T11:31:48.000Z","dependencies_parsed_at":"2023-10-17T04:21:49.623Z","dependency_job_id":"f66c0059-011d-4660-baaf-7f7830f8c803","html_url":"https://github.com/pawn-lang/amx_assembly","commit_stats":null,"previous_names":["pawn-lang/amx_assembly"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pawn-lang%2Famx_assembly","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pawn-lang%2Famx_assembly/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pawn-lang%2Famx_assembly/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pawn-lang%2Famx_assembly/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pawn-lang","download_url":"https://codeload.github.com/pawn-lang/amx_assembly/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252038212,"owners_count":21684654,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["amx","assembly","pawn","pawn-package","sa-mp"],"created_at":"2024-11-12T17:03:24.624Z","updated_at":"2025-05-02T12:31:51.137Z","avatar_url":"https://github.com/pawn-lang.png","language":"Pawn","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Overview\n\n* [`addressof.inc`](addressof.inc) - Provide `addressof` to get the compiled address of a function, plus runtime compilation to a simple constant, and a lightweight version with no *disasm* dependency.\n* [`amx.inc`](amx.inc) - Read/write contents of the AMX structure (`AMX` struct in C code).\n* [`amx_base.inc`](amx_base.inc) - Get base address of the AMX in memory (`amx-\u003ebase`).\n* [`amx_header.inc`](amx_header.inc) - Read contents of the AMX header (`AMX_HEADER`) and query header tables such as publics, natives, tags, etc.\n* [`amx_memory.inc`](amx_memory.inc) - Read/write contents of variables using their AMX address (kind of like pointers in C).\n* [`asm.inc`](asm.inc) - `@emit()` for generating new assembly at runtime, similar to what `#emit` and `__emit` are for compile-time.\n* [`codescan.inc`](codescan.inc) - Find patterns in bytecode.\n* [`disasm.inc`](disasm.inc) - Example of how to disassemble AMX bytecode (i.e. self-disassembly).\n* [`dynamic_call.inc`](dynamic_call.inc) - Call any function by address or index. Can be very powerful in combination with [`amx_header.inc`](amx_header.inc).\n* [`frame_info.inc`](frame_info.inc) - Get information about call frames from the stack.\n* [`heap_alloc.inc`](heap_alloc.inc) - Allocate memory on the AMX heap.\n* [`jit.inc`](jit.inc) - Check if running under the [JIT](https://github.com/Zeex/samp-plugin-jit) plugin.\n* [`opcode.inc`](opcode.inc) - List of AMX opcodes and utility functions for (un-)relocating opcodes on Linux.\n* [`os.inc`](os.inc) - Detect operating system (Windows vs Linux).\n* [`phys_memory.inc`](phys_memory.inc) - Read/write memory of the host process (outside of AMX data).\n* [`profiler.inc`](profile.inc) - Simple profiler written purely in Pawn. It can measure execution time of public functions.\n* [`shellcode.inc`](shellcode.inc) - Execute arbitrary native code (doesn't work on Linux).\n* [`stack_dump.inc`](stack_dump.inc) - Print stack contents to the console.\n* [`stack_trace.inc`](stack_trace.inc) - Print stack trace.\n* [`windows/import_table.inc`](windows/import_table.inc) - Read the PE import table of the host process.\n* [`windows/ShellExecute.inc`](windows/ShellExecute.inc) - How to use `shellcode` and `import_table` to call a Win32 API function (in this case `ShellExecuteA`).\n\n## Installation\n\nSimply install to your project:\n\n```bash\nsampctl package install amx_assembly\n```\n\nInclude in your code and begin using the library:\n\n```pawn\n#include \u003camx_assembly\\include_name_here\u003e\n```\n\n## Usage\n\nThere are a few example scripts in the `test` directory that show how to use some of these includes.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpawn-lang%2Famx_assembly","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpawn-lang%2Famx_assembly","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpawn-lang%2Famx_assembly/lists"}