pspsdk | An open-source SDK for PSP homebrew development
kandi X-RAY | pspsdk Summary
kandi X-RAY | pspsdk Summary
The PSP Software Development Kit (PSPSDK) is a collection of Open Source tools and libraries written for Sony's Playstation Portable (PSP) gaming console. It also includes documentation and other resources developers can use to write software for the PSP. PSPSDK is distributed under a BSD-compatible license, with the exception of the files located in tools/PrxEncrypter. The files located in the tools/PrxEncrypter directory are subject to the terms of the GNU General Public License version 3. See the LICENSE files for more information.
Support
Quality
Security
License
Reuse
Top functions reviewed by kandi - BETA
Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of pspsdk
pspsdk Key Features
pspsdk Examples and Code Snippets
Community Discussions
Trending Discussions on pspsdk
QUESTION
I was trying to reverse engineer some psp programs developed using the free pspsdk
https://sourceforge.net/projects/minpspw/
I noticed that i created a function to see how MIPS handles more than 4 arguments (a0-a4). Everyone i know has told me that they get passed onto the stack. To my surprise, that 5th argument was actually passed to register t0 and to compiler didn't even use the stack!
it also inlined a function without even having used a jal or jump to it. (obvious optimization). Altough there was indeed a space a memory and you could double check by using print with function pointer argument. That actual code that was executed was automatically inlined without the need of a function call instruction.
^^ but that doesn't really benefit me for a reverse engineer attempt...
there is a man page for this version of gcc. and it takes seconds to install if anyone is able to provide it's man for compilation if there is one. It's so long i don't even know how to reference information reliably
...ANSWER
Answered 2020-Jan-24 at 09:50How arguments are passed is specified by the ABI (application binary interface). So you have to find respective documents.
Moreover, there is more than one such ABI, namely n32
and n64
. In the case of mips-gcc
, some of the decisions are commented in the GCC sources like in ./gcc/config/mips/mips.h
QUESTION
Imagine we have a usual instruction such as this one
...ANSWER
Answered 2020-Jan-23 at 12:30Intercepting an instruction that writes to a particular address is not a normal activity in programs.
It is a feature provided by some debuggers. There are at least three ways debuggers may be able to do this:
- A debugger can examine the program code and find where a particular instruction writes to a particular address. This is actually a hugely complicated activity that requires interpreting the instructions. Often, a debugger cannot do it completely; as doing so in general is equivalent to completely interpreting and executing the program the same way the computer processor does, and it is very slow to do in software. Instead, the debugger may plan part of program execution and put in a breakpoint at a spot where it is unable to easily continue, such as at a branch instruction that depends on a value the debugger is not prepared to compute. A breakpoint is a special instruction that interrupts program execution and, in this case, results in the operating system transferring control to the debugger. At that time, the debugger removes the breakpoint, requests that the instruction be single-stepped (that the processor execute the single instruction and then interrupt program execution immediately), examines the result, and continues.
- A debugger can mark the page of memory containing the desired address as no-access. Then, whenever the program accesses that memory, the hardware will interrupt program execution, and the operating system will transfer control to the debugger. The debugger examines the instruction that caused the interruption. If the instruction is accessing the target address, the debugger acts on that. If it is not, the debugger changes the memory protection to allow access, requests that the instruction be single-stepped, changes the memory protection to disallow access, and resumes the program to wait for the next interruption. (Instead of single-stepping the instruction, the debugger might just emulate it, since that might avoid changing the memory protection twice, which can be expensive.)
- Some computer processor models have features to support this sort of debugging feature. The debugger can request that a portion of memory be monitored, so that the hardware interrupts program execution when a particular address is accessed, instead of when any part of a whole memory page is accessed.
I cannot speak to the Sony platform you are using. You would have to check its documentation or ask others regarding the availability of such features. Since this is a feature most often used by debuggers, investigating the documentation regarding debugging could be a way to find out whether the system supports such a feature.
QUESTION
psp-gcc -I. -IC:/pspsdk/psp/sdk/include -O2 -G0 -Wall -D_PSP_FW_VERSION=150 -L. -LC:/pspsdk/psp/sdk/lib main.o -lpspdebug -lpspdisplay -lpspge -lpspctrl -lpspsdk -lc -lpspnet -lpspnet_inet -lpspnet_apctl -lpspnet_resolver -lpsputility -lpspuser -lpspkernel -o controller_basic.elf
...ANSWER
Answered 2020-Jan-21 at 02:11The .
(dot) refers to the current directory. Therefore these options are specifying that the current directory should be searched for any required header files (-I.
) and any required libraries (-L.
).
From the GCC manual:
Community Discussions, Code Snippets contain sources that include Stack Exchange Network
Vulnerabilities
No vulnerabilities reported
Install pspsdk
Download the PSPSDK binary package specific to your development system. For example, if you are using Windows, you will want to download the file pspsdk-1.0-win32.zip. Extract or unzip the package into the folder where the PSPDEV toolchain is installed. For example, on a Windows system you may have installed the PSPDEV toolchain to C:\pspdev. You would then unzip PSPSDK into C:\pspdev. Update your PATH environment variable to point to the PSPSDK tools directory. In the above example, if you installed PSPSDK to C:\pspdev, you would add C:\pspdev\bin to your PATH.
PSPSDK uses the GNU autotools (autoconf and automake) for its build system. To install PSPSDK from a source distribution, run the following commands after unpacking it:. If you haven't installed Doxygen or don't want to build the library documentation, you can skip the third step.
PSPSDK can be found in the Git repository located at https://github.com/pspdev/pspsdk. If you are using the command line version of the git client, you can the following command to download PSPSDK:.
Support
Reuse Trending Solutions
Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items
Find more librariesStay Updated
Subscribe to our newsletter for trending solutions and developer bootcamps
Share this Page