เจเฉเจฐเฉเจตเจฟเจธ เจธเฉเจเจ เจธเฉเจซเจเจตเฉเจ
เจฐ เจฌเจฃเจพเจเจฃ เจ
เจคเฉ เจเฉเจธเจ เจเจฐเจจ เจฒเจ เจเฉฑเจ เจตเจฟเจคเจฐเจฟเจค เจตเฉเฉฑเจฌ เจธเฉเจตเจพ เจนเฉ เจเฉ GitHub เจจเฉเฉฐ เจธเจฐเฉเจค เจเฉเจก เจนเฉเจธเจเจฟเฉฐเจ เจตเจเฉเจ เจตเจฐเจคเจฆเฉ เจนเฉเฅค เจเจชเจฐเฉเจเจค เจเจชเจฐเฉเจเจฟเฉฐเจ เจฆเฉเจฐเจฟเจธเจผเจพเจ เจคเฉเจ เจเจฒเจพเจตเจพ, เจคเฉเจธเฉเจ เจตเจฟเจเจชเจ เจธเฉฐเจฐเจเจจเจพ เจตเจฟเจเจฒเจชเจพเจ เจฒเจ เจเจชเจฃเจพ เจงเฉฐเจจเจตเจพเจฆ เจเฉเฉ เจธเจเจฆเฉ เจนเฉเฅค เจเจธ เจฒเฉเจ เจตเจฟเฉฑเจ เจ
เจธเฉเจ PPSSPP เจเฉเจก เจเจฆเจพเจนเจฐเจจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ PVS-Studio เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจจ เจฒเจ Travis CI เจจเฉเฉฐ เจเฉเจเจซเจฟเจเจฐ เจเจฐเจพเจเจเฉเฅค
เจเจพเจฃ เจชเจเจพเจฃ
เจเฉเจฐเฉเจตเจฟเจธ เจธเฉเจเจ เจธเจฅเจพเจชเจค เจเจฐเจจเจพ
เจธเจพเจจเฉเฉฐ GitHub 'เจคเฉ เจเฉฑเจ เจฐเจฟเจชเฉเจเจผเจเจฐเฉ เจฆเฉ เจฒเฉเฉ เจชเจตเฉเจเฉ, เจเจฟเฉฑเจฅเฉ เจธเจพเจจเฉเฉฐ เจฒเฉเฉเฉเจเจฆเจพ เจชเฉเจฐเฉเจเฉเจเจ เจธเจฅเจฟเจค เจนเฉ, เจจเจพเจฒ เจนเฉ PVS-เจธเจเฉเจกเฉเจ เจฒเจ เจเฉฑเจ เจเฉเฉฐเจเฉ (เจคเฉเจธเฉเจ เจชเฉเจฐเจพเจชเจค เจเจฐ เจธเจเจฆเฉ เจนเฉ)
เจเจ เจธเจพเจเจ 'เจคเฉ เจเฉฑเจฒเฉเจ
เจเฉเจธเจ เจฒเจ, เจฎเฉเจ PPSSPP เจจเฉเฉฐ เจซเฉเจฐเจ เจเฉเจคเจพเฅค
เจ เจธเฉเจ เจฐเจฟเจชเฉเจเจผเจเจฐเฉ เจจเฉเฉฐ เจธเจฐเจเจฐเจฎ เจเจฐเจฆเฉ เจนเจพเจ เจเจฟเจธ เจจเฉเฉฐ เจ เจธเฉเจ เจเจเฉฑเจ เจพ เจเจฐเจจเจพ เจเจพเจนเฉเฉฐเจฆเฉ เจนเจพเจ:
เจเจธ เจธเจฎเฉเจ, เจเฉเจฐเฉเจตเจฟเจธ เจธเฉเจเจ เจธเจพเจกเฉ เจชเฉเจฐเฉเจเฉเจเจ เจจเฉเฉฐ เจจเจนเฉเจ เจฌเจฃเจพ เจธเจเจฆเจพ เจเจฟเจเจเจเจฟ เจเจฎเจพเจฐเจค เจฒเจ เจเฉเจ เจจเจฟเจฐเจฆเฉเจธเจผ เจจเจนเฉเจ เจนเจจเฅค เจเจธ เจฒเจ เจเจน เจธเฉฐเจฐเจเจจเจพ เจฒเจ เจธเจฎเจพเจ เจนเฉ.
เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ เจฆเฉ เจฆเฉเจฐเจพเจจ, เจเฉเจ เจตเฉเจฐเฉเจเจฌเจฒ เจธเจพเจกเฉ เจฒเจ เจฒเจพเจญเจฆเจพเจเจ เจนเฉเจฃเจเฉ, เจเจฆเจพเจนเจฐเจจ เจฒเจ, PVS-เจธเจเฉเจกเฉเจ เจฒเจ เจเฉเฉฐเจเฉ, เจเฉ เจเจฟ เจธเฉฐเจฐเจเจจเจพ เจซเจพเจเจฒ เจตเจฟเฉฑเจ เจจเจฟเจฐเจฆเจฟเจธเจผเจ เจเจฐเจจ เจฒเจ เจ เจฃเจเจพเจนเฉ เจนเฉเจตเฉเจเฉเฅค เจคเจพเจ เจเจ เจเฉเจฐเฉเจตเจฟเจธ เจธเฉเจเจ เจตเจฟเฉฑเจ เจฌเจฟเจฒเจก เจธเฉเจเจฟเฉฐเจเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจตเจพเจคเจพเจตเจฐเจฃ เจตเฉเจฐเฉเจเจฌเจฒ เจเฉเฉเฉเจ:
เจธเจพเจจเฉเฉฐ เจฒเฉเฉ เจนเฉเจตเฉเจเฉ:
- PVS_USERNAME - เจเจชเจญเฉเจเจคเจพ เจจเจพเจฎ
- PVS_KEY - เจเฉเฉฐเจเฉ
- MAIL_USER - เจเจฎเฉเจฒ เจเฉ เจฐเจฟเจชเฉเจฐเจ เจญเฉเจเจฃ เจฒเจ เจตเจฐเจคเฉ เจเจพเจตเฉเจเฉ
- MAIL_PASSWORD - เจเจฎเฉเจฒ เจชเจพเจธเจตเจฐเจก
เจเจเจฐเฉ เจฆเฉ เจตเจฟเจเจฒเจชเจฟเจ เจนเจจเฅค เจเจนเจจเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจกเจพเจ เจฐเจพเจนเฉเจ เจจเจคเฉเจเฉ เจญเฉเจเจฃ เจฒเจ เจเฉเจคเฉ เจเจพเจตเฉเจเฉเฅค เจเฉเจเจฐ เจคเฉเจธเฉเจ เจฐเจฟเจชเฉเจฐเจ เจจเฉเฉฐ เจเจฟเจธเฉ เจนเฉเจฐ เจคเจฐเฉเจเฉ เจจเจพเจฒ เจตเฉฐเจกเจฃเจพ เจเจพเจนเฉเฉฐเจฆเฉ เจนเฉ, เจคเจพเจ เจคเฉเจนเจพเจจเฉเฉฐ เจเจนเจจเจพเจ เจจเฉเฉฐ เจฆเจฐเจธเจพเจเจฃ เจฆเฉ เจฒเฉเฉ เจจเจนเฉเจ เจนเฉเฅค
เจเจธ เจฒเจ, เจ เจธเฉเจ เจตเจพเจคเจพเจตเจฐเจฃ เจตเฉเจฐเฉเจเจฌเจฒ เจธเจผเจพเจฎเจฒ เจเฉเจคเฉ เจนเจจ เจเจฟเจจเฉเจนเจพเจ เจฆเฉ เจธเจพเจจเฉเฉฐ เจฒเฉเฉ เจนเฉ:
เจนเฉเจฃ เจเฉฑเจ เจซเจพเจเจฒ เจฌเจฃเจพเจ .travis.yml เจ
เจคเฉ เจเจธเจจเฉเฉฐ เจชเฉเจฐเฉเจเฉเจเจ เจฆเฉ เจฐเฉเจ เจตเจฟเฉฑเจ เจฐเฉฑเจเฉเฅค PPSSPP เจเฉเจฒ เจชเจนเจฟเจฒเจพเจ เจนเฉ เจเฉเจฐเฉเจตเจฟเจธ เจธเฉเจเจ เจฒเจ เจเฉฑเจ เจธเฉฐเจฐเจเจจเจพ เจซเจพเจเจฒ เจธเฉ, เจนเจพเจฒเจพเจเจเจฟ, เจเจน เจฌเจนเฉเจค เจตเฉฑเจกเฉ เจธเฉ เจ
เจคเฉ เจเจฆเจพเจนเจฐเจจ เจฒเจ เจชเฉเจฐเฉ เจคเจฐเฉเจนเจพเจ เจ
เจขเฉเจเจตเฉเจ เจธเฉ, เจเจธเจฒเจ เจธเจพเจจเฉเฉฐ เจเจธเจจเฉเฉฐ เจฌเจนเฉเจค เจธเจฐเจฒ เจฌเจฃเจพเจเจฃเจพ เจชเจฟเจ เจ
เจคเฉ เจธเจฟเจฐเจซ เจฌเฉเจจเจฟเจเจฆเฉ เจคเฉฑเจคเจพเจ เจจเฉเฉฐ เจเฉฑเจกเจฃเจพ เจชเจฟเจเฅค
เจชเจนเจฟเจฒเจพเจ, เจเจ เจญเจพเจธเจผเจพ, เจเจฌเฉฐเจเฉ เจฒเฉเจจเจเจธ เจฆเฉ เจธเฉฐเจธเจเจฐเจฃ เจจเฉเฉฐ เจฆเจฐเจธเจพเจเจเจฆเฉ เจนเจพเจ เจเฉ เจ เจธเฉเจ เจตเจฐเจเฉเจ เจฒ เจฎเจธเจผเฉเจจ เจตเจฟเฉฑเจ เจตเจฐเจคเจฃเจพ เจเจพเจนเฉเฉฐเจฆเฉ เจนเจพเจ, เจ เจคเฉ เจฌเจฟเจฒเจก เจฒเจ เจฒเฉเฉเฉเจเจฆเฉ เจชเฉเจเฉเจ:
language: cpp
dist: xenial
addons:
apt:
update: true
packages:
- ant
- aria2
- build-essential
- cmake
- libgl1-mesa-dev
- libglu1-mesa-dev
- libsdl2-dev
- pv
- sendemail
- software-properties-common
sources:
- sourceline: 'ppa:ubuntu-toolchain-r/test'
- sourceline: 'ppa:ubuntu-sdk-team/ppa'
เจธเฉเจเฉเจฌเฉฑเจง เจเฉเจคเฉ เจเจ เจธเจพเจฐเฉ เจชเฉเจเฉเจ เจธเจฟเจฐเจซเจผ PPSSPP เจฒเจ เจฒเฉเฉเฉเจเจฆเฉ เจนเจจเฅค
เจนเฉเจฃ เจ เจธเฉเจ เจ เจธเฉเจเจฌเจฒเฉ เจฎเฉเจเฉเจฐเจฟเจเจธ เจจเฉเฉฐ เจฆเจฐเจธเจพเจเจเจฆเฉ เจนเจพเจ:
matrix:
include:
- os: linux
compiler: "gcc"
env: PPSSPP_BUILD_TYPE=Linux PVS_ANALYZE=Yes
- os: linux
compiler: "clang"
env: PPSSPP_BUILD_TYPE=Linux
เจญเจพเจ เจฌเจพเจฐเฉ เจฅเฉเฉเจพ เจนเฉเจฐ เจฎเฉเจเจฐเจฟเจเจธ. เจเฉเจฐเฉเจตเจฟเจธ เจธเฉเจเจ เจตเจฟเฉฑเจ, เจฌเจฟเจฒเจก เจตเจฟเจเจฒเจช เจฌเจฃเจพเจเจฃ เจฆเฉ เจฆเฉ เจคเจฐเฉเจเฉ เจนเจจ: เจชเจนเจฟเจฒเจพ เจเฉฐเจชเจพเจเจฒเจฐ, เจเจชเจฐเฉเจเจฟเฉฐเจ เจธเจฟเจธเจเจฎ เจเจฟเจธเจฎเจพเจ, เจตเจพเจคเจพเจตเจฐเจฃ เจตเฉเจฐเฉเจเจฌเจฒ, เจเจฆเจฟ เจฆเฉ เจเฉฑเจ เจธเฉเจเฉ เจจเจฟเจฐเจงเจพเจฐเจค เจเจฐเจจเจพ เจนเฉ, เจเจฟเจธ เจคเฉเจ เจฌเจพเจ
เจฆ เจธเจพเจฐเฉ เจธเฉฐเจญเจต เจธเฉฐเจเฉเจเจพเจ เจฆเจพ เจเฉฑเจ เจฎเฉเจเฉเจฐเจฟเจเจธ เจคเจฟเจเจฐ เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉ; เจฆเฉเจเจพ เจฎเฉเจเฉเจฐเจฟเจเจธ เจฆเจพ เจธเจชเจธเจผเจ เจธเฉฐเจเฉเจค เจนเฉเฅค เจฌเฉเจธเจผเฉฑเจ, เจคเฉเจธเฉเจ เจเจนเจจเจพเจ เจฆเฉ เจชเจนเฉเฉฐเจเจพเจ เจจเฉเฉฐ เจเฉเฉ เจธเจเจฆเฉ เจนเฉ เจ
เจคเฉ เจเฉฑเจ เจตเจฟเจฒเฉฑเจเจฃ เจเฉเจธ เจเฉเฉ เจธเจเจฆเฉ เจนเฉ, เจเจพเจ, เจเจธเจฆเฉ เจเจฒเจ, เจธเฉเจเจธเจผเจจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเจธเจจเฉเฉฐ เจฌเจพเจนเจฐ เจเฉฑเจข เจธเจเจฆเฉ เจนเฉ เจฌเจพเจนเจฐ เจเฉฑเจขเฉ. เจคเฉเจธเฉเจ เจเจธ เจฌเจพเจฐเฉ เจนเฉเจฐ เจชเฉเฉเจน เจธเจเจฆเฉ เจนเฉ
เจเฉ เจเฉเจ เจฌเจเจฟเจ เจนเฉ เจเจน เจชเฉเจฐเฉเจเฉเจเจ-เจตเจฟเจธเจผเฉเจธเจผ เจ เจธเฉเจเจฌเจฒเฉ เจจเจฟเจฐเจฆเฉเจธเจผ เจชเฉเจฐเจฆเจพเจจ เจเจฐเจจเจพ เจนเฉ:
before_install:
- travis_retry bash .travis.sh travis_before_install
install:
- travis_retry bash .travis.sh travis_install
script:
- bash .travis.sh travis_script
after_success:
- bash .travis.sh travis_after_success
เจเฉเจฐเฉเจตเจฟเจธ เจธเฉเจเจ เจคเฉเจนเจพเจจเฉเฉฐ เจตเจฐเจเฉเจ
เจฒ เจฎเจธเจผเฉเจจ เจฆเฉ เจเฉเจตเจจ เจฆเฉ เจตเฉฑเจ-เจตเฉฑเจ เจชเฉเจพเจตเจพเจ เจฒเจ เจเจชเจฃเฉเจเจ เจเจฎเจพเจเจกเจพเจ เจเฉเฉเจจ เจฆเฉ เจเจเจฟเจ เจฆเจฟเฉฐเจฆเจพ เจนเฉเฅค เจ
เจจเฉเจญเจพเจ เจชเจนเจฟเจฒเจพเจ_เจเฉฐเจธเจเจพเจฒ เจชเฉเจเฉเจ เจเฉฐเจธเจเจพเจฒ เจเจฐเจจ เจคเฉเจ เจชเจนเจฟเจฒเจพเจ เจเจฒเจพเจเจ เจเจพเจเจฆเจพ เจนเฉเฅค เจซเจฟเจฐ เจเฉฐเจธเจเจพเจฒ เจเจฐเฉ, เจเฉ เจเจฟ เจธเฉเจเฉ เจตเจฟเฉฑเจเฉเจ เจชเฉเจเฉเจเจพเจ เจฆเฉ เจเฉฐเจธเจเจพเจฒเฉเจธเจผเจจ เจฆเฉ เจชเจพเจฒเจฃเจพ เจเจฐเจฆเจพ เจนเฉ addons.aptเจเจฟเจธ เจฆเจพ เจ
เจธเฉเจ เจเฉฑเจชเจฐ เจธเฉฐเจเฉเจค เจเฉเจคเจพ เจนเฉเฅค เจตเจฟเจงเจพเจจ เจธเจญเจพ เจเจชเจฃเฉ เจเจช เจตเจฟเจ เจนเฉเฉฐเจฆเฉ เจนเฉ เจธเจเจฐเจฟเจชเจ. เจเฉ เจธเจญ เจเฉเจ เจ เฉเจ เจฐเจฟเจนเจพ, เจคเจพเจ เจ
เจธเฉเจ เจเจชเจฃเฉ เจเจช เจจเฉเฉฐ เจฒเฉฑเจญ เจฒเฉเจเจฆเฉ เจนเจพเจ เจธเจซเจฒเจคเจพ เจคเฉเจ เจฌเจพเจ
เจฆ (เจเจน เจเจธ เจญเจพเจ เจตเจฟเฉฑเจ เจนเฉ เจเจฟ เจ
เจธเฉเจ เจธเจฅเจฟเจฐ เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ เจเจฒเจพเจตเจพเจเจเฉ)เฅค เจเจน เจเจน เจธเจพเจฐเฉ เจเจฆเจฎ เจจเจนเฉเจ เจนเจจ เจเจฟเจจเฉเจนเจพเจ เจจเฉเฉฐ เจธเฉเจงเจฟเจ เจเจพ เจธเจเจฆเจพ เจนเฉ, เจเฉ เจคเฉเจนเจพเจจเฉเฉฐ เจนเฉเจฐ เจฒเฉเฉ เจนเฉ, เจคเจพเจ เจคเฉเจนเจพเจจเฉเฉฐ เจ
เฉฐเจฆเจฐ เจฆเฉเจเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ
เจชเฉเฉเจนเจจ เจฆเฉ เจธเฉเจ เจฒเจ, เจเจฎเจพเจเจกเจพเจ เจจเฉเฉฐ เจเฉฑเจ เจตเฉฑเจเจฐเฉ เจฒเจฟเจชเฉ เจตเจฟเฉฑเจ เจฐเฉฑเจเจฟเจ เจเจฟเจ เจธเฉ .travis.sh, เจเฉ เจเจฟ เจชเฉเจฐเฉเจเฉเจเจ เจฐเฉเจ 'เจคเฉ เจฐเฉฑเจเจฟเจ เจเจฟเจ เจนเฉเฅค
เจเจธ เจฒเจ เจธเจพเจกเฉ เจเฉเจฒ เจนเฉเจ เจฒเจฟเจเฉ เจซเจพเจเจฒ เจนเฉ .travis.yml:
language: cpp
dist: xenial
addons:
apt:
update: true
packages:
- ant
- aria2
- build-essential
- cmake
- libgl1-mesa-dev
- libglu1-mesa-dev
- libsdl2-dev
- pv
- sendemail
- software-properties-common
sources:
- sourceline: 'ppa:ubuntu-toolchain-r/test'
- sourceline: 'ppa:ubuntu-sdk-team/ppa'
matrix:
include:
- os: linux
compiler: "gcc"
env: PVS_ANALYZE=Yes
- os: linux
compiler: "clang"
before_install:
- travis_retry bash .travis.sh travis_before_install
install:
- travis_retry bash .travis.sh travis_install
script:
- bash .travis.sh travis_script
after_success:
- bash .travis.sh travis_after_success
เจชเฉเจเฉเจ เจเฉฐเจธเจเจพเจฒ เจเจฐเจจ เจคเฉเจ เจชเจนเจฟเจฒเจพเจ, เจ เจธเฉเจ เจธเจฌ-เจฎเฉเจกเจฟเจเจฒเจพเจ เจจเฉเฉฐ เจ เฉฑเจชเจกเฉเจ เจเจฐเจพเจเจเฉเฅค PPSSPP เจฌเจฃเจพเจเจฃ เจฒเจ เจเจธเจฆเฉ เจฒเฉเฉ เจนเฉเฅค เจฆเฉ เจชเจนเจฟเจฒเฉ เจซเฉฐเจเจธเจผเจจ เจจเฉเฉฐ เจเฉเฉเจฆเฉ เจนเจพเจ .travis.sh (เจเจเจธเจเฉเจเจธเจผเจจ เจจเฉเจ เจเจฐเฉ):
travis_before_install() {
git submodule update --init --recursive
}
เจนเฉเจฃ เจ เจธเฉเจ เจธเจฟเฉฑเจงเฉ เจคเฉเจฐ 'เจคเฉ เจเฉเจฐเฉเจตเจฟเจธ เจธเฉเจเจ เจตเจฟเฉฑเจ เจชเฉเจตเฉเจเจธ-เจธเจเฉเจกเฉเจ เจฆเฉ เจเจเฉเจฎเฉเจเจฟเจ เจฒเจพเจเจ เจจเฉเฉฐ เจธเจฅเจพเจชเจค เจเจฐเจจ เจฒเจ เจเจเจเจฆเฉ เจนเจพเจเฅค เจชเจนเจฟเจฒเจพเจ เจธเจพเจจเฉเฉฐ เจธเจฟเจธเจเจฎ 'เจคเฉ PVS-เจธเจเฉเจกเฉเจ เจชเฉเจเฉเจ เจจเฉเฉฐ เจเฉฐเจธเจเจพเจฒ เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉ:
travis_install() {
if [ "$CXX" = "g++" ]; then
sudo apt-get install -qq g++-4.8
fi
if [ "$PVS_ANALYZE" = "Yes" ]; then
wget -q -O - https://files.viva64.com/etc/pubkey.txt
| sudo apt-key add -
sudo wget -O /etc/apt/sources.list.d/viva64.list
https://files.viva64.com/etc/viva64.list
sudo apt-get update -qq
sudo apt-get install -qq pvs-studio
libio-socket-ssl-perl
libnet-ssleay-perl
fi
download_extract
"https://cmake.org/files/v3.6/cmake-3.6.2-Linux-x86_64.tar.gz"
cmake-3.6.2-Linux-x86_64.tar.gz
}
เจธเจฎเจพเจเจฎ เจฆเฉ เจธเจผเฉเจฐเฉเจเจค เจตเจฟเฉฑเจ เจธ travis_install เจ เจธเฉเจ เจตเจพเจคเจพเจตเจฐเจฃ เจตเฉเจฐเฉเจเจฌเจฒ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเฉฐเจชเจพเจเจฒเจฐ เจธเจฅเจพเจชเจฟเจค เจเจฐเจฆเฉ เจนเจพเจเฅค เจซเจฟเจฐ เจเฉเจเจฐ เจตเฉเจฐเฉเจเจฌเจฒ $PVS_ANALYZE เจธเจเฉเจฐ เจฎเฉเฉฑเจฒ เจเฉ (เจ เจธเฉเจ เจเจธ เจจเฉเฉฐ เจญเจพเจ เจตเจฟเฉฑเจ เจฆเจฐเจธเจพเจเจ เจนเฉ เจญเฉเจเฉ เจฌเจฟเจฒเจก เจฎเฉเจเฉเจฐเจฟเจเจธ เจเฉเจเจซเจฟเจเจฐเฉเจธเจผเจจ เจฆเฉ เจฆเฉเจฐเจพเจจ), เจ เจธเฉเจ เจชเฉเจเฉเจ เจจเฉเฉฐ เจเฉฐเจธเจเจพเจฒ เจเจฐเจฆเฉ เจนเจพเจ pvs-เจธเจเฉเจกเฉเจ. เจเจธ เจคเฉเจ เจเจฒเจพเจตเจพ, เจชเฉเจเฉเจ เจตเฉ เจฆเจฐเจธเจพเจ เจเจ เจนเจจ libio-socket-ssl-perl ะธ libnet-ssleay-perl, เจนเจพเจฒเจพเจเจเจฟ, เจเจนเจจเจพเจ เจจเฉเฉฐ เจฎเฉเจฒเจฟเฉฐเจ เจจเจคเฉเจเจฟเจเจ เจฒเจ เจฒเฉเฉเฉเจเจฆเจพ เจนเฉ, เจเจธ เจฒเจ เจเฉเจเจฐ เจคเฉเจธเฉเจ เจเจชเจฃเฉ เจฐเจฟเจชเฉเจฐเจ เจชเฉเจฐเจฆเจพเจจ เจเจฐเจจ เจฒเจ เจเฉเจ เจนเฉเจฐ เจคเจฐเฉเจเจพ เจเฉเจฃเจฟเจ เจนเฉ เจคเจพเจ เจเจน เจเจผเจฐเฉเจฐเฉ เจจเจนเฉเจ เจนเจจเฅค
เจซเฉฐเจเจธเจผเจจ download_extract เจจเจฟเจฐเจงเจพเจฐเจค เจชเฉเจฐเจพเจฒเฉเจ เจจเฉเฉฐ เจกเจพเจเจจเจฒเฉเจก เจ เจคเฉ เจ เจจเจชเฉเจ เจเจฐเจฆเจพ เจนเฉ:
download_extract() {
aria2c -x 16 $1 -o $2
tar -xf $2
}
เจเจน เจชเฉเจฐเฉเจเฉเจเจ เจจเฉเฉฐ เจเจเฉฑเจ เฉ เจฐเฉฑเจเจฃ เจฆเจพ เจธเจฎเจพเจ เจนเฉ. เจเจน เจญเจพเจ เจตเจฟเฉฑเจ เจตเจพเจชเจฐเจฆเจพ เจนเฉ เจธเจเจฐเจฟเจชเจ:
travis_script() {
if [ -d cmake-3.6.2-Linux-x86_64 ]; then
export PATH=$(pwd)/cmake-3.6.2-Linux-x86_64/bin:$PATH
fi
CMAKE_ARGS="-DHEADLESS=ON ${CMAKE_ARGS}"
if [ "$PVS_ANALYZE" = "Yes" ]; then
CMAKE_ARGS="-DCMAKE_EXPORT_COMPILE_COMMANDS=On ${CMAKE_ARGS}"
fi
cmake $CMAKE_ARGS CMakeLists.txt
make
}
เจตเจพเจธเจคเจต เจตเจฟเฉฑเจ, เจเจนเจจเจพเจ เจฒเจพเจเจจเจพเจ เจจเฉเฉฐ เจเฉฑเจก เจเฉ, เจเจน เจเฉฑเจ เจธเจงเจพเจฐเจจ เจฎเฉเจฒ เจธเฉฐเจฐเจเจจเจพ เจนเฉ:
if [ "$PVS_ANALYZE" = "Yes" ]; then
CMAKE_ARGS="-DCMAKE_EXPORT_COMPILE_COMMANDS=On ${CMAKE_ARGS}"
fi
เจเฉเจก เจฆเฉ เจเจธ เจญเจพเจ เจตเจฟเฉฑเจ เจ
เจธเฉเจ เจธเฉเฉฑเจ เจเฉเจคเจพ เจนเฉ cmake เจเฉฐเจชเจพเจเจฒเฉเจธเจผเจจ เจเจฎเจพเจเจกเจพเจ เจจเฉเฉฐ เจจเจฟเจฐเจฏเจพเจค เจเจฐเจจ เจฒเจ เจซเจฒเฉเจ. เจเจน เจเฉฑเจ เจธเจฅเจฟเจฐ เจเฉเจก เจตเจฟเจธเจผเจฒเฉเจธเจผเจ เจฒเจ เจเจผเจฐเฉเจฐเฉ เจนเฉเฅค เจคเฉเจธเฉเจ เจเจธ เจฌเจพเจฐเฉ เจฒเฉเจ เจตเจฟเฉฑเจ เจนเฉเจฐ เจชเฉเฉเจน เจธเจเจฆเฉ เจนเฉ "
เจเฉ เจ เจธเฉเจเจฌเจฒเฉ เจธเจซเจฒ เจฐเจนเฉ, เจคเจพเจ เจ เจธเฉเจ เจชเฉเจฐเจพเจชเจค เจเจฐเจพเจเจเฉ เจธเจซเจฒเจคเจพ เจคเฉเจ เจฌเจพเจ เจฆ, เจเจฟเฉฑเจฅเฉ เจ เจธเฉเจ เจธเจฅเจฟเจฐ เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ เจเจฐเจฆเฉ เจนเจพเจ:
travis_after_success() {
if [ "$PVS_ANALYZE" = "Yes" ]; then
pvs-studio-analyzer credentials $PVS_USERNAME $PVS_KEY -o PVS-Studio.lic
pvs-studio-analyzer analyze -j2 -l PVS-Studio.lic
-o PVS-Studio-${CC}.log
--disableLicenseExpirationCheck
plog-converter -t html PVS-Studio-${CC}.log -o PVS-Studio-${CC}.html
sendemail -t [email protected]
-u "PVS-Studio $CC report, commit:$TRAVIS_COMMIT"
-m "PVS-Studio $CC report, commit:$TRAVIS_COMMIT"
-s smtp.gmail.com:587
-xu $MAIL_USER
-xp $MAIL_PASSWORD
-o tls=yes
-f $MAIL_USER
-a PVS-Studio-${CC}.log PVS-Studio-${CC}.html
fi
}
เจเจ เจนเฉเจ เจฒเจฟเจเฉเจเจ เจฒเจพเจเจจเจพเจ 'เจคเฉ เจกเฉเฉฐเจเจพเจ เจจเจพเจฒ เจตเจฟเจเจพเจฐ เจเจฐเฉเจ:
pvs-studio-analyzer credentials $PVS_USERNAME $PVS_KEY -o PVS-Studio.lic
pvs-studio-analyzer analyze -j2 -l PVS-Studio.lic
-o PVS-Studio-${CC}.log
--disableLicenseExpirationCheck
plog-converter -t html PVS-Studio-${CC}.log -o PVS-Studio-${CC}.html
เจชเจนเจฟเจฒเฉ เจฒเจพเจเจจ เจเจชเจญเฉเจเจคเจพ เจจเจพเจฎ เจ เจคเฉ เจเฉเฉฐเจเฉ เจคเฉเจ เจเฉฑเจ เจฒเจพเจเจธเฉเจเจธ เจซเจพเจเจฒ เจคเจฟเจเจฐ เจเจฐเจฆเฉ เจนเฉ เจเฉ เจ เจธเฉเจ เจเฉเจฐเฉเจตเจฟเจธ CI เจตเจพเจคเจพเจตเจฐเจฃ เจตเฉเจฐเฉเจเจฌเจฒเจพเจ เจจเฉเฉฐ เจธเจฅเจพเจชเจค เจเจฐเจจ เจตเฉเจฒเฉ เจฌเจนเฉเจค เจธเจผเฉเจฐเฉ เจตเจฟเฉฑเจ เจจเจฟเจฐเจงเจพเจฐเจค เจเฉเจคเฉ เจธเฉเฅค
เจฆเฉเจเฉ เจฒเจพเจเจจ เจธเจฟเฉฑเจงเจพ เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ เจธเจผเฉเจฐเฉ เจเจฐเจฆเฉ เจนเฉเฅค เจเฉฐเจกเจพ -เจเฉ เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ, เจซเจฒเฉเจ เจฒเจ เจฅเจฐเจฟเฉฑเจกเจพเจ เจฆเฉ เจเจฟเจฃเจคเฉ เจธเฉเฉฑเจ เจเจฐเจฆเจพ เจนเฉ -l เจฒเจพเจเจธเฉเจเจธ, เจเฉฐเจกเจพ เจฆเจฐเจธเจพเจเจเจฆเจพ เจนเฉ -เจ เจเจเจเจชเฉเฉฑเจเจฟเฉฐเจ เจฒเฉเจเจธ เจ เจคเฉ เจซเจฒเฉเจ เจฒเจ เจซเจพเจเจฒ เจจเฉเฉฐ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจเจฐเจฆเจพ เจนเฉ -เจฒเจพเจเจธเฉเจเจธ เจฆเฉ เจฎเจฟเจเจฆ เจชเฉเฉฑเจเจฃ เจฆเฉ เจเจพเจเจ เจจเฉเฉฐ เจ เจฏเฉเจ เจเจฐเฉ เจ เจเจผเจฎเจพเจเจธเจผ เจธเฉฐเจธเจเจฐเจฃเจพเจ เจฒเจ เจฒเฉเฉเฉเจเจฆเจพ เจนเฉ, เจเจฟเจเจเจเจฟ เจฎเฉเจฒ เจฐเฉเจช เจตเจฟเฉฑเจ pvs-เจธเจเฉเจกเฉเจ-เจตเจฟเจธเจผเจฒเฉเจธเจผเจ เจเจชเจญเฉเจเจคเจพ เจจเฉเฉฐ เจเฉเจคเจพเจตเจจเฉ เจฆเฉเจตเฉเจเจพ เจเจฟ เจฒเจพเจเจธเฉเจเจธ เจฆเฉ เจฎเจฟเจเจฆ เจเจคเจฎ เจนเฉเจฃ เจตเจพเจฒเฉ เจนเฉเฅค เจ เจเจฟเจนเจพ เจนเฉเจฃ เจคเฉเจ เจฐเฉเจเจฃ เจฒเจ, เจคเฉเจธเฉเจ เจเจธ เจซเจฒเฉเจ เจจเฉเฉฐ เจจเจฟเจธเจผเจเจฟเจค เจเจฐ เจธเจเจฆเฉ เจนเฉเฅค
เจฒเฉเจ เจซเจพเจเจฒ เจตเจฟเฉฑเจ เจเฉฑเจเฉ เจเจเจเจชเฉเฉฑเจ เจนเฉเฉฐเจฆเฉ เจนเฉ เจเจฟเจธเจจเฉเฉฐ เจชเจฐเจฟเจตเจฐเจคเจจ เจคเฉเจ เจฌเจฟเจจเจพเจ เจชเฉเฉเจนเจฟเจ เจจเจนเฉเจ เจเจพ เจธเจเจฆเจพ, เจเจธ เจฒเจ เจคเฉเจนเจพเจจเฉเฉฐ เจชเจนเจฟเจฒเจพเจ เจซเจพเจเจฒ เจจเฉเฉฐ เจชเฉเฉเจนเจจเจฏเฉเจ เจฌเจฃเจพเจเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉเฅค เจเจ เจฒเฉเจเจธ เจจเฉเฉฐ เจชเจพเจธ เจเจฐเฉเจ เจชเจฒเฉฑเจ-เจเจจเจตเจฐเจเจฐ, เจ เจคเฉ เจเจเจเจชเฉเฉฑเจ เจเฉฑเจ html เจซเจพเจเจฒ เจนเฉเฅค
เจเจธ เจเจฆเจพเจนเจฐเจจ เจตเจฟเฉฑเจ, เจฎเฉเจ เจเจฎเจพเจเจก เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจกเจพเจ เจฐเจพเจนเฉเจ เจฐเจฟเจชเฉเจฐเจเจพเจ เจญเฉเจเจฃ เจฆเจพ เจซเฉเจธเจฒเจพ เจเฉเจคเจพ เจนเฉ เจเจฎเฉเจฒ เจญเฉเจเฉ.
เจจเจคเฉเจเฉ เจตเจเฉเจ, เจธเจพเจจเฉเฉฐ เจนเฉเจ เจฒเจฟเจเฉ เจซเจพเจเจฒ เจฎเจฟเจฒเฉ .travis.sh:
#/bin/bash
travis_before_install() {
git submodule update --init --recursive
}
download_extract() {
aria2c -x 16 $1 -o $2
tar -xf $2
}
travis_install() {
if [ "$CXX" = "g++" ]; then
sudo apt-get install -qq g++-4.8
fi
if [ "$PVS_ANALYZE" = "Yes" ]; then
wget -q -O - https://files.viva64.com/etc/pubkey.txt
| sudo apt-key add -
sudo wget -O /etc/apt/sources.list.d/viva64.list
https://files.viva64.com/etc/viva64.list
sudo apt-get update -qq
sudo apt-get install -qq pvs-studio
libio-socket-ssl-perl
libnet-ssleay-perl
fi
download_extract
"https://cmake.org/files/v3.6/cmake-3.6.2-Linux-x86_64.tar.gz"
cmake-3.6.2-Linux-x86_64.tar.gz
}
travis_script() {
if [ -d cmake-3.6.2-Linux-x86_64 ]; then
export PATH=$(pwd)/cmake-3.6.2-Linux-x86_64/bin:$PATH
fi
CMAKE_ARGS="-DHEADLESS=ON ${CMAKE_ARGS}"
if [ "$PVS_ANALYZE" = "Yes" ]; then
CMAKE_ARGS="-DCMAKE_EXPORT_COMPILE_COMMANDS=On ${CMAKE_ARGS}"
fi
cmake $CMAKE_ARGS CMakeLists.txt
make
}
travis_after_success() {
if [ "$PVS_ANALYZE" = "Yes" ]; then
pvs-studio-analyzer credentials $PVS_USERNAME $PVS_KEY -o PVS-Studio.lic
pvs-studio-analyzer analyze -j2 -l PVS-Studio.lic
-o PVS-Studio-${CC}.log
--disableLicenseExpirationCheck
plog-converter -t html PVS-Studio-${CC}.log -o PVS-Studio-${CC}.html
sendemail -t [email protected]
-u "PVS-Studio $CC report, commit:$TRAVIS_COMMIT"
-m "PVS-Studio $CC report, commit:$TRAVIS_COMMIT"
-s smtp.gmail.com:587
-xu $MAIL_USER
-xp $MAIL_PASSWORD
-o tls=yes
-f $MAIL_USER
-a PVS-Studio-${CC}.log PVS-Studio-${CC}.html
fi
}
set -e
set -x
$1;
เจนเฉเจฃ เจเจน เจเจฟเฉฑเจ เจฐเจฟเจชเฉเจเจผเจเจฐเฉ เจตเจฟเฉฑเจ เจคเจฌเจฆเฉเจฒเฉเจเจ เจจเฉเฉฐ เจงเฉฑเจเจฃ เจฆเจพ เจธเจฎเจพเจ เจนเฉ, เจเจฟเจธ เจคเฉเจ เจฌเจพเจ เจฆ เจเฉเจฐเฉเจตเจฟเจธ เจธเฉเจเจ เจเจชเจฃเฉ เจเจช เจฌเจฟเจฒเจก เจจเฉเฉฐ เจเจฒเจพเจเจเจพ. เจฌเจฟเจฒเจก เจฐเจฟเจชเฉเจฐเจเจพเจ 'เจคเฉ เจเจพเจฃ เจฒเจ "ppsspp" 'เจคเฉ เจเจฒเจฟเฉฑเจ เจเจฐเฉ:
เจ
เจธเฉเจ เจฎเฉเจเฉเจฆเจพ เจฌเจฟเจฒเจก เจฆเฉ เจเฉฑเจ เจธเฉฐเจเฉเจช เจเจพเจฃเจเจพเจฐเฉ เจฆเฉเจเจพเจเจเฉ:
เจเฉเจเจฐ เจฌเจฟเจฒเจก เจธเจซเจฒเจคเจพเจชเฉเจฐเจตเจ เจชเฉเจฐเจพ เจนเฉ เจเจฟเจ เจนเฉ, เจคเจพเจ เจธเจพเจจเฉเฉฐ เจธเจฅเจฟเจฐ เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ เจฆเฉ เจจเจคเฉเจเจฟเจเจ เจฆเฉ เจจเจพเจฒ เจเฉฑเจ เจเจฎเฉเจฒ เจชเฉเจฐเจพเจชเจค เจนเฉเจตเฉเจเฉเฅค เจฌเฉเจธเจผเฉฑเจ, เจฎเฉเจฒเจฟเฉฐเจ เจฐเจฟเจชเฉเจฐเจ เจชเฉเจฐเจพเจชเจค เจเจฐเจจ เจฆเจพ เจเฉฑเจเฉ เจเฉฑเจ เจคเจฐเฉเจเจพ เจจเจนเฉเจ เจนเฉเฅค เจคเฉเจธเฉเจ เจเฉเจ เจตเฉ เจฒเจพเจเฉ เจเจฐเจจ เจฆเจพ เจคเจฐเฉเจเจพ เจเฉเจฃ เจธเจเจฆเฉ เจนเฉเฅค เจชเจฐ เจเจน เจฏเจพเจฆ เจฐเฉฑเจเจฃเจพ เจฎเจนเฉฑเจคเจตเจชเฉเจฐเจจ เจนเฉ เจเจฟ เจฌเจฟเจฒเจก เจชเฉเจฐเจพ เจนเฉเจฃ เจคเฉเจ เจฌเจพเจ
เจฆ, เจตเจฐเจเฉเจ
เจฒ เจฎเจธเจผเฉเจจ เจซเจพเจเจฒเจพเจ เจคเฉฑเจ เจชเจนเฉเฉฐเจ เจเจฐเจจเจพ เจธเฉฐเจญเจต เจจเจนเฉเจ เจนเฉเจตเฉเจเจพเฅค
เจเจฒเจคเฉ เจธเฉฐเจเฉเจช
เจ เจธเฉเจ เจธเจญ เจคเฉเจ เจเจเฉ เจนเจฟเฉฑเจธเฉ เจจเฉเฉฐ เจธเจซเจฒเจคเจพเจชเฉเจฐเจตเจ เจชเฉเจฐเจพ เจเฉเจคเจพ เจนเฉเฅค เจนเฉเจฃ เจเจ เจเจน เจฏเจเฉเจจเฉ เจเจฐเฉเจ เจเจฟ เจธเจพเจกเฉ เจธเจพเจฐเฉ เจฏเจคเจจ เจเจธ เจฆเฉ เจฏเฉเจ เจนเจจ. เจเจ เจธเจฅเจฟเจฐ เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ เจฐเจฟเจชเฉเจฐเจ เจคเฉเจ เจเฉเจ เจฆเจฟเจฒเจเจธเจช เจจเฉเจเจคเจฟเจเจ 'เจคเฉ เจจเจเจผเจฐ เจฎเจพเจฐเฉเจ เจเฉ เจฎเฉเจฐเฉ เจเฉเจฒ เจกเจพเจ เจฆเฉเจเจฐเจพ เจเจเจ เจธเฉ (เจเจน เจเฉเจ เจตเฉ เจจเจนเฉเจ เจธเฉ เจเฉ เจฎเฉเจ เจเจธ เจจเฉเฉฐ เจธเฉฐเจเฉเจค เจเฉเจคเจพ เจธเฉ).
เจเจคเจฐเจจเจพเจ เจเจชเจเฉเจฎเจพเจเจเฉเจธเจผเจจ
void sha1( unsigned char *input, int ilen, unsigned char output[20] )
{
sha1_context ctx;
sha1_starts( &ctx );
sha1_update( &ctx, input, ilen );
sha1_finish( &ctx, output );
memset( &ctx, 0, sizeof( sha1_context ) );
}
PVS-เจธเจเฉเจกเฉเจ เจเฉเจคเจพเจตเจจเฉ:
เจเฉเจก เจฆเจพ เจเจน เจเฉเจเฉเจพ เจธเฉเจฐเฉฑเจเจฟเจ
เจค เจนเฉเจธเจผเจฟเฉฐเจ เจฎเฉเจกเฉเจเจฒ เจตเจฟเฉฑเจ เจธเจฅเจฟเจค เจนเฉ, เจนเจพเจฒเจพเจเจเจฟ, เจเจธ เจตเจฟเฉฑเจ เจเฉฑเจ เจเฉฐเจญเฉเจฐ เจธเฉเจฐเฉฑเจเจฟเจ เจจเฉเจเจธ เจนเฉ (
; Line 355
mov r8d, 20
xor edx, edx
lea rcx, QWORD PTR sum$[rsp]
call memset
; Line 356
เจนเจฐ เจเฉเจเจผ เจเฉเจฐเจฎ เจตเจฟเฉฑเจ เจนเฉ เจ เจคเฉ เจซเฉฐเจเจธเจผเจจ เจฏเจพเจฆ เจเจฒเจพเจเจ เจเจพเจเจฆเจพ เจนเฉ, เจเจฟเจธ เจจเจพเจฒ RAM เจตเจฟเฉฑเจ เจฎเจนเฉฑเจคเจตเจชเฉเจฐเจจ เจกเฉเจเจพ เจจเฉเฉฐ เจเจตเจฐเจฐเจพเจเจ เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉ, เจนเจพเจฒเจพเจเจเจฟ, เจ เจเฉ เจตเฉ เจเฉเจธเจผเฉ เจจเจพ เจเจฐเฉเฅค เจเจ เจเจชเจเฉเจฎเจพเจเจเฉเจธเจผเจจ เจฆเฉ เจจเจพเจฒ เจฐเฉเจฒเฉเจเจผ เจธเฉฐเจธเจเจฐเจฃ เจฆเฉ เจ เจธเฉเจเจฌเจฒเฉ เจธเฉเจเฉ เจจเฉเฉฐ เจตเฉเจเฉเจ:
; 354 :
; 355 : memset( sum, 0, sizeof( sum ) );
; 356 :}
เจเจฟเจตเฉเจ เจเจฟ เจธเฉเจเฉ เจคเฉเจ เจฆเฉเจเจฟเจ เจเจพ เจธเจเจฆเจพ เจนเฉ, เจเฉฐเจชเจพเจเจฒเจฐ เจจเฉ เจเจพเจฒ เจจเฉเฉฐ เจ
เจฃเจกเจฟเฉฑเจ เจเจฐ เจฆเจฟเฉฑเจคเจพ เจฏเจพเจฆ. เจเจน เจเจธ เจคเฉฑเจฅ เจฆเฉ เจเจพเจฐเจจ เจนเฉ เจเจฟ เจธเจฎเจพเจเจฎ เจตเจฟเฉฑเจ sha1 เจเจพเจฒ เจฆเฉ เจฌเจพเจ
เจฆ เจฏเจพเจฆ เจฌเจฃเจคเจฐ เจฆเจพ เจเฉเจ เจนเฉเจฐ เจนเจตเจพเจฒเจพ เจจเจนเฉเจ เจธเฉเจเฉเจเจเจธ. เจเจธ เจฒเจ, เจเฉฐเจชเจพเจเจฒเจฐ เจชเฉเจฐเฉเจธเฉเจธเจฐ เจฆเฉ เจธเจฎเฉเจ เจจเฉเฉฐ เจเจตเจฐเจฐเจพเจเจ เจเจฐเจจ เจตเจพเจฒเฉ เจฎเฉเจฎเฉเจฐเฉ เจจเฉเฉฐ เจฌเจฐเจฌเจพเจฆ เจเจฐเจจ เจฆเจพ เจเฉเจ เจฎเจคเจฒเจฌ เจจเจนเฉเจ เจฆเฉเจเจฆเจพ เจเฉ เจญเจตเจฟเฉฑเจ เจตเจฟเฉฑเจ เจจเจนเฉเจ เจตเจฐเจคเฉ เจเจพเจเจฆเฉเฅค เจคเฉเจธเฉเจ เจซเฉฐเจเจธเจผเจจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเจธ เจจเฉเฉฐ เจ เฉเจ เจเจฐ เจธเจเจฆเฉ เจนเฉ RtlSecureZeroMemory เจ
เจธเจนเฉ:
void sha1( unsigned char *input, int ilen, unsigned char output[20] )
{
sha1_context ctx;
sha1_starts( &ctx );
sha1_update( &ctx, input, ilen );
sha1_finish( &ctx, output );
RtlSecureZeroMemory(&ctx, sizeof( sha1_context ) );
}
เจฌเฉเจฒเฉเฉเฉ เจคเฉเจฒเจจเจพ
static u32 sceAudioOutputPannedBlocking
(u32 chan, int leftvol, int rightvol, u32 samplePtr) {
int result = 0;
// For some reason, this is the only one that checks for negative.
if (leftvol > 0xFFFF || rightvol > 0xFFFF || leftvol < 0 || rightvol < 0) {
....
} else {
if (leftvol >= 0) {
chans[chan].leftVolume = leftvol;
}
if (rightvol >= 0) {
chans[chan].rightVolume = rightvol;
}
chans[chan].sampleAddress = samplePtr;
result = __AudioEnqueue(chans[chan], chan, true);
}
}
PVS-เจธเจเฉเจกเฉเจ เจเฉเจคเจพเจตเจจเฉ:
เจชเจนเจฟเจฒเฉ เจฒเจ เจฆเฉเจเฉ เจธเจผเจพเจเจพ เจตเฉฑเจฒ เจงเจฟเจเจจ เจฆเจฟเจ if. เจเฉเจก เจคเจพเจ เจนเฉ เจฒเจพเจเฉ เจเฉเจคเจพ เจเจพเจตเฉเจเจพ เจเฉเจเจฐ เจธเจพเจฐเฉเจเจ เจธเจผเจฐเจคเจพเจ เจชเฉเจฐเฉเจเจ เจนเฉเจฃ เจฒเฉเจซเจเจตเฉเจฒ > 0xFFFF || rightvol > 0xFFFF || เจฒเฉเจซเจเจตเฉเจฒ < 0 || เจฐเจพเจเจเจตเฉเจฒ <0 เจเฉเจ เฉ เจธเจพเจฌเจค เจนเฉเจฃเจเฉเฅค เจเจธ เจฒเจ, เจธเจพเจจเฉเฉฐ เจนเฉเจ เจพเจ เจฆเจฟเฉฑเจคเฉ เจเจฅเจจ เจชเฉเจฐเจพเจชเจค เจนเฉเฉฐเจฆเฉ เจนเจจ, เจเฉ เจเจฟ เจนเฉเจฐ เจธเจผเจพเจเจพ เจฒเจ เจธเจนเฉ เจนเฉเจฃเจเฉ: เจฒเฉเจซเจเจตเฉเจฒ <= 0xFFFF, rightvol <= 0xFFFF, เจฒเฉเจซเจเจตเฉเจฒ >= 0 ะธ rightvol >= 0. เจชเจฟเจเจฒเฉ เจฆเฉ เจเจฅเจจเจพเจ เจตเฉฑเจฒ เจงเจฟเจเจจ เจฆเจฟเจเฅค เจเฉ เจเฉเจก เจฆเฉ เจเจธ เจเฉเจเฉเฉ เจจเฉเฉฐ เจฒเจพเจเฉ เจเจฐเจจ เจฒเจ เจเจผเจฐเฉเจฐเฉ เจธเจผเจฐเจค เจฆเฉ เจเจพเจเจ เจเจฐเจจเจพ เจเฉเจ เจ เจฐเจฅ เจฐเฉฑเจเจฆเจพ เจนเฉ?
เจเจธ เจฒเจ เจ เจธเฉเจ เจเจนเจจเจพเจ เจธเจผเจฐเจคเฉเจ เจฌเจฟเจเจจเจพเจ เจจเฉเฉฐ เจธเฉเจฐเฉฑเจเจฟเจ เจค เจขเฉฐเจ เจจเจพเจฒ เจนเจเจพ เจธเจเจฆเฉ เจนเจพเจ:
static u32 sceAudioOutputPannedBlocking
(u32 chan, int leftvol, int rightvol, u32 samplePtr) {
int result = 0;
// For some reason, this is the only one that checks for negative.
if (leftvol > 0xFFFF || rightvol > 0xFFFF || leftvol < 0 || rightvol < 0) {
....
} else {
chans[chan].leftVolume = leftvol;
chans[chan].rightVolume = rightvol;
chans[chan].sampleAddress = samplePtr;
result = __AudioEnqueue(chans[chan], chan, true);
}
}
เจเฉฑเจ เจนเฉเจฐ เจฆเฉเจฐเจฟเจธเจผเฅค เจเจนเจจเจพเจ เจฌเฉเจฒเฉเฉเฉเจเจ เจนเจพเจฒเจคเจพเจ เจชเจฟเฉฑเจเฉ เจเฉเจ เจจเจพ เจเฉเจ เจคเจฐเฉเฉฑเจเฉ เจเฉเจชเฉ เจนเฉเจ เจนเฉเฅค เจธเจผเจพเจเจฆ เจเจจเฉเจนเจพเจ เจจเฉ เจเจน เจจเจนเฉเจ เจฆเฉเจเจฟเจ เจเจฟ เจเฉ เจเจพเจนเฉเจฆเจพ เจธเฉเฅค
Ctrl+C Ctrl+V เจธเจเฉเจฐเจพเจเจ เจฌเฉเจ
static u32 scePsmfSetPsmf(u32 psmfStruct, u32 psmfData) {
if (!Memory::IsValidAddress(psmfData) ||
!Memory::IsValidAddress(psmfData)) {
return hleReportError(ME, SCE_KERNEL_ERROR_ILLEGAL_ADDRESS, "bad address");
}
....
}
เจ เฉฐเจฆเจฐ เจฆเฉ เจเจพเจเจ เจตเฉฑเจฒ เจงเจฟเจเจจ เจฆเจฟเจ if. เจเฉ เจคเฉเจนเจพเจจเฉเฉฐ เจเจน เจ เจเฉเจฌ เจจเจนเฉเจ เจฒเฉฑเจเจฆเจพ เจเจฟ เจ เจธเฉเจ เจเจพเจเจ เจเจฐเจฆเฉ เจนเจพเจ เจเจฟ เจชเจคเจพ เจตเฉเจง เจนเฉ เจเจพเจ เจจเจนเฉเจ? psmfเจกเจพเจเจพ, เจฆเฉเฉฑเจเจฃเจพ? เจเจธ เจฒเจ เจเจน เจฎเฉเจฐเฉ เจฒเจ เจ เจเฉเจฌ เจเจพเจชเจฆเจพ เจนเฉ... เจ เจธเจฒ เจตเจฟเฉฑเจ, เจเจน, เจฌเฉเจธเจผเจ, เจเฉฑเจ เจเจพเจเจชเฉ เจนเฉ, เจ เจคเฉ เจตเจฟเจเจพเจฐ เจฆเฉเจจเจพเจ เจเจจเจชเฉเจ เจชเฉเจฐเจพเจฎเฉเจเจฐเจพเจ เจฆเฉ เจเจพเจเจ เจเจฐเจจเจพ เจธเฉเฅค
เจธเจนเฉ เจตเจฟเจเจฒเจช:
static u32 scePsmfSetPsmf(u32 psmfStruct, u32 psmfData) {
if (!Memory::IsValidAddress(psmfStruct) ||
!Memory::IsValidAddress(psmfData)) {
return hleReportError(ME, SCE_KERNEL_ERROR_ILLEGAL_ADDRESS, "bad address");
}
....
}
เจญเฉเฉฑเจฒเจฟเจ เจตเฉเจฐเฉเจเจฌเจฒ
extern void ud_translate_att(
int size = 0;
....
if (size == 8) {
ud_asmprintf(u, "b");
} else if (size == 16) {
ud_asmprintf(u, "w");
} else if (size == 64) {
ud_asmprintf(u, "q");
}
....
}
PVS-เจธเจเฉเจกเฉเจ เจเฉเจคเจพเจตเจจเฉ:
เจเจน เจเจฒเจคเฉ เจซเฉเจฒเจกเจฐ เจตเจฟเฉฑเจ เจธเจฅเจฟเจค เจนเฉ ext, เจเจธ เจฒเจ เจชเฉเจฐเฉเจเฉเจเจ เจจเจพเจฒ เจ เจธเจฒ เจตเจฟเฉฑเจ เจขเฉเจเจตเจพเจ เจจเจนเฉเจ เจนเฉ, เจชเจฐ เจฎเฉเจฐเฉ เจงเจฟเจเจจ เจตเจฟเฉฑเจ เจเจเจฃ เจคเฉเจ เจชเจนเจฟเจฒเจพเจ เจนเฉ เจฌเฉฑเจ เจชเจพเจเจ เจเจฟเจ เจธเฉ, เจเจธ เจฒเจ เจฎเฉเจ เจเจธเจจเฉเฉฐ เจเฉฑเจกเจฃ เจฆเจพ เจซเฉเจธเจฒเจพ เจเฉเจคเจพเฅค เจเจเจฐเจเจพเจฐ, เจเจน เจฒเฉเจ เจเจฒเจคเฉเจเจ เจฆเฉ เจธเจฎเฉเจเจฟเจ เจเจฐเจจ เจฌเจพเจฐเฉ เจจเจนเฉเจ เจนเฉ, เจชเจฐ เจเฉเจฐเฉเจตเจฟเจธ เจธเฉเจเจ เจจเจพเจฒ เจเจเฉเจเจฐเจฃ เจฌเจพเจฐเฉ เจนเฉ, เจ เจคเฉ เจตเจฟเจธเจผเจฒเฉเจธเจผเจ เจฆเฉ เจเฉเจ เจธเฉฐเจฐเจเจจเจพ เจจเจนเฉเจ เจเฉเจคเฉ เจเจ เจธเฉ.
เจชเจฐเจฟเจตเจฐเจคเจจเจธเจผเฉเจฒ เจฆเจพ เจเจเจพเจฐ เจเฉฑเจ เจธเจฅเจฟเจฐเจพเจเจ เจฆเฉเจเจฐเจพ เจ เจฐเฉฐเจญ เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉ, เจนเจพเจฒเจพเจเจเจฟ, เจเจน เจเฉเจก เจตเจฟเฉฑเจ เจฌเจฟเจฒเจเฉเจฒ เจจเจนเฉเจ เจตเจฐเจคเจฟเจ เจเจพเจเจฆเจพ เจนเฉ, เจฌเจฟเจฒเจเฉเจฒ เจนเฉเจ เจพเจ เจเจชเจฐเฉเจเจฐ เจฒเจ if, เจเฉ, เจฌเฉเจธเจผเฉฑเจ, เจฆเจฟเฉฐเจฆเจพ เจนเฉ เจเฉเจ เฉ เจธเจผเจฐเจคเจพเจ เจฆเฉ เจเจพเจเจ เจเจฐเจฆเฉ เจธเจฎเฉเจ, เจเจฟเจเจเจเจฟ, เจเจฟเจตเฉเจ เจเจฟ เจธเจพเจจเฉเฉฐ เจฏเจพเจฆ เจนเฉ, เจฆเจพ เจเจเจพเจฐ เจเจผเฉเจฐเฉ เจฆเฉ เจฌเจฐเจพเจฌเจฐ เจ เจเจฒเฉเจเจ เจเจพเจเจเจพเจ เจฆเจพ เจตเฉ เจเฉเจ เจฎเจคเจฒเจฌ เจจเจนเฉเจ เจฌเจฃเจฆเจพเฅค
เจเจผเจพเจนเจฐเจพ เจคเฉเจฐ 'เจคเฉ, เจเฉเจก เจซเจฐเฉเจเจฎเฉเจเจ เจฆเจพ เจฒเฉเจเจ เจตเฉเจฐเฉเจเจฌเจฒ เจจเฉเฉฐ เจเจตเจฐเจฐเจพเจเจ เจเจฐเจจเจพ เจญเฉเฉฑเจฒ เจเจฟเจ เจธเฉ เจฆเจพ เจเจเจพเจฐ เจเจธ เจคเฉเจ เจชเจนเจฟเจฒเจพเจเฅค
เจฐเฉเจเฉ
เจเจน เจเจน เจฅเจพเจ เจนเฉ เจเจฟเฉฑเจฅเฉ เจ
เจธเฉเจ เจธเจผเจพเจเจฆ เจเจฒเจคเฉเจเจ เจฆเฉ เจจเจพเจฒ เจเจคเจฎ เจนเฉเจตเจพเจเจเฉ. เจเจธ เจฒเฉเจ เจฆเจพ เจเจฆเฉเจธเจผ เจเฉเจฐเฉเจตเจฟเจธ เจธเฉเจเจ เจฆเฉ เจจเจพเจฒ เจฎเจฟเจฒ เจเฉ เจชเฉเจตเฉเจเจธ-เจธเจเฉเจกเฉเจ เจฆเฉ เจเฉฐเจฎ เจฆเจพ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจเจฐเจจเจพ เจนเฉ, เจ
เจคเฉ เจเจฟเฉฐเจจเจพ เจธเฉฐเจญเจต เจนเฉ เจธเจเฉ เจชเฉเจฐเฉเจเฉเจเจ เจฆเจพ เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ เจเจฐเจจเจพ เจจเจนเฉเจ เจนเฉเฅค เจเฉ เจคเฉเจธเฉเจ เจตเฉฑเจกเฉเจเจ เจ
เจคเฉ เจนเฉเจฐ เจธเฉเฉฐเจฆเจฐ เจเจฒเจคเฉเจเจ เจเจพเจนเฉเฉฐเจฆเฉ เจนเฉ, เจคเจพเจ เจคเฉเจธเฉเจ เจนเจฎเฉเจธเจผเจพ เจเจนเจจเจพเจ เจฆเฉ เจชเฉเจฐเจธเจผเฉฐเจธเจพ เจเจฐ เจธเจเจฆเฉ เจนเฉ
เจธเจฟเฉฑเจเจพ
เจตเจพเจงเฉ เจตเจพเจฒเฉ เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ เจฆเฉ เจ เจญเจฟเจเจธ เจฆเฉ เจจเจพเจฒ เจชเฉเจฐเฉเจเฉเจเจเจพเจ เจจเฉเฉฐ เจฌเจฃเจพเจเจฃ เจฒเจ เจตเฉเจฌ เจธเฉเจตเจพเจตเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจ เจจเจพเจฒ เจคเฉเจธเฉเจ เจเฉเจก เจจเฉเฉฐ เจฎเจฟเจฒเจพเจเจฃ เจคเฉเจ เจคเฉเจฐเฉฐเจค เจฌเจพเจ เจฆ เจฌเจนเฉเจค เจธเจพเจฐเฉเจเจ เจธเจฎเฉฑเจธเจฟเจเจตเจพเจ เจฆเจพ เจชเจคเจพ เจฒเจเจพ เจธเจเจฆเฉ เจนเฉเฅค เจนเจพเจฒเจพเจเจเจฟ, เจเฉฑเจ เจฌเจฟเจฒเจก เจเจพเจซเจผเฉ เจจเจนเฉเจ เจนเฉ เจธเจเจฆเจพ เจนเฉ, เจเจธเจฒเจ เจธเจฅเจฟเจฐ เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ เจฆเฉ เจจเจพเจฒ เจเฉเจธเจเจฟเฉฐเจ เจธเจฅเจพเจชเจค เจเจฐเจจ เจจเจพเจฒ เจเฉเจก เจฆเฉ เจเฉเจฃเจตเฉฑเจคเจพ เจตเจฟเฉฑเจ เจฎเจนเฉฑเจคเจตเจชเฉเจฐเจจ เจธเฉเจงเจพเจฐ เจนเฉเจตเฉเจเจพเฅค
เจเจชเจฏเฉเจเฉ เจฒเจฟเฉฐเจ
Linux เจ เจคเฉ macOS 'เจคเฉ PVS-เจธเจเฉเจกเฉเจ เจฒเจพเจเจ เจเจฐเจจเจพ เจกเฉเจเจฐ เจตเจฟเฉฑเจ PVS-เจธเจเฉเจกเฉเจ เจฒเจพเจเจ เจเฉเจคเจพ เจเจพ เจฐเจฟเจนเจพ เจนเฉ เจเฉเจฐเฉเจตเจฟเจธ เจธเฉเจเจ เจฆเจธเจคเจพเจตเฉเจเจผ
เจเฉ เจคเฉเจธเฉเจ เจเจธ เจฒเฉเจ เจจเฉเฉฐ เจ
เฉฐเจเฉเจฐเฉเจเจผเฉ เจฌเฉเจฒเจฃ เจตเจพเจฒเฉ เจฆเจฐเจธเจผเจเจพเจ เจจเจพเจฒ เจธเจพเจเจเจพ เจเจฐเจจเจพ เจเจพเจนเฉเฉฐเจฆเฉ เจนเฉ, เจคเจพเจ เจเจฟเจฐเจชเจพ เจเจฐเจเฉ เจ
เจจเฉเจตเจพเจฆ เจฒเจ เจฒเจฟเฉฐเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเฉ: เจฎเฉเจเจธเจฟเจฎ เจเจผเจตเจฟเจเจเจฟเฉฐเจเจธเฉเจตเฅค
เจธเจฐเฉเจค: www.habr.com