daniel-cortez / pawn-3.2-plus Goto Github PK
View Code? Open in Web Editor NEWPawn scripting language with runtime fixes and improvements
License: Other
Pawn scripting language with runtime fixes and improvements
License: Other
Proposal/Question
Ever since I saw your improvements to the runtime, specifically the address checking, I wondered, whether you would consider adding/pulling memory-mapping to the runtime. The way I imagine it could work is, that when an instruction gets invalid address, it would first check, whether it is a mapped address before returning an error.
So for example, the upper 1GB of the amx address space could be used for mapping. So the mapping code would first chceck the two most significant bits and if they are not 11, the address is not in the upper 1 GB. So it would return an error.
Otherwise it would check the third most significant bit, if it was 0, it would use segmentation. So it would strip the three most significant bits from the amx address, compare it to the size of the mapped memory and if it is lower, it would add base pointer and use that address as physical adress.
If the third most significant bit was 1, it would use paging. It would use pages up to 64 kB large, allowing for 8192 pages. Each page would have 8 byte entry in its page table. 4 bytes would be the base address, 2 bytes would be flags and 2 bytes would be the size of the page. So the page table would take up 64 kB. 13 most significant bits (exluding the 3) would be the number of the page in the page table, the remaining 16 bits would be offset from the base of the page.
This would help with a lot of functionality, such as dynamic memory, shared memory, allowing better passing of arguments between amx files (instead of copying an array/string, you would temporarily map the array to the other amx), etc.
The flags would at least contain read permission, write permission, execute permission and possibly more advanced stuff, such as copy-on-write. They could also contain technical information, such as if this is the first page in a mapping.
See pawn-lang/sa-mp-fixes#98
Desired behavior: remove only properties created by the unloaded script.
Hello everybody,
isn't there any plan for implementing these changes into a Pawn 4.0(or at least 3.10) fork ??
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.