トップページLinux
1002コメント332KB

くだらねえ質問はここに書き込め! Part 233

■ このスレッドは過去ログ倉庫に格納されています
0001login:Penguin
垢版 |
2018/09/13(木) 23:27:05.28ID:vM6hM/2B
まずは2ch-Linux-Beginnersを読みましょう。
いろいろとまとめられているので(・∀・)イイ!!
http://www12.atwiki.jp/linux2ch/

読んでも解決しなかったら、質問を書きこむ前にここを読もう。
http://www12.atwiki.jp/linux2ch/?About
質問に対して答えてもらったら、お礼よりも、結果報告。

過去ログ検索
Google検索
https://www.google.com/search?hl=ja&;as_q=検索語句&as_sitesearch=2ch.net%2Ftest%2Fread.cgi%2Flinux%2Fhttps://www.google.com/search?hl=ja&;as_q=検索語句&as_sitesearch=5ch.net%2Ftest%2Fread.cgi%2Flinux%2F

※前スレ
くだらねえ質問はここに書き込め! Part 232
http://mao.5ch.net/test/read.cgi/linux/1531542627/
0109login:Penguin
垢版 |
2018/09/21(金) 23:31:21.50ID:b53nuh9z
>>106
おそらくサポート外だろうが出来る。逆もできる。windowsでも出来る。ただ、既存の32bitライブラリをロードして使うには、多分ld.soとかlibc.soの改造が必要。
コードセグメント0x33が64bit、0x23が32bitで、これはamd64のlinuxやwindowsでは常に用意されている。だから、アセンブリではセグメント間のfar call/far jmp/far retを行えばよい。システムコールも使える。
これはwindowsでも同じだから、winのHeaven's Gateあたりが参考になると思う。
0110login:Penguin
垢版 |
2018/09/21(金) 23:33:15.57ID:b53nuh9z
>>106
例: 以下のコードから
gcc -m64 -no-pie 6432.s
で64bitバイナリを作って実行

#ここから6432.s
.intel_syntax noprefix
.globl main
main:
.section .rodata
f: .ascii "test\n"
.section .text
#64bitでここから開始される
mov ecx, 0x23 #32bit用セグメントセレクタ
shl rcx, 32
mov eax, offset p
add rcx, rax
push rcx
retf #セグメント間 far ret
#以下の32bitコードに来る
p:
mov eax, 4
mov ebx, 1
mov ecx, offset f
mov edx, 5
int 0x80 #32bit用のwrite
xor ebx, ebx
mov eax, 1
int 0x80 #32bit用のexit
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況