SlideShare a Scribd company logo
1 of 44
Download to read offline
すらいどだよ〜
#ぽちゃま
もつけてね!!
Enlish time!!!!!!!
1,LightとRightの発音
LightとRightの発音を練習しましょう。
僕の後に言ってくださいね。
Repeat after me!
Light
Right
発音するときに注意すること。
Lightは普通にライトと言うときと同じです。
ラを発音するときに上あごに舌をくっつけて発音します。
Rightはラを発音するときに舌をくっつけないで発音します。
舌を丸める感じです。
外国人としゃべりましょう。
 終
制作・著作
━━━━━
 ⓃⒽⓀ
まとめ
早速ですが、
みなさんアセンブリ読めますか???????
え?????????
アセンブリも読めないのに、プロ
グラマー名乗ってるん
ですか?!?!?!?!?!
ぽちゃま(@PotyaExe)
ぽちゃまって誰?調べてみました!
なまえ:アブソリュート・デュオ・ダニエル
Twitter:@PotyaExe
ትምህርት ቤት: የከፍተኛ ሳይንስና ቴክኖሎጂ ናሽናል ተቋም, የኪሳራ ብሔራዊ ኮሌጅ, የመረጃ
አስተዳደር ኢንጂነሪንግ 1~4 ዓመት
ਿਸਖਲਾਈ: ਸੁਰੱਿਖਆ (ਕਮਜ਼ੋਰੀ ਆਿਦ)
பிடித்த விஷயம்: ராமன் உணவு
‫ﮐﺎڌو‬ ‫ﻧوڊﻟز‬ ‫ﻣزﯾدار‬ :‫ﺷﻲء‬ ‫ﺳﭠﻲ‬
हे स्वत: ची ओळख नाही. हा ब्लॉगचा वषय आहे ज्याची सामग्री टशूपेक्षा पातळ आहे.
いかがでしたか?
ぽちゃまさんのことがあまりわかりませんが真面目ということだけは
わかりましたね!
え?読めないって?
ぽちゃまって誰?調べてみました!
名前:ぽちゃま
Twitter:@PotyaExe
学校:独立行政法人国立高等専門学校機構 木更津工業高等専門学校 情報工学科1~4年
(アムハラ語)
学んでいること:セキュリティ(脆弱性など)(アルバニア語)
好きなこと:らあめんを食べること(タミル語)
得意なこと:らあめんを美味しく食べること(シンド語)
一言:(パシュート語)
アセンブリって何...?
アセンブリ言語(アセンブリげんご、英 : assembly language)とは、コンピュータ、マイクロコントローラ、その他
のプログラム可能な機器を動作させるための機械語を人間にわかりやすい形で記述する、代表的な低水準言
語である。なお、英語の assembly とは「組立」という意味である。
パソコンが読むためのコード(機械語)を人間でも読めるように
したよ!!!!
参
照:https://ja.wikipedia.org/wiki/%E3%82%A2%E3%82%BB%E3%83%B3%E3%83%96%E3%83%AA%E8%A8%8
0%E8%AA%9E
要
するに
アセンブリはCPUによって違う
例えば、PowerPCやi386、ARM、H8などのCPUがあります。
では、アセンブリを実際に生成してみましょう。
猿
でもできる!
アセンブリ3分クッキング!
用意するもの
● パソコン(今回はUbuntu(Linux)を使用しています。)
● アセンブリを楽しむ気持ち
①プログラム(ソースコード)を書く
今回はC言語でHelloWorldを書きます。(ファイル名はhello.cとします。)
#include <stdio.h>
int main(){
printf(“HelloWorld!”);
}
ソースコード
②アセンブラを出力する
以下のコマンドを実行しましょう
“-S”コマンドでアセンブラファイルを出力します。
(g)cc -S hello.c
③できあがり
lsコマンドなどでファイルを見るとhello.sというファイルが生成されます。
実際に見てみましょう。
main:
.LFB0:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
leaq .LC0(%rip), %rdi
movl $0, %eax
call printf@PLT
movl $0, %eax
popq %rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
少し疑問
どのタイミングでアセンブルするんですか?
ソースコードをコンパイル
する時に行っています!
A.
具体的にコンパイラの動きを見てみよう!
コンパイラは、5つの工程に分かれて高級言語を低水準言語に変換します。
①字句解析
②構文解析
③中間コード生成
④コード最適化
⑤コード生成
オブジェクトコード生成される
←ここでアセンブラコード生成
 字句解析
 構文解析
中間コード
コード最適化
コード生成
ソースコード
オブジェクトコード生成
ここ!
それでは、アセンブリを見てみよう!
今回使用するCPUはH8です。
H8は日立が開発した組み込み向けCPUです。
H8(エイチハチ)は16ビット・アーキテクチャです。
が、32ビット拡張されたシリーズもあります。
次スライドのソースコードのアセンブリを呼んでみましょう!!!!
ソースコード
int main(void){
return 0;
}
アセンブリ(抜粋)
main: 説明
mov.w r6,@-r7   おまじない
mov.w r7,r6     おまじない
sub.w r2,r2   おまじない
mov.w r2,r0     おまじない
mov.w @r7+,r6   おまじない
rts         おまじない
こんな感じです!!!!!!
え?ふざけんなって?
あ。みんなの今の気持ち当てます。
アセンブリ(抜粋)
main:
mov.w r6,@-r7
mov.w r7,r6
sub.w r2,r2
mov.w r2,r0
mov.w @r7+,r6
rts
おまじない(r6の値を@-r7(後述)に渡す)
おまじない(r7の値をr6に渡す)
0を生成
r2の値(0)をr0に渡す
おまじない(@r7+(後述)をr6に渡す)
サブルーチン(ここではmain)からリターン
説明
H8の特徴① プリデクリメントとポストインクリメント
プリデクリメントレジスタ間接(@-r7)-> レジスタの内容がメモリの番地として
使われる。命令の実行前にレジスタの内容がデクリメントされる。
e.g. @-r7でr7の値が0xFFだったら、命令実行前にr7の値は0xFDとなる。
ポストインクリメントレジスタ間接(@r7+)->レジスタの内容が
メモリの番地として使われる。
命令の実行後にレジスタの内容がインクリメントされる。
e.g. @r7+でr7の値が0xFDだったら、命令実行後にr7の値は0xFFとなる。
H8の特徴② 0の生成方法
先ほどのアセンブリにも書いてあったが、0(ゼロ)の生成では、
sub.w r2 r2と書いてあった。
(mov.wの.wはWord型で2バイトとなる。他にもmov.bはByte型で1バイト、
mov.lはLongword型で4バイトがある。)
これはなぜだろうか?
H8の特徴② 0の生成方法
答えは組み込み向けCPUというところにある。
組み込み向けなので、できるだけ使用する容量は小さく収めたい。
もし、r2とr3を用意してそれをsub.w r2 r3とすれば0を生成するでもいけるだろう。
しかし、.wなので、4バイト使用することになるので容量を大きくなってしまう。
一体どうしたら
良いんだ...
そうだ。
同じレジスタ
同士で引けば
0作れる
やんけ!
H8の特徴② 0の生成方法
sub.w r2 r2とすれば2バイトで0を生成することができる。
また、レジスタを1つしか使用しないので余ったレジスタを他のところで使うことができる。
といった理由で上記のコードになっている。
実際にH8のアセンブリを見てみましょう!
ちょっと実機でやってみましょう。
今回はhello worldを見てみましょう!!!
まとめ
● アセンブリから逃げてるやつは一生機械語できないのでやれ
● プログラマー名乗ってるのにアセンブリ読めないのはマナー違反です。
● 読めることで良いことがある。
○ 「gdb」という神デバッガーである程度使えるようになる。
○ 機械語がだんだんわかるようになってくる。
○ 天才に思えてくる。
○ 神になれる
○ どんな言語でもアセンブリには叶わないと感じる
○ 初心者におすすめできる
こんなメリットがあります。
みんなもレッッッッッッッッッッッッッッッッッッッッッッツ
アセンブリ!!!!!!!

More Related Content

What's hot (7)

これまでの日本語の話をしよう
これまでの日本語の話をしようこれまでの日本語の話をしよう
これまでの日本語の話をしよう
 
Slide
SlideSlide
Slide
 
191209 how to translate j to e
191209 how to translate j to e191209 how to translate j to e
191209 how to translate j to e
 
Quick study Japanese grammar
Quick study Japanese grammarQuick study Japanese grammar
Quick study Japanese grammar
 
19 日本語の音声の特徴
19 日本語の音声の特徴19 日本語の音声の特徴
19 日本語の音声の特徴
 
01.バーでの英会話入門(教材) lifenotes.jp
01.バーでの英会話入門(教材) lifenotes.jp01.バーでの英会話入門(教材) lifenotes.jp
01.バーでの英会話入門(教材) lifenotes.jp
 
20141105 俺のコードレビュー(opening) #devraku
20141105 俺のコードレビュー(opening) #devraku20141105 俺のコードレビュー(opening) #devraku
20141105 俺のコードレビュー(opening) #devraku
 

Similar to アセンブリも読めないのに、プログラマー名乗ってるんですか?!?!?!?!?!?

BOOSTYOURENGLISH_Day2
BOOSTYOURENGLISH_Day2BOOSTYOURENGLISH_Day2
BOOSTYOURENGLISH_Day2
OMITAKA1
 
日本語N3 b!!!!!!!!!!!j bh1$b2s!k
日本語N3 b!!!!!!!!!!!j bh1$b2s!k日本語N3 b!!!!!!!!!!!j bh1$b2s!k
日本語N3 b!!!!!!!!!!!j bh1$b2s!k
greenbackstudio
 
英語勉強法の法則
英語勉強法の法則英語勉強法の法則
英語勉強法の法則
Tsuyoshi Ushio
 

Similar to アセンブリも読めないのに、プログラマー名乗ってるんですか?!?!?!?!?!? (8)

111221 liguistics 01
111221 liguistics 01111221 liguistics 01
111221 liguistics 01
 
Listening B 01
Listening B 01Listening B 01
Listening B 01
 
Meditator-X
Meditator-XMeditator-X
Meditator-X
 
BOOSTYOURENGLISH_Day2
BOOSTYOURENGLISH_Day2BOOSTYOURENGLISH_Day2
BOOSTYOURENGLISH_Day2
 
家中留学 slide
家中留学 slide家中留学 slide
家中留学 slide
 
Let's write understandable Japanese! (Complete Version)
Let's write understandable Japanese! (Complete Version)Let's write understandable Japanese! (Complete Version)
Let's write understandable Japanese! (Complete Version)
 
日本語N3 b!!!!!!!!!!!j bh1$b2s!k
日本語N3 b!!!!!!!!!!!j bh1$b2s!k日本語N3 b!!!!!!!!!!!j bh1$b2s!k
日本語N3 b!!!!!!!!!!!j bh1$b2s!k
 
英語勉強法の法則
英語勉強法の法則英語勉強法の法則
英語勉強法の法則
 

More from Potyamaaaa

More from Potyamaaaa (10)

編入ってなんだろう
編入ってなんだろう編入ってなんだろう
編入ってなんだろう
 
君でもわかる?セ↑キュ↓リ↓ティ↑の話!!
君でもわかる?セ↑キュ↓リ↓ティ↑の話!!	君でもわかる?セ↑キュ↓リ↓ティ↑の話!!
君でもわかる?セ↑キュ↓リ↓ティ↑の話!!
 
ハリーポッターに なりたいけどなれないからハニーポッターになる
ハリーポッターに なりたいけどなれないからハニーポッターになるハリーポッターに なりたいけどなれないからハニーポッターになる
ハリーポッターに なりたいけどなれないからハニーポッターになる
 
そのセ↑キュ↓リ↓ティ↑で大丈夫??
そのセ↑キュ↓リ↓ティ↑で大丈夫??そのセ↑キュ↓リ↓ティ↑で大丈夫??
そのセ↑キュ↓リ↓ティ↑で大丈夫??
 
避難訓練のプロ
避難訓練のプロ避難訓練のプロ
避難訓練のプロ
 
学生LT 08/11
学生LT 08/11学生LT 08/11
学生LT 08/11
 
lsの中身はあぁ〜!水素の音ォ〜!!
lsの中身はあぁ〜!水素の音ォ〜!!lsの中身はあぁ〜!水素の音ォ〜!!
lsの中身はあぁ〜!水素の音ォ〜!!
 
高専生になってわかったこと
高専生になってわかったこと高専生になってわかったこと
高専生になってわかったこと
 
学生LT 資料 「自己紹介とインターンで得たこと」
学生LT 資料 「自己紹介とインターンで得たこと」学生LT 資料 「自己紹介とインターンで得たこと」
学生LT 資料 「自己紹介とインターンで得たこと」
 
学生LT 資料 「チートするんじゃねぇ」
学生LT 資料 「チートするんじゃねぇ」学生LT 資料 「チートするんじゃねぇ」
学生LT 資料 「チートするんじゃねぇ」
 

アセンブリも読めないのに、プログラマー名乗ってるんですか?!?!?!?!?!?