MacでNasm+gccでアセンブラ(アセンブリを書いてみる)
はじめに
現在OSは下記のバージョンを利用中です。
この記事はMacでアセンブラを少し走らせてみたいなという人を対象にしています。
nasmインストール
brew install nasm
今回このnasm+ldでうまくコンパイルできなかったので
gccを後半利用しています。
コードを書く
hello.asmで保存します。
; hello.asm
GLOBAL _main
SECTION .data
str_hello db "Hello World", 0x0a ; Output string and \n
SECTION .text
_main:
mov rax, 0x2000004 ; Set system call to write=4.
mov rdi, 1 ; Set output to stdout.
mov rsi, str_hello ; Set output data.
mov rdx, 13 ; Set output data size.
syscall ; Call system call.
mov rax, 0x2000001 ; Set system call to exit=1.
mov rdi, 0 ; Set success value of exit.
syscall ; Call system call.
中間ファイル .oファイル作成
nasm -f macho64 hello.asm
これで hello.o が完成
コンパイル
本来
ld -o hello hello.o
これでいけるはずなのですが、エラー。
(追記)下記でいけました。
ld -macosx_version_min 10.11 -lSystem -o hello hello.o
gccを利用する場合は
gcc -o hello hello.o
これでhelloが作成されるので
./hello
で実行無事 hello would
とりあえず実行環境だけ準備 Erlang,Elixir,Scala,Goのインストールと各CLIツール等の確認
準備から
$ brew update
# Erlangの install
- cli tool
$ erl
Ctrl+G > q returnで抜ける
# Elixir install
$ brew install Elixir
- cli tool
$ iex
Ctrl+G > q returnで抜ける
# Sala
$ brew tap caskroom/versions
$ brew cask install java8
$ brew install sbt
参考
http://yebisupress.dac.co.jp/2017/12/07/scala-nyumon-zyunbi01/
https://qiita.com/umeneri/items/666ff425a11b3dc2022b
- cli tool
$ scala
:q で抜ける
# Go lang
$ brew install go
参考
https://qiita.com/megu_ma/items/7208be8de52b712955a0
cli無い
go run ***.go で実行、コンパイルとか後回し
godoc -http=:6060 とかでヘルプをローカルのブラウザで(localhost:6060)
結論
ほぼほぼbrewで片付く
brew listで確認
coursera Julia Scientific Programming第4章で全てを一旦終了。 良かった点、反省点、今後。
下記講座を無事終了しました。
今回juliaの事をよくわからずに、このコースを進めましたが、色んな反省点があります。
1 (反省)言語バージョンをちゃんと確認しましょう。
開発の時は気にするくせに今回はまったく何も考えずに初めてしまいました。
教材のバージョンは0.6対応。自分が準備したバージョンは1.0だった為、ちょっと余分な時間が・・・・
2 (良かった)学習しながらツイートやブログを活用しましょう。
ツイッターの勉強垢などを使ってつぶやくのは学習のモチベーションを上げるのにやはりいいです。近くの知り合いや仕事仲間が同じ時期に、自分の学習したい項目に食いつくとは限らないですし。自分の周りはもっかPythonやruby,nodeなどに夢中な人はいますが、Juliaをやろうとする人はいませんでした。
ツイッターならもっか学習中の人の言動も見て取れてモチベーションが維持できます。
3 (反省点)これから何をしたいかも考えておいた方がいいかも
久しぶりに授業を受けるうような感じで学習を進めるのも、詰まってしまった課題を解いていくのも楽しかったです。ただ、終盤にさしかかるにつれ祭りが終わるような寂しさも・・・
やはり自分でやりたいプロダクトや実際の仕事に結びつけて置くことを初めに想定しておかないと、レッスンだけで終わるのはもったいないです。
今後
もう少しJuliaの学習をしながらWEBのフレームワークなどでサイトを作るか、深層学習とかにいくか・・・
どのみちこの言語自体になれる必要はありますかね。
データサイエンティストの仕事。 実データと法則と未来予想。 Cousera Julia Scientific Programming Chapter3の締めくくり
チャプター3を無事終了です。データの型や、実データからの各値の調整などなど、ここまで一通りやればJupyter Note Bookを使ってのデータ分析の触り部分が理解できます。
ここまで来て、改めてデータサイエンティストって何だろうなーって考えてしまいました。
データサイエンティストって何?
- - 分析手法に関する最新動向の把握(機械学習、ディープ・ラーニング、テキスト・アナリティクスなど)
- - IT部門および業務部門とのコミュニケーションとコラボレーション
- - データに潜む秩序やパターンの発見と、ビジネスの最終利益に寄与する傾向の特定
非常に的確に色々書いてありますが、データというリソースを料理する人間というポイントは一貫してます。
要はデータという塊から意味のある価値を探し出す事ができるという事です。
競馬予想する人もある意味データサイエンティストって言えますね。
ある特定の法則を見つけ出す作業は後々の人工知能系の技術(機械学習、深層学習)のベースにもなりますよ。
ここまで来て、データサイエンティストになりたいかと自問自答したら活用する人間にはなりたいが、そこに収まりたくないなってのはあります。
この分野将来的には100%人工知能にとられてしまいますからね・・・・
Cousera Julia Scientific Programing コースのJulia コードは0.6 これを1.0.0に対応させる
CouseraのJulia Scientific Programmingコースを受講中です。
前回に続きChapter 3を受講していますが、前回まで使ってたJuliaBoxをやめてデスクトップにJupyter Note Book を入れて学習開始です。
Julia v0.6.1のインストールとJupyter Notebookで使うまで
上記はバージョン0.6.1用ですが、現行の1.0でもバージョン指定を変えればOKです。
今回はplotting=作図という事で簡単なグラフ作成です。
サンプルを開いて、簡単な作業をしようとした所
となり、そもそもPkg importとPlotsが無いという事でaddする事に
無事色々インストールして課題をと思ったら・・・・
ここで初めて、このCouseraのコースがJulia 0.6時代の物ということに気づく。
# Setting up a custom stylesheet in IJulia
# New in 0.6
file = open("style.css") # A .css file in the same folder as this notebook file
styl = readstring(file) # Read the file
HTML("$styl") # Output as HTML
この中のreadstringが無いと言われ、検索するとdeprecatedという結果に
今の1.0系ではこういう書き方。
# Setting up a custom stylesheet in IJulia
# New in 1.0.0
file = open("style.css") # A .css file in the same folder as this notebook file
styl = read(file,String) # Read the file
HTML("$styl") # Output as HTML
無事これでスタイルがあたった。
ほう・・・・・・・
という事は・・・・・
冒頭で使わない予定の JuliaBoxにログインしてみると
やっぱり・・・・2つバージョンが使えるようになってる。
残念ながら、自分のデスクトップには1.0.0しか入ってません。
そして続けて
# New in 0.6
tempvar = Array{Any}(4)
fill!(tempvar, "hello ... word")
ここも
# New in 1.0.0
tempvar = Array{Any}(undef,4)
fill!(tempvar, "hello ... word")
こういう書き方、ほう・・・・undef・・・・
これは軽く学習に障害がありますな・・・
Julia 1.0.0のリリースが2018年の8月なので、これはいたしかたがないですね・・・
それこそPythonの2系と3系ぐらいの言語仕様の変更があるのかぁ・・・・
0.6で学習を進めてもいいですが、まだ初めたばかりだし1.0で進めて細かな違いに気づくのも面白くはありますが・・・・
一旦ここは考えます。
JuriaでJupyter Note bookを利用する現実的なデータ分析の学習初め、 SIRモデル&Plotsでグラフ作成
CouseraのJulia Scientific Programmingコースを受講中です。
今日はChapter 3からスタートです。
Week3_1-SIRmodels
今回のNote bookの利用にはSIRモデルが使用されます。
SIRモデルは、感染症の流行過程を記述するモデル方程式 らしいです。
コースの説明を英語で見ていってもいいですが、wikiで理解するでもいいでしょう。
微分の理解があればそれぞれ表を元に描かれたのS,I,Rの関係を数式にしている意味合いも理解できました。
また、
βは感染率 = lambda
γは回復(隔離)= gam
で定義され、dtも設定されている事を見れば、今回のグラフの関数の理解は大体できました。
今回利用されているPlotsというパッケージについては下記が参考になりました。
Plots/GR: グラフ package のおすすめ · julia について
今回登場してませんが、3次元グラフとかソソりますねw
次回は3-2の部分を取り組む予定です。
Julia Boxの Jupyter Note book にCousera教材をuploadする
前回、第1章でJulia BoxやJupyter Note bookについて準備をしましたが、第2章からはデータ、統計に基づく基本操作などを習得する事ができるようです。
Julia Scientific Programming | Coursera
で、実際の コース内容を眺めるのもいいですが、同時にうごかせる教材が付属しています。
↑ こちらのResources部分から、今回使われている教材部分をダウンロードできます。
正直ビデオを見続けるより、下手したら教材触った方が早いかも・・・
Julia Boxへのアップロードはわかりやすいのですぐできると思います。
↑Uploadから適当に・・・・
と考えてしまいますが、まあ英語の勉強をしながらという意味もあるのでザッと眺めるにとどめました。
第2章ではCSVの読み込みやグラフ作成の為のデータ処理の定義、Loopなどの使い方が見てとれました。
Juliaもそうですが、改めてJupyter Note bookはわかりやすいツールだなと関心しますね。