パスワードを忘れた? アカウント作成
12059429 journal
日記

KMYの日記: gitができない(´・ω・`)

日記 by KMY

gitに接続できない!

ssh-keygen、ssh-addをやって
公開鍵をSourceForgeに登録して
あとSourceTreeで設定して
リモートブランチにmasterってのが出たからそれに接続したのにタイムアウトになっちゃう(´・ω・`)

Macですだお(´・ω・`)

configも書いたのに‥‥
configの書き方わかんなかったお(´・ω・`)
Host git.osdn.jp
        HostName git.osdn.jp
        User kmy
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/id_rsa

SourceForgeプロジェクト→https://osdn.co.jp/projects/lily-java/simple/

12057243 journal
日記

KMYの日記: フェイスブックからの転載

日記 by KMY

(5月6日 9時2分)
暇を持て余したから
Intelのコード吐いたりPE/COFF準拠のオブジェクトファイル吐いたりする
アセンブラ作りたくなったんだけど
どーせ会社始まったら作る気なくなるんだろうなぁ(´・ω・`)
欠陥コンパイラなら中学生の時作ったことあるんだよね
アセンブラ吐くステージコンパイラというかニセモノというか
今度はちゃんと機械語吐くコンパイラを作りたいけど
作ろうと思ったらその過程でアセンブラ、リンカもつくらなあかんのよね(´・ω・`)
実行ファイル(exe)、ダイナミックリンクライブラリ(dll)、ライブラリファイル(lib)のコードは大学の時に解析済で
知識もインテルの資料も何もかも揃えてるから
作ろうと思えばいつでも作れるんだけど時間ないびょん(´・ω・`)
ああ時間ほちいほむっ(´・ω・`)
Javaと関係ねえし(´・ω・`)
プログラミングさえできればたのちいからいいし
CGIやMySQLの経験もちょっとだけあるんだけど
高級言語ばかりじゃ飽きちゃうからたまには低級言語もさわりたいってのが本音(´・ω・`)
(中学の時オンラインゲームを自分のHPに設置してたことがあるから
 CGI自体は経験あるけどあんま上手くはない死にたい
 普通のレンタルサーバではなくVPS使ってるのはその名残)
会社では高級、家では低級って流れにできるかしらほむっ(´・ω・`)
日本語プログラミング言語のコンパイラ作るのが中学の時からの夢なのよおおおおおお!!!!!!
黒歴史なので見つけても人に言わないで下さいお願いします
くっそめんどい

(5月6日 19時6分)
大学の時アセンブラ作ろうとして挫折した理由は逆ボーランド法が分からなかったからなんだよね(´・ω・`)
今更勉強し直すのも気が引けるなぁ(´・ω・`)
コンパイラに拘らないで、
コンバータ、例えば日本語の文章をJavaのプログラムに置換するソフト
作るのもありかなと思い始めてる
それなら逆ポーランドもJavaの言語処理系に丸投げできるしゎら
もし作るんだったら
必然的にクロスプラットフォームなJavaに対応しなきゃいけなくなるから
うーん、Qt使っちゃう?ゎら
てかJavaにゎ苦手意識持ってんだよね(´・ω・`)
中学生の時、まだ動作が重かったJavaを勉強しだして
はじめのところで挫折して以来すごい苦手(´・ω・`)
てか何か作ろうよほむっ(´・ω・`)

(5月9日 15時11分)
SmartCVS落としてきますた(´・ω・`)
まだ本気じゃないからやめるなら今のうち(´・ω・`)
てかもう飽きてきたかも(´・ω・`)

Javaのコードを書けばそのまま出力するようにしてきた。あとはJavaコード中に埋め込む変数の展開、マクロの実装(コードはJavaとして出力するので、関数やメソッドはマクロの集合体にする設計にしたほうがやりやすい)など、まだすることはいくらでもあるし飽きてきたかも

ちょっとわかりづらいので、コンバート前のソース。ここに変数を埋め込めるようになったり、マクロ実装したり、その他いろいろやったら、コンバータのプログラムを直接いじらなくても誰でも簡単に命令追加できる仕様になるんだよね、今が一番大変

(5月10日 13時56分)
引数のある命令を実装できるようになるまでもう少し!
疲れた眠い

(5月10日 16時55分)
やったあああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
そろそろFacebook荒らすのやめてブログでも作ろうかしら(´・ω・`)
SlashdotとSourceForge(OSDN)のどっちにしようかしら(´・ω・`)
ほむっ(´・ω・`)

(5月10日 22時5分)
フェイスブック、なんかツイッターのノリで連投してしまいがちなので、
続きは日記に投げます(´・ω・`)
日記帳は、中学生の時に登録したアカウントを使いまわしてます。
高校生の時にやった大失敗が残っててものすごく恥ずかしいんだけど
とりあえずURI置きます。
今作ってるソフトの開発日誌みたいなのの続きはここでやります。
http://srad.jp/~KMY
SourceForge(明日からOSDNという名前に変わるらしい)にプロジェクトを申請しました。
プロジェクトが承認されたら、現在のソフト開発を一旦中断し
簡単な仕様書作りに専念します。
SourceForge上のプロジェクトページは、フェイスブックではなく日記帳に書いておきます。
てか2日の営業日を含むわずか5日で2500行というものすごい突貫工事だったので(プロにとってはむしろ短いほうかもしれませんが)、
作ってる僕としても訳が分かんなくなりそうで作る気が失せ始めてきたので
そろそろソースコード整理しないとなぁなんて思ってます(´・ω・`)
ゴミとはいえOSSにするということで気になるライセンスですが、
GPLやLGPLだとこのソフトを使って作ったソフトにまでライセンスが及ぶ危険性があるため、
いったん修正BSDライセンスにしてます。
GPLはライセンス適用に関する制限事項も多いので、慎重に検討中です。
中学生の時に登録したアカウントで久しぶりにSourceForge触ってみたんですが、
中学生の時に立ち上げた激痛プロジェクト(KMYsofts japanese)、痛すぎて見るに耐えられないです(´・ω・`)
中学生の作ったものだからと大目に見てくれませんか(´・ω・`)
ソフト開発についての話の続きは日記帳でお会いしましょう!
もうすでに飽きが来てますが(´・ω・`)
数日間続いていた記事連投も、ここでひとつの区切りとします。
フェイスブック荒らしちゃってごめんなさい!
また明日

12057183 journal
日記

KMYの日記: 久しぶりになにか書いてみる

日記 by KMY

slashdotとかsourceforgeとか中学生以来です。
しかも明日からドメイン変更とか。ギリギリ。

昔の記事は中二病というか黒歴史そのものなので
削除しようと思ったんですけど、
まだ未熟な頃の私を見る資料であることに変わりはないので残します。
今も十分未熟ですが。

新しいソフトを開発しているのですが
このソフトの開発、私のことですからまた途中で飽きて放り出してしまうと思います。
なのですが、私が作っているソフトの趣旨を理解いただき、誰かが代わりに続きを作ってくれないかなぁという
他力本願極まりない理由で、
sourceforgeにてプロジェクトを公開し、誰かの反応を待つことにしました。

簡単にいえば、日本語の文章をJavaのプログラムへ変換するコンバータです。
コンバータはC++で標準ライブラリのみを使って作成し、Windows、Mac、Linuxでコードを(一部の定数を除いて)修正することなくコンパイルできるようにします。
また、基本は64bitとしますが、32bitとしてもコンパイルできるよう、long long intなど64bit特有の機能を使用しません。
ユーザはマクロを記述すれば、コンバータを再コンパイルしなくても命令を追加できるようにします。
記法は日本語プログラミング言語「なでしこ」の影響を強く受けていますが、なでしこではありません。
   なでしこのプログラムをそのまま使えるようにするつもりはありません。

すでに機能の一部を作成しました。
これをこのまま置いてってしまおうと思ってます。

言語仕様の構想を含む詳細は後日(まだやる気があれば)告知します。

271030 journal

KMYの日記: str2num、scan、2つのマクロは最終的にこうなった。 14

日記 by KMY

str2num macro string:REQ
    local   i
    local   res
 
    .data
        i   DD  0
        res DD  0
 
    .code
        ; 文字列へのポインタをiに代入
        mov i, string
 
        ; mulのための初期化
        mov edx, 0
 
        ; 文字の桁数だけ繰り返す
        .while 1
            ; eaxにvarの最初の1文字をコピー
;            invoke  MoveMemory, addr tmp, i, 1
            mov eax, 0
            mov ebx, i
            mov al, byte ptr [ebx]
            .break .if al == 0
            sub eax, 48
 
            ; eaxの値を一旦箱に入れる
            push    eax
 
            ; resに10をかける
            mov eax, res
            mov ebx, 10
            mul ebx
            mov res, eax
 
            ; eaxを取り出してresに加算
            pop eax
            add res, eax
 
            ; ループカウンタを1減らす
            inc i
        .endw
 
        ; 結果を代入
        mov eax, res
endm
 
scan macro
    local   text
    local   strs
    local   rcHandle
 
    .data
        rcHandle DD 0
        strs     DD 0
 
    .data?
        text     DB 48  dup(?)
 
    .code
        invoke GetStdHandle, STD_INPUT_HANDLE
        mov rcHandle, eax
        invoke ReadConsole, rcHandle, addr text, 48, addr strs, NULL
 
        mov     ebx, strs
        mov     byte ptr [text+ebx-2], 0
;        invoke  ZeroMemory, eax, 1
 
        lea     eax, text
endm

講座を書く資格はないと言われたので
どうしようかぼんやり一考中。

考えるまでもないだろと言われればそれまでですが、
とりあえずここを延々とMASMのコードで荒らすという地味な(?)作業は続けます。

270921 journal

KMYの日記: MASMで、文字列を数値に置換するマクロは結局こうなりました

日記 by KMY

str2num macro string:REQ
    local   tmp
    local   no
    local   i
    local   res
 
    .data
        tmp DD  0
        no  DD  0
        i   DD  0
        res DD  0
 
    .code
        ; 文字列へのポインタをiに代入
        mov i, string
 
        ; 文字数を調べる
        invoke  lstrlen, i
        mov no, eax
 
        ; mulのための初期化
        mov edx, 0
 
        ; 文字の桁数だけ繰り返す
        .while no > 0
            ; resに10をかける
            mov eax, res
            mov ebx, 10
            mul ebx
            mov res, eax
 
            ; eaxにvarの最初の1文字をコピー
            invoke  MoveMemory, addr tmp, i, 1
            mov eax, tmp
            sub eax, 48
 
            ; eaxをresに加算
            add res, eax
 
            ; ループカウンタを1減らす
            inc i
            dec no
        .endw
 
        ; 結果を代入
        mov eax, res
endm

movzxニモニックの話を後回しにしてMoveMemoryを使っていることとか
文字数を検出する代わりにMoveMemoryで手に入れたデータがNULLであるかどうかでbreakしたほうがいいのではないかとか
いろいろ突っ込みところはありますが、
初心者向け(ただし無理がある)のコードとしてできるだけのことはさせていただきました。

ついでといえば本当についでなのですが、
コンソールに入力された文字列を読み込んでポインタを返すマクロも作りました。
.data?を使うのはまだ早過ぎると思ったのですが、使っています。

scan macro
    local   text
    local   strs
    local   rcHandle
 
    .data
        rcHandle DD 0
        strs     DD 0
 
    .data?
        text     DB 48  dup(?)
 
    .code
        invoke GetStdHandle, STD_INPUT_HANDLE
        mov rcHandle, eax
        invoke ReadConsole, rcHandle, addr text, 48, addr strs, NULL
 
        mov     ebx, strs
        mov     byte ptr [text+ebx-2], 0
;        invoke  ZeroMemory, eax, 1
 
        lea     eax, text
endm

改行コードに対する処理のせいで実際は46バイトまでしか保存できなくなるだろといったつっこみところはもう把握しています。
ホームページの方ですが、whileの説明も含めてすでに訂正しています。

ZeroMemoryを使わずに改行コードを取り除く方法があったらご教授いただければ、と思っています。
追記:見つかりました。なんだか恥ずかしいです。

難しいなぁ‥‥。

270861 journal

KMYの日記: MASMで、文字列を数値に置換するマクロの件について 6

日記 by KMY

さすがにコメントで頂いたソースコードをそのまま書く訳にはいかないので、
割り算を使わない それだけのコードに修正致しました。
また、マクロのパラメータにポインタを指定できないことに今ざら気づいたので、
えーと、MASMたかき講座のほうでは近く、早ければ今日か明日に謝罪文を掲載します。

さすがに教育用(?)ですので、使うのは簡単なニモニックに絞ってみます。

MoveMemoryというAPIがmovzxなどのニモニックで代用できることも分かったのですが、
後ほど「スラッシュドットで指摘を頂いた」と断った上で初めて導入してみたいと考えています。

指摘していただいたみなさん、ありがとうございました!

270553 journal

KMYの日記: 昨日の記事では大変‥‥

日記 by KMY

ええ、思っていませんでした。

アセンブリの勉強不足を思い知らされてみたり

MoveMemory使わなくでもmovzxで大丈夫だと思い知らされてみたり

一旦「素人です」とか断ってから講座書いたほうがよかったかな‥‥。

MASM32付属のオペランド一覧(英語)とか
MSDNの演算子一覧とか
いろいろ読みながら続きを書いてみたいなと思っています。

あくまで初心者向けというコンセプトもありますので(ただし無理があるのは承知の上)
新出のテクニックがたくさん積まれた1つのプログラムを1つ1つずつ丁寧に説明してしまったら
読者も飽きるので
そういうところが難しいですね‥‥。
あのページは第16章から根本的に再構成する必要がありますね‥‥。

次の更新の時には大変なことになってそう‥‥。

私にも勉強することがいっぱい‥‥。
はぅっ。

270206 journal

KMYの日記: MASMで、文字列を数値に置換するマクロ 8

日記 by KMY

http://masm.kmycode.net/
MASMたかき商会、今日の更新で基礎編23章まで公開しました。

今回の更新の目玉(なのか?)が、アセンブリ言語MASMにおいて、文字列を数値に置換するマクロ。
逆(数値を文字列に置換する方法)は普通にwsprintfというWin32APIを使えば簡単に終わるのですが、
文字列を数値に置換する方法は、自分でプログラムを組むしかない。

というわけでできたのが以下のコードです。
検索から来た人の8割はすかさずコピペすると思いますので、
コードを載せる前に注意点を1つ。

windows.incというインクルードファイルにおいて、
MASM Ver.6(MASM32プロジェクトからDLしたやつ)の場合は311行目に以下のような行があるのですが、

; MoveMemory                       equ RtlMoveMemory

これを以下のように修正してください(コメントを外してください)。

MoveMemory                       equ RtlMoveMemory

いや、最初からRtlMoveMemoryを使えという話になるかもしれないんですけどね、
基礎編では基礎だけを説明しようということで、MSDNライブラリに載っているAPIだけを使う方針ですのでそっち重視してしまいました。
あとは下のマクロを使うだけです。
windows.incとkernel32.incとkernel32.libの取り込みが必要です。

str2num macro string:VARARG
    local   var
    local   tmp
    local   no
    local   no2
    local   i
    local   m
    local   res
 
    .data
        var DB  string,0
        tmp DD  0
        no  DD  0
        no2 DD  0
        i   DD  0
        m   DD  0
        res DD  0
 
    .code
        ; 文字数を調べる
        invoke  lstrlen, addr var
        mov no, eax
        mov no2, eax
 
        ; 文字列へのポインタを調べる
        lea eax, var
        mov i, eax
 
        ; div、mulのための初期化
        mov edx, 0
 
        ; 調べた文字数に応じて、掛ける数の桁数を決める
        mov ebx, 10
        mov eax, 1
        .while no2 > 1
            mul ebx
            dec no2
        .endw
        mov m, eax
 
        .while no > 0
            ; tmpにvarの最初の1文字をコピー
            invoke  MoveMemory, addr tmp, i, 1
            mov eax, tmp
            sub eax, 48
 
            ; 取得した数字を結果に加算する
            mov ebx, m
            mul ebx
            add res, eax
            mov eax, m
 
            ; 掛ける数から0を1つ取る
            mov ebx, 10
            div ebx
            mov m, eax
 
            ; ループカウンタを1減らす
            inc i
            dec no
        .endw
 
        ; 結果を代入
        mov eax, res
endm

使用例

    str2num "500"  ; eaxは500になる
    add eax, 8     ; eaxは508になる

バグを発見したら訂正しますので、
いろいろ使ってみておかしい動作があったら報告していただけるとありがたいです。

内容についての解説は、
http://masm.kmycode.net/(MASMたかき商会)の「MASMの基礎」第16章~第20章へ。
アルゴリズムの解説は第20章でやっています。

268697 journal

KMYの日記: はじめまして、たかきです 2

日記 by KMY

はじめまして、たかきです。
MASM講座を宣伝するためだけにわざわざこんなところに来てしまいました。
ここ(スラッシュドット・ジャパン)はSourceForgeと関係があるので技術者もそれなりに集まりそうな印象ですが‥‥どうでしょうか?

http://masm.kmycode.net/(MASMたかき商会)
アセンブリ言語であるMASMの講座です。現在、基礎編の4分の1くらいのところまで来ています。説明文は非常に砕けていますし、説明の順番もばらばらです。変数とは何なのかずら知らないプログラミング初心者を対象にしている上、アセンブリの習得ではなくWindowsアプリケーションの制作に重点を置いていますので、こんなサイトになってしまいました。間違いがあれば指摘していただければ嬉しいです。
いや、アセンブリ言語の講座で初心者を相手にすること自体無理があるかな‥‥。
とりあえず、一から丁寧に説明するように務めています。
いや‥‥難しいところを後回しにしすぎたせいで読みにくくなっているかな‥‥。

せっかくここに登録したので、
MASM講座とかMASM関連以外にも、いろいろなプログラミングやパソコン関連の記事も書いてみようと思います。

あと、私はたまに失踪することがありますが、数カ月後には必ず戻りますので心配しないでください。

typodupeerror

UNIXはただ死んだだけでなく、本当にひどい臭いを放ち始めている -- あるソフトウェアエンジニア

読み込み中...