わいえむねっと

Contents
Categories
Calendar
2010/08
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Monthly Archives
~2000/01
Recent Entries
RSS1.0
Templates
Information
Processed: 0.047 sec
Chashed: -
2010/08/06 Fri
自分よりちょっと上の歳の人かなと思っていた人が、話をしてみたら自分の2.5倍以上社会人やってる人だったので思わず「この業界て年齢不詳の人が多いですよねー」と本人に向かってのたまう@地下の飯屋。


man syscalls に

システムコールは失敗を示すのに負のエラー番号を呼び出し元に返す。失敗が起こった際には、ラッパー関数は返されたエラー番号を反転して (正の値に変換し)、それを errno にコピーし、ラッパー関数の呼び出し元に -1 を返す。

とあったので、とりあえず

.text
    .globl  _read
    .type   _read, @function
_read:
    li      0, 3
    sc
    blr

としてみたら、反転するまでもなくエラー番号が正の値で返ってきたので成否はどうするのさそれと思っていたら、

Understanding Linux System Calls (Linux-Unix Kernel)
http://havefunwhi​leulearn.b​logspot.co​m/2010/03/systems-calls.html​
// read (fd, buf, numBytes)
.read:
   li   r0, 3         // pass system call number to r0
                      // arguments have already been passed
                      // in r3, r4, r5 by the caller.
   sc                 // invoke system call  
   bnslr              // if no error return (Summary 
                      // Overflow bit not set)
   lis  r4, errno@ha  // copy error code to errno variable
   stw  r3, errno@l(r4)
   li   r3, -1        // return -1 to user application
   blr

てことでした。
というか、PowerPCアセンブリの日本語情報が少なすぎる。

基本的なところは押さえたので、システムコール一覧からラッパーライブラリをでっちあげるスクリプトを書いてみたり実機で挙動を見てみたり、

Assembly Programming on KURO-BOX A
http://www.mztn.o​rg/ppcasm/ppcasm_A.h​tml
ネットワーク関連のシステムコールは sys_socketcall (102) の第1引数に以下の表の先頭列に示す番号 (10進) を設定して呼び出します。 引数はメモリに格納して先頭アドレスを sys_socketcall の第2引数に設定します。

にも対応してみたり実機で挙動を見てみたりなんだりで一日が終わる。

あと、コーヒーを飲んだりとかコーヒーを飲んだりとか最上階の埃臭い無人フロアで地べたにはいずったりとか。

今日もいつもの予定調和。